diff options
385 files changed, 13969 insertions, 6925 deletions
diff --git a/Gemfile b/Gemfile index 1ddb6f383..ae999d964 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ ruby '>= 2.5.0', '< 3.1.0' gem 'pkg-config', '~> 1.4' gem 'rexml', '~> 3.2' -gem 'puma', '~> 5.5' +gem 'puma', '~> 5.6' gem 'rails', '~> 6.1.4' gem 'sprockets', '~> 3.7.2' gem 'thor', '~> 1.2' @@ -18,7 +18,7 @@ gem 'makara', '~> 0.5' gem 'pghero', '~> 2.8' gem 'dotenv-rails', '~> 2.7' -gem 'aws-sdk-s3', '~> 1.111', require: false +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' @@ -26,12 +26,10 @@ gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' -gem 'bootsnap', '~> 1.10.2', require: false +gem 'bootsnap', '~> 1.10.3', require: false gem 'browser' gem 'charlock_holmes', '~> 0.7.7' -gem 'iso-639' gem 'chewy', '~> 7.2' -gem 'cld3', '~> 3.4.4' gem 'devise', '~> 4.8' gem 'devise-two-factor', '~> 4.0' @@ -102,7 +100,7 @@ gem 'rdf-normalize', '~> 0.5' gem 'redcarpet', '~> 3.5' group :development, :test do - gem 'fabrication', '~> 2.24' + gem 'fabrication', '~> 2.27' gem 'fuubar', '~> 2.5' gem 'i18n-tasks', '~> 0.9', require: false gem 'pry-byebug', '~> 3.9' diff --git a/Gemfile.lock b/Gemfile.lock index 18459a159..9d160dade 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -79,17 +79,17 @@ GEM encryptor (~> 3.0.0) awrence (1.1.1) aws-eventstream (1.2.0) - aws-partitions (1.549.0) - aws-sdk-core (3.125.5) + aws-partitions (1.553.0) + aws-sdk-core (3.126.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.53.0) - aws-sdk-core (~> 3, >= 3.125.0) + aws-sdk-kms (1.54.0) + aws-sdk-core (~> 3, >= 3.126.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.111.3) - aws-sdk-core (~> 3, >= 3.125.0) + aws-sdk-s3 (1.112.0) + aws-sdk-core (~> 3, >= 3.126.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sigv4 (1.4.0) @@ -104,7 +104,7 @@ GEM debug_inspector (>= 0.0.1) blurhash (0.1.5) ffi (~> 1.14) - bootsnap (1.10.2) + bootsnap (1.10.3) msgpack (~> 1.2) brakeman (5.2.1) browser (4.2.0) @@ -147,13 +147,11 @@ GEM activesupport cbor (0.5.9.6) charlock_holmes (0.7.7) - chewy (7.2.3) + chewy (7.2.4) activesupport (>= 5.2) elasticsearch (>= 7.12.0, < 7.14.0) elasticsearch-dsl chunky_png (1.4.0) - cld3 (3.4.4) - ffi (>= 1.1.0, < 1.16.0) climate_control (0.2.0) coderay (1.1.3) color_diff (0.1) @@ -211,28 +209,32 @@ GEM et-orbi (1.2.6) tzinfo excon (0.76.0) - fabrication (2.24.0) + fabrication (2.27.0) faker (2.19.0) i18n (>= 1.6, < 2) - faraday (1.8.0) + faraday (1.9.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) + faraday-net_http_persistent (~> 1.0) faraday-patron (~> 1.0) faraday-rack (~> 1.0) - multipart-post (>= 1.2, < 3) + faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) faraday-em_http (1.0.0) faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) + faraday-multipart (1.0.3) + multipart-post (>= 1.2, < 3) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) + faraday-retry (1.0.3) fast_blank (1.0.1) fastimage (2.2.6) ffi (1.15.5) @@ -289,7 +291,7 @@ GEM httplog (1.5.0) rack (>= 1.0) rainbow (>= 2.0.0) - i18n (1.8.11) + i18n (1.9.1) concurrent-ruby (~> 1.0) i18n-tasks (0.9.37) activesupport (>= 4.0.2) @@ -303,7 +305,6 @@ GEM terminal-table (>= 1.5.1) idn-ruby (0.1.4) ipaddress (0.8.3) - iso-639 (0.3.5) jmespath (1.5.0) json (2.5.1) json-canonicalization (0.3.0) @@ -410,14 +411,14 @@ GEM openssl (2.2.0) openssl-signature_algorithm (0.4.0) orm_adapter (0.5.0) - ox (2.14.6) + ox (2.14.9) parallel (1.21.0) parser (3.1.0.0) ast (~> 2.4.1) parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.3.0) + pg (1.3.1) pghero (2.8.2) activerecord (>= 5) pkg-config (1.4.7) @@ -439,7 +440,7 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.6) - puma (5.5.2) + puma (5.6.2) nio4r (~> 2.0) pundit (2.1.1) activesupport (>= 3.0.0) @@ -534,7 +535,7 @@ GEM rspec-support (3.10.3) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.25.0) + rubocop (1.25.1) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) @@ -566,7 +567,7 @@ GEM railties (>= 4.0.0) securecompare (1.0.0) semantic_range (3.0.0) - sidekiq (6.4.0) + sidekiq (6.4.1) connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.2.0) @@ -579,7 +580,7 @@ GEM sidekiq (>= 3) thwait tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.12) + sidekiq-unique-jobs (7.1.15) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) @@ -675,7 +676,7 @@ GEM xorcist (1.1.2) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.5.3) + zeitwerk (2.5.4) PLATFORMS ruby @@ -685,11 +686,11 @@ DEPENDENCIES active_record_query_trace (~> 1.8) addressable (~> 2.8) annotate (~> 3.1) - aws-sdk-s3 (~> 1.111) + aws-sdk-s3 (~> 1.112) better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) - bootsnap (~> 1.10.2) + bootsnap (~> 1.10.3) brakeman (~> 5.2) browser bullet (~> 7.0) @@ -701,7 +702,6 @@ DEPENDENCIES capybara (~> 3.36) charlock_holmes (~> 0.7.7) chewy (~> 7.2) - cld3 (~> 3.4.4) climate_control (~> 0.2) color_diff (~> 0.1) concurrent-ruby @@ -713,7 +713,7 @@ DEPENDENCIES doorkeeper (~> 5.5) dotenv-rails (~> 2.7) ed25519 (~> 1.3) - fabrication (~> 2.24) + fabrication (~> 2.27) faker (~> 2.19) fast_blank (~> 1.0) fastimage @@ -729,7 +729,6 @@ DEPENDENCIES httplog (~> 1.5.0) i18n-tasks (~> 0.9) idn-ruby - iso-639 json-ld json-ld-preloaded (~> 3.2) kaminari (~> 1.2) @@ -761,7 +760,7 @@ DEPENDENCIES private_address_check (~> 0.5) pry-byebug (~> 3.9) pry-rails (~> 0.3) - puma (~> 5.5) + puma (~> 5.6) pundit (~> 2.1) rack (~> 2.2.3) rack-attack (~> 6.5) diff --git a/app/controllers/activitypub/replies_controller.rb b/app/controllers/activitypub/replies_controller.rb index fde6c861f..4ff7cfa08 100644 --- a/app/controllers/activitypub/replies_controller.rb +++ b/app/controllers/activitypub/replies_controller.rb @@ -63,15 +63,29 @@ class ActivityPub::RepliesController < ActivityPub::BaseController end def next_page - only_other_accounts = !(@replies&.last&.account_id == @account.id && @replies.size == DESCENDANTS_LIMIT) - - account_status_replies_url( - @account, - @status, - page: true, - min_id: only_other_accounts && !only_other_accounts? ? nil : @replies&.last&.id, - only_other_accounts: only_other_accounts - ) + if only_other_accounts? + # Only consider remote accounts + return nil if @replies.size < DESCENDANTS_LIMIT + + account_status_replies_url( + @account, + @status, + page: true, + min_id: @replies&.last&.id, + only_other_accounts: true + ) + else + # For now, we're serving only self-replies, but next page might be other accounts + next_only_other_accounts = @replies&.last&.account_id != @account.id || @replies.size < DESCENDANTS_LIMIT + + account_status_replies_url( + @account, + @status, + page: true, + min_id: next_only_other_accounts ? nil : @replies&.last&.id, + only_other_accounts: next_only_other_accounts + ) + end end def page_params diff --git a/app/controllers/admin/reports/actions_controller.rb b/app/controllers/admin/reports/actions_controller.rb new file mode 100644 index 000000000..05a4fb63d --- /dev/null +++ b/app/controllers/admin/reports/actions_controller.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +class Admin::Reports::ActionsController < Admin::BaseController + before_action :set_report + + def create + authorize @report, :show? + + case action_from_button + when 'delete' + status_batch_action = Admin::StatusBatchAction.new( + type: action_from_button, + status_ids: @report.status_ids, + current_account: current_account, + report_id: @report.id, + send_email_notification: !@report.spam? + ) + + status_batch_action.save! + when 'silence', 'suspend' + account_action = Admin::AccountAction.new( + type: action_from_button, + report_id: @report.id, + target_account: @report.target_account, + current_account: current_account, + send_email_notification: !@report.spam? + ) + + account_action.save! + end + + redirect_to admin_reports_path + end + + private + + def set_report + @report = Report.find(params[:report_id]) + end + + def action_from_button + if params[:delete] + 'delete' + elsif params[:silence] + 'silence' + elsif params[:suspend] + 'suspend' + end + end +end diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index 8d039b281..817c0caa9 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -29,8 +29,9 @@ module Admin end def after_create_redirect_path - if @status_batch_action.report_id.present? - admin_report_path(@status_batch_action.report_id) + report_id = @status_batch_action&.report_id || params[:report_id] + if report_id.present? + admin_report_path(report_id) else admin_account_statuses_path(params[:account_id], current_params) end @@ -48,6 +49,10 @@ module Admin params.slice(*Admin::StatusFilter::KEYS).permit(*Admin::StatusFilter::KEYS) end + def current_params + params.slice(:media, :page).permit(:media, :page) + end + def action_from_button if params[:report] 'report' diff --git a/app/controllers/api/v1/media_controller.rb b/app/controllers/api/v1/media_controller.rb index a2a919a3e..72094790f 100644 --- a/app/controllers/api/v1/media_controller.rb +++ b/app/controllers/api/v1/media_controller.rb @@ -20,7 +20,7 @@ class Api::V1::MediaController < Api::BaseController end def update - @media_attachment.update!(media_attachment_params) + @media_attachment.update!(updateable_media_attachment_params) render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment end @@ -42,6 +42,10 @@ class Api::V1::MediaController < Api::BaseController params.permit(:file, :thumbnail, :description, :focus) end + def updateable_media_attachment_params + params.permit(:thumbnail, :description, :focus) + end + def file_type_error { error: 'File type of uploaded media could not be verified' } end diff --git a/app/controllers/api/v1/reports_controller.rb b/app/controllers/api/v1/reports_controller.rb index e10083d45..052d70cc8 100644 --- a/app/controllers/api/v1/reports_controller.rb +++ b/app/controllers/api/v1/reports_controller.rb @@ -33,6 +33,6 @@ class Api::V1::ReportsController < Api::BaseController end def report_params - params.permit(:account_id, :comment, :forward, status_ids: []) + params.permit(:account_id, :comment, :category, :forward, status_ids: [], rule_ids: []) end end diff --git a/app/controllers/api/v1/statuses/histories_controller.rb b/app/controllers/api/v1/statuses/histories_controller.rb index c2c1fac5d..7fe73a6f5 100644 --- a/app/controllers/api/v1/statuses/histories_controller.rb +++ b/app/controllers/api/v1/statuses/histories_controller.rb @@ -7,7 +7,7 @@ class Api::V1::Statuses::HistoriesController < Api::BaseController before_action :set_status def show - render json: @status.edits, each_serializer: REST::StatusEditSerializer + render json: @status.edits.includes(:account, status: [:account]), each_serializer: REST::StatusEditSerializer end private diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index b1390ae48..eaac8e563 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -3,8 +3,8 @@ class Api::V1::StatusesController < Api::BaseController include Authorization - before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :destroy] - before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :destroy] + before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy] + before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy] before_action :require_user!, except: [:show, :context] before_action :set_status, only: [:show, :context] before_action :set_thread, only: [:create] @@ -35,25 +35,46 @@ class Api::V1::StatusesController < Api::BaseController end def create - @status = PostStatusService.new.call(current_user.account, - text: status_params[:status], - thread: @thread, - media_ids: status_params[:media_ids], - sensitive: status_params[:sensitive], - spoiler_text: status_params[:spoiler_text], - visibility: status_params[:visibility], - scheduled_at: status_params[:scheduled_at], - application: doorkeeper_token.application, - poll: status_params[:poll], - content_type: status_params[:content_type], - idempotency: request.headers['Idempotency-Key'], - with_rate_limit: true) + @status = PostStatusService.new.call( + current_user.account, + text: status_params[:status], + thread: @thread, + media_ids: status_params[:media_ids], + sensitive: status_params[:sensitive], + spoiler_text: status_params[:spoiler_text], + visibility: status_params[:visibility], + language: status_params[:language], + scheduled_at: status_params[:scheduled_at], + application: doorkeeper_token.application, + poll: status_params[:poll], + content_type: status_params[:content_type], + idempotency: request.headers['Idempotency-Key'], + with_rate_limit: true + ) render json: @status, serializer: @status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer end + def update + @status = Status.where(account: current_account).find(params[:id]) + authorize @status, :update? + + UpdateStatusService.new.call( + @status, + current_account.id, + text: status_params[:status], + media_ids: status_params[:media_ids], + sensitive: status_params[:sensitive], + spoiler_text: status_params[:spoiler_text], + poll: status_params[:poll], + content_type: status_params[:content_type] + ) + + render json: @status, serializer: REST::StatusSerializer + end + def destroy - @status = Status.where(account_id: current_user.account).find(params[:id]) + @status = Status.where(account: current_account).find(params[:id]) authorize @status, :destroy? @status.discard @@ -85,6 +106,7 @@ class Api::V1::StatusesController < Api::BaseController :sensitive, :spoiler_text, :visibility, + :language, :scheduled_at, :content_type, media_ids: [], diff --git a/app/controllers/api/web/push_subscriptions_controller.rb b/app/controllers/api/web/push_subscriptions_controller.rb index bed57fc54..db2512e5f 100644 --- a/app/controllers/api/web/push_subscriptions_controller.rb +++ b/app/controllers/api/web/push_subscriptions_controller.rb @@ -26,6 +26,7 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController mention: alerts_enabled, poll: alerts_enabled, status: alerts_enabled, + update: alerts_enabled, }, } @@ -61,6 +62,15 @@ 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]) + @data_params ||= params.require(:data).permit(:policy, alerts: [ + :follow, + :follow_request, + :favourite, + :reblog, + :mention, + :poll, + :status, + :update, + ]) end end diff --git a/app/controllers/concerns/localized.rb b/app/controllers/concerns/localized.rb index fe1142f34..f7b62f09c 100644 --- a/app/controllers/concerns/localized.rb +++ b/app/controllers/concerns/localized.rb @@ -7,27 +7,24 @@ module Localized around_action :set_locale end - def set_locale - locale = current_user.locale if respond_to?(:user_signed_in?) && user_signed_in? - locale ||= session[:locale] ||= default_locale - locale = default_locale unless I18n.available_locales.include?(locale.to_sym) - - I18n.with_locale(locale) do - yield - end + def set_locale(&block) + I18n.with_locale(requested_locale || I18n.default_locale, &block) end private - def default_locale - if ENV['DEFAULT_LOCALE'].present? - I18n.default_locale - else - request_locale || I18n.default_locale - end + def requested_locale + requested_locale_name = available_locale_or_nil(params[:locale]) + 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 + end + + def http_accept_language + HttpAcceptLanguage::Parser.new(request.headers.fetch('Accept-Language')).language_region_compatible_from(I18n.available_locales) if request.headers.key?('Accept-Language') end - def request_locale - http_accept_language.language_region_compatible_from(I18n.available_locales) + def available_locale_or_nil(locale_name) + locale_name.to_sym if locale_name.present? && I18n.available_locales.include?(locale_name.to_sym) end end diff --git a/app/controllers/concerns/theming_concern.rb b/app/controllers/concerns/theming_concern.rb index 425554072..f993a81d7 100644 --- a/app/controllers/concerns/theming_concern.rb +++ b/app/controllers/concerns/theming_concern.rb @@ -20,7 +20,7 @@ module ThemingConcern end def valid_pack_data?(data, pack_name) - data['pack'].is_a?(Hash) && [String, Hash].any? { |c| data['pack'][pack_name].is_a?(c) } + data['pack'].is_a?(Hash) && data['pack'][pack_name].present? end def nil_pack(data) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 2eba433a3..1e075c3fb 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -1,95 +1,251 @@ # frozen_string_literal: true module LanguagesHelper - HUMAN_LOCALES = { - af: 'Afrikaans', - ar: 'العربية', - ast: 'Asturianu', - bg: 'Български', - bn: 'বাংলা', - br: 'Breton', - ca: 'Català', - co: 'Corsu', - cs: 'Čeština', - cy: 'Cymraeg', - da: 'Dansk', - de: 'Deutsch', - el: 'Ελληνικά', - en: 'English', - 'en-cafe': 'English (Plural Cafe)', - eo: 'Esperanto', + ISO_639_1 = { + aa: ['Afar', 'Afaraf'].freeze, + ab: ['Abkhaz', 'аҧсуа бызшәа'].freeze, + ae: ['Avestan', 'avesta'].freeze, + af: ['Afrikaans', 'Afrikaans'].freeze, + ak: ['Akan', 'Akan'].freeze, + am: ['Amharic', 'አማርኛ'].freeze, + an: ['Aragonese', 'aragonés'].freeze, + ar: ['Arabic', 'اللغة العربية'].freeze, + as: ['Assamese', 'অসমীয়া'].freeze, + av: ['Avaric', 'авар мацӀ'].freeze, + ay: ['Aymara', 'aymar aru'].freeze, + az: ['Azerbaijani', 'azərbaycan dili'].freeze, + ba: ['Bashkir', 'башҡорт теле'].freeze, + be: ['Belarusian', 'беларуская мова'].freeze, + bg: ['Bulgarian', 'български език'].freeze, + bh: ['Bihari', 'भोजपुरी'].freeze, + bi: ['Bislama', 'Bislama'].freeze, + bm: ['Bambara', 'bamanankan'].freeze, + bn: ['Bengali', 'বাংলা'].freeze, + bo: ['Tibetan', 'བོད་ཡིག'].freeze, + br: ['Breton', 'brezhoneg'].freeze, + bs: ['Bosnian', 'bosanski jezik'].freeze, + ca: ['Catalan', 'Català'].freeze, + ce: ['Chechen', 'нохчийн мотт'].freeze, + ch: ['Chamorro', 'Chamoru'].freeze, + co: ['Corsican', 'corsu'].freeze, + cr: ['Cree', 'ᓀᐦᐃᔭᐍᐏᐣ'].freeze, + cs: ['Czech', 'čeština'].freeze, + cu: ['Old Church Slavonic', 'ѩзыкъ словѣньскъ'].freeze, + cv: ['Chuvash', 'чӑваш чӗлхи'].freeze, + cy: ['Welsh', 'Cymraeg'].freeze, + da: ['Danish', 'dansk'].freeze, + de: ['German', 'Deutsch'].freeze, + dv: ['Divehi', 'Dhivehi'].freeze, + dz: ['Dzongkha', 'རྫོང་ཁ'].freeze, + ee: ['Ewe', 'Eʋegbe'].freeze, + el: ['Greek', 'Ελληνικά'].freeze, + en: ['English', 'English'].freeze, + eo: ['Esperanto', 'Esperanto'].freeze, + es: ['Spanish', 'Español'].freeze, + et: ['Estonian', 'eesti'].freeze, + eu: ['Basque', 'euskara'].freeze, + fa: ['Persian', 'فارسی'].freeze, + ff: ['Fula', 'Fulfulde'].freeze, + fi: ['Finnish', 'suomi'].freeze, + fj: ['Fijian', 'Vakaviti'].freeze, + fo: ['Faroese', 'føroyskt'].freeze, + fr: ['French', 'Français'].freeze, + fy: ['Western Frisian', 'Frysk'].freeze, + ga: ['Irish', 'Gaeilge'].freeze, + gd: ['Scottish Gaelic', 'Gàidhlig'].freeze, + gl: ['Galician', 'galego'].freeze, + gu: ['Gujarati', 'ગુજરાતી'].freeze, + gv: ['Manx', 'Gaelg'].freeze, + ha: ['Hausa', 'هَوُسَ'].freeze, + he: ['Hebrew', 'עברית'].freeze, + hi: ['Hindi', 'हिन्दी'].freeze, + ho: ['Hiri Motu', 'Hiri Motu'].freeze, + hr: ['Croatian', 'Hrvatski'].freeze, + ht: ['Haitian', 'Kreyòl ayisyen'].freeze, + hu: ['Hungarian', 'magyar'].freeze, + hy: ['Armenian', 'Հայերեն'].freeze, + hz: ['Herero', 'Otjiherero'].freeze, + ia: ['Interlingua', 'Interlingua'].freeze, + id: ['Indonesian', 'Bahasa Indonesia'].freeze, + ie: ['Interlingue', 'Interlingue'].freeze, + ig: ['Igbo', 'Asụsụ Igbo'].freeze, + ii: ['Nuosu', 'ꆈꌠ꒿ Nuosuhxop'].freeze, + ik: ['Inupiaq', 'Iñupiaq'].freeze, + io: ['Ido', 'Ido'].freeze, + is: ['Icelandic', 'Íslenska'].freeze, + it: ['Italian', 'Italiano'].freeze, + iu: ['Inuktitut', 'ᐃᓄᒃᑎᑐᑦ'].freeze, + ja: ['Japanese', '日本語'].freeze, + jv: ['Javanese', 'basa Jawa'].freeze, + ka: ['Georgian', 'ქართული'].freeze, + kg: ['Kongo', 'Kikongo'].freeze, + ki: ['Kikuyu', 'Gĩkũyũ'].freeze, + kj: ['Kwanyama', 'Kuanyama'].freeze, + kk: ['Kazakh', 'қазақ тілі'].freeze, + kl: ['Kalaallisut', 'kalaallisut'].freeze, + km: ['Khmer', 'ខេមរភាសា'].freeze, + kn: ['Kannada', 'ಕನ್ನಡ'].freeze, + ko: ['Korean', '한국어'].freeze, + kr: ['Kanuri', 'Kanuri'].freeze, + ks: ['Kashmiri', 'कश्मीरी'].freeze, + ku: ['Kurdish', 'Kurdî'].freeze, + kv: ['Komi', 'коми кыв'].freeze, + kw: ['Cornish', 'Kernewek'].freeze, + ky: ['Kyrgyz', 'Кыргызча'].freeze, + la: ['Latin', 'latine'].freeze, + lb: ['Luxembourgish', 'Lëtzebuergesch'].freeze, + lg: ['Ganda', 'Luganda'].freeze, + li: ['Limburgish', 'Limburgs'].freeze, + ln: ['Lingala', 'Lingála'].freeze, + lo: ['Lao', 'ພາສາ'].freeze, + lt: ['Lithuanian', 'lietuvių kalba'].freeze, + lu: ['Luba-Katanga', 'Tshiluba'].freeze, + lv: ['Latvian', 'latviešu valoda'].freeze, + mg: ['Malagasy', 'fiteny malagasy'].freeze, + mh: ['Marshallese', 'Kajin M̧ajeļ'].freeze, + mi: ['Māori', 'te reo Māori'].freeze, + mk: ['Macedonian', 'македонски јазик'].freeze, + ml: ['Malayalam', 'മലയാളം'].freeze, + mn: ['Mongolian', 'Монгол хэл'].freeze, + mr: ['Marathi', 'मराठी'].freeze, + ms: ['Malay', 'Bahasa Malaysia'].freeze, + mt: ['Maltese', 'Malti'].freeze, + my: ['Burmese', 'ဗမာစာ'].freeze, + na: ['Nauru', 'Ekakairũ Naoero'].freeze, + nb: ['Norwegian Bokmål', 'Norsk bokmål'].freeze, + nd: ['Northern Ndebele', 'isiNdebele'].freeze, + ne: ['Nepali', 'नेपाली'].freeze, + ng: ['Ndonga', 'Owambo'].freeze, + nl: ['Dutch', 'Nederlands'].freeze, + nn: ['Norwegian Nynorsk', 'Norsk nynorsk'].freeze, + no: ['Norwegian', 'Norsk'].freeze, + nr: ['Southern Ndebele', 'isiNdebele'].freeze, + nv: ['Navajo', 'Diné bizaad'].freeze, + ny: ['Chichewa', 'chiCheŵa'].freeze, + oc: ['Occitan', 'occitan'].freeze, + oj: ['Ojibwe', 'ᐊᓂᔑᓈᐯᒧᐎᓐ'].freeze, + om: ['Oromo', 'Afaan Oromoo'].freeze, + or: ['Oriya', 'ଓଡ଼ିଆ'].freeze, + os: ['Ossetian', 'ирон æвзаг'].freeze, + pa: ['Panjabi', 'ਪੰਜਾਬੀ'].freeze, + pi: ['Pāli', 'पाऴि'].freeze, + pl: ['Polish', 'Polski'].freeze, + ps: ['Pashto', 'پښتو'].freeze, + pt: ['Portuguese', 'Português'].freeze, + qu: ['Quechua', 'Runa Simi'].freeze, + rm: ['Romansh', 'rumantsch grischun'].freeze, + rn: ['Kirundi', 'Ikirundi'].freeze, + ro: ['Romanian', 'Română'].freeze, + ru: ['Russian', 'Русский'].freeze, + rw: ['Kinyarwanda', 'Ikinyarwanda'].freeze, + sa: ['Sanskrit', 'संस्कृतम्'].freeze, + sc: ['Sardinian', 'sardu'].freeze, + sd: ['Sindhi', 'सिन्धी'].freeze, + se: ['Northern Sami', 'Davvisámegiella'].freeze, + sg: ['Sango', 'yângâ tî sängö'].freeze, + si: ['Sinhala', 'සිංහල'].freeze, + sk: ['Slovak', 'slovenčina'].freeze, + sl: ['Slovenian', 'slovenščina'].freeze, + sn: ['Shona', 'chiShona'].freeze, + so: ['Somali', 'Soomaaliga'].freeze, + sq: ['Albanian', 'Shqip'].freeze, + sr: ['Serbian', 'српски језик'].freeze, + ss: ['Swati', 'SiSwati'].freeze, + st: ['Southern Sotho', 'Sesotho'].freeze, + su: ['Sundanese', 'Basa Sunda'].freeze, + sv: ['Swedish', 'Svenska'].freeze, + sw: ['Swahili', 'Kiswahili'].freeze, + ta: ['Tamil', 'தமிழ்'].freeze, + te: ['Telugu', 'తెలుగు'].freeze, + tg: ['Tajik', 'тоҷикӣ'].freeze, + th: ['Thai', 'ไทย'].freeze, + ti: ['Tigrinya', 'ትግርኛ'].freeze, + tk: ['Turkmen', 'Türkmen'].freeze, + tl: ['Tagalog', 'Wikang Tagalog'].freeze, + tn: ['Tswana', 'Setswana'].freeze, + to: ['Tonga', 'faka Tonga'].freeze, + tr: ['Turkish', 'Türkçe'].freeze, + ts: ['Tsonga', 'Xitsonga'].freeze, + tt: ['Tatar', 'татар теле'].freeze, + tw: ['Twi', 'Twi'].freeze, + ty: ['Tahitian', 'Reo Tahiti'].freeze, + ug: ['Uyghur', 'ئۇيغۇرچە'].freeze, + uk: ['Ukrainian', 'Українська'].freeze, + ur: ['Urdu', 'اردو'].freeze, + uz: ['Uzbek', 'Ўзбек'].freeze, + ve: ['Venda', 'Tshivenḓa'].freeze, + vi: ['Vietnamese', 'Tiếng Việt'].freeze, + vo: ['Volapük', 'Volapük'].freeze, + wa: ['Walloon', 'walon'].freeze, + wo: ['Wolof', 'Wollof'].freeze, + xh: ['Xhosa', 'isiXhosa'].freeze, + yi: ['Yiddish', 'ייִדיש'].freeze, + yo: ['Yoruba', 'Yorùbá'].freeze, + za: ['Zhuang', 'Saɯ cueŋƅ'].freeze, + zh: ['Chinese', '中文'].freeze, + zu: ['Zulu', 'isiZulu'].freeze, + }.freeze + + ISO_639_3 = { + ast: ['Asturian', 'Asturianu'].freeze, + kab: ['Kabyle', 'Taqbaylit'].freeze, + kmr: ['Northern Kurdish', 'Kurmancî'].freeze, + zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze, + }.freeze + + CUSTOM = { + 'en-cafe': ['English (Plural Cafe)', 'English (Plural Cafe)'].freeze, + }.freeze + + SUPPORTED_LOCALES = {}.merge(ISO_639_1).merge(ISO_639_3).merge(CUSTOM).freeze + + # For ISO-639-1 and ISO-639-3 language codes, we have their official + # names, but for some translations, we need the names of the + # regional variants specifically + REGIONAL_LOCALE_NAMES = { 'es-AR': 'Español (Argentina)', 'es-MX': 'Español (México)', - es: 'Español', - et: 'Eesti', - eu: 'Euskara', - fa: 'فارسی', - fi: 'Suomi', - fr: 'Français', - ga: 'Gaeilge', - gd: 'Gàidhlig', - gl: 'Galego', - he: 'עברית', - hi: 'हिन्दी', - hr: 'Hrvatski', - hu: 'Magyar', - hy: 'Հայերեն', - id: 'Bahasa Indonesia', - io: 'Ido', - is: 'Íslenska', - it: 'Italiano', - ja: '日本語', - ka: 'ქართული', - kab: 'Taqbaylit', - kk: 'Қазақша', - kmr: 'Kurmancî', - kn: 'ಕನ್ನಡ', - ko: '한국어', - ku: 'سۆرانی', - lt: 'Lietuvių', - lv: 'Latviešu', - mk: 'Македонски', - ml: 'മലയാളം', - mr: 'मराठी', - ms: 'Bahasa Melayu', - nl: 'Nederlands', - nn: 'Nynorsk', - no: 'Norsk', - oc: 'Occitan', - pl: 'Polski', 'pt-BR': 'Português (Brasil)', 'pt-PT': 'Português (Portugal)', - pt: 'Português', - ro: 'Română', - ru: 'Русский', - sa: 'संस्कृतम्', - sc: 'Sardu', - si: 'සිංහල', - sk: 'Slovenčina', - sl: 'Slovenščina', - sq: 'Shqip', 'sr-Latn': 'Srpski (latinica)', - sr: 'Српски', - sv: 'Svenska', - ta: 'தமிழ்', - te: 'తెలుగు', - th: 'ไทย', - tr: 'Türkçe', - uk: 'Українська', - ur: 'اُردُو', - vi: 'Tiếng Việt', - zgh: 'ⵜⴰⵎⴰⵣⵉⵖⵜ', 'zh-CN': '简体中文', 'zh-HK': '繁體中文(香港)', 'zh-TW': '繁體中文(臺灣)', - zh: '中文', }.freeze - def human_locale(locale) - if locale == 'und' + def native_locale_name(locale) + if locale.blank? || locale == 'und' + I18n.t('generic.none') + elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym]) + supported_locale[1] + elsif (regional_locale = REGIONAL_LOCALE_NAMES[locale.to_sym]) + regional_locale + else + locale + end + end + + def standard_locale_name(locale) + if locale.blank? I18n.t('generic.none') + elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym]) + supported_locale[0] else - HUMAN_LOCALES[locale.to_sym] || locale + locale end end + + def valid_locale_or_nil(str) + return if str.blank? + + code, = str.to_s.split(/[_-]/) # Strip out the region from e.g. en_US or ja-JP + + return unless valid_locale?(code) + + code + end + + def valid_locale?(locale) + SUPPORTED_LOCALES.key?(locale.to_sym) + end end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 23739d1cd..3d5592867 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -2,7 +2,7 @@ module SettingsHelper def filterable_languages - LanguageDetector.instance.language_names.select(&LanguagesHelper::HUMAN_LOCALES.method(:key?)) + LanguagesHelper::SUPPORTED_LOCALES.keys end def hash_to_object(hash) diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index 261c72b2a..baa98e98f 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -75,6 +75,8 @@ export const INIT_MEDIA_EDIT_MODAL = 'INIT_MEDIA_EDIT_MODAL'; export const COMPOSE_CHANGE_MEDIA_DESCRIPTION = 'COMPOSE_CHANGE_MEDIA_DESCRIPTION'; export const COMPOSE_CHANGE_MEDIA_FOCUS = 'COMPOSE_CHANGE_MEDIA_FOCUS'; +export const COMPOSE_SET_STATUS = 'COMPOSE_SET_STATUS'; + const messages = defineMessages({ uploadErrorLimit: { id: 'upload_error.limit', defaultMessage: 'File upload limit exceeded.' }, uploadErrorPoll: { id: 'upload_error.poll', defaultMessage: 'File upload not allowed with polls.' }, @@ -88,6 +90,15 @@ export const ensureComposeIsVisible = (getState, routerHistory) => { } }; +export function setComposeToStatus(status, text, spoiler_text) { + return{ + type: COMPOSE_SET_STATUS, + status, + text, + spoiler_text, + }; +}; + export function changeCompose(text) { return { type: COMPOSE_CHANGE, @@ -150,8 +161,9 @@ export function directCompose(account, routerHistory) { export function submitCompose(routerHistory) { return function (dispatch, getState) { - let status = getState().getIn(['compose', 'text'], ''); - let media = getState().getIn(['compose', 'media_attachments']); + let status = getState().getIn(['compose', 'text'], ''); + const media = getState().getIn(['compose', 'media_attachments']); + const statusId = getState().getIn(['compose', 'id'], null); const spoilers = getState().getIn(['compose', 'spoiler']) || getState().getIn(['local_settings', 'always_show_spoilers_field']); let spoilerText = spoilers ? getState().getIn(['compose', 'spoiler_text'], '') : ''; @@ -159,20 +171,25 @@ export function submitCompose(routerHistory) { return; } - dispatch(submitComposeRequest()); if (getState().getIn(['compose', 'advanced_options', 'do_not_federate'])) { status = status + ' 👁️'; } - api(getState).post('/api/v1/statuses', { - status, - content_type: getState().getIn(['compose', 'content_type']), - in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null), - media_ids: media.map(item => item.get('id')), - sensitive: getState().getIn(['compose', 'sensitive']) || (spoilerText.length > 0 && media.size !== 0), - spoiler_text: spoilerText, - visibility: getState().getIn(['compose', 'privacy']), - poll: getState().getIn(['compose', 'poll'], null), - }, { + + dispatch(submitComposeRequest()); + + api(getState).request({ + url: statusId === null ? '/api/v1/statuses' : `/api/v1/statuses/${statusId}`, + method: statusId === null ? 'post' : 'put', + data: { + status, + content_type: getState().getIn(['compose', 'content_type']), + in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null), + media_ids: media.map(item => item.get('id')), + sensitive: getState().getIn(['compose', 'sensitive']) || (spoilerText.length > 0 && media.size !== 0), + spoiler_text: spoilerText, + visibility: getState().getIn(['compose', 'privacy']), + poll: getState().getIn(['compose', 'poll'], null), + }, headers: { 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']), }, @@ -202,14 +219,16 @@ export function submitCompose(routerHistory) { } }; - insertIfOnline('home'); + if (statusId === null) { + insertIfOnline('home'); + } - if (response.data.in_reply_to_id === null && response.data.visibility === 'public') { + if (statusId === null && response.data.in_reply_to_id === null && response.data.visibility === 'public') { insertIfOnline('community'); if (!response.data.local_only) { insertIfOnline('public'); } - } else if (response.data.visibility === 'direct') { + } else if (statusId === null && response.data.visibility === 'direct') { insertIfOnline('direct'); } }).catch(function (error) { diff --git a/app/javascript/flavours/glitch/actions/history.js b/app/javascript/flavours/glitch/actions/history.js new file mode 100644 index 000000000..c47057261 --- /dev/null +++ b/app/javascript/flavours/glitch/actions/history.js @@ -0,0 +1,37 @@ +import api from 'flavours/glitch/util/api'; +import { importFetchedAccounts } from './importer'; + +export const HISTORY_FETCH_REQUEST = 'HISTORY_FETCH_REQUEST'; +export const HISTORY_FETCH_SUCCESS = 'HISTORY_FETCH_SUCCESS'; +export const HISTORY_FETCH_FAIL = 'HISTORY_FETCH_FAIL'; + +export const fetchHistory = statusId => (dispatch, getState) => { + const loading = getState().getIn(['history', statusId, 'loading']); + + if (loading) { + return; + } + + dispatch(fetchHistoryRequest(statusId)); + + api(getState).get(`/api/v1/statuses/${statusId}/history`).then(({ data }) => { + dispatch(importFetchedAccounts(data.map(x => x.account))); + dispatch(fetchHistorySuccess(statusId, data)); + }).catch(error => dispatch(fetchHistoryFail(error))); +}; + +export const fetchHistoryRequest = statusId => ({ + type: HISTORY_FETCH_REQUEST, + statusId, +}); + +export const fetchHistorySuccess = (statusId, history) => ({ + type: HISTORY_FETCH_SUCCESS, + statusId, + history, +}); + +export const fetchHistoryFail = error => ({ + type: HISTORY_FETCH_FAIL, + error, +}); diff --git a/app/javascript/flavours/glitch/actions/notifications.js b/app/javascript/flavours/glitch/actions/notifications.js index 4b00ea632..40430102c 100644 --- a/app/javascript/flavours/glitch/actions/notifications.js +++ b/app/javascript/flavours/glitch/actions/notifications.js @@ -47,7 +47,6 @@ export const NOTIFICATIONS_UNMOUNT = 'NOTIFICATIONS_UNMOUNT'; export const NOTIFICATIONS_SET_VISIBILITY = 'NOTIFICATIONS_SET_VISIBILITY'; - export const NOTIFICATIONS_MARK_AS_READ = 'NOTIFICATIONS_MARK_AS_READ'; export const NOTIFICATIONS_SET_BROWSER_SUPPORT = 'NOTIFICATIONS_SET_BROWSER_SUPPORT'; @@ -136,7 +135,17 @@ const excludeTypesFromSettings = state => state.getIn(['settings', 'notification const excludeTypesFromFilter = filter => { - const allTypes = ImmutableList(['follow', 'follow_request', 'favourite', 'reblog', 'mention', 'poll']); + const allTypes = ImmutableList([ + 'follow', + 'follow_request', + 'favourite', + 'reblog', + 'mention', + 'poll', + 'status', + 'update', + ]); + return allTypes.filterNot(item => item === filter).toJS(); }; diff --git a/app/javascript/flavours/glitch/actions/statuses.js b/app/javascript/flavours/glitch/actions/statuses.js index 7db357df1..6ffcf181d 100644 --- a/app/javascript/flavours/glitch/actions/statuses.js +++ b/app/javascript/flavours/glitch/actions/statuses.js @@ -2,7 +2,7 @@ import api from 'flavours/glitch/util/api'; import { deleteFromTimelines } from './timelines'; import { importFetchedStatus, importFetchedStatuses } from './importer'; -import { ensureComposeIsVisible } from './compose'; +import { ensureComposeIsVisible, setComposeToStatus } from './compose'; export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST'; export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS'; @@ -26,6 +26,10 @@ export const STATUS_UNMUTE_FAIL = 'STATUS_UNMUTE_FAIL'; export const REDRAFT = 'REDRAFT'; +export const STATUS_FETCH_SOURCE_REQUEST = 'STATUS_FETCH_SOURCE_REQUEST'; +export const STATUS_FETCH_SOURCE_SUCCESS = 'STATUS_FETCH_SOURCE_SUCCESS'; +export const STATUS_FETCH_SOURCE_FAIL = 'STATUS_FETCH_SOURCE_FAIL'; + export function fetchStatusRequest(id, skipLoading) { return { type: STATUS_FETCH_REQUEST, @@ -81,6 +85,37 @@ export function redraft(status, raw_text, content_type) { }; }; +export const editStatus = (id, routerHistory) => (dispatch, getState) => { + let status = getState().getIn(['statuses', id]); + + if (status.get('poll')) { + status = status.set('poll', getState().getIn(['polls', status.get('poll')])); + } + + dispatch(fetchStatusSourceRequest()); + + api(getState).get(`/api/v1/statuses/${id}/source`).then(response => { + dispatch(fetchStatusSourceSuccess()); + ensureComposeIsVisible(getState, routerHistory); + dispatch(setComposeToStatus(status, response.data.text, response.data.spoiler_text)); + }).catch(error => { + dispatch(fetchStatusSourceFail(error)); + }); +}; + +export const fetchStatusSourceRequest = () => ({ + type: STATUS_FETCH_SOURCE_REQUEST, +}); + +export const fetchStatusSourceSuccess = () => ({ + type: STATUS_FETCH_SOURCE_SUCCESS, +}); + +export const fetchStatusSourceFail = error => ({ + type: STATUS_FETCH_SOURCE_FAIL, + error, +}); + export function deleteStatus(id, routerHistory, withRedraft = false) { return (dispatch, getState) => { let status = getState().getIn(['statuses', id]); diff --git a/app/javascript/flavours/glitch/components/dropdown_menu.js b/app/javascript/flavours/glitch/components/dropdown_menu.js index 023fecb9a..bd6bc4ffd 100644 --- a/app/javascript/flavours/glitch/components/dropdown_menu.js +++ b/app/javascript/flavours/glitch/components/dropdown_menu.js @@ -6,6 +6,8 @@ import Overlay from 'react-overlays/lib/Overlay'; import Motion from 'flavours/glitch/util/optional_motion'; import spring from 'react-motion/lib/spring'; import { supportsPassiveEvents } from 'detect-passive-events'; +import classNames from 'classnames'; +import { CircularProgress } from 'mastodon/components/loading_indicator'; const listenerOptions = supportsPassiveEvents ? { passive: true } : false; let id = 0; @@ -17,13 +19,18 @@ class DropdownMenu extends React.PureComponent { }; static propTypes = { - items: PropTypes.array.isRequired, + items: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.list]).isRequired, + loading: PropTypes.bool, + scrollable: PropTypes.bool, onClose: PropTypes.func.isRequired, style: PropTypes.object, placement: PropTypes.string, arrowOffsetLeft: PropTypes.string, arrowOffsetTop: PropTypes.string, openedViaKeyboard: PropTypes.bool, + renderItem: PropTypes.func, + renderHeader: PropTypes.func, + onItemClick: PropTypes.func.isRequired, }; static defaultProps = { @@ -45,9 +52,11 @@ class DropdownMenu extends React.PureComponent { document.addEventListener('click', this.handleDocumentClick, false); document.addEventListener('keydown', this.handleKeyDown, false); document.addEventListener('touchend', this.handleDocumentClick, listenerOptions); + if (this.focusedItem && this.props.openedViaKeyboard) { this.focusedItem.focus({ preventScroll: true }); } + this.setState({ mounted: true }); } @@ -66,7 +75,7 @@ class DropdownMenu extends React.PureComponent { } handleKeyDown = e => { - const items = Array.from(this.node.getElementsByTagName('a')); + const items = Array.from(this.node.querySelectorAll('a, button')); const index = items.indexOf(document.activeElement); let element = null; @@ -109,30 +118,20 @@ class DropdownMenu extends React.PureComponent { } handleClick = e => { - const i = Number(e.currentTarget.getAttribute('data-index')); - const { action, to } = this.props.items[i]; - - this.props.onClose(); - - if (typeof action === 'function') { - e.preventDefault(); - action(); - } else if (to) { - e.preventDefault(); - this.context.router.history.push(to); - } + const { onItemClick } = this.props; + onItemClick(e); } - renderItem (option, i) { + renderItem = (option, i) => { if (option === null) { return <li key={`sep-${i}`} className='dropdown-menu__separator' />; } - const { text, href = '#' } = option; + const { text, href = '#', target = '_blank', method } = option; return ( <li className='dropdown-menu__item' key={`${text}-${i}`}> - <a href={href} target='_blank' rel='noopener noreferrer' role='button' tabIndex='0' ref={i === 0 ? this.setFocusRef : null} onClick={this.handleClick} onKeyPress={this.handleItemKeyPress} data-index={i}> + <a href={href} target={target} data-method={method} rel='noopener noreferrer' role='button' tabIndex='0' ref={i === 0 ? this.setFocusRef : null} onClick={this.handleClick} onKeyPress={this.handleItemKeyPress} data-index={i}> {text} </a> </li> @@ -140,21 +139,37 @@ class DropdownMenu extends React.PureComponent { } render () { - const { items, style, placement, arrowOffsetLeft, arrowOffsetTop } = this.props; + const { items, style, placement, arrowOffsetLeft, arrowOffsetTop, scrollable, renderHeader, loading } = this.props; const { mounted } = this.state; + let renderItem = this.props.renderItem || this.renderItem; + return ( <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}> {({ opacity, scaleX, scaleY }) => ( // It should not be transformed when mounting because the resulting // size will be used to determine the coordinate of the menu by // react-overlays - <div className='dropdown-menu' style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} ref={this.setRef}> + <div className={`dropdown-menu ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} ref={this.setRef}> <div className={`dropdown-menu__arrow ${placement}`} style={{ left: arrowOffsetLeft, top: arrowOffsetTop }} /> - <ul> - {items.map((option, i) => this.renderItem(option, i))} - </ul> + <div className={classNames('dropdown-menu__container', { 'dropdown-menu__container--loading': loading })}> + {loading && ( + <CircularProgress size={30} strokeWidth={3.5} /> + )} + + {!loading && renderHeader && ( + <div className='dropdown-menu__container__header'> + {renderHeader(items)} + </div> + )} + + {!loading && ( + <ul className={classNames('dropdown-menu__container__list', { 'dropdown-menu__container__list--scrollable': scrollable })}> + {items.map((option, i) => renderItem(option, i, { onClick: this.handleClick, onKeyPress: this.handleItemKeyPress }))} + </ul> + )} + </div> </div> )} </Motion> @@ -170,11 +185,14 @@ export default class Dropdown extends React.PureComponent { }; static propTypes = { - icon: PropTypes.string.isRequired, - items: PropTypes.array.isRequired, - size: PropTypes.number.isRequired, + children: PropTypes.node, + icon: PropTypes.string, + items: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.list]).isRequired, + loading: PropTypes.bool, + size: PropTypes.number, title: PropTypes.string, disabled: PropTypes.bool, + scrollable: PropTypes.bool, status: ImmutablePropTypes.map, isUserTouching: PropTypes.func, onOpen: PropTypes.func.isRequired, @@ -182,6 +200,9 @@ export default class Dropdown extends React.PureComponent { dropdownPlacement: PropTypes.string, openDropdownId: PropTypes.number, openedViaKeyboard: PropTypes.bool, + renderItem: PropTypes.func, + renderHeader: PropTypes.func, + onItemClick: PropTypes.func, }; static defaultProps = { @@ -236,17 +257,22 @@ export default class Dropdown extends React.PureComponent { } } - handleItemClick = (i, e) => { - const { action, to } = this.props.items[i]; + handleItemClick = e => { + const { onItemClick } = this.props; + const i = Number(e.currentTarget.getAttribute('data-index')); + const item = this.props.items[i]; this.handleClose(); - if (typeof action === 'function') { + if (typeof onItemClick === 'function') { + e.preventDefault(); + onItemClick(item, i); + } else if (item && typeof item.action === 'function') { e.preventDefault(); - action(); - } else if (to) { + item.action(); + } else if (item && item.to) { e.preventDefault(); - this.context.router.history.push(to); + this.context.router.history.push(item.to); } } @@ -264,29 +290,67 @@ export default class Dropdown extends React.PureComponent { } } + close = () => { + this.handleClose(); + } + render () { - const { icon, items, size, title, disabled, dropdownPlacement, openDropdownId, openedViaKeyboard } = this.props; + const { + icon, + items, + size, + title, + disabled, + loading, + scrollable, + dropdownPlacement, + openDropdownId, + openedViaKeyboard, + children, + renderItem, + renderHeader, + } = this.props; + const open = this.state.id === openDropdownId; + const button = children ? React.cloneElement(React.Children.only(children), { + ref: this.setTargetRef, + onClick: this.handleClick, + onMouseDown: this.handleMouseDown, + onKeyDown: this.handleButtonKeyDown, + onKeyPress: this.handleKeyPress, + }) : ( + <IconButton + icon={icon} + title={title} + active={open} + disabled={disabled} + size={size} + ref={this.setTargetRef} + onClick={this.handleClick} + onMouseDown={this.handleMouseDown} + onKeyDown={this.handleButtonKeyDown} + onKeyPress={this.handleKeyPress} + /> + ); + return ( - <div> - <IconButton - icon={icon} - title={title} - active={open} - disabled={disabled} - size={size} - ref={this.setTargetRef} - onClick={this.handleClick} - onMouseDown={this.handleMouseDown} - onKeyDown={this.handleButtonKeyDown} - onKeyPress={this.handleKeyPress} - /> + <React.Fragment> + {button} <Overlay show={open} placement={dropdownPlacement} target={this.findTarget}> - <DropdownMenu items={items} onClose={this.handleClose} openedViaKeyboard={openedViaKeyboard} /> + <DropdownMenu + items={items} + loading={loading} + scrollable={scrollable} + onClose={this.handleClose} + openedViaKeyboard={openedViaKeyboard} + renderItem={renderItem} + renderHeader={renderHeader} + onItemClick={this.handleItemClick} + /> </Overlay> - </div> + </React.Fragment> ); } diff --git a/app/javascript/flavours/glitch/components/edited_timestamp/containers/dropdown_menu_container.js b/app/javascript/flavours/glitch/components/edited_timestamp/containers/dropdown_menu_container.js new file mode 100644 index 000000000..8b73663d4 --- /dev/null +++ b/app/javascript/flavours/glitch/components/edited_timestamp/containers/dropdown_menu_container.js @@ -0,0 +1,27 @@ +import { connect } from 'react-redux'; +import { openDropdownMenu, closeDropdownMenu } from 'flavours/glitch/actions/dropdown_menu'; +import { fetchHistory } from 'flavours/glitch/actions/history'; +import DropdownMenu from 'flavours/glitch/components/dropdown_menu'; + +const mapStateToProps = (state, { statusId }) => ({ + dropdownPlacement: state.getIn(['dropdown_menu', 'placement']), + openDropdownId: state.getIn(['dropdown_menu', 'openId']), + openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']), + items: state.getIn(['history', statusId, 'items']), + loading: state.getIn(['history', statusId, 'loading']), +}); + +const mapDispatchToProps = (dispatch, { statusId }) => ({ + + onOpen (id, onItemClick, dropdownPlacement, keyboard) { + dispatch(fetchHistory(statusId)); + dispatch(openDropdownMenu(id, dropdownPlacement, keyboard)); + }, + + onClose (id) { + dispatch(closeDropdownMenu(id)); + }, + +}); + +export default connect(mapStateToProps, mapDispatchToProps)(DropdownMenu); diff --git a/app/javascript/flavours/glitch/components/edited_timestamp/index.js b/app/javascript/flavours/glitch/components/edited_timestamp/index.js new file mode 100644 index 000000000..9648133af --- /dev/null +++ b/app/javascript/flavours/glitch/components/edited_timestamp/index.js @@ -0,0 +1,70 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { FormattedMessage, injectIntl } from 'react-intl'; +import Icon from 'flavours/glitch/components/icon'; +import DropdownMenu from './containers/dropdown_menu_container'; +import { connect } from 'react-redux'; +import { openModal } from 'flavours/glitch/actions/modal'; +import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp'; +import InlineAccount from 'flavours/glitch/components/inline_account'; + +const mapDispatchToProps = (dispatch, { statusId }) => ({ + + onItemClick (index) { + dispatch(openModal('COMPARE_HISTORY', { index, statusId })); + }, + +}); + +export default @connect(null, mapDispatchToProps) +@injectIntl +class EditedTimestamp extends React.PureComponent { + + static propTypes = { + statusId: PropTypes.string.isRequired, + timestamp: PropTypes.string.isRequired, + intl: PropTypes.object.isRequired, + onItemClick: PropTypes.func.isRequired, + }; + + handleItemClick = (item, i) => { + const { onItemClick } = this.props; + onItemClick(i); + }; + + renderHeader = items => { + return ( + <FormattedMessage id='status.edited_x_times' defaultMessage='Edited {count, plural, one {{count} time} other {{count} times}}' values={{ count: items.size - 1 }} /> + ); + } + + renderItem = (item, index, { onClick, onKeyPress }) => { + const formattedDate = <RelativeTimestamp timestamp={item.get('created_at')} short={false} />; + const formattedName = <InlineAccount accountId={item.get('account')} />; + + const label = item.get('original') ? ( + <FormattedMessage id='status.history.created' defaultMessage='{name} created {date}' values={{ name: formattedName, date: formattedDate }} /> + ) : ( + <FormattedMessage id='status.history.edited' defaultMessage='{name} edited {date}' values={{ name: formattedName, date: formattedDate }} /> + ); + + return ( + <li className='dropdown-menu__item edited-timestamp__history__item' key={item.get('created_at')}> + <button data-index={index} onClick={onClick} onKeyPress={onKeyPress}>{label}</button> + </li> + ); + } + + render () { + const { timestamp, intl, statusId } = this.props; + + return ( + <DropdownMenu statusId={statusId} renderItem={this.renderItem} scrollable renderHeader={this.renderHeader} onItemClick={this.handleItemClick}> + <button className='dropdown-menu__text-button'> + <FormattedMessage id='status.edited' defaultMessage='Edited {date}' values={{ date: intl.formatDate(timestamp, { hour12: false, month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }) }} /> <Icon id='caret-down' /> + </button> + </DropdownMenu> + ); + } + +} diff --git a/app/javascript/flavours/glitch/components/inline_account.js b/app/javascript/flavours/glitch/components/inline_account.js new file mode 100644 index 000000000..2ef1f52cc --- /dev/null +++ b/app/javascript/flavours/glitch/components/inline_account.js @@ -0,0 +1,34 @@ +import React from 'react'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import { makeGetAccount } from 'flavours/glitch/selectors'; +import Avatar from 'flavours/glitch/components/avatar'; + +const makeMapStateToProps = () => { + const getAccount = makeGetAccount(); + + const mapStateToProps = (state, { accountId }) => ({ + account: getAccount(state, accountId), + }); + + return mapStateToProps; +}; + +export default @connect(makeMapStateToProps) +class InlineAccount extends React.PureComponent { + + static propTypes = { + account: ImmutablePropTypes.map.isRequired, + }; + + render () { + const { account } = this.props; + + return ( + <span className='inline-account'> + <Avatar size={13} account={account} /> <strong>{account.get('username')}</strong> + </span> + ); + } + +} diff --git a/app/javascript/flavours/glitch/components/loading_indicator.js b/app/javascript/flavours/glitch/components/loading_indicator.js index d6a5adb6f..59f721c50 100644 --- a/app/javascript/flavours/glitch/components/loading_indicator.js +++ b/app/javascript/flavours/glitch/components/loading_indicator.js @@ -1,10 +1,31 @@ import React from 'react'; -import { FormattedMessage } from 'react-intl'; +import PropTypes from 'prop-types'; + +export const CircularProgress = ({ size, strokeWidth }) => { + const viewBox = `0 0 ${size} ${size}`; + const radius = (size - strokeWidth) / 2; + + return ( + <svg width={size} heigh={size} viewBox={viewBox} className='circular-progress' role='progressbar'> + <circle + fill='none' + cx={size / 2} + cy={size / 2} + r={radius} + strokeWidth={`${strokeWidth}px`} + /> + </svg> + ); +}; + +CircularProgress.propTypes = { + size: PropTypes.number.isRequired, + strokeWidth: PropTypes.number.isRequired, +}; const LoadingIndicator = () => ( <div className='loading-indicator'> - <div className='loading-indicator__figure' /> - <FormattedMessage id='loading_indicator.label' defaultMessage='Loading...' /> + <CircularProgress size={50} strokeWidth={6} /> </div> ); diff --git a/app/javascript/flavours/glitch/components/relative_timestamp.js b/app/javascript/flavours/glitch/components/relative_timestamp.js index 711181dcd..512480339 100644 --- a/app/javascript/flavours/glitch/components/relative_timestamp.js +++ b/app/javascript/flavours/glitch/components/relative_timestamp.js @@ -5,10 +5,15 @@ import PropTypes from 'prop-types'; const messages = defineMessages({ today: { id: 'relative_time.today', defaultMessage: 'today' }, just_now: { id: 'relative_time.just_now', defaultMessage: 'now' }, + just_now_full: { id: 'relative_time.full.just_now', defaultMessage: 'just now' }, seconds: { id: 'relative_time.seconds', defaultMessage: '{number}s' }, + seconds_full: { id: 'relative_time.full.seconds', defaultMessage: '{number, plural, one {# second} other {# seconds}} ago' }, minutes: { id: 'relative_time.minutes', defaultMessage: '{number}m' }, + minutes_full: { id: 'relative_time.full.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}} ago' }, hours: { id: 'relative_time.hours', defaultMessage: '{number}h' }, + hours_full: { id: 'relative_time.full.hours', defaultMessage: '{number, plural, one {# hour} other {# hours}} ago' }, days: { id: 'relative_time.days', defaultMessage: '{number}d' }, + days_full: { id: 'relative_time.full.days', defaultMessage: '{number, plural, one {# day} other {# days}} ago' }, moments_remaining: { id: 'time_remaining.moments', defaultMessage: 'Moments remaining' }, seconds_remaining: { id: 'time_remaining.seconds', defaultMessage: '{number, plural, one {# second} other {# seconds}} left' }, minutes_remaining: { id: 'time_remaining.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}} left' }, @@ -66,7 +71,7 @@ const getUnitDelay = units => { } }; -export const timeAgoString = (intl, date, now, year, timeGiven = true) => { +export const timeAgoString = (intl, date, now, year, timeGiven, short) => { const delta = now - date.getTime(); let relativeTime; @@ -74,16 +79,16 @@ export const timeAgoString = (intl, date, now, year, timeGiven = true) => { if (delta < DAY && !timeGiven) { relativeTime = intl.formatMessage(messages.today); } else if (delta < 10 * SECOND) { - relativeTime = intl.formatMessage(messages.just_now); + relativeTime = intl.formatMessage(short ? messages.just_now : messages.just_now_full); } else if (delta < 7 * DAY) { if (delta < MINUTE) { - relativeTime = intl.formatMessage(messages.seconds, { number: Math.floor(delta / SECOND) }); + relativeTime = intl.formatMessage(short ? messages.seconds : messages.seconds_full, { number: Math.floor(delta / SECOND) }); } else if (delta < HOUR) { - relativeTime = intl.formatMessage(messages.minutes, { number: Math.floor(delta / MINUTE) }); + relativeTime = intl.formatMessage(short ? messages.minutes : messages.minutes_full, { number: Math.floor(delta / MINUTE) }); } else if (delta < DAY) { - relativeTime = intl.formatMessage(messages.hours, { number: Math.floor(delta / HOUR) }); + relativeTime = intl.formatMessage(short ? messages.hours : messages.hours_full, { number: Math.floor(delta / HOUR) }); } else { - relativeTime = intl.formatMessage(messages.days, { number: Math.floor(delta / DAY) }); + relativeTime = intl.formatMessage(short ? messages.days : messages.days_full, { number: Math.floor(delta / DAY) }); } } else if (date.getFullYear() === year) { relativeTime = intl.formatDate(date, shortDateFormatOptions); @@ -124,6 +129,7 @@ class RelativeTimestamp extends React.Component { timestamp: PropTypes.string.isRequired, year: PropTypes.number.isRequired, futureDate: PropTypes.bool, + short: PropTypes.bool, }; state = { @@ -132,6 +138,7 @@ class RelativeTimestamp extends React.Component { static defaultProps = { year: (new Date()).getFullYear(), + short: true, }; shouldComponentUpdate (nextProps, nextState) { @@ -176,11 +183,11 @@ class RelativeTimestamp extends React.Component { } render () { - const { timestamp, intl, year, futureDate } = this.props; + const { timestamp, intl, year, futureDate, short } = this.props; const timeGiven = timestamp.includes('T'); const date = new Date(timestamp); - const relativeTime = futureDate ? timeRemainingString(intl, date, this.state.now, timeGiven) : timeAgoString(intl, date, this.state.now, year, timeGiven); + const relativeTime = futureDate ? timeRemainingString(intl, date, this.state.now, timeGiven) : timeAgoString(intl, date, this.state.now, year, timeGiven, short); return ( <time dateTime={timestamp} title={intl.formatDate(date, dateFormatOptions)}> diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js index ae67c6116..68d93cd67 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.js +++ b/app/javascript/flavours/glitch/components/status_action_bar.js @@ -13,6 +13,7 @@ import classNames from 'classnames'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, + edit: { id: 'status.edit', defaultMessage: 'Edit' }, direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' }, mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' }, mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' }, @@ -126,6 +127,10 @@ class StatusActionBar extends ImmutablePureComponent { this.props.onDelete(this.props.status, this.context.router.history, true); } + handleEditClick = () => { + this.props.onEdit(this.props.status, this.context.router.history); + } + handlePinClick = () => { this.props.onPin(this.props.status); } @@ -225,6 +230,7 @@ class StatusActionBar extends ImmutablePureComponent { } if (writtenByMe) { + // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { diff --git a/app/javascript/flavours/glitch/components/status_prepend.js b/app/javascript/flavours/glitch/components/status_prepend.js index 5a00f232e..1661ca8f5 100644 --- a/app/javascript/flavours/glitch/components/status_prepend.js +++ b/app/javascript/flavours/glitch/components/status_prepend.js @@ -88,6 +88,14 @@ export default class StatusPrepend extends React.PureComponent { /> ); } + case 'update': + return ( + <FormattedMessage + id='notification.update' + defaultMessage='{name} edited a post' + values={{ name: link }} + /> + ); } return null; } @@ -115,6 +123,9 @@ export default class StatusPrepend extends React.PureComponent { case 'status': iconId = 'bell'; break; + case 'update': + iconId = 'pencil'; + break; }; return !type ? null : ( diff --git a/app/javascript/flavours/glitch/containers/dropdown_menu_container.js b/app/javascript/flavours/glitch/containers/dropdown_menu_container.js index 1c0385b74..0c4a2b50f 100644 --- a/app/javascript/flavours/glitch/containers/dropdown_menu_container.js +++ b/app/javascript/flavours/glitch/containers/dropdown_menu_container.js @@ -14,15 +14,11 @@ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({ onOpen(id, onItemClick, dropdownPlacement, keyboard) { dispatch(isUserTouching() ? openModal('ACTIONS', { status, - actions: items.map( - (item, i) => item ? { - ...item, - name: `${item.text}-${i}`, - onClick: item.action ? ((e) => { return onItemClick(i, e) }) : null, - } : null - ), + actions: items, + onClick: onItemClick, }) : openDropdownMenu(id, dropdownPlacement, keyboard, scrollKey)); }, + onClose(id) { dispatch(closeModal('ACTIONS')); dispatch(closeDropdownMenu(id)); diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js index bc3c43d85..358b89ab9 100644 --- a/app/javascript/flavours/glitch/containers/status_container.js +++ b/app/javascript/flavours/glitch/containers/status_container.js @@ -17,7 +17,7 @@ import { pin, unpin, } from 'flavours/glitch/actions/interactions'; -import { muteStatus, unmuteStatus, deleteStatus } from 'flavours/glitch/actions/statuses'; +import { muteStatus, unmuteStatus, deleteStatus, editStatus } from 'flavours/glitch/actions/statuses'; import { initMuteModal } from 'flavours/glitch/actions/mutes'; import { initBlockModal } from 'flavours/glitch/actions/blocks'; import { initReport } from 'flavours/glitch/actions/reports'; @@ -169,6 +169,10 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ } }, + onEdit (status, history) { + dispatch(editStatus(status.get('id'), history)); + }, + onDirect (account, router) { dispatch(directCompose(account, router)); }, diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.js b/app/javascript/flavours/glitch/features/compose/components/compose_form.js index 5dfc119c1..c75906ce7 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.js +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.js @@ -47,6 +47,7 @@ class ComposeForm extends ImmutablePureComponent { preselectDate: PropTypes.instanceOf(Date), isSubmitting: PropTypes.bool, isChangingUpload: PropTypes.bool, + isEditing: PropTypes.bool, isUploading: PropTypes.bool, onChange: PropTypes.func, onSubmit: PropTypes.func, @@ -293,6 +294,7 @@ class ComposeForm extends ImmutablePureComponent { spoilerText, suggestions, spoilersAlwaysOn, + isEditing, } = this.props; const countText = this.getFulltextForCharacterCounting(); @@ -353,6 +355,7 @@ class ComposeForm extends ImmutablePureComponent { onToggleSpoiler={spoilersAlwaysOn ? null : onChangeSpoilerness} onUpload={onPaste} privacy={privacy} + isEditing={isEditing} sensitive={sensitive || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0)} spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler} /> @@ -364,6 +367,7 @@ class ComposeForm extends ImmutablePureComponent { <Publisher countText={countText} disabled={!this.canSubmit()} + isEditing={isEditing} onSecondarySubmit={handleSecondarySubmit} onSubmit={handleSubmit} privacy={privacy} diff --git a/app/javascript/flavours/glitch/features/compose/components/dropdown.js b/app/javascript/flavours/glitch/features/compose/components/dropdown.js index abf7cbba1..9f70d6b79 100644 --- a/app/javascript/flavours/glitch/features/compose/components/dropdown.js +++ b/app/javascript/flavours/glitch/features/compose/components/dropdown.js @@ -21,22 +21,25 @@ export default class ComposerOptionsDropdown extends React.PureComponent { icon: PropTypes.string, items: PropTypes.arrayOf(PropTypes.shape({ icon: PropTypes.string, - meta: PropTypes.node, + meta: PropTypes.string, name: PropTypes.string.isRequired, - on: PropTypes.bool, - text: PropTypes.node, + text: PropTypes.string, })).isRequired, onModalOpen: PropTypes.func, onModalClose: PropTypes.func, title: PropTypes.string, value: PropTypes.string, onChange: PropTypes.func, - noModal: PropTypes.bool, container: PropTypes.func, + renderItemContents: PropTypes.func, + closeOnChange: PropTypes.bool, + }; + + static defaultProps = { + closeOnChange: true, }; state = { - needsModalUpdate: false, open: false, openedViaKeyboard: undefined, placement: 'bottom', @@ -44,10 +47,10 @@ export default class ComposerOptionsDropdown extends React.PureComponent { // Toggles opening and closing the dropdown. handleToggle = ({ target, type }) => { - const { onModalOpen, noModal } = this.props; + const { onModalOpen } = this.props; const { open } = this.state; - if (!noModal && isUserTouching()) { + if (isUserTouching()) { if (this.state.open) { this.props.onModalClose(); } else { @@ -107,9 +110,25 @@ export default class ComposerOptionsDropdown extends React.PureComponent { this.setState({ open: false }); } + handleItemClick = (e) => { + const { + items, + onChange, + onModalClose, + closeOnChange, + } = this.props; + + const i = Number(e.currentTarget.getAttribute('data-index')); + + const { name } = items[i]; + + e.preventDefault(); // Prevents focus from changing + if (closeOnChange) onModalClose(); + onChange(name); + }; + // Creates an action modal object. handleMakeModal = () => { - const component = this; const { items, onChange, @@ -125,6 +144,8 @@ export default class ComposerOptionsDropdown extends React.PureComponent { // The object. return { + renderItemContents: this.props.renderItemContents, + onClick: this.handleItemClick, actions: items.map( ({ name, @@ -133,48 +154,11 @@ export default class ComposerOptionsDropdown extends React.PureComponent { ...rest, active: value && name === value, name, - onClick (e) { - e.preventDefault(); // Prevents focus from changing - onModalClose(); - onChange(name); - }, - onPassiveClick (e) { - e.preventDefault(); // Prevents focus from changing - onChange(name); - component.setState({ needsModalUpdate: true }); - }, }) ), }; } - // If our modal is open and our props update, we need to also update - // the modal. - handleUpdate = () => { - const { onModalOpen } = this.props; - const { needsModalUpdate } = this.state; - - // Gets our modal object. - const modal = this.handleMakeModal(); - - // Reopens the modal with the new object. - if (needsModalUpdate && modal && onModalOpen) { - onModalOpen(modal); - } - } - - // Updates our modal as necessary. - componentDidUpdate (prevProps) { - const { items } = this.props; - const { needsModalUpdate } = this.state; - if (needsModalUpdate && items.find( - (item, i) => item.on !== prevProps.items[i].on - )) { - this.handleUpdate(); - this.setState({ needsModalUpdate: false }); - } - } - // Rendering. render () { const { @@ -186,6 +170,8 @@ export default class ComposerOptionsDropdown extends React.PureComponent { onChange, value, container, + renderItemContents, + closeOnChange, } = this.props; const { open, placement } = this.state; const computedClass = classNames('composer--options--dropdown', { @@ -226,10 +212,12 @@ export default class ComposerOptionsDropdown extends React.PureComponent { > <DropdownMenu items={items} + renderItemContents={renderItemContents} onChange={onChange} onClose={this.handleClose} value={value} openedViaKeyboard={this.state.openedViaKeyboard} + closeOnChange={closeOnChange} /> </Overlay> </div> diff --git a/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.js b/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.js index bee06e64c..0649fe1ca 100644 --- a/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.js +++ b/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.js @@ -2,7 +2,6 @@ import PropTypes from 'prop-types'; import React from 'react'; import spring from 'react-motion/lib/spring'; -import Toggle from 'react-toggle'; import ImmutablePureComponent from 'react-immutable-pure-component'; import classNames from 'classnames'; @@ -28,18 +27,20 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent icon: PropTypes.string, meta: PropTypes.node, name: PropTypes.string.isRequired, - on: PropTypes.bool, text: PropTypes.node, })), onChange: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, style: PropTypes.object, value: PropTypes.string, + renderItemContents: PropTypes.func, openedViaKeyboard: PropTypes.bool, + closeOnChange: PropTypes.bool, }; static defaultProps = { style: {}, + closeOnChange: true, }; state = { @@ -77,16 +78,19 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent document.removeEventListener('touchend', this.handleDocumentClick, withPassive); } - handleClick = (name, e) => { + handleClick = (e) => { + const i = Number(e.currentTarget.getAttribute('data-index')); + const { onChange, onClose, + closeOnChange, items, } = this.props; - const { on } = this.props.items.find(item => item.name === name); + const { name } = this.props.items[i]; e.preventDefault(); // Prevents change in focus on click - if ((on === null || typeof on === 'undefined')) { + if (closeOnChange) { onClose(); } onChange(name); @@ -101,11 +105,9 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent } } - handleKeyDown = (name, e) => { + handleKeyDown = (e) => { + const index = Number(e.currentTarget.getAttribute('data-index')); const { items } = this.props; - const index = items.findIndex(item => { - return (item.name === name); - }); let element = null; switch(e.key) { @@ -139,7 +141,7 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent if (element) { element.focus(); - this.handleChange(element.getAttribute('data-index')); + this.handleChange(this.props.items[Number(element.getAttribute('data-index'))].name); e.preventDefault(); e.stopPropagation(); } @@ -149,44 +151,40 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent this.focusedItem = c; } - renderItem = (item) => { - const { name, icon, meta, on, text } = item; + renderItem = (item, i) => { + const { name, icon, meta, text } = item; const active = (name === (this.props.value || this.state.value)); - const computedClass = classNames('composer--options--dropdown--content--item', { - active, - lengthy: meta, - 'toggled-off': !on && on !== null && typeof on !== 'undefined', - 'toggled-on': on, - 'with-icon': icon, - }); + const computedClass = classNames('composer--options--dropdown--content--item', { active }); + + let contents = this.props.renderItemContents && this.props.renderItemContents(item, i); - let prefix = null; + if (!contents) { + contents = ( + <React.Fragment> + {icon && <Icon className='icon' fixedWidth id={icon} />} - if (on !== null && typeof on !== 'undefined') { - prefix = <Toggle checked={on} onChange={this.handleClick.bind(this, name)} />; - } else if (icon) { - prefix = <Icon className='icon' fixedWidth id={icon} /> + <div className='content'> + <strong>{text}</strong> + {meta} + </div> + </React.Fragment> + ); } return ( <div className={computedClass} - onClick={this.handleClick.bind(this, name)} - onKeyDown={this.handleKeyDown.bind(this, name)} + onClick={this.handleClick} + onKeyDown={this.handleKeyDown} role='option' tabIndex='0' key={name} - data-index={name} + data-index={i} ref={active ? this.setFocusRef : null} > - {prefix} - - <div className='content'> - <strong>{text}</strong> - {meta} - </div> + {contents} </div> ); } @@ -229,7 +227,7 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent transform: mounted ? `scale(${scaleX}, ${scaleY})` : null, }} > - {!!items && items.map(item => this.renderItem(item))} + {!!items && items.map((item, i) => this.renderItem(item, i))} </div> )} </Motion> diff --git a/app/javascript/flavours/glitch/features/compose/components/header.js b/app/javascript/flavours/glitch/features/compose/components/header.js index c6e4cc36b..95add2027 100644 --- a/app/javascript/flavours/glitch/features/compose/components/header.js +++ b/app/javascript/flavours/glitch/features/compose/components/header.js @@ -119,7 +119,7 @@ class Header extends ImmutablePureComponent { <a aria-label={intl.formatMessage(messages.settings)} onClick={onSettingsClick} - href='#' + href='/settings/preferences' title={intl.formatMessage(messages.settings)} ><Icon id='cogs' /></a> <a diff --git a/app/javascript/flavours/glitch/features/compose/components/options.js b/app/javascript/flavours/glitch/features/compose/components/options.js index f9212bbae..3a31e214d 100644 --- a/app/javascript/flavours/glitch/features/compose/components/options.js +++ b/app/javascript/flavours/glitch/features/compose/components/options.js @@ -2,8 +2,10 @@ import PropTypes from 'prop-types'; import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; +import { defineMessages, injectIntl } from 'react-intl'; import spring from 'react-motion/lib/spring'; +import Toggle from 'react-toggle'; +import { connect } from 'react-redux'; // Components. import IconButton from 'flavours/glitch/components/icon_button'; @@ -80,6 +82,36 @@ const messages = defineMessages({ }, }); +@connect((state, { name }) => ({ checked: state.getIn(['compose', 'advanced_options', name]) })) +class ToggleOption extends ImmutablePureComponent { + + static propTypes = { + name: PropTypes.string.isRequired, + checked: PropTypes.bool, + onChangeAdvancedOption: PropTypes.func.isRequired, + }; + + handleChange = () => { + this.props.onChangeAdvancedOption(this.props.name); + }; + + render() { + const { meta, text, checked } = this.props; + + return ( + <React.Fragment> + <Toggle checked={checked} onChange={this.handleChange} /> + + <div className='content'> + <strong>{text}</strong> + {meta} + </div> + </React.Fragment> + ); + } + +} + export default @injectIntl class ComposerOptions extends ImmutablePureComponent { @@ -106,6 +138,7 @@ class ComposerOptions extends ImmutablePureComponent { resetFileKey: PropTypes.number, spoiler: PropTypes.bool, showContentTypeChoice: PropTypes.bool, + isEditing: PropTypes.bool, }; // Handles file selection. @@ -141,6 +174,13 @@ class ComposerOptions extends ImmutablePureComponent { this.fileElement = fileElement; } + renderToggleItemContents = (item) => { + const { onChangeAdvancedOption } = this.props; + const { name, meta, text } = item; + + return <ToggleOption name={name} text={text} meta={meta} onChangeAdvancedOption={onChangeAdvancedOption} />; + }; + // Rendering. render () { const { @@ -152,7 +192,6 @@ class ComposerOptions extends ImmutablePureComponent { hasMedia, allowPoll, hasPoll, - intl, onChangeAdvancedOption, onChangeContentType, onChangeVisibility, @@ -164,23 +203,25 @@ class ComposerOptions extends ImmutablePureComponent { resetFileKey, spoiler, showContentTypeChoice, + isEditing, + intl: { formatMessage }, } = this.props; const contentTypeItems = { plain: { icon: 'file-text', name: 'text/plain', - text: <FormattedMessage {...messages.plain} />, + text: formatMessage(messages.plain), }, html: { icon: 'code', name: 'text/html', - text: <FormattedMessage {...messages.html} />, + text: formatMessage(messages.html), }, markdown: { icon: 'arrow-circle-down', name: 'text/markdown', - text: <FormattedMessage {...messages.markdown} />, + text: formatMessage(messages.markdown), }, }; @@ -204,18 +245,18 @@ class ComposerOptions extends ImmutablePureComponent { { icon: 'cloud-upload', name: 'upload', - text: <FormattedMessage {...messages.upload} />, + text: formatMessage(messages.upload), }, { icon: 'paint-brush', name: 'doodle', - text: <FormattedMessage {...messages.doodle} />, + text: formatMessage(messages.doodle), }, ]} onChange={this.handleClickAttach} onModalClose={onModalClose} onModalOpen={onModalOpen} - title={intl.formatMessage(messages.attach)} + title={formatMessage(messages.attach)} /> {!!pollLimits && ( <IconButton @@ -229,12 +270,12 @@ class ComposerOptions extends ImmutablePureComponent { height: null, lineHeight: null, }} - title={intl.formatMessage(hasPoll ? messages.remove_poll : messages.add_poll)} + title={formatMessage(hasPoll ? messages.remove_poll : messages.add_poll)} /> )} <hr /> <PrivacyDropdown - disabled={disabled} + disabled={disabled || isEditing} onChange={onChangeVisibility} onModalClose={onModalClose} onModalOpen={onModalOpen} @@ -252,7 +293,7 @@ class ComposerOptions extends ImmutablePureComponent { onChange={onChangeContentType} onModalClose={onModalClose} onModalOpen={onModalOpen} - title={intl.formatMessage(messages.content_type)} + title={formatMessage(messages.content_type)} value={contentType} /> )} @@ -262,31 +303,31 @@ class ComposerOptions extends ImmutablePureComponent { ariaControls='glitch.composer.spoiler.input' label='CW' onClick={onToggleSpoiler} - title={intl.formatMessage(messages.spoiler)} + title={formatMessage(messages.spoiler)} /> )} <Dropdown active={advancedOptions && advancedOptions.some(value => !!value)} - disabled={disabled} + disabled={disabled || isEditing} icon='ellipsis-h' items={advancedOptions ? [ { - meta: <FormattedMessage {...messages.local_only_long} />, + meta: formatMessage(messages.local_only_long), name: 'do_not_federate', - on: advancedOptions.get('do_not_federate'), - text: <FormattedMessage {...messages.local_only_short} />, + text: formatMessage(messages.local_only_short), }, { - meta: <FormattedMessage {...messages.threaded_mode_long} />, + meta: formatMessage(messages.threaded_mode_long), name: 'threaded_mode', - on: advancedOptions.get('threaded_mode'), - text: <FormattedMessage {...messages.threaded_mode_short} />, + text: formatMessage(messages.threaded_mode_short), }, ] : null} onChange={onChangeAdvancedOption} + renderItemContents={this.renderToggleItemContents} onModalClose={onModalClose} onModalOpen={onModalOpen} - title={intl.formatMessage(messages.advanced_options_icon_title)} + title={formatMessage(messages.advanced_options_icon_title)} + closeOnChange={false} /> </div> ); diff --git a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js index 39f7c7bd1..c8e783d22 100644 --- a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js +++ b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js @@ -1,46 +1,19 @@ import PropTypes from 'prop-types'; import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; +import { defineMessages, injectIntl } from 'react-intl'; import Dropdown from './dropdown'; const messages = defineMessages({ - change_privacy: { - defaultMessage: 'Adjust status privacy', - id: 'privacy.change', - }, - direct_long: { - defaultMessage: 'Visible for mentioned users only', - id: 'privacy.direct.long', - }, - direct_short: { - defaultMessage: 'Direct', - id: 'privacy.direct.short', - }, - private_long: { - defaultMessage: 'Visible for followers only', - id: 'privacy.private.long', - }, - private_short: { - defaultMessage: 'Followers-only', - id: 'privacy.private.short', - }, - public_long: { - defaultMessage: 'Visible for all, shown in public timelines', - id: 'privacy.public.long', - }, - public_short: { - defaultMessage: 'Public', - id: 'privacy.public.short', - }, - unlisted_long: { - defaultMessage: 'Visible for all, but not in public timelines', - id: 'privacy.unlisted.long', - }, - unlisted_short: { - defaultMessage: 'Unlisted', - id: 'privacy.unlisted.short', - }, + public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, + public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all, shown in public timelines' }, + unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, + unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but not in public timelines' }, + private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, + private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, + direct_long: { id: 'privacy.direct.long', defaultMessage: 'Visible for mentioned users only' }, + change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' }, }); export default @injectIntl @@ -53,40 +26,40 @@ class PrivacyDropdown extends React.PureComponent { value: PropTypes.string.isRequired, onChange: PropTypes.func.isRequired, noDirect: PropTypes.bool, - noModal: PropTypes.bool, container: PropTypes.func, + disabled: PropTypes.bool, intl: PropTypes.object.isRequired, }; render () { - const { value, onChange, onModalOpen, onModalClose, disabled, noDirect, noModal, container, intl } = this.props; + const { value, onChange, onModalOpen, onModalClose, disabled, noDirect, container, intl: { formatMessage } } = this.props; // We predefine our privacy items so that we can easily pick the // dropdown icon later. const privacyItems = { direct: { icon: 'envelope', - meta: <FormattedMessage {...messages.direct_long} />, + meta: formatMessage(messages.direct_long), name: 'direct', - text: <FormattedMessage {...messages.direct_short} />, + text: formatMessage(messages.direct_short), }, private: { icon: 'lock', - meta: <FormattedMessage {...messages.private_long} />, + meta: formatMessage(messages.private_long), name: 'private', - text: <FormattedMessage {...messages.private_short} />, + text: formatMessage(messages.private_short), }, public: { icon: 'globe', - meta: <FormattedMessage {...messages.public_long} />, + meta: formatMessage(messages.public_long), name: 'public', - text: <FormattedMessage {...messages.public_short} />, + text: formatMessage(messages.public_short), }, unlisted: { icon: 'unlock', - meta: <FormattedMessage {...messages.unlisted_long} />, + meta: formatMessage(messages.unlisted_long), name: 'unlisted', - text: <FormattedMessage {...messages.unlisted_short} />, + text: formatMessage(messages.unlisted_short), }, }; @@ -104,9 +77,8 @@ class PrivacyDropdown extends React.PureComponent { onChange={onChange} onModalClose={onModalClose} onModalOpen={onModalOpen} - title={intl.formatMessage(messages.change_privacy)} + title={formatMessage(messages.change_privacy)} container={container} - noModal={noModal} value={value} /> ); diff --git a/app/javascript/flavours/glitch/features/compose/components/publisher.js b/app/javascript/flavours/glitch/features/compose/components/publisher.js index 1531dcaa9..9a8c0f510 100644 --- a/app/javascript/flavours/glitch/features/compose/components/publisher.js +++ b/app/javascript/flavours/glitch/features/compose/components/publisher.js @@ -2,7 +2,7 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; -import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import { defineMessages, injectIntl } from 'react-intl'; import { length } from 'stringz'; import ImmutablePureComponent from 'react-immutable-pure-component'; @@ -23,6 +23,7 @@ const messages = defineMessages({ defaultMessage: '{publish}!', id: 'compose_form.publish_loud', }, + saveChanges: { id: 'compose_form.save_changes', defaultMessage: 'Save changes' }, }); export default @injectIntl @@ -36,6 +37,7 @@ class Publisher extends ImmutablePureComponent { onSubmit: PropTypes.func, privacy: PropTypes.oneOf(['direct', 'private', 'unlisted', 'public']), sideArm: PropTypes.oneOf(['none', 'direct', 'private', 'unlisted', 'public']), + isEditing: PropTypes.bool, }; handleSubmit = () => { @@ -43,7 +45,7 @@ class Publisher extends ImmutablePureComponent { }; render () { - const { countText, disabled, intl, onSecondarySubmit, privacy, sideArm } = this.props; + const { countText, disabled, intl, onSecondarySubmit, privacy, sideArm, isEditing } = this.props; const diff = maxChars - length(countText || ''); const computedClass = classNames('composer--publisher', { @@ -51,63 +53,37 @@ class Publisher extends ImmutablePureComponent { over: diff < 0, }); + const privacyIcons = { direct: 'envelope', private: 'lock', public: 'globe', unlisted: 'unlock' }; + + let publishText; + if (isEditing) { + publishText = intl.formatMessage(messages.saveChanges); + } else if (privacy === 'private' || privacy === 'direct') { + const iconId = privacyIcons[privacy]; + publishText = ( + <span> + <Icon id={iconId} /> {intl.formatMessage(messages.publish)} + </span> + ); + } else { + publishText = privacy !== 'unlisted' ? intl.formatMessage(messages.publishLoud, { publish: intl.formatMessage(messages.publish) }) : intl.formatMessage(messages.publish); + } + return ( <div className={computedClass}> - {sideArm && sideArm !== 'none' ? ( + {sideArm && !isEditing && sideArm !== 'none' ? ( <Button className='side_arm' disabled={disabled} onClick={onSecondarySubmit} style={{ padding: null }} - text={ - <span> - <Icon - id={{ - public: 'globe', - unlisted: 'unlock', - private: 'lock', - direct: 'envelope', - }[sideArm]} - /> - </span> - } + text={<Icon id={privacyIcons[sideArm]} />} title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${sideArm}.short` })}`} /> ) : null} <Button className='primary' - text={function () { - switch (true) { - case !!sideArm && sideArm !== 'none': - case privacy === 'direct': - case privacy === 'private': - return ( - <span> - <Icon - id={{ - direct: 'envelope', - private: 'lock', - public: 'globe', - unlisted: 'unlock', - }[privacy]} - /> - {' '} - <FormattedMessage {...messages.publish} /> - </span> - ); - case privacy === 'public': - return ( - <span> - <FormattedMessage - {...messages.publishLoud} - values={{ publish: <FormattedMessage {...messages.publish} /> }} - /> - </span> - ); - default: - return <span><FormattedMessage {...messages.publish} /></span>; - } - }()} + text={publishText} title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${privacy}.short` })}`} onClick={this.handleSubmit} disabled={disabled} diff --git a/app/javascript/flavours/glitch/features/compose/components/upload.js b/app/javascript/flavours/glitch/features/compose/components/upload.js index 425b0fe5e..338bfca37 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload.js @@ -19,6 +19,7 @@ export default class Upload extends ImmutablePureComponent { media: ImmutablePropTypes.map.isRequired, onUndo: PropTypes.func.isRequired, onOpenFocalPoint: PropTypes.func.isRequired, + isEditingStatus: PropTypes.func.isRequired, }; handleUndoClick = e => { @@ -32,7 +33,7 @@ export default class Upload extends ImmutablePureComponent { } render () { - const { intl, media } = this.props; + const { intl, media, isEditingStatus } = this.props; const focusX = media.getIn(['meta', 'focus', 'x']); const focusY = media.getIn(['meta', 'focus', 'y']); const x = ((focusX / 2) + .5) * 100; @@ -45,7 +46,7 @@ export default class Upload extends ImmutablePureComponent { <div style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}> <div className={classNames('composer--upload_form--actions', { active: true })}> <button className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button> - <button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button> + {!isEditingStatus && (<button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>)} </div> </div> )} diff --git a/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js b/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js index 8eff8a36b..a037bbbcc 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js @@ -51,6 +51,7 @@ function mapStateToProps (state) { focusDate: state.getIn(['compose', 'focusDate']), caretPosition: state.getIn(['compose', 'caretPosition']), isSubmitting: state.getIn(['compose', 'is_submitting']), + isEditing: state.getIn(['compose', 'id']) !== null, isChangingUpload: state.getIn(['compose', 'is_changing_upload']), isUploading: state.getIn(['compose', 'is_uploading']), layout: state.getIn(['local_settings', 'layout']), diff --git a/app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js b/app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js index 395a9aa5b..dd6899be4 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js @@ -1,14 +1,24 @@ import { connect } from 'react-redux'; import { cancelReplyCompose } from 'flavours/glitch/actions/compose'; -import { makeGetStatus } from 'flavours/glitch/selectors'; import ReplyIndicator from '../components/reply_indicator'; -function makeMapStateToProps (state) { - const inReplyTo = state.getIn(['compose', 'in_reply_to']); +const makeMapStateToProps = () => { + const mapStateToProps = state => { + let statusId = state.getIn(['compose', 'id'], null); + let editing = true; - return { - status: inReplyTo ? state.getIn(['statuses', inReplyTo]) : null, + if (statusId === null) { + statusId = state.getIn(['compose', 'in_reply_to']); + editing = false; + } + + return { + status: state.getIn(['statuses', statusId]), + editing, + }; }; + + return mapStateToProps; }; const mapDispatchToProps = dispatch => ({ diff --git a/app/javascript/flavours/glitch/features/compose/containers/upload_container.js b/app/javascript/flavours/glitch/features/compose/containers/upload_container.js index f3ca4ce7b..d6256fe96 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/upload_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/upload_container.js @@ -5,6 +5,7 @@ import { submitCompose } from 'flavours/glitch/actions/compose'; const mapStateToProps = (state, { id }) => ({ media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id), + isEditingStatus: state.getIn(['compose', 'id']) !== null, }); const mapDispatchToProps = dispatch => ({ 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 95250c6ed..569ba4db0 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js +++ b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js @@ -154,6 +154,17 @@ export default class ColumnSettings extends React.PureComponent { <PillBarButton prefix='notifications' settings={settings} settingPath={['sounds', 'status']} onChange={onChange} label={soundStr} /> </div> </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> + + <div className='column-settings__pillbar'> + <PillBarButton disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'update']} onChange={onChange} label={alertStr} /> + {showPushSettings && <PillBarButton prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'update']} onChange={this.onPushChange} label={pushStr} />} + <PillBarButton prefix='notifications' settings={settings} settingPath={['shows', 'update']} onChange={onChange} label={showStr} /> + <PillBarButton prefix='notifications' settings={settings} settingPath={['sounds', 'update']} 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 e1d9fbd0a..1cf205898 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/notification.js +++ b/app/javascript/flavours/glitch/features/notifications/components/notification.js @@ -171,6 +171,28 @@ export default class Notification extends ImmutablePureComponent { unread={this.props.unread} /> ); + case 'update': + return ( + <StatusContainer + containerId={notification.get('id')} + hidden={hidden} + id={notification.get('status')} + account={notification.get('account')} + prepend='update' + muted + notification={notification} + onMoveDown={onMoveDown} + onMoveUp={onMoveUp} + onMention={onMention} + getScrollPosition={getScrollPosition} + updateScrollBottom={updateScrollBottom} + cachedMediaWidth={this.props.cachedMediaWidth} + cacheMediaWidth={this.props.cacheMediaWidth} + onUnmount={this.props.onUnmount} + withDismiss + unread={this.props.unread} + /> + ); default: return null; } diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js index eb4583026..a67a045da 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.js +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js @@ -11,6 +11,7 @@ import classNames from 'classnames'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, + edit: { id: 'status.edit', defaultMessage: 'Edit' }, direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' }, mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' }, reply: { id: 'status.reply', defaultMessage: 'Reply' }, @@ -52,6 +53,7 @@ class ActionBar extends React.PureComponent { onMuteConversation: PropTypes.func, onBlock: PropTypes.func, onDelete: PropTypes.func.isRequired, + onEdit: PropTypes.func.isRequired, onDirect: PropTypes.func.isRequired, onMention: PropTypes.func.isRequired, onReport: PropTypes.func, @@ -84,6 +86,10 @@ class ActionBar extends React.PureComponent { this.props.onDelete(this.props.status, this.context.router.history, true); } + handleEditClick = () => { + this.props.onEdit(this.props.status, this.context.router.history); + } + handleDirectClick = () => { this.props.onDirect(this.props.status.get('account'), this.context.router.history); } @@ -166,6 +172,7 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); menu.push(null); + // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { diff --git a/app/javascript/flavours/glitch/features/status/components/detailed_status.js b/app/javascript/flavours/glitch/features/status/components/detailed_status.js index 4b3a6aaaa..528d2eb73 100644 --- a/app/javascript/flavours/glitch/features/status/components/detailed_status.js +++ b/app/javascript/flavours/glitch/features/status/components/detailed_status.js @@ -7,7 +7,7 @@ import StatusContent from 'flavours/glitch/components/status_content'; import MediaGallery from 'flavours/glitch/components/media_gallery'; import AttachmentList from 'flavours/glitch/components/attachment_list'; import { Link } from 'react-router-dom'; -import { injectIntl, FormattedDate, FormattedMessage } from 'react-intl'; +import { injectIntl, FormattedDate } from 'react-intl'; import Card from './card'; import ImmutablePureComponent from 'react-immutable-pure-component'; import Video from 'flavours/glitch/features/video'; @@ -19,6 +19,7 @@ import PollContainer from 'flavours/glitch/containers/poll_container'; import Icon from 'flavours/glitch/components/icon'; import AnimatedNumber from 'flavours/glitch/components/animated_number'; import PictureInPicturePlaceholder from 'flavours/glitch/components/picture_in_picture_placeholder'; +import EditedTimestamp from 'flavours/glitch/components/edited_timestamp'; export default @injectIntl class DetailedStatus extends ImmutablePureComponent { @@ -265,7 +266,7 @@ class DetailedStatus extends ImmutablePureComponent { edited = ( <React.Fragment> <React.Fragment> · </React.Fragment> - <FormattedMessage id='status.edited' defaultMessage='Edited {date}' values={{ date: intl.formatDate(status.get('edited_at'), { hour12: false, month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }) }} /> + <EditedTimestamp statusId={status.get('id')} timestamp={status.get('edited_at')} /> </React.Fragment> ); } diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js index 12ea407ad..653fabeae 100644 --- a/app/javascript/flavours/glitch/features/status/index.js +++ b/app/javascript/flavours/glitch/features/status/index.js @@ -26,7 +26,7 @@ import { directCompose, } from 'flavours/glitch/actions/compose'; import { changeLocalSetting } from 'flavours/glitch/actions/local_settings'; -import { muteStatus, unmuteStatus, deleteStatus } from 'flavours/glitch/actions/statuses'; +import { muteStatus, unmuteStatus, deleteStatus, editStatus } from 'flavours/glitch/actions/statuses'; import { initMuteModal } from 'flavours/glitch/actions/mutes'; import { initBlockModal } from 'flavours/glitch/actions/blocks'; import { initReport } from 'flavours/glitch/actions/reports'; @@ -307,6 +307,10 @@ class Status extends ImmutablePureComponent { } } + handleEditClick = (status, history) => { + this.props.dispatch(editStatus(status.get('id'), history)); + } + handleDirectClick = (account, router) => { this.props.dispatch(directCompose(account, router)); } @@ -585,6 +589,7 @@ class Status extends ImmutablePureComponent { onReblog={this.handleReblogClick} onBookmark={this.handleBookmarkClick} onDelete={this.handleDeleteClick} + onEdit={this.handleEditClick} onDirect={this.handleDirectClick} onMention={this.handleMentionClick} onMute={this.handleMuteClick} diff --git a/app/javascript/flavours/glitch/features/ui/components/actions_modal.js b/app/javascript/flavours/glitch/features/ui/components/actions_modal.js index 24169036c..aae2e4426 100644 --- a/app/javascript/flavours/glitch/features/ui/components/actions_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/actions_modal.js @@ -7,24 +7,22 @@ import Avatar from 'flavours/glitch/components/avatar'; import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp'; import DisplayName from 'flavours/glitch/components/display_name'; import classNames from 'classnames'; -import Icon from 'flavours/glitch/components/icon'; -import Link from 'flavours/glitch/components/link'; -import Toggle from 'react-toggle'; +import IconButton from 'flavours/glitch/components/icon_button'; export default class ActionsModal extends ImmutablePureComponent { static propTypes = { status: ImmutablePropTypes.map, + onClick: PropTypes.func, actions: PropTypes.arrayOf(PropTypes.shape({ active: PropTypes.bool, href: PropTypes.string, icon: PropTypes.string, - meta: PropTypes.node, + meta: PropTypes.string, name: PropTypes.string, - on: PropTypes.bool, - onPassiveClick: PropTypes.func, - text: PropTypes.node, + text: PropTypes.string, })), + renderItemContents: PropTypes.func, }; renderAction = (action, i) => { @@ -32,57 +30,26 @@ export default class ActionsModal extends ImmutablePureComponent { return <li key={`sep-${i}`} className='dropdown-menu__separator' />; } - const { - active, - href, - icon, - meta, - name, - on, - onClick, - onPassiveClick, - text, - } = action; + const { icon = null, text, meta = null, active = false, href = '#' } = action; + let contents = this.props.renderItemContents && this.props.renderItemContents(action, i); - return ( - <li key={name || i}> - <Link - className={classNames('link', { active })} - href={href} - onClick={on !== null && typeof on !== 'undefined' && onPassiveClick || onClick} - role={onClick ? 'button' : null} - > - {function () { + if (!contents) { + contents = ( + <React.Fragment> + {icon && <IconButton title={text} icon={icon} role='presentation' tabIndex='-1' inverted />} + <div> + <div className={classNames({ 'actions-modal__item-label': !!meta })}>{text}</div> + <div>{meta}</div> + </div> + </React.Fragment> + ); + } - // We render a `<Toggle>` if we were provided an `on` - // property, and otherwise show an `<Icon>` if available. - switch (true) { - case on !== null && typeof on !== 'undefined': - return ( - <Toggle - checked={on} - onChange={onPassiveClick || onClick} - /> - ); - case !!icon: - return ( - <Icon - className='icon' - fixedWidth - id={icon} - /> - ); - default: - return null; - } - }()} - {meta ? ( - <div> - <strong>{text}</strong> - {meta} - </div> - ) : <div>{text}</div>} - </Link> + return ( + <li key={`${text}-${i}`}> + <a href={href} target='_blank' rel='noopener noreferrer' onClick={this.props.onClick} data-index={i} className={classNames('link', { active })}> + {contents} + </a> </li> ); } diff --git a/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js b/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js new file mode 100644 index 000000000..198443221 --- /dev/null +++ b/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js @@ -0,0 +1,79 @@ +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 { closeModal } from 'flavours/glitch/actions/modal'; +import emojify from 'flavours/glitch/util/emoji'; +import escapeTextContentForBrowser from 'escape-html'; +import InlineAccount from 'flavours/glitch/components/inline_account'; +import IconButton from 'flavours/glitch/components/icon_button'; +import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp'; + +const mapStateToProps = (state, { statusId }) => ({ + versions: state.getIn(['history', statusId, 'items']), +}); + +const mapDispatchToProps = dispatch => ({ + + onClose() { + dispatch(closeModal()); + }, + +}); + +export default @connect(mapStateToProps, mapDispatchToProps) +class CompareHistoryModal extends React.PureComponent { + + static propTypes = { + onClose: PropTypes.func.isRequired, + index: PropTypes.number.isRequired, + statusId: PropTypes.string.isRequired, + versions: ImmutablePropTypes.list.isRequired, + }; + + render () { + const { index, versions, onClose } = this.props; + const currentVersion = versions.get(index); + + const emojiMap = currentVersion.get('emojis').reduce((obj, emoji) => { + obj[`:${emoji.get('shortcode')}:`] = emoji.toJS(); + return obj; + }, {}); + + const content = { __html: emojify(currentVersion.get('content'), emojiMap) }; + const spoilerContent = { __html: emojify(escapeTextContentForBrowser(currentVersion.get('spoiler_text')), emojiMap) }; + + const formattedDate = <RelativeTimestamp timestamp={currentVersion.get('created_at')} short={false} />; + const formattedName = <InlineAccount accountId={currentVersion.get('account')} />; + + const label = currentVersion.get('original') ? ( + <FormattedMessage id='status.history.created' defaultMessage='{name} created {date}' values={{ name: formattedName, date: formattedDate }} /> + ) : ( + <FormattedMessage id='status.history.edited' defaultMessage='{name} edited {date}' values={{ name: formattedName, date: formattedDate }} /> + ); + + return ( + <div className='modal-root__modal compare-history-modal'> + <div className='report-modal__target'> + <IconButton className='report-modal__close' icon='times' onClick={onClose} size={20} /> + {label} + </div> + + <div className='compare-history-modal__container'> + <div className='status__content'> + {currentVersion.get('spoiler_text').length > 0 && ( + <React.Fragment> + <div className='translate' dangerouslySetInnerHTML={spoilerContent} /> + <hr /> + </React.Fragment> + )} + + <div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} /> + </div> + </div> + </div> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.js b/app/javascript/flavours/glitch/features/ui/components/modal_root.js index 62bb167a0..1e065c171 100644 --- a/app/javascript/flavours/glitch/features/ui/components/modal_root.js +++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.js @@ -24,6 +24,7 @@ import { ListEditor, ListAdder, PinnedAccountsEditor, + CompareHistoryModal, } from 'flavours/glitch/util/async-components'; const MODAL_COMPONENTS = { @@ -42,9 +43,10 @@ const MODAL_COMPONENTS = { 'ACTIONS': () => Promise.resolve({ default: ActionsModal }), 'EMBED': EmbedModal, 'LIST_EDITOR': ListEditor, - 'LIST_ADDER':ListAdder, 'FOCAL_POINT': () => Promise.resolve({ default: FocalPointModal }), + 'LIST_ADDER': ListAdder, 'PINNED_ACCOUNTS_EDITOR': PinnedAccountsEditor, + 'COMPARE_HISTORY': CompareHistoryModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index d2ea0a924..f97c799e7 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -46,6 +46,7 @@ import { INIT_MEDIA_EDIT_MODAL, COMPOSE_CHANGE_MEDIA_DESCRIPTION, COMPOSE_CHANGE_MEDIA_FOCUS, + COMPOSE_SET_STATUS, } from 'flavours/glitch/actions/compose'; import { TIMELINE_DELETE } from 'flavours/glitch/actions/timelines'; import { STORE_HYDRATE } from 'flavours/glitch/actions/store'; @@ -75,6 +76,7 @@ const initialState = ImmutableMap({ spoiler: false, spoiler_text: '', privacy: null, + id: null, content_type: defaultContentType || 'text/plain', text: '', focusDate: null, @@ -160,6 +162,7 @@ function apiStatusToTextHashtags (state, status) { function clearAll(state) { return state.withMutations(map => { + map.set('id', null); map.set('text', ''); if (defaultContentType) map.set('content_type', defaultContentType); map.set('spoiler', false); @@ -400,6 +403,7 @@ export default function compose(state = initialState, action) { .set('elefriend', (state.get('elefriend') + 1) % totalElefriends); case COMPOSE_REPLY: return state.withMutations(map => { + map.set('id', null); map.set('in_reply_to', action.status.get('id')); map.set('text', statusToTextMentions(state, action.status)); map.set('privacy', privacyPreference(action.status.get('visibility'), state.get('default_privacy'))); @@ -434,6 +438,7 @@ export default function compose(state = initialState, action) { map.set('spoiler', false); map.set('spoiler_text', ''); map.set('privacy', state.get('default_privacy')); + map.set('id', null); map.set('poll', null); map.update( 'advanced_options', @@ -573,6 +578,34 @@ export default function compose(state = initialState, action) { })); } }); + case COMPOSE_SET_STATUS: + return state.withMutations(map => { + map.set('id', action.status.get('id')); + map.set('text', action.text); + map.set('in_reply_to', action.status.get('in_reply_to_id')); + map.set('privacy', action.status.get('visibility')); + map.set('media_attachments', action.status.get('media_attachments')); + map.set('focusDate', new Date()); + map.set('caretPosition', null); + map.set('idempotencyKey', uuid()); + map.set('sensitive', action.status.get('sensitive')); + + if (action.spoiler_text.length > 0) { + map.set('spoiler', true); + map.set('spoiler_text', action.spoiler_text); + } else { + map.set('spoiler', false); + map.set('spoiler_text', ''); + } + + if (action.status.get('poll')) { + map.set('poll', ImmutableMap({ + options: action.status.getIn(['poll', 'options']).map(x => x.get('title')), + multiple: action.status.getIn(['poll', 'multiple']), + expires_in: expiresInFromExpiresAt(action.status.getIn(['poll', 'expires_at'])), + })); + } + }); case COMPOSE_POLL_ADD: return state.set('poll', initialPoll); case COMPOSE_POLL_REMOVE: diff --git a/app/javascript/flavours/glitch/reducers/history.js b/app/javascript/flavours/glitch/reducers/history.js new file mode 100644 index 000000000..04f5f2fd1 --- /dev/null +++ b/app/javascript/flavours/glitch/reducers/history.js @@ -0,0 +1,28 @@ +import { HISTORY_FETCH_REQUEST, HISTORY_FETCH_SUCCESS, HISTORY_FETCH_FAIL } from 'flavours/glitch/actions/history'; +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + +const initialHistory = ImmutableMap({ + loading: false, + items: ImmutableList(), +}); + +const initialState = ImmutableMap(); + +export default function history(state = initialState, action) { + switch(action.type) { + case HISTORY_FETCH_REQUEST: + return state.update(action.statusId, initialHistory, history => history.withMutations(map => { + map.set('loading', true); + map.set('items', ImmutableList()); + })); + case HISTORY_FETCH_SUCCESS: + return state.update(action.statusId, initialHistory, history => history.withMutations(map => { + map.set('loading', false); + map.set('items', fromJS(action.history.map((x, i) => ({ ...x, account: x.account.id, original: i === 0 })).reverse())); + })); + case HISTORY_FETCH_FAIL: + return state.update(action.statusId, initialHistory, history => history.set('loading', false)); + default: + return state; + } +} diff --git a/app/javascript/flavours/glitch/reducers/index.js b/app/javascript/flavours/glitch/reducers/index.js index 7d7fe6fd3..d9123b103 100644 --- a/app/javascript/flavours/glitch/reducers/index.js +++ b/app/javascript/flavours/glitch/reducers/index.js @@ -41,6 +41,7 @@ import markers from './markers'; import account_notes from './account_notes'; import picture_in_picture from './picture_in_picture'; import accounts_map from './accounts_map'; +import history from './history'; const reducers = { announcements, @@ -85,6 +86,7 @@ const reducers = { markers, account_notes, picture_in_picture, + history, }; export default combineReducers(reducers); diff --git a/app/javascript/flavours/glitch/reducers/settings.js b/app/javascript/flavours/glitch/reducers/settings.js index a53d34a83..48587ce64 100644 --- a/app/javascript/flavours/glitch/reducers/settings.js +++ b/app/javascript/flavours/glitch/reducers/settings.js @@ -40,6 +40,7 @@ const initialState = ImmutableMap({ mention: false, poll: false, status: false, + update: false, }), quickFilter: ImmutableMap({ @@ -59,6 +60,7 @@ const initialState = ImmutableMap({ mention: true, poll: true, status: true, + update: true, }), sounds: ImmutableMap({ @@ -69,6 +71,7 @@ const initialState = ImmutableMap({ mention: true, poll: true, status: true, + update: true, }), }), diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index 92061585a..66ce92ce2 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -1203,6 +1203,10 @@ a.sparkline { } } } + + @media screen and (max-width: 930px) { + grid-template-columns: minmax(0, 1fr); + } } .account-card { @@ -1410,8 +1414,9 @@ a.sparkline { } &__button { + box-sizing: border-box; flex: 0 0 auto; - width: 100px; + width: 200px; padding: 15px; padding-right: 0; @@ -1427,4 +1432,38 @@ a.sparkline { color: $dark-text-color; } } + + @media screen and (max-width: 800px) { + border: 0; + + &__item { + flex-direction: column; + border: 0; + + &__button { + width: 100%; + padding: 15px 0; + } + + &__description { + padding: 0; + padding-bottom: 15px; + } + } + } +} + +.section-skip-link { + float: right; + + a { + color: $ui-highlight-color; + text-decoration: none; + + &:hover, + &:focus, + &:active { + text-decoration: underline; + } + } } diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index 2656890d7..656d8f25d 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -500,8 +500,47 @@ box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); z-index: 9999; - ul { - list-style: none; + &__text-button { + display: inline; + color: inherit; + background: transparent; + border: 0; + margin: 0; + padding: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + + &:focus { + outline: 1px dotted; + } + } + + &__container { + &__header { + border-bottom: 1px solid darken($ui-secondary-color, 8%); + padding: 4px 14px; + padding-bottom: 8px; + font-size: 13px; + line-height: 18px; + color: $inverted-text-color; + } + + &__list { + list-style: none; + + &--scrollable { + max-height: 300px; + overflow-y: scroll; + } + } + + &--loading { + display: flex; + align-items: center; + justify-content: center; + padding: 30px 45px; + } } } @@ -541,18 +580,29 @@ } .dropdown-menu__item { - a { - font-size: 13px; - line-height: 18px; + font-size: 13px; + line-height: 18px; + display: block; + color: $inverted-text-color; + + a, + button { + font-family: inherit; + font-size: inherit; + line-height: inherit; display: block; + width: 100%; padding: 4px 14px; + border: 0; + margin: 0; box-sizing: border-box; text-decoration: none; background: $ui-secondary-color; - color: $inverted-text-color; + color: inherit; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + text-align: inherit; &:focus, &:hover, @@ -564,6 +614,42 @@ } } +.dropdown-menu__item--text { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 4px 14px; +} + +.dropdown-menu__item.edited-timestamp__history__item { + border-bottom: 1px solid darken($ui-secondary-color, 8%); + + &:last-child { + border-bottom: 0; + } + + &.dropdown-menu__item--text, + a, + button { + padding: 8px 14px; + } +} + +.inline-account { + display: inline-flex; + align-items: center; + vertical-align: top; + + .account__avatar { + margin-right: 5px; + border-radius: 50%; + } + + strong { + font-weight: 600; + } +} + .dropdown--active .dropdown__content { display: block; line-height: 18px; @@ -1229,36 +1315,48 @@ button.icon-button.active i.fa-retweet { top: 50%; left: 50%; transform: translate(-50%, -50%); + display: flex; + align-items: center; + justify-content: center; +} - span { - display: block; - float: left; - transform: translateX(-50%); - margin: 82px 0 0 50%; - white-space: nowrap; +.circular-progress { + color: lighten($ui-base-color, 26%); + animation: 1.4s linear 0s infinite normal none running simple-rotate; + + circle { + stroke: currentColor; + stroke-dasharray: 80px, 200px; + stroke-dashoffset: 0; + animation: circular-progress 1.4s ease-in-out infinite; } } -.loading-indicator__figure { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 42px; - height: 42px; - box-sizing: border-box; - background-color: transparent; - border: 0 solid lighten($ui-base-color, 26%); - border-width: 6px; - border-radius: 50%; -} +@keyframes circular-progress { + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } -.no-reduce-motion .loading-indicator span { - animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000); + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } } -.no-reduce-motion .loading-indicator__figure { - animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000); +@keyframes simple-rotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } } @keyframes spring-rotate-in { @@ -1305,40 +1403,6 @@ button.icon-button.active i.fa-retweet { } } -@keyframes loader-figure { - 0% { - width: 0; - height: 0; - background-color: lighten($ui-base-color, 26%); - } - - 29% { - background-color: lighten($ui-base-color, 26%); - } - - 30% { - width: 42px; - height: 42px; - background-color: transparent; - border-width: 21px; - opacity: 1; - } - - 100% { - width: 42px; - height: 42px; - border-width: 0; - opacity: 0; - background-color: transparent; - } -} - -@keyframes loader-label { - 0% { opacity: 0.25; } - 30% { opacity: 1; } - 100% { opacity: 0.25; } -} - .spoiler-button { top: 0; left: 0; @@ -1508,6 +1572,41 @@ button.icon-button.active i.fa-retweet { filter: none; } +.compare-history-modal { + .report-modal__target { + border-bottom: 1px solid $ui-secondary-color; + } + + &__container { + padding: 30px; + pointer-events: all; + } + + .status__content { + color: $inverted-text-color; + font-size: 19px; + line-height: 24px; + + .emojione { + width: 24px; + height: 24px; + margin: -1px 0 0; + } + + a { + color: $highlight-text-color; + } + + hr { + height: 0.25rem; + padding: 0; + background-color: $ui-secondary-color; + border: 0; + margin: 20px 0; + } + } +} + .loading-bar { background-color: $ui-highlight-color; height: 3px; diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss index cb776e88f..fb2445a17 100644 --- a/app/javascript/flavours/glitch/styles/components/modal.scss +++ b/app/javascript/flavours/glitch/styles/components/modal.scss @@ -420,7 +420,8 @@ .report-modal, .actions-modal, .mute-modal, -.block-modal { +.block-modal, +.compare-history-modal { background: lighten($ui-secondary-color, 8%); color: $inverted-text-color; border-radius: 8px; diff --git a/app/javascript/flavours/glitch/theme.yml b/app/javascript/flavours/glitch/theme.yml index ee2b699b2..f3c7fac7e 100644 --- a/app/javascript/flavours/glitch/theme.yml +++ b/app/javascript/flavours/glitch/theme.yml @@ -1,7 +1,9 @@ # (REQUIRED) The location of the pack files. pack: about: packs/about.js - admin: packs/admin.js + admin: + - packs/admin.js + - packs/public.js auth: packs/public.js common: filename: packs/common.js diff --git a/app/javascript/flavours/glitch/util/async-components.js b/app/javascript/flavours/glitch/util/async-components.js index a6c6ab0ab..8c9630eea 100644 --- a/app/javascript/flavours/glitch/util/async-components.js +++ b/app/javascript/flavours/glitch/util/async-components.js @@ -173,3 +173,7 @@ export function Directory () { export function FollowRecommendations () { return import(/* webpackChunkName: "features/glitch/async/follow_recommendations" */'flavours/glitch/features/follow_recommendations'); } + +export function CompareHistoryModal () { + return import(/*webpackChunkName: "flavours/glitch/async/compare_history_modal" */'flavours/glitch/features/ui/components/compare_history_modal'); +} diff --git a/app/javascript/flavours/vanilla/theme.yml b/app/javascript/flavours/vanilla/theme.yml index 3263fd7d4..9173d4ec9 100644 --- a/app/javascript/flavours/vanilla/theme.yml +++ b/app/javascript/flavours/vanilla/theme.yml @@ -1,7 +1,9 @@ # (REQUIRED) The location of the pack files inside `pack_directory`. pack: about: about.js - admin: admin.js + admin: + - admin.js + - public.js auth: public.js common: filename: common.js diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 7c3bbcbd8..f3129f8d9 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -70,6 +70,8 @@ export const INIT_MEDIA_EDIT_MODAL = 'INIT_MEDIA_EDIT_MODAL'; export const COMPOSE_CHANGE_MEDIA_DESCRIPTION = 'COMPOSE_CHANGE_MEDIA_DESCRIPTION'; export const COMPOSE_CHANGE_MEDIA_FOCUS = 'COMPOSE_CHANGE_MEDIA_FOCUS'; +export const COMPOSE_SET_STATUS = 'COMPOSE_SET_STATUS'; + const messages = defineMessages({ uploadErrorLimit: { id: 'upload_error.limit', defaultMessage: 'File upload limit exceeded.' }, uploadErrorPoll: { id: 'upload_error.poll', defaultMessage: 'File upload not allowed with polls.' }, @@ -83,6 +85,15 @@ export const ensureComposeIsVisible = (getState, routerHistory) => { } }; +export function setComposeToStatus(status, text, spoiler_text) { + return{ + type: COMPOSE_SET_STATUS, + status, + text, + spoiler_text, + }; +}; + export function changeCompose(text) { return { type: COMPOSE_CHANGE, @@ -137,8 +148,9 @@ export function directCompose(account, routerHistory) { export function submitCompose(routerHistory) { return function (dispatch, getState) { - const status = getState().getIn(['compose', 'text'], ''); - const media = getState().getIn(['compose', 'media_attachments']); + const status = getState().getIn(['compose', 'text'], ''); + const media = getState().getIn(['compose', 'media_attachments']); + const statusId = getState().getIn(['compose', 'id'], null); if ((!status || !status.length) && media.size === 0) { return; @@ -146,15 +158,18 @@ export function submitCompose(routerHistory) { dispatch(submitComposeRequest()); - api(getState).post('/api/v1/statuses', { - status, - in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null), - media_ids: media.map(item => item.get('id')), - sensitive: getState().getIn(['compose', 'sensitive']), - spoiler_text: getState().getIn(['compose', 'spoiler']) ? getState().getIn(['compose', 'spoiler_text'], '') : '', - visibility: getState().getIn(['compose', 'privacy']), - poll: getState().getIn(['compose', 'poll'], null), - }, { + api(getState).request({ + url: statusId === null ? '/api/v1/statuses' : `/api/v1/statuses/${statusId}`, + method: statusId === null ? 'post' : 'put', + data: { + status, + in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null), + media_ids: media.map(item => item.get('id')), + sensitive: getState().getIn(['compose', 'sensitive']), + spoiler_text: getState().getIn(['compose', 'spoiler']) ? getState().getIn(['compose', 'spoiler_text'], '') : '', + visibility: getState().getIn(['compose', 'privacy']), + poll: getState().getIn(['compose', 'poll'], null), + }, headers: { 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']), }, @@ -176,11 +191,11 @@ export function submitCompose(routerHistory) { } }; - if (response.data.visibility !== 'direct') { + if (statusId === null && response.data.visibility !== 'direct') { insertIfOnline('home'); } - if (response.data.in_reply_to_id === null && response.data.visibility === 'public') { + if (statusId === null && response.data.in_reply_to_id === null && response.data.visibility === 'public') { insertIfOnline('community'); if (!response.data.local_only) { insertIfOnline('public'); diff --git a/app/javascript/mastodon/actions/history.js b/app/javascript/mastodon/actions/history.js new file mode 100644 index 000000000..c142aaf61 --- /dev/null +++ b/app/javascript/mastodon/actions/history.js @@ -0,0 +1,37 @@ +import api from '../api'; +import { importFetchedAccounts } from './importer'; + +export const HISTORY_FETCH_REQUEST = 'HISTORY_FETCH_REQUEST'; +export const HISTORY_FETCH_SUCCESS = 'HISTORY_FETCH_SUCCESS'; +export const HISTORY_FETCH_FAIL = 'HISTORY_FETCH_FAIL'; + +export const fetchHistory = statusId => (dispatch, getState) => { + const loading = getState().getIn(['history', statusId, 'loading']); + + if (loading) { + return; + } + + dispatch(fetchHistoryRequest(statusId)); + + api(getState).get(`/api/v1/statuses/${statusId}/history`).then(({ data }) => { + dispatch(importFetchedAccounts(data.map(x => x.account))); + dispatch(fetchHistorySuccess(statusId, data)); + }).catch(error => dispatch(fetchHistoryFail(error))); +}; + +export const fetchHistoryRequest = statusId => ({ + type: HISTORY_FETCH_REQUEST, + statusId, +}); + +export const fetchHistorySuccess = (statusId, history) => ({ + type: HISTORY_FETCH_SUCCESS, + statusId, + history, +}); + +export const fetchHistoryFail = error => ({ + type: HISTORY_FETCH_FAIL, + error, +}); diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 663cf21e3..9370811e0 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -34,7 +34,6 @@ export const NOTIFICATIONS_LOAD_PENDING = 'NOTIFICATIONS_LOAD_PENDING'; export const NOTIFICATIONS_MOUNT = 'NOTIFICATIONS_MOUNT'; export const NOTIFICATIONS_UNMOUNT = 'NOTIFICATIONS_UNMOUNT'; - export const NOTIFICATIONS_MARK_AS_READ = 'NOTIFICATIONS_MARK_AS_READ'; export const NOTIFICATIONS_SET_BROWSER_SUPPORT = 'NOTIFICATIONS_SET_BROWSER_SUPPORT'; @@ -124,7 +123,17 @@ export function updateNotifications(notification, intlMessages, intlLocale) { const excludeTypesFromSettings = state => state.getIn(['settings', 'notifications', 'shows']).filter(enabled => !enabled).keySeq().toJS(); const excludeTypesFromFilter = filter => { - const allTypes = ImmutableList(['follow', 'follow_request', 'favourite', 'reblog', 'mention', 'poll']); + const allTypes = ImmutableList([ + 'follow', + 'follow_request', + 'favourite', + 'reblog', + 'mention', + 'poll', + 'status', + 'update', + ]); + return allTypes.filterNot(item => item === filter).toJS(); }; diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 20d71362e..adc24eabf 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -2,7 +2,7 @@ import api from '../api'; import { deleteFromTimelines } from './timelines'; import { importFetchedStatus, importFetchedStatuses, importFetchedAccount } from './importer'; -import { ensureComposeIsVisible } from './compose'; +import { ensureComposeIsVisible, setComposeToStatus } from './compose'; export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST'; export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS'; @@ -30,6 +30,10 @@ export const STATUS_COLLAPSE = 'STATUS_COLLAPSE'; export const REDRAFT = 'REDRAFT'; +export const STATUS_FETCH_SOURCE_REQUEST = 'STATUS_FETCH_SOURCE_REQUEST'; +export const STATUS_FETCH_SOURCE_SUCCESS = 'STATUS_FETCH_SOURCE_SUCCESS'; +export const STATUS_FETCH_SOURCE_FAIL = 'STATUS_FETCH_SOURCE_FAIL'; + export function fetchStatusRequest(id, skipLoading) { return { type: STATUS_FETCH_REQUEST, @@ -84,6 +88,37 @@ export function redraft(status, raw_text) { }; }; +export const editStatus = (id, routerHistory) => (dispatch, getState) => { + let status = getState().getIn(['statuses', id]); + + if (status.get('poll')) { + status = status.set('poll', getState().getIn(['polls', status.get('poll')])); + } + + dispatch(fetchStatusSourceRequest()); + + api(getState).get(`/api/v1/statuses/${id}/source`).then(response => { + dispatch(fetchStatusSourceSuccess()); + ensureComposeIsVisible(getState, routerHistory); + dispatch(setComposeToStatus(status, response.data.text, response.data.spoiler_text)); + }).catch(error => { + dispatch(fetchStatusSourceFail(error)); + }); +}; + +export const fetchStatusSourceRequest = () => ({ + type: STATUS_FETCH_SOURCE_REQUEST, +}); + +export const fetchStatusSourceSuccess = () => ({ + type: STATUS_FETCH_SOURCE_SUCCESS, +}); + +export const fetchStatusSourceFail = error => ({ + type: STATUS_FETCH_SOURCE_FAIL, + error, +}); + export function deleteStatus(id, routerHistory, withRedraft = false) { return (dispatch, getState) => { let status = getState().getIn(['statuses', id]); diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js index 7d0588901..4b4ad8355 100644 --- a/app/javascript/mastodon/components/dropdown_menu.js +++ b/app/javascript/mastodon/components/dropdown_menu.js @@ -6,6 +6,8 @@ import Overlay from 'react-overlays/lib/Overlay'; import Motion from '../features/ui/util/optional_motion'; import spring from 'react-motion/lib/spring'; import { supportsPassiveEvents } from 'detect-passive-events'; +import classNames from 'classnames'; +import { CircularProgress } from 'mastodon/components/loading_indicator'; const listenerOptions = supportsPassiveEvents ? { passive: true } : false; let id = 0; @@ -17,13 +19,18 @@ class DropdownMenu extends React.PureComponent { }; static propTypes = { - items: PropTypes.array.isRequired, + items: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.list]).isRequired, + loading: PropTypes.bool, + scrollable: PropTypes.bool, onClose: PropTypes.func.isRequired, style: PropTypes.object, placement: PropTypes.string, arrowOffsetLeft: PropTypes.string, arrowOffsetTop: PropTypes.string, openedViaKeyboard: PropTypes.bool, + renderItem: PropTypes.func, + renderHeader: PropTypes.func, + onItemClick: PropTypes.func.isRequired, }; static defaultProps = { @@ -45,9 +52,11 @@ class DropdownMenu extends React.PureComponent { document.addEventListener('click', this.handleDocumentClick, false); document.addEventListener('keydown', this.handleKeyDown, false); document.addEventListener('touchend', this.handleDocumentClick, listenerOptions); + if (this.focusedItem && this.props.openedViaKeyboard) { this.focusedItem.focus({ preventScroll: true }); } + this.setState({ mounted: true }); } @@ -66,7 +75,7 @@ class DropdownMenu extends React.PureComponent { } handleKeyDown = e => { - const items = Array.from(this.node.getElementsByTagName('a')); + const items = Array.from(this.node.querySelectorAll('a, button')); const index = items.indexOf(document.activeElement); let element = null; @@ -109,21 +118,11 @@ class DropdownMenu extends React.PureComponent { } handleClick = e => { - const i = Number(e.currentTarget.getAttribute('data-index')); - const { action, to } = this.props.items[i]; - - this.props.onClose(); - - if (typeof action === 'function') { - e.preventDefault(); - action(e); - } else if (to) { - e.preventDefault(); - this.context.router.history.push(to); - } + const { onItemClick } = this.props; + onItemClick(e); } - renderItem (option, i) { + renderItem = (option, i) => { if (option === null) { return <li key={`sep-${i}`} className='dropdown-menu__separator' />; } @@ -140,9 +139,11 @@ class DropdownMenu extends React.PureComponent { } render () { - const { items, style, placement, arrowOffsetLeft, arrowOffsetTop } = this.props; + const { items, style, placement, arrowOffsetLeft, arrowOffsetTop, scrollable, renderHeader, loading } = this.props; const { mounted } = this.state; + let renderItem = this.props.renderItem || this.renderItem; + return ( <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}> {({ opacity, scaleX, scaleY }) => ( @@ -152,9 +153,23 @@ class DropdownMenu extends React.PureComponent { <div className={`dropdown-menu ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} ref={this.setRef}> <div className={`dropdown-menu__arrow ${placement}`} style={{ left: arrowOffsetLeft, top: arrowOffsetTop }} /> - <ul> - {items.map((option, i) => this.renderItem(option, i))} - </ul> + <div className={classNames('dropdown-menu__container', { 'dropdown-menu__container--loading': loading })}> + {loading && ( + <CircularProgress size={30} strokeWidth={3.5} /> + )} + + {!loading && renderHeader && ( + <div className='dropdown-menu__container__header'> + {renderHeader(items)} + </div> + )} + + {!loading && ( + <ul className={classNames('dropdown-menu__container__list', { 'dropdown-menu__container__list--scrollable': scrollable })}> + {items.map((option, i) => renderItem(option, i, { onClick: this.handleClick, onKeyPress: this.handleItemKeyPress }))} + </ul> + )} + </div> </div> )} </Motion> @@ -170,11 +185,14 @@ export default class Dropdown extends React.PureComponent { }; static propTypes = { - icon: PropTypes.string.isRequired, - items: PropTypes.array.isRequired, - size: PropTypes.number.isRequired, + children: PropTypes.node, + icon: PropTypes.string, + items: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.list]).isRequired, + loading: PropTypes.bool, + size: PropTypes.number, title: PropTypes.string, disabled: PropTypes.bool, + scrollable: PropTypes.bool, status: ImmutablePropTypes.map, isUserTouching: PropTypes.func, onOpen: PropTypes.func.isRequired, @@ -182,6 +200,9 @@ export default class Dropdown extends React.PureComponent { dropdownPlacement: PropTypes.string, openDropdownId: PropTypes.number, openedViaKeyboard: PropTypes.bool, + renderItem: PropTypes.func, + renderHeader: PropTypes.func, + onItemClick: PropTypes.func, }; static defaultProps = { @@ -237,17 +258,21 @@ export default class Dropdown extends React.PureComponent { } handleItemClick = e => { + const { onItemClick } = this.props; const i = Number(e.currentTarget.getAttribute('data-index')); - const { action, to } = this.props.items[i]; + const item = this.props.items[i]; this.handleClose(); - if (typeof action === 'function') { + if (typeof onItemClick === 'function') { + e.preventDefault(); + onItemClick(item, i); + } else if (item && typeof item.action === 'function') { e.preventDefault(); - action(); - } else if (to) { + item.action(); + } else if (item && item.to) { e.preventDefault(); - this.context.router.history.push(to); + this.context.router.history.push(item.to); } } @@ -265,29 +290,67 @@ export default class Dropdown extends React.PureComponent { } } + close = () => { + this.handleClose(); + } + render () { - const { icon, items, size, title, disabled, dropdownPlacement, openDropdownId, openedViaKeyboard } = this.props; + const { + icon, + items, + size, + title, + disabled, + loading, + scrollable, + dropdownPlacement, + openDropdownId, + openedViaKeyboard, + children, + renderItem, + renderHeader, + } = this.props; + const open = this.state.id === openDropdownId; + const button = children ? React.cloneElement(React.Children.only(children), { + ref: this.setTargetRef, + onClick: this.handleClick, + onMouseDown: this.handleMouseDown, + onKeyDown: this.handleButtonKeyDown, + onKeyPress: this.handleKeyPress, + }) : ( + <IconButton + icon={icon} + title={title} + active={open} + disabled={disabled} + size={size} + ref={this.setTargetRef} + onClick={this.handleClick} + onMouseDown={this.handleMouseDown} + onKeyDown={this.handleButtonKeyDown} + onKeyPress={this.handleKeyPress} + /> + ); + return ( - <div> - <IconButton - icon={icon} - title={title} - active={open} - disabled={disabled} - size={size} - ref={this.setTargetRef} - onClick={this.handleClick} - onMouseDown={this.handleMouseDown} - onKeyDown={this.handleButtonKeyDown} - onKeyPress={this.handleKeyPress} - /> + <React.Fragment> + {button} <Overlay show={open} placement={dropdownPlacement} target={this.findTarget}> - <DropdownMenu items={items} onClose={this.handleClose} openedViaKeyboard={openedViaKeyboard} /> + <DropdownMenu + items={items} + loading={loading} + scrollable={scrollable} + onClose={this.handleClose} + openedViaKeyboard={openedViaKeyboard} + renderItem={renderItem} + renderHeader={renderHeader} + onItemClick={this.handleItemClick} + /> </Overlay> - </div> + </React.Fragment> ); } diff --git a/app/javascript/mastodon/components/edited_timestamp/containers/dropdown_menu_container.js b/app/javascript/mastodon/components/edited_timestamp/containers/dropdown_menu_container.js new file mode 100644 index 000000000..e30c18372 --- /dev/null +++ b/app/javascript/mastodon/components/edited_timestamp/containers/dropdown_menu_container.js @@ -0,0 +1,27 @@ +import { connect } from 'react-redux'; +import { openDropdownMenu, closeDropdownMenu } from 'mastodon/actions/dropdown_menu'; +import { fetchHistory } from 'mastodon/actions/history'; +import DropdownMenu from 'mastodon/components/dropdown_menu'; + +const mapStateToProps = (state, { statusId }) => ({ + dropdownPlacement: state.getIn(['dropdown_menu', 'placement']), + openDropdownId: state.getIn(['dropdown_menu', 'openId']), + openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']), + items: state.getIn(['history', statusId, 'items']), + loading: state.getIn(['history', statusId, 'loading']), +}); + +const mapDispatchToProps = (dispatch, { statusId }) => ({ + + onOpen (id, onItemClick, dropdownPlacement, keyboard) { + dispatch(fetchHistory(statusId)); + dispatch(openDropdownMenu(id, dropdownPlacement, keyboard)); + }, + + onClose (id) { + dispatch(closeDropdownMenu(id)); + }, + +}); + +export default connect(mapStateToProps, mapDispatchToProps)(DropdownMenu); diff --git a/app/javascript/mastodon/components/edited_timestamp/index.js b/app/javascript/mastodon/components/edited_timestamp/index.js new file mode 100644 index 000000000..bebf93886 --- /dev/null +++ b/app/javascript/mastodon/components/edited_timestamp/index.js @@ -0,0 +1,70 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { FormattedMessage, injectIntl } from 'react-intl'; +import Icon from 'mastodon/components/icon'; +import DropdownMenu from './containers/dropdown_menu_container'; +import { connect } from 'react-redux'; +import { openModal } from 'mastodon/actions/modal'; +import RelativeTimestamp from 'mastodon/components/relative_timestamp'; +import InlineAccount from 'mastodon/components/inline_account'; + +const mapDispatchToProps = (dispatch, { statusId }) => ({ + + onItemClick (index) { + dispatch(openModal('COMPARE_HISTORY', { index, statusId })); + }, + +}); + +export default @connect(null, mapDispatchToProps) +@injectIntl +class EditedTimestamp extends React.PureComponent { + + static propTypes = { + statusId: PropTypes.string.isRequired, + timestamp: PropTypes.string.isRequired, + intl: PropTypes.object.isRequired, + onItemClick: PropTypes.func.isRequired, + }; + + handleItemClick = (item, i) => { + const { onItemClick } = this.props; + onItemClick(i); + }; + + renderHeader = items => { + return ( + <FormattedMessage id='status.edited_x_times' defaultMessage='Edited {count, plural, one {{count} time} other {{count} times}}' values={{ count: items.size - 1 }} /> + ); + } + + renderItem = (item, index, { onClick, onKeyPress }) => { + const formattedDate = <RelativeTimestamp timestamp={item.get('created_at')} short={false} />; + const formattedName = <InlineAccount accountId={item.get('account')} />; + + const label = item.get('original') ? ( + <FormattedMessage id='status.history.created' defaultMessage='{name} created {date}' values={{ name: formattedName, date: formattedDate }} /> + ) : ( + <FormattedMessage id='status.history.edited' defaultMessage='{name} edited {date}' values={{ name: formattedName, date: formattedDate }} /> + ); + + return ( + <li className='dropdown-menu__item edited-timestamp__history__item' key={item.get('created_at')}> + <button data-index={index} onClick={onClick} onKeyPress={onKeyPress}>{label}</button> + </li> + ); + } + + render () { + const { timestamp, intl, statusId } = this.props; + + return ( + <DropdownMenu statusId={statusId} renderItem={this.renderItem} scrollable renderHeader={this.renderHeader} onItemClick={this.handleItemClick}> + <button className='dropdown-menu__text-button'> + <FormattedMessage id='status.edited' defaultMessage='Edited {date}' values={{ date: intl.formatDate(timestamp, { hour12: false, month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }) }} /> <Icon id='caret-down' /> + </button> + </DropdownMenu> + ); + } + +} diff --git a/app/javascript/mastodon/components/inline_account.js b/app/javascript/mastodon/components/inline_account.js new file mode 100644 index 000000000..a1b495590 --- /dev/null +++ b/app/javascript/mastodon/components/inline_account.js @@ -0,0 +1,34 @@ +import React from 'react'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import { makeGetAccount } from 'mastodon/selectors'; +import Avatar from 'mastodon/components/avatar'; + +const makeMapStateToProps = () => { + const getAccount = makeGetAccount(); + + const mapStateToProps = (state, { accountId }) => ({ + account: getAccount(state, accountId), + }); + + return mapStateToProps; +}; + +export default @connect(makeMapStateToProps) +class InlineAccount extends React.PureComponent { + + static propTypes = { + account: ImmutablePropTypes.map.isRequired, + }; + + render () { + const { account } = this.props; + + return ( + <span className='inline-account'> + <Avatar size={13} account={account} /> <strong>{account.get('username')}</strong> + </span> + ); + } + +} diff --git a/app/javascript/mastodon/components/loading_indicator.js b/app/javascript/mastodon/components/loading_indicator.js index d6a5adb6f..59f721c50 100644 --- a/app/javascript/mastodon/components/loading_indicator.js +++ b/app/javascript/mastodon/components/loading_indicator.js @@ -1,10 +1,31 @@ import React from 'react'; -import { FormattedMessage } from 'react-intl'; +import PropTypes from 'prop-types'; + +export const CircularProgress = ({ size, strokeWidth }) => { + const viewBox = `0 0 ${size} ${size}`; + const radius = (size - strokeWidth) / 2; + + return ( + <svg width={size} heigh={size} viewBox={viewBox} className='circular-progress' role='progressbar'> + <circle + fill='none' + cx={size / 2} + cy={size / 2} + r={radius} + strokeWidth={`${strokeWidth}px`} + /> + </svg> + ); +}; + +CircularProgress.propTypes = { + size: PropTypes.number.isRequired, + strokeWidth: PropTypes.number.isRequired, +}; const LoadingIndicator = () => ( <div className='loading-indicator'> - <div className='loading-indicator__figure' /> - <FormattedMessage id='loading_indicator.label' defaultMessage='Loading...' /> + <CircularProgress size={50} strokeWidth={6} /> </div> ); diff --git a/app/javascript/mastodon/components/relative_timestamp.js b/app/javascript/mastodon/components/relative_timestamp.js index 711181dcd..512480339 100644 --- a/app/javascript/mastodon/components/relative_timestamp.js +++ b/app/javascript/mastodon/components/relative_timestamp.js @@ -5,10 +5,15 @@ import PropTypes from 'prop-types'; const messages = defineMessages({ today: { id: 'relative_time.today', defaultMessage: 'today' }, just_now: { id: 'relative_time.just_now', defaultMessage: 'now' }, + just_now_full: { id: 'relative_time.full.just_now', defaultMessage: 'just now' }, seconds: { id: 'relative_time.seconds', defaultMessage: '{number}s' }, + seconds_full: { id: 'relative_time.full.seconds', defaultMessage: '{number, plural, one {# second} other {# seconds}} ago' }, minutes: { id: 'relative_time.minutes', defaultMessage: '{number}m' }, + minutes_full: { id: 'relative_time.full.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}} ago' }, hours: { id: 'relative_time.hours', defaultMessage: '{number}h' }, + hours_full: { id: 'relative_time.full.hours', defaultMessage: '{number, plural, one {# hour} other {# hours}} ago' }, days: { id: 'relative_time.days', defaultMessage: '{number}d' }, + days_full: { id: 'relative_time.full.days', defaultMessage: '{number, plural, one {# day} other {# days}} ago' }, moments_remaining: { id: 'time_remaining.moments', defaultMessage: 'Moments remaining' }, seconds_remaining: { id: 'time_remaining.seconds', defaultMessage: '{number, plural, one {# second} other {# seconds}} left' }, minutes_remaining: { id: 'time_remaining.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}} left' }, @@ -66,7 +71,7 @@ const getUnitDelay = units => { } }; -export const timeAgoString = (intl, date, now, year, timeGiven = true) => { +export const timeAgoString = (intl, date, now, year, timeGiven, short) => { const delta = now - date.getTime(); let relativeTime; @@ -74,16 +79,16 @@ export const timeAgoString = (intl, date, now, year, timeGiven = true) => { if (delta < DAY && !timeGiven) { relativeTime = intl.formatMessage(messages.today); } else if (delta < 10 * SECOND) { - relativeTime = intl.formatMessage(messages.just_now); + relativeTime = intl.formatMessage(short ? messages.just_now : messages.just_now_full); } else if (delta < 7 * DAY) { if (delta < MINUTE) { - relativeTime = intl.formatMessage(messages.seconds, { number: Math.floor(delta / SECOND) }); + relativeTime = intl.formatMessage(short ? messages.seconds : messages.seconds_full, { number: Math.floor(delta / SECOND) }); } else if (delta < HOUR) { - relativeTime = intl.formatMessage(messages.minutes, { number: Math.floor(delta / MINUTE) }); + relativeTime = intl.formatMessage(short ? messages.minutes : messages.minutes_full, { number: Math.floor(delta / MINUTE) }); } else if (delta < DAY) { - relativeTime = intl.formatMessage(messages.hours, { number: Math.floor(delta / HOUR) }); + relativeTime = intl.formatMessage(short ? messages.hours : messages.hours_full, { number: Math.floor(delta / HOUR) }); } else { - relativeTime = intl.formatMessage(messages.days, { number: Math.floor(delta / DAY) }); + relativeTime = intl.formatMessage(short ? messages.days : messages.days_full, { number: Math.floor(delta / DAY) }); } } else if (date.getFullYear() === year) { relativeTime = intl.formatDate(date, shortDateFormatOptions); @@ -124,6 +129,7 @@ class RelativeTimestamp extends React.Component { timestamp: PropTypes.string.isRequired, year: PropTypes.number.isRequired, futureDate: PropTypes.bool, + short: PropTypes.bool, }; state = { @@ -132,6 +138,7 @@ class RelativeTimestamp extends React.Component { static defaultProps = { year: (new Date()).getFullYear(), + short: true, }; shouldComponentUpdate (nextProps, nextState) { @@ -176,11 +183,11 @@ class RelativeTimestamp extends React.Component { } render () { - const { timestamp, intl, year, futureDate } = this.props; + const { timestamp, intl, year, futureDate, short } = this.props; const timeGiven = timestamp.includes('T'); const date = new Date(timestamp); - const relativeTime = futureDate ? timeRemainingString(intl, date, this.state.now, timeGiven) : timeAgoString(intl, date, this.state.now, year, timeGiven); + const relativeTime = futureDate ? timeRemainingString(intl, date, this.state.now, timeGiven) : timeAgoString(intl, date, this.state.now, year, timeGiven, short); return ( <time dateTime={timestamp} title={intl.formatDate(date, dateFormatOptions)}> diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 4e19cc0e4..e3a7d763f 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -12,6 +12,7 @@ import classNames from 'classnames'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, + edit: { id: 'status.edit', defaultMessage: 'Edit' }, direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' }, mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' }, mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' }, @@ -137,6 +138,10 @@ class StatusActionBar extends ImmutablePureComponent { this.props.onDelete(this.props.status, this.context.router.history, true); } + handleEditClick = () => { + this.props.onEdit(this.props.status, this.context.router.history); + } + handlePinClick = () => { this.props.onPin(this.props.status); } @@ -255,6 +260,7 @@ class StatusActionBar extends ImmutablePureComponent { } if (writtenByMe) { + // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js index 9abdec138..ef0aca13a 100644 --- a/app/javascript/mastodon/containers/status_container.js +++ b/app/javascript/mastodon/containers/status_container.js @@ -24,6 +24,7 @@ import { hideStatus, revealStatus, toggleStatusCollapse, + editStatus, } from '../actions/statuses'; import { unmuteAccount, @@ -142,6 +143,10 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } }, + onEdit (status, history) { + dispatch(editStatus(status.get('id'), history)); + }, + onDirect (account, router) { dispatch(directCompose(account, router)); }, diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index 647d0fba2..26232247d 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -29,6 +29,7 @@ const messages = defineMessages({ spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' }, publish: { id: 'compose_form.publish', defaultMessage: 'Toot' }, publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' }, + saveChanges: { id: 'compose_form.save_changes', defaultMessage: 'Save changes' }, }); export default @injectIntl @@ -50,6 +51,7 @@ class ComposeForm extends ImmutablePureComponent { preselectDate: PropTypes.instanceOf(Date), isSubmitting: PropTypes.bool, isChangingUpload: PropTypes.bool, + isEditing: PropTypes.bool, isUploading: PropTypes.bool, onChange: PropTypes.func.isRequired, onSubmit: PropTypes.func.isRequired, @@ -200,7 +202,9 @@ class ComposeForm extends ImmutablePureComponent { const disabled = this.props.isSubmitting; let publishText = ''; - if (this.props.privacy === 'private' || this.props.privacy === 'direct') { + if (this.props.isEditing) { + publishText = intl.formatMessage(messages.saveChanges); + } else if (this.props.privacy === 'private' || this.props.privacy === 'direct') { publishText = <span className='compose-form__publish-private'><Icon id='lock' /> {intl.formatMessage(messages.publish)}</span>; } else { publishText = this.props.privacy !== 'unlisted' ? intl.formatMessage(messages.publishLoud, { publish: intl.formatMessage(messages.publish) }) : intl.formatMessage(messages.publish); @@ -256,7 +260,7 @@ class ComposeForm extends ImmutablePureComponent { <div className='compose-form__buttons'> <UploadButtonContainer /> <PollButtonContainer /> - <PrivacyDropdownContainer /> + <PrivacyDropdownContainer disabled={this.props.isEditing} /> <SpoilerButtonContainer /> </div> <div className='character-counter__wrapper'><CharacterCounter max={maxChars} text={this.getFulltextForCharacterCounting()} /></div> diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js index df59f46b3..599467cdb 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js @@ -159,6 +159,7 @@ class PrivacyDropdown extends React.PureComponent { onChange: PropTypes.func.isRequired, noDirect: PropTypes.bool, container: PropTypes.func, + disabled: PropTypes.bool, intl: PropTypes.object.isRequired, }; @@ -247,7 +248,7 @@ class PrivacyDropdown extends React.PureComponent { } render () { - const { value, container, intl } = this.props; + const { value, container, disabled, intl } = this.props; const { open, placement } = this.state; const valueOption = this.options.find(item => item.value === value); @@ -267,6 +268,7 @@ class PrivacyDropdown extends React.PureComponent { onMouseDown={this.handleMouseDown} onKeyDown={this.handleButtonKeyDown} style={{ height: null, lineHeight: '27px' }} + disabled={disabled} /> </div> diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js index b9f0fbe3a..1289d6b94 100644 --- a/app/javascript/mastodon/features/compose/components/upload.js +++ b/app/javascript/mastodon/features/compose/components/upload.js @@ -18,6 +18,7 @@ export default class Upload extends ImmutablePureComponent { media: ImmutablePropTypes.map.isRequired, onUndo: PropTypes.func.isRequired, onOpenFocalPoint: PropTypes.func.isRequired, + isEditingStatus: PropTypes.func.isRequired, }; handleUndoClick = e => { @@ -31,7 +32,7 @@ export default class Upload extends ImmutablePureComponent { } render () { - const { media } = this.props; + const { media, isEditingStatus } = this.props; const focusX = media.getIn(['meta', 'focus', 'x']); const focusY = media.getIn(['meta', 'focus', 'y']); const x = ((focusX / 2) + .5) * 100; @@ -44,7 +45,7 @@ export default class Upload extends ImmutablePureComponent { <div className='compose-form__upload-thumbnail' style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}> <div className={classNames('compose-form__upload__actions', { active: true })}> <button className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button> - <button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button> + {!isEditingStatus && (<button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>)} </div> </div> )} diff --git a/app/javascript/mastodon/features/compose/containers/compose_form_container.js b/app/javascript/mastodon/features/compose/containers/compose_form_container.js index c44850294..1be7633cc 100644 --- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js +++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js @@ -21,6 +21,7 @@ const mapStateToProps = state => ({ caretPosition: state.getIn(['compose', 'caretPosition']), preselectDate: state.getIn(['compose', 'preselectDate']), isSubmitting: state.getIn(['compose', 'is_submitting']), + isEditing: state.getIn(['compose', 'id']) !== null, isChangingUpload: state.getIn(['compose', 'is_changing_upload']), isUploading: state.getIn(['compose', 'is_uploading']), showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']), diff --git a/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js b/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js index 5eb1eb72a..a1302b2d4 100644 --- a/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js +++ b/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js @@ -6,9 +6,20 @@ import ReplyIndicator from '../components/reply_indicator'; const makeMapStateToProps = () => { const getStatus = makeGetStatus(); - const mapStateToProps = state => ({ - status: getStatus(state, { id: state.getIn(['compose', 'in_reply_to']) }), - }); + const mapStateToProps = state => { + let statusId = state.getIn(['compose', 'id'], null); + let editing = true; + + if (statusId === null) { + statusId = state.getIn(['compose', 'in_reply_to']); + editing = false; + } + + return { + status: getStatus(state, { id: statusId }), + editing, + }; + }; return mapStateToProps; }; diff --git a/app/javascript/mastodon/features/compose/containers/upload_container.js b/app/javascript/mastodon/features/compose/containers/upload_container.js index 05cd2ecc1..1108aec30 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_container.js @@ -5,6 +5,7 @@ import { submitCompose } from '../../../actions/compose'; const mapStateToProps = (state, { id }) => ({ media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id), + isEditingStatus: state.getIn(['compose', 'id']) !== null, }); const mapDispatchToProps = dispatch => ({ diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index 005f5afda..ada8b6e4a 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -153,6 +153,17 @@ export default class ColumnSettings extends React.PureComponent { <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'status']} onChange={onChange} label={soundStr} /> </div> </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> + + <div className='column-settings__row'> + <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'update']} onChange={onChange} label={alertStr} /> + {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'update']} onChange={this.onPushChange} label={pushStr} />} + <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'update']} onChange={onChange} label={showStr} /> + <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'update']} 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 f9f8a87f2..cd471852b 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -19,6 +19,7 @@ const messages = defineMessages({ poll: { id: 'notification.poll', defaultMessage: 'A poll you have voted in has ended' }, 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' }, }); const notificationForScreenReader = (intl, message, timestamp) => { @@ -273,6 +274,38 @@ class Notification extends ImmutablePureComponent { ); } + renderUpdate (notification, link) { + const { intl, unread } = this.props; + + return ( + <HotKeys handlers={this.getHandlers()}> + <div className={classNames('notification notification-update focusable', { unread })} tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.update, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}> + <div className='notification__message'> + <div className='notification__favourite-icon-wrapper'> + <Icon id='pencil' fixedWidth /> + </div> + + <span title={notification.get('created_at')}> + <FormattedMessage id='notification.update' defaultMessage='{name} edited a post' values={{ name: link }} /> + </span> + </div> + + <StatusContainer + id={notification.get('status')} + account={notification.get('account')} + muted + withDismiss + hidden={this.props.hidden} + getScrollPosition={this.props.getScrollPosition} + updateScrollBottom={this.props.updateScrollBottom} + cachedMediaWidth={this.props.cachedMediaWidth} + cacheMediaWidth={this.props.cacheMediaWidth} + /> + </div> + </HotKeys> + ); + } + renderPoll (notification, account) { const { intl, unread } = this.props; const ownPoll = me === account.get('id'); @@ -330,6 +363,8 @@ class Notification extends ImmutablePureComponent { return this.renderReblog(notification, link); case 'status': return this.renderStatus(notification, link); + case 'update': + return this.renderUpdate(notification, link); case 'poll': return this.renderPoll(notification, account); } diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index a15a4d567..3f3ec0e71 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -11,6 +11,7 @@ import classNames from 'classnames'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' }, + edit: { id: 'status.edit', defaultMessage: 'Edit' }, direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' }, mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' }, reply: { id: 'status.reply', defaultMessage: 'Reply' }, @@ -59,6 +60,7 @@ class ActionBar extends React.PureComponent { onFavourite: PropTypes.func.isRequired, onBookmark: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, + onEdit: PropTypes.func.isRequired, onDirect: PropTypes.func.isRequired, onMention: PropTypes.func.isRequired, onMute: PropTypes.func, @@ -98,6 +100,10 @@ class ActionBar extends React.PureComponent { this.props.onDelete(this.props.status, this.context.router.history, true); } + handleEditClick = () => { + this.props.onEdit(this.props.status, this.context.router.history); + } + handleDirectClick = () => { this.props.onDirect(this.props.status.get('account'), this.context.router.history); } @@ -209,6 +215,7 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); menu.push(null); + // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index ee4a6b989..c99e01f73 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -6,7 +6,7 @@ import DisplayName from '../../../components/display_name'; import StatusContent from '../../../components/status_content'; import MediaGallery from '../../../components/media_gallery'; import { Link } from 'react-router-dom'; -import { injectIntl, defineMessages, FormattedDate, FormattedMessage } from 'react-intl'; +import { injectIntl, defineMessages, FormattedDate } from 'react-intl'; import Card from './card'; import ImmutablePureComponent from 'react-immutable-pure-component'; import Video from '../../video'; @@ -16,6 +16,7 @@ import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; import AnimatedNumber from 'mastodon/components/animated_number'; import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; +import EditedTimestamp from 'mastodon/components/edited_timestamp'; const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, @@ -242,7 +243,7 @@ class DetailedStatus extends ImmutablePureComponent { edited = ( <React.Fragment> <React.Fragment> · </React.Fragment> - <FormattedMessage id='status.edited' defaultMessage='Edited {date}' values={{ date: intl.formatDate(status.get('edited_at'), { hour12: false, month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }) }} /> + <EditedTimestamp statusId={status.get('id')} timestamp={status.get('edited_at')} /> </React.Fragment> ); } diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index f342a3641..4d7f24834 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -29,6 +29,7 @@ import { muteStatus, unmuteStatus, deleteStatus, + editStatus, hideStatus, revealStatus, } from '../../actions/statuses'; @@ -273,6 +274,10 @@ class Status extends ImmutablePureComponent { } } + handleEditClick = (status, history) => { + this.props.dispatch(editStatus(status.get('id'), history)); + } + handleDirectClick = (account, router) => { this.props.dispatch(directCompose(account, router)); } @@ -567,6 +572,7 @@ class Status extends ImmutablePureComponent { onReblog={this.handleReblogClick} onBookmark={this.handleBookmarkClick} onDelete={this.handleDeleteClick} + onEdit={this.handleEditClick} onDirect={this.handleDirectClick} onMention={this.handleMentionClick} onMute={this.handleMuteClick} diff --git a/app/javascript/mastodon/features/ui/components/compare_history_modal.js b/app/javascript/mastodon/features/ui/components/compare_history_modal.js new file mode 100644 index 000000000..40cfba335 --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/compare_history_modal.js @@ -0,0 +1,79 @@ +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 { closeModal } from 'mastodon/actions/modal'; +import emojify from 'mastodon/features/emoji/emoji'; +import escapeTextContentForBrowser from 'escape-html'; +import InlineAccount from 'mastodon/components/inline_account'; +import IconButton from 'mastodon/components/icon_button'; +import RelativeTimestamp from 'mastodon/components/relative_timestamp'; + +const mapStateToProps = (state, { statusId }) => ({ + versions: state.getIn(['history', statusId, 'items']), +}); + +const mapDispatchToProps = dispatch => ({ + + onClose() { + dispatch(closeModal()); + }, + +}); + +export default @connect(mapStateToProps, mapDispatchToProps) +class CompareHistoryModal extends React.PureComponent { + + static propTypes = { + onClose: PropTypes.func.isRequired, + index: PropTypes.number.isRequired, + statusId: PropTypes.string.isRequired, + versions: ImmutablePropTypes.list.isRequired, + }; + + render () { + const { index, versions, onClose } = this.props; + const currentVersion = versions.get(index); + + const emojiMap = currentVersion.get('emojis').reduce((obj, emoji) => { + obj[`:${emoji.get('shortcode')}:`] = emoji.toJS(); + return obj; + }, {}); + + const content = { __html: emojify(currentVersion.get('content'), emojiMap) }; + const spoilerContent = { __html: emojify(escapeTextContentForBrowser(currentVersion.get('spoiler_text')), emojiMap) }; + + const formattedDate = <RelativeTimestamp timestamp={currentVersion.get('created_at')} short={false} />; + const formattedName = <InlineAccount accountId={currentVersion.get('account')} />; + + const label = currentVersion.get('original') ? ( + <FormattedMessage id='status.history.created' defaultMessage='{name} created {date}' values={{ name: formattedName, date: formattedDate }} /> + ) : ( + <FormattedMessage id='status.history.edited' defaultMessage='{name} edited {date}' values={{ name: formattedName, date: formattedDate }} /> + ); + + return ( + <div className='modal-root__modal compare-history-modal'> + <div className='report-modal__target'> + <IconButton className='report-modal__close' icon='times' onClick={onClose} size={20} /> + {label} + </div> + + <div className='compare-history-modal__container'> + <div className='status__content'> + {currentVersion.get('spoiler_text').length > 0 && ( + <React.Fragment> + <div className='translate' dangerouslySetInnerHTML={spoilerContent} /> + <hr /> + </React.Fragment> + )} + + <div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} /> + </div> + </div> + </div> + ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 377cccda5..7b14fe5ca 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -19,7 +19,8 @@ import { EmbedModal, ListEditor, ListAdder, -} from '../../../features/ui/util/async-components'; + CompareHistoryModal, +} from 'mastodon/features/ui/util/async-components'; const MODAL_COMPONENTS = { 'MEDIA': () => Promise.resolve({ default: MediaModal }), @@ -34,7 +35,8 @@ const MODAL_COMPONENTS = { 'EMBED': EmbedModal, 'LIST_EDITOR': ListEditor, 'FOCAL_POINT': () => Promise.resolve({ default: FocalPointModal }), - 'LIST_ADDER':ListAdder, + 'LIST_ADDER': ListAdder, + 'COMPARE_HISTORY': CompareHistoryModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index aa90b226a..5349bd656 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -157,3 +157,7 @@ export function Directory () { export function FollowRecommendations () { return import(/* webpackChunkName: "features/follow_recommendations" */'../../follow_recommendations'); } + +export function CompareHistoryModal () { + return import(/*webpackChunkName: "modals/compare_history_modal" */'../components/compare_history_modal'); +} diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index eca4765c4..2675da68c 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 0992394a2..d244ab5fc 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -33,8 +33,8 @@ "account.mute_notifications": "كَتم الإشعارات من @{name}", "account.muted": "مَكتوم", "account.never_active": "أبدًا", - "account.posts": "تبويقات", - "account.posts_with_replies": "التَّبويقات والرُدود", + "account.posts": "منشورات", + "account.posts_with_replies": "المنشورات والرُدود", "account.report": "الإبلاغ عن @{name}", "account.requested": "في اِنتظر القُبول. اِنقُر لإلغاء طلب المُتابعة", "account.share": "مُشاركة الملف الشخصي لـ @{name}", @@ -46,19 +46,20 @@ "account.unfollow": "إلغاء المُتابعة", "account.unmute": "إلغاء الكَتم عن @{name}", "account.unmute_notifications": "إلغاء كَتم الإشعارات عن @{name}", - "account_note.placeholder": "اِنقُر لإضافة مُلاحظة", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "account_note.placeholder": "اضغط لإضافة مُلاحظة", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "المعدل", + "admin.dashboard.retention.cohort": "شهر التسجيل", + "admin.dashboard.retention.cohort_size": "المستخدمون الجدد", "alert.rate_limited.message": "يُرجى إعادة المحاولة بعد {retry_time, time, medium}.", "alert.rate_limited.title": "المُعَدَّل مَحدود", "alert.unexpected.message": "لقد طرأ خطأ غير متوقّع.", "alert.unexpected.title": "المعذرة!", "announcement.announcement": "إعلان", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(غير معالَج)", "autosuggest_hashtag.per_week": "{count} في الأسبوع", - "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبِلَة", + "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "bundle_column_error.body": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_column_error.retry": "إعادة المُحاولة", "bundle_column_error.title": "خطأ في الشبكة", @@ -66,18 +67,18 @@ "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", "column.blocks": "المُستَخدِمون المَحظورون", - "column.bookmarks": "العَلاماتُ المَرجعيَّة", - "column.community": "الخَطُّ الزَّمَنِيُّ المَحَلِّيّ", - "column.direct": "الرَّسَائِلُ المُبَاشِرَة", - "column.directory": "تَصَفُّحُ المَلَفَّاتِ الشَّخصِيَّة", + "column.bookmarks": "الفواصل المرجعية", + "column.community": "الخيط الزمني المحلي", + "column.direct": "الرسائل المباشرة", + "column.directory": "تَصَفُّحُ المَلفات الشخصية", "column.domain_blocks": "النِّطاقَاتُ المَحظُورَة", "column.favourites": "المُفَضَّلَة", "column.follow_requests": "طَلَبَاتُ المُتَابَعَة", - "column.home": "الرَّئِيسَة", - "column.lists": "القَوائِم", + "column.home": "الرئيسية", + "column.lists": "القوائم", "column.mutes": "المُستَخدِمون المَكتومون", "column.notifications": "الإشعارَات", - "column.pins": "التَّبويقاتُ المُثَبَّتَة", + "column.pins": "المنشورات المُثَبَّتَة", "column.public": "الخَطُّ الزَّمَنِيُّ المُوَحَّد", "column_back_button.label": "العودة", "column_header.hide_settings": "إخفاء الإعدادات", @@ -86,13 +87,13 @@ "column_header.pin": "تثبيت", "column_header.show_settings": "إظهار الإعدادات", "column_header.unpin": "إلغاء التَّثبيت", - "column_subheading.settings": "الإعدَادَات", + "column_subheading.settings": "الإعدادات", "community.column_settings.local_only": "المحلي فقط", "community.column_settings.media_only": "الوسائط فقط", "community.column_settings.remote_only": "عن بُعد فقط", "compose_form.direct_message_warning": "سوف تُرسَل هذه التَّبويقة فقط للمُستَخدِمين المَذكورين.", "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد", - "compose_form.hashtag_warning": "لن تُدرَج هذه التبويقة تحت أي وسم بما أنَّها غير مُدرَجة. فقط التبويقات العامة يُمكن البحث عنها بواسطة الوسم.", + "compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.", "compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).", "compose_form.lock_disclaimer.lock": "مُقفَل", "compose_form.placeholder": "فِيمَ تُفكِّر؟", @@ -104,10 +105,11 @@ "compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط", "compose_form.publish": "تبويق", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "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 {لم تَتِمّ الإشارة إلى الوسائط كمُحتويات حسّاسة}}", - "compose_form.spoiler.marked": "إنّ النص مخفي وراء تحذير", + "compose_form.spoiler.marked": "إزالة تحذير المحتوى", "compose_form.spoiler.unmarked": "إنَّ النص غير مخفي", "compose_form.spoiler_placeholder": "اُكتُب تحذيركَ هُنا", "confirmation_modal.cancel": "إلغاء", @@ -118,8 +120,8 @@ "confirmations.delete.message": "هل أنتَ مُتأكدٌ أنك تُريدُ حَذفَ هذا المنشور؟", "confirmations.delete_list.confirm": "حذف", "confirmations.delete_list.message": "هل أنتَ مُتأكدٌ أنكَ تُريدُ حَذفَ هذِهِ القائمةَ بشكلٍ دائم؟", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "تجاهل", + "confirmations.discard_edit_media.message": "لديك تغييرات غير محفوظة لوصف الوسائط أو معاينتها، تجاهلها على أي حال؟", "confirmations.domain_block.confirm": "حظر اِسم النِّطاق بشكلٍ كامل", "confirmations.domain_block.message": "متأكد من أنك تود حظر اسم النطاق {domain} بالكامل ؟ في غالب الأحيان يُستَحسَن كتم أو حظر بعض الحسابات بدلا من حظر نطاق بالكامل.\nلن تتمكن مِن رؤية محتوى هذا النطاق لا على خيوطك العمومية و لا في إشعاراتك. سوف يتم كذلك إزالة كافة متابعيك المنتمين إلى هذا النطاق.", "confirmations.logout.confirm": "خروج", @@ -158,21 +160,21 @@ "emoji_button.symbols": "رموز", "emoji_button.travel": "الأماكن والسفر", "empty_column.account_suspended": "حساب معلق", - "empty_column.account_timeline": "ليس هناك تبويقات!", + "empty_column.account_timeline": "لا توجد منشورات هنا!", "empty_column.account_unavailable": "الملف التعريفي غير متوفر", "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.", - "empty_column.bookmarked_statuses": "ليس لديك أية تبويقات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.", + "empty_column.bookmarked_statuses": "ليس لديك أية منشورات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.", "empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!", "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.", "empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.", - "empty_column.favourited_statuses": "ليس لديك أية تبويقات مفضلة بعد. عندما ستقوم بالإعجاب بواحد، سيظهر هنا.", - "empty_column.favourites": "لم يقم أي أحد بالإعجاب بهذا التبويق بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", + "empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.", + "empty_column.favourites": "لم يقم أي أحد بالإعجاب بهذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "empty_column.follow_recommendations": "يبدو أنه لا يمكن إنشاء أي اقتراحات لك. يمكنك البحث عن أشخاص قد تعرفهم أو استكشاف الوسوم الرائجة.", "empty_column.follow_requests": "ليس عندك أي طلب للمتابعة بعد. سوف تظهر طلباتك هنا إن قمت بتلقي البعض منها.", "empty_column.hashtag": "ليس هناك بعدُ أي محتوى ذو علاقة بهذا الوسم.", "empty_column.home": "إنّ الخيط الزمني لصفحتك الرئيسية فارغ. قم بزيارة {public} أو استخدم حقل البحث لكي تكتشف مستخدمين آخرين.", "empty_column.home.suggestions": "شاهد بعض الاقتراحات", - "empty_column.list": "هذه القائمة فارغة مؤقتا و لكن سوف تمتلئ تدريجيا عندما يبدأ الأعضاء المُنتَمين إليها بنشر تبويقات.", + "empty_column.list": "هذه القائمة فارغة مؤقتا و لكن سوف تمتلئ تدريجيا عندما يبدأ الأعضاء المُنتَمين إليها بنشر منشورات.", "empty_column.lists": "ليس عندك أية قائمة بعد. سوف تظهر قائمتك هنا إن قمت بإنشاء واحدة.", "empty_column.mutes": "لم تقم بكتم أي مستخدم بعد.", "empty_column.notifications": "لم تتلق أي إشعار بعدُ. تفاعل مع المستخدمين الآخرين لإنشاء محادثة.", @@ -185,7 +187,7 @@ "errors.unexpected_crash.report_issue": "الإبلاغ عن خلل", "follow_recommendations.done": "تم", "follow_recommendations.heading": "تابع الأشخاص الذين ترغب في رؤية منشوراتهم! إليك بعض الاقتراحات.", - "follow_recommendations.lead": "ستظهر المنشورات من الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!", + "follow_recommendations.lead": "ستظهر منشورات الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!", "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "على الرغم من أن حسابك غير مقفل، فإن موظفين الـ{domain} ظنوا أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", @@ -237,7 +239,7 @@ "keyboard_shortcuts.my_profile": "لفتح ملفك التعريفي", "keyboard_shortcuts.notifications": "لفتح عمود الإشعارات", "keyboard_shortcuts.open_media": "لفتح الوسائط", - "keyboard_shortcuts.pinned": "لفتح قائمة التبويقات المدبسة", + "keyboard_shortcuts.pinned": "لفتح قائمة المنشورات المثبتة", "keyboard_shortcuts.profile": "لفتح الملف التعريفي للناشر", "keyboard_shortcuts.reply": "للردّ", "keyboard_shortcuts.requests": "لفتح قائمة طلبات المتابعة", @@ -294,7 +296,7 @@ "navigation_bar.logout": "خروج", "navigation_bar.mutes": "الحسابات المكتومة", "navigation_bar.personal": "شخصي", - "navigation_bar.pins": "التبويقات المثبتة", + "navigation_bar.pins": "المنشورات المُثَبَّتَة", "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.security": "الأمان", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "المُفَضَّلة:", "notifications.column_settings.filter_bar.advanced": "اعرض كافة الفئات", "notifications.column_settings.filter_bar.category": "شريط الفلترة السريعة", - "notifications.column_settings.filter_bar.show": "اظهِره", + "notifications.column_settings.filter_bar.show_bar": "إظهار شريط التصفية", "notifications.column_settings.follow": "متابعُون جُدُد:", "notifications.column_settings.follow_request": "الطلبات الجديد لِمتابَعتك:", "notifications.column_settings.mention": "الإشارات:", @@ -321,8 +323,9 @@ "notifications.column_settings.reblog": "الترقيّات:", "notifications.column_settings.show": "اعرِضها في عمود", "notifications.column_settings.sound": "أصدر صوتا", - "notifications.column_settings.status": "تبويقات جديدة:", - "notifications.column_settings.unread_markers.category": "علامات إشعار غير مقروءة", + "notifications.column_settings.status": "منشورات جديدة:", + "notifications.column_settings.unread_notifications.category": "إشعارات غير مقروءة", + "notifications.column_settings.unread_notifications.highlight": "علّم الإشعارات غير المقرؤة", "notifications.filter.all": "الكل", "notifications.filter.boosts": "الترقيات", "notifications.filter.favourites": "المفضلة", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# صوت} other {# أصوات}}", "poll.vote": "صَوّت", "poll.voted": "لقد صوّتت على هذه الإجابة", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# صوت} other {# أصوات}}", "poll_button.add_poll": "إضافة استطلاع للرأي", "poll_button.remove_poll": "إزالة استطلاع الرأي", "privacy.change": "اضبط خصوصية المنشور", @@ -362,12 +365,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.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.forward": "التحويل إلى {target}", "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟", "report.hint": "سوف يتم إرسال التقرير إلى المُشرِفين على خادومكم. بإمكانكم الإدلاء بشرح عن سبب الإبلاغ عن الحساب أسفله:", @@ -383,8 +394,8 @@ "search_popout.tips.user": "مستخدِم", "search_results.accounts": "أشخاص", "search_results.hashtags": "الوُسوم", - "search_results.statuses": "التبويقات", - "search_results.statuses_fts_disabled": "البحث في التبويقات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", + "search_results.statuses": "المنشورات", + "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", "status.admin_account": "افتح الواجهة الإدارية لـ @{name}", "status.admin_status": "افتح هذا المنشور على واجهة الإشراف", @@ -396,9 +407,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.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", "status.filtered": "مُصفّى", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "حمّل المزيد", "status.media_hidden": "الصورة مستترة", "status.mention": "أذكُر @{name}", @@ -443,7 +459,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} من الخوادم الأخرى لا يتم عرضها.", "timeline_hint.resources.followers": "المتابِعون", "timeline_hint.resources.follows": "المتابَعون", - "timeline_hint.resources.statuses": "التبويقات القديمة", + "timeline_hint.resources.statuses": "المنشورات القديمة", "trends.counter_by_accounts": "{count,plural,zero{} one{{counter} شخص} two{{counter} شخصين} few{{counter} أشخاص } many{{counter} شخص} other{{counter} شخص}}", "trends.trending_now": "المتداولة الآن", "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.", @@ -462,7 +478,7 @@ "upload_form.video_description": "وصف للمعاقين بصريا أو لِذي قِصر السمع", "upload_modal.analyzing_picture": "جارٍ فحص الصورة…", "upload_modal.apply": "طبّق", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "جارٍ التطبيق…", "upload_modal.choose_image": "اختر صورة", "upload_modal.description_placeholder": "نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق", "upload_modal.detect_text": "اكتشف النص مِن الصورة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 89a13246c..d4c4f84b0 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -47,16 +47,17 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "admin.dashboard.retention.cohort_size": "Usuarios nuevos", + "alert.rate_limited.message": "Volvi tentalo dempués de la hora: {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "Asocedió un fallu inesperáu.", "alert.unexpected.title": "¡Meca!", "announcement.announcement": "Anunciu", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(ensin procesar)", "autosuggest_hashtag.per_week": "{count} per selmana", "boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada", "bundle_column_error.body": "Asocedió daqué malo mentanto se cargaba esti componente.", @@ -91,7 +92,7 @@ "community.column_settings.media_only": "Namái multimedia", "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Esti barritu namái va unviase a los usuarios mentaos.", - "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.direct_message_warning_learn_more": "Saber más", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Barritar", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -163,7 +165,7 @@ "empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nunengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", + "empty_column.direct": "Entá nun tienes nuengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", @@ -177,7 +179,7 @@ "empty_column.mutes": "Entá nun silenciesti a nunengún usuariu.", "empty_column.notifications": "Entá nun tienes nunengún avisu. Interactúa con otros p'aniciar la conversación.", "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto", - "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun pudo amosase correutamente.", + "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.", "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Amosar toles estayes", "notifications.column_settings.filter_bar.category": "Barra de peñera rápida", - "notifications.column_settings.filter_bar.show": "Amosar", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Siguidores nuevos:", "notifications.column_settings.follow_request": "Solicitúes de siguimientu nueves:", "notifications.column_settings.mention": "Menciones:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Amosar en columna", "notifications.column_settings.sound": "Reproducir un soníu", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Too", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -336,8 +339,8 @@ "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", - "notifications_permission_banner.enable": "Enable desktop notifications", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.enable": "Activar los avisos d'escritoriu", + "notifications_permission_banner.how_to_control": "Pa recibir avisos cuando Mastodon nun tea abiertu, activa los avisos del escritoriu. Pues controlar al milímetru qué tipu d'interaiciones xeneren avisos namás que s'activen, pente'l botón {icon} d'arriba.", "notifications_permission_banner.title": "Never miss a thing", "picture_in_picture.restore": "Put it back", "poll.closed": "Acabó", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tamos tresnando'l feed d'Aniciu!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "agora", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "güei", "reply_indicator.cancel": "Encaboxar", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "L'informe va unviase a los llendadores del to sirvidor. Embaxo, pues desplicar por qué informes d'esta cuenta:", @@ -396,9 +407,14 @@ "status.delete": "Desaniciar", "status.detailed_status": "Detailed conversation view", "status.direct": "Unviar un mensaxe direutu a @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Empotrar", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Cargar más", "status.media_hidden": "Multimedia anubrida", "status.mention": "Mentar a @{name}", @@ -408,7 +424,7 @@ "status.open": "Espander esti estáu", "status.pin": "Fixar nel perfil", "status.pinned": "Barritu fixáu", - "status.read_more": "Read more", + "status.read_more": "Lleer más", "status.reblog": "Compartir", "status.reblog_private": "Compartir cola audiencia orixinal", "status.reblogged_by": "{name} compartió", @@ -437,7 +453,7 @@ "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {Queda # día} other {Queden # díes}}", "time_remaining.hours": "{number, plural, one {# hora restante} other {# hores restantes}}", - "time_remaining.minutes": "{number, plural, one {# minutu restante} other {# minutos restantes}}", + "time_remaining.minutes": "{number, plural, one {Queda # minutu} other {Queden # minutos}}", "time_remaining.moments": "Moments remaining", "time_remaining.seconds": "{number, plural, one {# segundu restante} other {# segundos restantes}}", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", @@ -465,7 +481,7 @@ "upload_modal.applying": "Applying…", "upload_modal.choose_image": "Choose image", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", - "upload_modal.detect_text": "Deteutar el testu de la semeya", + "upload_modal.detect_text": "Detectar el testu de la semeya", "upload_modal.edit_media": "Edición", "upload_modal.hint": "Calca o arrastra'l círculu de la previsualización pa escoyer el puntu d'enfoque que va amosase siempres en toles miniatures.", "upload_modal.preparing_ocr": "Preparing OCR…", @@ -477,8 +493,8 @@ "video.expand": "Espander el videu", "video.fullscreen": "Pantalla completa", "video.hide": "Anubrir el videu", - "video.mute": "Silenciar el soníu", + "video.mute": "Desactivar el soníu", "video.pause": "Posar", "video.play": "Reproducir", - "video.unmute": "Unmute sound" + "video.unmute": "Activar el soníu" } diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 8e3848f54..02e37c4c7 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -47,7 +47,8 @@ "account.unmute": "Раззаглушаване на @{name}", "account.unmute_notifications": "Раззаглушаване на известия от @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Промяна на анкетата, за да се позволи един възможен избор", "compose_form.publish": "Раздумай", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "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 {Мултимедиите не са маркирани като деликатни}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Предпочитани:", "notifications.column_settings.filter_bar.advanced": "Показване на всички категории", "notifications.column_settings.filter_bar.category": "Лента за бърз филтър", - "notifications.column_settings.filter_bar.show": "Показване", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Нови последователи:", "notifications.column_settings.follow_request": "Нови заявки за последване:", "notifications.column_settings.mention": "Споменавания:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Покажи в колона", "notifications.column_settings.sound": "Пускане на звук", "notifications.column_settings.status": "Нови публикации:", - "notifications.column_settings.unread_markers.category": "отметки за непрочетени известия", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Всичко", "notifications.filter.boosts": "Споделяния", "notifications.filter.favourites": "Любими", @@ -362,12 +365,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.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.forward": "Препращане към {target}", "report.forward_hint": "Акаунтът е от друг сървър. Изпращане на анонимно копие на доклада и там?", "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,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.embed": "Вграждане", "status.favourite": "Предпочитани", "status.filtered": "Филтрирано", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Зареждане на още", "status.media_hidden": "Мултимедията е скрита", "status.mention": "Споменаване", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index f28e8b110..ec034b002 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -47,7 +47,8 @@ "account.unmute": "@{name} র কার্যকলাপ আবার দেখুন", "account.unmute_notifications": "@{name} র প্রজ্ঞাপন দেখুন", "account_note.placeholder": "নোট যোগ করতে ক্লিক করুন", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "একটি একক পছন্দের অনুমতি দেওয়ার জন্য পোল পরিবর্তন করুন", "compose_form.publish": "টুট", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করতে", "compose_form.sensitive.marked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়েছে", "compose_form.sensitive.unmarked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়নি", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "পছন্দের:", "notifications.column_settings.filter_bar.advanced": "সব শ্রেণীগুলো দেখানো", "notifications.column_settings.filter_bar.category": "সংক্ষিপ্ত ছাঁকনি অংশ", - "notifications.column_settings.filter_bar.show": "দেখানো", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "নতুন অনুসরণকারীরা:", "notifications.column_settings.follow_request": "অনুসরণের অনুরোধগুলি:", "notifications.column_settings.mention": "প্রজ্ঞাপনগুলো:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "কলামে দেখানো", "notifications.column_settings.sound": "শব্দ বাজানো", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "সব", "notifications.filter.boosts": "সমর্থনগুলো", "notifications.filter.favourites": "পছন্দের গুলো", @@ -362,12 +365,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.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.forward": "এটা আরো পাঠান {target} তে", "report.forward_hint": "এই নিবন্ধনটি অন্য একটি সার্ভারে। অপ্রকাশিতনামাভাবে রিপোর্টের কপি সেখানেও কি পাঠাতে চান ?", "report.hint": "রিপোর্টটি আপনার সার্ভারের পরিচালকের কাছে পাঠানো হবে। রিপোর্ট পাঠানোর কারণ নিচে বিস্তারিত লিখতে পারেন:", @@ -396,9 +407,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.embed": "এমবেড করতে", "status.favourite": "পছন্দের করতে", "status.filtered": "ছাঁকনিদিত", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "আরো দেখুন", "status.media_hidden": "মিডিয়া লুকানো আছে", "status.mention": "@{name}কে উল্লেখ করতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 06fc32095..f13b7dfd7 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -6,9 +6,9 @@ "account.block": "Berzañ @{name}", "account.block_domain": "Berzañ pep tra eus {domain}", "account.blocked": "Stanket", - "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.browse_more_on_origin_server": "Furchal muioc'h war ar profil kentañ", "account.cancel_follow_request": "Nullañ ar bedadenn heuliañ", - "account.direct": "Kas ur gemennadenn da @{name}", + "account.direct": "Kas ur gemennadenn prevez da @{name}", "account.disable_notifications": "Paouez d'am c'hemenn pa vez toudet gant @{name}", "account.domain_blocked": "Domani berzet", "account.edit_profile": "Aozañ ar profil", @@ -25,7 +25,7 @@ "account.joined": "Amañ abaoe {date}", "account.last_status": "Oberiantiz zivezhañ", "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}", - "account.locked_info": "Prennet eo ar gon-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.", + "account.locked_info": "Prennet eo ar gont-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", "account.mention": "Menegiñ @{name}", "account.moved_to": "Dilojet en·he deus {name} da :", @@ -39,7 +39,7 @@ "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ", "account.share": "Skignañ profil @{name}", "account.show_reblogs": "Diskouez skignadennoù @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} Toud} other {{counter} Toud}}", "account.unblock": "Diverzañ @{name}", "account.unblock_domain": "Diverzañ an domani {domain}", "account.unendorse": "Paouez da lakaat war-wel war ar profil", @@ -47,16 +47,17 @@ "account.unmute": "Diguzhat @{name}", "account.unmute_notifications": "Diguzhat kemennoù a @{name}", "account_note.placeholder": "Klikit evit ouzhpenniñ un notenn", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Keidenn", + "admin.dashboard.retention.cohort": "Miz an enrolladur", + "admin.dashboard.retention.cohort_size": "Implijerien.erezed nevez", "alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.", "alert.rate_limited.title": "Feur bevennet", "alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.", "alert.unexpected.title": "Hopala!", "announcement.announcement": "Kemenn", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(ket meret)", "autosuggest_hashtag.per_week": "{count} bep sizhun", "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou", "bundle_column_error.body": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Kemmañ ar sontadeg evit aotren un dibab hepken", "compose_form.publish": "Toudañ", "compose_form.publish_loud": "{publish} !", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Merkañ ar media evel kizidik", "compose_form.sensitive.marked": "Merket eo ar media evel kizidik", "compose_form.sensitive.unmarked": "N'eo ket merket ar media evel kizidik", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel an toud-mañ ?", "confirmations.delete_list.confirm": "Dilemel", "confirmations.delete_list.message": "Ha sur eo hoc'h eus c'hoant da zilemel ar roll-mañ da vat ?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Nac'hañ", + "confirmations.discard_edit_media.message": "Bez ez eus kemmoù n'int ket enrollet e deskrivadur ar media pe ar rakwel, nullañ anezho evelato?", "confirmations.domain_block.confirm": "Berzañ an domani a-bezh", "confirmations.domain_block.message": "Ha sur oc'h e fell deoc'h berzañ an {domain} a-bezh? Peurvuiañ eo trawalc'h berzañ pe mudañ un nebeud implijer·ezed·ien. Ne welot danvez ebet o tont eus an domani-mañ. Dilamet e vo ar c'houmanantoù war an domani-mañ.", "confirmations.logout.confirm": "Digevreañ", @@ -157,7 +159,7 @@ "emoji_button.search_results": "Disoc'hoù an enklask", "emoji_button.symbols": "Arouezioù", "emoji_button.travel": "Lec'hioù ha Beajoù", - "empty_column.account_suspended": "Account suspended", + "empty_column.account_suspended": "Kont ehanet", "empty_column.account_timeline": "Toud ebet amañ!", "empty_column.account_unavailable": "Profil dihegerz", "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", @@ -167,28 +169,28 @@ "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", "empty_column.favourites": "Den ebet n'eus lakaet an toud-mañ en e reoù muiañ-karet. Pa vo graet gant unan bennak e vo diskouezet amañ.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.", "empty_column.follow_requests": "N'ho peus goulenn heuliañ ebet c'hoazh. Pa resevot reoù e vo diskouezet amañ.", "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.", "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Gwellout damvenegoù", "empty_column.list": "Goullo eo ar roll-mañ evit ar poent. Pa vo toudet gant e izili e vo diskouezet amañ.", "empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amañ.", "empty_column.mutes": "N'ho peus kuzhet implijer ebet c'hoazh.", "empty_column.notifications": "N'ho peus kemenn ebet c'hoazh. Grit gant implijer·ezed·ien all evit loc'hañ ar gomz.", "empty_column.public": "N'eus netra amañ! Skrivit un dra bennak foran pe heuilhit implijer·ien·ezed eus dafariadoù all evit leuniañ", "error.unexpected_crash.explanation": "Abalamour d'ur beug en hor c'hod pe d'ur gudenn geverlec'hded n'hallomp ket skrammañ ar bajenn-mañ en un doare dereat.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.explanation_addons": "Ar bajenn-mañ ne c'hell ket bezañ skrammet mat. Ar fazi-se a zo kaoz d'un astenn pe d'un ostilh troidigezh emgefreek war ho merdeer.", "error.unexpected_crash.next_steps": "Klaskit azbevaat ar bajenn. Ma n'a ket en-dro e c'hallit klask ober gant Mastodon dre ur merdeer disheñvel pe dre an arload genidik.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Klaskit azbevaat ar bajenn. Ma n'ez a ket en-dro e c'hallit klask ober gant Mastodon dre ur merdeer disheñvel pe dre an arload genidik.", "errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver", "errors.unexpected_crash.report_issue": "Danevellañ ur fazi", "follow_recommendations.done": "Graet", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.", + "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!", "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", - "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", "generic.saved": "Enrollet", "getting_started.developers": "Diorroerien", "getting_started.directory": "Roll ar profiloù", @@ -215,43 +217,43 @@ "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}", "intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}", "intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}", - "keyboard_shortcuts.back": "to navigate back", - "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.back": "Distreiñ", + "keyboard_shortcuts.blocked": "Digeriñ roll an implijer.ezed.rien stanket", "keyboard_shortcuts.boost": "da skignañ", - "keyboard_shortcuts.column": "to focus a status in one of the columns", - "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.column": "Fokus ar bann", + "keyboard_shortcuts.compose": "Fokus an takad testenn", "keyboard_shortcuts.description": "Deskrivadur", - "keyboard_shortcuts.direct": "to open direct messages column", - "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.direct": "Digeriñ bann ar c'hemennadennoù prevez", + "keyboard_shortcuts.down": "Diskennañ er roll", "keyboard_shortcuts.enter": "evit digeriñ un toud", - "keyboard_shortcuts.favourite": "to favourite", - "keyboard_shortcuts.favourites": "to open favourites list", - "keyboard_shortcuts.federated": "to open federated timeline", - "keyboard_shortcuts.heading": "Keyboard Shortcuts", - "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.favourite": "Lakaat an toud evel muiañ-karet", + "keyboard_shortcuts.favourites": "Digeriñ roll an toudoù muiañ-karet", + "keyboard_shortcuts.federated": "Digeriñ ar red-amzer kevreet", + "keyboard_shortcuts.heading": "Berradennoù klavier", + "keyboard_shortcuts.home": "Digeriñ ho red-amzer degemer", "keyboard_shortcuts.hotkey": "Berradur", - "keyboard_shortcuts.legend": "to display this legend", - "keyboard_shortcuts.local": "to open local timeline", - "keyboard_shortcuts.mention": "to mention author", - "keyboard_shortcuts.muted": "to open muted users list", - "keyboard_shortcuts.my_profile": "to open your profile", - "keyboard_shortcuts.notifications": "to open notifications column", - "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", - "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.legend": "Skrammañ ar skrid-se", + "keyboard_shortcuts.local": "Digeriñ red-amzer lec'hel", + "keyboard_shortcuts.mention": "Menegiñ an aozer.ez", + "keyboard_shortcuts.muted": "Digeriñ roll an implijer.ezed.ien kuzhet", + "keyboard_shortcuts.my_profile": "Digeriñ ho profil", + "keyboard_shortcuts.notifications": "Digeriñ bann kemennoù", + "keyboard_shortcuts.open_media": "Digeriñ ar media", + "keyboard_shortcuts.pinned": "Digeriñ roll an toudoù spilhennet", + "keyboard_shortcuts.profile": "Digeriñ profil an aozer.ez", "keyboard_shortcuts.reply": "da respont", - "keyboard_shortcuts.requests": "to open follow requests list", - "keyboard_shortcuts.search": "to focus search", - "keyboard_shortcuts.spoilers": "to show/hide CW field", - "keyboard_shortcuts.start": "to open \"get started\" column", - "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", + "keyboard_shortcuts.requests": "Digeriñ roll goulennoù heuliañ", + "keyboard_shortcuts.search": "Fokus barenn klask", + "keyboard_shortcuts.spoilers": "da guzhat/ziguzhat tachenn CW", + "keyboard_shortcuts.start": "Digeriñ bann \"Kregiñ\"", + "keyboard_shortcuts.toggle_hidden": "da guzhat/ziguzhat an desten a-dreñv CW", "keyboard_shortcuts.toggle_sensitivity": "da guzhat/ziguzhat ur media", "keyboard_shortcuts.toot": "da gregiñ gant un toud nevez-flamm", - "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", - "keyboard_shortcuts.up": "to move up in the list", + "keyboard_shortcuts.unfocus": "Difokus an dachenn testenn/klask", + "keyboard_shortcuts.up": "Pignat er roll", "lightbox.close": "Serriñ", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "Bihanaat boest hewel ar skeudenn", + "lightbox.expand": "Ledanaat boest hewel ar skeudenn", "lightbox.next": "Da-heul", "lightbox.previous": "A-raok", "lists.account.add": "Ouzhpennañ d'al listenn", @@ -261,20 +263,20 @@ "lists.edit.submit": "Cheñch an titl", "lists.new.create": "Ouzhpennañ ul listenn", "lists.new.title_placeholder": "Titl nevez al listenn", - "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.followed": "Pep implijer.ez heuliet", "lists.replies_policy.list": "Izili ar roll", "lists.replies_policy.none": "Den ebet", "lists.replies_policy.title": "Diskouez ar respontoù:", "lists.search": "Klask e-touez tud heuliet ganeoc'h", "lists.subheading": "Ho listennoù", - "load_pending": "{count, plural, one {# new item} other {# new items}}", + "load_pending": "{count, plural, one {# dra nevez} other {# dra nevez}}", "loading_indicator.label": "O kargañ...", - "media_gallery.toggle_visible": "Toggle visibility", + "media_gallery.toggle_visible": "{number, plural, one {Kuzhat ar skeudenn} other {Kuzhat ar skeudenn}}", "missing_indicator.label": "Digavet", - "missing_indicator.sublabel": "This resource could not be found", + "missing_indicator.sublabel": "An danvez-se ne vez ket kavet", "mute_modal.duration": "Padelezh", "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?", - "mute_modal.indefinite": "Indefinite", + "mute_modal.indefinite": "Amstrizh", "navigation_bar.apps": "Arloadoù pellgomz", "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", @@ -287,7 +289,7 @@ "navigation_bar.favourites": "Ar re vuiañ-karet", "navigation_bar.filters": "Gerioù kuzhet", "navigation_bar.follow_requests": "Pedadoù heuliañ", - "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.follows_and_followers": "Heuliadennoù ha heulier·ezed·ien", "navigation_bar.info": "Diwar-benn an dafariad-mañ", "navigation_bar.keyboard_shortcuts": "Berradurioù", "navigation_bar.lists": "Listennoù", @@ -298,55 +300,56 @@ "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", "navigation_bar.security": "Diogelroez", - "notification.favourite": "{name} favourited your status", + "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", - "notification.follow_request": "{name} has requested to follow you", + "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", "notification.mention": "{name} en/he deus meneget ac'hanoc'h", "notification.own_poll": "Echu eo ho sontadeg", "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet", - "notification.reblog": "{name} boosted your status", - "notification.status": "{name} just posted", + "notification.reblog": "{name} skignet ho toud", + "notification.status": "{name} en/he deus toudet", "notifications.clear": "Skarzhañ ar c'hemennoù", - "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "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", "notifications.column_settings.favourite": "Ar re vuiañ-karet:", "notifications.column_settings.filter_bar.advanced": "Skrammañ an-holl rummadoù", "notifications.column_settings.filter_bar.category": "Barrenn siloù prim", - "notifications.column_settings.filter_bar.show": "Diskouez", + "notifications.column_settings.filter_bar.show_bar": "Diskouezh barrenn siloù", "notifications.column_settings.follow": "Heulierien nevez:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow_request": "Pedadoù heuliañ nevez :", "notifications.column_settings.mention": "Menegoù:", "notifications.column_settings.poll": "Disoc'hoù ar sontadeg:", - "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.push": "Kemennoù push", "notifications.column_settings.reblog": "Skignadennoù:", "notifications.column_settings.show": "Diskouez er bann", "notifications.column_settings.sound": "Seniñ", - "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "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.filter.all": "Pep tra", "notifications.filter.boosts": "Skignadennoù", "notifications.filter.favourites": "Muiañ-karet", "notifications.filter.follows": "Heuliañ", "notifications.filter.mentions": "Menegoù", "notifications.filter.polls": "Disoc'hoù ar sontadegoù", - "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", + "notifications.filter.statuses": "Hizivadurioù eus tud heuliet ganeoc'h", + "notifications.grant_permission": "Reiñ aotre.", "notifications.group": "{count} a gemennoù", - "notifications.mark_as_read": "Mark every notification as read", - "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", - "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", - "notifications_permission_banner.enable": "Enable desktop notifications", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", - "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", + "notifications.mark_as_read": "Merkañ an holl kemennoù evel bezañ lennet", + "notifications.permission_denied": "Kemennoù war ar burev n'int ket hegerz rak pedadenn aotren ar merdeer a zo bet nullet araok", + "notifications.permission_denied_alert": "Kemennoù wa ar burev na c'hellont ket bezañ lezelet, rak aotre ar merdeer a zo bet nac'het a-raok", + "notifications.permission_required": "Kemennoù war ar burev n'int ket hegerz abalamour d'an aotre rekis n'eo ket bet roet.", + "notifications_permission_banner.enable": "Lezel kemennoù war ar burev", + "notifications_permission_banner.how_to_control": "Evit reseviñ kemennoù pa ne vez ket digoret Mastodon, lezelit kemennoù war ar burev. Gallout a rit kontrollañ peseurt eskemmoù a c'henel kemennoù war ar burev gant ar {icon} nozelenn a-us kentre ma'z int lezelet.", + "notifications_permission_banner.title": "Na vankit netra morse", + "picture_in_picture.restore": "Adlakaat", "poll.closed": "Serret", "poll.refresh": "Azbevaat", - "poll.total_people": "{count, plural, one {# person} other {# people}}", - "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", + "poll.total_people": "{count, plural, one {# den} other {# a zen}}", + "poll.total_votes": "{count, plural, one {# votadenn} other {# votadenn}}", "poll.vote": "Mouezhiañ", "poll.voted": "Mouezhiet ho peus evit ar respont-mañ", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural,one {#votadenn} other {# votadenn}}", "poll_button.add_poll": "Ouzhpennañ ur sontadeg", "poll_button.remove_poll": "Dilemel ar sontadeg", "privacy.change": "Kemmañ gwelidigezh ar statud", @@ -362,43 +365,56 @@ "regeneration_indicator.label": "O kargañ…", "regeneration_indicator.sublabel": "War brientiñ emañ ho red degemer!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}e", "relative_time.just_now": "bremañ", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}eil", "relative_time.today": "hiziv", "reply_indicator.cancel": "Nullañ", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Treuzkas da: {target}", - "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", + "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", + "report.hint": "Ar danevell a vo bet kaset da evezhidi ho servijer. Gallout a rit displegañ perak emaoc'h oc'h aroueziañ ar c'hont a-is:", "report.placeholder": "Askelennoù ouzhpenn", "report.submit": "Kinnig", - "report.target": "Report {target}", + "report.target": "O tisklêriañ {target}", "search.placeholder": "Klask", - "search_popout.search_format": "Advanced search format", - "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.search_format": "Framm klask araokaet", + "search_popout.tips.full_text": "Testenn simpl a adkas toudoù skrivet ganeoc'h, merket ganeoc'h evel miuañ-karet, toudoù skignet, pe e-lec'h oc'h bet meneget, met ivez anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot.", "search_popout.tips.hashtag": "ger-klik", - "search_popout.tips.status": "statud", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.status": "toud", + "search_popout.tips.text": "Testenn simpl a adkas anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot", "search_popout.tips.user": "implijer·ez", "search_results.accounts": "Tud", "search_results.hashtags": "Gerioù-klik", "search_results.statuses": "a doudoù", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", - "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "status.admin_account": "Open moderation interface for @{name}", - "status.admin_status": "Open this status in the moderation interface", + "search_results.statuses_fts_disabled": "Klask toudoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.", + "search_results.total": "{count, number} {count, plural, one {disoc'h} other {a zisoc'h}}", + "status.admin_account": "Digeriñ etrefas evezherezh evit @{name}", + "status.admin_status": "Digeriñ an toud e-barzh an etrefas evezherezh", "status.block": "Berzañ @{name}", "status.bookmark": "Ouzhpennañ d'ar sinedoù", - "status.cancel_reblog_private": "Unboost", - "status.cannot_reblog": "This post cannot be boosted", + "status.cancel_reblog_private": "Nac'hañ ar skignadenn", + "status.cannot_reblog": "An toud-se ne c'hall ket bezañ skignet", "status.copy": "Eilañ liamm an toud", "status.delete": "Dilemel", - "status.detailed_status": "Detailed conversation view", - "status.direct": "Kas ur c'hemennad da @{name}", + "status.detailed_status": "Gwel kaozeadenn munudek", + "status.direct": "Kas ur c'hemennad prevez da @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Enframmañ", "status.favourite": "Muiañ-karet", "status.filtered": "Silet", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Kargañ muioc'h", "status.media_hidden": "Media kuzhet", "status.mention": "Menegiñ @{name}", @@ -410,75 +426,75 @@ "status.pinned": "Toud spilhennet", "status.read_more": "Lenn muioc'h", "status.reblog": "Skignañ", - "status.reblog_private": "Boost with original visibility", - "status.reblogged_by": "{name} boosted", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", - "status.redraft": "Delete & re-draft", + "status.reblog_private": "Skignañ gant ar weledenn gentañ", + "status.reblogged_by": "{name} en/he deus skignet", + "status.reblogs.empty": "Den ebet n'eus skignet an toud-mañ c'hoazh. Pa vo graet gant unan bennak e vo diskouezet amañ.", + "status.redraft": "Diverkañ ha skrivañ en-dro", "status.remove_bookmark": "Dilemel ar sined", "status.reply": "Respont", "status.replyAll": "Respont d'ar gaozeadenn", "status.report": "Disklêriañ @{name}", - "status.sensitive_warning": "Sensitive content", + "status.sensitive_warning": "Dalc'had kizidik", "status.share": "Rannañ", "status.show_less": "Diskouez nebeutoc'h", - "status.show_less_all": "Show less for all", + "status.show_less_all": "Diskouez nebeutoc'h evit an holl", "status.show_more": "Diskouez muioc'h", "status.show_more_all": "Diskouez miuoc'h evit an holl", "status.show_thread": "Diskouez ar gaozeadenn", "status.uncached_media_warning": "Dihegerz", "status.unmute_conversation": "Diguzhat ar gaozeadenn", "status.unpin": "Dispilhennañ eus ar profil", - "suggestions.dismiss": "Dismiss suggestion", + "suggestions.dismiss": "Dilezel damvenegoù", "suggestions.header": "Marteze e vefec'h dedenet gant…", "tabs_bar.federated_timeline": "Kevredet", "tabs_bar.home": "Degemer", "tabs_bar.local_timeline": "Lec'hel", "tabs_bar.notifications": "Kemennoù", "tabs_bar.search": "Klask", - "time_remaining.days": "{number, plural,one {# devezh} other {# a zevezhioù}} a chom", + "time_remaining.days": "{number, plural,one {# devezh} other {# a zevezh}} a chom", "time_remaining.hours": "{number, plural, one {# eurvezh} other{# eurvezh}} a chom", - "time_remaining.minutes": "{number, plural, one {# munut} other{# a vunutoù}} a chom", - "time_remaining.moments": "Moments remaining", + "time_remaining.minutes": "{number, plural, one {# munut} other{# a vunut}} a chom", + "time_remaining.moments": "Pennadoù a-zilerc'h", "time_remaining.seconds": "{number, plural, one {# eilenn} other{# eilenn}} a chom", - "timeline_hint.remote_resource_not_displayed": "{resource} eus servijerien all n'int ket diskouezet.", + "timeline_hint.remote_resource_not_displayed": "{resource} eus servijerien all n'int ket skrammet.", "timeline_hint.resources.followers": "Heulier·ezed·ien", "timeline_hint.resources.follows": "Heuliañ", "timeline_hint.resources.statuses": "Toudoù koshoc'h", "trends.counter_by_accounts": "{count, plural, one {{counter} den} other {{counter} a zud}} a zo o komz", "trends.trending_now": "Luskad ar mare", "ui.beforeunload": "Kollet e vo ho prell ma kuitit Mastodon.", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", - "upload_area.title": "Drag & drop to upload", + "units.short.billion": "{count}miliard", + "units.short.million": "{count}milion", + "units.short.thousand": "{count}mil", + "upload_area.title": "Tennañ ha leuskel evit pellgargañ", "upload_button.label": "Ouzhpennañ ur media", - "upload_error.limit": "File upload limit exceeded.", - "upload_error.poll": "File upload not allowed with polls.", + "upload_error.limit": "Bevenn evit pellgargañ restroù a zo distremenet.", + "upload_error.poll": "Pellgargañ restroù n'eo ket aotreet gant sontadegoù.", "upload_form.audio_description": "Diskrivañ evit tud a zo kollet o c'hlev", "upload_form.description": "Diskrivañ evit tud a zo kollet o gweled", "upload_form.edit": "Aozañ", "upload_form.thumbnail": "Kemmañ ar velvenn", "upload_form.undo": "Dilemel", "upload_form.video_description": "Diskrivañ evit tud a zo kollet o gweled pe o c'hlev", - "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.analyzing_picture": "O tielfennañ ar skeudenn…", "upload_modal.apply": "Arloañ", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Oc'h arloañ…", "upload_modal.choose_image": "Dibab ur skeudenn", - "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.description_placeholder": "Ul louarn gell mibin a zo o lammat a-zioc'h ar c'hi lezirek", "upload_modal.detect_text": "Dinoiñ testenn diouzh ar skeudenn", "upload_modal.edit_media": "Embann ar media", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", - "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.hint": "Klikit pe tennit ar c'helc'h war ar rakwel evit dibab al lerc'h kengreizel a vo gwelet atav war an holl melvennoù.", + "upload_modal.preparing_ocr": "Oc'h aozañ OCR…", "upload_modal.preview_label": "Rakwel ({ratio})", "upload_progress.label": "O pellgargañ...", "video.close": "Serriñ ar video", "video.download": "Pellgargañ ar restr", "video.exit_fullscreen": "Kuitaat ar mod skramm leun", - "video.expand": "Expand video", + "video.expand": "Ledanaat ar video", "video.fullscreen": "Skramm a-bezh", "video.hide": "Kuzhat ar video", "video.mute": "Paouez gant ar son", - "video.pause": "Pause", + "video.pause": "Paouez", "video.play": "Lenn", "video.unmute": "Lakaat ar son en-dro" } diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 9434dbcc3..0ab88e2cd 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -47,16 +47,17 @@ "account.unmute": "Treure silenci de @{name}", "account.unmute_notifications": "Activar notificacions de @{name}", "account_note.placeholder": "Fes clic per afegir una nota", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Mitjana", + "admin.dashboard.retention.cohort": "Registres mes", + "admin.dashboard.retention.cohort_size": "Nous usuaris", "alert.rate_limited.message": "Si us plau torna-ho a provar després de {retry_time, time, medium}.", "alert.rate_limited.title": "Límit de freqüència", "alert.unexpected.message": "S'ha produït un error inesperat.", "alert.unexpected.title": "Vaja!", "announcement.announcement": "Anunci", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(sense processar)", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per saltar-te això el proper cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", @@ -96,14 +97,15 @@ "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.", "compose_form.lock_disclaimer.lock": "bloquejat", "compose_form.placeholder": "En què penses?", - "compose_form.poll.add_option": "Afegeix una opció", + "compose_form.poll.add_option": "Afegir una opció", "compose_form.poll.duration": "Durada de l'enquesta", "compose_form.poll.option_placeholder": "Opció {number}", "compose_form.poll.remove_option": "Elimina aquesta opció", "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre diverses opcions", "compose_form.poll.switch_to_single": "Canvia l’enquesta per a permetre una única opció", - "compose_form.publish": "Tut", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "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", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Estàs segur que vols suprimir aquest tut?", "confirmations.delete_list.confirm": "Suprimeix", "confirmations.delete_list.message": "Estàs segur que vols suprimir permanentment aquesta llista?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Descarta", + "confirmations.discard_edit_media.message": "Tens canvis no desats de la descripciò de mèdia o previsualització, els vols descartar?", "confirmations.domain_block.confirm": "Amaga tot el domini", "confirmations.domain_block.message": "Estàs segur, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs contingut d’aquest domini en cap de les línies de temps ni en les notificacions. Els teus seguidors d’aquest domini seran eliminats.", "confirmations.logout.confirm": "Tancar sessió", @@ -244,7 +246,7 @@ "keyboard_shortcuts.search": "per a centrar la cerca", "keyboard_shortcuts.spoilers": "mostrar/amagar el camp CW", "keyboard_shortcuts.start": "per a obrir la columna \"Començar\"", - "keyboard_shortcuts.toggle_hidden": "per a mostrar o amagar text sota CW", + "keyboard_shortcuts.toggle_hidden": "Mostrar/ocultar el text marcat com a sensible", "keyboard_shortcuts.toggle_sensitivity": "per a mostrar o amagar contingut multimèdia", "keyboard_shortcuts.toot": "per a començar un tut nou de trinca", "keyboard_shortcuts.unfocus": "descentrar l'àrea de composició de text/cerca", @@ -281,14 +283,14 @@ "navigation_bar.community_timeline": "Línia de temps Local", "navigation_bar.compose": "Redacta un nou tut", "navigation_bar.direct": "Missatges directes", - "navigation_bar.discover": "Descobreix", + "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Dominis ocults", "navigation_bar.edit_profile": "Editar perfil", "navigation_bar.favourites": "Preferits", "navigation_bar.filters": "Paraules silenciades", "navigation_bar.follow_requests": "Sol·licituds de seguiment", "navigation_bar.follows_and_followers": "Seguits i seguidors", - "navigation_bar.info": "Sobre aquest servidor", + "navigation_bar.info": "Quant a aquest servidor", "navigation_bar.keyboard_shortcuts": "Dreceres de teclat", "navigation_bar.lists": "Llistes", "navigation_bar.logout": "Tancar sessió", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Preferits:", "notifications.column_settings.filter_bar.advanced": "Mostra totes les categories", "notifications.column_settings.filter_bar.category": "Barra ràpida de filtres", - "notifications.column_settings.filter_bar.show": "Mostra", + "notifications.column_settings.filter_bar.show_bar": "Mostra la barra de filtres", "notifications.column_settings.follow": "Nous seguidors:", "notifications.column_settings.follow_request": "Nova sol·licitud de seguiment:", "notifications.column_settings.mention": "Mencions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mostra en la columna", "notifications.column_settings.sound": "Reproduir so", "notifications.column_settings.status": "Nous tuts:", - "notifications.column_settings.unread_markers.category": "Marcadors de notificacions no llegides", + "notifications.column_settings.unread_notifications.category": "Notificacions no llegides", + "notifications.column_settings.unread_notifications.highlight": "Destaca notificacions no llegides", "notifications.filter.all": "Tots", "notifications.filter.boosts": "Impulsos", "notifications.filter.favourites": "Favorits", @@ -346,10 +349,10 @@ "poll.total_votes": "{count, plural, one {# vot} other {# vots}}", "poll.vote": "Vota", "poll.voted": "Vas votar per aquesta resposta", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", - "poll_button.add_poll": "Afegeix una enquesta", + "poll.votes": "{votes, plural, one {# vot} other {# vots}}", + "poll_button.add_poll": "Afegir una enquesta", "poll_button.remove_poll": "Elimina l'enquesta", - "privacy.change": "Ajusta l'estat de privacitat", + "privacy.change": "Ajustar l'estat de privacitat", "privacy.direct.long": "Publicar només per als usuaris esmentats", "privacy.direct.short": "Directe", "privacy.private.long": "Publicar només a seguidors", @@ -362,12 +365,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.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.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í:", @@ -396,9 +407,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.embed": "Incrustar", "status.favourite": "Favorit", "status.filtered": "Filtrat", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Carrega més", "status.media_hidden": "Multimèdia amagat", "status.mention": "Esmentar @{name}", @@ -430,7 +446,7 @@ "status.unpin": "Deslliga del perfil", "suggestions.dismiss": "Descartar suggeriment", "suggestions.header": "És possible que estiguis interessat en…", - "tabs_bar.federated_timeline": "Federada", + "tabs_bar.federated_timeline": "Federat", "tabs_bar.home": "Inici", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificacions", @@ -462,7 +478,7 @@ "upload_form.video_description": "Descriu per a les persones amb pèrdua auditiva o deficiència visual", "upload_modal.analyzing_picture": "Analitzant imatge…", "upload_modal.apply": "Aplica", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicant…", "upload_modal.choose_image": "Tria imatge", "upload_modal.description_placeholder": "Jove xef, porti whisky amb quinze glaçons d’hidrogen, coi!", "upload_modal.detect_text": "Detecta el text de l'imatge", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index b8ac9281d..d3fade546 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -47,7 +47,8 @@ "account.unmute": "Ùn piattà più @{name}", "account.unmute_notifications": "Ùn piattà più nutificazione da @{name}", "account_note.placeholder": "Senza cummentariu", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -56,7 +57,7 @@ "alert.unexpected.message": "Un prublemu inaspettatu hè accadutu.", "alert.unexpected.title": "Uups!", "announcement.announcement": "Annunziu", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(micca trattata)", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Pudete appughjà nant'à {combo} per saltà quessa a prussima volta", "bundle_column_error.body": "C'hè statu un prublemu caricandu st'elementu.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Cambià u scandagliu per ùn accittà ch'una scelta", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Indicà u media cum'è sensibile} other {Indicà i media cum'è sensibili}}", "compose_form.sensitive.marked": "{count, plural, one {Media indicatu cum'è sensibile} other {Media indicati cum'è sensibili}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media micca indicatu cum'è sensibile} other {Media micca indicati cum'è sensibili}}", @@ -118,7 +120,7 @@ "confirmations.delete.message": "Site sicuru·a che vulete sguassà stu statutu?", "confirmations.delete_list.confirm": "Toglie", "confirmations.delete_list.message": "Site sicuru·a che vulete toglie sta lista?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Scartà", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Piattà tuttu u duminiu", "confirmations.domain_block.message": "Site veramente sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favuriti:", "notifications.column_settings.filter_bar.advanced": "Affissà tutte e categurie", "notifications.column_settings.filter_bar.category": "Barra di ricerca pronta", - "notifications.column_settings.filter_bar.show": "Mustrà", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Abbunati novi:", "notifications.column_settings.follow_request": "Nove dumande d'abbunamentu:", "notifications.column_settings.mention": "Minzione:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mustrà indè a colonna", "notifications.column_settings.sound": "Sunà", "notifications.column_settings.status": "Statuti novi:", - "notifications.column_settings.unread_markers.category": "Marcatori di nutificazione micca lette", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Tuttu", "notifications.filter.boosts": "Spartere", "notifications.filter.favourites": "Favuriti", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# votu} other {# voti}}", "poll.vote": "Vutà", "poll.voted": "Avete vutatu per sta risposta", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# votu} other {# voti}}", "poll_button.add_poll": "Aghjunghje", "poll_button.remove_poll": "Toglie u scandagliu", "privacy.change": "Mudificà a cunfidenzialità di u statutu", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Caricamentu…", "regeneration_indicator.sublabel": "Priparazione di a vostra pagina d'accolta!", "relative_time.days": "{number}ghj", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}o", "relative_time.just_now": "avà", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "oghji", "reply_indicator.cancel": "Annullà", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Trasferisce à {target}", "report.forward_hint": "U contu hè nant'à un'altru servore. Vulete ancu mandà una copia anonima di u signalamentu quallà?", "report.hint": "U signalamentu sarà mandatu à i muderatori di u servore. Pudete spiegà perchè avete palisatu stu contu quì sottu:", @@ -396,9 +407,14 @@ "status.delete": "Toglie", "status.detailed_status": "Vista in ditagliu di a cunversazione", "status.direct": "Mandà un missaghju @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Integrà", "status.favourite": "Aghjunghje à i favuriti", "status.filtered": "Filtratu", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Vede di più", "status.media_hidden": "Media piattata", "status.mention": "Mintuvà @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Discrizzione per i ciochi o cechi", "upload_modal.analyzing_picture": "Analisi di u ritrattu…", "upload_modal.apply": "Affettà", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Appiegazione…", "upload_modal.choose_image": "Cambià ritrattu", "upload_modal.description_placeholder": "Chì tempi brevi ziu, quandu solfeghji", "upload_modal.detect_text": "Ditettà testu da u ritrattu", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 636fbd4ea..2b31d32c3 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -12,7 +12,7 @@ "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", "account.edit_profile": "Upravit profil", - "account.enable_notifications": "Oznámit mě na příspěvky @{name}", + "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", "account.follow": "Sledovat", "account.followers": "Sledující", @@ -47,16 +47,17 @@ "account.unmute": "Zrušit skrytí @{name}", "account.unmute_notifications": "Zrušit skrytí oznámení od @{name}", "account_note.placeholder": "Klikněte pro přidání poznámky", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Průměr", + "admin.dashboard.retention.cohort": "Měsíc registrace", + "admin.dashboard.retention.cohort_size": "Noví uživatelé", "alert.rate_limited.message": "Zkuste to prosím znovu za {retry_time, time, medium}.", "alert.rate_limited.title": "Spojení omezena", "alert.unexpected.message": "Objevila se neočekávaná chyba.", "alert.unexpected.title": "Jejda!", "announcement.announcement": "Oznámení", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(nezpracováno)", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Povolit u ankety výběr jediné možnosti", "compose_form.publish": "Odeslat", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Označit média za citlivá} few {Označit média za citlivá} many {Označit média za citlivá} other {Označit média za citlivá}}", "compose_form.sensitive.marked": "{count, plural, one {Média jsou označena za citlivá} few {Média jsou označena za citlivá} many {Média jsou označena za citlivá} other {Média jsou označena za citlivá}}", "compose_form.sensitive.unmarked": "{count, plural, one {Média nejsou označena za citlivá} few {Média nejsou označena za citlivá} many {Média nejsou označena za citlivá} other {Média nejsou označena za citlivá}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?", "confirmations.delete_list.confirm": "Smazat", "confirmations.delete_list.message": "Opravdu chcete tento seznam navždy smazat?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Zahodit", + "confirmations.discard_edit_media.message": "Máte neuložené změny popisku médií nebo náhledu, přesto je zahodit?", "confirmations.domain_block.confirm": "Blokovat celou doménu", "confirmations.domain_block.message": "Opravdu chcete blokovat celou doménu {domain}? Ve většině případů stačí zablokovat nebo skrýt pár konkrétních uživatelů, což také doporučujeme. Z této domény neuvidíte obsah v žádné veřejné časové ose ani v oznámeních. Vaši sledující z této domény budou odstraněni.", "confirmations.logout.confirm": "Odhlásit", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Oblíbení:", "notifications.column_settings.filter_bar.advanced": "Zobrazit všechny kategorie", "notifications.column_settings.filter_bar.category": "Panel rychlého filtrování", - "notifications.column_settings.filter_bar.show": "Zobrazit", + "notifications.column_settings.filter_bar.show_bar": "Zobrazit panel filtrů", "notifications.column_settings.follow": "Noví sledující:", "notifications.column_settings.follow_request": "Nové žádosti o sledování:", "notifications.column_settings.mention": "Zmínky:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Zobrazit ve sloupci", "notifications.column_settings.sound": "Přehrát zvuk", "notifications.column_settings.status": "Nové příspěvky:", - "notifications.column_settings.unread_markers.category": "Značky nepřečtených oznámení", + "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.filter.all": "Vše", "notifications.filter.boosts": "Boosty", "notifications.filter.favourites": "Oblíbení", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# hlas} few {# hlasy} many {# hlasů} other {# hlasů}}", "poll.vote": "Hlasovat", "poll.voted": "Pro tuto odpověď jste hlasovali", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# hlas} few {# hlasy} many {# hlasů} other {# hlasů}}", "poll_button.add_poll": "Přidat anketu", "poll_button.remove_poll": "Odstranit anketu", "privacy.change": "Změnit soukromí příspěvku", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Načítání…", "regeneration_indicator.sublabel": "Váš domovský kanál se připravuje!", "relative_time.days": "{number} d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number} h", "relative_time.just_now": "teď", "relative_time.minutes": "{number} m", "relative_time.seconds": "{number} s", "relative_time.today": "dnes", "reply_indicator.cancel": "Zrušit", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Přeposlat na {target}", "report.forward_hint": "Tento účet je z jiného serveru. Chcete na něj také poslat anonymizovanou kopii hlášení?", "report.hint": "Hlášení bude zasláno moderátorům vašeho serveru. Níže můžete uvést, proč tento účet nahlašujete:", @@ -396,9 +407,14 @@ "status.delete": "Smazat", "status.detailed_status": "Podrobné zobrazení konverzace", "status.direct": "Poslat @{name} přímou zprávu", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Vložit na web", "status.favourite": "Oblíbit", "status.filtered": "Filtrováno", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Zobrazit více", "status.media_hidden": "Média skryta", "status.mention": "Zmínit @{name}", @@ -461,8 +477,8 @@ "upload_form.undo": "Smazat", "upload_form.video_description": "Popis pro sluchově či zrakově postižené", "upload_modal.analyzing_picture": "Analyzuji obrázek…", - "upload_modal.apply": "Použít", - "upload_modal.applying": "Applying…", + "upload_modal.apply": "Aplikovat", + "upload_modal.applying": "Aplikuji…", "upload_modal.choose_image": "Vybrat obrázek", "upload_modal.description_placeholder": "Příliš žluťoučký kůň úpěl ďábelské ódy", "upload_modal.detect_text": "Detekovat text z obrázku", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 2f8c09014..a6379568c 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -47,7 +47,8 @@ "account.unmute": "Dad-dawelu @{name}", "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}", "account_note.placeholder": "Clicio i ychwanegu nodyn", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", "compose_form.publish": "Tŵt", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif", "compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif", "compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Ffefrynnau:", "notifications.column_settings.filter_bar.advanced": "Dangos pob categori", "notifications.column_settings.filter_bar.category": "Bar hidlo", - "notifications.column_settings.filter_bar.show": "Dangos", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Dilynwyr newydd:", "notifications.column_settings.follow_request": "Ceisiadau dilyn newydd:", "notifications.column_settings.mention": "Crybwylliadau:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Dangos yn y golofn", "notifications.column_settings.sound": "Chwarae sain", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Pob", "notifications.filter.boosts": "Hybiadau", "notifications.filter.favourites": "Ffefrynnau", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", "relative_time.days": "{number}dydd", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}awr", "relative_time.just_now": "nawr", "relative_time.minutes": "{number}munud", "relative_time.seconds": "{number}eiliad", "relative_time.today": "heddiw", "reply_indicator.cancel": "Canslo", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Ymlaen i {target}", "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?", "report.hint": "Bydd yr adroddiad yn cael ei anfon i arolygydd eich achos. Mae modd darparu esboniad o pam yr ydych yn cwyno am y cyfrif hwn isod:", @@ -396,9 +407,14 @@ "status.delete": "Dileu", "status.detailed_status": "Golwg manwl o'r sgwrs", "status.direct": "Neges breifat @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Plannu", "status.favourite": "Hoffi", "status.filtered": "Wedi'i hidlo", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Llwythwch mwy", "status.media_hidden": "Cyfryngau wedi'u cuddio", "status.mention": "Crybwyll @{name}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 9db5da3eb..56c1daa13 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,75 +1,76 @@ { - "account.account_note_header": "Notat", + "account.account_note_header": "Note", "account.add_or_remove_from_list": "Tilføj eller fjern fra lister", "account.badges.bot": "Bot", "account.badges.group": "Gruppe", "account.block": "Blokér @{name}", "account.block_domain": "Blokér domænet {domain}", "account.blocked": "Blokeret", - "account.browse_more_on_origin_server": "Gennemse mere på den oprindelige profil", - "account.cancel_follow_request": "Annullér følgeranmodning", + "account.browse_more_on_origin_server": "Se mere på den oprindelige profil", + "account.cancel_follow_request": "Annullér følgeanmodning", "account.direct": "Direkte besked til @{name}", "account.disable_notifications": "Advisér mig ikke længere, når @{name} poster", "account.domain_blocked": "Domæne blokeret", - "account.edit_profile": "Redigere profil", - "account.enable_notifications": "Advisér mig, når @{name} poster", + "account.edit_profile": "Redigér profil", + "account.enable_notifications": "Giv besked når @{name} udgiver nyt", "account.endorse": "Fremhæv på profil", "account.follow": "Følg", "account.followers": "Følgere", - "account.followers.empty": "Ingen følger denne bruger endnu.", + "account.followers.empty": "Ingen følger brugeren endnu.", "account.followers_counter": "{count, plural, one {{counter} Følger} other {{counter} Følgere}}", - "account.following_counter": "{count, plural, one {{counter} Følger} other {{counter} Følgere}}", - "account.follows.empty": "Denne bruger følger endnu ikke nogen.", + "account.following_counter": "{count, plural, one {{counter} Følges} other {{counter} Følges}}", + "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", - "account.hide_reblogs": "Skjul fremhævelserne fra @{name}", + "account.hide_reblogs": "Skjul fremhævelser fra @{name}", "account.joined": "Tilmeldt {date}", "account.last_status": "Senest aktiv", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", - "account.media": "Medie", + "account.media": "Medier", "account.mention": "Nævn @{name}", "account.moved_to": "{name} er flyttet til:", - "account.mute": "Tavsgør @{name}", - "account.mute_notifications": "Tavsgør notifikationer fra @{name}", - "account.muted": "Tavsgjort", + "account.mute": "Skjul @{name}", + "account.mute_notifications": "Skjul notifikationer fra @{name}", + "account.muted": "Tystnet", "account.never_active": "Aldrig", - "account.posts": "Trut", - "account.posts_with_replies": "Trut og svar", + "account.posts": "Indlæg", + "account.posts_with_replies": "Indlæg og svar", "account.report": "Anmeld @{name}", "account.requested": "Afventer godkendelse. Tryk for at annullere følgeanmodning", "account.share": "Del @{name}s profil", - "account.show_reblogs": "Vis fremhævelserne fra @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Trut} other {{counter} Trut}}", + "account.show_reblogs": "Vis fremhævelser fra @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Indlæg} other {{counter} Indlæg}}", "account.unblock": "Fjern blokeringen af @{name}", "account.unblock_domain": "Afblokér domænet {domain}", - "account.unendorse": "Fremhæv ikke på profil", + "account.unendorse": "Fjern visning på din profil", "account.unfollow": "Følg ikke længere", "account.unmute": "Fjern tavsgjort for @{name}", - "account.unmute_notifications": "Fjern tavsgjort for notifikationer fra @{name}", + "account.unmute_notifications": "Slå notifikationer om @{name} til igen", "account_note.placeholder": "Klik for at tilføje notat", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Gennemsnitlig", + "admin.dashboard.retention.cohort": "Tilmeldingsmåned", + "admin.dashboard.retention.cohort_size": "Nye brugere", "alert.rate_limited.message": "Forsøg igen efter {retry_time, time, medium}.", - "alert.rate_limited.title": "Gradsbegrænset", - "alert.unexpected.message": "En uventet fejl opstod.", + "alert.rate_limited.title": "Hastighedsbegrænset", + "alert.unexpected.message": "Der skete en uventet fejl.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Bekendtgørelse", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(ubearbejdet)", "autosuggest_hashtag.per_week": "{count} pr. uge", - "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", + "boost_modal.combo": "Du kan trykke på {combo} for at springe over næste gang", "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", - "bundle_column_error.retry": "Forsøg igen", + "bundle_column_error.retry": "Prøv igen", "bundle_column_error.title": "Netværksfejl", "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", - "bundle_modal_error.retry": "Forsøg igen", + "bundle_modal_error.retry": "Prøv igen", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", "column.direct": "Direkte beskeder", - "column.directory": "Gennemse profiler", + "column.directory": "Se profiler", "column.domain_blocks": "Blokerede domæner", "column.favourites": "Favoritter", "column.follow_requests": "Følg-anmodninger", @@ -77,8 +78,8 @@ "column.lists": "Lister", "column.mutes": "Tavsgjorte brugere", "column.notifications": "Notifikationer", - "column.pins": "Fastgjorte trut", - "column.public": "Forenede tidslinje", + "column.pins": "Fastgjorte indlæg", + "column.public": "Fælles tidslinje", "column_back_button.label": "Tilbage", "column_header.hide_settings": "Skjul indstillinger", "column_header.moveLeft_settings": "Flyt kolonne til venstre", @@ -88,71 +89,72 @@ "column_header.unpin": "Løsgør", "column_subheading.settings": "Indstillinger", "community.column_settings.local_only": "Kun lokalt", - "community.column_settings.media_only": "Kun medie", - "community.column_settings.remote_only": "Kun fjernt", - "compose_form.direct_message_warning": "Dette trut sendes kun til de nævnte brugere.", + "community.column_settings.media_only": "Kun medier", + "community.column_settings.remote_only": "Kun udefra", + "compose_form.direct_message_warning": "Indlægget bliver kun sendt til de nævnte brugere.", "compose_form.direct_message_warning_learn_more": "Få mere at vide", "compose_form.hashtag_warning": "Dette trut vises ikke under noget hashtag, da det ikke er listet. Kun offentlige trut kan søges via hashtags.", - "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Alle kan følge dig for at se dine kun-følger poster.", + "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Alle kan følge dig, så de også kan se de indlæg, der kun er til følgere.", "compose_form.lock_disclaimer.lock": "låst", - "compose_form.placeholder": "Hvad tænker du på?", + "compose_form.placeholder": "Hvad vil du gerne fortælle om?", "compose_form.poll.add_option": "Tilføj valgmulighed", - "compose_form.poll.duration": "Afstemningsvarighed", + "compose_form.poll.duration": "Afstemningens varighed", "compose_form.poll.option_placeholder": "Valgmulighed {number}", - "compose_form.poll.remove_option": "Fjern denne valgmulighed", + "compose_form.poll.remove_option": "Fjern valgmulighed", "compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype", "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype", - "compose_form.publish": "Toot", + "compose_form.publish": "Udgiv", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "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": "Intet medie market som sensitivt", - "compose_form.spoiler.marked": "Tekst skjult bag advarsel", - "compose_form.spoiler.unmarked": "Teksten er ikke skjult", + "compose_form.sensitive.unmarked": "{count, plural, one {Medie er ikke market som sensitivt} other {Medier er ikke markerede som sensitive}}", + "compose_form.spoiler.marked": "Fjern advarsel", + "compose_form.spoiler.unmarked": "Skjul bag advarsel", "compose_form.spoiler_placeholder": "Skriv din advarsel hér", "confirmation_modal.cancel": "Afbryd", "confirmations.block.block_and_report": "Blokér og Anmeld", "confirmations.block.confirm": "Blokér", - "confirmations.block.message": "Sikker på, at du vil blokere {name}?", + "confirmations.block.message": "Er du sikker på, du vil blokere {name}?", "confirmations.delete.confirm": "Slet", - "confirmations.delete.message": "Sikker på, at du vil slette dette trut?", + "confirmations.delete.message": "Er du sikker på, at du vil slette indlægget?", "confirmations.delete_list.confirm": "Slet", "confirmations.delete_list.message": "Sikker på, at du vil slette denne liste permanent?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", - "confirmations.domain_block.confirm": "Skjul hele domænet", - "confirmations.domain_block.message": "Helt sikker på, at du vil blokere hele {domain}-domænet? Oftest vil få, specifikke blokeringer eller tavsgørelser være nok og at fortrække. Du vil ikke se indhold fra domænet på offentlige tidslinjer eller i dine notifikationer. Dine følgere fra domænet fjernes.", + "confirmations.discard_edit_media.confirm": "Kassér", + "confirmations.discard_edit_media.message": "Der er ugemte ændringer i mediebeskrivelsen eller forhåndsvisningen, kassér dem alligevel?", + "confirmations.domain_block.confirm": "Blokér hele domænet", + "confirmations.domain_block.message": "Er du helt sikker på, at du vil blokere hele {domain}-domænet? Oftest vil det være at foretrække istedet målrettet at blokere eller skjule nogle få brugere. Hvis du blokerer domænet, vil du ikke se indhold fra domænet på offentlige tidslinjer eller i dine notifikationer. Dine følgere fra domænet fjernes.", "confirmations.logout.confirm": "Log ud", "confirmations.logout.message": "Log ud, sikker?", - "confirmations.mute.confirm": "Tavsgøre", - "confirmations.mute.explanation": "Dette skjuler indlæg fra dem (og om) dem, men det vil lade dem at se dine indlæg og følge dig.", - "confirmations.mute.message": "Sikker på, du vil tavsgøre {name}?", + "confirmations.mute.confirm": "Skjul", + "confirmations.mute.explanation": "Dette skjuler indlæg fra (og om) dem, men de kan stadig se dine indlæg og følge dig.", + "confirmations.mute.message": "Er du sikker på, du vil skjule {name}?", "confirmations.redraft.confirm": "Slet og omskriv", - "confirmations.redraft.message": "Sikker på, at du vil slette dette trut og omskrive det? Favoritter og fremhævelser går tabt og svar til det oprindelige indlæg afassocieres.", - "confirmations.reply.confirm": "Besvar", - "confirmations.reply.message": "Besvarelse nu vil overskrive den besked, du er ved at skrive. Fortsæt alligevel?", + "confirmations.redraft.message": "Er du sikker på, at du vil slette og omskrive indlægget? Favoritter og fremhævelser går tabt og svar til det oprindelige indlæg afassocieres.", + "confirmations.reply.confirm": "Svar", + "confirmations.reply.message": "At svare nu vil overskrive den besked, du er ved at skrive. Fortsæt alligevel?", "confirmations.unfollow.confirm": "Følg ikke længere", - "confirmations.unfollow.message": "Sikker på, at du ikke længere vil følge {name}?", - "conversation.delete": "Slet konversation", + "confirmations.unfollow.message": "Er du sikker på, at du ikke vil følge {name}?", + "conversation.delete": "Slet samtale", "conversation.mark_as_read": "Markér som læst", - "conversation.open": "Vis konversation", + "conversation.open": "Vis samtale", "conversation.with": "Med {names}", - "directory.federated": "Fra kendt fedivers", + "directory.federated": "Fra kendt Fællesvers", "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", - "directory.recently_active": "Senest aktiv", - "embed.instructions": "Indlejr dette trut på din side ved at kopiere koden nedenfor.", + "directory.recently_active": "Aktive for nyligt", + "embed.instructions": "Indlejr indlægget på din side ved at kopiere koden nedenfor.", "embed.preview": "Sådan kommer det til at se ud:", "emoji_button.activity": "Aktivitet", "emoji_button.custom": "Tilpasset", "emoji_button.flags": "Flag", "emoji_button.food": "Mad og drikke", - "emoji_button.label": "Indsæt humørikon", + "emoji_button.label": "Indsæt emoji", "emoji_button.nature": "Natur", - "emoji_button.not_found": "Ingen emojos!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Kunne ikke finde tilsvarende emojis", "emoji_button.objects": "Objekter", "emoji_button.people": "Personer", - "emoji_button.recent": "Oftest brugt", + "emoji_button.recent": "De sædvanlige", "emoji_button.search": "Søg...", "emoji_button.search_results": "Søgeresultater", "emoji_button.symbols": "Symboler", @@ -160,32 +162,32 @@ "empty_column.account_suspended": "Konto suspenderet", "empty_column.account_timeline": "Ingen trut her!", "empty_column.account_unavailable": "Profil utilgængelig", - "empty_column.blocks": "Du har ikke blokeret nogle brugere endnu.", - "empty_column.bookmarked_statuses": "Du har ingen bogmærkede trut endnu. Når du bogmærker ét, vil det dukke op hér.", + "empty_column.blocks": "Du har ikke blokeret nogen endnu.", + "empty_column.bookmarked_statuses": "Du har ingen indlæg med bogmærke endnu. Når du sætter et bogmærke, vil det dukke op hér.", "empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!", - "empty_column.direct": "Du har endnu ingen direkte beskeder. Når du sender eller modtager en, vil den vises hér.", - "empty_column.domain_blocks": "Der er endnu ingen skjulte domæner.", - "empty_column.favourited_statuses": "Du har endnu ingen favorit-trut. Når du favoriserer ét, vil det blive vist hér.", - "empty_column.favourites": "Ingen har endnu favoriseret dette trut. Når nogen anden gør vil det blive vist hér.", - "empty_column.follow_recommendations": "Ser ud til, at der ikke kunne genereres forslag til dig. Du kan prøve med Søg for at lede efter personer, du måske kender, eller udforske hashtags.", - "empty_column.follow_requests": "Du har endnu ingen følgeranmodninger. Når du modtager én, vil den fremgå hér.", - "empty_column.hashtag": "Intet indhold i dette hashtag endnu.", + "empty_column.direct": "Du har ingen direkte beskeder endnu. Hvis du sender eller modtager en, bliver den vist hér.", + "empty_column.domain_blocks": "Der er ingen skjulte domæner endnu.", + "empty_column.favourited_statuses": "Du har ikke markeret nogle indlæg som favorit. Når du markerer ét, bliver det vist hér.", + "empty_column.favourites": "Ingen har markeret indlægget som favorit endnu. Hvis der er nogen der gør, bliver det vist hér.", + "empty_column.follow_recommendations": "Det ser ud til, at der ikke kunne blive lavet forslag til dig. Du kan prøve med Søg for at finde personer, du kender, eller udforske hashtags.", + "empty_column.follow_requests": "Du har ingen følgeanmodninger endnu. Hvis du modtager en, bliver den vist her.", + "empty_column.hashtag": "Der er ingen indlæg med hashtagget endnu.", "empty_column.home": "Din hjemmetidslinje er tom! Besøg {public} eller brug søgningen for at komme igang og møde andre brugere.", "empty_column.home.suggestions": "Se nogle foreslag", - "empty_column.list": "Der er endnu intet i denne liste. Når medlemmer af denne liste poster nye trut, vil de fremgå hér.", + "empty_column.list": "Der er ikke noget på denne liste endnu. Når medlemmer af listen udgiver nye indlæg vil de fremgå hér.", "empty_column.lists": "Du har endnu ingen lister. Når du opretter én, vil den fremgå hér.", - "empty_column.mutes": "Du har endnu ikke tavsgjort nogle brugere.", - "empty_column.notifications": "Du har endnu ingen notifikationer. Interagér med andre for at starte konversationen.", + "empty_column.mutes": "Du har endnu ikke tystnet nogle brugere.", + "empty_column.notifications": "Du har ingen notifikationer. Hvis andre interagerer med dig, bliver det vist her.", "empty_column.public": "Der er intet hér! Skriv noget offentligt eller følg manuelt brugere fra andre servere for at se indhold", "error.unexpected_crash.explanation": "Grundet en fejl i vores kode, eller en browser-kompatibilitetsfejl, kunne siden ikke vises korrekt.", "error.unexpected_crash.explanation_addons": "Denne side kunne ikke vises korrekt. Fejlen skyldes sandsynligvis en browsertilføjelse eller automatiske oversættelsesværktøjer.", - "error.unexpected_crash.next_steps": "Prøv at opfriske siden. Hjælper dette ikke, kan Mastodon muligvis stadig bruges via en anden browser eller app.", - "error.unexpected_crash.next_steps_addons": "Prøv at deaktivere dem og opfriske siden. Hjælper dette ikke, kan Mastodon muligvis stadig bruges via en anden browser eller app.", + "error.unexpected_crash.next_steps": "Prøv at genindlæs siden. Hvis dette ikke hjælper, så forsøg venligst, at tilgå Mastodon via en anden browser eller app.", + "error.unexpected_crash.next_steps_addons": "Prøv at deaktivere dem og genindlæse siden. Hvis det ikke hjælper, kan Mastodon muligvis stadig bruges via en anden browser eller app.", "errors.unexpected_crash.copy_stacktrace": "Kopiér stacktrace til udklipsholderen", "errors.unexpected_crash.report_issue": "Anmeld problem", "follow_recommendations.done": "Udført", "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.", - "follow_recommendations.lead": "Indlæg, fra personer du følger, vises i kronologisk rækkefølge i dit hjemmefeed. Vær ikke bange for at begå fejl, du kan vælge \"følg ikke\" personer lige så nemt til enhver tid!", + "follow_recommendations.lead": "Indlæg, fra personer du følger, vises i kronologisk rækkefølge i hjemmetidslinjen. Bare prøv dig frem med hvem du følger her. Du kan altid vælge om igen!", "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", @@ -193,9 +195,9 @@ "getting_started.developers": "Udviklere", "getting_started.directory": "Profilliste", "getting_started.documentation": "Dokumentation", - "getting_started.heading": "Komme i gang", + "getting_started.heading": "Startmenu", "getting_started.invite": "Invitér folk", - "getting_started.open_source_notice": "Mastodon er en open-source software. Du kan bidrage eller anmelde fejl via GitHub {github}.", + "getting_started.open_source_notice": "Mastodon er open-source software. Du kan bidrage eller anmelde fejl via GitHub {github}.", "getting_started.security": "Kontoindstillinger", "getting_started.terms": "Tjenestevilkår", "hashtag.column_header.tag_mode.all": "og {additional}", @@ -203,7 +205,7 @@ "hashtag.column_header.tag_mode.none": "uden {additional}", "hashtag.column_settings.select.no_options_message": "Ingen forslag fundet", "hashtag.column_settings.select.placeholder": "Angiv hashtags…", - "hashtag.column_settings.tag_mode.all": "Alle disse", + "hashtag.column_settings.tag_mode.all": "Allesammen", "hashtag.column_settings.tag_mode.any": "Nogle af disse", "hashtag.column_settings.tag_mode.none": "Ingen af disse", "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne", @@ -216,17 +218,17 @@ "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}", "keyboard_shortcuts.back": "for at navigere tilbage", - "keyboard_shortcuts.blocked": "for at åbne listen over blokerede brugere", - "keyboard_shortcuts.boost": "for at fremhæve", + "keyboard_shortcuts.blocked": "Vis listen over blokerede brugere", + "keyboard_shortcuts.boost": "Fremhæv indlæg", "keyboard_shortcuts.column": "for at fokusere et trut i en af kolonnerne", "keyboard_shortcuts.compose": "for at fokusere på skriveområdet", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "for at åbne direkte besked-kolonnen", + "keyboard_shortcuts.direct": "Åben kolonnen med direkte beskeder", "keyboard_shortcuts.down": "for at rykke nedad på listen", - "keyboard_shortcuts.enter": "for at åbne trut", - "keyboard_shortcuts.favourite": "for at favorisere", + "keyboard_shortcuts.enter": "Åben indlæg", + "keyboard_shortcuts.favourite": "Markér som favorit", "keyboard_shortcuts.favourites": "for at åbne favoritlisten", - "keyboard_shortcuts.federated": "for at åbne den forenede tidslinje", + "keyboard_shortcuts.federated": "Åben den fælles tidslinje", "keyboard_shortcuts.heading": "Tastaturgenveje", "keyboard_shortcuts.home": "for at åbne hjemmetidslinjen", "keyboard_shortcuts.hotkey": "Hurtigtast", @@ -237,10 +239,10 @@ "keyboard_shortcuts.my_profile": "for at åbne din profil", "keyboard_shortcuts.notifications": "for at åbne notifikationskolonnen", "keyboard_shortcuts.open_media": "for at åbne medier", - "keyboard_shortcuts.pinned": "for at åbne listen over fastgjorte trut", + "keyboard_shortcuts.pinned": "Åben listen over fastgjorte indlæg", "keyboard_shortcuts.profile": "for at åbne forfatterens profil", "keyboard_shortcuts.reply": "for at besvare", - "keyboard_shortcuts.requests": "for at åbne følganmodningslisten", + "keyboard_shortcuts.requests": "Åben listen over følgeanmodninger", "keyboard_shortcuts.search": "for at fokusere søgningen", "keyboard_shortcuts.spoilers": "for at vise/skjule CW-felt", "keyboard_shortcuts.start": "for at åbne \"komme i gang\"-kolonnen", @@ -273,48 +275,48 @@ "missing_indicator.label": "Ikke fundet", "missing_indicator.sublabel": "Denne ressource kunne ikke findes", "mute_modal.duration": "Varighed", - "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", - "mute_modal.indefinite": "Uendeligt", - "navigation_bar.apps": "Mobil-apps", + "mute_modal.hide_notifications": "Skjul notifikationer fra brugeren?", + "mute_modal.indefinite": "Tidsubegrænset", + "navigation_bar.apps": "Apps til mobilen", "navigation_bar.blocks": "Blokerede brugere", "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", - "navigation_bar.compose": "Skriv nyt trut", + "navigation_bar.compose": "Skriv nyt indlæg", "navigation_bar.direct": "Direkte beskeder", "navigation_bar.discover": "Opdag", "navigation_bar.domain_blocks": "Blokerede domæner", "navigation_bar.edit_profile": "Redigér profil", "navigation_bar.favourites": "Favoritter", - "navigation_bar.filters": "Tavsgjorte ord", - "navigation_bar.follow_requests": "Følganmodninger", - "navigation_bar.follows_and_followers": "Følger og følgere", + "navigation_bar.filters": "Tystnede ord", + "navigation_bar.follow_requests": "Følgeanmodninger", + "navigation_bar.follows_and_followers": "Følges og følgere", "navigation_bar.info": "Om denne server", "navigation_bar.keyboard_shortcuts": "Hurtigtaster", "navigation_bar.lists": "Lister", - "navigation_bar.logout": "Log ud", - "navigation_bar.mutes": "Tavsgjorte brugere", + "navigation_bar.logout": "Log af", + "navigation_bar.mutes": "Tystnede brugere", "navigation_bar.personal": "Personlig", - "navigation_bar.pins": "Fastgjorte trut", + "navigation_bar.pins": "Fastgjorte indlæg", "navigation_bar.preferences": "Præferencer", - "navigation_bar.public_timeline": "Forenet tidslinje", + "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.security": "Sikkerhed", "notification.favourite": "{name} favoriserede dit trut", "notification.follow": "{name} fulgte dig", "notification.follow_request": "{name} har anmodet om at følge dig", "notification.mention": "{name} nævnte dig", "notification.own_poll": "Din afstemning er afsluttet", - "notification.poll": "En afstemning, hvori du stemte, er slut", - "notification.reblog": "{name} fremhævede din trut", - "notification.status": "{name} har netop postet", + "notification.poll": "En afstemning, du deltog i, er færdig", + "notification.reblog": "{name} fremhævede dit indlæg", + "notification.status": "{name} har netop udgivet", "notifications.clear": "Ryd notifikationer", - "notifications.clear_confirmation": "Sikker på, at du vil rydde alle dine notifikationer permanent?", + "notifications.clear_confirmation": "Er du sikker på, du vil rydde alle dine notifikationer permanent?", "notifications.column_settings.alert": "Skrivebordsnotifikationer", "notifications.column_settings.favourite": "Favoritter:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier", "notifications.column_settings.filter_bar.category": "Hurtigfilterbjælke", - "notifications.column_settings.filter_bar.show": "Vis", + "notifications.column_settings.filter_bar.show_bar": "Vis filterbjælke", "notifications.column_settings.follow": "Nye følgere:", - "notifications.column_settings.follow_request": "Nye følganmodninger:", + "notifications.column_settings.follow_request": "Nye følgeanmodninger:", "notifications.column_settings.mention": "Omtaler:", "notifications.column_settings.poll": "Afstemningsresultater:", "notifications.column_settings.push": "Pushnotifikationer", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Afspil lyd", "notifications.column_settings.status": "Nye indlæg:", - "notifications.column_settings.unread_markers.category": "Ulæste notifkationer-markører", + "notifications.column_settings.unread_notifications.category": "Ulæste notifikationer", + "notifications.column_settings.unread_notifications.highlight": "Fremhæv ulæste notifikationer", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Fremhævelser", "notifications.filter.favourites": "Favoritter", @@ -341,36 +344,44 @@ "notifications_permission_banner.title": "Gå aldrig glip af noget", "picture_in_picture.restore": "Sæt det tilbage", "poll.closed": "Lukket", - "poll.refresh": "Opfrisk", + "poll.refresh": "Opdatér", "poll.total_people": "{count, plural, one {# person} other {# personer}}", "poll.total_votes": "{count, plural, one {# stemme} other {# stemmer}}", "poll.vote": "Stem", - "poll.voted": "Du stemte for dette svar", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.voted": "Du stemte på dette svar", + "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}", "poll_button.add_poll": "Tilføj en afstemning", "poll_button.remove_poll": "Fjern afstemning", - "privacy.change": "Justér trutfortrolighed", + "privacy.change": "Justér fortrolighed", "privacy.direct.long": "Kun synlig for nævnte brugere", "privacy.direct.short": "Direkte", "privacy.private.long": "Kun synlig for følgere", "privacy.private.short": "Kun for følgere", - "privacy.public.long": "Synlig for alle på offentlige tidslinjer", + "privacy.public.long": "Synlig for alle og vises på offentlige tidslinjer", "privacy.public.short": "Offentlig", - "privacy.unlisted.long": "Synlig for alle, men på offentlige tidslinjer", - "privacy.unlisted.short": "Ulistet", - "refresh": "Opfrisk", + "privacy.unlisted.long": "Synlig for alle, men vises ikke på offentlige tidslinjer", + "privacy.unlisted.short": "Diskret", + "refresh": "Genindlæs", "regeneration_indicator.label": "Indlæser…", - "regeneration_indicator.sublabel": "Din hjemmefeed klargøres!", + "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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Videresend til {target}", - "report.forward_hint": "Kontoen er fra en anden server. Sende en anonymiseret anmeldelseskopi dertil også?", - "report.hint": "Anmeldelsen sendes til din serverordstyrerer. Du kan oplyse nærmere om kontoanmeldelsen nedennfor:", + "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:", "report.placeholder": "Yderligere kommentarer", "report.submit": "Indsend", "report.target": "Anmelder {target}", @@ -378,47 +389,52 @@ "search_popout.search_format": "Avanceret søgeformat", "search_popout.tips.full_text": "Simpel tekst returnerer trut, du har skrevet, favoriseret, fremhævede eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "trut", + "search_popout.tips.status": "indlæg", "search_popout.tips.text": "Simpel tekst returnerer matchende visnings- og brugernavne samt hashtags", "search_popout.tips.user": "bruger", "search_results.accounts": "Personer", "search_results.hashtags": "Hashtags", - "search_results.statuses": "Trut", + "search_results.statuses": "Indlæg", "search_results.statuses_fts_disabled": "På denne Mastodon-server er trutsøgning efter deres indhold ikke aktiveret.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", "status.admin_account": "Åbn modereringsbrugerflade for @{name}", "status.admin_status": "Åbn dette trut i modereringsbrugerflade", "status.block": "Blokér @{name}", - "status.bookmark": "Bogmærke", + "status.bookmark": "Tilføj bogmærke", "status.cancel_reblog_private": "Fjern fremhævning", - "status.cannot_reblog": "Dette indlæg kan ikke fremhæves", + "status.cannot_reblog": "Indlægget kan ikke fremhæves", "status.copy": "Kopiér link til trut", "status.delete": "Slet", - "status.detailed_status": "Detaljeret konversationsvisning", + "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.embed": "Indlejr", "status.favourite": "Favorit", "status.filtered": "Filtreret", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Indlæs mere", "status.media_hidden": "Medie skjult", "status.mention": "Nævn @{name}", "status.more": "Mere", - "status.mute": "Tavsgør @{name}", - "status.mute_conversation": "Tavsgør konversation", - "status.open": "Udvid dette trut", + "status.mute": "Skjul @{name}", + "status.mute_conversation": "Skjul samtale", + "status.open": "Udvid indlægget", "status.pin": "Fastgør til profil", "status.pinned": "Fastgjort trut", "status.read_more": "Læs mere", "status.reblog": "Fremhæv", "status.reblog_private": "Fremhæv med oprindelig synlighed", "status.reblogged_by": "{name} fremhævet", - "status.reblogs.empty": "Ingen har endnu fremhævet dette trut. Når nogen gør, vil det fremgå hér.", + "status.reblogs.empty": "Ingen har fremhævet indlægget endnu. Når nogen gør, vil det fremgå hér.", "status.redraft": "Slet og omskriv", "status.remove_bookmark": "Fjern bogmærke", "status.reply": "Besvar", - "status.replyAll": "Besvar til tråd", + "status.replyAll": "Svar på tråd", "status.report": "Anmeld @{name}", - "status.sensitive_warning": "Sensitivt indhold", + "status.sensitive_warning": "Følsomt indhold", "status.share": "Del", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", @@ -426,11 +442,11 @@ "status.show_more_all": "Vis mere for alle", "status.show_thread": "Vis tråd", "status.uncached_media_warning": "Utilgængelig", - "status.unmute_conversation": "Genaktivér konversation", + "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", "suggestions.dismiss": "Afvis foreslag", "suggestions.header": "Du er måske interesseret i…", - "tabs_bar.federated_timeline": "Forenede", + "tabs_bar.federated_timeline": "Fælles", "tabs_bar.home": "Hjem", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Notifikationer", @@ -438,7 +454,7 @@ "time_remaining.days": "{number, plural, one {# dag} other {# dage}} tilbage", "time_remaining.hours": "{number, plural, one {# time} other {# timer}} tilbage", "time_remaining.minutes": "{number, plural, one {# minut} other {# minutter}} tilbage", - "time_remaining.moments": "Få øjeblikke tilbage", + "time_remaining.moments": "Et øjeblik tilbage", "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} tilbage", "timeline_hint.remote_resource_not_displayed": "{resource} fra andre servere vises ikke.", "timeline_hint.resources.followers": "Følgere", @@ -446,13 +462,13 @@ "timeline_hint.resources.statuses": "Ældre indlæg", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} taler", "trends.trending_now": "Hot lige nu", - "ui.beforeunload": "Dit udkast går tabt, hvis du forlader Mastodon.", - "units.short.billion": "{count}MI", + "ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.", + "units.short.billion": "{count}G", "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "units.short.thousand": "{count}k", "upload_area.title": "Træk og slip for at uploade", "upload_button.label": "Tilføj billeder, en video- eller lydfil", - "upload_error.limit": "Filuploadgrænse nået.", + "upload_error.limit": "Grænse for filupload nået.", "upload_error.poll": "Filupload ikke tilladt for afstemninger.", "upload_form.audio_description": "Beskrivelse til hørehæmmede", "upload_form.description": "Beskrivelse til svagtseende", @@ -462,9 +478,9 @@ "upload_form.video_description": "Beskrivelse for hørehæmmede eller synshandicappede personer", "upload_modal.analyzing_picture": "Analyserer billede…", "upload_modal.apply": "Anvend", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Effektuerer…", "upload_modal.choose_image": "Vælg billede", - "upload_modal.description_placeholder": "En hurtig brun ræv hopper over den dovne hund", + "upload_modal.description_placeholder": "Høj bly gom vandt fræk sexquiz på wc", "upload_modal.detect_text": "Detektér tekst i billede", "upload_modal.edit_media": "Redigér medie", "upload_modal.hint": "Klik eller træk cirklen i forhåndsvisningen for at vælge det fokuspunkt, der altid vil være synligt på alle miniaturer.", @@ -477,8 +493,8 @@ "video.expand": "Udvid video", "video.fullscreen": "Fuldskærm", "video.hide": "Skjul video", - "video.mute": "Tavsgør lyd", + "video.mute": "Sluk lyden", "video.pause": "Sæt på pause", "video.play": "Afspil", - "video.unmute": "Fjern lydtavsgørelse" + "video.unmute": "Tænd for lyden" } diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 4e98b7e41..12ac0b253 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -47,16 +47,17 @@ "account.unmute": "@{name} nicht mehr stummschalten", "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten", "account_note.placeholder": "Notiz durch Klicken hinzufügen", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Durchschnitt", + "admin.dashboard.retention.cohort": "Anmeldemonat", + "admin.dashboard.retention.cohort_size": "Neue Benutzer", "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium}.", "alert.rate_limited.title": "Anfragelimit überschritten", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", "alert.unexpected.title": "Hoppla!", "announcement.announcement": "Ankündigung", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(unverarbeitet)", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", @@ -104,6 +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.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", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", "confirmations.delete_list.confirm": "Löschen", "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Verwerfen", + "confirmations.discard_edit_media.message": "Du hast ungespeicherte Änderungen an der Medienbeschreibung oder der Medienvorschau. Trotzdem verwerfen?", "confirmations.domain_block.confirm": "Die ganze Domain blockieren", "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Deine Folgenden von dieser Domain werden entfernt.", "confirmations.logout.confirm": "Abmelden", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favorisierungen:", "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an", "notifications.column_settings.filter_bar.category": "Schnellfilterleiste", - "notifications.column_settings.filter_bar.show": "Anzeigen", + "notifications.column_settings.filter_bar.show_bar": "Filterleiste anzeigen", "notifications.column_settings.follow": "Neue Folgende:", "notifications.column_settings.follow_request": "Neue Folgeanfragen:", "notifications.column_settings.mention": "Erwähnungen:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "In der Spalte anzeigen", "notifications.column_settings.sound": "Ton abspielen", "notifications.column_settings.status": "Neue Beiträge:", - "notifications.column_settings.unread_markers.category": "Ungelesene Benachrichtigungsmarkierungen", + "notifications.column_settings.unread_notifications.category": "Ungelesene Benachrichtigungen", + "notifications.column_settings.unread_notifications.highlight": "Ungelesene Benachrichtigungen hervorheben", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Geteilte Beiträge", "notifications.filter.favourites": "Favorisierungen", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# Stimme} other {# Stimmen}}", "poll.vote": "Abstimmen", "poll.voted": "Du hast dafür gestimmt", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# Stimme} other {# Stimmen}}", "poll_button.add_poll": "Eine Umfrage erstellen", "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,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.embed": "Einbetten", "status.favourite": "Favorisieren", "status.filtered": "Gefiltert", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Weitere laden", "status.media_hidden": "Medien versteckt", "status.mention": "@{name} erwähnen", @@ -462,7 +478,7 @@ "upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung", "upload_modal.analyzing_picture": "Analysiere Bild…", "upload_modal.apply": "Übernehmen", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Anwenden…", "upload_modal.choose_image": "Bild auswählen", "upload_modal.description_placeholder": "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste", "upload_modal.detect_text": "Text aus Bild erkennen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 950d73a46..1f6477e44 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -82,6 +82,23 @@ { "descriptors": [ { + "defaultMessage": "Other", + "id": "report.categories.other" + }, + { + "defaultMessage": "Spam", + "id": "report.categories.spam" + }, + { + "defaultMessage": "Content violates one or more server rules", + "id": "report.categories.violation" + } + ], + "path": "app/javascript/mastodon/components/admin/ReportReasonSelector.json" + }, + { + "descriptors": [ + { "defaultMessage": "Loading...", "id": "loading_indicator.label" }, @@ -98,8 +115,12 @@ "id": "admin.dashboard.retention.average" }, { - "defaultMessage": "Retention", - "id": "admin.dashboard.retention" + "defaultMessage": "User retention rate by day after sign-up", + "id": "admin.dashboard.daily_retention" + }, + { + "defaultMessage": "User retention rate by month after sign-up", + "id": "admin.dashboard.monthly_retention" } ], "path": "app/javascript/mastodon/components/admin/Retention.json" @@ -211,6 +232,27 @@ { "descriptors": [ { + "defaultMessage": "Edited {count, plural, one {{count} time} other {{count} times}}", + "id": "status.edited_x_times" + }, + { + "defaultMessage": "{name} created {date}", + "id": "status.history.created" + }, + { + "defaultMessage": "{name} edited {date}", + "id": "status.history.edited" + }, + { + "defaultMessage": "Edited {date}", + "id": "status.edited" + } + ], + "path": "app/javascript/mastodon/components/edited_timestamp/index.json" + }, + { + "descriptors": [ + { "defaultMessage": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", "id": "error.unexpected_crash.explanation_addons" }, @@ -382,22 +424,42 @@ "id": "relative_time.just_now" }, { + "defaultMessage": "just now", + "id": "relative_time.full.just_now" + }, + { "defaultMessage": "{number}s", "id": "relative_time.seconds" }, { + "defaultMessage": "{number, plural, one {# second} other {# seconds}} ago", + "id": "relative_time.full.seconds" + }, + { "defaultMessage": "{number}m", "id": "relative_time.minutes" }, { + "defaultMessage": "{number, plural, one {# minute} other {# minutes}} ago", + "id": "relative_time.full.minutes" + }, + { "defaultMessage": "{number}h", "id": "relative_time.hours" }, { + "defaultMessage": "{number, plural, one {# hour} other {# hours}} ago", + "id": "relative_time.full.hours" + }, + { "defaultMessage": "{number}d", "id": "relative_time.days" }, { + "defaultMessage": "{number, plural, one {# day} other {# days}} ago", + "id": "relative_time.full.days" + }, + { "defaultMessage": "Moments remaining", "id": "time_remaining.moments" }, @@ -448,6 +510,10 @@ "id": "status.redraft" }, { + "defaultMessage": "Edit", + "id": "status.edit" + }, + { "defaultMessage": "Direct message @{name}", "id": "status.direct" }, @@ -606,6 +672,10 @@ "id": "privacy.direct.short" }, { + "defaultMessage": "Edited {date}", + "id": "status.edited" + }, + { "defaultMessage": "Filtered", "id": "status.filtered" }, @@ -1106,6 +1176,10 @@ { "defaultMessage": "{publish}!", "id": "compose_form.publish_loud" + }, + { + "defaultMessage": "Save changes", + "id": "compose_form.save_changes" } ], "path": "app/javascript/mastodon/features/compose/components/compose_form.json" @@ -2594,6 +2668,10 @@ "id": "status.redraft" }, { + "defaultMessage": "Edit", + "id": "status.edit" + }, + { "defaultMessage": "Direct message @{name}", "id": "status.direct" }, @@ -2921,6 +2999,19 @@ { "descriptors": [ { + "defaultMessage": "{name} created {date}", + "id": "status.history.created" + }, + { + "defaultMessage": "{name} edited {date}", + "id": "status.history.edited" + } + ], + "path": "app/javascript/mastodon/features/ui/components/compare_history_modal.json" + }, + { + "descriptors": [ + { "defaultMessage": "Cancel", "id": "confirmation_modal.cancel" } diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 10e08cf97..78d071f66 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -47,16 +47,17 @@ "account.unmute": "Διακοπή αποσιώπησης @{name}", "account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}", "account_note.placeholder": "Κλικ για να βάλεις σημείωση", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort": "Μήνας εγγραφής", + "admin.dashboard.retention.cohort_size": "Νέοι χρήστες", "alert.rate_limited.message": "Παρακαλούμε δοκίμασε ξανά αφού περάσει η {retry_time, time, medium}.", "alert.rate_limited.title": "Περιορισμός συχνότητας", "alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.", "alert.unexpected.title": "Εεπ!", "announcement.announcement": "Ανακοίνωση", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(μη επεξεργασμένο)", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", "bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή", "compose_form.publish": "Τουτ", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Σημείωσε τα πολυμέσα ως ευαίσθητα", "compose_form.sensitive.marked": "Το πολυμέσο έχει σημειωθεί ως ευαίσθητο", "compose_form.sensitive.unmarked": "Το πολυμέσο δεν έχει σημειωθεί ως ευαίσθητο", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή τη δημοσίευση;", "confirmations.delete_list.confirm": "Διέγραψε", "confirmations.delete_list.message": "Σίγουρα θες να διαγράψεις οριστικά αυτή τη λίστα;", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Απόρριψη", + "confirmations.discard_edit_media.message": "Έχετε μη αποθηκευμένες αλλαγές στην περιγραφή πολυμέσων ή στην προεπισκόπηση, απορρίψτε τις ούτως ή άλλως;", "confirmations.domain_block.confirm": "Απόκρυψη ολόκληρου του τομέα", "confirmations.domain_block.message": "Σίγουρα θες να μπλοκάρεις ολόκληρο το {domain}; Συνήθως μερικά εστιασμένα μπλοκ ή αποσιωπήσεις επαρκούν και προτιμούνται. Δεν θα βλέπεις περιεχόμενο από αυτό τον κόμβο σε καμία δημόσια ροή, ούτε στις ειδοποιήσεις σου. Όσους ακόλουθους έχεις αυτό αυτό τον κόμβο θα αφαιρεθούν.", "confirmations.logout.confirm": "Αποσύνδεση", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Αγαπημένα:", "notifications.column_settings.filter_bar.advanced": "Εμφάνιση όλων των κατηγοριών", "notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου", - "notifications.column_settings.filter_bar.show": "Εμφάνιση", + "notifications.column_settings.filter_bar.show_bar": "Εμφάνιση μπάρας φίλτρου", "notifications.column_settings.follow": "Νέοι ακόλουθοι:", "notifications.column_settings.follow_request": "Νέο αίτημα παρακολούθησης:", "notifications.column_settings.mention": "Αναφορές:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Εμφάνισε σε στήλη", "notifications.column_settings.sound": "Ηχητική ειδοποίηση", "notifications.column_settings.status": "Νέα τουτ:", - "notifications.column_settings.unread_markers.category": "Δείκτες μη αναγνωσμένων ειδοποιήσεων", + "notifications.column_settings.unread_notifications.category": "Μη αναγνωσμένες ειδοποιήσεις", + "notifications.column_settings.unread_notifications.highlight": "Επισήμανση μη αναγνωσμένων ειδοποιήσεων", "notifications.filter.all": "Όλες", "notifications.filter.boosts": "Προωθήσεις", "notifications.filter.favourites": "Αγαπημένα", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# ψήφος} other {# ψήφοι}}", "poll.vote": "Ψήφισε", "poll.voted": "Ψηφίσατε αυτήν την απάντηση", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# ψήφος} other {# ψήφοι}}", "poll_button.add_poll": "Προσθήκη δημοσκόπησης", "poll_button.remove_poll": "Αφαίρεση δημοσκόπησης", "privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης", @@ -362,12 +365,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.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.forward": "Προώθηση προς {target}", "report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;", "report.hint": "Η καταγγελία θα σταλεί στους διαχειριστές του κόμβου σου. Μπορείς να περιγράψεις γιατί καταγγέλεις αυτόν το λογαριασμό παρακάτω:", @@ -396,9 +407,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.embed": "Ενσωμάτωσε", "status.favourite": "Σημείωσε ως αγαπημένο", "status.filtered": "Φιλτραρισμένα", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Φόρτωσε περισσότερα", "status.media_hidden": "Κρυμμένο πολυμέσο", "status.mention": "Ανέφερε τον/την @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Περιγραφή για άτομα με προβλήματα ακοής ή όρασης", "upload_modal.analyzing_picture": "Ανάλυση εικόνας…", "upload_modal.apply": "Εφαρμογή", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Εφαρμογή…", "upload_modal.choose_image": "Επιλογή εικόνας", "upload_modal.description_placeholder": "Λύκος μαύρος και ισχνός του πατέρα του καημός", "upload_modal.detect_text": "Αναγνώριση κειμένου από την εικόνα", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index ac7d4b53a..9b5676ee3 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -108,6 +109,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -368,12 +370,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -402,9 +412,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index ac1f195b4..c3f7e3acd 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -47,16 +47,17 @@ "account.unmute": "Malsilentigi @{name}", "account.unmute_notifications": "Malsilentigi sciigojn de @{name}", "account_note.placeholder": "Alklaku por aldoni noton", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Averaĝa", + "admin.dashboard.retention.cohort": "Registriĝo monato", + "admin.dashboard.retention.cohort_size": "Novaj uzantoj", "alert.rate_limited.message": "Bonvolu reprovi post {retry_time, time, medium}.", "alert.rate_limited.title": "Mesaĝkvante limigita", "alert.unexpected.message": "Neatendita eraro okazis.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Anonco", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(neprilaborita)", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", "compose_form.publish": "Hup", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Marki la aŭdovidaĵojn kiel tiklaj", "compose_form.sensitive.marked": "Aŭdovidaĵo markita tikla", "compose_form.sensitive.unmarked": "Aŭdovidaĵo ne markita tikla", @@ -118,7 +120,7 @@ "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun mesaĝon?", "confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Ne konservi", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Bloki la tutan domajnon", "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Stelumoj:", "notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn", "notifications.column_settings.filter_bar.category": "Rapida filtra breto", - "notifications.column_settings.filter_bar.show": "Montri", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Novaj sekvantoj:", "notifications.column_settings.follow_request": "Novaj petoj de sekvado:", "notifications.column_settings.mention": "Mencioj:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Montri en kolumno", "notifications.column_settings.sound": "Eligi sonon", "notifications.column_settings.status": "Novaj mesaĝoj:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Ĉiuj", "notifications.filter.boosts": "Diskonigoj", "notifications.filter.favourites": "Stelumoj", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# voĉdono} other {# voĉdonoj}}", "poll.vote": "Voĉdoni", "poll.voted": "Vi elektis por ĉi tiu respondo", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voĉdono} other {# voĉdonoj}}", "poll_button.add_poll": "Aldoni balotenketon", "poll_button.remove_poll": "Forigi balotenketon", "privacy.change": "Agordi mesaĝan privatecon", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Ŝargado…", "regeneration_indicator.sublabel": "Via hejma fluo pretiĝas!", "relative_time.days": "{number}t", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "nun", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "hodiaŭ", "reply_indicator.cancel": "Nuligi", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Plusendi al {target}", "report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?", "report.hint": "La signalo estos sendita al la kontrolantoj de via servilo. Vi povas doni klarigon pri kial vi signalas ĉi tiun konton sube:", @@ -396,9 +407,14 @@ "status.delete": "Forigi", "status.detailed_status": "Detala konversacia vido", "status.direct": "Rekte mesaĝi @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Enkorpigi", "status.favourite": "Stelumi", "status.filtered": "Filtrita", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Ŝargi pli", "status.media_hidden": "Aŭdovidaĵo kaŝita", "status.mention": "Mencii @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Priskribi por homoj kiuj malfacile aŭdi aŭ vidi", "upload_modal.analyzing_picture": "Bilda analizado…", "upload_modal.apply": "Apliki", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Apliki…", "upload_modal.choose_image": "Elekti bildon", "upload_modal.description_placeholder": "Laŭ Ludoviko Zamenhof bongustas freŝa ĉeĥa manĝaĵo kun spicoj", "upload_modal.detect_text": "Detekti tekston de la bildo", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 08e9564da..d57be2717 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Promedio", + "admin.dashboard.retention.cohort": "Mes de registro", + "admin.dashboard.retention.cohort_size": "Nuevos usuarios", "alert.rate_limited.message": "Por favor, reintentá después de las {retry_time, time, medium}.", "alert.rate_limited.title": "Acción limitada", "alert.unexpected.message": "Ocurrió un error.", "alert.unexpected.title": "¡Epa!", "announcement.announcement": "Anuncio", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "[sin procesar]", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -104,6 +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.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", @@ -118,8 +120,8 @@ "confirmations.delete.message": "¿Estás seguro que querés eliminar este mensaje?", "confirmations.delete_list.confirm": "Eliminar", "confirmations.delete_list.message": "¿Estás seguro que querés eliminar permanentemente esta lista?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Descartar", + "confirmations.discard_edit_media.message": "Tenés cambios sin guardar en la descripción de medios o en la vista previa, ¿querés descartarlos de todos modos?", "confirmations.domain_block.confirm": "Bloquear dominio entero", "confirmations.domain_block.message": "¿Estás completamente seguro que querés bloquear el {domain} entero? En la mayoría de los casos, unos cuantos bloqueos y silenciados puntuales son suficientes y preferibles. No vas a ver contenido de ese dominio en ninguna de tus líneas temporales o en tus notificaciones. Tus seguidores de ese dominio serán quitados.", "confirmations.logout.confirm": "Cerrar sesión", @@ -267,7 +269,7 @@ "lists.replies_policy.title": "Mostrar respuestas a:", "lists.search": "Buscar entre la gente que seguís", "lists.subheading": "Tus listas", - "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", + "load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}", "loading_indicator.label": "Cargando...", "media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}", "missing_indicator.label": "No se encontró", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", - "notifications.column_settings.filter_bar.show": "Mostrar", + "notifications.column_settings.filter_bar.show_bar": "Mostrar barra de filtros", "notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:", "notifications.column_settings.mention": "Menciones:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mostrar en columna", "notifications.column_settings.sound": "Reproducir sonido", "notifications.column_settings.status": "Nuevos mensajes:", - "notifications.column_settings.unread_markers.category": "Indicadores de notificaciones no leídas", + "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", + "notifications.column_settings.unread_notifications.highlight": "Resaltar notificaciones no leídas", "notifications.filter.all": "Todas", "notifications.filter.boosts": "Adhesiones", "notifications.filter.favourites": "Favoritos", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Votaste esta opción", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voto} other {# votos}}", "poll_button.add_poll": "Agregar encuesta", "poll_button.remove_poll": "Quitar encuesta", "privacy.change": "Configurar privacidad del mensaje", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,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.embed": "Insertar", "status.favourite": "Marcar como favorito", "status.filtered": "Filtrado", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Cargar más", "status.media_hidden": "Medios ocultos", "status.mention": "Mencionar a @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Agregá una descripción para personas con dificultades auditivas o visuales", "upload_modal.analyzing_picture": "Analizando imagen…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicando…", "upload_modal.choose_image": "Elegir imagen", "upload_modal.description_placeholder": "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.", "upload_modal.detect_text": "Detectar texto de la imagen", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index ffd159c02..ba56241ff 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -1,6 +1,6 @@ { "account.account_note_header": "Nota", - "account.add_or_remove_from_list": "Agregar o eliminar de listas", + "account.add_or_remove_from_list": "Agregar o eliminar de las listas", "account.badges.bot": "Bot", "account.badges.group": "Grupo", "account.block": "Bloquear a @{name}", @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Promedio", + "admin.dashboard.retention.cohort": "Mes de registro", + "admin.dashboard.retention.cohort_size": "Nuevos usuarios", "alert.rate_limited.message": "Por favor reintente después de {retry_time, time, medium}.", "alert.rate_limited.title": "Tarifa limitada", "alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(sin procesar)", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -104,6 +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.sensitive.hide": "Marcar multimedia como sensible", "compose_form.sensitive.marked": "Material marcado como sensible", "compose_form.sensitive.unmarked": "Material no marcado como sensible", @@ -118,8 +120,8 @@ "confirmations.delete.message": "¿Estás seguro de que quieres borrar este toot?", "confirmations.delete_list.confirm": "Eliminar", "confirmations.delete_list.message": "¿Seguro que quieres borrar esta lista permanentemente?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Descartar", + "confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo, ¿deseas descartarlos de cualquier manera?", "confirmations.domain_block.confirm": "Ocultar dominio entero", "confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio {domain} entero? En general unos cuantos bloqueos y silenciados concretos es suficiente y preferible.", "confirmations.logout.confirm": "Cerrar sesión", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", - "notifications.column_settings.filter_bar.show": "Mostrar", + "notifications.column_settings.filter_bar.show_bar": "Mostrar barra de filtros", "notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:", "notifications.column_settings.mention": "Menciones:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mostrar en columna", "notifications.column_settings.sound": "Reproducir sonido", "notifications.column_settings.status": "Nuevos toots:", - "notifications.column_settings.unread_markers.category": "Indicadores de notificaciones no leídas", + "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", + "notifications.column_settings.unread_notifications.highlight": "Destacar notificaciones no leídas", "notifications.filter.all": "Todos", "notifications.filter.boosts": "Retoots", "notifications.filter.favourites": "Favoritos", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Has votado a favor de esta respuesta", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voto} other {# votos}}", "poll_button.add_poll": "Añadir una encuesta", "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,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.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Cargar más", "status.media_hidden": "Contenido multimedia oculto", "status.mention": "Mencionar", @@ -462,7 +478,7 @@ "upload_form.video_description": "Describir para personas con problemas auditivos o visuales", "upload_modal.analyzing_picture": "Analizando imagen…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicando…", "upload_modal.choose_image": "Elegir imagen", "upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso", "upload_modal.detect_text": "Detectar texto de la imagen", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 2b7fb0b6c..0b91f0809 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Media", + "admin.dashboard.retention.cohort": "Mes de registro", + "admin.dashboard.retention.cohort_size": "Nuevos usuarios", "alert.rate_limited.message": "Por favor reintente después de {retry_time, time, medium}.", "alert.rate_limited.title": "Tarifa limitada", "alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(sin procesar)", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -104,6 +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.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}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "¿Estás seguro de que quieres borrar esta publicación?", "confirmations.delete_list.confirm": "Eliminar", "confirmations.delete_list.message": "¿Seguro que quieres borrar esta lista permanentemente?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Descartar", + "confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo audiovisual, ¿descartarlos de todos modos?", "confirmations.domain_block.confirm": "Ocultar dominio entero", "confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio {domain} entero? En general unos cuantos bloqueos y silenciados concretos es suficiente y preferible.", "confirmations.logout.confirm": "Cerrar sesión", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", - "notifications.column_settings.filter_bar.show": "Mostrar", + "notifications.column_settings.filter_bar.show_bar": "Mostrar barra de filtros", "notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:", "notifications.column_settings.mention": "Menciones:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mostrar en columna", "notifications.column_settings.sound": "Reproducir sonido", "notifications.column_settings.status": "Nuevas publicaciones:", - "notifications.column_settings.unread_markers.category": "Indicadores de notificaciones no leídas", + "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", + "notifications.column_settings.unread_notifications.highlight": "Destacar notificaciones no leídas", "notifications.filter.all": "Todos", "notifications.filter.boosts": "Retoots", "notifications.filter.favourites": "Favoritos", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Has votado a favor de esta respuesta", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voto} other {# votos}}", "poll_button.add_poll": "Añadir una encuesta", "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,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.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Cargar más", "status.media_hidden": "Contenido multimedia oculto", "status.mention": "Mencionar", @@ -462,7 +478,7 @@ "upload_form.video_description": "Describir para personas con problemas auditivos o visuales", "upload_modal.analyzing_picture": "Analizando imagen…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicando…", "upload_modal.choose_image": "Elegir imagen", "upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso", "upload_modal.detect_text": "Detectar texto de la imagen", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index e71e56dee..c1c71a91a 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -47,7 +47,8 @@ "account.unmute": "Ära vaigista @{name}", "account.unmute_notifications": "Ära vaigista teateid kasutajalt @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Muuda küsitlust lubamaks ainult ühte valikut", "compose_form.publish": "Tuut", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Märgista meedia tundlikuks", "compose_form.sensitive.marked": "Meedia on sensitiivseks märgitud", "compose_form.sensitive.unmarked": "Meedia ei ole sensitiivseks märgitud", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Lemmikud:", "notifications.column_settings.filter_bar.advanced": "Kuva kõik kategooriad", "notifications.column_settings.filter_bar.category": "Kiirfiltri riba", - "notifications.column_settings.filter_bar.show": "Kuva", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Uued jälgijad:", "notifications.column_settings.follow_request": "Uued jälgimistaotlused:", "notifications.column_settings.mention": "Mainimised:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Kuva tulbas", "notifications.column_settings.sound": "Mängi heli", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Kõik", "notifications.filter.boosts": "Upitused", "notifications.filter.favourites": "Lemmikud", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Laeb…", "regeneration_indicator.sublabel": "Teie kodu voog on ettevalmistamisel!", "relative_time.days": "{number}p", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}t", "relative_time.just_now": "nüüd", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "täna", "reply_indicator.cancel": "Tühista", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Edasta kasutajale {target}", "report.forward_hint": "See kasutaja on teisest serverist. Kas saadan anonümiseeritud koopia sellest teatest sinna ka?", "report.hint": "See teade saadetakse Teie serveri moderaatoritele. Te saate lisada selgituse selle kohta, miks selle kasutaja kohta teate esitasite, siin:", @@ -396,9 +407,14 @@ "status.delete": "Kustuta", "status.detailed_status": "Detailne vestluskuva", "status.direct": "Otsesõnum @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Sängita", "status.favourite": "Lemmik", "status.filtered": "Filtreeritud", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Lae veel", "status.media_hidden": "Meedia peidetud", "status.mention": "Mainimine @{name}", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index b457b7d45..4581dfe95 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -47,16 +47,17 @@ "account.unmute": "Desmututu @{name}", "account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Batezbestekoa", + "admin.dashboard.retention.cohort": "Izen emate hilean", + "admin.dashboard.retention.cohort_size": "Erabiltzaile berriak", "alert.rate_limited.message": "Saiatu {retry_time, time, medium} barru.", "alert.rate_limited.title": "Abiadura mugatua", "alert.unexpected.message": "Ustekabeko errore bat gertatu da.", "alert.unexpected.title": "Ene!", "announcement.announcement": "Iragarpena", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(prozesatu gabe)", "autosuggest_hashtag.per_week": "{count} asteko", "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko", "bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.", @@ -104,6 +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.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", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Ziur bidalketa hau ezabatu nahi duzula?", "confirmations.delete_list.confirm": "Ezabatu", "confirmations.delete_list.message": "Ziur behin betiko ezabatu nahi duzula zerrenda hau?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Baztertu", + "confirmations.discard_edit_media.message": "Multimediaren deskribapen edo aurrebistan gorde gabeko aldaketak daude, baztertu nahi dituzu?", "confirmations.domain_block.confirm": "Ezkutatu domeinu osoa", "confirmations.domain_block.message": "Ziur, erabat ziur, {domain} domeinu osoa blokeatu nahi duzula? Gehienetan gutxi batzuk blokeatu edo mututzearekin nahikoa da. Ez duzu domeinu horretako edukirik ikusiko denbora lerroetan edo jakinarazpenetan. Domeinu horretako zure jarraitzaileak kenduko dira ere.", "confirmations.logout.confirm": "Amaitu saioa", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Gogokoak:", "notifications.column_settings.filter_bar.advanced": "Erakutsi kategoria guztiak", "notifications.column_settings.filter_bar.category": "Iragazki azkarraren barra", - "notifications.column_settings.filter_bar.show": "Erakutsi", + "notifications.column_settings.filter_bar.show_bar": "Erakutsi iragazki-barra", "notifications.column_settings.follow": "Jarraitzaile berriak:", "notifications.column_settings.follow_request": "Jarraitzeko eskaera berriak:", "notifications.column_settings.mention": "Aipamenak:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Erakutsi zutabean", "notifications.column_settings.sound": "Jo soinua", "notifications.column_settings.status": "Bidalketa berriak:", - "notifications.column_settings.unread_markers.category": "Irakurri gabeko jakinarazpenen markatzaileak", + "notifications.column_settings.unread_notifications.category": "Irakurri gabeko jakinarazpenak", + "notifications.column_settings.unread_notifications.highlight": "Nabarmendu irakurri gabeko jakinarazpenak", "notifications.filter.all": "Denak", "notifications.filter.boosts": "Bultzadak", "notifications.filter.favourites": "Gogokoak", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {boto #} other {# boto}}", "poll.vote": "Bozkatu", "poll.voted": "Erantzun honi eman diozu botoa", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {boto #} other {# boto}}", "poll_button.add_poll": "Gehitu inkesta bat", "poll_button.remove_poll": "Kendu inkesta", "privacy.change": "Aldatu bidalketaren pribatutasuna", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,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.embed": "Txertatu", "status.favourite": "Gogokoa", "status.filtered": "Iragazita", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Kargatu gehiago", "status.media_hidden": "Multimedia ezkutatua", "status.mention": "Aipatu @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Deskribatu entzumen galera edo ikusmen urritasuna duten pertsonentzat", "upload_modal.analyzing_picture": "Irudia aztertzen…", "upload_modal.apply": "Aplikatu", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplikatzen…", "upload_modal.choose_image": "Aukeratu irudia", "upload_modal.description_placeholder": "Vaudeville itxurako filmean yogi ñaño bat jipoitzen dute Quebec-en whiski truk", "upload_modal.detect_text": "Antzeman testua iruditik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index c0582da74..f36850dc2 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -1,11 +1,11 @@ { "account.account_note_header": "یادداشت", - "account.add_or_remove_from_list": "افزودن یا برداشتن از فهرستها", - "account.badges.bot": "ربات", + "account.add_or_remove_from_list": "افزودن یا برداشتن از سیاههها", + "account.badges.bot": "روبات", "account.badges.group": "گروه", "account.block": "مسدود کردن @{name}", "account.block_domain": "مسدود کردن دامنهٔ {domain}", - "account.blocked": "مسدود شده", + "account.blocked": "مسدود", "account.browse_more_on_origin_server": "مرور بیشتر روی نمایهٔ اصلی", "account.cancel_follow_request": "لغو درخواست پیگیری", "account.direct": "پیام مستقیم به @{name}", @@ -20,7 +20,7 @@ "account.followers_counter": "{count, plural, one {{counter} پیگیرنده} other {{counter} پیگیرنده}}", "account.following_counter": "{count, plural, one {{counter} پیگرفته} other {{counter} پیگرفته}}", "account.follows.empty": "این کاربر هنوز پیگیر کسی نیست.", - "account.follows_you": "پیگیر شماست", + "account.follows_you": "پی میگیردتان", "account.hide_reblogs": "نهفتن تقویتهای @{name}", "account.joined": "پیوسته از {date}", "account.last_status": "آخرین فعّالیت", @@ -47,23 +47,24 @@ "account.unmute": "ناخموشی @{name}", "account.unmute_notifications": "ناخموشی آگاهیها از @{name}", "account_note.placeholder": "برای افزودن یادداشت کلیک کنید", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "میانگین", + "admin.dashboard.retention.cohort": "ماه ثبتنام", + "admin.dashboard.retention.cohort_size": "کاربران جدید", "alert.rate_limited.message": "لطفاً پس از {retry_time, time, medium} دوباره بیازمایید.", "alert.rate_limited.title": "محدودیت تعداد", "alert.unexpected.message": "خطایی غیرمنتظره رخ داد.", "alert.unexpected.title": "ای وای!", "announcement.announcement": "اعلامیه", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(پردازش نشده)", "autosuggest_hashtag.per_week": "{count} در هفته", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", - "bundle_column_error.body": "هنگام بارگزاری این بخش خطایی رخ داد.", + "bundle_column_error.body": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_column_error.retry": "تلاش دوباره", "bundle_column_error.title": "خطای شبکه", "bundle_modal_error.close": "بستن", - "bundle_modal_error.message": "هنگام بارگزاری این بخش خطایی رخ داد.", + "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانکها", @@ -74,7 +75,7 @@ "column.favourites": "پسندیدهها", "column.follow_requests": "درخواستهای پیگیری", "column.home": "خانه", - "column.lists": "فهرستها", + "column.lists": "سیاههها", "column.mutes": "کاربران خموش", "column.notifications": "آگاهیها", "column.pins": "فرستههای سنجاقشده", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تکگزینهای", "compose_form.publish": "بوق", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "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 {رسانهها به عنوان حساس علامتگذاری نشدند}}", @@ -117,9 +119,9 @@ "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "آیا مطمئنید که میخواهید این فرسته را حذف کنید؟", "confirmations.delete_list.confirm": "حذف", - "confirmations.delete_list.message": "مطمئنید میخواهید این فهرست را برای همیشه حذف کنید؟", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.delete_list.message": "مطمئنید میخواهید این سیاهه را برای همیشه حذف کنید؟", + "confirmations.discard_edit_media.confirm": "دور انداختن", + "confirmations.discard_edit_media.message": "تغییرات ذخیره نشدهای در توضیحات یا پیشنمایش رسانه دارید. همگی نادیده گرفته شوند؟", "confirmations.domain_block.confirm": "مسدود کردن تمام دامنه", "confirmations.domain_block.message": "آیا جدی جدی میخواهید تمام دامنهٔ {domain} را مسدود کنید؟ در بیشتر موارد مسدود کردن یا خموشاندن چند حساب خاص کافی است و توصیه میشود. پس از این کار شما هیچ محتوایی را از این دامنه در خط زمانی عمومی یا آگاهیهایتان نخواهید دید. پیگیرانتان از این دامنه هم برداشته خواهند شد.", "confirmations.logout.confirm": "خروج از حساب", @@ -170,12 +172,12 @@ "empty_column.follow_recommendations": "ظاهرا هیچ پیشنهادی برای شما نمیتوانیم تولید کنیم. میتوانید از امکان جستوجو برای یافتن افرادی که ممکن است بشناسید و یا کاوش میان برچسبهای داغ استفاده کنید.", "empty_column.follow_requests": "شما هنوز هیچ درخواست پیگیریای ندارید. هنگامی که چنین درخواستی بگیرید، اینجا نشان داده خواهد شد.", "empty_column.hashtag": "هنوز هیچ چیزی در این برچسب نیست.", - "empty_column.home": "خط زمانی خانگی شما خالی است! افراد بیشتری را پیگیری کنید تا پُر شود. {suggestions}", + "empty_column.home": "خط زمانی خانگیتان خالی است! برای پر کردنش، افراد بیشتری را پی بگیرید. {suggestions}", "empty_column.home.suggestions": "چند پیشنهاد را ببینید", - "empty_column.list": "در این فهرست هنوز چیزی نیست. هنگامی که اعضای این فهرست چیزی بفرستند، اینجا ظاهر خواهد شد.", - "empty_column.lists": "هنوز هیچ فهرستی ندارید. هنگامی که فهرستی بسازید، اینجا نشان داده خواهد شد.", + "empty_column.list": "هنوز چیزی در این سیاهه نیست. هنگامی که اعضایش فرستههای جدیدی بفرستند، اینجا ظاهر خواهند شد.", + "empty_column.lists": "هنوز هیچ سیاههای ندارید. هنگامی که یکی بسازید، اینجا نشان داده خواهد شد.", "empty_column.mutes": "هنوز هیچ کاربری را خموش نکردهاید.", - "empty_column.notifications": "هنوز هیچ اعلانی ندارید. به دیگران واکنش نشان دهید تا گفتگو آغاز شود.", + "empty_column.notifications": "هنوز هیچ آگاهیآی ندارید. هنگامی که دیگران با شما برهمکنش داشته باشند،اینحا خواهید دیدش.", "empty_column.public": "اینجا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران کارسازهای دیگر را پیگیری کنید تا اینجا پُر شود", "error.unexpected_crash.explanation": "به خاطر اشکالی در کدهای ما یا ناسازگاری با مرورگر شما، این صفحه به درستی نمایش نیافت.", "error.unexpected_crash.explanation_addons": "این صفحه نمیتواند درست نشان داده شود. احتمالاً این خطا ناشی از یک افزونهٔ مرورگر یا ابزار ترجمهٔ خودکار است.", @@ -216,16 +218,16 @@ "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}", "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}", "keyboard_shortcuts.back": "بازگشت", - "keyboard_shortcuts.blocked": "گشودن فهرست کاربران مسدود شده", + "keyboard_shortcuts.blocked": "گشودن سیاههٔ کاربران مسدود", "keyboard_shortcuts.boost": "تقویت فرسته", "keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستونها", "keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن", "keyboard_shortcuts.description": "توضیح", "keyboard_shortcuts.direct": "گشودن ستون پیامهای مستقیم", - "keyboard_shortcuts.down": "پایین رفتن در فهرست", + "keyboard_shortcuts.down": "پایین بردن در سیاهه", "keyboard_shortcuts.enter": "گشودن فرسته", "keyboard_shortcuts.favourite": "پسندیدن فرسته", - "keyboard_shortcuts.favourites": "گشودن فهرست پسندیدهها", + "keyboard_shortcuts.favourites": "گشودن سیاههٔ برگزیدهها", "keyboard_shortcuts.federated": "گشودن خط زمانی همگانی", "keyboard_shortcuts.heading": "میانبرهای صفحهکلید", "keyboard_shortcuts.home": "گشودن خط زمانی خانگی", @@ -237,10 +239,10 @@ "keyboard_shortcuts.my_profile": "گشودن نمایهتان", "keyboard_shortcuts.notifications": "گشودن ستون آگاهیها", "keyboard_shortcuts.open_media": "گشودن رسانه", - "keyboard_shortcuts.pinned": "گشودن فهرست فرستههای سنجاقشده", + "keyboard_shortcuts.pinned": "گشودن سیاههٔ فرستههای سنجاق شده", "keyboard_shortcuts.profile": "گشودن نمایهٔ نویسنده", "keyboard_shortcuts.reply": "پاسخ به فرسته", - "keyboard_shortcuts.requests": "گشودن فهرست درخواستهای پیگیری", + "keyboard_shortcuts.requests": "گشودن سیاههٔ درخواستهای پیگیری", "keyboard_shortcuts.search": "تمرکز روی جستوجو", "keyboard_shortcuts.spoilers": "نمایش/نهفتن زمینهٔ هشدار محتوا", "keyboard_shortcuts.start": "گشودن ستون «آغاز کنید»", @@ -248,32 +250,32 @@ "keyboard_shortcuts.toggle_sensitivity": "نمایش/نهفتن رسانه", "keyboard_shortcuts.toot": "شروع یک فرستهٔ جدید", "keyboard_shortcuts.unfocus": "برداشتن تمرکز از نوشتن/جستوجو", - "keyboard_shortcuts.up": "بالا رفتن در فهرست", + "keyboard_shortcuts.up": "بالا بردن در سیاهه", "lightbox.close": "بستن", "lightbox.compress": "فشردهسازی جعبهٔ نمایش تصویر", "lightbox.expand": "گسترش جعبهٔ نمایش تصویر", "lightbox.next": "بعدی", "lightbox.previous": "قبلی", - "lists.account.add": "افزودن به فهرست", - "lists.account.remove": "برداشتن از فهرست", - "lists.delete": "حذف فهرست", - "lists.edit": "ویرایش فهرست", + "lists.account.add": "افزودن به سیاهه", + "lists.account.remove": "برداشتن از سیاهه", + "lists.delete": "حذف سیاهه", + "lists.edit": "ویرایش سیاهه", "lists.edit.submit": "تغییر عنوان", - "lists.new.create": "افزودن فهرست", - "lists.new.title_placeholder": "عنوان فهرست جدید", + "lists.new.create": "افزودن سیاهه", + "lists.new.title_placeholder": "عنوان سیاههٔ جدید", "lists.replies_policy.followed": "هر کاربر پیگرفته", - "lists.replies_policy.list": "اعضای فهرست", + "lists.replies_policy.list": "اعضای سیاهه", "lists.replies_policy.none": "هیچ کدام", "lists.replies_policy.title": "نمایش پاسخها به:", "lists.search": "جستوجو بین کسانی که پیگرفتهاید", - "lists.subheading": "فهرستهای شما", + "lists.subheading": "سیاهههایتان", "load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}", - "loading_indicator.label": "بارگزاری...", + "loading_indicator.label": "بار کردن…", "media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}", "missing_indicator.label": "پیدا نشد", "missing_indicator.sublabel": "این منبع پیدا نشد", "mute_modal.duration": "مدت زمان", - "mute_modal.hide_notifications": "اعلانهای این کاربر پنهان شود؟", + "mute_modal.hide_notifications": "نهفتن آگاهیها از این کاربر؟", "mute_modal.indefinite": "نامعلوم", "navigation_bar.apps": "برنامههای تلفن همراه", "navigation_bar.blocks": "کاربران مسدود شده", @@ -290,7 +292,7 @@ "navigation_bar.follows_and_followers": "پیگرفتگان و پیگیرندگان", "navigation_bar.info": "دربارهٔ این کارساز", "navigation_bar.keyboard_shortcuts": "میانبرها", - "navigation_bar.lists": "فهرستها", + "navigation_bar.lists": "سیاههها", "navigation_bar.logout": "خروج", "navigation_bar.mutes": "کاربران خموشانده", "navigation_bar.personal": "شخصی", @@ -306,23 +308,24 @@ "notification.poll": "نظرسنجیای که در آن رأی دادید به پایان رسیده است", "notification.reblog": "{name} فرستهتان را تقویت کرد", "notification.status": "{name} چیزی فرستاد", - "notifications.clear": "پاککردن آگاهیها", + "notifications.clear": "پاکسازی آگاهیها", "notifications.clear_confirmation": "مطمئنید میخواهید همهٔ آگاهیهایتان را برای همیشه پاک کنید؟", "notifications.column_settings.alert": "آگاهیهای میزکار", "notifications.column_settings.favourite": "پسندیدهها:", "notifications.column_settings.filter_bar.advanced": "نمایش همۀ دستهها", "notifications.column_settings.filter_bar.category": "نوار پالایش سریع", - "notifications.column_settings.filter_bar.show": "نمایش", + "notifications.column_settings.filter_bar.show_bar": "نمایش نوار پالایه", "notifications.column_settings.follow": "پیگیرندگان جدید:", "notifications.column_settings.follow_request": "درخواستهای جدید پیگیری:", "notifications.column_settings.mention": "نامبردنها:", "notifications.column_settings.poll": "نتایج نظرسنجی:", - "notifications.column_settings.push": "اعلانها از سمت سرور", + "notifications.column_settings.push": "آگاهیهای ارسالی", "notifications.column_settings.reblog": "تقویتها:", "notifications.column_settings.show": "نمایش در ستون", "notifications.column_settings.sound": "پخش صدا", "notifications.column_settings.status": "فرستههای جدید:", - "notifications.column_settings.unread_markers.category": "نشانهگذارهای آگاهیهای خواندهنشده", + "notifications.column_settings.unread_notifications.category": "آگاهیهای خوانده نشده", + "notifications.column_settings.unread_notifications.highlight": "پررنگ کردن آگاهیهای خوانده نشده", "notifications.filter.all": "همه", "notifications.filter.boosts": "تقویتها", "notifications.filter.favourites": "پسندها", @@ -335,9 +338,9 @@ "notifications.mark_as_read": "نشانهگذاری تمام آگاهیها به خواندهشده", "notifications.permission_denied": "آگاهیهای میزکار به دلیل رد کردن درخواست اجازهٔ پیشین مرورگر، در دسترس نیستند", "notifications.permission_denied_alert": "از آنجا که پیش از این اجازهٔ مرورگر رد شده است، آگاهیهای میزکار نمیتوانند به کار بیفتند", - "notifications.permission_required": "اعلانهای میزکار در دسترس نیستند زیرا نیازمند مجوزی هستند که اعطا نشده است.", + "notifications.permission_required": "آگاهیهای میزکار در دسترس نیستند زیرا اجازههای لازم، اعطا نشده.", "notifications_permission_banner.enable": "به کار انداختن آگاهیهای میزکار", - "notifications_permission_banner.how_to_control": "اگر میخواهید حتی زمانی که ماستودون باز نیست اعلانها نمایش یابند، اعلانهای میزکار را فعال کنید. به محض فعال شدن از طریق دکمه {icon} بالا میتوانید به دقت کنترل کنید که چه نوع از تعاملها باعث صادر شدن اعلانها شوند.", + "notifications_permission_banner.how_to_control": "برای دریافت آگاهیها هنگام باز نبودن ماستودون، آگاهیهای میزکار را به کار بیندازید. پس از به کار افتادنشان میتوانید گونههای دقیق برهمکنشهایی که آگاهیهای میزکار تولید میکنند را از {icon} بالا واپایید.", "notifications_permission_banner.title": "هرگز چیزی را از دست ندهید", "picture_in_picture.restore": "برگرداندن", "poll.closed": "پایانیافته", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# رأی} other {# رأی}}", "poll.vote": "رأی", "poll.voted": "شما به این جواب رأی دادید", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "# رأی", "poll_button.add_poll": "افزودن نظرسنجی", "poll_button.remove_poll": "برداشتن نظرسنجی", "privacy.change": "تغییر محرمانگی فرسته", @@ -357,17 +360,25 @@ "privacy.public.long": "نمایان برای همه، در خطهای زمانی همگانی نمایش داده خواهد شد", "privacy.public.short": "عمومی", "privacy.unlisted.long": "نمایان برای همه، ولی در خطهای زمانی همگانی نمایش داده نخواهد شد", - "privacy.unlisted.short": "فهرستنشده", + "privacy.unlisted.short": "فهرست نشده", "refresh": "نوسازی", "regeneration_indicator.label": "در حال بار شدن…", - "regeneration_indicator.sublabel": "این فهرست دارد آماده میشود!", + "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.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.forward": "فرستادن به {target}", "report.forward_hint": "این حساب در کارساز دیگری ثبت شده. آیا میخواهید رونوشتی ناشناس از این گزارش به آنجا هم فرستاده شود؟", "report.hint": "این گزارش به مدیران کارسازتان فرستاده خواهد شد. میتوانید دلیل گزارش این حساب را در ادامه بنویسید:", @@ -396,10 +407,15 @@ "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.embed": "جاگذاری", "status.favourite": "پسندیدن", "status.filtered": "پالایششده", - "status.load_more": "بارگزاری بیشتر", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", + "status.load_more": "بار کردن بیشتر", "status.media_hidden": "رسانهٔ نهفته", "status.mention": "نامبردن از @{name}", "status.more": "بیشتر", @@ -462,7 +478,7 @@ "upload_form.video_description": "برای کمبینایان یا ناشنوایان توصیفش کنید", "upload_modal.analyzing_picture": "در حال پردازش تصویر…", "upload_modal.apply": "اعمال", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "اعمال کردن…", "upload_modal.choose_image": "گزینش تصویر", "upload_modal.description_placeholder": "الا یا ایّها الساقی، ادر کأساً و ناولها", "upload_modal.detect_text": "تشخیص متن درون عکس", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 6829aced1..58e65bed1 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -9,10 +9,10 @@ "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", "account.cancel_follow_request": "Peruuta seurauspyyntö", "account.direct": "Pikaviesti käyttäjälle @{name}", - "account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} viestii", + "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", "account.domain_blocked": "Verkko-osoite piilotettu", "account.edit_profile": "Muokkaa profiilia", - "account.enable_notifications": "Ilmoita minulle, kun @{name} viestii", + "account.enable_notifications": "Ilmoita @{name}:n julkaisuista", "account.endorse": "Suosittele profiilissasi", "account.follow": "Seuraa", "account.followers": "Seuraajat", @@ -43,20 +43,21 @@ "account.unblock": "Salli @{name}", "account.unblock_domain": "Salli {domain}", "account.unendorse": "Poista suosittelu profiilistasi", - "account.unfollow": "Lakkaa seuraamasta", + "account.unfollow": "Lopeta seuraaminen", "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Keskimäärin", + "admin.dashboard.retention.cohort": "Kirjautumiset", + "admin.dashboard.retention.cohort_size": "Uudet käyttäjät", "alert.rate_limited.message": "Yritä uudestaan {retry_time, time, medium} jälkeen.", "alert.rate_limited.title": "Määrää rajoitettu", "alert.unexpected.message": "Tapahtui odottamaton virhe.", "alert.unexpected.title": "Hups!", "announcement.announcement": "Ilmoitus", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(käsittelemätön)", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.", @@ -77,7 +78,7 @@ "column.lists": "Listat", "column.mutes": "Mykistetyt käyttäjät", "column.notifications": "Ilmoitukset", - "column.pins": "Kiinnitetyt tuuttaukset", + "column.pins": "Kiinnitetyt julkaisut", "column.public": "Yleinen aikajana", "column_back_button.label": "Takaisin", "column_header.hide_settings": "Piilota asetukset", @@ -92,7 +93,7 @@ "community.column_settings.remote_only": "Vain etäkäyttö", "compose_form.direct_message_warning": "Tämä viesti näkyy vain mainituille käyttäjille.", "compose_form.direct_message_warning_learn_more": "Lisätietoja", - "compose_form.hashtag_warning": "Tämä tuuttaus ei näy hashtag-hauissa, koska se on listaamaton. Hashtagien avulla voi hakea vain julkisia tuuttauksia.", + "compose_form.hashtag_warning": "Tätä julkaisua listata minkään hastagin alle, koska se on listaamaton. Ainoastaan julkisia julkaisuja etsiä hastageilla.", "compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.", "compose_form.lock_disclaimer.lock": "lukittu", "compose_form.placeholder": "Mitä sinulla on mielessäsi?", @@ -104,6 +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.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}}", @@ -115,23 +117,23 @@ "confirmations.block.confirm": "Estä", "confirmations.block.message": "Haluatko varmasti estää käyttäjän {name}?", "confirmations.delete.confirm": "Poista", - "confirmations.delete.message": "Haluatko varmasti poistaa tämän tilapäivityksen?", + "confirmations.delete.message": "Haluatko varmasti poistaa tämän julkaisun?", "confirmations.delete_list.confirm": "Poista", "confirmations.delete_list.message": "Haluatko varmasti poistaa tämän listan kokonaan?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Hylkää", + "confirmations.discard_edit_media.message": "Onko sinulla tallentamattomia muutoksia kuvaukseen tai esikatseluun, hylätäänkö ne silti?", "confirmations.domain_block.confirm": "Piilota koko verkko-osoite", "confirmations.domain_block.message": "Oletko todella varma, että haluat estää koko {domain}? Useimmissa tapauksissa muutama kohdennettu lohko tai mykistys on riittävä ja parempi. Et näe kyseisen verkkotunnuksen sisältöä missään julkisessa aikajanassa tai ilmoituksissa. Seuraajasi tältä verkkotunnukselta poistetaan.", "confirmations.logout.confirm": "Kirjaudu ulos", "confirmations.logout.message": "Oletko varma, että haluat kirjautua ulos?", "confirmations.mute.confirm": "Mykistä", - "confirmations.mute.explanation": "Tämä piilottaa päivitykset heiltä ja päivitykset, joissa hänet mainitaan, mutta sallii silti heidän nähdä sinun päivityksesi ja seurata sinua.", + "confirmations.mute.explanation": "Tämä piilottaa heidän julkaisut ja julkaisut, joissa heidät mainitaan, mutta sallii edelleen heidän nähdä julkaisusi ja seurata sinua.", "confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?", "confirmations.redraft.confirm": "Poista & palauta muokattavaksi", - "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.", + "confirmations.redraft.message": "Oletko varma että haluat poistaa tämän julkaisun ja tehdä siitä uuden luonnoksen? Suosikit ja buustaukset menetään, alkuperäisen julkaisusi vastaukset jäävät orvoiksi.", "confirmations.reply.confirm": "Vastaa", "confirmations.reply.message": "Jos vastaat nyt, vastaus korvaa tällä hetkellä työstämäsi viestin. Oletko varma, että haluat jatkaa?", - "confirmations.unfollow.confirm": "Lakkaa seuraamasta", + "confirmations.unfollow.confirm": "Lopeta seuraaminen", "confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta käyttäjää {name}?", "conversation.delete": "Poista keskustelu", "conversation.mark_as_read": "Merkitse luetuksi", @@ -141,7 +143,7 @@ "directory.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", "directory.recently_active": "Hiljattain aktiiviset", - "embed.instructions": "Upota statuspäivitys sivullesi kopioimalla alla oleva koodi.", + "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", "emoji_button.custom": "Mukautetut", @@ -184,8 +186,8 @@ "errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle", "errors.unexpected_crash.report_issue": "Ilmoita ongelmasta", "follow_recommendations.done": "Valmis", - "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä viestejä! Tässä on muutamia ehdotuksia.", - "follow_recommendations.lead": "Viestit seuraamiltasi henkilöiltä näkyvät aikajärjestyksessä kotinäytön syötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraaminen yhtä helposti milloin tahansa!", + "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä julkaisuja! Tässä on muutamia ehdotuksia.", + "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", @@ -223,7 +225,7 @@ "keyboard_shortcuts.description": "Kuvaus", "keyboard_shortcuts.direct": "Avaa pikaviestisarake", "keyboard_shortcuts.down": "Siirry listassa alaspäin", - "keyboard_shortcuts.enter": "Avaa viesti", + "keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.favourite": "Lisää suosikkeihin", "keyboard_shortcuts.favourites": "Avaa lista suosikeista", "keyboard_shortcuts.federated": "Avaa yleinen aikajana", @@ -289,7 +291,7 @@ "navigation_bar.follow_requests": "Seuraamispyynnöt", "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat", "navigation_bar.info": "Tietoa tästä palvelimesta", - "navigation_bar.keyboard_shortcuts": "Näppäinkomennot", + "navigation_bar.keyboard_shortcuts": "Pikanäppäimet", "navigation_bar.lists": "Listat", "navigation_bar.logout": "Kirjaudu ulos", "navigation_bar.mutes": "Mykistetyt käyttäjät", @@ -304,15 +306,15 @@ "notification.mention": "{name} mainitsi sinut", "notification.own_poll": "Kyselysi on päättynyt", "notification.poll": "Kysely, johon osallistuit, on päättynyt", - "notification.reblog": "{name} buustasi tilaasi", - "notification.status": "{name} juuri lähetetty", + "notification.reblog": "{name} buustasi julkaisusi", + "notification.status": "{name} julkaisi juuri", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", "notifications.column_settings.alert": "Työpöytäilmoitukset", "notifications.column_settings.favourite": "Tykkäykset:", "notifications.column_settings.filter_bar.advanced": "Näytä kaikki kategoriat", "notifications.column_settings.filter_bar.category": "Pikasuodatuspalkki", - "notifications.column_settings.filter_bar.show": "Näytä", + "notifications.column_settings.filter_bar.show_bar": "Näytä suodatinpalkki", "notifications.column_settings.follow": "Uudet seuraajat:", "notifications.column_settings.follow_request": "Uudet seuraamispyynnöt:", "notifications.column_settings.mention": "Maininnat:", @@ -321,8 +323,9 @@ "notifications.column_settings.reblog": "Buustit:", "notifications.column_settings.show": "Näytä sarakkeessa", "notifications.column_settings.sound": "Äänimerkki", - "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Lukemattomat ilmoitusmerkit", + "notifications.column_settings.status": "Uudet julkaisut:", + "notifications.column_settings.unread_notifications.category": "Lukemattomat ilmoitukset", + "notifications.column_settings.unread_notifications.highlight": "Korosta lukemattomat ilmoitukset", "notifications.filter.all": "Kaikki", "notifications.filter.boosts": "Buustit", "notifications.filter.favourites": "Suosikit", @@ -346,10 +349,10 @@ "poll.total_votes": "{count, plural, one {# ääni} other {# ääntä}}", "poll.vote": "Äänestä", "poll.voted": "Äänestit tätä vastausta", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# ääni} other {# ääntä}}", "poll_button.add_poll": "Lisää kysely", "poll_button.remove_poll": "Poista kysely", - "privacy.change": "Säädä tuuttauksen näkyvyyttä", + "privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.direct.long": "Julkaise vain mainituille käyttäjille", "privacy.direct.short": "Suora viesti", "privacy.private.long": "Julkaise vain seuraajille", @@ -362,12 +365,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.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.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ä:", @@ -378,7 +389,7 @@ "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", "search_popout.tips.hashtag": "aihetunnisteet", - "search_popout.tips.status": "tila", + "search_popout.tips.status": "julkaisu", "search_popout.tips.text": "Tekstihaku listaa hakua vastaavat nimimerkit, käyttäjänimet ja hastagit", "search_popout.tips.user": "käyttäjä", "search_results.accounts": "Ihmiset", @@ -387,25 +398,30 @@ "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}", - "status.admin_status": "Avaa tämä viesti moderointinäkymässä", + "status.admin_status": "Avaa julkaisu moderointinäkymässä", "status.block": "Estä @{name}", "status.bookmark": "Tallenna kirjanmerkki", "status.cancel_reblog_private": "Peru buustaus", "status.cannot_reblog": "Tätä viestiä ei voi buustata", - "status.copy": "Kopioi linkki tilapäivitykseen", + "status.copy": "Kopioi linkki julkaisuun", "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.embed": "Upota", "status.favourite": "Tykkää", "status.filtered": "Suodatettu", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Lataa lisää", "status.media_hidden": "Media piilotettu", "status.mention": "Mainitse @{name}", "status.more": "Lisää", "status.mute": "Mykistä @{name}", "status.mute_conversation": "Mykistä keskustelu", - "status.open": "Laajenna viestit", + "status.open": "Laajenna julkaisu", "status.pin": "Kiinnitä profiiliin", "status.pinned": "Kiinnitetty viesti", "status.read_more": "Näytä enemmän", @@ -443,13 +459,13 @@ "timeline_hint.remote_resource_not_displayed": "{resource} muilta palvelimilta ei näytetä.", "timeline_hint.resources.followers": "Seuraajat", "timeline_hint.resources.follows": "Seuraa", - "timeline_hint.resources.statuses": "Vanhemmat tuuttaukset", + "timeline_hint.resources.statuses": "Vanhemmat julkaisut", "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} puhuu", "trends.trending_now": "Suosittua nyt", "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.", - "units.short.billion": "{count} miljardia", - "units.short.million": "{count} miljoonaa", - "units.short.thousand": "{count} tuhatta", + "units.short.billion": "{count} mrd.", + "units.short.million": "{count} milj.", + "units.short.thousand": "{count} t.", "upload_area.title": "Lataa raahaamalla ja pudottamalla tähän", "upload_button.label": "Lisää mediaa", "upload_error.limit": "Tiedostolatauksien raja ylitetty.", @@ -462,7 +478,7 @@ "upload_form.video_description": "Kuvaile kuulo- tai näkövammaisille", "upload_modal.analyzing_picture": "Analysoidaan kuvaa…", "upload_modal.apply": "Käytä", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Asetetaan…", "upload_modal.choose_image": "Valitse kuva", "upload_modal.description_placeholder": "Nopea ruskea kettu hyppää laiskan koiran yli", "upload_modal.detect_text": "Tunnista teksti kuvasta", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 91efd024b..8c2b8f3e6 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -16,16 +16,16 @@ "account.endorse": "Recommander sur le profil", "account.follow": "Suivre", "account.followers": "Abonnés", - "account.followers.empty": "Personne ne suit cet utilisateur pour l’instant.", - "account.followers_counter": "{count, plural, one {{counter} Abonné} other {{counter} Abonnés}}", + "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", + "account.followers_counter": "{count, plural, one {{counter} Abonné·e} other {{counter} Abonné·e·s}}", "account.following_counter": "{count, plural, other {{counter} Abonnements}}", - "account.follows.empty": "Cet utilisateur ne suit personne pour l’instant.", + "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined": "Ici depuis {date}", "account.last_status": "Dernière activité", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", - "account.locked_info": "Ce compte est privé. Son propriétaire approuve manuellement qui peut le suivre.", + "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", "account.media": "Médias", "account.mention": "Mentionner @{name}", "account.moved_to": "{name} a déménagé vers :", @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Moyenne", + "admin.dashboard.retention.cohort": "Mois d'inscription", + "admin.dashboard.retention.cohort_size": "Nouveaux utilisateurs", "alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.", "alert.rate_limited.title": "Débit limité", "alert.unexpected.message": "Une erreur inattendue s’est produite.", "alert.unexpected.title": "Oups !", "announcement.announcement": "Annonce", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(non traité)", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.", @@ -104,6 +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.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", @@ -118,17 +120,17 @@ "confirmations.delete.message": "Voulez-vous vraiment supprimer ce message ?", "confirmations.delete_list.confirm": "Supprimer", "confirmations.delete_list.message": "Voulez-vous vraiment supprimer définitivement cette liste ?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Rejeter", + "confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, les supprimer quand même ?", "confirmations.domain_block.confirm": "Bloquer tout le domaine", - "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans fils publics, ni dans vos notifications. Vos abonnés utilisant ce domaine seront retirés.", + "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans vos fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.", "confirmations.logout.confirm": "Se déconnecter", "confirmations.logout.message": "Voulez-vous vraiment vous déconnecter ?", "confirmations.mute.confirm": "Masquer", "confirmations.mute.explanation": "Cela masquera ses messages et les messages le ou la mentionnant, mais cela lui permettra quand même de voir vos messages et de vous suivre.", "confirmations.mute.message": "Voulez-vous vraiment masquer {name} ?", "confirmations.redraft.confirm": "Supprimer et ré-écrire", - "confirmations.redraft.message": "Êtes-vous sûr de vouloir effacer ce statut pour le récrire ? Ses partages ainsi que ses mises en favori seront perdus et ses réponses seront orphelines.", + "confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le réécrire ? Ses partages ainsi que ses mises en favori seront perdus et ses réponses seront orphelines.", "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", @@ -149,7 +151,7 @@ "emoji_button.food": "Nourriture & Boisson", "emoji_button.label": "Insérer un émoji", "emoji_button.nature": "Nature", - "emoji_button.not_found": "Aucune correspondance d'émoji trouvée", + "emoji_button.not_found": "Aucun émoji correspondant n'a été trouvé", "emoji_button.objects": "Objets", "emoji_button.people": "Personnes", "emoji_button.recent": "Fréquemment utilisés", @@ -160,7 +162,7 @@ "empty_column.account_suspended": "Compte suspendu", "empty_column.account_timeline": "Aucun message ici !", "empty_column.account_unavailable": "Profil non disponible", - "empty_column.blocks": "Vous n’avez bloqué aucun utilisateur pour le moment.", + "empty_column.blocks": "Vous n’avez bloqué aucun compte pour le moment.", "empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !", "empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.", @@ -174,7 +176,7 @@ "empty_column.home.suggestions": "Voir quelques suggestions", "empty_column.list": "Il n’y a rien dans cette liste pour l’instant. Quand des membres de cette liste publieront de nouveaux messages, ils apparaîtront ici.", "empty_column.lists": "Vous n’avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.", - "empty_column.mutes": "Vous n’avez masqué aucun utilisateur pour le moment.", + "empty_column.mutes": "Vous n’avez masqué aucun compte pour le moment.", "empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.", "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres serveurs pour remplir le fil public", "error.unexpected_crash.explanation": "En raison d’un bug dans notre code ou d’un problème de compatibilité avec votre navigateur, cette page n’a pas pu être affichée correctement.", @@ -232,13 +234,13 @@ "keyboard_shortcuts.hotkey": "Raccourci clavier", "keyboard_shortcuts.legend": "Afficher cet aide-mémoire", "keyboard_shortcuts.local": "Ouvrir le fil public local", - "keyboard_shortcuts.mention": "Mentionner l’auteur", + "keyboard_shortcuts.mention": "Mentionner l’auteur·rice", "keyboard_shortcuts.muted": "Ouvrir la liste des comptes masqués", "keyboard_shortcuts.my_profile": "Ouvrir votre profil", "keyboard_shortcuts.notifications": "Ouvrir la colonne de notifications", "keyboard_shortcuts.open_media": "ouvrir le média", "keyboard_shortcuts.pinned": "Ouvrir la liste des messages épinglés", - "keyboard_shortcuts.profile": "Ouvrir le profil de l’auteur", + "keyboard_shortcuts.profile": "Ouvrir le profil de l’auteur·rice", "keyboard_shortcuts.reply": "Répondre au message", "keyboard_shortcuts.requests": "Ouvrir la liste de demandes d’abonnement", "keyboard_shortcuts.search": "Se placer dans le champ de recherche", @@ -261,7 +263,7 @@ "lists.edit.submit": "Modifier le titre", "lists.new.create": "Ajouter une liste", "lists.new.title_placeholder": "Titre de la nouvelle liste", - "lists.replies_policy.followed": "N'importe quel utilisateur suivi", + "lists.replies_policy.followed": "N'importe quel compte suivi", "lists.replies_policy.list": "Membres de la liste", "lists.replies_policy.none": "Personne", "lists.replies_policy.title": "Afficher les réponses à :", @@ -301,7 +303,7 @@ "notification.favourite": "{name} a ajouté le message à ses favoris", "notification.follow": "{name} vous suit", "notification.follow_request": "{name} a demandé à vous suivre", - "notification.mention": "{name} vous a mentionné·", + "notification.mention": "{name} vous a mentionné·e :", "notification.own_poll": "Votre sondage est terminé", "notification.poll": "Un sondage auquel vous avez participé vient de se terminer", "notification.reblog": "{name} a partagé votre message", @@ -312,8 +314,8 @@ "notifications.column_settings.favourite": "Favoris :", "notifications.column_settings.filter_bar.advanced": "Afficher toutes les catégories", "notifications.column_settings.filter_bar.category": "Barre de filtrage rapide", - "notifications.column_settings.filter_bar.show": "Afficher", - "notifications.column_settings.follow": "Nouveaux abonnés :", + "notifications.column_settings.filter_bar.show_bar": "Afficher la barre de filtre", + "notifications.column_settings.follow": "Nouveaux·elles abonné·e·s :", "notifications.column_settings.follow_request": "Nouvelles demandes d’abonnement :", "notifications.column_settings.mention": "Mentions :", "notifications.column_settings.poll": "Résultats des sondage :", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Afficher dans la colonne", "notifications.column_settings.sound": "Jouer un son", "notifications.column_settings.status": "Nouveaux messages :", - "notifications.column_settings.unread_markers.category": "Marqueurs de notifications non lues", + "notifications.column_settings.unread_notifications.category": "Notifications non lues", + "notifications.column_settings.unread_notifications.highlight": "Surligner les notifications non lues", "notifications.filter.all": "Tout", "notifications.filter.boosts": "Partages", "notifications.filter.favourites": "Favoris", @@ -353,24 +356,32 @@ "privacy.direct.long": "Visible uniquement par les comptes mentionnés", "privacy.direct.short": "Direct", "privacy.private.long": "Visible uniquement par vos abonné·e·s", - "privacy.private.short": "Abonnés uniquement", - "privacy.public.long": "Visible par tous, affiché dans les fils publics", + "privacy.private.short": "Abonné·e·s uniquement", + "privacy.public.long": "Visible par tou·te·s, affiché dans les fils publics", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible par tous, mais pas dans les fils publics", + "privacy.unlisted.long": "Visible par tou·te·s, mais pas dans les fils publics", "privacy.unlisted.short": "Non listé", "refresh": "Actualiser", "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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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érateurs de votre instance. Vous pouvez expliquer pourquoi vous signalez le compte ci-dessous :", + "report.hint": "Le rapport sera envoyé aux modérateur·rice·s de votre serveur. Vous pouvez expliquer pourquoi vous signalez le compte ci-dessous :", "report.placeholder": "Commentaires additionnels", "report.submit": "Envoyer", "report.target": "Signalement de {target}", @@ -396,9 +407,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.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", "status.filtered": "Filtré", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Charger plus", "status.media_hidden": "Média caché", "status.mention": "Mentionner @{name}", @@ -413,7 +429,7 @@ "status.reblog_private": "Partager à l’audience originale", "status.reblogged_by": "{name} a partagé", "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", - "status.redraft": "Supprimer et récrire", + "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des marque-pages", "status.reply": "Répondre", "status.replyAll": "Répondre au fil", @@ -429,7 +445,7 @@ "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", "suggestions.dismiss": "Rejeter la suggestion", - "suggestions.header": "Vous pourriez être intéressé par…", + "suggestions.header": "Vous pourriez être intéressé·e par…", "tabs_bar.federated_timeline": "Fil public global", "tabs_bar.home": "Accueil", "tabs_bar.local_timeline": "Fil public local", @@ -462,7 +478,7 @@ "upload_form.video_description": "Décrire pour les personnes ayant des problèmes d’audition ou de vision", "upload_modal.analyzing_picture": "Analyse de l’image en cours…", "upload_modal.apply": "Appliquer", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Application en cours…", "upload_modal.choose_image": "Choisir une image", "upload_modal.description_placeholder": "Buvez de ce whisky que le patron juge fameux", "upload_modal.detect_text": "Détecter le texte de l’image", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 9c94c61aa..c9f2cd414 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "No comment provided", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 023ee3ecb..750674ca2 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -47,16 +47,17 @@ "account.unmute": "Dì-mhùch @{name}", "account.unmute_notifications": "Dì-mhùch na brathan o @{name}", "account_note.placeholder": "Briog airson nòta a chur ris", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Cuibheasach", + "admin.dashboard.retention.cohort": "Mìos a’ chlàraidh", + "admin.dashboard.retention.cohort_size": "Cleachdaichean ùra", "alert.rate_limited.message": "Feuch ris a-rithist às dèidh {retry_time, time, medium}.", "alert.rate_limited.title": "Cuingeachadh ùine", "alert.unexpected.message": "Thachair mearachd ris nach robh dùil.", "alert.unexpected.title": "Oich!", "announcement.announcement": "Brath-fios", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(gun phròiseasadh)", "autosuggest_hashtag.per_week": "{count} gach seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh", "compose_form.publish": "Postaich", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Cuir comharra gu bheil am meadhan frionasach} two {Cuir comharra gu bheil na meadhanan frionasach} few {Cuir comharra gu bheil na meadhanan frionasach} other {Cuir comharra gu bheil na meadhanan frionasach}}", "compose_form.sensitive.marked": "{count, plural, one {Tha comharra ris a’ mheadhan gu bheil e frionasach} two {Tha comharra ris na meadhanan gu bheil iad frionasach} few {Tha comharra ris na meadhanan gu bheil iad frionasach} other {Tha comharra ris na meadhanan gu bheil iad frionasach}}", "compose_form.sensitive.unmarked": "{count, plural, one {Chan eil comharra ris a’ mheadhan gun robh e frionasach} two {Chan eil comharra ris na meadhanan gun robh iad frionasach} few {Chan eil comharra ris na meadhanan gun robh iad frionasach} other {Chan eil comharra ris na meadhanan gun robh iad frionasach}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", "confirmations.delete_list.confirm": "Sguab às", "confirmations.delete_list.message": "A bheil thu cinnteach gu bheil thu airson an liosta seo a sguabadh às gu buan?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Tilg air falbh", + "confirmations.discard_edit_media.message": "Tha atharraichean gun sàbhaladh agad ann an tuairisgeul no ro-shealladh a’ mheadhain, a bheil thu airson an tilgeil air falbh co-dhiù?", "confirmations.domain_block.confirm": "Bac an àrainn uile gu lèir", "confirmations.domain_block.message": "A bheil thu cinnteach dha-rìribh gu bheil thu airson an àrainn {domain} a bhacadh uile gu lèir? Mar as trice, foghnaidh gun dèan thu bacadh no mùchadh no dhà gu sònraichte agus bhiod sin na b’ fheàrr. Chan fhaic thu susbaint on àrainn ud air loidhne-ama phoblach sam bith no am measg nam brathan agad. Thèid an luchd-leantainn agad on àrainn ud a thoirt air falbh.", "confirmations.logout.confirm": "Clàraich a-mach", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Na h-annsachdan:", "notifications.column_settings.filter_bar.advanced": "Seall a h-uile roinn-seòrsa", "notifications.column_settings.filter_bar.category": "Bàr-criathraidh luath", - "notifications.column_settings.filter_bar.show": "Seall", + "notifications.column_settings.filter_bar.show_bar": "Seall am bàr-criathraidh", "notifications.column_settings.follow": "Luchd-leantainn ùr:", "notifications.column_settings.follow_request": "Iarrtasan leantainn ùra:", "notifications.column_settings.mention": "Iomraidhean:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Seall sa cholbh", "notifications.column_settings.sound": "Cluich fuaim", "notifications.column_settings.status": "Postaichean ùra:", - "notifications.column_settings.unread_markers.category": "Comharran nach deach brath a leughadh", + "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.filter.all": "Na h-uile", "notifications.filter.boosts": "Brosnachaidhean", "notifications.filter.favourites": "Na h-annsachdan", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# bhòt} two {# bhòt} few {# bhòtaichean} other {# bhòt}}", "poll.vote": "Bhòt", "poll.voted": "Bhòt thu dhan fhreagairt seo", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# bhòt} two {# bhòt} few {# bhòtaichean} other {# bhòt}}", "poll_button.add_poll": "Cuir cunntas-bheachd ris", "poll_button.remove_poll": "Thoir air falbh an cunntas-bheachd", "privacy.change": "Cuir gleus air prìobhaideachd a’ phuist", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", "relative_time.days": "{number}l", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}u", "relative_time.just_now": "an-dràsta", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}d", "relative_time.today": "an-diugh", "reply_indicator.cancel": "Sguir dheth", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Sìn air adhart gu {target}", "report.forward_hint": "Chaidh an cunntas a chlàradh air frithealaiche eile. A bheil thu airson lethbhreac dhen ghearan a chur dha-san gun ainm cuideachd?", "report.hint": "Thèid do ghearan a chur gu maoir an fhrithealaiche agad. ’S urrainn dhut mìneachadh a sholar air carson a tha thu a’ gearan mun chunntas gu h-ìosal:", @@ -396,9 +407,14 @@ "status.delete": "Sguab às", "status.detailed_status": "Mion-shealladh a’ chòmhraidh", "status.direct": "Cuir teachdaireachd dhìreach gu @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", "status.filtered": "Criathraichte", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Luchdaich barrachd dheth", "status.media_hidden": "Meadhanan falaichte", "status.mention": "Thoir iomradh air @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Mìnich e dhan fheadhainn le èisteachd bheag no cion-lèirsinne", "upload_modal.analyzing_picture": "A’ sgrùdadh an deilbh…", "upload_modal.apply": "Cuir an sàs", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "’Ga chur an sàs…", "upload_modal.choose_image": "Tagh dealbh", "upload_modal.description_placeholder": "Lorg Sìm fiù bò, cè ⁊ neup ’ad àth", "upload_modal.detect_text": "Mothaich dhan teacsa on dealbh", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index d85fd97bf..e926239bb 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -36,7 +36,7 @@ "account.posts": "Publicacións", "account.posts_with_replies": "Publicacións e respostas", "account.report": "Informar sobre @{name}", - "account.requested": "Agardando aprovación. Preme para desbotar a solicitude de seguimento", + "account.requested": "Agardando aprobación. Preme para desbotar a solicitude", "account.share": "Compartir o perfil de @{name}", "account.show_reblogs": "Amosar compartidos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Publicación} other {{counter} Publicacións}}", @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Media", + "admin.dashboard.retention.cohort": "Mes de rexistro", + "admin.dashboard.retention.cohort_size": "Novas usuarias", "alert.rate_limited.message": "Téntao novamente após {retry_time, time, medium}.", "alert.rate_limited.title": "Límite de intentos", "alert.unexpected.message": "Aconteceu un fallo non agardado.", "alert.unexpected.title": "Vaites!", "announcement.announcement": "Anuncio", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(sen procesar)", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.", @@ -104,13 +105,14 @@ "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.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}}", "compose_form.spoiler.marked": "Retirar o aviso sobre o contido", "compose_form.spoiler.unmarked": "Engadir aviso sobre o contido", "compose_form.spoiler_placeholder": "Escribe o teu aviso aquí", - "confirmation_modal.cancel": "Desbotar", + "confirmation_modal.cancel": "Cancelar", "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "Tes a certeza de querer bloquear a {name}?", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Tes a certeza de querer eliminar esta publicación?", "confirmations.delete_list.confirm": "Eliminar", "confirmations.delete_list.message": "Tes a certeza de querer eliminar de xeito permanente esta listaxe?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Descartar", + "confirmations.discard_edit_media.message": "Tes cambios sen gardar para a vista previa ou descrición do multimedia, descartamos os cambios?", "confirmations.domain_block.confirm": "Agochar dominio enteiro", "confirmations.domain_block.message": "Tes a certeza de querer bloquear todo de {domain}? Na meirande parte dos casos uns bloqueos ou silenciados específicos son suficientes. Non verás máis o contido deste dominio en ningunha cronoloxía pública ou nas túas notificacións. As túas seguidoras deste dominio serán eliminadas.", "confirmations.logout.confirm": "Pechar sesión", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Amosar todas as categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", - "notifications.column_settings.filter_bar.show": "Amosar", + "notifications.column_settings.filter_bar.show_bar": "Amosar barra de filtros", "notifications.column_settings.follow": "Novas seguidoras:", "notifications.column_settings.follow_request": "Novas peticións de seguimento:", "notifications.column_settings.mention": "Mencións:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Amosar en columna", "notifications.column_settings.sound": "Reproducir son", "notifications.column_settings.status": "Novas publicacións:", - "notifications.column_settings.unread_markers.category": "Indicadores de notificacións non lidas", + "notifications.column_settings.unread_notifications.category": "Notificacións non lidas", + "notifications.column_settings.unread_notifications.highlight": "Resaltar notificacións non lidas", "notifications.filter.all": "Todo", "notifications.filter.boosts": "Compartidos", "notifications.filter.favourites": "Favoritos", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Votaches por esta opción", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voto} other {# votos}}", "poll_button.add_poll": "Engadir unha enquisa", "poll_button.remove_poll": "Eliminar enquisa", "privacy.change": "Axustar privacidade", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,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.embed": "Incrustar", "status.favourite": "Favorito", "status.filtered": "Filtrado", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Cargar máis", "status.media_hidden": "Contido multimedia agochado", "status.mention": "Mencionar @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Describir para persoas con problemas visuais ou auditivos", "upload_modal.analyzing_picture": "Estase a analizar a imaxe…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicando…", "upload_modal.choose_image": "Elixir imaxe", "upload_modal.description_placeholder": "Un raposo veloz brinca sobre o can preguiceiro", "upload_modal.detect_text": "Detectar texto na imaxe", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 311323d21..1447ff711 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -47,16 +47,17 @@ "account.unmute": "הפסקת השתקת @{name}", "account.unmute_notifications": "להפסיק הסתרת הודעות מעם @{name}", "account_note.placeholder": "ללא הערה", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "ממוצע", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "משתמשים חדשים", "alert.rate_limited.message": "נא לנסות אחרי {retry_time, time, medium}.", "alert.rate_limited.title": "מגבלות מיכסה", "alert.unexpected.message": "אירעה שגיאה בלתי צפויה.", "alert.unexpected.title": "אופס!", "announcement.announcement": "הודעה", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(לא מעובד)", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", "bundle_column_error.body": "משהו השתבש בעת הצגת הרכיב הזה.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", "compose_form.publish": "ללחוש", "compose_form.publish_loud": "לחצרץ!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -127,20 +129,20 @@ "confirmations.mute.confirm": "להשתיק", "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.message": "להשתיק את {name}?", - "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.confirm": "מחק וערוך מחדש", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "הגב", + "confirmations.reply.message": "הגבה עכשיו ידרוס את ההודעה שאתם כותבים כעת. האם אתם בטוחים שברצונכם להמשיך?", "confirmations.unfollow.confirm": "להפסיק מעקב", "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", + "conversation.delete": "מחיקת שיחה", + "conversation.mark_as_read": "סמן כנקרא", + "conversation.open": "צפו בשיחה", + "conversation.with": "עם {names}", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "directory.recently_active": "פעילים לאחרונה", "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", @@ -157,13 +159,13 @@ "emoji_button.search_results": "תוצאות חיפוש", "emoji_button.symbols": "סמלים", "emoji_button.travel": "טיולים ואתרים", - "empty_column.account_suspended": "Account suspended", + "empty_column.account_suspended": "חשבון מושהה", "empty_column.account_timeline": "No toots here!", - "empty_column.account_unavailable": "Profile unavailable", - "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.account_unavailable": "פרופיל לא זמין", + "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "עדיין אין לכם הודעות פרטיות. כאשר תשלחו או תקבלו אחת, היא תופיע כאן.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", @@ -220,7 +222,7 @@ "keyboard_shortcuts.boost": "להדהד", "keyboard_shortcuts.column": "להתמקד בהודעה באחד מהטורים", "keyboard_shortcuts.compose": "להתמקד בתיבת חיבור ההודעות", - "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.description": "תיאור", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "לנוע במורד הרשימה", "keyboard_shortcuts.enter": "to open status", @@ -254,33 +256,33 @@ "lightbox.expand": "Expand image view box", "lightbox.next": "הלאה", "lightbox.previous": "הקודם", - "lists.account.add": "Add to list", - "lists.account.remove": "Remove from list", + "lists.account.add": "הוסף לרשימה", + "lists.account.remove": "הסר מרשימה", "lists.delete": "Delete list", "lists.edit": "Edit list", "lists.edit.submit": "Change title", - "lists.new.create": "Add list", - "lists.new.title_placeholder": "New list title", - "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", - "lists.replies_policy.none": "No one", - "lists.replies_policy.title": "Show replies to:", - "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lists.new.create": "הוספת רשימה", + "lists.new.title_placeholder": "כותרת הרשימה החדשה", + "lists.replies_policy.followed": "משתמשים שאני עוקב אחריהם", + "lists.replies_policy.list": "משתמשים שברשימה", + "lists.replies_policy.none": "אף אחד", + "lists.replies_policy.title": "הצג תגובות ל:", + "lists.search": "חיפוש בין אנשים שאני עוקב\\ת אחריהם", + "lists.subheading": "הרשימות שלך", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "טוען...", "media_gallery.toggle_visible": "נראה\\בלתי נראה", "missing_indicator.label": "לא נמצא", - "missing_indicator.sublabel": "This resource could not be found", - "mute_modal.duration": "Duration", + "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב", + "mute_modal.duration": "משך הזמן", "mute_modal.hide_notifications": "להסתיר הודעות מחשבון זה?", - "mute_modal.indefinite": "Indefinite", + "mute_modal.indefinite": "ללא תאריך סיום", "navigation_bar.apps": "Mobile apps", "navigation_bar.blocks": "חסימות", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ציר זמן מקומי", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "הודעות ישירות", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "עריכת פרופיל", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "מחובבים:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "עוקבים חדשים:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "פניות:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "הצגה בטור", "notifications.column_settings.sound": "שמע מופעל", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "כרגע", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "ביטול", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", @@ -395,10 +406,15 @@ "status.copy": "Copy link to status", "status.delete": "מחיקה", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "הודעה ישירה ל@{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "הטמעה", "status.favourite": "חיבוב", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "עוד", "status.media_hidden": "מדיה מוסתרת", "status.mention": "פניה אל @{name}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 0bcf2a68b..d3221c468 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -47,7 +47,8 @@ "account.unmute": "अनम्यूट @{name}", "account.unmute_notifications": "@{name} के नोटिफिकेशन अनम्यूट करे", "account_note.placeholder": "नोट्स जोड़ने के लिए क्लिक करें", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "एक ही विकल्प के लिए अनुमति देने के लिए पोल बदलें", "compose_form.publish": "टूट्", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "मीडिया को संवेदनशील के रूप में चिह्नित करें", "compose_form.sensitive.marked": "मीडिया संवेदनशील के रूप में चिह्नित है", "compose_form.sensitive.unmarked": "मीडिया संवेदनशील के रूप में चिह्नित नहीं है", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "सभी श्रेणियाँ दिखाएं", "notifications.column_settings.filter_bar.category": "फ़िल्टर बार", - "notifications.column_settings.filter_bar.show": "दिखाएँ", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "नए फ़ॉलोअर्स", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "उल्लेख:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "कॉलम में दिखाएँ", "notifications.column_settings.sound": "ध्वनि चलाएँ", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "सभी", "notifications.filter.boosts": "बूस्ट", "notifications.filter.favourites": "पसंदीदा", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "लोड हो रहा है...", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "अभी", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "रद्द करें", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index d11c73860..ecdfab67a 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -22,7 +22,7 @@ "account.follows.empty": "Korisnik/ca još ne prati nikoga.", "account.follows_you": "Prati te", "account.hide_reblogs": "Sakrij boostove od @{name}", - "account.joined": "Joined {date}", + "account.joined": "Pridružio se {date}", "account.last_status": "Posljednja aktivnost", "account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}", "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.", @@ -47,16 +47,17 @@ "account.unmute": "Poništi utišavanje @{name}", "account.unmute_notifications": "Ne utišavaj obavijesti od @{name}", "account_note.placeholder": "Kliknite za dodavanje bilješke", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Prosječno", + "admin.dashboard.retention.cohort": "Mjesec prijave", + "admin.dashboard.retention.cohort_size": "Novi korisnici", "alert.rate_limited.message": "Molimo pokušajte nakon {retry_time, time, medium}.", "alert.rate_limited.title": "Ograničenje učestalosti", "alert.unexpected.message": "Dogodila se neočekivana greška.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Najava", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(neobrađeno)", "autosuggest_hashtag.per_week": "{count} tjedno", "boost_modal.combo": "Možete pritisnuti {combo} kako biste preskočili ovo sljedeći put", "bundle_column_error.body": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Omogući odabir samo jedne opcije ankete", "compose_form.publish": "Tootni", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Označi medijski sadržaj kao osjetljiv", "compose_form.sensitive.marked": "Medijski sadržaj označen je kao osjetljiv", "compose_form.sensitive.unmarked": "Medijski sadržaj nije označen kao osjetljiv", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Stvarno želite obrisati ovaj toot?", "confirmations.delete_list.confirm": "Obriši", "confirmations.delete_list.message": "Jeste li sigurni da želite trajno obrisati ovu listu?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Odbaciti", + "confirmations.discard_edit_media.message": "Niste spremili promjene u opisu medija ili u predpregledu, svejedno ih odbaciti?", "confirmations.domain_block.confirm": "Blokiraj cijelu domenu", "confirmations.domain_block.message": "Jeste li zaista, zaista sigurni da želite blokirati cijelu domenu {domain}? U većini slučajeva dovoljno je i preferirano nekoliko ciljanih blokiranja ili utišavanja. Nećete vidjeti sadržaj s te domene ni u kojim javnim vremenskim crtama ili Vašim obavijestima. Vaši pratitelji s te domene bit će uklonjeni.", "confirmations.logout.confirm": "Odjavi se", @@ -163,28 +165,28 @@ "empty_column.blocks": "Još niste blokirali nikoga.", "empty_column.bookmarked_statuses": "Još nemaš niti jedan označeni toot. Kada označiš jedan, prikazad će se ovdje.", "empty_column.community": "Lokalna vremenska crta je prazna. Napišite nešto javno da biste pokrenuli stvari!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Nemate još niti jedne direktne poruke. Kada ih pošaljete ili primite, prikazati će se ovdje.", "empty_column.domain_blocks": "Još nema blokiranih domena.", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.follow_recommendations": "Čini se da se ne postoje sugestije generirane za tebe. Možeš pokušati koristiti pretragu kako bi pronašao osobe koje poznaš ili istraži popularne hashtagove.", + "empty_column.follow_requests": "Nemaš niti jedan zahtjev za praćenjem. Ako ga dobiješ, prikazat će se ovdje.", "empty_column.hashtag": "Još ne postoji ništa s ovim hashtagom.", "empty_column.home": "Vaša početna vremenska crta je prazna! Posjetite {public} ili koristite tražilicu kako biste započeli i upoznali druge korisnike.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Pogledajte neke prijedloge", "empty_column.list": "Na ovoj listi još nema ničega. Kada članovi ove liste objave nove tootove, oni će se pojaviti ovdje.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.lists": "Nemaš niti jednu listu. Kada je kreiraš, prikazat će se ovdje.", "empty_column.mutes": "Niste utišali nijednog korisnika.", "empty_column.notifications": "Još nemate obavijesti. Komunicirajte s drugima kako biste započeli razgovor.", "empty_column.public": "Ovdje nema ništa! Napišite nešto javno ili ručno pratite korisnike s drugi poslužitelja da biste ovo popunili", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "error.unexpected_crash.explanation": "Zbog bug-a u našem kodu ili zbog nekompatibilnosti pretraživača, ova stranica se ne može prikazati ispravno.", + "error.unexpected_crash.explanation_addons": "Ova stranica ne može biti ispravno prikazana. Ova greška je uzrokovana dodatkom za browser ili alatom za automatsko prevođenje.", + "error.unexpected_crash.next_steps": "Pokušaj osvježiti stranicu. Ako to ne pomogne, i dalje ćeš biti u mogućnosti koristiti Mastodon preko nekod drugog preglednika ili izvornog app-a.", + "error.unexpected_crash.next_steps_addons": "Pokušaj ih onemogućiti i osvježiti stranicu. Ako to ne pomogne, i dalje ćeš biti u mogućnosti koristiti Mastodon preko nekog drugog preglednika ili izvornog app-a.", + "errors.unexpected_crash.copy_stacktrace": "Kopiraj stacktrace u međuspremnik", "errors.unexpected_crash.report_issue": "Prijavi problem", - "follow_recommendations.done": "Done", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.done": "Učinjeno", + "follow_recommendations.heading": "Zaprati osobe čije objave želiš vidjeti! Evo nekoliko prijedloga.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "Autoriziraj", "follow_request.reject": "Odbij", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoriti:", "notifications.column_settings.filter_bar.advanced": "Prikaži sve kategorije", "notifications.column_settings.filter_bar.category": "Brza traka filtera", - "notifications.column_settings.filter_bar.show": "Prikaži", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Novi pratitelji:", "notifications.column_settings.follow_request": "Novi zahtjevi za praćenje:", "notifications.column_settings.mention": "Spominjanja:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Prikaži u stupcu", "notifications.column_settings.sound": "Sviraj zvuk", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Sve", "notifications.filter.boosts": "Boostovi", "notifications.filter.favourites": "Favoriti", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Učitavanje…", "regeneration_indicator.sublabel": "Priprema se Vaša početna stranica!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "sada", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "danas", "reply_indicator.cancel": "Otkaži", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Proslijedi {target}", "report.forward_hint": "Račun je s drugog poslužitelja. Poslati anonimiziranu kopiju prijave i tamo?", "report.hint": "Prijava bit će poslana moderatorima poslužitelja. Ispod možete dati objašnjenje zašto prijavljujete ovaj račun:", @@ -396,9 +407,14 @@ "status.delete": "Obriši", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Označi favoritom", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Učitaj više", "status.media_hidden": "Sakriven medijski sadržaj", "status.mention": "Spomeni @{name}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index db08bfc75..4a55c85d9 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Átlag", + "admin.dashboard.retention.cohort": "Regisztráció hónapja", + "admin.dashboard.retention.cohort_size": "Új felhasználó", "alert.rate_limited.message": "Próbáld újra {retry_time, time, medium} után.", "alert.rate_limited.title": "Forgalomkorlátozás", "alert.unexpected.message": "Váratlan hiba történt.", "alert.unexpected.title": "Hoppá!", "announcement.announcement": "Közlemény", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(feldolgozatlan)", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", "bundle_column_error.body": "Valami hiba történt a komponens betöltése közben.", @@ -104,6 +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.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}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Biztos, hogy törölni szeretnéd ezt a bejegyzést?", "confirmations.delete_list.confirm": "Törlés", "confirmations.delete_list.message": "Biztos, hogy véglegesen törölni szeretnéd ezt a listát?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Elvetés", + "confirmations.discard_edit_media.message": "Elmentetlen változtatásaid vannak a média leírásában vagy előnézetében. Eldobjuk őket?", "confirmations.domain_block.confirm": "Teljes domain elrejtése", "confirmations.domain_block.message": "Biztos, hogy le szeretnéd tiltani a teljes {domain} domaint? A legtöbb esetben néhány célzott tiltás vagy némítás elegendő, és kívánatosabb megoldás. Semmilyen tartalmat nem fogsz látni ebből a domainből se az idővonalakon, se az értesítésekben. Az ebben a domainben lévő követőidet is eltávolítjuk.", "confirmations.logout.confirm": "Kijelentkezés", @@ -167,7 +169,7 @@ "empty_column.domain_blocks": "Még nem rejtettél el egyetlen domaint sem.", "empty_column.favourited_statuses": "Még nincs egyetlen kedvenc bejegyzésed sem. Ha kedvencnek jelölsz egyet, itt fog megjelenni.", "empty_column.favourites": "Még senki sem jelölte ezt a bejegyzést kedvencnek. Ha valaki mégis megteszi, itt fogjuk mutatni.", - "empty_column.follow_recommendations": "Úgy tűnik, neked nem tudunk javaslatokat adni. Próbáld a keresést használni olyanok megtalálására, akiket ismerhetsz, vagy fedezd fel a trendi hastageket.", + "empty_column.follow_recommendations": "Úgy tűnik, neked nem tudunk javaslatokat adni. Próbáld a keresést használni olyanok megtalálására, akiket ismerhetsz, vagy fedezd fel a felkapott hastageket.", "empty_column.follow_requests": "Még nincs egy követési kérésed sem. Ha kapsz egyet, itt fogjuk feltüntetni.", "empty_column.hashtag": "Jelenleg nem található semmi ezzel a hashtaggel.", "empty_column.home": "A saját idővonalad üres! Látogasd meg a {public} oldalt vagy használd a keresőt, hogy megismerj másokat.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Kedvencek:", "notifications.column_settings.filter_bar.advanced": "Minden kategória mutatása", "notifications.column_settings.filter_bar.category": "Gyorskereső mező", - "notifications.column_settings.filter_bar.show": "Mutat", + "notifications.column_settings.filter_bar.show_bar": "Szűrősáv mutatása", "notifications.column_settings.follow": "Új követők:", "notifications.column_settings.follow_request": "Új követési kérelmek:", "notifications.column_settings.mention": "Megemlítések:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Oszlopban mutatás", "notifications.column_settings.sound": "Hang lejátszása", "notifications.column_settings.status": "Új bejegyzések:", - "notifications.column_settings.unread_markers.category": "Olvasatlan értesítés jelzők", + "notifications.column_settings.unread_notifications.category": "Olvasatlan értesítések", + "notifications.column_settings.unread_notifications.highlight": "Olvasatlan értesítések kiemelése", "notifications.filter.all": "Mind", "notifications.filter.boosts": "Megtolások", "notifications.filter.favourites": "Kedvencnek jelölések", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# szavazat} other {# szavazat}}", "poll.vote": "Szavazás", "poll.voted": "Erre a válaszra szavaztál", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# szavazat} other {# szavazat}}", "poll_button.add_poll": "Új szavazás", "poll_button.remove_poll": "Szavazás törlése", "privacy.change": "Bejegyzés láthatóságának módosítása", @@ -362,12 +365,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.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.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:", @@ -396,9 +407,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.embed": "Beágyazás", "status.favourite": "Kedvenc", "status.filtered": "Megszűrt", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Többet", "status.media_hidden": "Média elrejtve", "status.mention": "@{name} megemlítése", @@ -462,7 +478,7 @@ "upload_form.video_description": "Írja le a hallás- vagy látássérültek számára", "upload_modal.analyzing_picture": "Kép elemzése…", "upload_modal.apply": "Alkalmaz", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Alkalmazás…", "upload_modal.choose_image": "Kép kiválasztása", "upload_modal.description_placeholder": "A gyors, barna róka átugrik a lusta kutya fölött", "upload_modal.detect_text": "Szöveg felismerése a képről", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index e412917f0..dde99078b 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -47,10 +47,11 @@ "account.unmute": "Ապալռեցնել @{name}֊ին", "account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից", "account_note.placeholder": "Սեղմէ՛ք գրառելու համար\n", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Միջին", + "admin.dashboard.retention.cohort": "Ամսուայ գրանցումներ", + "admin.dashboard.retention.cohort_size": "Նոր օգտուող", "alert.rate_limited.message": "Փորձէք որոշ ժամանակ անց՝ {retry_time, time, medium}։", "alert.rate_limited.title": "Գործողութիւնների յաճախութիւնը գերազանցում է թոյլատրելին", "alert.unexpected.message": "Անսպասելի սխալ տեղի ունեցաւ։", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Հարցումը դարձնել եզակի ընտրութեամբ", "compose_form.publish": "Հրապարակել", "compose_form.publish_loud": "Հրապարակե՜լ", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Նշել մեդիան որպէս դիւրազգաց", "compose_form.sensitive.marked": "Մեդիան նշուած է որպէս դիւրազգաց", "compose_form.sensitive.unmarked": "Մեդիան նշուած չէ որպէս դիւրազգաց", @@ -118,14 +120,14 @@ "confirmations.delete.message": "Վստա՞հ ես, որ ուզում ես ջնջել այս գրառումը։", "confirmations.delete_list.confirm": "Ջնջել", "confirmations.delete_list.message": "Վստա՞հ ես, որ ուզում ես մշտապէս ջնջել այս ցանկը։", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Չեղարկել", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Թաքցնել ամբողջ տիրույթը", "confirmations.domain_block.message": "Հաստատ֊հաստա՞տ վստահ ես, որ ուզում ես արգելափակել ամբողջ {domain} տիրոյթը։ Սովորաբար մի երկու թիրախաւորուած արգելափակում կամ լռեցում բաւական է ու նախընտրելի։", "confirmations.logout.confirm": "Ելք", "confirmations.logout.message": "Համոզո՞ւած ես, որ ուզում ես դուրս գալ", "confirmations.mute.confirm": "Լռեցնել", - "confirmations.mute.explanation": "Սա թաքցնելու ա իրենց գրառումներն, ինչպէս նաեւ իրենց նշող գրառումներն, բայց իրենք միեւնոյն է կը կարողանան հետեւել ձեզ եւ տեսնել ձեր գրառումները։", + "confirmations.mute.explanation": "Սա թաքցնելու է իրենց գրառումները, ինչպէս նաեւ իրենց նշող գրառումները, բայց իրենք միեւնոյն է կը կարողանան հետեւել ձեզ եւ տեսնել ձեր գրառումները։", "confirmations.mute.message": "Վստա՞հ ես, որ ուզում ես {name}֊ին լռեցնել։", "confirmations.redraft.confirm": "Ջնջել եւ խմբագրել նորից", "confirmations.redraft.message": "Վստահ ե՞ս, որ ցանկանում ես ջնջել եւ վերախմբագրել այս գրառումը։ Դու կը կորցնես այս գրառման բոլոր պատասխանները, տարածումները եւ հաւանումները։", @@ -142,7 +144,7 @@ "directory.new_arrivals": "Նորեկներ", "directory.recently_active": "Վերջերս ակտիւ", "embed.instructions": "Այս գրառումը քո կայքում ներդնելու համար կարող ես պատճէնել ներքեւի կոդը։", - "embed.preview": "Ահա, թէ ինչ տեսք կը ունենայ այն՝", + "embed.preview": "Ահա, թէ ինչ տեսք կունենայ այն՝", "emoji_button.activity": "Զբաղմունքներ", "emoji_button.custom": "Յատուկ", "emoji_button.flags": "Դրօշներ", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Հաւանածներից՝", "notifications.column_settings.filter_bar.advanced": "Ցուցադրել բոլոր կատեգորիաները", "notifications.column_settings.filter_bar.category": "Արագ զտման վահանակ", - "notifications.column_settings.filter_bar.show": "Ցուցադրել", + "notifications.column_settings.filter_bar.show_bar": "Ցոյց տալ զտման պանելը", "notifications.column_settings.follow": "Նոր հետեւողներ՝", "notifications.column_settings.follow_request": "Նոր հետեւելու հայցեր:", "notifications.column_settings.mention": "Նշումներ՝", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Ցուցադրել սիւնում", "notifications.column_settings.sound": "Ձայն հանել", "notifications.column_settings.status": "Նոր գրառումներ։", - "notifications.column_settings.unread_markers.category": "Չկարդացուած ծանուցումների նշաններ", + "notifications.column_settings.unread_notifications.category": "Չկարդացուած ծանուցումներ", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Բոլորը", "notifications.filter.boosts": "Տարածածները", "notifications.filter.favourites": "Հաւանածները", @@ -362,12 +365,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.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.forward": "Փոխանցել {target}֊ին", "report.forward_hint": "Այս հաշիւ այլ հանգոյցից է։ Ուղարկե՞մ այնտեղ էլ այս բողոքի անոնիմ պատճէնը։", "report.hint": "Այս զեկոյցը կուղարկուի հանգոյցի մոդերատորներին։ Ներքեւում կարող ես տրամադրել բացատրութիւն, թէ ինչու ես զեկուցում այս հաշուի մասին․", @@ -396,9 +407,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.embed": "Ներդնել", "status.favourite": "Հաւանել", "status.filtered": "Զտուած", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Բեռնել աւելին", "status.media_hidden": "մեդիաբովանդակութիւնը թաքցուած է", "status.mention": "Նշել @{name}֊ին", @@ -462,7 +478,7 @@ "upload_form.video_description": "Նկարագրիր տեսանիւթը լսողական կամ տեսողական խնդիրներով անձանց համար", "upload_modal.analyzing_picture": "Լուսանկարի վերլուծում…", "upload_modal.apply": "Կիրառել", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Կիրառւում է...", "upload_modal.choose_image": "Ընտրել նկար", "upload_modal.description_placeholder": "Բել դղեակի ձախ ժամն օֆ ազգութեանը ցպահանջ չճշտած վնաս էր եւ փառք։", "upload_modal.detect_text": "Յայտնաբերել տեքստը նկարից", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index a664aff56..3b43f60d5 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -47,16 +47,17 @@ "account.unmute": "Berhenti membisukan @{name}", "account.unmute_notifications": "Berhenti bisukan pemberitahuan dari @{name}", "account_note.placeholder": "Klik untuk menambah catatan", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Rata-rata", + "admin.dashboard.retention.cohort": "Bulan pendaftaran", + "admin.dashboard.retention.cohort_size": "Pengguna baru", "alert.rate_limited.message": "Mohon ulangi setelah {retry_time, time, medium}.", "alert.rate_limited.title": "Batasan tingkat", "alert.unexpected.message": "Terjadi kesalahan yang tidak terduga.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Pengumuman", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(tidak diproses)", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", @@ -65,7 +66,7 @@ "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", - "column.blocks": "Pengguna diblokir", + "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", "column.direct": "Pesan langsung", @@ -92,18 +93,19 @@ "community.column_settings.remote_only": "Hanya jarak jauh", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", - "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah di set sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", + "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.", "compose_form.lock_disclaimer.lock": "terkunci", "compose_form.placeholder": "Apa yang ada di pikiran anda?", "compose_form.poll.add_option": "Tambahkan pilihan", - "compose_form.poll.duration": "Durasi jajak pendapat", + "compose_form.poll.duration": "Durasi polling", "compose_form.poll.option_placeholder": "Pilihan {number}", "compose_form.poll.remove_option": "Hapus opsi ini", "compose_form.poll.switch_to_multiple": "Ubah japat menjadi pilihan ganda", "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.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}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Apa anda yakin untuk menghapus status ini?", "confirmations.delete_list.confirm": "Hapus", "confirmations.delete_list.message": "Apakah anda yakin untuk menghapus daftar ini secara permanen?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Buang", + "confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan deskripsi atau pratinjau media, buang saja?", "confirmations.domain_block.confirm": "Sembunyikan keseluruhan domain", "confirmations.domain_block.message": "Apakah anda benar benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.", "confirmations.logout.confirm": "Keluar", @@ -127,8 +129,8 @@ "confirmations.mute.confirm": "Bisukan", "confirmations.mute.explanation": "Ini akan menyembunyikan pos dari mereka dan pos yang menyebut mereka, tapi ini tetap mengizinkan mereka melihat posmu dan mengikutimu.", "confirmations.mute.message": "Apa anda yakin ingin membisukan {name}?", - "confirmations.redraft.confirm": "Hapus dan konsep ulang", - "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.", + "confirmations.redraft.confirm": "Hapus dan susun ulang", + "confirmations.redraft.message": "Apakah anda yakin ingin menghapus dan menyusun ulang? Favorit dan boost akan hilang, dan balasan terhadap kiriman asli akan ditinggalkan.", "confirmations.reply.confirm": "Balas", "confirmations.reply.message": "Membalas sekarang akan menimpa pesan yang sedang Anda buat. Anda yakin ingin melanjutkan?", "confirmations.unfollow.confirm": "Berhenti mengikuti", @@ -141,8 +143,8 @@ "directory.local": "Dari {domain} saja", "directory.new_arrivals": "Yang baru datang", "directory.recently_active": "Baru-baru ini aktif", - "embed.instructions": "Sematkan status ini di website anda dengan menyalin kode di bawah ini.", - "embed.preview": "Seperti ini nantinya:", + "embed.instructions": "Sematkan kiriman ini di website anda dengan menyalin kode di bawah ini.", + "embed.preview": "Tampilan akan seperti ini nantinya:", "emoji_button.activity": "Aktivitas", "emoji_button.custom": "Kustom", "emoji_button.flags": "Bendera", @@ -166,8 +168,8 @@ "empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", "empty_column.domain_blocks": "Tidak ada topik tersembunyi.", "empty_column.favourited_statuses": "Anda belum memiliki toot favorit. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", - "empty_column.favourites": "Tidak ada seorangpun yang memfavoritkan toot ini. Ketika seseorang melakukannya, maka akan muncul disini.", - "empty_column.follow_recommendations": "Sepertinya tak ada saran yang dibuat untuk Anda. Anda dapat coba menggunakan pencarian untuk menemukan orang yang Anda ketahui atau menjelajahi tagar yang sedang tren.", + "empty_column.favourites": "Belum ada yang memfavoritkan toot ini. Ketika seseorang melakukannya, akan muncul disini.", + "empty_column.follow_recommendations": "Sepertinya tak ada saran yang dibuat untuk Anda. Anda dapat mencoba menggunakan pencarian untuk menemukan orang yang Anda ketahui atau menjelajahi tagar yang sedang tren.", "empty_column.follow_requests": "Anda belum memiliki permintaan mengikuti. Ketika Anda menerimanya, maka akan muncul disini.", "empty_column.hashtag": "Tidak ada apapun dalam hashtag ini.", "empty_column.home": "Linimasa anda kosong! Kunjungi {public} atau gunakan pencarian untuk memulai dan bertemu pengguna lain.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favorit:", "notifications.column_settings.filter_bar.advanced": "Tampilkan semua kategori", "notifications.column_settings.filter_bar.category": "Bilah penyaring cepat", - "notifications.column_settings.filter_bar.show": "Tampilkan", + "notifications.column_settings.filter_bar.show_bar": "Tampilkan bilah filter", "notifications.column_settings.follow": "Pengikut baru:", "notifications.column_settings.follow_request": "Permintaan mengikuti baru:", "notifications.column_settings.mention": "Balasan:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Tampilkan dalam kolom", "notifications.column_settings.sound": "Mainkan suara", "notifications.column_settings.status": "Toot baru:", - "notifications.column_settings.unread_markers.category": "Penanda notifikasi belum dibaca", + "notifications.column_settings.unread_notifications.category": "Notifikasi yang belum dibaca", + "notifications.column_settings.unread_notifications.highlight": "Sorot notifikasi yang belum dibaca", "notifications.filter.all": "Semua", "notifications.filter.boosts": "Boost", "notifications.filter.favourites": "Favorit", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, other {# suara}}", "poll.vote": "Memilih", "poll.voted": "Anda memilih jawaban ini", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, other {# suara}}", "poll_button.add_poll": "Tambah japat", "poll_button.remove_poll": "Hapus japat", "privacy.change": "Tentukan privasi status", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,14 @@ "status.delete": "Hapus", "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.embed": "Tanam", "status.favourite": "Difavoritkan", "status.filtered": "Disaring", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Tampilkan semua", "status.media_hidden": "Media disembunyikan", "status.mention": "Balasan @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Penjelasan untuk orang dengan gangguan pendengaran atau penglihatan", "upload_modal.analyzing_picture": "Analisis gambar…", "upload_modal.apply": "Terapkan", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Menerapkan…", "upload_modal.choose_image": "Pilih gambar", "upload_modal.description_placeholder": "Muharjo seorang xenofobia universal yang takut pada warga jazirah, contohnya Qatar", "upload_modal.detect_text": "Deteksi teks pada gambar", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index a0c7c4912..ee8a2b1b9 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -47,7 +47,8 @@ "account.unmute": "Ne plus celar @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Siflar", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favorati:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Nova sequanti:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mencioni:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Montrar en kolumno", "notifications.column_settings.sound": "Plear sono", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Nihiligar", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Efacar", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favorizar", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Kargar pluse", "status.media_hidden": "Kontenajo celita", "status.mention": "Mencionar @{name}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 9aeca30ac..5020bd068 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Meðaltal", + "admin.dashboard.retention.cohort": "Mánuður nýskráninga", + "admin.dashboard.retention.cohort_size": "Nýir notendur", "alert.rate_limited.message": "Prófaðu aftur eftir {retry_time, time, medium}.", "alert.rate_limited.title": "Með takmörkum", "alert.unexpected.message": "Upp kom óvænt villa.", "alert.unexpected.title": "Úbbs!", "announcement.announcement": "Auglýsing", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(óunnið)", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", @@ -104,6 +105,7 @@ "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_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", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Ertu viss um að þú viljir eyða þessari stöðufæ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": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "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.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", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Fílanir:", "notifications.column_settings.filter_bar.advanced": "Birta alla flokka", "notifications.column_settings.filter_bar.category": "Skyndisíustika", - "notifications.column_settings.filter_bar.show": "Sýna", + "notifications.column_settings.filter_bar.show_bar": "Birta síustikuna", "notifications.column_settings.follow": "Nýir fylgjendur:", "notifications.column_settings.follow_request": "Nýjar beiðnir um að fylgjast með:", "notifications.column_settings.mention": "Tilvísanir:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Sýna í dálki", "notifications.column_settings.sound": "Spila hljóð", "notifications.column_settings.status": "Ný þyt:", - "notifications.column_settings.unread_markers.category": "Merki fyrir ólesnar tilkynningar", + "notifications.column_settings.unread_notifications.category": "Ólesnar tilkynningar", + "notifications.column_settings.unread_notifications.highlight": "Áherslulita ólesnar tilkynningar", "notifications.filter.all": "Allt", "notifications.filter.boosts": "Endurbirtingar", "notifications.filter.favourites": "Fílanir", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# atkvæði} other {# atkvæði}}", "poll.vote": "Greiða atkvæði", "poll.voted": "Þú kaust þetta svar", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "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", @@ -362,12 +365,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.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.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:", @@ -396,9 +407,14 @@ "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.embed": "Ívefja", "status.favourite": "Fílanir", "status.filtered": "Síað", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Hlaða inn meiru", "status.media_hidden": "Mynd er falin", "status.mention": "Minnast á @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Lýstu þessu fyrir fólk sem heyrir illa eða er með skerta sjón", "upload_modal.analyzing_picture": "Greini mynd…", "upload_modal.apply": "Virkja", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Beiti…", "upload_modal.choose_image": "Veldu mynd", "upload_modal.description_placeholder": "Öllum dýrunum í skóginum þætti bezt að vera vinir", "upload_modal.detect_text": "Skynja texta úr mynd", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index d2c9e1179..c02c84f09 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -6,20 +6,20 @@ "account.block": "Blocca @{name}", "account.block_domain": "Blocca dominio {domain}", "account.blocked": "Bloccato", - "account.browse_more_on_origin_server": "Sfoglia ulteriormente sul profilo originale", + "account.browse_more_on_origin_server": "Sfoglia di più sul profilo originale", "account.cancel_follow_request": "Annulla richiesta di seguire", "account.direct": "Messaggio diretto a @{name}", "account.disable_notifications": "Smetti di avvisarmi quando @{name} pubblica un post", "account.domain_blocked": "Dominio bloccato", "account.edit_profile": "Modifica profilo", "account.enable_notifications": "Avvisami quando @{name} pubblica un post", - "account.endorse": "Mostra sul profilo", + "account.endorse": "Metti in evidenza sul profilo", "account.follow": "Segui", "account.followers": "Follower", - "account.followers.empty": "Ancora nessuno segue questo utente.", + "account.followers.empty": "Nessuno segue ancora questo utente.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", "account.following_counter": "{count, plural, other {{counter} Seguiti}}", - "account.follows.empty": "Questo utente non segue ancora nessuno.", + "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined": "Su questa istanza dal {date}", @@ -31,15 +31,15 @@ "account.moved_to": "{name} si è trasferito su:", "account.mute": "Silenzia @{name}", "account.mute_notifications": "Silenzia notifiche da @{name}", - "account.muted": "Silenziat*", + "account.muted": "Silenziato", "account.never_active": "Mai", - "account.posts": "Toot", - "account.posts_with_replies": "Toot e risposte", + "account.posts": "Post", + "account.posts_with_replies": "Post e risposte", "account.report": "Segnala @{name}", "account.requested": "In attesa di approvazione. Clicca per annullare la richiesta di seguire", "account.share": "Condividi il profilo di @{name}", "account.show_reblogs": "Mostra condivisioni da @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toot}}", + "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Post}}", "account.unblock": "Sblocca @{name}", "account.unblock_domain": "Sblocca il dominio {domain}", "account.unendorse": "Non mostrare sul profilo", @@ -47,16 +47,17 @@ "account.unmute": "Riattiva @{name}", "account.unmute_notifications": "Riattiva le notifiche da @{name}", "account_note.placeholder": "Clicca per aggiungere una nota", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Sei pregato di riprovare tra {retry_time, time, medium}.", - "alert.rate_limited.title": "Limitazione per eccesso di richieste", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Media", + "admin.dashboard.retention.cohort": "Mese di iscrizione", + "admin.dashboard.retention.cohort_size": "Nuovi utenti", + "alert.rate_limited.message": "Riprova dopo le {retry_time, time, medium}.", + "alert.rate_limited.title": "Rate limit", "alert.unexpected.message": "Si è verificato un errore imprevisto.", "alert.unexpected.title": "Oops!", "announcement.announcement": "Annuncio", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(non elaborato)", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.", @@ -77,22 +78,22 @@ "column.lists": "Elenchi", "column.mutes": "Utenti silenziati", "column.notifications": "Notifiche", - "column.pins": "Toot in evidenza", + "column.pins": "Post fissati in cima", "column.public": "Timeline federata", "column_back_button.label": "Indietro", "column_header.hide_settings": "Nascondi impostazioni", "column_header.moveLeft_settings": "Sposta colonna a sinistra", "column_header.moveRight_settings": "Sposta colonna a destra", - "column_header.pin": "Evidenzia", + "column_header.pin": "Fissa in cima", "column_header.show_settings": "Mostra impostazioni", - "column_header.unpin": "Non mettere in evidenza", + "column_header.unpin": "Non fissare in cima", "column_subheading.settings": "Impostazioni", "community.column_settings.local_only": "Solo Locale", "community.column_settings.media_only": "Solo Media", "community.column_settings.remote_only": "Solo Remoto", - "compose_form.direct_message_warning": "Questo toot sarà inviato solo agli utenti menzionati.", + "compose_form.direct_message_warning": "Questo post sarà inviato solo agli utenti menzionati.", "compose_form.direct_message_warning_learn_more": "Scopri di più", - "compose_form.hashtag_warning": "Questo toot non sarà elencato sotto alcun hashtag poiché senza elenco. Solo i toot pubblici possono essere ricercati per hashtag.", + "compose_form.hashtag_warning": "Questo post non sarà elencato sotto alcun hashtag poiché senza elenco. Solo i toot pubblici possono essere ricercati per hashtag.", "compose_form.lock_disclaimer": "Il tuo profilo non è {locked}. Chiunque può seguirti e vedere le tue pubblicazioni visibili solo dai follower.", "compose_form.lock_disclaimer.lock": "bloccato", "compose_form.placeholder": "A cosa stai pensando?", @@ -104,6 +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.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", @@ -115,11 +117,11 @@ "confirmations.block.confirm": "Blocca", "confirmations.block.message": "Sei sicuro di voler bloccare {name}?", "confirmations.delete.confirm": "Cancella", - "confirmations.delete.message": "Sei sicuro di voler cancellare questo toot?", + "confirmations.delete.message": "Sei sicuro di voler cancellare questo post?", "confirmations.delete_list.confirm": "Cancella", "confirmations.delete_list.message": "Sei sicuro di voler cancellare definitivamente questa lista?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Abbandona", + "confirmations.discard_edit_media.message": "Sono state apportate modifiche non salvate alla descrizione o all'anteprima del media, vuoi abbandonarle?", "confirmations.domain_block.confirm": "Blocca l'intero dominio", "confirmations.domain_block.message": "Sei davvero, davvero sicur@ di voler bloccare {domain} completamente? Nella maggioranza dei casi, è preferibile e sufficiente bloccare o silenziare pochi account in modo mirato. Non vedrai più il contenuto da quel dominio né nelle timeline pubbliche né nelle tue notifiche. Anzi, verranno rimossi dai follower gli account di questo dominio.", "confirmations.logout.confirm": "Disconnettiti", @@ -141,7 +143,7 @@ "directory.local": "Solo da {domain}", "directory.new_arrivals": "Nuovi arrivi", "directory.recently_active": "Attivo di recente", - "embed.instructions": "Incorpora questo toot sul tuo sito web copiando il codice sotto.", + "embed.instructions": "Incorpora questo post sul tuo sito web copiando il codice sotto.", "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", "emoji_button.custom": "Personalizzato", @@ -158,15 +160,15 @@ "emoji_button.symbols": "Simboli", "emoji_button.travel": "Viaggi & Luoghi", "empty_column.account_suspended": "Account sospeso", - "empty_column.account_timeline": "Nessun toot qui!", + "empty_column.account_timeline": "Nessun post qui!", "empty_column.account_unavailable": "Profilo non disponibile", "empty_column.blocks": "Non hai ancora bloccato alcun utente.", - "empty_column.bookmarked_statuses": "Non hai ancora segnato alcun toot. Quando ne segni uno, sarà mostrato qui.", + "empty_column.bookmarked_statuses": "Non hai ancora segnato alcun post. Quando ne segni uno, sarà mostrato qui.", "empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!", "empty_column.direct": "Non hai ancora nessun messaggio privato. Quando ne manderai o riceverai qualcuno, apparirà qui.", "empty_column.domain_blocks": "Non vi sono domini nascosti.", - "empty_column.favourited_statuses": "Non hai ancora segnato nessun toot come apprezzato. Quando lo farai, comparirà qui.", - "empty_column.favourites": "Nessuno ha ancora segnato questo toot come apprezzato. Quando qualcuno lo farà, apparirà qui.", + "empty_column.favourited_statuses": "Non hai ancora segnato nessun post come apprezzato. Quando lo farai, comparirà qui.", + "empty_column.favourites": "Nessuno ha ancora segnato questo post come apprezzato. Quando qualcuno lo farà, apparirà qui.", "empty_column.follow_recommendations": "Sembra che nessun suggerimento possa essere generato per te. Puoi provare a usare la ricerca per cercare persone che potresti conoscere o esplorare hashtag di tendenza.", "empty_column.follow_requests": "Non hai ancora ricevuto nessuna richiesta di follow. Quando ne riceverai una, verrà mostrata qui.", "empty_column.hashtag": "Non c'è ancora nessun post con questo hashtag.", @@ -208,7 +210,7 @@ "hashtag.column_settings.tag_mode.none": "Nessuno di questi", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "home.column_settings.basic": "Semplice", - "home.column_settings.show_reblogs": "Mostra post condivisi", + "home.column_settings.show_reblogs": "Mostra condivisioni", "home.column_settings.show_replies": "Mostra risposte", "home.hide_announcements": "Nascondi annunci", "home.show_announcements": "Mostra annunci", @@ -217,14 +219,14 @@ "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}", "keyboard_shortcuts.back": "per tornare indietro", "keyboard_shortcuts.blocked": "per aprire l'elenco degli utenti bloccati", - "keyboard_shortcuts.boost": "per condividere", + "keyboard_shortcuts.boost": "Condividi il post", "keyboard_shortcuts.column": "per portare il focus su uno status in una delle colonne", "keyboard_shortcuts.compose": "per portare il focus nell'area di composizione", "keyboard_shortcuts.description": "Descrizione", "keyboard_shortcuts.direct": "per aprire la colonna dei messaggi diretti", - "keyboard_shortcuts.down": "per spostarsi in basso nella lista", - "keyboard_shortcuts.enter": "per aprire lo status", - "keyboard_shortcuts.favourite": "per segnare come apprezzato", + "keyboard_shortcuts.down": "Spostati in basso nella lista", + "keyboard_shortcuts.enter": "Apri il post", + "keyboard_shortcuts.favourite": "Apprezza post", "keyboard_shortcuts.favourites": "per aprire l'elenco dei toot apprezzati", "keyboard_shortcuts.federated": "per aprire la timeline federata", "keyboard_shortcuts.heading": "Tasti di scelta rapida", @@ -237,16 +239,16 @@ "keyboard_shortcuts.my_profile": "per aprire il tuo profilo", "keyboard_shortcuts.notifications": "per aprire la colonna delle notifiche", "keyboard_shortcuts.open_media": "per aprire media", - "keyboard_shortcuts.pinned": "per aprire l'elenco dei toot fissati in cima", + "keyboard_shortcuts.pinned": "Apri l'elenco dei toot fissati in cima", "keyboard_shortcuts.profile": "per aprire il profilo dell'autore", - "keyboard_shortcuts.reply": "per rispondere", + "keyboard_shortcuts.reply": "Rispondi al post", "keyboard_shortcuts.requests": "per aprire l'elenco di richieste di follow", "keyboard_shortcuts.search": "per spostare il focus sulla ricerca", "keyboard_shortcuts.spoilers": "per mostrare/nascondere il campo CW", "keyboard_shortcuts.start": "per aprire la colonna \"Come iniziare\"", "keyboard_shortcuts.toggle_hidden": "per mostrare/nascondere il testo dei CW", "keyboard_shortcuts.toggle_sensitivity": "mostrare/nascondere media", - "keyboard_shortcuts.toot": "per iniziare a scrivere un toot completamente nuovo", + "keyboard_shortcuts.toot": "Crea un nuovo post", "keyboard_shortcuts.unfocus": "per uscire dall'area di composizione o dalla ricerca", "keyboard_shortcuts.up": "per spostarsi in alto nella lista", "lightbox.close": "Chiudi", @@ -294,7 +296,7 @@ "navigation_bar.logout": "Esci", "navigation_bar.mutes": "Utenti silenziati", "navigation_bar.personal": "Personale", - "navigation_bar.pins": "Toot fissati in cima", + "navigation_bar.pins": "Post fissati in cima", "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", "navigation_bar.security": "Sicurezza", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Apprezzati:", "notifications.column_settings.filter_bar.advanced": "Mostra tutte le categorie", "notifications.column_settings.filter_bar.category": "Filtro rapido", - "notifications.column_settings.filter_bar.show": "Mostra", + "notifications.column_settings.filter_bar.show_bar": "Mostra barra filtri", "notifications.column_settings.follow": "Nuovi follower:", "notifications.column_settings.follow_request": "Nuove richieste di follow:", "notifications.column_settings.mention": "Menzioni:", @@ -321,8 +323,9 @@ "notifications.column_settings.reblog": "Post condivisi:", "notifications.column_settings.show": "Mostra in colonna", "notifications.column_settings.sound": "Riproduci suono", - "notifications.column_settings.status": "Nuovi toot:", - "notifications.column_settings.unread_markers.category": "Marcatori di notifica non letti", + "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.filter.all": "Tutti", "notifications.filter.boosts": "Condivisioni", "notifications.filter.favourites": "Apprezzati", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# voto} other {# voti}}", "poll.vote": "Vota", "poll.voted": "Hai votato per questa risposta", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voto} other {# voti}}", "poll_button.add_poll": "Aggiungi un sondaggio", "poll_button.remove_poll": "Rimuovi sondaggio", "privacy.change": "Modifica privacy del post", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -378,27 +389,32 @@ "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", "search_popout.tips.hashtag": "etichetta", - "search_popout.tips.status": "stato", + "search_popout.tips.status": "post", "search_popout.tips.text": "Testo semplice per trovare nomi visualizzati, nomi utente e hashtag che lo contengono", "search_popout.tips.user": "utente", "search_results.accounts": "Gente", "search_results.hashtags": "Hashtag", - "search_results.statuses": "Toot", - "search_results.statuses_fts_disabled": "La ricerca di toot per il loro contenuto non è abilitata su questo server Mastodon.", + "search_results.statuses": "Post", + "search_results.statuses_fts_disabled": "La ricerca di post per il loro contenuto non è abilitata su questo server Mastodon.", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", "status.admin_account": "Apri interfaccia di moderazione per @{name}", - "status.admin_status": "Apri questo status nell'interfaccia di moderazione", + "status.admin_status": "Apri questo post nell'interfaccia di moderazione", "status.block": "Blocca @{name}", "status.bookmark": "Aggiungi segnalibro", "status.cancel_reblog_private": "Annulla condivisione", "status.cannot_reblog": "Questo post non può essere condiviso", - "status.copy": "Copia link allo status", + "status.copy": "Copia link al post", "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.embed": "Incorpora", "status.favourite": "Apprezzato", "status.filtered": "Filtrato", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Mostra di più", "status.media_hidden": "Allegato nascosto", "status.mention": "Nomina @{name}", @@ -407,12 +423,12 @@ "status.mute_conversation": "Silenzia conversazione", "status.open": "Espandi questo post", "status.pin": "Fissa in cima sul profilo", - "status.pinned": "Toot fissato in cima", + "status.pinned": "Post fissato in cima", "status.read_more": "Leggi altro", "status.reblog": "Condividi", "status.reblog_private": "Condividi con i destinatari iniziali", "status.reblogged_by": "{name} ha condiviso", - "status.reblogs.empty": "Nessuno ha ancora condiviso questo toot. Quando qualcuno lo farà, comparirà qui.", + "status.reblogs.empty": "Nessuno ha ancora condiviso questo post. Quando qualcuno lo farà, comparirà qui.", "status.redraft": "Cancella e riscrivi", "status.remove_bookmark": "Elimina segnalibro", "status.reply": "Rispondi", @@ -443,7 +459,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource] da altri server non sono mostrati.", "timeline_hint.resources.followers": "Follower", "timeline_hint.resources.follows": "Segue", - "timeline_hint.resources.statuses": "Toot meno recenti", + "timeline_hint.resources.statuses": "Post meno recenti", "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parla·no", "trends.trending_now": "Di tendenza ora", "ui.beforeunload": "La bozza andrà persa se esci da Mastodon.", @@ -462,7 +478,7 @@ "upload_form.video_description": "Descrizione per persone con difetti uditivi o visivi", "upload_modal.analyzing_picture": "Analisi immagine…", "upload_modal.apply": "Applica", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Applicazione in corso…", "upload_modal.choose_image": "Scegli immagine", "upload_modal.description_placeholder": "Ma la volpe col suo balzo ha raggiunto il quieto Fido", "upload_modal.detect_text": "Rileva testo dall'immagine", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index baba5d66b..a54922ef6 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -47,16 +47,17 @@ "account.unmute": "@{name}さんのミュートを解除", "account.unmute_notifications": "@{name}さんからの通知を受け取るようにする", "account_note.placeholder": "クリックしてメモを追加", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "平均", + "admin.dashboard.retention.cohort": "サインアップ月", + "admin.dashboard.retention.cohort_size": "新しいユーザー", "alert.rate_limited.message": "{retry_time, time, medium} 以降に再度実行してください。", "alert.rate_limited.title": "制限に達しました", "alert.unexpected.message": "不明なエラーが発生しました。", "alert.unexpected.title": "エラー!", "announcement.announcement": "お知らせ", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(未処理)", "autosuggest_hashtag.per_week": "{count} 回 / 週", "boost_modal.combo": "次からは{combo}を押せばスキップできます", "bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。", @@ -108,6 +109,7 @@ "compose_form.poll.switch_to_single": "単一選択に変更", "compose_form.publish": "トゥート", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "メディアを閲覧注意にする", "compose_form.sensitive.marked": "メディアに閲覧注意が設定されています", "compose_form.sensitive.unmarked": "メディアに閲覧注意が設定されていません", @@ -122,8 +124,8 @@ "confirmations.delete.message": "本当に削除しますか?", "confirmations.delete_list.confirm": "削除", "confirmations.delete_list.message": "本当にこのリストを完全に削除しますか?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "破棄", + "confirmations.discard_edit_media.message": "メディアの説明またはプレビューに保存されていない変更があります。それでも破棄しますか?", "confirmations.domain_block.confirm": "ドメイン全体をブロック", "confirmations.domain_block.message": "本当に{domain}全体を非表示にしますか? 多くの場合は個別にブロックやミュートするだけで充分であり、また好ましいです。公開タイムラインにそのドメインのコンテンツが表示されなくなり、通知も届かなくなります。そのドメインのフォロワーはアンフォローされます。", "confirmations.logout.confirm": "ログアウト", @@ -316,8 +318,8 @@ "notifications.column_settings.alert": "デスクトップ通知", "notifications.column_settings.favourite": "お気に入り:", "notifications.column_settings.filter_bar.advanced": "すべてのカテゴリを表示", - "notifications.column_settings.filter_bar.category": "クイックフィルターバー", - "notifications.column_settings.filter_bar.show": "表示", + "notifications.column_settings.filter_bar.category": "クイックフィルターバー:", + "notifications.column_settings.filter_bar.show_bar": "フィルターバーを表示", "notifications.column_settings.follow": "新しいフォロワー:", "notifications.column_settings.follow_request": "新しいフォローリクエスト:", "notifications.column_settings.mention": "返信:", @@ -327,7 +329,8 @@ "notifications.column_settings.show": "カラムに表示", "notifications.column_settings.sound": "通知音を再生", "notifications.column_settings.status": "新しい投稿:", - "notifications.column_settings.unread_markers.category": "未読マーカー", + "notifications.column_settings.unread_notifications.category": "未読の通知:", + "notifications.column_settings.unread_notifications.highlight": "未読の通知を強調表示", "notifications.filter.all": "すべて", "notifications.filter.boosts": "ブースト", "notifications.filter.favourites": "お気に入り", @@ -351,7 +354,7 @@ "poll.total_votes": "{count}票", "poll.vote": "投票", "poll.voted": "この項目に投票しました", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes}票", "poll_button.add_poll": "アンケートを追加", "poll_button.remove_poll": "アンケートを削除", "privacy.change": "公開範囲を変更", @@ -367,12 +370,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.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.forward": "{target} に転送する", "report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?", "report.hint": "通報内容はあなたのサーバーのモデレーターへ送信されます。通報理由を入力してください。:", @@ -401,9 +412,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.embed": "埋め込み", "status.favourite": "お気に入り", "status.filtered": "フィルターされました", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "もっと見る", "status.media_hidden": "非表示のメディア", "status.mention": "@{name}さんに投稿", @@ -467,7 +483,7 @@ "upload_form.video_description": "視聴が難しいユーザーへの説明", "upload_modal.analyzing_picture": "画像を解析中…", "upload_modal.apply": "適用", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "適用中...", "upload_modal.choose_image": "画像を選択", "upload_modal.description_placeholder": "あのイーハトーヴォのすきとおった風", "upload_modal.detect_text": "画像からテキストを検出", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 2b1221d6f..12ff62dba 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -47,7 +47,8 @@ "account.unmute": "ნუღარ აჩუმებ @{name}-ს", "account.unmute_notifications": "ნუღარ აჩუმებ შეტყობინებებს @{name}-სგან", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "ტუტი", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "მედია მონიშნულია მგრძნობიარედ", "compose_form.sensitive.unmarked": "მედია არაა მონიშნული მგრძნობიარედ", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "ფავორიტები:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "ახალი მიმდევრები:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "ხსენებები:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "გამოჩნდეს სვეტში", "notifications.column_settings.sound": "ხმის დაკვრა", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,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.hours": "{number}სთ", "relative_time.just_now": "ახლა", "relative_time.minutes": "{number}წთ", "relative_time.seconds": "{number}წმ", "relative_time.today": "today", "reply_indicator.cancel": "უარყოფა", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "ფორვარდი {target}-ს", "report.forward_hint": "ანგარიში სხვა სერვერიდანაა. გავაგზავნოთ რეპორტის ანონიმური ასლიც?", "report.hint": "რეპორტი გაეგზავნება თქვენი ინსტანციის მოდერატორებს. ქვემოთ შეგიძლიათ დაამატოთ მიზეზი თუ რატომ არეპორტებთ ამ ანგარიშს:", @@ -396,9 +407,14 @@ "status.delete": "წაშლა", "status.detailed_status": "Detailed conversation view", "status.direct": "პირდაპირი წერილი @{name}-ს", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "ჩართვა", "status.favourite": "ფავორიტი", "status.filtered": "ფილტრირებული", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "მეტის ჩატვირთვა", "status.media_hidden": "მედია დამალულია", "status.mention": "ასახელე @{name}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 632054786..f420ac45b 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -47,10 +47,11 @@ "account.unmute": "Kkes asgugem ɣef @{name}", "account.unmute_notifications": "Serreḥ ilɣa sɣur @{name}", "account_note.placeholder": "Ulac iwenniten", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Iseqdacen imaynuten", "alert.rate_limited.message": "Ma ulac aɣilif ɛreḍ tikelt-nniḍen akka {retry_time, time, medium}.", "alert.rate_limited.title": "Aktum s talast", "alert.unexpected.message": "Yeḍra-d unezri ur netturaǧu ara.", @@ -104,6 +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.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", @@ -118,7 +120,7 @@ "confirmations.delete.message": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?", "confirmations.delete_list.confirm": "Kkes", "confirmations.delete_list.message": "Tebɣiḍ s tidet ad tekkseḍ umuɣ-agi i lebda?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Sefsex", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Ffer taɣult meṛṛa", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Ismenyifen:", "notifications.column_settings.filter_bar.advanced": "Ssken-d meṛṛa tiggayin", "notifications.column_settings.filter_bar.category": "Iri n usizdeg uzrib", - "notifications.column_settings.filter_bar.show": "Ssken", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Imeḍfaṛen imaynuten:", "notifications.column_settings.follow_request": "Isuturen imaynuten n teḍfeṛt:", "notifications.column_settings.mention": "Abdar:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Ssken-d tilɣa deg ujgu", "notifications.column_settings.sound": "Rmed imesli", "notifications.column_settings.status": "Tiẓenẓunin timaynutin:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Akk", "notifications.filter.boosts": "Seǧhed", "notifications.filter.favourites": "Ismenyifen", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Yessalay-d…", "regeneration_indicator.sublabel": "Tasuddemt tagejdant ara d-tettwaheggay!", "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.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}isr", "relative_time.just_now": "tura", "relative_time.minutes": "{number}tis", "relative_time.seconds": "{number}tas", "relative_time.today": "assa", "reply_indicator.cancel": "Sefsex", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "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?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Kkes", "status.detailed_status": "Detailed conversation view", "status.direct": "Izen usrid i @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Seddu", "status.favourite": "Rnu ɣer yismenyifen", "status.filtered": "Yettwasizdeg", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Sali ugar", "status.media_hidden": "Taɣwalt tettwaffer", "status.mention": "Bder-d @{name}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 1407a0991..074ae5844 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -47,7 +47,8 @@ "account.unmute": "@{name} ескертпелерін қосу", "account.unmute_notifications": "@{name} ескертпелерін көрсету", "account_note.placeholder": "Жазба қалдыру үшін бас", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Тек бір жауап таңдайтындай қылу", "compose_form.publish": "Түрт", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Сезімтал ретінде белгіле", "compose_form.sensitive.marked": "Медиа нәзік деп белгіленген", "compose_form.sensitive.unmarked": "Медиа нәзік деп белгіленбеген", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Таңдаулылар:", "notifications.column_settings.filter_bar.advanced": "Барлық категорияны көрсет", "notifications.column_settings.filter_bar.category": "Жедел сүзгі", - "notifications.column_settings.filter_bar.show": "Көрсету", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Жаңа оқырмандар:", "notifications.column_settings.follow_request": "Жазылуға жаңа сұранымдар:", "notifications.column_settings.mention": "Аталымдар:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Бағанда көрсет", "notifications.column_settings.sound": "Дыбысын қос", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Барлығы", "notifications.filter.boosts": "Бөлісулер", "notifications.filter.favourites": "Таңдаулылар", @@ -362,12 +365,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.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.forward": "Жіберу {target}", "report.forward_hint": "Бұл аккаунт басқа серверден. Аноним шағым жібересіз бе?", "report.hint": "Шағым сіздің модераторларға жіберіледі. Шағымның себептерін мына жерге жазуыңызға болады:", @@ -396,9 +407,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.embed": "Embеd", "status.favourite": "Таңдаулы", "status.filtered": "Фильтрленген", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Тағы әкел", "status.media_hidden": "Жабық медиа", "status.mention": "Аталым @{name}", diff --git a/app/javascript/mastodon/locales/kmr.json b/app/javascript/mastodon/locales/kmr.json index 8f862606d..f45e305cd 100644 --- a/app/javascript/mastodon/locales/kmr.json +++ b/app/javascript/mastodon/locales/kmr.json @@ -21,7 +21,7 @@ "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}", "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", - "account.hide_reblogs": "Boost ên ji @{name} veşêre", + "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", "account.joined": "Tevlîbû di {date} de", "account.last_status": "Çalakiya dawî", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", @@ -34,11 +34,11 @@ "account.muted": "Bêdengkirî", "account.never_active": "Tu car", "account.posts": "Şandî", - "account.posts_with_replies": "Toot û bersiv", + "account.posts_with_replies": "Şandî û bersiv", "account.report": "@{name} Ragihîne", "account.requested": "Li benda erêkirinê ye. Ji bo betal kirina daxwazê pêl bikin", "account.share": "Profîla @{name} parve bike", - "account.show_reblogs": "Boostên @{name} nîşan bike", + "account.show_reblogs": "Bilindkirinên ji @{name} nîşan bike", "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}", "account.unblock": "Astengê li ser @{name} rake", "account.unblock_domain": "Astengê li ser navperê {domain} rake", @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Navîn", + "admin.dashboard.retention.cohort": "Meha tomarkirinê", + "admin.dashboard.retention.cohort_size": "Bikarhênerên nû", "alert.rate_limited.message": "Jkx dîsa biceribîne piştî {retry_time, time, medium}.\n \n", "alert.rate_limited.title": "Rêje sînorkirî ye", "alert.unexpected.message": "Çewtiyeke bêhêvî çê bû.", "alert.unexpected.title": "Wey li min!", "announcement.announcement": "Daxuyanî", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(bêpêvajo)", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", @@ -77,7 +78,7 @@ "column.lists": "Rêzok", "column.mutes": "Bikarhênerên bêdengkirî", "column.notifications": "Agahdarî", - "column.pins": "Toot a derzîkirî", + "column.pins": "Şandiya derzîkirî", "column.public": "Demnameyê federalîkirî", "column_back_button.label": "Veger", "column_header.hide_settings": "Sazkariyan veşêre", @@ -90,7 +91,7 @@ "community.column_settings.local_only": "Tenê herêmî", "community.column_settings.media_only": "Tenê media", "community.column_settings.remote_only": "Tenê ji dûr ve", - "compose_form.direct_message_warning": "Ev toot tenê ji bikarhênerên behskirî re were şandin.", + "compose_form.direct_message_warning": "Ev şandî tenê ji bikarhênerên qalkirî re wê were şandin.", "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe", "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", @@ -104,6 +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.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}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", "confirmations.delete_list.confirm": "Jê bibe", "confirmations.delete_list.message": "Ma tu dixwazî bi awayekî herdemî vê rêzokê jê bibî?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Biavêje", + "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?", "confirmations.domain_block.confirm": "Hemî navperê asteng bike", "confirmations.domain_block.message": "Tu ji xwe bawerî, bi rastî tu dixwazî hemû {domain} asteng bikî? Di gelek rewşan de asteng kirin an jî bêdeng kirin têrê dike û tê tercîh kirin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê were jêbirin.", "confirmations.logout.confirm": "Derkeve", @@ -128,7 +130,7 @@ "confirmations.mute.explanation": "Ev ê şandinên ji wan tê û şandinên ku behsa wan dike veşêre, lê hê jî maf dide ku ew şandinên te bibînin û te bişopînin.", "confirmations.mute.message": "Bi rastî tu dixwazî {name} bêdeng bikî?", "confirmations.redraft.confirm": "Jê bibe & ji nû ve serrast bike", - "confirmations.redraft.message": "Bi rastî tu dixwazî şandî ye jê bibî û nûve reşnivîsek çê bikî? Bijare û şandîyên wenda bibin û bersivên ji bo şandiye orîjînal sêwî bimînin.", + "confirmations.redraft.message": "Bi rastî tu dixwazî şandî ye jê bibî û nûve reşnivîsek çê bikî? Bijare û şandî wê wenda bibin û bersivên ji bo şandiyê resen wê sêwî bimînin.", "confirmations.reply.confirm": "Bersivê bide", "confirmations.reply.message": "Bersiva niha li ser peyama ku tu niha berhev dikî dê binivsîne. Ma pê bawer î ku tu dixwazî bidomînî?", "confirmations.unfollow.confirm": "Neşopîne", @@ -187,7 +189,7 @@ "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", "follow_request.authorize": "Mafê bide", - "follow_request.reject": "Nepejir", + "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", "generic.saved": "Tomarkirî", "getting_started.developers": "Pêşdebir", @@ -208,7 +210,7 @@ "hashtag.column_settings.tag_mode.none": "Ne yek ji van", "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", "home.column_settings.basic": "Bingehîn", - "home.column_settings.show_reblogs": "Boost'an nîşan bike", + "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", "home.column_settings.show_replies": "Bersivan nîşan bide", "home.hide_announcements": "Reklaman veşêre", "home.show_announcements": "Reklaman nîşan bide", @@ -217,7 +219,7 @@ "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}", "keyboard_shortcuts.back": "Vegere paşê", "keyboard_shortcuts.blocked": "Rêzoka bikarhênerên astengkirî veke", - "keyboard_shortcuts.boost": "Şandiya parve (boost) bike", + "keyboard_shortcuts.boost": "Şandiyê bilind bike", "keyboard_shortcuts.column": "Stûna balkişandinê", "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", "keyboard_shortcuts.description": "Danasîn", @@ -294,8 +296,8 @@ "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", "navigation_bar.personal": "Kesanî", - "navigation_bar.pins": "Toot a derzîkirî", - "navigation_bar.preferences": "Hilbijarte", + "navigation_bar.pins": "Şandiya derzîkirî", + "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameyê federalîkirî", "navigation_bar.security": "Ewlehî", "notification.favourite": "{name} şandiya te hez kir", @@ -304,7 +306,7 @@ "notification.mention": "{name} qale te kir", "notification.own_poll": "Rapirsîya te qediya", "notification.poll": "Rapirsiyeke ku te deng daye qediya", - "notification.reblog": "{name} şandiya te belav kir/ boost kir", + "notification.reblog": "{name} şandiya te bilind kir", "notification.status": "{name} niha şand", "notifications.clear": "Agahdariyan pak bike", "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Bijarte:", "notifications.column_settings.filter_bar.advanced": "Hemû beşan nîşan bide", "notifications.column_settings.filter_bar.category": "Şivika parzûna bilêz", - "notifications.column_settings.filter_bar.show": "Nîşan bike", + "notifications.column_settings.filter_bar.show_bar": "Darika parzûnê nîşan bide", "notifications.column_settings.follow": "Şopînerên nû:", "notifications.column_settings.follow_request": "Daxwazên şopandinê nû:", "notifications.column_settings.mention": "Qalkirin:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Di nav stûnê de nîşan bike", "notifications.column_settings.sound": "Deng lêxe", "notifications.column_settings.status": "Şandiyên nû:", - "notifications.column_settings.unread_markers.category": "Nîşankerê agahdariyên nexwendî", + "notifications.column_settings.unread_notifications.category": "Agahdariyên nexwendî", + "notifications.column_settings.unread_notifications.highlight": "Agahiyên nexwendî nîşan bike", "notifications.filter.all": "Hemû", "notifications.filter.boosts": "Bilindkirî", "notifications.filter.favourites": "Bijarte", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# deng} other {# deng}}", "poll.vote": "Deng bide", "poll.voted": "Te dengê xwe da vê bersivê", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# deng} other {# deng}}", "poll_button.add_poll": "Rapirsîyek zêde bike", "poll_button.remove_poll": "Rapirsî yê rake", "privacy.change": "Nepênîtiya şandiyan biguherîne", @@ -362,12 +365,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.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.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î:", @@ -396,9 +407,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.embed": "Hedimandî", "status.favourite": "Bijarte", "status.filtered": "Parzûnkirî", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Bêtir bar bike", "status.media_hidden": "Medya veşartî ye", "status.mention": "Qal @{name} bike", @@ -409,7 +425,7 @@ "status.pin": "Li ser profîlê derzî bike", "status.pinned": "Şandiya derzîkirî", "status.read_more": "Bêtir bixwîne", - "status.reblog": "Bilindkirî", + "status.reblog": "Bilind bike", "status.reblog_private": "Bi dîtina resen bilind bike", "status.reblogged_by": "{name} bilind kir", "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.", @@ -462,7 +478,7 @@ "upload_form.video_description": "Ji bo kesên kerr û lalan pênase bike", "upload_modal.analyzing_picture": "Wêne tê analîzkirin…", "upload_modal.apply": "Bisepîne", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Tê sepandin…", "upload_modal.choose_image": "Wêneyê hilbijêre", "upload_modal.description_placeholder": "Rovîyek qehweyî û bilez li ser kûçikê tîral banz dide", "upload_modal.detect_text": "Ji nivîsa wêneyê re serwext be", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 72b8f7f0a..cc6c34e4a 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 4252141e7..613ef7600 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -47,16 +47,17 @@ "account.unmute": "@{name} 뮤트 해제", "account.unmute_notifications": "@{name}의 알림 뮤트 해제", "account_note.placeholder": "클릭해서 노트 추가", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "평균", + "admin.dashboard.retention.cohort": "가입한 달", + "admin.dashboard.retention.cohort_size": "새로운 사용자", "alert.rate_limited.message": "{retry_time, time, medium}에 다시 시도해 주세요.", "alert.rate_limited.title": "빈도 제한됨", "alert.unexpected.message": "예측하지 못한 에러가 발생했습니다.", "alert.unexpected.title": "앗!", "announcement.announcement": "공지사항", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(처리 안 됨)", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", "bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", @@ -65,17 +66,17 @@ "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", - "column.blocks": "차단된 사용자", + "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", "column.community": "로컬 타임라인", "column.direct": "다이렉트 메시지", "column.directory": "프로필 둘러보기", - "column.domain_blocks": "차단된 도메인", + "column.domain_blocks": "차단한 도메인", "column.favourites": "즐겨찾기", "column.follow_requests": "팔로우 요청", "column.home": "홈", "column.lists": "리스트", - "column.mutes": "뮤트된 사용자", + "column.mutes": "뮤트한 사용자", "column.notifications": "알림", "column.pins": "고정된 게시물", "column.public": "연합 타임라인", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "단일 선택 투표로 변경", "compose_form.publish": "뿌우", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "미디어를 민감함으로 설정하기", "compose_form.sensitive.marked": "미디어가 열람주의로 설정되어 있습니다", "compose_form.sensitive.unmarked": "미디어가 열람주의로 설정 되어 있지 않습니다", @@ -118,8 +120,8 @@ "confirmations.delete.message": "정말로 이 게시물을 삭제하시겠습니까?", "confirmations.delete_list.confirm": "삭제", "confirmations.delete_list.message": "정말로 이 리스트를 영구적으로 삭제하시겠습니까?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "취소", + "confirmations.discard_edit_media.message": "미디어 설명이나 미리보기에 대한 저장하지 않은 변경사항이 있습니다. 버리시겠습니까?", "confirmations.domain_block.confirm": "도메인 전체를 차단", "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 컨텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.", "confirmations.logout.confirm": "로그아웃", @@ -164,7 +166,7 @@ "empty_column.bookmarked_statuses": "아직 보관한 게시물이 없습니다. 게시물을 보관하면 여기에 나타납니다.", "empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!", "empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.", - "empty_column.domain_blocks": "아직 차단된 도메인이 없습니다.", + "empty_column.domain_blocks": "아직 차단한 도메인이 없습니다.", "empty_column.favourited_statuses": "아직 즐겨찾기 한 게시물이 없습니다. 게시물을 즐겨찾기 하면 여기에 나타납니다.", "empty_column.favourites": "아직 아무도 이 게시물을 즐겨찾기 하지 않았습니다. 누군가 즐겨찾기를 하면 여기에 나타납니다.", "empty_column.follow_recommendations": "당신을 위한 제안이 생성될 수 없는 것 같습니다. 알 수도 있는 사람을 검색하거나 유행하는 해시태그를 둘러볼 수 있습니다.", @@ -282,17 +284,17 @@ "navigation_bar.compose": "새 게시물 작성", "navigation_bar.direct": "다이렉트 메시지", "navigation_bar.discover": "발견하기", - "navigation_bar.domain_blocks": "차단된 도메인", + "navigation_bar.domain_blocks": "차단한 도메인", "navigation_bar.edit_profile": "프로필 편집", "navigation_bar.favourites": "즐겨찾기", - "navigation_bar.filters": "뮤트된 단어", + "navigation_bar.filters": "뮤트한 단어", "navigation_bar.follow_requests": "팔로우 요청", "navigation_bar.follows_and_followers": "팔로우와 팔로워", "navigation_bar.info": "이 서버에 대해서", "navigation_bar.keyboard_shortcuts": "단축키", "navigation_bar.lists": "리스트", "navigation_bar.logout": "로그아웃", - "navigation_bar.mutes": "뮤트 중인 사용자", + "navigation_bar.mutes": "뮤트한 사용자", "navigation_bar.personal": "개인용", "navigation_bar.pins": "고정된 게시물", "navigation_bar.preferences": "사용자 설정", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "즐겨찾기:", "notifications.column_settings.filter_bar.advanced": "카테고리의 모든 종류를 표시", "notifications.column_settings.filter_bar.category": "퀵 필터 바", - "notifications.column_settings.filter_bar.show": "표시", + "notifications.column_settings.filter_bar.show_bar": "필터 막대 표시", "notifications.column_settings.follow": "새 팔로워:", "notifications.column_settings.follow_request": "새 팔로우 요청:", "notifications.column_settings.mention": "답글:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "컬럼에 표시", "notifications.column_settings.sound": "효과음 재생", "notifications.column_settings.status": "새 게시물:", - "notifications.column_settings.unread_markers.category": "읽지 않음 알림 마커", + "notifications.column_settings.unread_notifications.category": "읽지 않은 알림", + "notifications.column_settings.unread_notifications.highlight": "읽지 않은 알림 강조", "notifications.filter.all": "모두", "notifications.filter.boosts": "부스트", "notifications.filter.favourites": "즐겨찾기", @@ -346,7 +349,7 @@ "poll.total_votes": "{count} 표", "poll.vote": "투표", "poll.voted": "이 답변에 투표했습니다", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes} 표", "poll_button.add_poll": "투표 추가", "poll_button.remove_poll": "투표 삭제", "privacy.change": "포스트의 프라이버시 설정을 변경", @@ -362,12 +365,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.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.forward": "{target}에 포워드 됨", "report.forward_hint": "이 계정은 다른 서버에 있습니다. 익명화 된 사본을 해당 서버에도 전송할까요?", "report.hint": "신고는 당신의 서버 스태프에게 전송 됩니다. 왜 이 계정을 신고하는 지에 대한 설명을 아래에 작성할 수 있습니다:", @@ -396,12 +407,17 @@ "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.embed": "공유하기", "status.favourite": "즐겨찾기", "status.filtered": "필터로 걸러짐", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "더 보기", "status.media_hidden": "미디어 숨겨짐", - "status.mention": "답장", + "status.mention": "@{name}에게 글쓰기", "status.more": "자세히", "status.mute": "@{name} 뮤트", "status.mute_conversation": "이 대화를 뮤트", @@ -416,7 +432,7 @@ "status.redraft": "지우고 다시 쓰기", "status.remove_bookmark": "보관한 게시물 삭제", "status.reply": "답장", - "status.replyAll": "전원에게 답장", + "status.replyAll": "글타래에 답장", "status.report": "신고", "status.sensitive_warning": "민감한 미디어", "status.share": "공유", @@ -462,7 +478,7 @@ "upload_form.video_description": "청각, 시각 장애인을 위한 설명", "upload_modal.analyzing_picture": "이미지 분석 중…", "upload_modal.apply": "적용", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "적용 중...", "upload_modal.choose_image": "이미지 선택", "upload_modal.description_placeholder": "다람쥐 헌 쳇바퀴 타고파", "upload_modal.detect_text": "이미지에서 텍스트 추출", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 2f0c4e511..36b2ffef1 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -47,7 +47,8 @@ "account.unmute": "بێدەنگکردنی @{name}", "account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}", "account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک", "compose_form.publish": "توت", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار", "compose_form.sensitive.marked": "وادەی کۆتایی", "compose_form.sensitive.unmarked": "میدیا وەک هەستیار نیشان نەکراوە", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "دڵخوازترین:", "notifications.column_settings.filter_bar.advanced": "هەموو پۆلەکان پیشان بدە", "notifications.column_settings.filter_bar.category": "شریتی پاڵێوەری خێرا", - "notifications.column_settings.filter_bar.show": "نیشاندان", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "شوێنکەوتوانی نوێ:", "notifications.column_settings.follow_request": "شوینکەوتنی داواکاری نوێ:", "notifications.column_settings.mention": "ئاماژەکان:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "لە ستووندا پیشان بدە", "notifications.column_settings.sound": "لێدانی دەنگ", "notifications.column_settings.status": "توتەکانی نوێ:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "هەموو", "notifications.filter.boosts": "دووبارەتوتەکان", "notifications.filter.favourites": "دڵخوازەکان", @@ -362,12 +365,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.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.forward": "ناردن بۆ {target}", "report.forward_hint": "هەژمارەکە لە ڕاژەیەکی ترە. ڕونووسێکی نەناسراو بنێرە بۆ گوزارشت لەوێ?", "report.hint": "گوزارشتەکە دەنێردرێت بۆ بەرپرسانی ڕاژەکەت. دەتوانیت ڕوونکردنەوەیەک پێشکەش بکەیت کە بۆچی ئەم هەژمارە لە خوارەوە گوزارش دەکەیت:", @@ -396,9 +407,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.embed": "نیشتەجێ بکە", "status.favourite": "دڵخواز", "status.filtered": "پاڵاوتن", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "بارکردنی زیاتر", "status.media_hidden": "میدیای شاراوە", "status.mention": "ناوبنێ @{name}", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 14dcd9618..c8638e56a 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -47,7 +47,8 @@ "account.unmute": "Antawhe @{name}", "account.unmute_notifications": "Antawhe gwarnyansow a @{name}", "account_note.placeholder": "Klyckya dhe geworra noten", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Chanjya sondyans dhe asa unn dewis hepken", "compose_form.publish": "Tout", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Merkya myski vel tender} other {Merkya myski vel tender}}", "compose_form.sensitive.marked": "{count, plural, one {Myski merkys vel tender} other {Myski merkys vel tender}}", "compose_form.sensitive.unmarked": "{count, plural, one {Nyns yw myski merkys vel tender} other {Nyns yw myski merkys vel tender}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Re drudh:", "notifications.column_settings.filter_bar.advanced": "Displetya rummow oll", "notifications.column_settings.filter_bar.category": "Barr sidhla skav", - "notifications.column_settings.filter_bar.show": "Diskwedhes", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Holyoryon nowydh:", "notifications.column_settings.follow_request": "Govynnow holya nowydh:", "notifications.column_settings.mention": "Menegow:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Diskwedhes yn koloven", "notifications.column_settings.sound": "Seni son", "notifications.column_settings.status": "Postow nowydh:", - "notifications.column_settings.unread_markers.category": "Merkys gwarnyansow anredys", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Oll", "notifications.filter.boosts": "Kenerthow", "notifications.filter.favourites": "Re drudh", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Ow karga…", "regeneration_indicator.sublabel": "Yma agas lin dre ow pos pareusys!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}o", "relative_time.just_now": "lemmyn", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}e", "relative_time.today": "hedhyw", "reply_indicator.cancel": "Hedhi", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Dasvovya dhe {target}", "report.forward_hint": "Yma'n akont ma a leuren aral. Dannvon dasskrif dihanow an derivas ena ynwedh?", "report.hint": "An derivas a vydh danvenys dhe goswydhyon agas leuren. Hwi a yll profya displegyans a prag ytho owgh hwi ow reportya'n akont ma a-wòles:", @@ -396,9 +407,14 @@ "status.delete": "Dilea", "status.detailed_status": "Gwel kesklapp a-vanyl", "status.direct": "Messach didro dhe @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Staga", "status.favourite": "Merkya vel drudh", "status.filtered": "Sidhlys", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Karga moy", "status.media_hidden": "Myski kudhys", "status.mention": "Meneges @{name}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 0c1a46de3..1ed083f0c 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 4d65daa83..f8f61532a 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Vidēji", + "admin.dashboard.retention.cohort": "Reģistrēšanās mēnesis", + "admin.dashboard.retention.cohort_size": "Jauni lietotāji", "alert.rate_limited.message": "Lūdzu, mēģini vēlreiz pāc {retry_time, time, medium}.", "alert.rate_limited.title": "Biežums ierobežots", - "alert.unexpected.message": "Negaidīta kļūda.", + "alert.unexpected.message": "Radās negaidīta kļūda.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Paziņojums", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(neapstrādāti)", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", "bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.", @@ -104,6 +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.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}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Vai tiešām vēlaties dzēst šo ziņu?", "confirmations.delete_list.confirm": "Dzēst", "confirmations.delete_list.message": "Vai tiešam vēlies neatgriezeniski dzēst šo sarakstu?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Izmest", + "confirmations.discard_edit_media.message": "Vai tev ir nesaglabātas izmaiņas mediju aprakstā vai priekšskatījumā, vai tomēr atmest tās?", "confirmations.domain_block.confirm": "Bloķēt visu domēnu", "confirmations.domain_block.message": "Vai tu tiešām, tiešam vēlies bloķēt visu domēnu {domain}? Lielākajā daļā gadījumu pietiek ja nobloķē vai apklusini kādu. Tu neredzēsi saturu vai paziņojumus no šī domēna nevienā laika līnijā. Tavi sekotāji no šī domēna tiks noņemti.", "confirmations.logout.confirm": "Iziet", @@ -202,7 +204,7 @@ "hashtag.column_header.tag_mode.any": "vai {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", "hashtag.column_settings.select.no_options_message": "Ieteikumi netika atrasti", - "hashtag.column_settings.select.placeholder": "Ievadīt mirkļbirkas…", + "hashtag.column_settings.select.placeholder": "Ievadīt tēmturus…", "hashtag.column_settings.tag_mode.all": "Visi no šiem", "hashtag.column_settings.tag_mode.any": "Kāds no šiem", "hashtag.column_settings.tag_mode.none": "Neviens no šiem", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Izlases:", "notifications.column_settings.filter_bar.advanced": "Rādīt visas kategorijas", "notifications.column_settings.filter_bar.category": "Ātro filtru josla", - "notifications.column_settings.filter_bar.show": "Parādīt", + "notifications.column_settings.filter_bar.show_bar": "Rādīt filtru joslu", "notifications.column_settings.follow": "Jauni sekotāji:", "notifications.column_settings.follow_request": "Jauni sekotāju pieprasījumi:", "notifications.column_settings.mention": "Pieminējumi:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Rādīt kolonnā", "notifications.column_settings.sound": "Atskaņot skaņu", "notifications.column_settings.status": "Jaunas ziņas:", - "notifications.column_settings.unread_markers.category": "Nelasīto paziņojumu marķieri", + "notifications.column_settings.unread_notifications.category": "Nelasītie paziņojumi", + "notifications.column_settings.unread_notifications.highlight": "Iezīmēt nelasītos paziņojumus", "notifications.filter.all": "Visi", "notifications.filter.boosts": "Palielinājumi", "notifications.filter.favourites": "Izlases", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# balsojums} other {# balsojumi}}", "poll.vote": "Balsot", "poll.voted": "Tu balsoji par šo atbildi", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# balss} other {# balsis}}", "poll_button.add_poll": "Pievienot aptauju", "poll_button.remove_poll": "Noņemt aptauju", "privacy.change": "Mainīt ziņas privātumu", @@ -362,12 +365,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.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.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:", @@ -382,7 +393,7 @@ "search_popout.tips.text": "Vienkāršs teksts atgriež atbilstošus parādāmos vārdus, lietotājvārdus un mirkļbirkas", "search_popout.tips.user": "lietotājs", "search_results.accounts": "Cilvēki", - "search_results.hashtags": "Mirkļbirkas", + "search_results.hashtags": "Tēmturi", "search_results.statuses": "Ziņas", "search_results.statuses_fts_disabled": "Šajā Mastodon serverī nav iespējota ziņu meklēšana pēc to satura.", "search_results.total": "{count, number} {count, plural, one {rezultāts} other {rezultāti}}", @@ -396,9 +407,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.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.load_more": "Ielādēt vairāk", "status.media_hidden": "Medijs ir paslēpts", "status.mention": "Pieminēt @{name}", @@ -417,7 +433,7 @@ "status.remove_bookmark": "Noņemt grāmatzīmi", "status.reply": "Atbildēt", "status.replyAll": "Atbildēt uz tematu", - "status.report": "Atskaite @{name}", + "status.report": "Ziņot par @{name}", "status.sensitive_warning": "Sensitīvs saturs", "status.share": "Kopīgot", "status.show_less": "Rādīt mazāk", @@ -430,7 +446,7 @@ "status.unpin": "Noņemt no profila", "suggestions.dismiss": "Noraidīt ieteikumu", "suggestions.header": "Jūs varētu interesēt arī…", - "tabs_bar.federated_timeline": "Apvienotā", + "tabs_bar.federated_timeline": "Federētā", "tabs_bar.home": "Sākums", "tabs_bar.local_timeline": "Vietējā", "tabs_bar.notifications": "Paziņojumi", @@ -462,7 +478,7 @@ "upload_form.video_description": "Aprakstiet cilvēkiem ar dzirdes vai redzes traucējumiem", "upload_modal.analyzing_picture": "Analizē attēlu…", "upload_modal.apply": "Apstiprināt", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Pielieto…", "upload_modal.choose_image": "Izvēlēties attēlu", "upload_modal.description_placeholder": "Raibais runcis rīgā ratu rumbā rūc", "upload_modal.detect_text": "Noteikt tekstu no attēla", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 36ea33bb8..ae925b391 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -47,7 +47,8 @@ "account.unmute": "Зачути го @{name}", "account.unmute_notifications": "Исклучи известувања од @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Тутови", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Обележи медиа како сензитивна", "compose_form.sensitive.marked": "Медиата е обележана како сензитивна", "compose_form.sensitive.unmarked": "Медиата не е обележана како сензитивна", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Прикажи во колона", "notifications.column_settings.sound": "Свири звуци", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Сите", "notifications.filter.boosts": "Бустови", "notifications.filter.favourites": "Омилени", @@ -362,12 +365,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.hours": "{number}ч", "relative_time.just_now": "сега", "relative_time.minutes": "{number}м", "relative_time.seconds": "{number}с", "relative_time.today": "today", "reply_indicator.cancel": "Откажи", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Проследи до {target}", "report.forward_hint": "Оваа сметка е од друг сервер. Испрати анонимна копија од пријавата и таму?", "report.hint": "Пријавата ќе биде испратена до вашиот серверски модератор. Подолу можете да ставите опис зошто ја пријавувате сметката:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index cb320a661..b17642b3c 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -47,7 +47,8 @@ "account.unmute": "നിശ്ശബ്ദമാക്കുന്നത് നിർത്തുക @{name}", "account.unmute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ പ്രസിദ്ധപ്പെടുത്തുക", "account_note.placeholder": "കുറിപ്പ് ചേർക്കാൻ ക്ലിക്കുചെയ്യുക", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "വോട്ടെടുപ്പിൽ ഒരൊറ്റ ചോയ്സ് മാത്രം ആക്കുക", "compose_form.publish": "ടൂട്ട്", "compose_form.publish_loud": "{പ്രസിദ്ധീകരിക്കുക}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "പ്രിയപ്പെട്ടവ:", "notifications.column_settings.filter_bar.advanced": "എല്ലാ വിഭാഗങ്ങളും പ്രദർശിപ്പിക്കുക", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "കാണിക്കുക", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "പുതിയ പിന്തുടരുന്നവർ:", "notifications.column_settings.follow_request": "പുതിയ പിന്തുടരൽ അഭ്യർത്ഥനകൾ:", "notifications.column_settings.mention": "സൂചനകൾ:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "ശബ്ദം പ്ലേ ചെയ്യുക", "notifications.column_settings.status": "പുതിയ ടൂട്ടുകൾ:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "എല്ലാം", "notifications.filter.boosts": "ബൂസ്റ്റുകൾ", "notifications.filter.favourites": "പ്രിയപ്പെട്ടവ", @@ -362,12 +365,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.hours": "{number}മണി", "relative_time.just_now": "ഇപ്പോൾ", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "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.forward": "Forward to {target}", "report.forward_hint": "ഈ അക്കൗണ്ട് മറ്റൊരു സെർവറിൽ നിന്നാണ്. റിപ്പോർട്ടിന്റെ അജ്ഞാത പകർപ്പ് അവിടെ അയയ്ക്കണോ?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,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.embed": "ഉൾച്ചേർക്കുക", "status.favourite": "പ്രിയപ്പെട്ടത്", "status.filtered": "ഫിൽട്ടർ ചെയ്തു", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "കൂടുതൽ ലോഡു ചെയ്യുക", "status.media_hidden": "മീഡിയ മറച്ചു", "status.mention": "@{name} സൂചിപ്പിക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 979f910ee..14e5d2de9 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 50526f74c..5db089d5a 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -47,7 +47,8 @@ "account.unmute": "Nyahbisukan @{name}", "account.unmute_notifications": "Nyahbisukan pemberitahuan daripada @{name}", "account_note.placeholder": "Klik untuk tambah catatan", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Ubah kepada undian pilihan tunggal", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Tandakan media sbg sensitif} other {Tandakan media sbg sensitif}}", "compose_form.sensitive.marked": "{count, plural, one {Media telah ditanda sbg sensitif} other {Media telah ditanda sbg sensitif}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media tidak ditanda sbg sensitif} other {Media tidak ditanda sbg sensitif}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Kegemaran:", "notifications.column_settings.filter_bar.advanced": "Papar semua kategori", "notifications.column_settings.filter_bar.category": "Bar penapis pantas", - "notifications.column_settings.filter_bar.show": "Tunjuk", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Pengikut baharu:", "notifications.column_settings.follow_request": "Permintaan ikutan baharu:", "notifications.column_settings.mention": "Sebutan:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Tunjukkan dalam lajur", "notifications.column_settings.sound": "Mainkan bunyi", "notifications.column_settings.status": "Hantaran baharu:", - "notifications.column_settings.unread_markers.category": "Penanda pemberitahuan belum dibaca", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Semua", "notifications.filter.boosts": "Galakan", "notifications.filter.favourites": "Kegemaran", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Memuatkan…", "regeneration_indicator.sublabel": "Suapan rumah anda sedang disediakan!", "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.hours": "{number}j", "relative_time.just_now": "sekarang", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "hari ini", "reply_indicator.cancel": "Batal", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Panjangkan ke {target}", "report.forward_hint": "Akaun ini daripada pelayan lain. Hantar salinan laporan yang ditanpanamakan ke sana juga?", "report.hint": "Laporan akan dihantar ke penyederhana pelayan anda. Anda boleh sertakan penerangan kenapa anda laporkan akaun ini di bawah:", @@ -396,9 +407,14 @@ "status.delete": "Padam", "status.detailed_status": "Paparan perbualan terperinci", "status.direct": "Mesej terus @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Benaman", "status.favourite": "Kegemaran", "status.filtered": "Ditapis", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Muatkan lagi", "status.media_hidden": "Media disembunyikan", "status.mention": "Sebut @{name}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 7ef5a05e1..ec4e4aabd 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -47,16 +47,17 @@ "account.unmute": "@{name} niet langer negeren", "account.unmute_notifications": "Meldingen van @{name} niet langer negeren", "account_note.placeholder": "Klik om een opmerking toe te voegen", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Gemiddelde", + "admin.dashboard.retention.cohort": "Aanmeldingsmaand", + "admin.dashboard.retention.cohort_size": "Nieuwe gebruikers", "alert.rate_limited.message": "Probeer het nog een keer na {retry_time, time, medium}.", "alert.rate_limited.title": "Beperkt te gebruiken", "alert.unexpected.message": "Er deed zich een onverwachte fout voor", "alert.unexpected.title": "Oeps!", "announcement.announcement": "Mededeling", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(niet verwerkt)", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Poll wijzigen om een enkele keuze toe te staan", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Media als gevoelig markeren} other {Media als gevoelig markeren}}", "compose_form.sensitive.marked": "{count, plural, one {Media is als gevoelig gemarkeerd} other {Media is als gevoelig gemarkeerd}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is niet als gevoelig gemarkeerd} other {Media is niet als gevoelig gemarkeerd}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Weet je het zeker dat je deze toot wilt verwijderen?", "confirmations.delete_list.confirm": "Verwijderen", "confirmations.delete_list.message": "Weet je zeker dat je deze lijst definitief wilt verwijderen?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Weggooien", + "confirmations.discard_edit_media.message": "Je hebt niet-opgeslagen wijzigingen in de mediabeschrijving of voorvertonning, wil je deze toch weggooien?", "confirmations.domain_block.confirm": "Verberg alles van deze server", "confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en beter. Je zult geen toots van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.", "confirmations.logout.confirm": "Uitloggen", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favorieten:", "notifications.column_settings.filter_bar.advanced": "Alle categorieën tonen", "notifications.column_settings.filter_bar.category": "Snelle filterbalk", - "notifications.column_settings.filter_bar.show": "Tonen", + "notifications.column_settings.filter_bar.show_bar": "Filterbalk tonen", "notifications.column_settings.follow": "Nieuwe volgers:", "notifications.column_settings.follow_request": "Nieuw volgverzoek:", "notifications.column_settings.mention": "Vermeldingen:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "In kolom tonen", "notifications.column_settings.sound": "Geluid afspelen", "notifications.column_settings.status": "Nieuwe toots:", - "notifications.column_settings.unread_markers.category": "Markeringen voor ongelezen meldingen", + "notifications.column_settings.unread_notifications.category": "Ongelezen meldingen", + "notifications.column_settings.unread_notifications.highlight": "Ongelezen meldingen markeren", "notifications.filter.all": "Alles", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favorieten", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# stem} other {# stemmen}}", "poll.vote": "Stemmen", "poll.voted": "Je hebt hier op gestemd", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# stem} other {# stemmen}}", "poll_button.add_poll": "Poll toevoegen", "poll_button.remove_poll": "Poll verwijderen", "privacy.change": "Zichtbaarheid van toot aanpassen", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Aan het laden…", "regeneration_indicator.sublabel": "Jouw tijdlijn wordt aangemaakt!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}u", "relative_time.just_now": "nu", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "vandaag", "reply_indicator.cancel": "Annuleren", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Naar {target} doorsturen", "report.forward_hint": "Het account bevindt zich op een andere server. Wil je daar eveneens een geanonimiseerde kopie van deze rapportage naar toe sturen?", "report.hint": "De rapportage wordt naar de moderator(en) van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:", @@ -396,9 +407,14 @@ "status.delete": "Verwijderen", "status.detailed_status": "Uitgebreide gespreksweergave", "status.direct": "@{name} een direct bericht sturen", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Insluiten", "status.favourite": "Favoriet", "status.filtered": "Gefilterd", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Meer laden", "status.media_hidden": "Media verborgen", "status.mention": "@{name} vermelden", @@ -462,7 +478,7 @@ "upload_form.video_description": "Omschrijf dit voor mensen met een auditieve of visuele beperking", "upload_modal.analyzing_picture": "Afbeelding analyseren…", "upload_modal.apply": "Toepassen", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aan het toepassen…", "upload_modal.choose_image": "Kies een afbeelding", "upload_modal.description_placeholder": "Pa's wijze lynx bezag vroom het fikse aquaduct", "upload_modal.detect_text": "Tekst in een afbeelding detecteren", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index cfd9aaca9..17e1a4d25 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -22,7 +22,7 @@ "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", - "account.joined": "Ble med den {date}", + "account.joined": "Vart med {date}", "account.last_status": "Sist aktiv", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", @@ -47,10 +47,11 @@ "account.unmute": "Av-demp @{name}", "account.unmute_notifications": "Vis varsel frå @{name}", "account_note.placeholder": "Klikk for å leggja til merknad", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Nye brukere", "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", "alert.rate_limited.title": "Begrensa rate", "alert.unexpected.message": "Eit uventa problem oppstod.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val", "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Merk medium som sensitivt", "compose_form.sensitive.marked": "Medium er markert som sensitivt", "compose_form.sensitive.unmarked": "Medium er ikkje merka som sensitivt", @@ -118,7 +120,7 @@ "confirmations.delete.message": "Er du sikker på at du vil sletta denne statusen?", "confirmations.delete_list.confirm": "Slett", "confirmations.delete_list.message": "Er du sikker på at du vil sletta denne lista for alltid?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Forkast", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Gøym heile domenet", "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil blokkera heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå det domenet i nokon fødererte tidsliner eller i varsla dine. Fylgjarane dine frå det domenet vert fjerna.", @@ -183,7 +185,7 @@ "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", - "follow_recommendations.done": "Utført", + "follow_recommendations.done": "Ferdig", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", "follow_request.authorize": "Autoriser", @@ -263,7 +265,7 @@ "lists.new.title_placeholder": "Ny listetittel", "lists.replies_policy.followed": "Enhver fulgt bruker", "lists.replies_policy.list": "Medlemmer i listen", - "lists.replies_policy.none": "Ingen", + "lists.replies_policy.none": "Ikkje nokon", "lists.replies_policy.title": "Vis svar på:", "lists.search": "Søk gjennom folk du følgjer", "lists.subheading": "Dine lister", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favorittar:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategoriar", "notifications.column_settings.filter_bar.category": "Snarfilterlinje", - "notifications.column_settings.filter_bar.show": "Vis", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Nye fylgjarar:", "notifications.column_settings.follow_request": "Ny fylgjarførespurnader:", "notifications.column_settings.mention": "Nemningar:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Spel av lyd", "notifications.column_settings.status": "Nye tuter:", - "notifications.column_settings.unread_markers.category": "Ulest meldingsmarkører", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Framhevingar", "notifications.filter.favourites": "Favorittar", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Lastar…", "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!", "relative_time.days": "{number}dg", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}t", "relative_time.just_now": "nå", "relative_time.minutes": "{number}min", "relative_time.seconds": "{number}sek", "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", "report.hint": "Rapporten vil verte sendt til dine tenarmoderatorar. Du kan oppgje ei forklaring på kvifor du rapporterer denne kontoen, under:", @@ -396,9 +407,14 @@ "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", "status.direct": "Send melding til @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Bygg inn", "status.favourite": "Favoritt", "status.filtered": "Filtrert", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Last inn meir", "status.media_hidden": "Medium gøymd", "status.mention": "Nemn @{name}", @@ -444,7 +460,7 @@ "timeline_hint.resources.followers": "Fylgjarar", "timeline_hint.resources.follows": "Fylgjer", "timeline_hint.resources.statuses": "Eldre tut", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} folk}} pratar", + "trends.counter_by_accounts": "Pratas om av {count, plural, one {{counter} person} other {{counter} folk}}", "trends.trending_now": "Populært no", "ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.", "units.short.billion": "{count}m.ard", @@ -468,7 +484,7 @@ "upload_modal.detect_text": "Gjenkjenn tekst i biletet", "upload_modal.edit_media": "Rediger medium", "upload_modal.hint": "Klikk og dra sirkelen på førehandsvisninga for å velge fokuspunktet som alltid vil vere synleg på alle miniatyrbileta.", - "upload_modal.preparing_ocr": "Forbereder OCR…", + "upload_modal.preparing_ocr": "Førebur OCR…", "upload_modal.preview_label": "Førehandsvis ({ratio})", "upload_progress.label": "Lastar opp...", "video.close": "Lukk video", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 179bbd1bd..0ede09267 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -47,10 +47,11 @@ "account.unmute": "Avdemp @{name}", "account.unmute_notifications": "Vis varsler fra @{name}", "account_note.placeholder": "Klikk for å legge til et notat", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Nye brukere", "alert.rate_limited.message": "Vennligst prøv igjen etter kl. {retry_time, time, medium}.", "alert.rate_limited.title": "Hastighetsbegrenset", "alert.unexpected.message": "En uventet feil oppstod.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Endre avstemning til å tillate ett valg", "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Merk media som sensitivt", "compose_form.sensitive.marked": "Mediet er merket som sensitiv", "compose_form.sensitive.unmarked": "Mediet er ikke merket som sensitiv", @@ -118,7 +120,7 @@ "confirmations.delete.message": "Er du sikker på at du vil slette denne statusen?", "confirmations.delete_list.confirm": "Slett", "confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Forkast", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Skjul alt fra domenet", "confirmations.domain_block.message": "Er du sikker på at du vil skjule hele domenet {domain}? I de fleste tilfeller er det bedre med målrettet blokkering eller demping.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Likt:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier", "notifications.column_settings.filter_bar.category": "Hurtigfiltreringslinje", - "notifications.column_settings.filter_bar.show": "Vis", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Nye følgere:", "notifications.column_settings.follow_request": "Nye følgerforespørsler:", "notifications.column_settings.mention": "Nevnt:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Spill lyd", "notifications.column_settings.status": "Nye tuter:", - "notifications.column_settings.unread_markers.category": "Ulest meldingsmarkører", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Fremhevinger", "notifications.filter.favourites": "Favoritter", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Laster…", "regeneration_indicator.sublabel": "Dine startside forberedes!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}t", "relative_time.just_now": "nå", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Videresend til {target}", "report.forward_hint": "Denne kontoen er fra en annen tjener. Vil du sende en anonymisert kopi av rapporten dit også?", "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", "status.direct": "Send direktemelding til @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Bygge inn", "status.favourite": "Lik", "status.filtered": "Filtrert", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Last mer", "status.media_hidden": "Media skjult", "status.mention": "Nevn @{name}", @@ -444,7 +460,7 @@ "timeline_hint.resources.followers": "Følgere", "timeline_hint.resources.follows": "Følger", "timeline_hint.resources.statuses": "Eldre tuter", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} snakker", + "trends.counter_by_accounts": "Snakkes om av {count, plural, one {{counter} person} other {{counter} personer}}", "trends.trending_now": "Trender nå", "ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.", "units.short.billion": "{count}m.ard", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 6f7bc9761..7e7b68f77 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -47,16 +47,17 @@ "account.unmute": "Quitar de rescondre @{name}", "account.unmute_notifications": "Mostrar las notificacions de @{name}", "account_note.placeholder": "Clicar per ajustar una nòta", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Mejana", + "admin.dashboard.retention.cohort": "Mes d’inscripcion", + "admin.dashboard.retention.cohort_size": "Utilizaires novèls", "alert.rate_limited.message": "Mercés de tornar ensajar aprèp {retry_time, time, medium}.", "alert.rate_limited.title": "Taus limitat", "alert.unexpected.message": "Una error s’es producha.", "alert.unexpected.title": "Ops !", "announcement.announcement": "Anóncia", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(pas tractat)", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven", "bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida", "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish} !", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Marcar coma sensible", "compose_form.sensitive.marked": "Lo mèdia es marcat coma sensible", "compose_form.sensitive.unmarked": "Lo mèdia es pas marcat coma sensible", @@ -118,7 +120,7 @@ "confirmations.delete.message": "Volètz vertadièrament escafar l’estatut ?", "confirmations.delete_list.confirm": "Suprimir", "confirmations.delete_list.message": "Volètz vertadièrament suprimir aquesta lista per totjorn ?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Ignorar", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Amagar tot lo domeni", "confirmations.domain_block.message": "Volètz vertadièrament blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.\nVeiretz pas cap de contengut d’aquel domeni dins cap de flux public o dins vòstras notificacions. Vòstres seguidors d’aquel domeni seràn levats.", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favorits :", "notifications.column_settings.filter_bar.advanced": "Mostrar totas las categorias", "notifications.column_settings.filter_bar.category": "Barra de recèrca rapida", - "notifications.column_settings.filter_bar.show": "Mostrar", + "notifications.column_settings.filter_bar.show_bar": "Afichar la barra de filtres", "notifications.column_settings.follow": "Nòus seguidors :", "notifications.column_settings.follow_request": "Novèla demanda d’abonament :", "notifications.column_settings.mention": "Mencions :", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mostrar dins la colomna", "notifications.column_settings.sound": "Emetre un son", "notifications.column_settings.status": "Tuts novèls :", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Notificacions pas legidas", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Totas", "notifications.filter.boosts": "Partages", "notifications.filter.favourites": "Favorits", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Cargament…", "regeneration_indicator.sublabel": "Sèm a preparar vòstre flux d’acuèlh !", "relative_time.days": "fa {number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "fa {number}h", "relative_time.just_now": "ara", "relative_time.minutes": "fa {number} min", "relative_time.seconds": "fa {number}s", "relative_time.today": "uèi", "reply_indicator.cancel": "Anullar", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Far sègre a {target}", "report.forward_hint": "Lo compte ven d’un autre servidor. Volètz mandar una còpia anonima del rapòrt enlai tanben ?", "report.hint": "Lo moderator del servidor aurà lo rapòrt. Podètz fornir una explicacion de vòstre senhalament aquí dejós :", @@ -396,9 +407,14 @@ "status.delete": "Escafar", "status.detailed_status": "Vista detalhada de la convèrsa", "status.direct": "Messatge per @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embarcar", "status.favourite": "Apondre als favorits", "status.filtered": "Filtrat", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Cargar mai", "status.media_hidden": "Mèdia rescondut", "status.mention": "Mencionar", @@ -462,7 +478,7 @@ "upload_form.video_description": "Descriure per las personas amb pèrdas auditivas o mal vesent", "upload_modal.analyzing_picture": "Analisi de l’imatge…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicacion…", "upload_modal.choose_image": "Causir un imatge", "upload_modal.description_placeholder": "Lo dròlle bilingüe manja un yaourt de ròcs exagonals e kiwis verds farà un an mai", "upload_modal.detect_text": "Detectar lo tèxt de l’imatge", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index eca4765c4..2675da68c 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index e8c894c37..07754475f 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -47,16 +47,17 @@ "account.unmute": "Cofnij wyciszenie @{name}", "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}", "account_note.placeholder": "Naciśnij aby dodać notatkę", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Średnia", + "admin.dashboard.retention.cohort": "Miesiąc rejestracji", + "admin.dashboard.retention.cohort_size": "Nowi użytkownicy", "alert.rate_limited.message": "Spróbuj ponownie po {retry_time, time, medium}.", "alert.rate_limited.title": "Ograniczony czasowo", "alert.unexpected.message": "Wystąpił nieoczekiwany błąd.", "alert.unexpected.title": "O nie!", "announcement.announcement": "Ogłoszenie", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(nieprzetworzone)", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", @@ -108,6 +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.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", @@ -122,8 +124,8 @@ "confirmations.delete.message": "Czy na pewno chcesz usunąć ten wpis?", "confirmations.delete_list.confirm": "Usuń", "confirmations.delete_list.message": "Czy na pewno chcesz bezpowrotnie usunąć tą listę?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Odrzuć", + "confirmations.discard_edit_media.message": "Masz niezapisane zmiany w opisie lub podglądzie, odrzucić je mimo to?", "confirmations.domain_block.confirm": "Ukryj wszystko z domeny", "confirmations.domain_block.message": "Czy na pewno chcesz zablokować całą domenę {domain}? Zwykle lepszym rozwiązaniem jest blokada lub wyciszenie kilku użytkowników.", "confirmations.logout.confirm": "Wyloguj", @@ -317,7 +319,7 @@ "notifications.column_settings.favourite": "Dodanie do ulubionych:", "notifications.column_settings.filter_bar.advanced": "Wyświetl wszystkie kategorie", "notifications.column_settings.filter_bar.category": "Szybkie filtrowanie", - "notifications.column_settings.filter_bar.show": "Pokaż", + "notifications.column_settings.filter_bar.show_bar": "Pokaż filtry", "notifications.column_settings.follow": "Nowi śledzący:", "notifications.column_settings.follow_request": "Nowe prośby o możliwość śledzenia:", "notifications.column_settings.mention": "Wspomnienia:", @@ -327,7 +329,8 @@ "notifications.column_settings.show": "Pokaż w kolumnie", "notifications.column_settings.sound": "Odtwarzaj dźwięk", "notifications.column_settings.status": "Nowe wpisy:", - "notifications.column_settings.unread_markers.category": "Znaczniki nieprzeczytanych powiadomień", + "notifications.column_settings.unread_notifications.category": "Nieprzeczytane powiadomienia", + "notifications.column_settings.unread_notifications.highlight": "Podświetl nieprzeczytane powiadomienia", "notifications.filter.all": "Wszystkie", "notifications.filter.boosts": "Podbicia", "notifications.filter.favourites": "Ulubione", @@ -351,7 +354,7 @@ "poll.total_votes": "{count, plural, one {# głos} few {# głosy} many {# głosów} other {# głosów}}", "poll.vote": "Zagłosuj", "poll.voted": "Zagłosowałeś_aś na tą odpowiedź", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# głos} few {# głosy} many {# głosów} other {# głosów}}", "poll_button.add_poll": "Dodaj głosowanie", "poll_button.remove_poll": "Usuń głosowanie", "privacy.change": "Dostosuj widoczność wpisów", @@ -367,12 +370,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -401,9 +412,14 @@ "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.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", "status.filtered": "Filtrowany(-a)", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Załaduj więcej", "status.media_hidden": "Zawartość multimedialna ukryta", "status.mention": "Wspomnij o @{name}", @@ -467,7 +483,7 @@ "upload_form.video_description": "Opisz dla osób niesłyszących, niedosłyszących, niewidomych i niedowidzących", "upload_modal.analyzing_picture": "Analizowanie obrazu…", "upload_modal.apply": "Zastosuj", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Stosowanie…", "upload_modal.choose_image": "Wybierz obraz", "upload_modal.description_placeholder": "Pchnąć w tę łódź jeża lub ośm skrzyń fig", "upload_modal.detect_text": "Wykryj tekst z obrazu", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 7745f0ca6..e61c3ef5a 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -47,16 +47,17 @@ "account.unmute": "Dessilenciar @{name}", "account.unmute_notifications": "Mostrar notificações de @{name}", "account_note.placeholder": "Nota pessoal sobre este perfil aqui", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Média", + "admin.dashboard.retention.cohort": "Mês de inscrição", + "admin.dashboard.retention.cohort_size": "Novos usuários", "alert.rate_limited.message": "Tente novamente após {retry_time, time, medium}.", "alert.rate_limited.title": "Tentativas limitadas", "alert.unexpected.message": "Ocorreu um erro inesperado.", "alert.unexpected.title": "Eita!", "announcement.announcement": "Comunicados", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(não processado)", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", "bundle_column_error.body": "Erro ao carregar este componente.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Opção única", "compose_form.publish": "TOOT", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Marcar mídia como sensível} other {Marcar mídias como sensível}}", "compose_form.sensitive.marked": "{count, plural, one {Mídia marcada como sensível} other {Mídias marcadas como sensível}}", "compose_form.sensitive.unmarked": "{count, plural, one {Mídia não está marcada como sensível} other {Mídias não estão marcadas como sensível}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Você tem certeza de que deseja excluir este toot?", "confirmations.delete_list.confirm": "Excluir", "confirmations.delete_list.message": "Você tem certeza de que deseja excluir esta lista?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Descartar", + "confirmations.discard_edit_media.message": "Há mudanças não salvas na descrição ou pré-visualização da mídia; descartar assim mesmo?", "confirmations.domain_block.confirm": "Bloquear instância", "confirmations.domain_block.message": "Você tem certeza de que deseja bloquear tudo de {domain}? Você não verá mais o conteúdo desta instância em nenhuma linha do tempo pública ou nas suas notificações. Seus seguidores desta instância serão removidos.", "confirmations.logout.confirm": "Sair", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias", "notifications.column_settings.filter_bar.category": "Barra de filtro rápido das notificações", - "notifications.column_settings.filter_bar.show": "Mostrar", + "notifications.column_settings.filter_bar.show_bar": "Mostrar barra de filtro", "notifications.column_settings.follow": "Seguidores:", "notifications.column_settings.follow_request": "Seguidores pendentes:", "notifications.column_settings.mention": "Menções:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mostrar na coluna", "notifications.column_settings.sound": "Tocar som", "notifications.column_settings.status": "Novos toots:", - "notifications.column_settings.unread_markers.category": "Marcar como não lidas", + "notifications.column_settings.unread_notifications.category": "Notificações não lidas", + "notifications.column_settings.unread_notifications.highlight": "Destacar notificações não lidas", "notifications.filter.all": "Tudo", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritos", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Você votou nesta opção", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voto} other {# votos}}", "poll_button.add_poll": "Adicionar enquete", "poll_button.remove_poll": "Remover enquete", "privacy.change": "Alterar privacidade do toot", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Carregando…", "regeneration_indicator.sublabel": "Sua página inicial está sendo 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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Encaminhar para {target}", "report.forward_hint": "A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá?", "report.hint": "A denúncia será enviada aos moderadores da instância. Explique por que denunciou a conta:", @@ -396,9 +407,14 @@ "status.delete": "Excluir", "status.detailed_status": "Visão detalhada da conversa", "status.direct": "Enviar toot direto para @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", "status.filtered": "Filtrado", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Ver mais", "status.media_hidden": "Mídia sensível", "status.mention": "Mencionar @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Descrever para deficientes auditivos ou visuais", "upload_modal.analyzing_picture": "Analisando imagem…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicando…", "upload_modal.choose_image": "Escolher imagem", "upload_modal.description_placeholder": "Um pequeno jabuti xereta viu dez cegonhas felizes", "upload_modal.detect_text": "Transcrever imagem", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index a5cb6a335..988ecef3a 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -47,16 +47,17 @@ "account.unmute": "Não silenciar @{name}", "account.unmute_notifications": "Deixar de silenciar @{name}", "account_note.placeholder": "Clique para adicionar nota", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Média", + "admin.dashboard.retention.cohort": "Mês de inscrição", + "admin.dashboard.retention.cohort_size": "Novos utilizadores", "alert.rate_limited.message": "Volte a tentar depois das {retry_time, time, medium}.", "alert.rate_limited.title": "Limite de tentativas", "alert.unexpected.message": "Ocorreu um erro inesperado.", "alert.unexpected.title": "Bolas!", "announcement.announcement": "Anúncio", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(não processado)", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.", @@ -104,6 +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.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", @@ -111,15 +113,15 @@ "compose_form.spoiler.unmarked": "O texto não está escondido", "compose_form.spoiler_placeholder": "Escreva o seu aviso aqui", "confirmation_modal.cancel": "Cancelar", - "confirmations.block.block_and_report": "Bloquear e denunciar", + "confirmations.block.block_and_report": "Bloquear e Denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "De certeza que queres bloquear {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "De certeza que quer eliminar esta publicação?", "confirmations.delete_list.confirm": "Eliminar", "confirmations.delete_list.message": "Tens a certeza de que deseja eliminar permanentemente esta lista?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Descartar", + "confirmations.discard_edit_media.message": "Tem alterações não salvas na descrição ou pré-visualização da media. Descartar mesmo assim?", "confirmations.domain_block.confirm": "Esconder tudo deste domínio", "confirmations.domain_block.message": "De certeza que queres bloquear completamente o domínio {domain}? Na maioria dos casos, silenciar ou bloquear alguns utilizadores é suficiente e é o recomendado. Não irás ver conteúdo daquele domínio em cronologia alguma nem nas tuas notificações. Os teus seguidores daquele domínio serão removidos.", "confirmations.logout.confirm": "Terminar sessão", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias", "notifications.column_settings.filter_bar.category": "Barra de filtros rápidos", - "notifications.column_settings.filter_bar.show": "Mostrar", + "notifications.column_settings.filter_bar.show_bar": "Mostrar barra de filtros", "notifications.column_settings.follow": "Novos seguidores:", "notifications.column_settings.follow_request": "Novos pedidos de seguidor:", "notifications.column_settings.mention": "Menções:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Mostrar na coluna", "notifications.column_settings.sound": "Reproduzir som", "notifications.column_settings.status": "Novos toots:", - "notifications.column_settings.unread_markers.category": "Marcadores de notificação não lidas", + "notifications.column_settings.unread_notifications.category": "Notificações não lidas", + "notifications.column_settings.unread_notifications.highlight": "Destacar notificações não lidas", "notifications.filter.all": "Todas", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritos", @@ -346,7 +349,7 @@ "poll.total_votes": "{contar, plural, um {# vote} outro {# votes}}", "poll.vote": "Votar", "poll.voted": "Votaste nesta resposta", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# voto } other {# votos}}", "poll_button.add_poll": "Adicionar votação", "poll_button.remove_poll": "Remover votação", "privacy.change": "Ajustar a privacidade da publicação", @@ -362,18 +365,26 @@ "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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Reenviar para {target}", - "report.forward_hint": "A conta é de outra instância. Enviar uma cópia anónima do relatório para lá também?", - "report.hint": "O relatório será enviado para os moderadores da sua instância. Pode fornecer, em baixo, uma explicação do motivo pelo qual está a denunciar esta conta:", + "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:", "report.placeholder": "Comentários adicionais", "report.submit": "Enviar", - "report.target": "Denunciar", + "report.target": "A denunciar {target}", "search.placeholder": "Pesquisar", "search_popout.search_format": "Formato avançado de pesquisa", "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.", @@ -396,9 +407,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.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", "status.filtered": "Filtrada", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Carregar mais", "status.media_hidden": "Media escondida", "status.mention": "Mencionar @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Descreva para pessoas com diminuição da acuidade auditiva ou visual", "upload_modal.analyzing_picture": "A analizar imagem…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "A aplicar…", "upload_modal.choose_image": "Escolher imagem", "upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente", "upload_modal.detect_text": "Detectar texto na imagem", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index b6cb0a86c..15baeef12 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -47,16 +47,17 @@ "account.unmute": "Nu mai ignora pe @{name}", "account.unmute_notifications": "Activează notificările de la @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "În medie", + "admin.dashboard.retention.cohort": "Înregistrări lunar", + "admin.dashboard.retention.cohort_size": "Utilizatori noi", "alert.rate_limited.message": "Vă rugăm să reîncercați după {retry_time, time, medium}.", "alert.rate_limited.title": "Debit limitat", "alert.unexpected.message": "A apărut o eroare neașteptată.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Anunț", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(neprocesate)", "autosuggest_hashtag.per_week": "{count} pe săptămână", "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", "bundle_column_error.body": "A apărut o eroare la încărcarea acestui element.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Modifică sondajul pentru a permite o singură opțiune", "compose_form.publish": "Postează", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Marchează conținutul media ca fiind sensibil} few {Marchează conținuturile media ca fiind sensibile} other {Marchează conținuturile media ca fiind sensibile}}", "compose_form.sensitive.marked": "{count, plural, one {Conținutul media este marcat ca fiind sensibil} other {Conținuturile media sunt marcate ca fiind sensibile}}", "compose_form.sensitive.unmarked": "{count, plural, one {Conținutul media nu este marcat ca fiind sensibil} other {Conținuturile media nu sunt marcate ca fiind sensibile}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Ești sigur că vrei să elimini această postare?", "confirmations.delete_list.confirm": "Elimină", "confirmations.delete_list.message": "Ești sigur că vrei să elimini definitiv această listă?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Renunță", + "confirmations.discard_edit_media.message": "Ai modificări nesalvate în descrierea sau previzualizarea media, renunți oricum?", "confirmations.domain_block.confirm": "Blochează întregul domeniu", "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi tot domeniul {domain}? În cele mai multe cazuri, raportarea sau blocarea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea niciun conținut din acest domeniu în vreun flux public sau în vreo notificare. Abonații tăi din acest domeniu vor fi eliminați.", "confirmations.logout.confirm": "Deconectare", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favorite:", "notifications.column_settings.filter_bar.advanced": "Afișează toate categoriile", "notifications.column_settings.filter_bar.category": "Bară de filtrare rapidă", - "notifications.column_settings.filter_bar.show": "Afișează", + "notifications.column_settings.filter_bar.show_bar": "Arată bara de filtrare", "notifications.column_settings.follow": "Noi abonați:", "notifications.column_settings.follow_request": "Noi cereri de abonare:", "notifications.column_settings.mention": "Mențiuni:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Afișează în coloană", "notifications.column_settings.sound": "Redare sunet", "notifications.column_settings.status": "Postări noi:", - "notifications.column_settings.unread_markers.category": "Marcaje de notificări necitite", + "notifications.column_settings.unread_notifications.category": "Notificări necitite", + "notifications.column_settings.unread_notifications.highlight": "Evidențiază notificările necitite", "notifications.filter.all": "Toate", "notifications.filter.boosts": "Distribuiri", "notifications.filter.favourites": "Favorite", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# vot} other {# voturi}}", "poll.vote": "Votează", "poll.voted": "Ai votat pentru acest răspuns", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# vot} other {# voturi}}", "poll_button.add_poll": "Adaugă un sondaj", "poll_button.remove_poll": "Elimină sondajul", "privacy.change": "Modifică confidențialitatea postării", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Se încarcă…", "regeneration_indicator.sublabel": "Cronologia ta principală este în curs de pregătire!", "relative_time.days": "{number}z", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}o", "relative_time.just_now": "acum", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "astăzi", "reply_indicator.cancel": "Anulează", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Redirecționează către {target}", "report.forward_hint": "Acest cont este de pe un alt server. Trimitem o copie anonimă a raportului și acolo?", "report.hint": "Sesizarea va fi trimisă către moderatorii acestei instanțe. Poți oferi o explicație pentru această sesizare mai jos:", @@ -396,9 +407,14 @@ "status.delete": "Șterge", "status.detailed_status": "Conversația detaliată", "status.direct": "Mesaj direct către @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Înglobează", "status.favourite": "Favorite", "status.filtered": "Sortate", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Încarcă mai multe", "status.media_hidden": "Media ascunsă", "status.mention": "Menționează pe @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Adaugă o descriere pentru persoanele cu deficiențe vizuale sau auditive", "upload_modal.analyzing_picture": "Se analizează imaginea…", "upload_modal.apply": "Aplică", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Se aplică…", "upload_modal.choose_image": "Alege imaginea", "upload_modal.description_placeholder": "Vând muzică de jazz și haine de bun-gust în New-York și Quebec la preț fix", "upload_modal.detect_text": "Detectare text din imagine", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index a37418101..c414f9e7c 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -47,16 +47,17 @@ "account.unmute": "Убрать {name} из игнорируемых", "account.unmute_notifications": "Показывать уведомления от @{name}", "account_note.placeholder": "Текст заметки", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Среднее", + "admin.dashboard.retention.cohort": "Месяц регистрации", + "admin.dashboard.retention.cohort_size": "Новые пользователи", "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.", "alert.rate_limited.title": "Вы выполняете действие слишком часто", "alert.unexpected.message": "Произошла непредвиденная ошибка.", "alert.unexpected.title": "Упс!", "announcement.announcement": "Объявление", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(не обработан)", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", "bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа", "compose_form.publish": "Запостить", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "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 {файлы не отмечены}} как «деликатного характера»", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Вы уверены, что хотите удалить этот пост?", "confirmations.delete_list.confirm": "Удалить", "confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Отменить", + "confirmations.discard_edit_media.message": "У вас имеются несохранённые изменения превью и описания медиафайла, отменить их?", "confirmations.domain_block.confirm": "Да, заблокировать узел", "confirmations.domain_block.message": "Вы точно уверены, что хотите скрыть все посты с узла {domain}? В большинстве случаев пары блокировок и скрытий вполне достаточно.\n\nПри блокировке узла, вы перестанете получать уведомления оттуда, все посты будут скрыты из публичных лент, а подписчики убраны.", "confirmations.logout.confirm": "Выйти", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Ваш пост добавили в «избранное»:", "notifications.column_settings.filter_bar.advanced": "Отображать все категории", "notifications.column_settings.filter_bar.category": "Панель сортировки", - "notifications.column_settings.filter_bar.show": "Отображать панель сортировки", + "notifications.column_settings.filter_bar.show_bar": "Отображать панель сортировки", "notifications.column_settings.follow": "У вас новый подписчик:", "notifications.column_settings.follow_request": "Новые запросы на подписку:", "notifications.column_settings.mention": "Вас упомянули в посте:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Отображать в списке", "notifications.column_settings.sound": "Проигрывать звук", "notifications.column_settings.status": "Новые посты:", - "notifications.column_settings.unread_markers.category": "Маркеры непрочитанных уведомлений", + "notifications.column_settings.unread_notifications.category": "Непрочитанные уведомления", + "notifications.column_settings.unread_notifications.highlight": "Выделять непрочитанные уведомления", "notifications.filter.all": "Все", "notifications.filter.boosts": "Продвижения", "notifications.filter.favourites": "Отметки «избранного»", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# голос} few {# голоса} many {# голосов} other {# голосов}}", "poll.vote": "Голосовать", "poll.voted": "Вы проголосовали за этот вариант", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# голос} many {# голосов} other {# голоса}}", "poll_button.add_poll": "Добавить опрос", "poll_button.remove_poll": "Удалить опрос", "privacy.change": "Изменить видимость поста", @@ -362,12 +365,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.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.forward": "Переслать в {target}", "report.forward_hint": "Эта учётная запись расположена на другом узле. Отправить туда анонимную копию вашей жалобы?", "report.hint": "Жалоба будет отправлена модераторам вашего узла. Вы также можете указать подробную причину жалобы ниже:", @@ -396,9 +407,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.embed": "Встроить на свой сайт", "status.favourite": "В избранное", "status.filtered": "Отфильтровано", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Загрузить остальное", "status.media_hidden": "Файл скрыт", "status.mention": "Упомянуть @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Опишите видео для людей с нарушением слуха или зрения", "upload_modal.analyzing_picture": "Обработка изображения…", "upload_modal.apply": "Применить", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Применение…", "upload_modal.choose_image": "Выбрать изображение", "upload_modal.description_placeholder": "На дворе трава, на траве дрова", "upload_modal.detect_text": "Найти текст на картинке", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 1e496c3ec..a2a22e758 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -47,7 +47,8 @@ "account.unmute": "सशब्दम् @{name}", "account.unmute_notifications": "@{name} सूचनाः सक्रियन्ताम्", "account_note.placeholder": "टीकायोजनार्थं नुद्यताम्", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "मतदानं परिवर्तयित्वा निर्विकल्पमतदानं क्रियताम्", "compose_form.publish": "दौत्यम्", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "संवेदनशीलसामग्रीत्यङ्यताम्", "compose_form.sensitive.marked": "संवेदनशीलसामग्रीत्यङ्कितम्", "compose_form.sensitive.unmarked": "संवेदनशीलसामग्रीति नाङ्कितम्", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 339bbac09..4f8f12357 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -47,7 +47,8 @@ "account.unmute": "Torra a ativare a @{name}", "account.unmute_notifications": "Ativa notìficas pro @{name}", "account_note.placeholder": "Incarca pro agiùnghere una nota", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Muda su sondàgiu pro permìtere un'optzione isceti", "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Marca elementu multimediale comente a sensìbile} other {Marca elementos multimediales comente sensìbiles}}", "compose_form.sensitive.marked": "{count, plural, one {Elementu multimediale marcadu comente a sensìbile} other {Elementos multimediales marcados comente a sensìbiles}}", "compose_form.sensitive.unmarked": "{count, plural, one {Elementu multimediale non marcadu comente a sensìbile} other {Elementos multimediales non marcados comente a sensìbiles}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Preferidos:", "notifications.column_settings.filter_bar.advanced": "Ammustra totu is categorias", "notifications.column_settings.filter_bar.category": "Barra lestra de filtros", - "notifications.column_settings.filter_bar.show": "Ammustra", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Sighiduras noas:", "notifications.column_settings.follow_request": "Rechestas noas de sighidura:", "notifications.column_settings.mention": "Mèntovos:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Ammustra in sa colunna", "notifications.column_settings.sound": "Reprodue unu sonu", "notifications.column_settings.status": "Publicatziones noas:", - "notifications.column_settings.unread_markers.category": "Marcadores de notìficas de lèghere", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Totus", "notifications.filter.boosts": "Cumpartziduras", "notifications.filter.favourites": "Preferidos", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Carrighende…", "regeneration_indicator.sublabel": "Preparende sa lìnia de tempus printzipale tua.", "relative_time.days": "{number} dies a oe", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number} oras a immoe", "relative_time.just_now": "immoe", "relative_time.minutes": "{number} minutos a immoe", "relative_time.seconds": "{number} segundos a immoe", "relative_time.today": "oe", "reply_indicator.cancel": "Annulla", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Torra a imbiare a {target}", "report.forward_hint": "Custu contu est de un'àteru serbidore. Ddi boles imbiare puru una còpia anònima de custu informe?", "report.hint": "S'informe at a èssere imbiadu a sa moderatzione de su serbidore. Podes frunire un'ispiegatzione de sa signalatzione tua de custu contu:", @@ -396,9 +407,14 @@ "status.delete": "Cantzella", "status.detailed_status": "Visualizatzione de detàlliu de arresonada", "status.direct": "Messàgiu deretu a @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Afissa", "status.favourite": "Preferidos", "status.filtered": "Filtradu", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Càrriga·nde àteros", "status.media_hidden": "Elementos multimediales cuados", "status.mention": "Mèntova a @{name}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 0baa6c7ae..40939f1b2 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "සටහන එකතු කිරීමට ක්ලික් කරන්න", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "තනි තේරීමකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", "compose_form.publish": "පිඹින්න", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "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 {මාධ්ය සංවේදී ලෙස සලකුණු කර නැත}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "ප්රියතමයන්:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "පෙන්වන්න", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "සැඳහුම්:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "තීරුවෙහි පෙන්වන්න", "notifications.column_settings.sound": "ශබ්දය ධාවනය", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "සියල්ල", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "ප්රියතමයන්", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "පූරණය වෙමින්…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "දැන්", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "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.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "@{name} සෘජු පණිවිඩය", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "එබ්බවූ", "status.favourite": "ප්රියතම", "status.filtered": "පෙරන ලද", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "තව පූරණය කරන්න", "status.media_hidden": "මාධ්ය සඟවා ඇත", "status.mention": "@{name} සැඳහුම", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 5911881bb..34c3da043 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -9,7 +9,7 @@ "account.browse_more_on_origin_server": "Prehľadávaj viac na pôvodnom profile", "account.cancel_follow_request": "Zruš žiadosť o sledovanie", "account.direct": "Priama správa pre @{name}", - "account.disable_notifications": "Prestaň oboznamovať keď má príspevky @{name}", + "account.disable_notifications": "Prestaň oznamovať, keď má príspevky @{name}", "account.domain_blocked": "Doména ukrytá", "account.edit_profile": "Uprav profil", "account.enable_notifications": "Oboznamuj ma, keď má @{name} príspevky", @@ -33,7 +33,7 @@ "account.mute_notifications": "Stĺm oboznámenia od @{name}", "account.muted": "Utíšený/á", "account.never_active": "Nikdy", - "account.posts": "Príspevkov", + "account.posts": "Príspevky", "account.posts_with_replies": "Príspevky, aj s odpoveďami", "account.report": "Nahlás @{name}", "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti", @@ -47,16 +47,17 @@ "account.unmute": "Prestaň ignorovať @{name}", "account.unmute_notifications": "Zruš stĺmenie oboznámení od @{name}", "account_note.placeholder": "Klikni pre vloženie poznámky", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Priemer", + "admin.dashboard.retention.cohort": "Mesiac zaregistrovania sa", + "admin.dashboard.retention.cohort_size": "Noví užívatelia", "alert.rate_limited.message": "Prosím, skús to znova za {retry_time, time, medium}.", "alert.rate_limited.title": "Tempo obmedzené", "alert.unexpected.message": "Vyskytla sa nečakaná chyba.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Oboznámenie", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(nespracované)", "autosuggest_hashtag.per_week": "{count} týždenne", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Zmeň anketu na takú s jedinou voľbou", "compose_form.publish": "Pošli", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Označ médiá ako chúlostivé", "compose_form.sensitive.marked": "Médiálny obsah je označený ako chúlostivý", "compose_form.sensitive.unmarked": "Médiálny obsah nieje označený ako chúlostivý", @@ -118,7 +120,7 @@ "confirmations.delete.message": "Si si istý/á, že chceš vymazať túto správu?", "confirmations.delete_list.confirm": "Vymaž", "confirmations.delete_list.message": "Si si istý/á, že chceš natrvalo vymazať tento zoznam?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.confirm": "Zahoď", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Skry celú doménu", "confirmations.domain_block.message": "Si si naozaj istý/á, že chceš blokovať celú doménu {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať pár konkrétnych užívateľov, čo sa doporučuje. Neuvidíš obsah z tejto domény v žiadnej verejnej časovej osi, ani v oznámeniach. Tvoji následovníci pochádzajúci z tejto domény budú odstránení.", @@ -158,7 +160,7 @@ "emoji_button.symbols": "Symboly", "emoji_button.travel": "Cestovanie a miesta", "empty_column.account_suspended": "Účet bol vylúčený", - "empty_column.account_timeline": "Niesú tu žiadne príspevky!", + "empty_column.account_timeline": "Niesu tu žiadne príspevky!", "empty_column.account_unavailable": "Profil nedostupný", "empty_column.blocks": "Ešte si nikoho nezablokoval/a.", "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.", @@ -217,13 +219,13 @@ "intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}", "keyboard_shortcuts.back": "dostať sa naspäť", "keyboard_shortcuts.blocked": "otvor zoznam blokovaných užívateľov", - "keyboard_shortcuts.boost": "vyzdvihnúť", + "keyboard_shortcuts.boost": "Vyzdvihni príspevok", "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov", "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu", "keyboard_shortcuts.description": "Popis", "keyboard_shortcuts.direct": "pre otvorenie panelu priamých správ", "keyboard_shortcuts.down": "posunúť sa dole v zozname", - "keyboard_shortcuts.enter": "otvoriť správu", + "keyboard_shortcuts.enter": "Otvor príspevok", "keyboard_shortcuts.favourite": "pridaj do obľúbených", "keyboard_shortcuts.favourites": "otvor zoznam obľúbených", "keyboard_shortcuts.federated": "otvor federovanú časovú os", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Obľúbené:", "notifications.column_settings.filter_bar.advanced": "Zobraz všetky kategórie", "notifications.column_settings.filter_bar.category": "Rýchle triedenie", - "notifications.column_settings.filter_bar.show": "Ukáž", + "notifications.column_settings.filter_bar.show_bar": "Ukáž filtrovací panel", "notifications.column_settings.follow": "Noví sledujúci:", "notifications.column_settings.follow_request": "Nové žiadosti o následovanie:", "notifications.column_settings.mention": "Zmienenia:", @@ -321,8 +323,9 @@ "notifications.column_settings.reblog": "Vyzdvihnutia:", "notifications.column_settings.show": "Ukáž v stĺpci", "notifications.column_settings.sound": "Prehraj zvuk", - "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Značenia neprečítaných oboznámení", + "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.filter.all": "Všetky", "notifications.filter.boosts": "Vyzdvihnutia", "notifications.filter.favourites": "Obľúbené", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Načítava sa…", "regeneration_indicator.sublabel": "Vaša nástenka sa pripravuje!", "relative_time.days": "{number}dní", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}hod", "relative_time.just_now": "teraz", "relative_time.minutes": "{number}min", "relative_time.seconds": "{number}sek", "relative_time.today": "dnes", "reply_indicator.cancel": "Zrušiť", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Posuň ku {target}", "report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu hlásenia aj tam?", "report.hint": "Toto nahlásenie bude zaslané správcom tvojho servera. Môžeš napísať odvôvodnenie, prečo nahlasuješ tento účet:", @@ -396,9 +407,14 @@ "status.delete": "Zmazať", "status.detailed_status": "Podrobný náhľad celej konverzácie", "status.direct": "Priama správa pre @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Vložiť", "status.favourite": "Páči sa mi", "status.filtered": "Filtrované", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Ukáž viac", "status.media_hidden": "Skryté médiá", "status.mention": "Spomeň @{name}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 0919fc3cd..212e9256c 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,28 +1,28 @@ { "account.account_note_header": "Opombe", - "account.add_or_remove_from_list": "Dodaj ali odstrani iz seznama", + "account.add_or_remove_from_list": "Dodaj ali odstrani s seznamov", "account.badges.bot": "Robot", - "account.badges.group": "Group", + "account.badges.group": "Skupina", "account.block": "Blokiraj @{name}", - "account.block_domain": "Skrij vse iz {domain}", + "account.block_domain": "Blokiraj domeno {domain}", "account.blocked": "Blokirano", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.browse_more_on_origin_server": "Brskaj več po izvirnem profilu", + "account.cancel_follow_request": "Prekliči prošnjo za sledenje", "account.direct": "Neposredno sporočilo @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Skrita domena", + "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", + "account.domain_blocked": "Blokirana domena", "account.edit_profile": "Uredi profil", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Zmožnost profila", + "account.enable_notifications": "Obvesti me, ko ima @{name} novo objavo", + "account.endorse": "Izpostavi v profilu", "account.follow": "Sledi", "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.followers_counter": "{count, plural, one {ima {count} sledilca} two {ima {count} sledilca} few {ima {count} sledilcev} other {ima {count} sledilce}}", + "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}", "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", - "account.follows_you": "Sledi tebi", + "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij spodbude od @{name}", - "account.joined": "Joined {date}", + "account.joined": "Pridružen/a {date}", "account.last_status": "Zadnja dejavnost", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", @@ -47,17 +47,18 @@ "account.unmute": "Odtišaj @{name}", "account.unmute_notifications": "Vklopi obvestila od @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Povprečje", + "admin.dashboard.retention.cohort": "Mesec prijave", + "admin.dashboard.retention.cohort_size": "Novi uporabniki", + "alert.rate_limited.message": "Poskusite znova čez {retry_time, time, medium}.", + "alert.rate_limited.title": "Hitrost omejena", "alert.unexpected.message": "Zgodila se je nepričakovana napaka.", "alert.unexpected.title": "Uups!", - "announcement.announcement": "Announcement", - "attachments_list.unprocessed": "(unprocessed)", - "autosuggest_hashtag.per_week": "{count} per week", + "announcement.announcement": "Objava", + "attachments_list.unprocessed": "(neobdelano)", + "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", "bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.", "bundle_column_error.retry": "Poskusi ponovno", @@ -66,10 +67,10 @@ "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", "column.blocks": "Blokirani uporabniki", - "column.bookmarks": "Bookmarks", + "column.bookmarks": "Zaznamki", "column.community": "Lokalna časovnica", "column.direct": "Neposredna sporočila", - "column.directory": "Browse profiles", + "column.directory": "Prebrskaj profile", "column.domain_blocks": "Skrite domene", "column.favourites": "Priljubljene", "column.follow_requests": "Sledi prošnjam", @@ -87,9 +88,9 @@ "column_header.show_settings": "Prikaži nastavitve", "column_header.unpin": "Odpni", "column_subheading.settings": "Nastavitve", - "community.column_settings.local_only": "Local only", + "community.column_settings.local_only": "Samo krajevno", "community.column_settings.media_only": "Samo mediji", - "community.column_settings.remote_only": "Remote only", + "community.column_settings.remote_only": "Samo oddaljeno", "compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.", "compose_form.direct_message_warning_learn_more": "Nauči se več", "compose_form.hashtag_warning": "Ta tut ne bo naveden pod nobenim ključnikom, ker ni javen. Samo javne tute lahko iščete s ključniki.", @@ -100,10 +101,11 @@ "compose_form.poll.duration": "Trajanje ankete", "compose_form.poll.option_placeholder": "Izbira {number}", "compose_form.poll.remove_option": "Odstrani to izbiro", - "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", - "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.poll.switch_to_multiple": "Spremenite anketo, da omogočite več izbir", + "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.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", @@ -118,14 +120,14 @@ "confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to stanje?", "confirmations.delete_list.confirm": "Izbriši", "confirmations.delete_list.message": "Ali ste prepričani, da želite trajno izbrisati ta seznam?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Opusti", + "confirmations.discard_edit_media.message": "Imate ne shranjene spremembe za medijski opis ali predogled; jih želite kljub temu opustiti?", "confirmations.domain_block.confirm": "Skrij celotno domeno", "confirmations.domain_block.message": "Ali ste res, res prepričani, da želite blokirati celotno {domain}? V večini primerov je nekaj ciljnih blokiranj ali utišanj dovolj in boljše. Vsebino iz te domene ne boste videli v javnih časovnicah ali obvestilih. Vaši sledilci iz te domene bodo odstranjeni.", - "confirmations.logout.confirm": "Log out", - "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.logout.confirm": "Odjava", + "confirmations.logout.message": "Ali ste prepričani, da se želite odjaviti?", "confirmations.mute.confirm": "Utišanje", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "S tem boste skrili objave pred njimi in objave, ki jih omenjajo, še vedno pa bodo lahko videli vaše objave in vam sledili.", "confirmations.mute.message": "Ali ste prepričani, da želite utišati {name}?", "confirmations.redraft.confirm": "Izbriši in preoblikuj", "confirmations.redraft.message": "Ali ste prepričani, da želite izbrisati ta status in ga preoblikovati? Vzljubi in spodbude bodo izgubljeni, odgovori na izvirno objavo pa bodo osiroteli.", @@ -133,14 +135,14 @@ "confirmations.reply.message": "Odgovarjanje bo prepisalo sporočilo, ki ga trenutno sestavljate. Ali ste prepričani, da želite nadaljevati?", "confirmations.unfollow.confirm": "Prenehaj slediti", "confirmations.unfollow.message": "Ali ste prepričani, da ne želite več slediti {name}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "conversation.delete": "Izbriši pogovor", + "conversation.mark_as_read": "Označi kot prebrano", + "conversation.open": "Prikaži pogovor", + "conversation.with": "Z {names}", + "directory.federated": "Iz znanega fediverzuma", + "directory.local": "Samo iz {domain}", + "directory.new_arrivals": "Novi prišleki", + "directory.recently_active": "Nedavno aktiven/a", "embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.", "embed.preview": "Tako bo izgledalo:", "emoji_button.activity": "Dejavnost", @@ -157,7 +159,7 @@ "emoji_button.search_results": "Rezultati iskanja", "emoji_button.symbols": "Simboli", "emoji_button.travel": "Potovanja in Kraji", - "empty_column.account_suspended": "Account suspended", + "empty_column.account_suspended": "Račun je suspendiran", "empty_column.account_timeline": "Tukaj ni tutov!", "empty_column.account_unavailable": "Profil ni na voljo", "empty_column.blocks": "Niste še blokirali nobenega uporabnika.", @@ -167,29 +169,29 @@ "empty_column.domain_blocks": "Še vedno ni skritih domen.", "empty_column.favourited_statuses": "Nimate priljubljenih tutov. Ko boste vzljubili kakšnega, se bo prikazal tukaj.", "empty_column.favourites": "Nihče še ni vzljubil tega tuta. Ko ga bo nekdo, se bo pojavil tukaj.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "Kaže, da za vas ni mogoče pripraviti nobenih predlogov. Poskusite uporabiti iskanje, da poiščete osebe, ki jih poznate, ali raziščete ključnike, ki so v trendu.", "empty_column.follow_requests": "Nimate prošenj za sledenje. Ko boste prejeli kakšno, se bo prikazala tukaj.", "empty_column.hashtag": "V tem ključniku še ni nič.", "empty_column.home": "Vaša domača časovnica je prazna! Obiščite {public} ali uporabite iskanje, da se boste srečali druge uporabnike.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Oglejte si nekaj predlogov", "empty_column.list": "Na tem seznamu ni ničesar. Ko bodo člani tega seznama objavili nove statuse, se bodo pojavili tukaj.", "empty_column.lists": "Nimate seznamov. Ko ga boste ustvarili, se bo prikazal tukaj.", "empty_column.mutes": "Niste utišali še nobenega uporabnika.", "empty_column.notifications": "Nimate še nobenih obvestil. Povežite se z drugimi, da začnete pogovor.", "empty_column.public": "Tukaj ni ničesar! Da ga napolnite, napišite nekaj javnega ali pa ročno sledite uporabnikom iz drugih strežnikov", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", - "follow_recommendations.done": "Done", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "error.unexpected_crash.explanation": "Zaradi hrošča v naši kodi ali težave z združljivostjo brskalnika te strani ni mogoče ustrezno prikazati.", + "error.unexpected_crash.explanation_addons": "Te strani ni mogoče ustrezno prikazati. To napako najverjetneje povzroča dodatek briskalnika ali samodejna orodja za prevajanje.", + "error.unexpected_crash.next_steps": "Poskusite osvežiti stran. Če to ne pomaga, boste morda še vedno lahko uporabljali Mastodon prek drugega brskalnika ali z domorodno aplikacijo.", + "error.unexpected_crash.next_steps_addons": "Poskusite jih onemogočiti in osvežiti stran. Če to ne pomaga, boste morda še vedno lahko uporabljali Mastodon prek drugega brskalnika ali z domorodno aplikacijo.", + "errors.unexpected_crash.copy_stacktrace": "Kopiraj sledenje sklada na odložišče", + "errors.unexpected_crash.report_issue": "Prijavi težavo", + "follow_recommendations.done": "Opravljeno", + "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.", + "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!", "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", - "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "generic.saved": "Saved", + "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", + "generic.saved": "Shranjeno", "getting_started.developers": "Razvijalci", "getting_started.directory": "Imenik profilov", "getting_started.documentation": "Dokumentacija", @@ -210,8 +212,8 @@ "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži spodbude", "home.column_settings.show_replies": "Pokaži odgovore", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", + "home.hide_announcements": "Skrij objave", + "home.show_announcements": "Prikaži objave", "intervals.full.days": "{number, plural, one {# dan} two {# dni} few {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# ura} two {# uri} few {# ure} other {# ur}}", "intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}", @@ -250,8 +252,8 @@ "keyboard_shortcuts.unfocus": "odfokusiraj območje za sestavljanje besedila/iskanje", "keyboard_shortcuts.up": "premakni se navzgor po seznamu", "lightbox.close": "Zapri", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "Strni ogledno polje slike", + "lightbox.expand": "Razširi ogledno polje slike", "lightbox.next": "Naslednji", "lightbox.previous": "Prejšnji", "lists.account.add": "Dodaj na seznam", @@ -261,10 +263,10 @@ "lists.edit.submit": "Spremeni naslov", "lists.new.create": "Dodaj seznam", "lists.new.title_placeholder": "Nov naslov seznama", - "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", - "lists.replies_policy.none": "No one", - "lists.replies_policy.title": "Show replies to:", + "lists.replies_policy.followed": "Vsem sledenim uporabnikom", + "lists.replies_policy.list": "Članom seznama", + "lists.replies_policy.none": "Nikomur", + "lists.replies_policy.title": "Pokaži odgovore:", "lists.search": "Išči med ljudmi, katerim sledite", "lists.subheading": "Vaši seznami", "load_pending": "{count, plural, one {# nov element} other {# novih elementov}}", @@ -272,12 +274,12 @@ "media_gallery.toggle_visible": "Preklopi vidljivost", "missing_indicator.label": "Ni najdeno", "missing_indicator.sublabel": "Tega vira ni bilo mogoče najti", - "mute_modal.duration": "Duration", + "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Skrij obvestila tega uporabnika?", - "mute_modal.indefinite": "Indefinite", + "mute_modal.indefinite": "Nedoločeno", "navigation_bar.apps": "Mobilne aplikacije", "navigation_bar.blocks": "Blokirani uporabniki", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Lokalna časovnica", "navigation_bar.compose": "Sestavi nov tut", "navigation_bar.direct": "Neposredna sporočila", @@ -300,21 +302,21 @@ "navigation_bar.security": "Varnost", "notification.favourite": "{name} je vzljubil/a vaš status", "notification.follow": "{name} vam sledi", - "notification.follow_request": "{name} has requested to follow you", + "notification.follow_request": "{name} vam želi slediti", "notification.mention": "{name} vas je omenil/a", - "notification.own_poll": "Your poll has ended", + "notification.own_poll": "Vaša anketa se je končala", "notification.poll": "Glasovanje, v katerem ste sodelovali, se je končalo", "notification.reblog": "{name} je spodbudil/a vaš status", - "notification.status": "{name} just posted", + "notification.status": "{name} je pravkar objavil/a", "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", "notifications.column_settings.favourite": "Priljubljeni:", "notifications.column_settings.filter_bar.advanced": "Prikaži vse kategorije", "notifications.column_settings.filter_bar.category": "Vrstica za hitro filtriranje", - "notifications.column_settings.filter_bar.show": "Pokaži", + "notifications.column_settings.filter_bar.show_bar": "Pokaži vrstico s filtri", "notifications.column_settings.follow": "Novi sledilci:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow_request": "Nove prošnje za sledenje:", "notifications.column_settings.mention": "Omembe:", "notifications.column_settings.poll": "Rezultati glasovanja:", "notifications.column_settings.push": "Potisna obvestila", @@ -322,31 +324,32 @@ "notifications.column_settings.show": "Prikaži v stolpcu", "notifications.column_settings.sound": "Predvajaj zvok", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Neprebrana obvestila", + "notifications.column_settings.unread_notifications.highlight": "Poudari neprebrana obvestila", "notifications.filter.all": "Vse", "notifications.filter.boosts": "Spodbude", "notifications.filter.favourites": "Priljubljeni", "notifications.filter.follows": "Sledi", "notifications.filter.mentions": "Omembe", "notifications.filter.polls": "Rezultati glasovanj", - "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", + "notifications.filter.statuses": "Posodobitve pri osebah, ki jih spremljate", + "notifications.grant_permission": "Dovoli.", "notifications.group": "{count} obvestil", - "notifications.mark_as_read": "Mark every notification as read", - "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", - "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", - "notifications_permission_banner.enable": "Enable desktop notifications", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", - "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", + "notifications.mark_as_read": "Vsa obvestila ozači kot prebrana", + "notifications.permission_denied": "Namizna obvestila niso na voljo zaradi poprej zavrnjene zahteve dovoljenja brskalnika.", + "notifications.permission_denied_alert": "Namiznih obvestil ni mogoče omogočiti, ker je bilo dovoljenje brskalnika že prej zavrnjeno", + "notifications.permission_required": "Namizna obvestila niso na voljo, ker zahtevano dovoljenje ni bilo podeljeno.", + "notifications_permission_banner.enable": "Omogoči obvestila na namizju", + "notifications_permission_banner.how_to_control": "Če želite prejemati obvestila, ko Mastodon ni odprt, omogočite namizna obvestila. Natančno lahko nadzirate, katere vrste interakcij naj tvorijo namizna obvestila; ko so omogočena, za to uporabite gumb {icon} zgoraj.", + "notifications_permission_banner.title": "Nikoli ne zamudite ničesar", + "picture_in_picture.restore": "Postavi nazaj", "poll.closed": "Zaprto", "poll.refresh": "Osveži", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# oseba} two {# osebi} few {# osebe} other {# oseb}}", "poll.total_votes": "{count, plural,one {# glas} other {# glasov}}", "poll.vote": "Glasuj", - "poll.voted": "You voted for this answer", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.voted": "Glasovali ste za ta odgovor", + "poll.votes": "{votes, plural, one {# glas} two {# glasova} few {# glasovi} other {# glasov}}", "poll_button.add_poll": "Dodaj anketo", "poll_button.remove_poll": "Odstrani anketo", "privacy.change": "Prilagodi zasebnost statusa", @@ -358,16 +361,24 @@ "privacy.public.short": "Javno", "privacy.unlisted.long": "Ne objavi na javne časovnice", "privacy.unlisted.short": "Ni prikazano", - "refresh": "Refresh", + "refresh": "Osveži", "regeneration_indicator.label": "Nalaganje…", "regeneration_indicator.sublabel": "Vaš domači vir se pripravlja!", "relative_time.days": "{number}d", - "relative_time.hours": "{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.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.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:", @@ -389,16 +400,21 @@ "status.admin_account": "Odpri vmesnik za moderiranje za @{name}", "status.admin_status": "Odpri status v vmesniku za moderiranje", "status.block": "Blokiraj @{name}", - "status.bookmark": "Bookmark", + "status.bookmark": "Dodaj med zaznamke", "status.cancel_reblog_private": "Prekini spodbudo", "status.cannot_reblog": "Te objave ni mogoče spodbuditi", "status.copy": "Kopiraj povezavo do statusa", "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.embed": "Vgradi", "status.favourite": "Priljubljen", "status.filtered": "Filtrirano", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Naloži več", "status.media_hidden": "Mediji so skriti", "status.mention": "Omeni @{name}", @@ -414,7 +430,7 @@ "status.reblogged_by": "{name} spodbuja", "status.reblogs.empty": "Nihče še ni spodbudil tega tuta. Ko se bo to zgodilo, se bodo pojavili tukaj.", "status.redraft": "Izbriši in preoblikuj", - "status.remove_bookmark": "Remove bookmark", + "status.remove_bookmark": "Odstrani zaznamek", "status.reply": "Odgovori", "status.replyAll": "Odgovori na objavo", "status.report": "Prijavi @{name}", @@ -425,7 +441,7 @@ "status.show_more": "Prikaži več", "status.show_more_all": "Prikaži več za vse", "status.show_thread": "Prikaži objavo", - "status.uncached_media_warning": "Not available", + "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", "suggestions.dismiss": "Zavrni predlog", @@ -440,39 +456,39 @@ "time_remaining.minutes": "{number, plural, one {# minuta} other {# minut}} je ostalo", "time_remaining.moments": "Preostali trenutki", "time_remaining.seconds": "{number, plural, one {# sekunda} other {# sekund}} je ostalo", - "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", - "timeline_hint.resources.follows": "Follows", + "timeline_hint.remote_resource_not_displayed": "{resource} z drugih strežnikov ni prikazano.", + "timeline_hint.resources.followers": "sledilcev", + "timeline_hint.resources.follows": "Sledi", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", - "trends.trending_now": "Trending now", + "trends.counter_by_accounts": "{count, plural, one {{count} oseba govori} two {{count} osebi govorita} few {{count} osebe govorijo} other {{count} oseb govori}}", + "trends.trending_now": "Zdaj v trendu", "ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "units.short.billion": "{count} milijard", + "units.short.million": "{count} mio.", + "units.short.thousand": "{count} tisoč", "upload_area.title": "Za pošiljanje povlecite in spustite", "upload_button.label": "Dodaj medije", "upload_error.limit": "Omejitev prenosa datoteke je presežena.", "upload_error.poll": "Prenos datoteke z anketami ni dovoljen.", - "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.audio_description": "Opiši za osebe z okvaro sluha", "upload_form.description": "Opišite za slabovidne", - "upload_form.edit": "Edit", - "upload_form.thumbnail": "Change thumbnail", + "upload_form.edit": "Uredi", + "upload_form.thumbnail": "Spremeni sličico", "upload_form.undo": "Izbriši", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", - "upload_modal.analyzing_picture": "Analyzing picture…", - "upload_modal.apply": "Apply", - "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "Choose image", + "upload_form.video_description": "Opiši za osebe z okvaro sluha in/ali vida", + "upload_modal.analyzing_picture": "Analiziranje slike …", + "upload_modal.apply": "Uveljavi", + "upload_modal.applying": "Uveljavljanje poteka …", + "upload_modal.choose_image": "Izberite sliko", "upload_modal.description_placeholder": "Pri Jakcu bom vzel šest čudežnih fig", - "upload_modal.detect_text": "Detect text from picture", - "upload_modal.edit_media": "Edit media", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", - "upload_modal.preparing_ocr": "Preparing OCR…", - "upload_modal.preview_label": "Preview ({ratio})", + "upload_modal.detect_text": "Zaznaj besedilo s slike", + "upload_modal.edit_media": "Uredi medij", + "upload_modal.hint": "Kliknite ali povlecite krog v predogledu, da izberete točko pozornosti, ki bo vedno vidna na vseh oglednih sličicah.", + "upload_modal.preparing_ocr": "Priprava optične prepoznave znakov (OCR) ...", + "upload_modal.preview_label": "Predogled ({ratio})", "upload_progress.label": "Pošiljanje...", "video.close": "Zapri video", - "video.download": "Download file", + "video.download": "Prenesi datoteko", "video.exit_fullscreen": "Izhod iz celozaslonskega načina", "video.expand": "Razširi video", "video.fullscreen": "Celozaslonski način", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 062b566d0..2a9a12e17 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Mesatare", + "admin.dashboard.retention.cohort": "Muaj regjistrimi", + "admin.dashboard.retention.cohort_size": "Përdorues të rinj", "alert.rate_limited.message": "Ju lutemi, riprovoni pas {retry_time, time, medium}.", "alert.rate_limited.title": "Shpejtësi e kufizuar", "alert.unexpected.message": "Ndodhi një gabim të papritur.", "alert.unexpected.title": "Hëm!", "announcement.announcement": "Lajmërim", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(e papërpunuar)", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", @@ -104,6 +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.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}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Jeni i sigurt se doni të fshihet kjo gjendje?", "confirmations.delete_list.confirm": "Fshije", "confirmations.delete_list.message": "Jeni i sigurt se doni të fshihet përgjithmonë kjo listë?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Hidhe tej", + "confirmations.discard_edit_media.message": "Keni ndryshime të paruajtura te përshkrimi ose paraparja e medias, të hidhen tej, sido qoftë?", "confirmations.domain_block.confirm": "Bllokoje krejt përkatësinë", "confirmations.domain_block.message": "Jeni i sigurt, shumë i sigurt se doni të bllokohet krejt {domain}? Në shumicën e rasteve, ndoca bllokime ose heshtime me synim të caktuar janë të mjaftueshme dhe të parapëlqyera. S’keni për të parë lëndë nga kjo përkatësi në ndonjë rrjedhë kohore publike, apo te njoftimet tuaja. Ndjekësit tuaj prej asaj përkatësie do të hiqen.", "confirmations.logout.confirm": "Dilni", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Të parapëlqyer:", "notifications.column_settings.filter_bar.advanced": "Shfaq krejt kategoritë", "notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta", - "notifications.column_settings.filter_bar.show": "Shfaq", + "notifications.column_settings.filter_bar.show_bar": "Shfaq shtyllë filtrash", "notifications.column_settings.follow": "Ndjekës të rinj:", "notifications.column_settings.follow_request": "Kërkesa të reja për ndjekje:", "notifications.column_settings.mention": "Përmendje:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Shfaqi në shtylla", "notifications.column_settings.sound": "Luaj një tingull", "notifications.column_settings.status": "Mesazhe të rinj:", - "notifications.column_settings.unread_markers.category": "Shenja njoftimesh të palexuara", + "notifications.column_settings.unread_notifications.category": "Njoftime të palexuara", + "notifications.column_settings.unread_notifications.highlight": "Theksoji njoftimet e palexuara", "notifications.filter.all": "Krejt", "notifications.filter.boosts": "Përforcime", "notifications.filter.favourites": "Të parapëlqyer", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural,one {# votë }other {# vota }}", "poll.vote": "Votoni", "poll.voted": "Votuat për këtë përgjigje", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# votë} other {# vota}}", "poll_button.add_poll": "Shtoni një pyetësor", "poll_button.remove_poll": "Hiqe pyetësorin", "privacy.change": "Rregulloni privatësi mesazhesh", @@ -362,12 +365,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.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.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:", @@ -396,9 +407,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.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.load_more": "Ngarko më tepër", "status.media_hidden": "Me media të fshehur", "status.mention": "Përmendni @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Përshkruajeni për persona me dëgjim të kufizuar ose probleme shikimi", "upload_modal.analyzing_picture": "Po analizohet fotoja…", "upload_modal.apply": "Aplikoje", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Po zbatohet…", "upload_modal.choose_image": "Zgjidhni figurë", "upload_modal.description_placeholder": "Deshe Korçën, Korçën të dhamë", "upload_modal.detect_text": "Pikase tekstin prej fotoje", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 3e29734ef..c12cad908 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -47,7 +47,8 @@ "account.unmute": "Ukloni ućutkavanje korisniku @{name}", "account.unmute_notifications": "Uključi nazad obaveštenja od korisnika @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Tutni", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Omiljeni:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Novi pratioci:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Pominjanja:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Prikaži u koloni", "notifications.column_settings.sound": "Puštaj zvuk", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "sada", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Poništi", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Obriši", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ugradi na sajt", "status.favourite": "Omiljeno", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Učitaj još", "status.media_hidden": "Multimedija sakrivena", "status.mention": "Pomeni korisnika @{name}", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index ba822e15d..fb94b0098 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -47,7 +47,8 @@ "account.unmute": "Уклони ућуткавање кориснику @{name}", "account.unmute_notifications": "Укључи назад обавештења од корисника @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Промените анкету да бисте омогућили један избор", "compose_form.publish": "Труби", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Означи мултимедију као осетљиву", "compose_form.sensitive.marked": "Медији су означени као осетљиви", "compose_form.sensitive.unmarked": "Медији су означени као не-осетљиви", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Омиљени:", "notifications.column_settings.filter_bar.advanced": "Прикажи све категорије", "notifications.column_settings.filter_bar.category": "Трака за брзи филтер", - "notifications.column_settings.filter_bar.show": "Прикажи", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Нови пратиоци:", "notifications.column_settings.follow_request": "Нови захтеви за праћење:", "notifications.column_settings.mention": "Помињања:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Прикажи у колони", "notifications.column_settings.sound": "Пуштај звук", "notifications.column_settings.status": "Нови тутови:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Све", "notifications.filter.boosts": "Подршки", "notifications.filter.favourites": "Омиљене", @@ -362,12 +365,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.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.forward": "Проследити {target}", "report.forward_hint": "Налог је са другог сервера. Послати анонимну копију пријаве и тамо?", "report.hint": "Пријава ће бити послата модераторима ваше инстанце. Можете додати објашњење зашто пријављујете овај налог у наставку:", @@ -396,9 +407,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.embed": "Угради на сајт", "status.favourite": "Омиљено", "status.filtered": "Филтрирано", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Учитај још", "status.media_hidden": "Мултимедија сакривена", "status.mention": "Помени корисника @{name}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index f80d1ce0e..47d70fb54 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Genomsnittlig", + "admin.dashboard.retention.cohort": "Registreringsmånad", + "admin.dashboard.retention.cohort_size": "Nya användare", "alert.rate_limited.message": "Vänligen försök igen efter {retry_time, time, medium}.", "alert.rate_limited.title": "Mängd begränsad", "alert.unexpected.message": "Ett oväntat fel uppstod.", "alert.unexpected.title": "Hoppsan!", "announcement.announcement": "Meddelande", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(obearbetad)", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", "bundle_column_error.body": "Något gick fel medan denna komponent laddades.", @@ -104,6 +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.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", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Är du säker på att du vill radera denna status?", "confirmations.delete_list.confirm": "Radera", "confirmations.delete_list.message": "Är du säker på att du vill radera denna lista permanent?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Kasta", + "confirmations.discard_edit_media.message": "Du har o-sparade ändringar till mediabeskrivningen eller förhandsgranskningen, kasta bort dem ändå?", "confirmations.domain_block.confirm": "Dölj hela domänen", "confirmations.domain_block.message": "Är du verkligen, verkligen säker på att du vill blockera hela {domain}? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer inte se innehåll från den domänen i den allmänna tidslinjen eller i dina aviseringar. Dina följare från den domänen komer att tas bort.", "confirmations.logout.confirm": "Logga ut", @@ -167,7 +169,7 @@ "empty_column.domain_blocks": "Det finns ännu inga dolda domäner.", "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.", "empty_column.favourites": "Ingen har favoritmarkerat den här tooten än. När någon gör det kommer den visas här.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "Det ser ut som om inga förslag kan genereras till dig. Du kan prova att använda sök för att leta efter personer som du kanske känner eller utforska trendande hash-taggar.", "empty_column.follow_requests": "Du har inga följarförfrågningar än. När du får en kommer den visas här.", "empty_column.hashtag": "Det finns inget i denna hashtag ännu.", "empty_column.home": "Din hemma-tidslinje är tom! Besök {public} eller använd sökning för att komma igång och träffa andra användare.", @@ -184,8 +186,8 @@ "errors.unexpected_crash.copy_stacktrace": "Kopiera stacktrace till urklipp", "errors.unexpected_crash.report_issue": "Rapportera problem", "follow_recommendations.done": "Klar", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.", + "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hem-flöde. Var inte rädd för att göra misstag, du kan sluta följa människor lika enkelt när som helst!", "follow_request.authorize": "Godkänn", "follow_request.reject": "Avvisa", "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.", @@ -250,8 +252,8 @@ "keyboard_shortcuts.unfocus": "för att avfokusera skrivfält/sökfält", "keyboard_shortcuts.up": "för att flytta uppåt i listan", "lightbox.close": "Stäng", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "Komprimera bildvyrutan", + "lightbox.expand": "Utöka bildvyrutan", "lightbox.next": "Nästa", "lightbox.previous": "Tidigare", "lists.account.add": "Lägg till i lista", @@ -261,7 +263,7 @@ "lists.edit.submit": "Ändra titel", "lists.new.create": "Lägg till lista", "lists.new.title_placeholder": "Ny listrubrik", - "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.followed": "Alla användare som följs", "lists.replies_policy.list": "Medlemmar i listan", "lists.replies_policy.none": "Ingen", "lists.replies_policy.title": "Visa svar till:", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favoriter:", "notifications.column_settings.filter_bar.advanced": "Visa alla kategorier", "notifications.column_settings.filter_bar.category": "Snabbfilter", - "notifications.column_settings.filter_bar.show": "Visa", + "notifications.column_settings.filter_bar.show_bar": "Visa filterfält", "notifications.column_settings.follow": "Nya följare:", "notifications.column_settings.follow_request": "Ny följ-förfrågan:", "notifications.column_settings.mention": "Omnämningar:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Visa i kolumnen", "notifications.column_settings.sound": "Spela upp ljud", "notifications.column_settings.status": "Nya tutor:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "O-lästa aviseringar", + "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", "notifications.filter.all": "Alla", "notifications.filter.boosts": "Knuffar", "notifications.filter.favourites": "Favoriter", @@ -333,9 +336,9 @@ "notifications.grant_permission": "Godkänn åtkomst.", "notifications.group": "{count} aviseringar", "notifications.mark_as_read": "Markera varje avisering som läst", - "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", - "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications.permission_denied": "Skrivbordsaviseringar är otillgängliga på grund av tidigare nekade förfrågningar om behörighet i webbläsaren", + "notifications.permission_denied_alert": "Skrivbordsaviseringar kan inte aktiveras, eftersom att webbläsarens behörighet har nekats innan", + "notifications.permission_required": "Skrivbordsaviseringar är otillgängliga eftersom att rättigheten som krävs inte har godkänts.", "notifications_permission_banner.enable": "Aktivera skrivbordsaviseringar", "notifications_permission_banner.how_to_control": "För att ta emot aviseringar när Mastodon inte är öppet, aktivera skrivbordsaviseringar. När de är aktiverade kan du styra exakt vilka typer av interaktioner som aviseras via {icon} -knappen ovan.", "notifications_permission_banner.title": "Missa aldrig något", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {1 röst} other {# röster}}", "poll.vote": "Rösta", "poll.voted": "Du röstade för detta svar", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# röst} other {# röster}}", "poll_button.add_poll": "Lägg till en omröstning", "poll_button.remove_poll": "Ta bort omröstning", "privacy.change": "Justera sekretess", @@ -362,12 +365,20 @@ "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.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}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.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?", "report.hint": "Anmälan skickas till din instans moderatorer. Du kan ge en förklaring till varför du har anmält detta konto nedan:", @@ -396,9 +407,14 @@ "status.delete": "Radera", "status.detailed_status": "Detaljerad samtalsvy", "status.direct": "Direktmeddela @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Bädda in", "status.favourite": "Favorit", "status.filtered": "Filtrerat", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Ladda fler", "status.media_hidden": "Media dold", "status.mention": "Omnämn @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Beskriv för personer med hörsel- eller synnedsättning", "upload_modal.analyzing_picture": "Analyserar bild…", "upload_modal.apply": "Verkställ", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Verkställer…", "upload_modal.choose_image": "Välj bild", "upload_modal.description_placeholder": "En snabb brun räv hoppar över den lata hunden", "upload_modal.detect_text": "Upptäck bildens text", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index eca4765c4..2675da68c 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 1b3e70fb6..2e329f270 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -47,7 +47,8 @@ "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக", "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக", "account_note.placeholder": "குறிப்பு ஒன்றை சேர்க்க சொடுக்கவும்", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "ஒரே ஒரு தேர்வை மட்டும் அனுமதிக்குமாறு மாற்று", "compose_form.publish": "டூட்", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்றப் படம் இல்லை எனக் குறியிடு", "compose_form.sensitive.marked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்பட்டுள்ளது", "compose_form.sensitive.unmarked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்படவில்லை", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "பிடித்தவை:", "notifications.column_settings.filter_bar.advanced": "எல்லா வகைகளையும் காட்டு", "notifications.column_settings.filter_bar.category": "விரைவு வடிகட்டி பட்டை", - "notifications.column_settings.filter_bar.show": "காட்டு", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "புதிய பின்பற்றுபவர்கள்:", "notifications.column_settings.follow_request": "புதிய பின்தொடர் கோரிக்கைகள்:", "notifications.column_settings.mention": "குறிப்பிடுகிறது:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "பத்தியில் காண்பி", "notifications.column_settings.sound": "ஒலி விளையாட", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "எல்லா", "notifications.filter.boosts": "மதிப்பை உயர்த்து", "notifications.filter.favourites": "விருப்பத்துக்குகந்த", @@ -362,12 +365,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.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.forward": "முன்னோக்கி {target}", "report.forward_hint": "கணக்கு மற்றொரு சேவையகத்திலிருந்து வருகிறது. அறிக்கையின் அநாமதேய பிரதி ஒன்றை அனுப்பவும்.?", "report.hint": "அறிக்கை உங்கள் மாதிரியாக மாற்றியமைக்கப்படும். கீழே உள்ள கணக்கை நீங்கள் ஏன் புகாரளிக்கிறீர்கள் என்பதற்கான விளக்கத்தை வழங்கலாம்:", @@ -396,9 +407,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.embed": "கிடத்து", "status.favourite": "விருப்பத்துக்குகந்த", "status.filtered": "வடிகட்டு", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "அதிகமாய் ஏற்று", "status.media_hidden": "மீடியா மறைக்கப்பட்டது", "status.mention": "குறிப்பிடு @{name}", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 2302e7ccc..6ef519315 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 348d753dc..b84ee23ec 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -47,7 +47,8 @@ "account.unmute": "@{name}పై మ్యూట్ ని తొలగించు", "account.unmute_notifications": "@{name} నుంచి ప్రకటనలపై మ్యూట్ ని తొలగించు", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "టూట్", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "మీడియా సున్నితమైనదిగా గుర్తించబడింది", "compose_form.sensitive.unmarked": "మీడియా సున్నితమైనదిగా గుర్తించబడలేదు", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "ఇష్టపడినవి:", "notifications.column_settings.filter_bar.advanced": "అన్ని విభాగాలను చూపించు", "notifications.column_settings.filter_bar.category": "క్విక్ ఫిల్టర్ బార్", - "notifications.column_settings.filter_bar.show": "చూపించు", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "క్రొత్త అనుచరులు:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "ప్రస్తావనలు:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "నిలువు వరుసలో చూపు", "notifications.column_settings.sound": "ధ్వనిని ప్లే చేయి", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "అన్నీ", "notifications.filter.boosts": "బూస్ట్లు", "notifications.filter.favourites": "ఇష్టాలు", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "లోడ్ అవుతోంది…", "regeneration_indicator.sublabel": "మీ హోమ్ ఫీడ్ సిద్ధమవుతోంది!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "ఇప్పుడు", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "రద్దు చెయ్యి", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "{target}కి ఫార్వార్డ్ చేయండి", "report.forward_hint": "ఖాతా మరొక సర్వర్లో ఉంది. నివేదిక యొక్క ఒక అనామకంగా ఉన్న కాపీని అక్కడికి కూడా పంపించమంటారా?", "report.hint": "మీ సేవిక మోడరేటర్లకు నివేదిక పంపబడుతుంది. ఈ ఖాతాను ఎందుకు నివేదిస్తున్నారనేదాని వివరణను మీరు దిగువన అందించవచ్చు:", @@ -396,9 +407,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.embed": "ఎంబెడ్", "status.favourite": "ఇష్టపడు", "status.filtered": "వడకట్టబడిన", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "మరిన్ని లోడ్ చేయి", "status.media_hidden": "మీడియా దాచబడింది", "status.mention": "@{name}ను ప్రస్తావించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 90b8ba464..27bcbc4bb 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -13,7 +13,7 @@ "account.domain_blocked": "ปิดกั้นโดเมนอยู่", "account.edit_profile": "แก้ไขโปรไฟล์", "account.enable_notifications": "แจ้งเตือนฉันเมื่อ @{name} โพสต์", - "account.endorse": "แสดงให้เห็นในโปรไฟล์", + "account.endorse": "แนะนำในโปรไฟล์", "account.follow": "ติดตาม", "account.followers": "ผู้ติดตาม", "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้", @@ -42,21 +42,22 @@ "account.statuses_counter": "{count, plural, other {{counter} โพสต์}}", "account.unblock": "เลิกปิดกั้น @{name}", "account.unblock_domain": "เลิกปิดกั้นโดเมน {domain}", - "account.unendorse": "ไม่แสดงให้เห็นในโปรไฟล์", + "account.unendorse": "ไม่แนะนำในโปรไฟล์", "account.unfollow": "เลิกติดตาม", "account.unmute": "เลิกซ่อน @{name}", "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}", "account_note.placeholder": "คลิกเพื่อเพิ่มหมายเหตุ", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "ค่าเฉลี่ย", + "admin.dashboard.retention.cohort": "เดือนที่ลงทะเบียน", + "admin.dashboard.retention.cohort_size": "ผู้ใช้ใหม่", "alert.rate_limited.message": "โปรดลองใหม่หลังจาก {retry_time, time, medium}", "alert.rate_limited.title": "มีการจำกัดอัตรา", "alert.unexpected.message": "เกิดข้อผิดพลาดที่ไม่คาดคิด", "alert.unexpected.title": "อุปส์!", "announcement.announcement": "ประกาศ", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดี่ยว", "compose_form.publish": "โพสต์", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, other {ทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", "compose_form.sensitive.marked": "{count, plural, other {มีการทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", "compose_form.sensitive.unmarked": "{count, plural, other {ไม่มีการทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", "confirmations.delete_list.confirm": "ลบ", "confirmations.delete_list.message": "คุณแน่ใจหรือไม่ว่าต้องการลบรายการนี้อย่างถาวร?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "ละทิ้ง", + "confirmations.discard_edit_media.message": "คุณมีการเปลี่ยนแปลงคำอธิบายหรือตัวอย่างสื่อที่ยังไม่ได้บันทึก ละทิ้งการเปลี่ยนแปลงต่อไป?", "confirmations.domain_block.confirm": "ปิดกั้นทั้งโดเมน", "confirmations.domain_block.message": "คุณแน่ใจจริง ๆ หรือไม่ว่าต้องการปิดกั้นทั้ง {domain}? ในกรณีส่วนใหญ่ การปิดกั้นหรือการซ่อนแบบกำหนดเป้าหมายไม่กี่รายการนั้นเพียงพอและเป็นที่นิยม คุณจะไม่เห็นเนื้อหาจากโดเมนนั้นในเส้นเวลาสาธารณะใด ๆ หรือการแจ้งเตือนของคุณ จะเอาผู้ติดตามของคุณจากโดเมนนั้นออก", "confirmations.logout.confirm": "ออกจากระบบ", @@ -137,7 +139,7 @@ "conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว", "conversation.open": "ดูการสนทนา", "conversation.with": "กับ {names}", - "directory.federated": "จากเฟดิเวิร์สที่รู้จัก", + "directory.federated": "จากจักรวาลสหพันธ์ที่รู้จัก", "directory.local": "จาก {domain} เท่านั้น", "directory.new_arrivals": "มาใหม่", "directory.recently_active": "ใช้งานล่าสุด", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "รายการโปรด:", "notifications.column_settings.filter_bar.advanced": "แสดงหมวดหมู่ทั้งหมด", "notifications.column_settings.filter_bar.category": "แถบตัวกรองด่วน", - "notifications.column_settings.filter_bar.show": "แสดง", + "notifications.column_settings.filter_bar.show_bar": "แสดงแถบตัวกรอง", "notifications.column_settings.follow": "ผู้ติดตามใหม่:", "notifications.column_settings.follow_request": "คำขอติดตามใหม่:", "notifications.column_settings.mention": "การกล่าวถึง:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "แสดงในคอลัมน์", "notifications.column_settings.sound": "เล่นเสียง", "notifications.column_settings.status": "โพสต์ใหม่:", - "notifications.column_settings.unread_markers.category": "เครื่องหมายการแจ้งเตือนที่ยังไม่ได้อ่าน", + "notifications.column_settings.unread_notifications.category": "การแจ้งเตือนที่ยังไม่ได้อ่าน", + "notifications.column_settings.unread_notifications.highlight": "เน้นการแจ้งเตือนที่ยังไม่ได้อ่าน", "notifications.filter.all": "ทั้งหมด", "notifications.filter.boosts": "การดัน", "notifications.filter.favourites": "รายการโปรด", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, other {# การลงคะแนน}}", "poll.vote": "ลงคะแนน", "poll.voted": "คุณได้ลงคะแนนให้กับคำตอบนี้", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, other {# การลงคะแนน}}", "poll_button.add_poll": "เพิ่มการสำรวจความคิดเห็น", "poll_button.remove_poll": "เอาการสำรวจความคิดเห็นออก", "privacy.change": "เปลี่ยนความเป็นส่วนตัวของโพสต์", @@ -362,12 +365,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.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.forward": "ส่งต่อไปยัง {target}", "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?", "report.hint": "จะส่งรายงานไปยังผู้ควบคุมเซิร์ฟเวอร์ของคุณ คุณสามารถให้คำอธิบายเหตุผลที่คุณรายงานบัญชีนี้ได้ด้านล่าง:", @@ -396,9 +407,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.embed": "ฝัง", "status.favourite": "ชื่นชอบ", "status.filtered": "กรองอยู่", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "โหลดเพิ่มเติม", "status.media_hidden": "ซ่อนสื่ออยู่", "status.mention": "กล่าวถึง @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "อธิบายสำหรับผู้สูญเสียการได้ยินหรือบกพร่องทางการมองเห็น", "upload_modal.analyzing_picture": "กำลังวิเคราะห์รูปภาพ…", "upload_modal.apply": "นำไปใช้", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "กำลังนำไปใช้…", "upload_modal.choose_image": "เลือกภาพ", "upload_modal.description_placeholder": "สุนัขจิ้งจอกสีน้ำตาลที่ว่องไวกระโดดข้ามสุนัขขี้เกียจ", "upload_modal.detect_text": "ตรวจหาข้อความจากรูปภาพ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 2ae8a908a..a8c602caa 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Ortalama", + "admin.dashboard.retention.cohort": "Kayıt ayı", + "admin.dashboard.retention.cohort_size": "Yeni kullanıcılar", "alert.rate_limited.message": "Lütfen {retry_time, time, medium} süresinden sonra tekrar deneyin.", "alert.rate_limited.title": "Oran sınırlıdır", "alert.unexpected.message": "Beklenmedik bir hata oluştu.", "alert.unexpected.title": "Hay aksi!", "announcement.announcement": "Duyuru", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(işlenmemiş)", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", "bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.", @@ -104,6 +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.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ş}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Bu tootu silmek istediğinden emin misin?", "confirmations.delete_list.confirm": "Sil", "confirmations.delete_list.message": "Bu listeyi kalıcı olarak silmek istediğinden emin misin?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Vazgeç", + "confirmations.discard_edit_media.message": "Ortam açıklaması veya ön izlemede kaydedilmemiş değişiklikleriniz var, yine de vazgeçmek istiyor musunuz?", "confirmations.domain_block.confirm": "Alanın tamamını engelle", "confirmations.domain_block.message": "{domain} alanının tamamını engellemek istediğinden gerçekten emin misin? Genellikle hedeflenen birkaç engelleme veya sessize alma yeterlidir ve tercih edilir. Bu alan adından gelen içeriği herhangi bir genel zaman çizelgesinde veya bildirimlerinde görmezsin. Bu alan adındaki takipçilerin kaldırılır.", "confirmations.logout.confirm": "Oturumu kapat", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Beğeniler:", "notifications.column_settings.filter_bar.advanced": "Tüm kategorileri görüntüle", "notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu", - "notifications.column_settings.filter_bar.show": "Göster", + "notifications.column_settings.filter_bar.show_bar": "Süzme çubuğunu göster", "notifications.column_settings.follow": "Yeni takipçiler:", "notifications.column_settings.follow_request": "Yeni takip istekleri:", "notifications.column_settings.mention": "Bahsetmeler:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Sütunda göster", "notifications.column_settings.sound": "Ses çal", "notifications.column_settings.status": "Yeni gönderiler:", - "notifications.column_settings.unread_markers.category": "Okunmamış bildirim işaretleri", + "notifications.column_settings.unread_notifications.category": "Okunmamış bildirimler", + "notifications.column_settings.unread_notifications.highlight": "Okunmamış bildirimleri öne çıkar", "notifications.filter.all": "Tümü", "notifications.filter.boosts": "Boostlar", "notifications.filter.favourites": "Beğeniler", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# oy} other {# oy}}", "poll.vote": "Oy ver", "poll.voted": "Bu cevap için oy kullandınız", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# oy} other {# oy}}", "poll_button.add_poll": "Bir anket ekleyin", "poll_button.remove_poll": "Anketi kaldır", "privacy.change": "Gönderi gizliliğini değiştir", @@ -362,12 +365,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.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.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:", @@ -396,9 +407,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.embed": "Gömülü", "status.favourite": "Beğen", "status.filtered": "Filtrelenmiş", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Daha fazlasını yükle", "status.media_hidden": "Medya gizli", "status.mention": "@{name} kişisinden bahset", @@ -462,7 +478,7 @@ "upload_form.video_description": "İşitme kaybı veya görme engeli olan kişiler için tarif edin", "upload_modal.analyzing_picture": "Resim analiz ediliyor…", "upload_modal.apply": "Uygula", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Uygulanıyor…", "upload_modal.choose_image": "Resim seç", "upload_modal.description_placeholder": "Pijamalı hasta yağız şoföre çabucak güvendi", "upload_modal.detect_text": "Resimdeki metni algıla", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 456c5f72d..e66a7d4e1 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Күрсәтү", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "Бөтенесе", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Йөкләү...", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "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.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.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Бетерү", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index eca4765c4..2675da68c 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 808701957..5adbd832b 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -47,16 +47,17 @@ "account.unmute": "Зняти глушення з @{name}", "account.unmute_notifications": "Показувати сповіщення від @{name}", "account_note.placeholder": "Коментарі відсутні", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Середнє", + "admin.dashboard.retention.cohort": "Місяць реєстрації", + "admin.dashboard.retention.cohort_size": "Нові користувачі", "alert.rate_limited.message": "Спробуйте ще раз через {retry_time, time, medium}.", "alert.rate_limited.title": "Швидкість обмежена", "alert.unexpected.message": "Трапилась неочікувана помилка.", "alert.unexpected.title": "Ой!", "announcement.announcement": "Оголошення", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(не оброблено)", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", "bundle_column_error.body": "Щось пішло не так під час завантаження компоненту.", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді", "compose_form.publish": "Дмухнути", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "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 {Медіа не позначені делікатними}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?", "confirmations.delete_list.confirm": "Видалити", "confirmations.delete_list.message": "Ви впевнені, що хочете видалити цей список назавжди?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Відкинути", + "confirmations.discard_edit_media.message": "У вас є незбережені зміни в описі медіа або попереднього перегляду, все одно відкинути їх?", "confirmations.domain_block.confirm": "Сховати весь домен", "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", "confirmations.logout.confirm": "Вийти", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Вподобане:", "notifications.column_settings.filter_bar.advanced": "Показати всі категорії", "notifications.column_settings.filter_bar.category": "Панель швидкого фільтру", - "notifications.column_settings.filter_bar.show": "Показати", + "notifications.column_settings.filter_bar.show_bar": "Показати панель фільтра", "notifications.column_settings.follow": "Нові підписники:", "notifications.column_settings.follow_request": "Нові запити на підписку:", "notifications.column_settings.mention": "Згадки:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Показати в колонці", "notifications.column_settings.sound": "Відтворювати звуки", "notifications.column_settings.status": "Нові дмухи:", - "notifications.column_settings.unread_markers.category": "Мітки непрочитаних сповіщень", + "notifications.column_settings.unread_notifications.category": "Непрочитані сповіщення", + "notifications.column_settings.unread_notifications.highlight": "Виділити непрочитані сповіщення", "notifications.filter.all": "Усі", "notifications.filter.boosts": "Передмухи", "notifications.filter.favourites": "Улюблені", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# голос} few {# голоси} many {# голосів} other {# голосів}}", "poll.vote": "Проголосувати", "poll.voted": "Ви голосували за цю відповідь", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# голос} few {# голоси} many {# голосів} other {# голоса}}", "poll_button.add_poll": "Додати опитування", "poll_button.remove_poll": "Видалити опитування", "privacy.change": "Змінити видимість допису", @@ -362,12 +365,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.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.forward": "Надіслати до {target}", "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на акаунт нижче:", @@ -396,9 +407,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.embed": "Вбудувати", "status.favourite": "Подобається", "status.filtered": "Відфільтровано", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Завантажити більше", "status.media_hidden": "Медіа приховано", "status.mention": "Згадати @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Опишіть для людей із вадами слуху або зору", "upload_modal.analyzing_picture": "Аналізуємо малюнок…", "upload_modal.apply": "Застосувати", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Застосування…", "upload_modal.choose_image": "Вибрати зображення", "upload_modal.description_placeholder": "Щурячий бугай із їжаком-харцизом в'ючись підписали ґешефт у єнах", "upload_modal.detect_text": "Виявити текст на малюнку", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 55f6856d2..e029f074c 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -47,7 +47,8 @@ "account.unmute": "@{name} کو با آواز کریں", "account.unmute_notifications": "@{name} سے اطلاعات کو با آواز کریں", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "کسی ایک انتخاب کے لیے پول تبدیل کریں", "compose_form.publish": "ٹوٹ", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "وسائل کو حساس نشاندہ کریں", "compose_form.sensitive.marked": "وسائل حساس نشاندہ ہے", "compose_form.sensitive.unmarked": "{count, plural, one {میڈیا کو حساس کے طور پر نشان زد نہیں کیا گیا ہے} other {میڈیا کو حساس کے طور پر نشان زد نہیں کیا گیا ہے}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "پسندیدہ:", "notifications.column_settings.filter_bar.advanced": "تمام زمرے دکھائیں", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", "reply_indicator.cancel": "Cancel", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 9922707be..f5620638a 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -47,16 +47,17 @@ "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.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Trung bình", + "admin.dashboard.retention.cohort": "Đăng ký tháng", + "admin.dashboard.retention.cohort_size": "Người dùng mới", "alert.rate_limited.message": "Vui lòng thử lại sau {retry_time, time, medium}.", "alert.rate_limited.title": "Vượt giới hạn", "alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.", "alert.unexpected.title": "Ốiii!", "announcement.announcement": "Thông báo chung", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(chưa xử lí)", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để chia sẻ nhanh hơn", "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", @@ -104,6 +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.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}}", @@ -118,8 +120,8 @@ "confirmations.delete.message": "Bạn \bthật sự muốn xóa tút này?", "confirmations.delete_list.confirm": "Xóa bỏ", "confirmations.delete_list.message": "Bạn thật sự muốn xóa vĩnh viễn danh sách này?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Bỏ qua", + "confirmations.discard_edit_media.message": "Bạn chưa lưu thay đổi đối với phần mô tả hoặc bản xem trước của media, vẫn bỏ luôn?", "confirmations.domain_block.confirm": "Ẩn toàn bộ máy chủ", "confirmations.domain_block.message": "Bạn thật sự muốn ẩn toàn bộ nội dung từ {domain}? Sẽ hợp lý hơn nếu bạn chỉ chặn hoặc ẩn một vài tài khoản cụ thể. Ẩn toàn bộ nội dung từ máy chủ sẽ khiến bạn không còn thấy nội dung từ máy chủ đó ở bất kỳ nơi nào, kể cả thông báo. Người quan tâm bạn từ máy chủ đó cũng sẽ bị xóa luôn.", "confirmations.logout.confirm": "Đăng xuất", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Lượt thích:", "notifications.column_settings.filter_bar.advanced": "Toàn bộ", "notifications.column_settings.filter_bar.category": "Phân loại", - "notifications.column_settings.filter_bar.show": "Lượt nhắc", + "notifications.column_settings.filter_bar.show_bar": "Hiện bộ lọc", "notifications.column_settings.follow": "Người theo dõi mới:", "notifications.column_settings.follow_request": "Yêu cầu theo dõi mới:", "notifications.column_settings.mention": "Lượt nhắc đến:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Thông báo trên thanh menu", "notifications.column_settings.sound": "Kèm theo tiếng \"bíp\"", "notifications.column_settings.status": "Tút mới:", - "notifications.column_settings.unread_markers.category": "Đánh dấu những thông báo chưa đọc", + "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.filter.all": "Toàn bộ", "notifications.filter.boosts": "Chia sẻ", "notifications.filter.favourites": "Thích", @@ -346,11 +349,11 @@ "poll.total_votes": "{count, plural, other {# người bình chọn}}", "poll.vote": "Bình chọn", "poll.voted": "Bạn đã bình chọn rồi", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, other {# lượt bình chọn}}", "poll_button.add_poll": "Tạo bình chọn", "poll_button.remove_poll": "Hủy cuộc bình chọn", "privacy.change": "Thay đổi quyền riêng tư", - "privacy.direct.long": "Gửi trực tiếp cho người được nhắc đến", + "privacy.direct.long": "Chỉ người được nhắc đến mới thấy", "privacy.direct.short": "Tin nhắn", "privacy.private.long": "Dành riêng cho người theo dõi", "privacy.private.short": "Riêng tư", @@ -362,12 +365,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.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.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", "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:", @@ -396,9 +407,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.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.load_more": "Xem thêm", "status.media_hidden": "Đã ẩn", "status.mention": "Nhắc đến @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "Mô tả cho người mất thị lực hoặc không thể nghe", "upload_modal.analyzing_picture": "Phân tích hình ảnh", "upload_modal.apply": "Áp dụng", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Đang áp dụng…", "upload_modal.choose_image": "Chọn ảnh", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.detect_text": "Trích văn bản từ trong ảnh", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 22f6823fe..bc9b8bc83 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -47,7 +47,8 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account_note.placeholder": "Click to add a note", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "ⵖⵔ ⵉⵎⵙⵍⵉ", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_markers.category": "Unread notification markers", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "ⴰⴽⴽⵯ", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -362,12 +365,20 @@ "regeneration_indicator.label": "ⴰⵣⴷⴰⵎ…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "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.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.forward": "ⵙⵙⵉⴼⴹ ⵉ {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", @@ -396,9 +407,14 @@ "status.delete": "ⴽⴽⵙ", "status.detailed_status": "Detailed conversation view", "status.direct": "ⵜⵓⵣⵉⵏⵜ ⵜⵓⵙⵔⵉⴷⵜ ⵉ @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "ⵙⵙⵉⵍⵉ ⵓⴳⴳⴰⵔ", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 286d54fb8..cb971126e 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -47,16 +47,17 @@ "account.unmute": "不再隐藏 @{name}", "account.unmute_notifications": "不再隐藏来自 @{name} 的通知", "account_note.placeholder": "点击添加备注", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "平均", + "admin.dashboard.retention.cohort": "注册月", + "admin.dashboard.retention.cohort_size": "新用户", "alert.rate_limited.message": "请在{retry_time, time, medium}后重试。", "alert.rate_limited.title": "频率受限", "alert.unexpected.message": "发生了意外错误。", "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(未处理)", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", "bundle_column_error.body": "载入这个组件时发生了错误。", @@ -83,9 +84,9 @@ "column_header.hide_settings": "隐藏设置", "column_header.moveLeft_settings": "将此栏左移", "column_header.moveRight_settings": "将此栏右移", - "column_header.pin": "固定", + "column_header.pin": "置顶", "column_header.show_settings": "显示设置", - "column_header.unpin": "取消固定", + "column_header.unpin": "取消置顶", "column_subheading.settings": "设置", "community.column_settings.local_only": "只显示本站", "community.column_settings.media_only": "仅媒体", @@ -96,7 +97,7 @@ "compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", "compose_form.lock_disclaimer.lock": "开启保护", "compose_form.placeholder": "在想啥?", - "compose_form.poll.add_option": "添加一个选项", + "compose_form.poll.add_option": "添加选项", "compose_form.poll.duration": "投票持续时间", "compose_form.poll.option_placeholder": "选项 {number}", "compose_form.poll.remove_option": "移除这个选项", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "将投票改为单选", "compose_form.publish": "嘟嘟", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "标记媒体为敏感内容", "compose_form.sensitive.marked": "媒体已被标记为敏感内容", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", @@ -118,8 +120,8 @@ "confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete_list.confirm": "删除", "confirmations.delete_list.message": "你确定要永久删除这个列表吗?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "丢弃", + "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?", "confirmations.domain_block.confirm": "隐藏整个网站的内容", "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。", "confirmations.logout.confirm": "登出", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "当你的嘟文被喜欢时:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", "notifications.column_settings.filter_bar.category": "快速过滤栏", - "notifications.column_settings.filter_bar.show": "显示", + "notifications.column_settings.filter_bar.show_bar": "显示过滤栏", "notifications.column_settings.follow": "当有人关注你时:", "notifications.column_settings.follow_request": "新的关注请求:", "notifications.column_settings.mention": "当有人在嘟文中提及你时:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "在通知栏显示", "notifications.column_settings.sound": "播放音效", "notifications.column_settings.status": "新嘟文:", - "notifications.column_settings.unread_markers.category": "未读通知标记", + "notifications.column_settings.unread_notifications.category": "未读通知", + "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", "notifications.filter.all": "全部", "notifications.filter.boosts": "转嘟", "notifications.filter.favourites": "喜欢", @@ -346,7 +349,7 @@ "poll.total_votes": "{count} 票", "poll.vote": "投票", "poll.voted": "你已经对这个答案投过票了", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# 票} other {# 票}}", "poll_button.add_poll": "发起投票", "poll_button.remove_poll": "移除投票", "privacy.change": "设置嘟文的可见范围", @@ -362,12 +365,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.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.forward": "转发举报至 {target}", "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?", "report.hint": "举报将会发送给你所在服务器的监察员。你可以在下面填写举报该用户的理由:", @@ -396,9 +407,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.embed": "嵌入", "status.favourite": "喜欢", "status.filtered": "已过滤", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "加载更多", "status.media_hidden": "已隐藏的媒体内容", "status.mention": "提及 @{name}", @@ -422,7 +438,7 @@ "status.share": "分享", "status.show_less": "隐藏内容", "status.show_less_all": "隐藏所有内容", - "status.show_more": "显示内容", + "status.show_more": "显示更多", "status.show_more_all": "显示所有内容", "status.show_thread": "显示全部对话", "status.uncached_media_warning": "暂不可用", @@ -462,7 +478,7 @@ "upload_form.video_description": "为听障人士和视障人士添加文字描述", "upload_modal.analyzing_picture": "分析图片…", "upload_modal.apply": "应用", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "正在应用…", "upload_modal.choose_image": "选择图像", "upload_modal.description_placeholder": "天地玄黄 宇宙洪荒 日月盈仄 辰宿列张", "upload_modal.detect_text": "从图片中检测文本", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index e93c81f94..bd6666b15 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -47,7 +47,8 @@ "account.unmute": "取消 @{name} 的靜音", "account.unmute_notifications": "取消來自 @{name} 通知的靜音", "account_note.placeholder": "按此添加備注", - "admin.dashboard.retention": "Retention", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "New users", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "變更投票為限定單一選項", "compose_form.publish": "發文", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "標記媒體為敏感內容", "compose_form.sensitive.marked": "媒體被標示為敏感", "compose_form.sensitive.unmarked": "媒體沒有被標示為敏感", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "你最愛的文章:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", "notifications.column_settings.filter_bar.category": "快速過濾欄", - "notifications.column_settings.filter_bar.show": "顯示", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "關注你:", "notifications.column_settings.follow_request": "新的關注請求:", "notifications.column_settings.mention": "提及你:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "在通知欄顯示", "notifications.column_settings.sound": "播放音效", "notifications.column_settings.status": "新的文章", - "notifications.column_settings.unread_markers.category": "未讀通知標記", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.filter.all": "全部", "notifications.filter.boosts": "轉推", "notifications.filter.favourites": "最愛", @@ -362,12 +365,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.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.forward": "轉寄到 {target}", "report.forward_hint": "這個帳戶屬於其他服務站。要向該服務站發送匿名的舉報訊息嗎?", "report.hint": "這訊息會發送到你服務站的管理員。你可以提供舉報這個帳戶的理由:", @@ -396,9 +407,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.embed": "嵌入", "status.favourite": "最愛", "status.filtered": "已過濾", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "載入更多", "status.media_hidden": "隱藏媒體內容", "status.mention": "提及 @{name}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 7fdd156ea..60f4bc2f4 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -47,16 +47,17 @@ "account.unmute": "取消靜音 @{name}", "account.unmute_notifications": "重新接收來自 @{name} 的通知", "account_note.placeholder": "按此添加備注", - "admin.dashboard.retention": "Retention", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "平均", + "admin.dashboard.retention.cohort": "註冊月份", + "admin.dashboard.retention.cohort_size": "新使用者", "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試", "alert.rate_limited.title": "已限速", "alert.unexpected.message": "發生了非預期的錯誤。", "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(未經處理)", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", "bundle_column_error.body": "載入此元件時發生錯誤。", @@ -104,6 +105,7 @@ "compose_form.poll.switch_to_single": "變更投票為允許單一選項", "compose_form.publish": "嘟出去", "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "標記媒體為敏感內容", "compose_form.sensitive.marked": "此媒體被標記為敏感內容", "compose_form.sensitive.unmarked": "此媒體未被標記為敏感內容", @@ -118,8 +120,8 @@ "confirmations.delete.message": "您確定要刪除這則嘟文?", "confirmations.delete_list.confirm": "刪除", "confirmations.delete_list.message": "確定永久刪除此名單?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "捨棄", + "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?", "confirmations.domain_block.confirm": "隱藏整個域名", "confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳帳戶能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。", "confirmations.logout.confirm": "登出", @@ -312,7 +314,7 @@ "notifications.column_settings.favourite": "最愛:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", "notifications.column_settings.filter_bar.category": "快速過濾欄", - "notifications.column_settings.filter_bar.show": "顯示", + "notifications.column_settings.filter_bar.show_bar": "顯示過濾器列", "notifications.column_settings.follow": "新的跟隨者:", "notifications.column_settings.follow_request": "新的跟隨請求:", "notifications.column_settings.mention": "提及:", @@ -322,7 +324,8 @@ "notifications.column_settings.show": "在欄位中顯示", "notifications.column_settings.sound": "播放聲音", "notifications.column_settings.status": "新嘟文:", - "notifications.column_settings.unread_markers.category": "未讀通知標記", + "notifications.column_settings.unread_notifications.category": "未讀通知", + "notifications.column_settings.unread_notifications.highlight": "突顯未讀通知", "notifications.filter.all": "全部", "notifications.filter.boosts": "轉嘟", "notifications.filter.favourites": "最愛", @@ -346,7 +349,7 @@ "poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}", "poll.vote": "投票", "poll.voted": "您已對此問題投票", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# 張票} other {# 張票}}", "poll_button.add_poll": "建立投票", "poll_button.remove_poll": "移除投票", "privacy.change": "調整嘟文隱私狀態", @@ -362,12 +365,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.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.forward": "轉寄到 {target}", "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?", "report.hint": "這項訊息會發送到您伺服器的管理員。您可以提供檢舉這個帳戶的理由:", @@ -396,9 +407,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.embed": "內嵌", "status.favourite": "最愛", "status.filtered": "已過濾", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", "status.load_more": "載入更多", "status.media_hidden": "隱藏媒體內容", "status.mention": "提及 @{name}", @@ -462,7 +478,7 @@ "upload_form.video_description": "描述給聽障或視障人士", "upload_modal.analyzing_picture": "正在分析圖片…", "upload_modal.apply": "套用", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "正在套用⋯⋯", "upload_modal.choose_image": "選擇圖片", "upload_modal.description_placeholder": "我能吞下玻璃而不傷身體", "upload_modal.detect_text": "從圖片中偵測文字", diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index 06a908e9d..ea882a71f 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -43,6 +43,7 @@ import { INIT_MEDIA_EDIT_MODAL, COMPOSE_CHANGE_MEDIA_DESCRIPTION, COMPOSE_CHANGE_MEDIA_FOCUS, + COMPOSE_SET_STATUS, } from '../actions/compose'; import { TIMELINE_DELETE } from '../actions/timelines'; import { STORE_HYDRATE } from '../actions/store'; @@ -58,6 +59,7 @@ const initialState = ImmutableMap({ spoiler: false, spoiler_text: '', privacy: null, + id: null, text: '', focusDate: null, caretPosition: null, @@ -107,6 +109,7 @@ function statusToTextMentions(state, status) { function clearAll(state) { return state.withMutations(map => { + map.set('id', null); map.set('text', ''); map.set('spoiler', false); map.set('spoiler_text', ''); @@ -313,6 +316,7 @@ export default function compose(state = initialState, action) { return state.set('is_composing', action.value); case COMPOSE_REPLY: return state.withMutations(map => { + map.set('id', null); map.set('in_reply_to', action.status.get('id')); map.set('text', statusToTextMentions(state, action.status)); map.set('privacy', privacyPreference(action.status.get('visibility'), state.get('default_privacy'))); @@ -329,21 +333,12 @@ export default function compose(state = initialState, action) { map.set('spoiler_text', ''); } }); - case COMPOSE_REPLY_CANCEL: - case COMPOSE_RESET: - return state.withMutations(map => { - map.set('in_reply_to', null); - map.set('text', ''); - map.set('spoiler', false); - map.set('spoiler_text', ''); - map.set('privacy', state.get('default_privacy')); - map.set('poll', null); - map.set('idempotencyKey', uuid()); - }); case COMPOSE_SUBMIT_REQUEST: return state.set('is_submitting', true); case COMPOSE_UPLOAD_CHANGE_REQUEST: return state.set('is_changing_upload', true); + case COMPOSE_REPLY_CANCEL: + case COMPOSE_RESET: case COMPOSE_SUBMIT_SUCCESS: return clearAll(state); case COMPOSE_SUBMIT_FAIL: @@ -462,6 +457,34 @@ export default function compose(state = initialState, action) { })); } }); + case COMPOSE_SET_STATUS: + return state.withMutations(map => { + map.set('id', action.status.get('id')); + map.set('text', action.text); + map.set('in_reply_to', action.status.get('in_reply_to_id')); + map.set('privacy', action.status.get('visibility')); + map.set('media_attachments', action.status.get('media_attachments')); + map.set('focusDate', new Date()); + map.set('caretPosition', null); + map.set('idempotencyKey', uuid()); + map.set('sensitive', action.status.get('sensitive')); + + if (action.spoiler_text.length > 0) { + map.set('spoiler', true); + map.set('spoiler_text', action.spoiler_text); + } else { + map.set('spoiler', false); + map.set('spoiler_text', ''); + } + + if (action.status.get('poll')) { + map.set('poll', ImmutableMap({ + options: action.status.getIn(['poll', 'options']).map(x => x.get('title')), + multiple: action.status.getIn(['poll', 'multiple']), + expires_in: expiresInFromExpiresAt(action.status.getIn(['poll', 'expires_at'])), + })); + } + }); case COMPOSE_POLL_ADD: return state.set('poll', initialPoll); case COMPOSE_POLL_REMOVE: diff --git a/app/javascript/mastodon/reducers/history.js b/app/javascript/mastodon/reducers/history.js new file mode 100644 index 000000000..00b01aa6e --- /dev/null +++ b/app/javascript/mastodon/reducers/history.js @@ -0,0 +1,28 @@ +import { HISTORY_FETCH_REQUEST, HISTORY_FETCH_SUCCESS, HISTORY_FETCH_FAIL } from 'mastodon/actions/history'; +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; + +const initialHistory = ImmutableMap({ + loading: false, + items: ImmutableList(), +}); + +const initialState = ImmutableMap(); + +export default function history(state = initialState, action) { + switch(action.type) { + case HISTORY_FETCH_REQUEST: + return state.update(action.statusId, initialHistory, history => history.withMutations(map => { + map.set('loading', true); + map.set('items', ImmutableList()); + })); + case HISTORY_FETCH_SUCCESS: + return state.update(action.statusId, initialHistory, history => history.withMutations(map => { + map.set('loading', false); + map.set('items', fromJS(action.history.map((x, i) => ({ ...x, account: x.account.id, original: i === 0 })).reverse())); + })); + case HISTORY_FETCH_FAIL: + return state.update(action.statusId, initialHistory, history => history.set('loading', false)); + default: + return state; + } +} diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js index 53e2dd681..af2ef595e 100644 --- a/app/javascript/mastodon/reducers/index.js +++ b/app/javascript/mastodon/reducers/index.js @@ -38,6 +38,7 @@ import announcements from './announcements'; import markers from './markers'; import picture_in_picture from './picture_in_picture'; import accounts_map from './accounts_map'; +import history from './history'; const reducers = { announcements, @@ -79,6 +80,7 @@ const reducers = { missed_updates, markers, picture_in_picture, + history, }; export default combineReducers(reducers); diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index 2a89919e1..5146abe98 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -36,6 +36,7 @@ const initialState = ImmutableMap({ mention: false, poll: false, status: false, + update: false, }), quickFilter: ImmutableMap({ @@ -55,6 +56,7 @@ const initialState = ImmutableMap({ mention: true, poll: true, status: true, + update: true, }), sounds: ImmutableMap({ @@ -65,6 +67,7 @@ const initialState = ImmutableMap({ mention: true, poll: true, status: true, + update: true, }), }), diff --git a/app/javascript/mastodon/service_worker/web_push_locales.js b/app/javascript/mastodon/service_worker/web_push_locales.js index 1265f3cfa..807a1bcb9 100644 --- a/app/javascript/mastodon/service_worker/web_push_locales.js +++ b/app/javascript/mastodon/service_worker/web_push_locales.js @@ -20,6 +20,8 @@ filenames.forEach(filename => { 'notification.mention': full['notification.mention'] || '', 'notification.reblog': full['notification.reblog'] || '', 'notification.poll': full['notification.poll'] || '', + 'notification.status': full['notification.status'] || '', + 'notification.update': full['notification.update'] || '', 'status.show_more': full['status.show_more'] || '', 'status.reblog': full['status.reblog'] || '', diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js index 926c5c4d7..48a2be7e7 100644 --- a/app/javascript/mastodon/service_worker/web_push_notifications.js +++ b/app/javascript/mastodon/service_worker/web_push_notifications.js @@ -102,7 +102,7 @@ const handlePush = (event) => { options.image = undefined; options.actions = [actionExpand(preferred_locale)]; - } else if (notification.type === 'mention') { + } else if (['mention', 'status'].includes(notification.type)) { options.actions = [actionReblog(preferred_locale), actionFavourite(preferred_locale)]; } diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 92061585a..66ce92ce2 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1203,6 +1203,10 @@ a.sparkline { } } } + + @media screen and (max-width: 930px) { + grid-template-columns: minmax(0, 1fr); + } } .account-card { @@ -1410,8 +1414,9 @@ a.sparkline { } &__button { + box-sizing: border-box; flex: 0 0 auto; - width: 100px; + width: 200px; padding: 15px; padding-right: 0; @@ -1427,4 +1432,38 @@ a.sparkline { color: $dark-text-color; } } + + @media screen and (max-width: 800px) { + border: 0; + + &__item { + flex-direction: column; + border: 0; + + &__button { + width: 100%; + padding: 15px 0; + } + + &__description { + padding: 0; + padding-bottom: 15px; + } + } + } +} + +.section-skip-link { + float: right; + + a { + color: $ui-highlight-color; + 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 919480e7e..5304bec34 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1889,8 +1889,47 @@ a.account__display-name { box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); z-index: 9999; - ul { - list-style: none; + &__text-button { + display: inline; + color: inherit; + background: transparent; + border: 0; + margin: 0; + padding: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + + &:focus { + outline: 1px dotted; + } + } + + &__container { + &__header { + border-bottom: 1px solid darken($ui-secondary-color, 8%); + padding: 4px 14px; + padding-bottom: 8px; + font-size: 13px; + line-height: 18px; + color: $inverted-text-color; + } + + &__list { + list-style: none; + + &--scrollable { + max-height: 300px; + overflow-y: scroll; + } + } + + &--loading { + display: flex; + align-items: center; + justify-content: center; + padding: 30px 45px; + } } &.left { @@ -1946,18 +1985,29 @@ a.account__display-name { } .dropdown-menu__item { - a { - font-size: 13px; - line-height: 18px; + font-size: 13px; + line-height: 18px; + display: block; + color: $inverted-text-color; + + a, + button { + font-family: inherit; + font-size: inherit; + line-height: inherit; display: block; + width: 100%; padding: 4px 14px; + border: 0; + margin: 0; box-sizing: border-box; text-decoration: none; background: $ui-secondary-color; - color: $inverted-text-color; + color: inherit; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + text-align: inherit; &:focus, &:hover, @@ -1969,6 +2019,42 @@ a.account__display-name { } } +.dropdown-menu__item--text { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 4px 14px; +} + +.dropdown-menu__item.edited-timestamp__history__item { + border-bottom: 1px solid darken($ui-secondary-color, 8%); + + &:last-child { + border-bottom: 0; + } + + &.dropdown-menu__item--text, + a, + button { + padding: 8px 14px; + } +} + +.inline-account { + display: inline-flex; + align-items: center; + vertical-align: top; + + .account__avatar { + margin-right: 5px; + border-radius: 50%; + } + + strong { + font-weight: 600; + } +} + .dropdown--active .dropdown__content { display: block; line-height: 18px; @@ -3631,36 +3717,48 @@ a.status-card.compact:hover { top: 50%; left: 50%; transform: translate(-50%, -50%); + display: flex; + align-items: center; + justify-content: center; +} - span { - display: block; - float: left; - transform: translateX(-50%); - margin: 82px 0 0 50%; - white-space: nowrap; +.circular-progress { + color: lighten($ui-base-color, 26%); + animation: 1.4s linear 0s infinite normal none running simple-rotate; + + circle { + stroke: currentColor; + stroke-dasharray: 80px, 200px; + stroke-dashoffset: 0; + animation: circular-progress 1.4s ease-in-out infinite; } } -.loading-indicator__figure { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 42px; - height: 42px; - box-sizing: border-box; - background-color: transparent; - border: 0 solid lighten($ui-base-color, 26%); - border-width: 6px; - border-radius: 50%; -} +@keyframes circular-progress { + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } -.no-reduce-motion .loading-indicator span { - animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.61, 0.355, 1); + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } + + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } } -.no-reduce-motion .loading-indicator__figure { - animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.61, 0.355, 1); +@keyframes simple-rotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } } @keyframes spring-rotate-in { @@ -3707,40 +3805,6 @@ a.status-card.compact:hover { } } -@keyframes loader-figure { - 0% { - width: 0; - height: 0; - background-color: lighten($ui-base-color, 26%); - } - - 29% { - background-color: lighten($ui-base-color, 26%); - } - - 30% { - width: 42px; - height: 42px; - background-color: transparent; - border-width: 21px; - opacity: 1; - } - - 100% { - width: 42px; - height: 42px; - border-width: 0; - opacity: 0; - background-color: transparent; - } -} - -@keyframes loader-label { - 0% { opacity: 0.25; } - 30% { opacity: 1; } - 100% { opacity: 0.25; } -} - .video-error-cover { align-items: center; background: $base-overlay-background; @@ -4940,7 +5004,8 @@ a.status-card.compact:hover { .report-modal, .actions-modal, .mute-modal, -.block-modal { +.block-modal, +.compare-history-modal { background: lighten($ui-secondary-color, 8%); color: $inverted-text-color; border-radius: 8px; @@ -5342,6 +5407,41 @@ a.status-card.compact:hover { } } +.compare-history-modal { + .report-modal__target { + border-bottom: 1px solid $ui-secondary-color; + } + + &__container { + padding: 30px; + pointer-events: all; + } + + .status__content { + color: $inverted-text-color; + font-size: 19px; + line-height: 24px; + + .emojione { + width: 24px; + height: 24px; + margin: -1px 0 0; + } + + a { + color: $highlight-text-color; + } + + hr { + height: 0.25rem; + padding: 0; + background-color: $ui-secondary-color; + border: 0; + margin: 20px 0; + } + } +} + .loading-bar { background-color: $highlight-text-color; height: 3px; diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index ad273c20b..cf31b6ff6 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -112,7 +112,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity url: @status_parser.url || @status_parser.uri, account: @account, text: converted_object_type? ? converted_text : (@status_parser.text || ''), - language: @status_parser.language || detected_language, + language: @status_parser.language, spoiler_text: converted_object_type? ? '' : (@status_parser.spoiler_text || ''), created_at: @status_parser.created_at, edited_at: @status_parser.edited_at, @@ -370,10 +370,6 @@ class ActivityPub::Activity::Create < ActivityPub::Activity Formatter.instance.linkify([@status_parser.title.presence, @status_parser.spoiler_text.presence, @status_parser.url || @status_parser.uri].compact.join("\n\n")) end - def detected_language - LanguageDetector.instance.detect(@status_parser.text, @account) if supported_object_type? - end - def unsupported_media_type?(mime_type) mime_type.present? && !MediaAttachment.supported_mime_types.include?(mime_type) end diff --git a/app/lib/admin/metrics/dimension/languages_dimension.rb b/app/lib/admin/metrics/dimension/languages_dimension.rb index a6aaf5d21..1cc5f4120 100644 --- a/app/lib/admin/metrics/dimension/languages_dimension.rb +++ b/app/lib/admin/metrics/dimension/languages_dimension.rb @@ -20,6 +20,6 @@ class Admin::Metrics::Dimension::LanguagesDimension < Admin::Metrics::Dimension: rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, @limit]]) - rows.map { |row| { key: row['locale'], human_key: human_locale(row['locale']), value: row['value'].to_s } } + rows.map { |row| { key: row['locale'], human_key: standard_locale_name(row['locale']), value: row['value'].to_s } } end end diff --git a/app/lib/admin/metrics/dimension/tag_languages_dimension.rb b/app/lib/admin/metrics/dimension/tag_languages_dimension.rb index 1cfa07478..afbc8cde8 100644 --- a/app/lib/admin/metrics/dimension/tag_languages_dimension.rb +++ b/app/lib/admin/metrics/dimension/tag_languages_dimension.rb @@ -25,7 +25,7 @@ class Admin::Metrics::Dimension::TagLanguagesDimension < Admin::Metrics::Dimensi rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, params[:id]], [nil, Mastodon::Snowflake.id_at(@start_at, with_random: false)], [nil, Mastodon::Snowflake.id_at(@end_at, with_random: false)], [nil, @limit]]) - rows.map { |row| { key: row['language'], human_key: human_locale(row['language']), value: row['value'].to_s } } + rows.map { |row| { key: row['language'], human_key: standard_locale_name(row['language']), value: row['value'].to_s } } end private diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index f2c4beed5..94d149da3 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -32,7 +32,7 @@ class Formatter include ActionView::Helpers::TextHelper def format(status, **options) - if status.reblog? + if status.respond_to?(:reblog?) && status.reblog? prepend_reblog = status.reblog.account.acct status = status.proper else @@ -53,7 +53,7 @@ class Formatter return html.html_safe # rubocop:disable Rails/OutputSafety end - linkable_accounts = status.active_mentions.map(&:account) + linkable_accounts = status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : [] linkable_accounts << status.account html = raw_content diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb deleted file mode 100644 index 40452eddc..000000000 --- a/app/lib/language_detector.rb +++ /dev/null @@ -1,101 +0,0 @@ -# frozen_string_literal: true - -class LanguageDetector - include Singleton - - WORDS_THRESHOLD = 4 - RELIABLE_CHARACTERS_RE = /[\p{Hebrew}\p{Arabic}\p{Syriac}\p{Thaana}\p{Nko}\p{Han}\p{Katakana}\p{Hiragana}\p{Hangul}\p{Thai}]+/m - - def initialize - @identifier = CLD3::NNetLanguageIdentifier.new(1, 2048) - end - - def detect(text, account) - input_text = prepare_text(text) - - return if input_text.blank? - - detect_language_code(input_text) || default_locale(account) - end - - def language_names - @language_names = CLD3::TaskContextParams::LANGUAGE_NAMES.map { |name| iso6391(name.to_s).to_sym }.uniq - end - - private - - def prepare_text(text) - simplify_text(text).strip - end - - def unreliable_input?(text) - !reliable_input?(text) - end - - def reliable_input?(text) - sufficient_text_length?(text) || language_specific_character_set?(text) - end - - def sufficient_text_length?(text) - text.split(/\s+/).size >= WORDS_THRESHOLD - end - - def language_specific_character_set?(text) - words = text.scan(RELIABLE_CHARACTERS_RE) - - if words.present? - words.reduce(0) { |acc, elem| acc + elem.size }.to_f / text.size > 0.3 - else - false - end - end - - def detect_language_code(text) - return if unreliable_input?(text) - - result = @identifier.find_language(text) - - iso6391(result.language.to_s).to_sym if result&.reliable? - end - - def iso6391(bcp47) - iso639 = bcp47.split('-').first - - # CLD3 returns grandfathered language code for Hebrew - return 'he' if iso639 == 'iw' - - ISO_639.find(iso639).alpha2 - end - - def simplify_text(text) - new_text = remove_html(text) - new_text.gsub!(FetchLinkCardService::URL_PATTERN, '\1') - new_text.gsub!(Account::MENTION_RE, '') - new_text.gsub!(Tag::HASHTAG_RE) { |string| string.gsub(/[#_]/, '#' => '', '_' => ' ').gsub(/[a-z][A-Z]|[a-zA-Z][\d]/) { |s| s.insert(1, ' ') }.downcase } - new_text.gsub!(/:#{CustomEmoji::SHORTCODE_RE_FRAGMENT}:/, '') - new_text.gsub!(/\s+/, ' ') - new_text - end - - def new_scrubber - scrubber = Rails::Html::PermitScrubber.new - scrubber.tags = %w(br p) - scrubber - end - - def scrubber - @scrubber ||= new_scrubber - end - - def remove_html(text) - text = Loofah.fragment(text).scrub!(scrubber).to_s - text.gsub!('<br>', "\n") - text.gsub!('</p><p>', "\n\n") - text.gsub!(/(^<p>|<\/p>$)/, '') - text - end - - def default_locale(account) - account.user_locale&.to_sym || I18n.default_locale if account.local? - end -end diff --git a/app/lib/link_details_extractor.rb b/app/lib/link_details_extractor.rb index 56ad0717b..fabbd244d 100644 --- a/app/lib/link_details_extractor.rb +++ b/app/lib/link_details_extractor.rb @@ -2,6 +2,20 @@ class LinkDetailsExtractor include ActionView::Helpers::TagHelper + include LanguagesHelper + + # Some publications wrap their JSON-LD data in their <script> tags + # in commented-out CDATA blocks, they need to be removed before + # attempting to parse JSON + CDATA_JUNK_PATTERN = %r{^[\s]*( + (/\*[\s]*<!\[CDATA\[[\s]*\*/) # Block comment style opening + | + (//[\s]*<!\[CDATA\[) # Single-line comment style opening + | + (/\*[\s]*\]\]>[\s]*\*/) # Block comment style closing + | + (//[\s]*\]\]>) # Single-line comment style closing + )[\s]*$}x class StructuredData SUPPORTED_TYPES = %w( @@ -61,6 +75,10 @@ class LinkDetailsExtractor publisher.dig('logo', 'url') end + def valid? + json.present? + end + private def author @@ -134,11 +152,11 @@ class LinkDetailsExtractor end def title - structured_data&.headline || opengraph_tag('og:title') || document.xpath('//title').map(&:content).first + html_entities.decode(structured_data&.headline || opengraph_tag('og:title') || document.xpath('//title').map(&:content).first) end def description - structured_data&.description || opengraph_tag('og:description') || meta_tag('description') + html_entities.decode(structured_data&.description || opengraph_tag('og:description') || meta_tag('description')) end def image @@ -146,11 +164,11 @@ class LinkDetailsExtractor end def canonical_url - valid_url_or_nil(opengraph_tag('og:url') || link_tag('canonical'), same_origin_only: true) || @original_url.to_s + valid_url_or_nil(link_tag('canonical') || opengraph_tag('og:url'), same_origin_only: true) || @original_url.to_s end def provider_name - structured_data&.publisher_name || opengraph_tag('og:site_name') + html_entities.decode(structured_data&.publisher_name || opengraph_tag('og:site_name')) end def provider_url @@ -158,7 +176,7 @@ class LinkDetailsExtractor end def author_name - structured_data&.author_name || opengraph_tag('og:author') || opengraph_tag('og:author:username') + html_entities.decode(structured_data&.author_name || opengraph_tag('og:author') || opengraph_tag('og:author:username')) end def author_url @@ -201,14 +219,6 @@ class LinkDetailsExtractor nil end - def valid_locale_or_nil(str) - return nil if str.blank? - - code, = str.split(/_-/) # Strip out the region from e.g. en_US or ja-JA - locale = ISO_639.find(code) - locale&.alpha2 - end - def link_tag(name) document.xpath("//link[@rel=\"#{name}\"]").map { |link| link['href'] }.first end @@ -223,10 +233,24 @@ class LinkDetailsExtractor def structured_data @structured_data ||= begin - json_ld = document.xpath('//script[@type="application/ld+json"]').map(&:content).first - json_ld.present? ? StructuredData.new(json_ld) : nil - rescue Oj::ParseError - nil + # Some publications have more than one JSON-LD definition on the page, + # and some of those definitions aren't valid JSON either, so we have + # to loop through here until we find something that is the right type + # and doesn't break + document.xpath('//script[@type="application/ld+json"]').filter_map do |element| + json_ld = element.content&.gsub(CDATA_JUNK_PATTERN, '') + + next if json_ld.blank? + + structured_data = StructuredData.new(html_entities.decode(json_ld)) + + next unless structured_data.valid? + + structured_data + rescue Oj::ParseError, EncodingError + Rails.logger.debug("Invalid JSON-LD in #{@original_url}") + next + end.first end end @@ -246,4 +270,8 @@ class LinkDetailsExtractor detector.strip_tags = true end end + + def html_entities + @html_entities ||= HTMLEntities.new + end end diff --git a/app/models/account_suggestions/global_source.rb b/app/models/account_suggestions/global_source.rb index ac764de50..7bca530d4 100644 --- a/app/models/account_suggestions/global_source.rb +++ b/app/models/account_suggestions/global_source.rb @@ -6,7 +6,7 @@ class AccountSuggestions::GlobalSource < AccountSuggestions::Source end def get(account, skip_account_ids: [], limit: 40) - account_ids = account_ids_for_locale(account.user_locale) - [account.id] - skip_account_ids + account_ids = account_ids_for_locale(I18n.locale.to_s.split(/[_-]/).first) - [account.id] - skip_account_ids as_ordered_suggestions( scope(account).where(id: account_ids), diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 85822214b..40f60f379 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -8,6 +8,12 @@ class Admin::StatusBatchAction attr_accessor :current_account, :type, :status_ids, :report_id + attr_reader :send_email_notification + + def send_email_notification=(value) + @send_email_notification = ActiveModel::Type::Boolean.new.cast(value) + end + def save! process_action! end @@ -55,7 +61,7 @@ class Admin::StatusBatchAction statuses.each { |status| Tombstone.find_or_create_by(uri: status.uri, account: status.account, by_moderator: true) } unless target_account.local? end - UserMailer.warning(target_account.user, @warning).deliver_later! if target_account.local? + UserMailer.warning(target_account.user, @warning).deliver_later! if warnable? RemovalWorker.push_bulk(status_ids) { |status_id| [status_id, { 'preserve' => target_account.local?, 'immediate' => !target_account.local? }] } end @@ -82,6 +88,10 @@ class Admin::StatusBatchAction !report.nil? end + def warnable? + send_email_notification && target_account.local? + end + def target_account @target_account ||= statuses.first.account end diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 14e6cabae..9eaacdc03 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -208,6 +208,10 @@ class MediaAttachment < ApplicationRecord file.blank? && remote_url.present? end + def significantly_changed? + description_previously_changed? || thumbnail_updated_at_previously_changed? || file_meta_previously_changed? + end + def larger_media_format? video? || gifv? || audio? end diff --git a/app/models/notification.rb b/app/models/notification.rb index 3bf9dd483..c14eb8a7e 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -35,6 +35,7 @@ class Notification < ApplicationRecord follow_request favourite poll + update ).freeze TARGET_STATUS_INCLUDES_BY_TYPE = { @@ -43,6 +44,7 @@ class Notification < ApplicationRecord mention: [mention: :status], favourite: [favourite: :status], poll: [poll: :status], + update: :status, }.freeze belongs_to :account, optional: true @@ -76,7 +78,7 @@ class Notification < ApplicationRecord def target_status case type - when :status + when :status, :update status when :reblog status&.reblog @@ -110,7 +112,7 @@ class Notification < ApplicationRecord cached_status = cached_statuses_by_id[notification.target_status.id] case notification.type - when :status + when :status, :update notification.status = cached_status when :reblog notification.status.reblog = cached_status diff --git a/app/models/poll.rb b/app/models/poll.rb index 71b5e191f..ba08309a1 100644 --- a/app/models/poll.rb +++ b/app/models/poll.rb @@ -83,6 +83,12 @@ class Poll < ApplicationRecord end end + def reset_votes! + self.cached_tallies = options.map { 0 } + self.votes_count = 0 + votes.delete_all unless new_record? + end + private def prepare_cached_tallies diff --git a/app/models/report.rb b/app/models/report.rb index ceb15133b..3dd8a6fdd 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -39,6 +39,9 @@ class Report < ApplicationRecord scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with({ user: [:invite_request, :invite] })) } validates :comment, length: { maximum: 1_000 } + validates :rule_ids, absence: true, unless: :violation? + + validate :validate_rule_ids enum category: { other: 0, @@ -122,4 +125,10 @@ class Report < ApplicationRecord def set_uri self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil? && account.local? end + + def validate_rule_ids + return unless violation? + + errors.add(:rule_ids, I18n.t('reports.errors.invalid_rules')) unless rules.size == rule_ids.size + end end diff --git a/app/models/status.rb b/app/models/status.rb index 9bb2b3746..607b70712 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -65,6 +65,7 @@ class Status < ApplicationRecord has_many :favourites, inverse_of: :status, dependent: :destroy has_many :bookmarks, inverse_of: :status, dependent: :destroy has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy + has_many :reblogged_by_accounts, through: :reblogs, class_name: 'Account', source: :account has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :thread has_many :mentions, dependent: :destroy, inverse_of: :status has_many :active_mentions, -> { active }, class_name: 'Mention', inverse_of: :status @@ -215,6 +216,17 @@ class Status < ApplicationRecord public_visibility? || unlisted_visibility? end + def snapshot!(media_attachments_changed: false, account_id: nil, at_time: nil) + edits.create!( + text: text, + spoiler_text: spoiler_text, + media_attachments_changed: media_attachments_changed, + account_id: account_id || self.account_id, + content_type: content_type, + created_at: at_time || edited_at + ) + end + def edited? edited_at.present? end diff --git a/app/models/status_edit.rb b/app/models/status_edit.rb index a89df86c5..3d8098fe7 100644 --- a/app/models/status_edit.rb +++ b/app/models/status_edit.rb @@ -11,6 +11,7 @@ # media_attachments_changed :boolean default(FALSE), not null # created_at :datetime not null # updated_at :datetime not null +# content_type :string # class StatusEdit < ApplicationRecord @@ -20,4 +21,9 @@ class StatusEdit < ApplicationRecord default_scope { order(id: :asc) } delegate :local?, to: :status + + def emojis + return @emojis if defined?(@emojis) + @emojis = CustomEmoji.from_text([spoiler_text, text].join(' '), status.account.domain) + end end diff --git a/app/models/trends/tags.rb b/app/models/trends/tags.rb index a425fd207..2ea4550df 100644 --- a/app/models/trends/tags.rb +++ b/app/models/trends/tags.rb @@ -11,12 +11,9 @@ class Trends::Tags < Trends::Base } def register(status, at_time = Time.now.utc) - original_status = status.reblog? ? status.reblog : status + return unless !status.reblog? && status.public_visibility? && !status.account.silenced? - return unless original_status.public_visibility? && status.public_visibility? && - !original_status.account.silenced? && !status.account.silenced? - - original_status.tags.each do |tag| + status.tags.each do |tag| add(tag, status.account_id, at_time) if tag.usable? end end diff --git a/app/models/user.rb b/app/models/user.rb index 9afdc481d..ee20e293e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -245,6 +245,10 @@ class User < ApplicationRecord save! end + def preferred_posting_language + settings.default_language || locale + end + def setting_default_privacy settings.default_privacy || (account.locked? ? 'private' : 'public') end diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb index d0359580d..8746fb2c6 100644 --- a/app/policies/status_policy.rb +++ b/app/policies/status_policy.rb @@ -39,7 +39,7 @@ class StatusPolicy < ApplicationPolicy alias unreblog? destroy? def update? - staff? + staff? || owned? end private diff --git a/app/presenters/activitypub/activity_presenter.rb b/app/presenters/activitypub/activity_presenter.rb index 5d174767f..38e8527e8 100644 --- a/app/presenters/activitypub/activity_presenter.rb +++ b/app/presenters/activitypub/activity_presenter.rb @@ -4,7 +4,7 @@ class ActivityPub::ActivityPresenter < ActiveModelSerializers::Model attributes :id, :type, :actor, :published, :to, :cc, :virtual_object class << self - def from_status(status) + def from_status(status, allow_inlining: true) new.tap do |presenter| presenter.id = ActivityPub::TagManager.instance.activity_uri_for(status) presenter.type = status.reblog? ? 'Announce' : 'Create' @@ -15,7 +15,7 @@ class ActivityPub::ActivityPresenter < ActiveModelSerializers::Model presenter.virtual_object = begin if status.reblog? - if status.account == status.proper.account && status.proper.private_visibility? && status.local? + if allow_inlining && status.account == status.proper.account && status.proper.private_visibility? && status.local? status.proper else ActivityPub::TagManager.instance.uri_for(status.proper) diff --git a/app/serializers/activitypub/undo_announce_serializer.rb b/app/serializers/activitypub/undo_announce_serializer.rb index a925efc18..a0f09e8ab 100644 --- a/app/serializers/activitypub/undo_announce_serializer.rb +++ b/app/serializers/activitypub/undo_announce_serializer.rb @@ -22,6 +22,6 @@ class ActivityPub::UndoAnnounceSerializer < ActivityPub::Serializer end def virtual_object - ActivityPub::ActivityPresenter.from_status(object) + ActivityPub::ActivityPresenter.from_status(object, allow_inlining: false) end end diff --git a/app/serializers/rest/notification_serializer.rb b/app/serializers/rest/notification_serializer.rb index 27b031fcc..69b81f6de 100644 --- a/app/serializers/rest/notification_serializer.rb +++ b/app/serializers/rest/notification_serializer.rb @@ -11,6 +11,6 @@ class REST::NotificationSerializer < ActiveModel::Serializer end def status_type? - [:favourite, :reblog, :status, :mention, :poll].include?(object.type) + [:favourite, :reblog, :status, :mention, :poll, :update].include?(object.type) end end diff --git a/app/serializers/rest/status_edit_serializer.rb b/app/serializers/rest/status_edit_serializer.rb index b123b4e09..a1f9e824e 100644 --- a/app/serializers/rest/status_edit_serializer.rb +++ b/app/serializers/rest/status_edit_serializer.rb @@ -1,6 +1,14 @@ # frozen_string_literal: true class REST::StatusEditSerializer < ActiveModel::Serializer - attributes :text, :spoiler_text, :media_attachments_changed, - :created_at + has_one :account, serializer: REST::AccountSerializer + + attributes :content, :spoiler_text, + :media_attachments_changed, :created_at + + has_many :emojis, serializer: REST::CustomEmojiSerializer + + def content + Formatter.instance.format(object) + end end diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 977928127..7438a7c53 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -95,10 +95,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService # If for some reasons the options were changed, it invalidates all previous # votes, so we need to remove them - if poll_parser.significantly_changes?(poll) - @poll_changed = true - poll.votes.delete_all unless poll.new_record? - end + @poll_changed = true if poll_parser.significantly_changes?(poll) poll.last_fetched_at = Time.now.utc poll.options = poll_parser.options @@ -106,6 +103,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService poll.expires_at = poll_parser.expires_at poll.voters_count = poll_parser.voters_count poll.cached_tallies = poll_parser.cached_tallies + poll.reset_votes! if @poll_changed poll.save! @status.poll_id = poll.id @@ -120,7 +118,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @status.text = @status_parser.text || '' @status.spoiler_text = @status_parser.spoiler_text || '' @status.sensitive = @account.sensitized? || @status_parser.sensitive || false - @status.language = @status_parser.language || detected_language + @status.language = @status_parser.language @status.edited_at = @status_parser.edited_at || Time.now.utc if significant_changes? @status.save! @@ -210,10 +208,6 @@ class ActivityPub::ProcessStatusUpdateService < BaseService { redis: Redis.current, key: "create:#{@uri}", autorelease: 15.minutes.seconds } end - def detected_language - LanguageDetector.instance.detect(@status_parser.text, @account) - end - def create_previous_edit! # We only need to create a previous edit when no previous edits exist, e.g. # when the status has never been edited. For other cases, we always create @@ -221,24 +215,18 @@ class ActivityPub::ProcessStatusUpdateService < BaseService return if @status.edits.any? - @status.edits.create( - text: @status.text, - spoiler_text: @status.spoiler_text, + @status.snapshot!( media_attachments_changed: false, - account_id: @account.id, - created_at: @status.created_at + at_time: @status.created_at ) end def create_edit! return unless significant_changes? - @status_edit = @status.edits.create( - text: @status.text, - spoiler_text: @status.spoiler_text, + @status.snapshot!( media_attachments_changed: @media_attachments_changed || @poll_changed, - account_id: @account.id, - created_at: @status.edited_at + account_id: @account.id ) end diff --git a/app/services/concerns/payloadable.rb b/app/services/concerns/payloadable.rb index 3e45570c3..04c3798fe 100644 --- a/app/services/concerns/payloadable.rb +++ b/app/services/concerns/payloadable.rb @@ -1,13 +1,21 @@ # frozen_string_literal: true module Payloadable + # @param [ActiveModelSerializers::Model] record + # @param [ActiveModelSerializers::Serializer] serializer + # @param [Hash] options + # @option options [Account] :signer + # @option options [String] :sign_with + # @option options [Boolean] :always_sign + # @return [Hash] def serialize_payload(record, serializer, options = {}) - signer = options.delete(:signer) - sign_with = options.delete(:sign_with) - payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json - object = record.respond_to?(:virtual_object) ? record.virtual_object : record + signer = options.delete(:signer) + sign_with = options.delete(:sign_with) + always_sign = options.delete(:always_sign) + payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json + object = record.respond_to?(:virtual_object) ? record.virtual_object : record - if (object.respond_to?(:sign?) && object.sign?) && signer && signing_enabled? + if (object.respond_to?(:sign?) && object.sign?) && signer && (always_sign || signing_enabled?) ActivityPub::LinkedDataSignature.new(payload).sign!(signer, sign_with: sign_with) else payload diff --git a/app/services/delete_account_service.rb b/app/services/delete_account_service.rb index 0e3fedfe7..a572a7c59 100644 --- a/app/services/delete_account_service.rb +++ b/app/services/delete_account_service.rb @@ -265,7 +265,7 @@ class DeleteAccountService < BaseService end def delete_actor_json - @delete_actor_json ||= Oj.dump(serialize_payload(@account, ActivityPub::DeleteActorSerializer, signer: @account)) + @delete_actor_json ||= Oj.dump(serialize_payload(@account, ActivityPub::DeleteActorSerializer, signer: @account, always_sign: true)) end def delivery_inboxes diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 46feec5aa..08fae7935 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -34,6 +34,7 @@ class FanOutOnWriteService < BaseService def fan_out_to_local_recipients! deliver_to_self! notify_mentioned_accounts! + notify_about_update! if update? case @status.visibility.to_sym when :public, :unlisted, :private @@ -66,6 +67,14 @@ class FanOutOnWriteService < BaseService end end + def notify_about_update! + @status.reblogged_by_accounts.merge(Account.local).select(:id).reorder(nil).find_in_batches do |accounts| + LocalNotificationWorker.push_bulk(accounts) do |account| + [account.id, @status.id, 'Status', 'update'] + end + end + end + def deliver_to_all_followers! @account.followers_for_local_distribution.select(:id).reorder(nil).find_in_batches do |followers| FeedInsertWorker.push_bulk(followers) do |follower| diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 0f3516d28..039e007f5 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -46,6 +46,10 @@ class NotifyService < BaseService 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) diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 9d26e0f5b..c5061dd63 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -2,6 +2,7 @@ class PostStatusService < BaseService include Redisable + include LanguagesHelper MIN_SCHEDULE_OFFSET = 5.minutes.freeze @@ -118,10 +119,6 @@ class PostStatusService < BaseService raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if @media.any?(&:not_processed?) end - def language_from_option(str) - ISO_639.find(str)&.alpha2 - end - def process_mentions_service ProcessMentionsService.new end @@ -174,7 +171,7 @@ class PostStatusService < BaseService sensitive: @sensitive, spoiler_text: @options[:spoiler_text] || '', visibility: @visibility, - language: language_from_option(@options[:language]) || @account.user&.setting_default_language&.presence || LanguageDetector.instance.detect(@text, @account), + language: valid_locale_or_nil(@options[:language].presence || @account.user&.preferred_posting_language || I18n.default_locale), application: @options[:application], content_type: @options[:content_type] || @account.user&.setting_default_content_type, rate_limit: @options[:with_rate_limit], diff --git a/app/services/process_hashtags_service.rb b/app/services/process_hashtags_service.rb index 47277c56c..43d7bcca6 100644 --- a/app/services/process_hashtags_service.rb +++ b/app/services/process_hashtags_service.rb @@ -1,20 +1,40 @@ # frozen_string_literal: true class ProcessHashtagsService < BaseService - def call(status, tags = []) - tags = Extractor.extract_hashtags(status.text) if status.local? - records = [] - - Tag.find_or_create_by_names(tags) do |tag| - status.tags << tag - records << tag - tag.update(last_status_at: status.created_at) if tag.last_status_at.nil? || (tag.last_status_at < status.created_at && tag.last_status_at < 12.hours.ago) + def call(status, raw_tags = []) + @status = status + @account = status.account + @raw_tags = status.local? ? Extractor.extract_hashtags(status.text) : raw_tags + @previous_tags = status.tags.to_a + @current_tags = [] + + assign_tags! + update_featured_tags! + end + + private + + def assign_tags! + @status.tags = @current_tags = Tag.find_or_create_by_names(@raw_tags) + end + + def update_featured_tags! + return unless @status.distributable? + + added_tags = @current_tags - @previous_tags + + unless added_tags.empty? + @account.featured_tags.where(tag_id: added_tags.map(&:id)).each do |featured_tag| + featured_tag.increment(@status.created_at) + end end - return unless status.distributable? + removed_tags = @previous_tags - @current_tags - status.account.featured_tags.where(tag_id: records.map(&:id)).each do |featured_tag| - featured_tag.increment(status.created_at) + unless removed_tags.empty? + @account.featured_tags.where(tag_id: removed_tags.map(&:id)).each do |featured_tag| + featured_tag.decrement(@status.id) + end end end end diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index e41ad2b0a..361cd4d82 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -97,7 +97,7 @@ class RemoveStatusService < BaseService end def signed_activity_json - @signed_activity_json ||= Oj.dump(serialize_payload(@status, @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, signer: @account)) + @signed_activity_json ||= Oj.dump(serialize_payload(@status, @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, signer: @account, always_sign: true)) end def remove_reblogs diff --git a/app/services/report_service.rb b/app/services/report_service.rb index bc0a8b464..caf99ab6e 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -8,13 +8,15 @@ class ReportService < BaseService @target_account = target_account @status_ids = options.delete(:status_ids) || [] @comment = options.delete(:comment) || '' + @category = options.delete(:category) || 'other' + @rule_ids = options.delete(:rule_ids) @options = options raise ActiveRecord::RecordNotFound if @target_account.suspended? create_report! notify_staff! - forward_to_origin! if !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward]) + forward_to_origin! if forward? @report end @@ -27,7 +29,9 @@ class ReportService < BaseService status_ids: @status_ids, comment: @comment, uri: @options[:uri], - forwarded: ActiveModel::Type::Boolean.new.cast(@options[:forward]) + forwarded: forward?, + category: @category, + rule_ids: @rule_ids ) end @@ -48,6 +52,10 @@ class ReportService < BaseService ) end + def forward? + !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward]) + end + def payload Oj.dump(serialize_payload(@report, ActivityPub::FlagSerializer, account: some_local_account)) end diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb new file mode 100644 index 000000000..76530a54c --- /dev/null +++ b/app/services/update_status_service.rb @@ -0,0 +1,153 @@ +# frozen_string_literal: true + +class UpdateStatusService < BaseService + include Redisable + include LanguagesHelper + + # @param [Status] status + # @param [Integer] account_id + # @param [Hash] options + # @option options [Array<Integer>] :media_ids + # @option options [Hash] :poll + # @option options [String] :text + # @option options [String] :spoiler_text + # @option options [Boolean] :sensitive + # @option options [String] :language + # @option options [String] :content_type + def call(status, account_id, options = {}) + @status = status + @options = options + @account_id = account_id + @media_attachments_changed = false + @poll_changed = false + + Status.transaction do + create_previous_edit! + update_media_attachments! + update_poll! + update_immediate_attributes! + create_edit! + end + + queue_poll_notifications! + reset_preview_card! + update_metadata! + broadcast_updates! + + @status + end + + private + + def update_media_attachments! + previous_media_attachments = @status.media_attachments.to_a + next_media_attachments = validate_media! + removed_media_attachments = previous_media_attachments - next_media_attachments + added_media_attachments = next_media_attachments - previous_media_attachments + + MediaAttachment.where(id: removed_media_attachments.map(&:id)).update_all(status_id: nil) + MediaAttachment.where(id: added_media_attachments.map(&:id)).update_all(status_id: @status.id) + + @status.media_attachments.reload + @media_attachments_changed = true if removed_media_attachments.any? || added_media_attachments.any? + end + + def validate_media! + return [] if @options[:media_ids].blank? || !@options[:media_ids].is_a?(Enumerable) + + raise Mastodon::ValidationError, I18n.t('media_attachments.validations.too_many') if @options[:media_ids].size > 4 || @options[:poll].present? + + media_attachments = @status.account.media_attachments.where(status_id: [nil, @status.id]).where(scheduled_status_id: nil).where(id: @options[:media_ids].take(4).map(&:to_i)).to_a + + raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if media_attachments.size > 1 && media_attachments.find(&:audio_or_video?) + raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if media_attachments.any?(&:not_processed?) + + media_attachments + end + + def update_poll! + previous_poll = @status.preloadable_poll + @previous_expires_at = previous_poll&.expires_at + + if @options[:poll].present? + poll = previous_poll || @status.account.polls.new(status: @status, votes_count: 0) + + # If for some reasons the options were changed, it invalidates all previous + # votes, so we need to remove them + @poll_changed = true if @options[:poll][:options] != poll.options || ActiveModel::Type::Boolean.new.cast(@options[:poll][:multiple]) != poll.multiple + + poll.options = @options[:poll][:options] + poll.hide_totals = @options[:poll][:hide_totals] || false + poll.multiple = @options[:poll][:multiple] || false + poll.expires_in = @options[:poll][:expires_in] + poll.reset_votes! if @poll_changed + poll.save! + + @status.poll_id = poll.id + elsif previous_poll.present? + previous_poll.destroy + @poll_changed = true + @status.poll_id = nil + end + end + + def update_immediate_attributes! + @status.text = @options[:text].presence || @options.delete(:spoiler_text) || '' + @status.spoiler_text = @options[:spoiler_text] || '' + @status.sensitive = @options[:sensitive] || @options[:spoiler_text].present? + @status.language = valid_locale_or_nil(@options[:language] || @status.language || @status.account.user&.preferred_posting_language || I18n.default_locale) + @status.content_type = @options[:content_type] || @status.content_type + @status.edited_at = Time.now.utc + + @status.save! + end + + def reset_preview_card! + return unless @status.text_previously_changed? + + @status.preview_cards.clear + LinkCrawlWorker.perform_async(@status.id) + end + + def update_metadata! + ProcessHashtagsService.new.call(@status) + ProcessMentionsService.new.call(@status) + end + + def broadcast_updates! + DistributionWorker.perform_async(@status.id, { 'update' => true }) + ActivityPub::StatusUpdateDistributionWorker.perform_async(@status.id) unless @status.local_only? + end + + def queue_poll_notifications! + poll = @status.preloadable_poll + + # If the poll had no expiration date set but now has, or now has a sooner + # expiration date, and people have voted, schedule a notification + + return unless poll.present? && poll.expires_at.present? && poll.votes.exists? + + PollExpirationNotifyWorker.remove_from_scheduled(poll.id) if @previous_expires_at.present? && @previous_expires_at > poll.expires_at + PollExpirationNotifyWorker.perform_at(poll.expires_at + 5.minutes, poll.id) + end + + def create_previous_edit! + # We only need to create a previous edit when no previous edits exist, e.g. + # when the status has never been edited. For other cases, we always create + # an edit, so the step can be skipped + + return if @status.edits.any? + + @status.snapshot!( + media_attachments_changed: false, + at_time: @status.created_at + ) + end + + def create_edit! + @status.snapshot!( + media_attachments_changed: @media_attachments_changed || @poll_changed, + account_id: @account_id + ) + end +end diff --git a/app/validators/import_validator.rb b/app/validators/import_validator.rb index a182abfa5..9f19aee2a 100644 --- a/app/validators/import_validator.rb +++ b/app/validators/import_validator.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'csv' + class ImportValidator < ActiveModel::Validator KNOWN_HEADERS = [ 'Account address', diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index 3867d1b19..f3853d629 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -147,7 +147,7 @@ %tr %th= t('simple_form.labels.defaults.locale') - %td= @account.user_locale + %td= standard_locale_name(@account.user_locale) %td %tr diff --git a/app/views/admin/follow_recommendations/show.html.haml b/app/views/admin/follow_recommendations/show.html.haml index 2878f07d7..85dee210a 100644 --- a/app/views/admin/follow_recommendations/show.html.haml +++ b/app/views/admin/follow_recommendations/show.html.haml @@ -10,7 +10,7 @@ .filter-subset.filter-subset--with-select %strong= t('admin.follow_recommendations.language') .input.select.optional - = select_tag :language, options_for_select(I18n.available_locales.map { |key| [human_locale(key), key]}, @language) + = select_tag :language, options_for_select(I18n.available_locales.map { |key| key.to_s.split(/[_-]/).first.to_sym }.uniq.map { |key| [standard_locale_name(key), key]}, @language) .filter-subset %strong= t('admin.follow_recommendations.status') diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index e520bca0c..4db8fd15c 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -84,5 +84,5 @@ = link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button' - else = link_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button' - - unless @instance.delivery_failure_tracker.available? && @instance.accounts_count > 0 + - if !@instance.delivery_failure_tracker.available? || @instance.accounts_count.zero? || @instance.domain_block&.suspend? = link_to t('admin.instances.purge'), admin_instance_path(@instance), data: { confirm: t('admin.instances.confirm_purge'), method: :delete }, class: 'button' diff --git a/app/views/admin/reports/_actions.html.haml b/app/views/admin/reports/_actions.html.haml new file mode 100644 index 000000000..f3162b325 --- /dev/null +++ b/app/views/admin/reports/_actions.html.haml @@ -0,0 +1,27 @@ += form_tag admin_report_actions_path(@report), method: :post do + .report-actions + .report-actions__item + .report-actions__item__button + = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button' + .report-actions__item__description + = t('admin.reports.actions.resolve_description_html') + .report-actions__item + .report-actions__item__button + = button_tag t('admin.reports.delete_and_resolve'), name: :delete, class: 'button button--destructive' + .report-actions__item__description + = t('admin.reports.actions.delete_description_html') + .report-actions__item + .report-actions__item__button + = button_tag t('admin.accounts.silence'), name: :silence, class: 'button button--destructive' + .report-actions__item__description + = t('admin.reports.actions.silence_description_html') + .report-actions__item + .report-actions__item__button + = button_tag t('admin.accounts.suspend'), name: :suspend, class: 'button button--destructive' + .report-actions__item__description + = t('admin.reports.actions.suspend_description_html') + .report-actions__item + .report-actions__item__button + = link_to t('admin.accounts.custom'), new_admin_account_action_path(@report.target_account_id, report_id: @report.id), class: 'button' + .report-actions__item__description + = t('admin.reports.actions.other_description_html') diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml index e03c1220c..018a0c54a 100644 --- a/app/views/admin/reports/show.html.haml +++ b/app/views/admin/reports/show.html.haml @@ -120,24 +120,30 @@ - if @report.comment.present? %p= t('admin.reports.comment_description_html', name: content_tag(:strong, @report.account.username, class: 'username')) - .report-notes__item - = image_tag @report.account.avatar.url, class: 'report-notes__item__avatar' - - .report-notes__item__header - %span.username - = link_to display_name(@report.account), admin_account_path(@report.account_id) - %time{ datetime: @report.created_at.iso8601, title: l(@report.created_at) } - - if @report.created_at.today? - = t('admin.report_notes.today_at', time: l(@report.created_at, format: :time)) - - else - = l @report.created_at.to_date + .report-notes + .report-notes__item + = image_tag @report.account.avatar.url, class: 'report-notes__item__avatar' + + .report-notes__item__header + %span.username + = link_to display_name(@report.account), admin_account_path(@report.account_id) + %time{ datetime: @report.created_at.iso8601, title: l(@report.created_at) } + - if @report.created_at.today? + = t('admin.report_notes.today_at', time: l(@report.created_at, format: :time)) + - else + = l @report.created_at.to_date - .report-notes__item__content - = simple_format(h(@report.comment)) + .report-notes__item__content + = simple_format(h(@report.comment)) %hr.spacer/ -%h3= t 'admin.reports.statuses' +%h3 + = t 'admin.reports.statuses' + %small.section-skip-link + = link_to '#actions' do + = fa_icon 'angle-double-down' + = t('admin.reports.skip_to_actions') %p = t 'admin.reports.statuses_description_html' @@ -152,8 +158,6 @@ .batch-table__toolbar__actions - if !@statuses.empty? && @report.unresolved? = f.button safe_join([fa_icon('times'), t('admin.statuses.batch.remove_from_report')]), name: :remove_from_report, class: 'table-action-link', type: :submit - = f.button safe_join([fa_icon('trash'), t('admin.reports.delete_and_resolve')]), name: :delete, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } - - else .batch-table__body - if @statuses.empty? = nothing_here 'nothing-here--under-tabs' @@ -163,24 +167,9 @@ - if @report.unresolved? %hr.spacer/ - %p= t 'admin.reports.actions_description_html' - - .report-actions - .report-actions__item - .report-actions__item__button - = link_to t('admin.accounts.silence'), new_admin_account_action_path(@report.target_account_id, type: 'silence', report_id: @report.id), class: 'button button--destructive' - .report-actions__item__description - = t('admin.reports.actions.silence_description_html') - .report-actions__item - .report-actions__item__button - = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(@report.target_account_id, report_id: @report.id, type: 'suspend'), class: 'button button--destructive' - .report-actions__item__description - = t('admin.reports.actions.suspend_description_html') - .report-actions__item - .report-actions__item__button - = link_to t('admin.accounts.custom'), new_admin_account_action_path(@report.target_account_id, report_id: @report.id), class: 'button' - .report-actions__item__description - = t('admin.reports.actions.other_description_html') + %p#actions= t 'admin.reports.actions_description_html' + + = render partial: 'admin/reports/actions' - unless @action_logs.empty? %hr.spacer/ diff --git a/app/views/admin/trends/links/_preview_card.html.haml b/app/views/admin/trends/links/_preview_card.html.haml index b88c1be2f..d88e06bfd 100644 --- a/app/views/admin/trends/links/_preview_card.html.haml +++ b/app/views/admin/trends/links/_preview_card.html.haml @@ -13,7 +13,7 @@ • - if preview_card.language.present? - = human_locale(preview_card.language) + = standard_locale_name(preview_card.language) • = t('admin.trends.links.shared_by_over_week', count: preview_card.history.reduce(0) { |sum, day| sum + day.accounts }) diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index 4170c9e44..c3342ddf0 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -6,7 +6,7 @@ = simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f| .fields-group - = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale, hint: false + = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, selected: I18n.locale, hint: false - unless I18n.locale == :en .flash-message.translation-prompt diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 372d934fb..1f922a5c6 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -27,7 +27,7 @@ = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false .fields-group.fields-row__column.fields-row__column-6 - = f.input :setting_default_language, collection: [nil] + filterable_languages.sort, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.language_detection') : human_locale(locale) }, required: false, include_blank: false, hint: false + = f.input :setting_default_language, collection: [nil] + filterable_languages, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.default_language') : native_locale_name(locale) }, required: false, include_blank: false, hint: false .fields-group = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label @@ -41,7 +41,7 @@ %h4= t 'preferences.public_timelines' .fields-group - = f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + = f.input :chosen_languages, collection: filterable_languages, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb index cef595319..37e316354 100644 --- a/app/workers/activitypub/processing_worker.rb +++ b/app/workers/activitypub/processing_worker.rb @@ -6,7 +6,10 @@ class ActivityPub::ProcessingWorker sidekiq_options backtrace: true, retry: 8 def perform(account_id, body, delivered_to_account_id = nil) - ActivityPub::ProcessCollectionService.new.call(body, Account.find(account_id), override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true) + account = Account.find_by(id: account_id) + return if account.nil? + + ActivityPub::ProcessCollectionService.new.call(body, account, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true) rescue ActiveRecord::RecordInvalid => e Rails.logger.debug "Error processing incoming ActivityPub object: #{e}" end diff --git a/app/workers/activitypub/status_update_distribution_worker.rb b/app/workers/activitypub/status_update_distribution_worker.rb new file mode 100644 index 000000000..a79ede2bf --- /dev/null +++ b/app/workers/activitypub/status_update_distribution_worker.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class ActivityPub::StatusUpdateDistributionWorker < ActivityPub::DistributionWorker + # Distribute an profile update to servers that might have a copy + # of the account in question + def perform(status_id, options = {}) + @options = options.with_indifferent_access + @status = Status.find(status_id) + @account = @status.account + + distribute! + rescue ActiveRecord::RecordNotFound + true + end + + protected + + def activity + ActivityPub::ActivityPresenter.new( + id: [ActivityPub::TagManager.instance.uri_for(@status), '#updates/', @status.edited_at.to_i].join, + type: 'Update', + actor: ActivityPub::TagManager.instance.uri_for(@status.account), + published: @status.edited_at, + to: ActivityPub::TagManager.instance.to(@status), + cc: ActivityPub::TagManager.instance.cc(@status), + virtual_object: @status + ) + end +end diff --git a/app/workers/local_notification_worker.rb b/app/workers/local_notification_worker.rb index a22e2834d..749a54b73 100644 --- a/app/workers/local_notification_worker.rb +++ b/app/workers/local_notification_worker.rb @@ -12,7 +12,14 @@ class LocalNotificationWorker activity = activity_class_name.constantize.find(activity_id) end - return if Notification.where(account: receiver, activity: activity).any? + # For most notification types, only one notification should exist, and the older one is + # preferred. For updates, such as when a status is edited, the new notification + # should replace the previous ones. + if type == 'update' + Notification.where(account: receiver, activity: activity, type: 'update').in_batches.delete_all + elsif Notification.where(account: receiver, activity: activity, type: type).any? + return + end NotifyService.new.call(receiver, type || activity_class_name.underscore, activity) rescue ActiveRecord::RecordNotFound diff --git a/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb index f42d4bca6..7195f0ff9 100644 --- a/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb +++ b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb @@ -66,7 +66,7 @@ class Scheduler::AccountsStatusesCleanupScheduler end def compute_budget - threads = Sidekiq::ProcessSet.new.filter { |x| x['queues'].include?('push') }.map { |x| x['concurrency'] }.sum + threads = Sidekiq::ProcessSet.new.select { |x| x['queues'].include?('push') }.map { |x| x['concurrency'] }.sum [PER_THREAD_BUDGET * threads, MAX_BUDGET].min end diff --git a/app/workers/scheduler/follow_recommendations_scheduler.rb b/app/workers/scheduler/follow_recommendations_scheduler.rb index effc63e59..084619cbd 100644 --- a/app/workers/scheduler/follow_recommendations_scheduler.rb +++ b/app/workers/scheduler/follow_recommendations_scheduler.rb @@ -16,28 +16,33 @@ class Scheduler::FollowRecommendationsScheduler AccountSummary.refresh FollowRecommendation.refresh - fallback_recommendations = FollowRecommendation.order(rank: :desc).limit(SET_SIZE).index_by(&:account_id) + fallback_recommendations = FollowRecommendation.order(rank: :desc).limit(SET_SIZE) - I18n.available_locales.each do |locale| + I18n.available_locales.map { |locale| locale.to_s.split(/[_-]/).first }.uniq.each do |locale| recommendations = begin if AccountSummary.safe.filtered.localized(locale).exists? # We can skip the work if no accounts with that language exist - FollowRecommendation.localized(locale).order(rank: :desc).limit(SET_SIZE).index_by(&:account_id) + FollowRecommendation.localized(locale).order(rank: :desc).limit(SET_SIZE).map { |recommendation| [recommendation.account_id, recommendation.rank] } else - {} + [] end end # Use language-agnostic results if there are not enough language-specific ones - missing = SET_SIZE - recommendations.keys.size + missing = SET_SIZE - recommendations.size + + if missing.positive? && fallback_recommendations.size.positive? + max_fallback_rank = fallback_recommendations.first.rank || 0 + + # Language-specific results should be above language-agnostic ones, + # otherwise language-agnostic ones will always overshadow them + recommendations.map! { |(account_id, rank)| [account_id, rank + max_fallback_rank] } - if missing.positive? added = 0 - # Avoid duplicate results - fallback_recommendations.each_value do |recommendation| - next if recommendations.key?(recommendation.account_id) + fallback_recommendations.each do |recommendation| + next if recommendations.any? { |(account_id, _)| account_id == recommendation.account_id } - recommendations[recommendation.account_id] = recommendation + recommendations << [recommendation.account_id, recommendation.rank] added += 1 break if added >= missing @@ -47,8 +52,8 @@ class Scheduler::FollowRecommendationsScheduler redis.pipelined do redis.del(key(locale)) - recommendations.each_value do |recommendation| - redis.zadd(key(locale), recommendation.rank, recommendation.account_id) + recommendations.each do |(account_id, rank)| + redis.zadd(key(locale), rank, account_id) end end end diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 24676d749..1687132ac 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.2.0 +version: 1.2.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/chart/readme.md b/chart/readme.md index 9f7a88958..381037cc1 100644 --- a/chart/readme.md +++ b/chart/readme.md @@ -24,9 +24,7 @@ The variables that _must_ be configured are: Currently this chart does _not_ support: - Hidden services -- Single Sign-On - Swift -- configurations using `WEB_DOMAIN` # Upgrading diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index 701368e49..5e0620998 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -21,6 +21,9 @@ data: ES_PORT: "9200" {{- end }} LOCAL_DOMAIN: {{ .Values.mastodon.local_domain }} + {{- if .Values.mastodon.web_domain }} + WEB_DOMAIN: {{ .Values.mastodon.web_domain }} + {{- end }} # https://devcenter.heroku.com/articles/tuning-glibc-memory-behavior MALLOC_ARENA_MAX: "2" NODE_ENV: "production" @@ -36,6 +39,9 @@ data: {{- if .Values.mastodon.s3.region }} S3_REGION: {{ .Values.mastodon.s3.region }} {{- end }} + {{- if .Values.mastodon.s3.alias_host }} + S3_ALIAS_HOST: {{ .Values.mastodon.s3.alias_host}} + {{- end }} {{- end }} {{- if .Values.mastodon.smtp.auth_method }} SMTP_AUTH_METHOD: {{ .Values.mastodon.smtp.auth_method }} @@ -77,3 +83,221 @@ data: SMTP_TLS: {{ .Values.mastodon.smtp.tls | quote }} {{- end }} STREAMING_CLUSTER_NUM: {{ .Values.mastodon.streaming.workers | quote }} + {{- if .Values.externalAuth.oidc.enabled }} + OIDC_ENABLED: {{ .Values.externalAuth.oidc.enabled | quote }} + OIDC_DISPLAY_NAME: {{ .Values.externalAuth.oidc.display_name }} + OIDC_ISSUER: {{ .Values.externalAuth.oidc.issuer }} + OIDC_DISCOVERY: {{ .Values.externalAuth.oidc.discovery | quote }} + OIDC_SCOPE: {{ .Values.externalAuth.oidc.scope | quote }} + OIDC_UID_FIELD: {{ .Values.externalAuth.oidc.uid_field }} + OIDC_CLIENT_ID: {{ .Values.externalAuth.oidc.client_id }} + OIDC_CLIENT_SECRET: {{ .Values.externalAuth.oidc.client_secret }} + OIDC_REDIRECT_URI: {{ .Values.externalAuth.oidc.redirect_uri }} + OIDC_SECURITY_ASSUME_EMAIL_IS_VERIFIED: {{ .Values.externalAuth.oidc.assume_email_is_verified | quote }} + {{- if .Values.externalAuth.oidc.client_auth_method }} + OIDC_CLIENT_AUTH_METHOD: {{ .Values.externalAuth.oidc.client_auth_method }} + {{- end }} + {{- if .Values.externalAuth.oidc.response_type }} + OIDC_RESPONSE_TYPE: {{ .Values.externalAuth.oidc.response_type }} + {{- end }} + {{- if .Values.externalAuth.oidc.response_mode }} + OIDC_RESPONSE_MODE: {{ .Values.externalAuth.oidc.response_mode }} + {{- end }} + {{- if .Values.externalAuth.oidc.display }} + OIDC_DISPLAY: {{ .Values.externalAuth.oidc.display }} + {{- end }} + {{- if .Values.externalAuth.oidc.prompt }} + OIDC_PROMPT: {{ .Values.externalAuth.oidc.prompt }} + {{- end }} + {{- if .Values.externalAuth.oidc.send_nonce }} + OIDC_SEND_NONCE: {{ .Values.externalAuth.oidc.send_nonce }} + {{- end }} + {{- if .Values.externalAuth.oidc.send_scope_to_token_endpoint }} + OIDC_SEND_SCOPE_TO_TOKEN_ENDPOINT: {{ .Values.externalAuth.oidc.send_scope_to_token_endpoint | quote }} + {{- end }} + {{- if .Values.externalAuth.oidc.idp_logout_redirect_uri }} + OIDC_IDP_LOGOUT_REDIRECT_URI: {{ .Values.externalAuth.oidc.idp_logout_redirect_uri }} + {{- end }} + {{- if .Values.externalAuth.oidc.http_scheme }} + OIDC_HTTP_SCHEME: {{ .Values.externalAuth.oidc.http_scheme }} + {{- end }} + {{- if .Values.externalAuth.oidc.host }} + OIDC_HOST: {{ .Values.externalAuth.oidc.host }} + {{- end }} + {{- if .Values.externalAuth.oidc.port }} + OIDC_PORT: {{ .Values.externalAuth.oidc.port }} + {{- end }} + {{- if .Values.externalAuth.oidc.jwks_uri }} + OIDC_JWKS_URI: {{ .Values.externalAuth.oidc.jwks_uri }} + {{- end }} + {{- if .Values.externalAuth.oidc.auth_endpoint }} + OIDC_AUTH_ENDPOINT: {{ .Values.externalAuth.oidc.auth_endpoint }} + {{- end }} + {{- if .Values.externalAuth.oidc.token_endpoint }} + OIDC_TOKEN_ENDPOINT: {{ .Values.externalAuth.oidc.token_endpoint }} + {{- end }} + {{- if .Values.externalAuth.oidc.user_info_endpoint }} + OIDC_USER_INFO_ENDPOINT: {{ .Values.externalAuth.oidc.user_info_endpoint }} + {{- end }} + {{- if .Values.externalAuth.oidc.end_session_endpoint }} + OIDC_END_SESSION_ENDPOINT: {{ .Values.externalAuth.oidc.end_session_endpoint }} + {{- end }} + {{- end }} + {{- if .Values.externalAuth.saml.enabled }} + SAML_ENABLED: {{ .Values.externalAuth.saml.enabled | quote }} + SAML_ACS_URL: {{ .Values.externalAuth.saml.acs_url }} + SAML_ISSUER: {{ .Values.externalAuth.saml.issuer }} + SAML_IDP_SSO_TARGET_URL: {{ .Values.externalAuth.saml.idp_sso_target_url }} + SAML_IDP_CERT: {{ .Values.externalAuth.saml.idp_cert | quote }} + {{- if .Values.externalAuth.saml.idp_cert_fingerprint }} + SAML_IDP_CERT_FINGERPRINT: {{ .Values.externalAuth.saml.idp_cert_fingerprint | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.name_identifier_format }} + SAML_NAME_IDENTIFIER_FORMAT: {{ .Values.externalAuth.saml.name_identifier_format }} + {{- end }} + {{- if .Values.externalAuth.saml.cert }} + SAML_CERT: {{ .Values.externalAuth.saml.cert | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.private_key }} + SAML_PRIVATE_KEY: {{ .Values.externalAuth.saml.private_key | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.want_assertion_signed }} + SAML_SECURITY_WANT_ASSERTION_SIGNED: {{ .Values.externalAuth.saml.want_assertion_signed | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.want_assertion_encrypted }} + SAML_SECURITY_WANT_ASSERTION_ENCRYPTED: {{ .Values.externalAuth.saml.want_assertion_encrypted | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.assume_email_is_verified }} + SAML_SECURITY_ASSUME_EMAIL_IS_VERIFIED: {{ .Values.externalAuth.saml.assume_email_is_verified | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.uid_attribute }} + SAML_UID_ATTRIBUTE: {{ .Values.externalAuth.saml.uid_attribute }} + {{- end }} + {{- if .Values.externalAuth.saml.attributes_statements.uid }} + SAML_ATTRIBUTES_STATEMENTS_UID: {{ .Values.externalAuth.saml.attributes_statements.uid | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.attributes_statements.email }} + SAML_ATTRIBUTES_STATEMENTS_EMAIL: {{ .Values.externalAuth.saml.attributes_statements.email | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.attributes_statements.full_name }} + SAML_ATTRIBUTES_STATEMENTS_FULL_NAME: {{ .Values.externalAuth.saml.attributes_statements.full_name | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.attributes_statements.first_name }} + SAML_ATTRIBUTES_STATEMENTS_FIRST_NAME: {{ .Values.externalAuth.saml.attributes_statements.first_name | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.attributes_statements.last_name }} + SAML_ATTRIBUTES_STATEMENTS_LAST_NAME: {{ .Values.externalAuth.saml.attributes_statements.last_name | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.attributes_statements.verified }} + SAML_ATTRIBUTES_STATEMENTS_VERIFIED: {{ .Values.externalAuth.saml.attributes_statements.verified | quote }} + {{- end }} + {{- if .Values.externalAuth.saml.attributes_statements.verified_email }} + SAML_ATTRIBUTES_STATEMENTS_VERIFIED_EMAIL: {{ .Values.externalAuth.saml.attributes_statements.verified_email | quote }} + {{- end }} + {{- end }} + {{- if .Values.externalAuth.oauth_global.oauth_redirect_at_sign_in }} + OAUTH_REDIRECT_AT_SIGN_IN: {{ .Values.externalAuth.oauth_global.oauth_redirect_at_sign_in | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.enabled }} + CAS_ENABLED: {{ .Values.externalAuth.cas.enabled | quote }} + CAS_URL: {{ .Values.externalAuth.cas.url }} + CAS_HOST: {{ .Values.externalAuth.cas.host }} + CAS_PORT: {{ .Values.externalAuth.cas.port }} + CAS_SSL: {{ .Values.externalAuth.cas.ssl | quote }} + {{- if .Values.externalAuth.cas.validate_url }} + CAS_VALIDATE_URL: {{ .Values.externalAuth.cas.validate_url }} + {{- end }} + {{- if .Values.externalAuth.cas.callback_url }} + CAS_CALLBACK_URL: {{ .Values.externalAuth.cas.callback_url }} + {{- end }} + {{- if .Values.externalAuth.cas.logout_url }} + CAS_LOGOUT_URL: {{ .Values.externalAuth.cas.logout_url }} + {{- end }} + {{- if .Values.externalAuth.cas.login_url }} + CAS_LOGIN_URL: {{ .Values.externalAuth.cas.login_url }} + {{- end }} + {{- if .Values.externalAuth.cas.uid_field }} + CAS_UID_FIELD: {{ .Values.externalAuth.cas.uid_field | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.ca_path }} + CAS_CA_PATH: {{ .Values.externalAuth.cas.ca_path }} + {{- end }} + {{- if .Values.externalAuth.cas.disable_ssl_verification }} + CAS_DISABLE_SSL_VERIFICATION: {{ .Values.externalAuth.cas.disable_ssl_verification | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.assume_email_is_verified }} + CAS_SECURITY_ASSUME_EMAIL_IS_VERIFIED: {{ .Values.externalAuth.cas.assume_email_is_verified | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.uid }} + CAS_UID_KEY: {{ .Values.externalAuth.cas.keys.uid | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.name }} + CAS_NAME_KEY: {{ .Values.externalAuth.cas.keys.name | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.email }} + CAS_EMAIL_KEY: {{ .Values.externalAuth.cas.keys.email | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.nickname }} + CAS_NICKNAME_KEY: {{ .Values.externalAuth.cas.keys.nickname | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.first_name }} + CAS_FIRST_NAME_KEY: {{ .Values.externalAuth.cas.keys.first_name | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.last_name }} + CAS_LAST_NAME_KEY: {{ .Values.externalAuth.cas.keys.last_name | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.location }} + CAS_LOCATION_KEY: {{ .Values.externalAuth.cas.keys.location | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.image }} + CAS_IMAGE_KEY: {{ .Values.externalAuth.cas.keys.image | quote }} + {{- end }} + {{- if .Values.externalAuth.cas.keys.phone }} + CAS_PHONE_KEY: {{ .Values.externalAuth.cas.keys.phone | quote }} + {{- end }} + {{- end }} + {{- if .Values.externalAuth.pam.enabled }} + PAM_ENABLED: {{ .Values.externalAuth.pam.enabled | quote }} + {{- if .Values.externalAuth.pam.email_domain }} + PAM_EMAIL_DOMAIN: {{ .Values.externalAuth.pam.email_domain }} + {{- end }} + {{- if .Values.externalAuth.pam.default_service }} + PAM_DEFAULT_SERVICE: {{ .Values.externalAuth.pam.default_service }} + {{- end }} + {{- if .Values.externalAuth.pam.controlled_service }} + PAM_CONTROLLED_SERVICE: {{ .Values.externalAuth.pam.controlled_service }} + {{- end }} + {{- end }} + {{- if .Values.externalAuth.ldap.enabled }} + LDAP_ENABLED: {{ .Values.externalAuth.ldap.enabled | quote }} + LDAP_HOST: {{ .Values.externalAuth.ldap.host }} + LDAP_PORT: {{ .Values.externalAuth.ldap.port }} + LDAP_METHOD: {{ .Values.externalAuth.ldap.method }} + {{- if .Values.externalAuth.ldap.base }} + LDAP_BASE: {{ .Values.externalAuth.ldap.base }} + {{- end }} + {{- if .Values.externalAuth.ldap.bind_on }} + LDAP_BIND_ON: {{ .Values.externalAuth.ldap.bind_on }} + {{- end }} + {{- if .Values.externalAuth.ldap.password }} + LDAP_PASSWORD: {{ .Values.externalAuth.ldap.password }} + {{- end }} + {{- if .Values.externalAuth.ldap.uid }} + LDAP_UID: {{ .Values.externalAuth.ldap.uid }} + {{- end }} + {{- if .Values.externalAuth.ldap.mail }} + LDAP_MAIL: {{ .Values.externalAuth.ldap.mail }} + {{- end }} + {{- if .Values.externalAuth.ldap.search_filter }} + LDAP_SEARCH_FILTER: {{ .Values.externalAuth.ldap.search_filter }} + {{- end }} + {{- if .Values.externalAuth.ldap.uid_conversion.enabled }} + LDAP_UID_CONVERSION_ENABLED: {{ .Values.externalAuth.ldap.uid_conversion.enabled | quote }} + {{- end }} + {{- if .Values.externalAuth.ldap.uid_conversion.search }} + LDAP_UID_CONVERSION_SEARCH: {{ .Values.externalAuth.ldap.uid_conversion.search }} + {{- end }} + {{- if .Values.externalAuth.ldap.uid_conversion.replace }} + LDAP_UID_CONVERSION_REPLACE: {{ .Values.externalAuth.ldap.uid_conversion.replace }} + {{- end }} + {{- end }} \ No newline at end of file diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml index 8930d2c10..7295297fb 100644 --- a/chart/templates/ingress.yaml +++ b/chart/templates/ingress.yaml @@ -2,7 +2,9 @@ {{- $fullName := include "mastodon.fullname" . -}} {{- $webPort := .Values.mastodon.web.port -}} {{- $streamingPort := .Values.mastodon.streaming.port -}} -{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion: networking.k8s.io/v1beta1 {{- else -}} apiVersion: extensions/v1beta1 @@ -35,12 +37,32 @@ spec: {{- range .paths }} - path: {{ .path }} backend: + {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} + service: + name: {{ $fullName }}-web + port: + number: {{ $webPort }} + {{- else }} serviceName: {{ $fullName }}-web servicePort: {{ $webPort }} + {{- end }} + {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} + pathType: ImplementationSpecific + {{- end }} - path: {{ .path }}api/v1/streaming backend: + {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} + service: + name: {{ $fullName }}-streaming + port: + number: {{ $streamingPort }} + {{- else }} serviceName: {{ $fullName }}-streaming servicePort: {{ $streamingPort }} + {{- end }} + {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} + pathType: ImplementationSpecific + {{- end }} {{- end }} {{- end }} {{- end }} diff --git a/chart/values.yaml b/chart/values.yaml index dc476b1c5..54627854d 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -27,6 +27,9 @@ mastodon: # available locales: https://github.com/tootsuite/mastodon/blob/master/config/application.rb#L43 locale: en local_domain: mastodon.local + # Use of WEB_DOMAIN requires careful consideration: https://docs.joinmastodon.org/admin/config/#federation + # You must redirect the path LOCAL_DOMAIN/.well-known/ to WEB_DOMAIN/.well-known/ as described + # web_domain: mastodon.example.com persistence: assets: # ReadWriteOnce is more widely supported than ReadWriteMany, but limits @@ -49,6 +52,8 @@ mastodon: endpoint: https://us-east-1.linodeobjects.com hostname: us-east-1.linodeobjects.com region: "" + # If you have a caching proxy, enter its base URL here. + alias_host: "" # these must be set manually; autogenerated keys are rotated on each upgrade secrets: secret_key_base: "" @@ -136,6 +141,105 @@ service: type: ClusterIP port: 80 +externalAuth: + oidc: + # OpenID Connect support is proposed in PR #16221 and awaiting merge. + enabled: false + # display_name: "example-label" + # issuer: https://login.example.space/auth/realms/example-space + # discovery: true + # scope: "openid,profile" + # uid_field: uid + # client_id: mastodon + # client_secret: SECRETKEY + # redirect_uri: https://example.com/auth/auth/openid_connect/callback + # assume_email_is_verified: true + # client_auth_method: + # response_type: + # response_mode: + # display: + # prompt: + # send_nonce: + # send_scope_to_token_endpoint: + # idp_logout_redirect_uri: + # http_scheme: + # host: + # port: + # jwks_uri: + # auth_endpoint: + # token_endpoint: + # user_info_endpoint: + # end_session_endpoint: + saml: + enabled: false + # acs_url: http://mastodon.example.com/auth/auth/saml/callback + # issuer: mastodon + # idp_sso_target_url: https://login.example.com/auth/realms/example/protocol/saml + # idp_cert: '-----BEGIN CERTIFICATE-----[your_cert_content]-----END CERTIFICATE-----' + # idp_cert_fingerprint: + # name_identifier_format: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified + # cert: + # private_key: + # want_assertion_signed: true + # want_assertion_encrypted: true + # assume_email_is_verified: true + # uid_attribute: "urn:oid:0.9.2342.19200300.100.1.1" + # attributes_statements: + # uid: "urn:oid:0.9.2342.19200300.100.1.1" + # email: "urn:oid:1.3.6.1.4.1.5923.1.1.1.6" + # full_name: "urn:oid:2.16.840.1.113730.3.1.241" + # first_name: "urn:oid:2.5.4.42" + # last_name: "urn:oid:2.5.4.4" + # verified: + # verified_email: + oauth_global: + # Force redirect local login to CAS. Does not function with SAML or LDAP. + oauth_redirect_at_sign_in: false + cas: + enabled: false + # url: https://sso.myserver.com + # host: sso.myserver.com + # port: 443 + # ssl: true + # validate_url: + # callback_url: + # logout_url: + # login_url: + # uid_field: 'user' + # ca_path: + # disable_ssl_verification: false + # assume_email_is_verified: true + # keys: + # uid: 'user' + # name: 'name' + # email: 'email' + # nickname: 'nickname' + # first_name: 'firstname' + # last_name: 'lastname' + # location: 'location' + # image: 'image' + # phone: 'phone' + pam: + enabled: false + # email_domain: example.com + # default_service: rpam + # controlled_service: rpam + ldap: + enabled: false + # host: myservice.namespace.svc + # port: 389 + # method: simple_tls + # base: + # bind_on: + # password: + # uid: cn + # mail: mail + # search_filter: "(|(%{uid}=%{email})(%{mail}=%{email}))" + # uid_conversion: + # enabled: true + # search: "., -" + # replace: _ + # https://github.com/tootsuite/mastodon/blob/master/Dockerfile#L88 # # if you manually change the UID/GID environment variables, ensure these values diff --git a/config/application.rb b/config/application.rb index 3473c38d4..77a46ffc2 100644 --- a/config/application.rb +++ b/config/application.rb @@ -150,10 +150,14 @@ module Mastodon :'zh-TW', ] - config.i18n.default_locale = ENV['DEFAULT_LOCALE']&.to_sym - - unless config.i18n.available_locales.include?(config.i18n.default_locale) - config.i18n.default_locale = :'en-cafe' + config.i18n.default_locale = begin + custom_default_locale = ENV['DEFAULT_LOCALE']&.to_sym + + if config.i18n.available_locales.include?(custom_default_locale) + custom_default_locale + else + :'en-cafe' + end end # fall back to English when a translation cannot be found @@ -173,7 +177,6 @@ module Mastodon Doorkeeper::Application.send :include, ApplicationExtension Doorkeeper::AccessToken.send :include, AccessTokenExtension Devise::FailureApp.send :include, AbstractController::Callbacks - Devise::FailureApp.send :include, HttpAcceptLanguage::EasyAccess Devise::FailureApp.send :include, Localized end end diff --git a/config/locales/activerecord.br.yml b/config/locales/activerecord.br.yml index e16e78eb3..dc35f326f 100644 --- a/config/locales/activerecord.br.yml +++ b/config/locales/activerecord.br.yml @@ -6,6 +6,7 @@ br: expires_at: Deiziad termen options: Dibaboù user: + agreement: Emglev gant ar servij email: Chomlec'h postel locale: Lec'hel password: Ger-tremen @@ -28,3 +29,4 @@ br: attributes: email: blocked: a implij ur pourvezour postel berzet + unreachable: ne dle ket bezañ implijet diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index 00d40aaf0..47cd8765d 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -11,7 +11,7 @@ fr: locale: Langue password: Mot de passe user/account: - username: Nom d’utilisateur + username: Nom d’utilisateur·ice user/invite_request: text: Raison errors: diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index 7e16990b5..c6587f1fd 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -24,7 +24,7 @@ it: status: attributes: reblog: - taken: dello stato esiste già + taken: del post esiste già user: attributes: email: diff --git a/config/locales/activerecord.kmr.yml b/config/locales/activerecord.kmr.yml index 616c4966f..30afeda99 100644 --- a/config/locales/activerecord.kmr.yml +++ b/config/locales/activerecord.kmr.yml @@ -8,7 +8,7 @@ kmr: user: agreement: Peymana karûbarê email: Navnîşana E-nameyê - locale: Herêm + locale: Herêmî password: Pêborîn user/account: username: Navê bikarhêneriyê diff --git a/config/locales/activerecord.ro.yml b/config/locales/activerecord.ro.yml index 1da164190..f752e4961 100644 --- a/config/locales/activerecord.ro.yml +++ b/config/locales/activerecord.ro.yml @@ -6,15 +6,27 @@ ro: expires_at: Termen limită options: Alegeri user: + agreement: Acord de servicii email: Adresă e-mail + locale: Localizare password: Parolă + user/account: + username: Nume utilizator + user/invite_request: + text: Motiv errors: models: account: attributes: username: invalid: doar litere, numere și sublinieri + reserved: este rezervat status: attributes: reblog: - taken: de stare există deja + taken: de postare există deja + user: + attributes: + email: + blocked: utilizează un furnizor de e-mail neautorizat + unreachable: pare să nu existe diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml index 1df109579..d7fbb446d 100644 --- a/config/locales/activerecord.sl.yml +++ b/config/locales/activerecord.sl.yml @@ -5,13 +5,28 @@ sl: poll: expires_at: Rok options: Izbire + user: + agreement: Sporazum o storitvah + email: E-poštni naslov + locale: Krajevne nastavitve + password: Geslo + user/account: + username: Uporabniško ime + user/invite_request: + text: Razlog errors: models: account: attributes: username: invalid: samo črke, številke in podčrtaji + reserved: je rezerviran status: attributes: reblog: taken: od statusa že obstajajo + user: + attributes: + email: + blocked: uporablja nedovoljenega ponudnika e-poštnih storitev + unreachable: kot kaže ne obstaja diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 4957ab7bd..775ca2edc 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -8,6 +8,7 @@ th: user: agreement: ข้อตกลงการให้บริการ email: ที่อยู่อีเมล + locale: ตำแหน่งที่ตั้ง password: รหัสผ่าน user/account: username: ชื่อผู้ใช้ diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 6c3cccdb3..c54fecac1 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -115,7 +115,6 @@ ar: accounts: add_email_domain_block: حظر نطاق بريد إلكتروني approve: صادِق عليه - approve_all: الموافقة على الكل approved_msg: تمت الموافقة على تسجيل %{username} are_you_sure: متأكد ؟ avatar: الصورة الرمزية @@ -130,6 +129,7 @@ ar: confirm: تأكيد confirmed: مؤكَّد confirming: التأكد + custom: مخصص delete: حذف البيانات deleted: تمت إزالته demote: إنزال الرُتبة الوظيفية @@ -169,7 +169,6 @@ ar: active: نشِط all: الكل pending: قيد المراجعة - silenced: تم كتمه suspended: مُجَمَّد title: الإشراف moderation_notes: ملاحظات الإشراف @@ -187,7 +186,6 @@ ar: redownload: انعش الصفحة التعريفية redownloaded_msg: تم تحديث ملف %{username} التعريفي من الأصل reject: ارفض - reject_all: ارفض الكل rejected_msg: تم رفض تطبيق تسجيل %{username} بنجاح remove_avatar: حذف الصورة الرمزية remove_header: حذف الرأسية @@ -222,12 +220,14 @@ ar: silence: كتم silenced: تم كتمه statuses: المنشورات + strikes: الضربات السابقة subscribe: اشترك suspended: تم تعليقه suspension_irreversible: تم حذف بيانات هذا الحساب بشكل لا رجعة فيه، يمكنك إلغاء تعليق الحساب لجعله قابلا للاستخدام، ولكنه لن يسترد أي بيانات كانت لديه سابقاً. suspension_reversible_hint_html: تم تعليق الحساب، وسيتم إزالة البيانات بالكامل في %{date}، حتى ذلك الحين، يمكن استعادة الحساب دون أي آثار سلبية أي كما أنه لم يحدث أي شيء، إذا كنت ترغب في حذف جميع بيانات الحساب الآن، فيمكنك فعل ذلك أدناه. - time_in_queue: في قائمة الانتظار %{time} title: الحسابات + unblock_email: إلغاء حظر عنوان البريد الإلكتروني + unblocked_email_msg: تم إلغاء حظر عنوان البريد الإلكتروني %{username} بنجاح unconfirmed_email: البريد الإلكتروني غير مؤكد undo_sensitized: التراجع عن حساسية undo_silenced: رفع الصمت @@ -242,6 +242,7 @@ ar: whitelisted: في القائمة البيضاء action_logs: action_types: + approve_user: الموافقة على المستخدم assigned_to_self_report: أسند التقرير change_email_user: تغيير عنوان البريد الإلكتروني الخاص بالمستخدم confirm_user: تأكيد المستخدم @@ -259,6 +260,7 @@ ar: destroy_domain_allow: حذف النطاق المسموح به destroy_domain_block: حذف كتلة النطاق destroy_email_domain_block: حذف نطاق بريد إلكتروني + destroy_instance: تنظيف النطاق destroy_ip_block: حذف قانون IP destroy_status: حذف المنشور destroy_unavailable_domain: حذف نطاق غير متوفر @@ -271,6 +273,7 @@ ar: enable_user: تفعيل المستخدم memorialize_account: جعل الحساب تذكاريا promote_user: ترقية المستخدم + reject_user: ارفض المستخدم remove_avatar_user: احذف الصورة الرمزية reopen_report: إعادة فتح التقرير reset_password_user: إعادة تعيين كلمة المرور @@ -279,6 +282,7 @@ ar: silence_account: كتم الحساب suspend_account: تعليق الحساب unassigned_report: إلغاء إسناد الشكوى + unblock_email_account: إلغاء حظر عنوان البريد الإلكتروني unsensitive_account: إلغاء تحديد الوسائط في حسابك على أنها حساسة unsilence_account: إلغاء كتم الحساب unsuspend_account: إلغاء تعليق الحساب @@ -387,9 +391,19 @@ ar: updated_msg: تم تحديث الإيموجي بنجاح! upload: رفع dashboard: + active_users: مستخدمين نشطين + interactions: تفاعلات + media_storage: تخزين الوسائط + new_users: مستخدمون جدد + opened_reports: تقارير مفتوحة + resolved_reports: تقارير تم حلها software: البرنامج + sources: مصادر التسجيل space: المساحة المستخدَمة title: لوح المراقبة + top_languages: اللغات الأكثر نشاطا + top_servers: الخوادم الأكثر نشاطا + website: موقع الويب domain_allows: add_new: إضافة النطاق إلى القائمة البيضاء created_msg: تمت إضافة النطاق إلى القائمة البيضاء بنجاح @@ -528,8 +542,6 @@ ar: title: إنشاء قاعدة IP جديدة no_ip_block_selected: لم يطرأ أي تغيير على أي قاعدة IP بما أنه لم يتم اختيار أي واحد title: قواعد الـIP - pending_accounts: - title: الحسابات المعلقة (%{count}) relationships: title: علاقات %{acct} relays: @@ -551,6 +563,7 @@ ar: report_notes: created_msg: تم إنشاء ملاحظة الشكوى بنجاح! destroyed_msg: تم حذف ملاحظة الشكوى بنجاح! + today_at: اليوم على %{time} reports: account: notes: @@ -560,31 +573,29 @@ ar: other: "%{count} ملاحظات" two: "%{count} ملاحظتَيْن" zero: "%{count} ملاحظات" - reports: - few: "%{count} تقارير" - many: "%{count} تقارير" - one: "%{count} تقرير واحد" - other: "%{count} تقارير" - two: "%{count} تقريرَيْن" - zero: "%{count} تقارير" + action_log: سجل المراجعة action_taken_by: تم اتخاذ الإجراء مِن طرف are_you_sure: هل أنت متأكد ؟ assign_to_self: عين لي assigned: تعين رئيس by_target_domain: نطاق الحساب المبلّغ عنه + category: الفئة 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: الحل مع ملاحظة create_and_unresolve: إعادة فتح مع ملاحظة delete: حذف placeholder: قم بوصف الإجراءات التي تم اتخاذها أو أي تحديثات أخرى ذات علاقة... + title: الملاحظات reopen: إعادة فتح الشكوى report: 'الشكوى #%{id}' reported_account: حساب مُبلّغ عنه @@ -592,11 +603,13 @@ ar: resolved: معالجة resolved_msg: تم حل تقرير بنجاح! status: الحالة + statuses: المحتوى المبلغ عنه target_origin: مصدر الحساب المبلغ عنه title: الشكاوى unassign: إلغاء تعيين unresolved: غير معالجة updated_at: محدث + view_profile: اعرض الصفحة التعريفية rules: add_new: إضافة قاعدة delete: حذف @@ -698,15 +711,12 @@ ar: destroyed_msg: تم حذف التحميل مِن الموقع بنجاح! statuses: back_to_account: العودة إلى صفحة الحساب + back_to_report: العودة إلى صفحة التقرير batch: - delete: حذف - nsfw_off: تعيينه كمنشور غير حساس - nsfw_on: تعيينه كمنشور حساس + remove_from_report: إزالة من التقرير deleted: محذوف - failed_to_execute: خطأ في التفعيل media: title: الوسائط - no_media: لا تحتوي على وسائط no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد title: منشورات الحساب with_media: تحتوي على وسائط @@ -719,21 +729,37 @@ ar: sidekiq_process_check: message_html: لا توجد عملية Sidekiq قيد التشغيل لقائمة الانتظار %{value}. يرجى مراجعة إعدادات Sidekiq الخاصة بك tags: - accounts_today: استخدامات هذا اليوم - accounts_week: استخدامات هذا الأسبوع - breakdown: توزيع استخدام اليوم حسب المصدر - last_active: آخر نشاط - most_popular: الأكثر شعبية - most_recent: الأحدث - name: الوسم review: حالة المراجعة - reviewed: مُراجَع - title: الوسوم - trending_right_now: متداول اللحظة - unique_uses_today: "%{count} منشورات اليوم" - unreviewed: غير مُراجَع updated_msg: تم تحديث إعدادات الوسوم بنجاح title: الإدارة + trends: + allow: السماح + approved: مصادق عليه + disallow: رفض + links: + allow: السماح بالرابط + allow_provider: السماح للناشر + disallow: رفض الرابط + disallow_provider: عدم السماح للناشر + title: الروابط المتداولة + pending_review: في انتظار المراجعة + preview_card_providers: + title: الناشرون + rejected: مرفوض + tags: + current_score: التقييم الحالي %{score} + dashboard: + tag_accounts_measure: استخدامات فريدة + tag_languages_dimension: أفضل اللغات + tag_servers_dimension: الخوادم الأكثر نشاطا + tag_servers_measure: خوادم أخرى + tag_uses_measure: إجمالي الاستخدامات + listable: يمكن اقتراحه + not_listable: لن يتم اقتراحه + not_trendable: لن يظهر في المتداولة + not_usable: لا يمكن استخدامه + title: الوسوم المتداولة + title: المتداوَلة warning_presets: add_new: إضافة واحد جديد delete: حذف @@ -748,9 +774,6 @@ ar: body: قام %{reporter} بالإبلاغ عن %{target} body_remote: أبلغ شخص ما من %{domain} عن %{target} subject: تقرير جديد ل%{instance} (#%{id}) - new_trending_tag: - body: 'الوسم #%{name} متداوَل اليوم، ولكن لم يتم مراجعته من قبل. لن يتم عرضه علنا إلا إذا سمحت بذلك، أو قم بحفظ هذه الإستمارة كما هي حتى تتجاهله مستقبَلًا.' - subject: وسم جديد في انتظار المراجعة على %{instance} (#%{name}) aliases: add_new: أنشئ كُنية created_msg: تم إنشاء الكُنية الجديدة بنجاح. يمكنكم الآن الشروع في الإنتقال مِن حسابكم القديم. @@ -802,6 +825,7 @@ ar: invalid_reset_password_token: رمز إعادة تعيين كلمة المرور غير صالح أو منتهي الصلاحية. يرجى طلب واحد جديد. link_to_otp: أدخل رمز ذو عامِلين من هاتفك أو رمز الاسترجاع link_to_webauth: استخدم جهاز مفتاح الأمان الخاص بك + log_in_with: الولوج عبر login: تسجيل الدخول logout: خروج migrate_account: الانتقال إلى حساب آخر @@ -957,9 +981,10 @@ ar: changes_saved_msg: تم حفظ التعديلات بنجاح! copy: نسخ delete: احذف - no_batch_actions_available: ليس هناك أية إجراءات بالجملة على هذه الصفحة + none: لا شيء order_by: ترتيب بحسب save_changes: حفظ التغييرات + today: اليوم validation_errors: few: هناك شيء ما ليس على ما يرام! يُرجى مراجعة الأخطاء الـ %{count} أدناه many: هناك شيء ما ليس على ما يرام! يُرجى مراجعة الأخطاء الـ %{count} أدناه @@ -969,26 +994,6 @@ ar: zero: هناك شيء ما ليس على ما يرام! يُرجى مراجعة الأخطاء الـ %{count} أدناه html_validator: invalid_markup: 'يحتوي على علامة HTML غير صالحة: %{error}' - identity_proofs: - active: نشط - authorize: نعم ، قم بترخيصه - authorize_connection_prompt: هل تريد ترخيص هذا الاتصال المشفّر؟ - errors: - failed: فشل اتصال التشفير. الرجاء المحاولة مرة أخرى من %{provider}. - keybase: - invalid_token: رموز Keybase هي تجزئة من التوقيعات ويجب أن تكون 66 حرف hex - verification_failed: Keybase لا يستطيع التعرف على هذا الرمز كتوقيع لمستخدم Keybase %{kb_username}، الرجاء إعادة المحاولة من Keybase. - wrong_user: لا يمكن إنشاء دليل لـ%{proving} أثناء تسجيل الدخول كـ%{current}. قم بتسجيل الدخول كـ%{proving} ثم حاول مرة أخرى. - explanation_html: هنا يمكنك أن تربط بشكل مُشفر هوياتك الأُخريات من منصات أخرى مثل Keybase. هذا يتيح للأشخاص الآخرين إرسال رسائل مشفرة إليك على تلك المنصات ويسمح لهم بالثقة في أن المحتوى الذي ترسله لهم يأتي منك أنت. - i_am_html: أنا %{username} على %{service}. - identity: الهوية - inactive: ليس نشطا - publicize_checkbox: 'وقم بتبويق هذا:' - publicize_toot: 'متحقق منه! أنا %{username} على %{service}: %{url}' - remove: احذف الدليل مِن الحساب - removed: تم حذف الدليل مِن الحساب بنجاح - status: حالة التحقق - view_proof: عرض الدليل imports: errors: over_rows_processing_limit: يحتوي على أكثر من %{count} صف @@ -1274,7 +1279,6 @@ ar: edit_profile: عدّل الصفحة التعريفية export: تصدير البيانات featured_tags: الوسوم الشائعة - identity_proofs: دلائل الهوية import: استيراد import_and_export: استيراد وتصدير migrate: تهجير الحساب @@ -1320,13 +1324,11 @@ ar: zero: 'يحتوي على وسوم غير مسموح بها: %{tags}' errors: in_reply_not_found: إنّ المنشور الذي تحاول الرد عليه غير موجود على ما يبدو. - language_detection: اكتشاف اللغة تلقائيا open_in_web: افتح في الويب over_character_limit: تم تجاوز حد الـ %{max} حرف المسموح بها pin_errors: limit: لقد بلغت الحد الأقصى للتبويقات المدبسة ownership: لا يمكن تدبيس تبويق نشره شخص آخر - private: لا يمكن تدبيس تبويق لم يُنشر للعامة reblog: لا يمكن تثبيت ترقية poll: total_people: @@ -1517,24 +1519,19 @@ ar: subject: الرجاء تأكيد محاولة الولوج title: محاولة الولوج warning: - explanation: - disable: عندما يتم تجميد حسابك، تظل بيانات حسابك سليمة، ولكن لا يمكنك تنفيذ أي إجراءات حتى يتم فتحه. - sensitive: سيتم التعامل مع ملفات الوسائط المحملة والوسائط المرتبطة لديك على أنها حساسة. - silence: في حين أن حسابك محدود، فإن الأشخاص الذين يتبعونك بالفعل سيشاهدون تبويقاتك على هذا الخادم، وقد يتم استثناؤك من قوائم عامة مختلفة. ومع ذلك، قد يمكن للآخرين متابعتك يدويا. - suspend: تم إيقاف حسابك بشكل دائم، وتم إزالة كافة تبويقاتك وملفات الوسائط التي تم تحميلها بشكل لا رجعة فيه من هذا الخادم، و كذا على الخوادم حيث كان لديك فيها متابِعون. - get_in_touch: يمكنك الرد على هذا البريد الإلكتروني للاتصال بفريق %{instance}. + categories: + spam: مزعج + violation: ينتهك المحتوى المبادئ التوجيهية التالية للمجتمع + reason: 'السبب:' review_server_policies: مراجعة شروط السيرفر - statuses: 'خصيصا لـ:' subject: disable: تم تجميد حسابك %{acct} none: تحذير إلى %{acct} - sensitive: تم وضع علامة حساسة على وسائط منشورات حسابك %{acct} silence: إنّ حسابك %{acct} محدود suspend: لقد تم تعليق حسابك %{acct} title: disable: الحساب مُجمَّد none: تحذير - sensitive: تم وضع علامة حساسة على الوسائط الخاصة بك silence: الحساب محدود suspend: الحساب مُعلَّق welcome: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index d0a8b3d34..a10bd5f2f 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -12,10 +12,10 @@ ast: contact_unavailable: N/D discover_users: Usuarios nuevos documentation: Documentación - federation_hint_html: Con una cuenta en %{instance} vas ser a siguir a persones de cualesquier sirvidor de Mastodon y más. + federation_hint_html: Con una cuenta en %{instance} vas ser a siguir a persones de cualesquier sirvidor de Mastodon y facer más coses. get_apps: En preseos móviles hosted_on: Mastodon ta agospiáu en %{domain} - learn_more: Deprender más + learn_more: Saber más privacy_policy: Política de privacidá server_stats: 'Estadístiques del sirvidor:' source_code: Códigu fonte @@ -23,7 +23,7 @@ ast: one: estáu other: estaos status_count_before: Que crearon - tagline: Sigui a persones y conoz a más + tagline: Sigui a persones y conoz a más xente terms: Términos del serviciu unavailable_content_description: domain: Sirvidor @@ -54,7 +54,6 @@ ast: bot: Robó admin: accounts: - approve_all: Aprobar too are_you_sure: "¿De xuru?" by_domain: Dominiu domain: Dominiu @@ -65,7 +64,6 @@ ast: title: Allugamientu protocol: Protocolu reject: Refugar - reject_all: Refugar too resend_confirmation: already_confirmed: Esti usuariu yá ta confirmáu send: Reunviar les instrucciones @@ -75,14 +73,13 @@ ast: moderator: Llendador user: Usuariu statuses: Estaos - time_in_queue: Esperando na cola %{time} title: Cuentes username: Nome d'usuariu announcements: - destroyed_msg: "¡L'anunciu desanicióse con ésitu!" + destroyed_msg: "¡L'anunciu desanicióse correutamente!" new: title: Anunciu nuevu - published_msg: "¡L'anunciu espublizóse con ésitu!" + published_msg: "¡L'anunciu espublizóse coreutamente!" title: Anuncios custom_emojis: by_domain: Dominiu @@ -101,16 +98,10 @@ ast: available: Disponible expired: Caducó title: Invitaciones - pending_accounts: - title: Cuentes pendientes (%{count}) relays: save_and_enable: Guardar y activar status: Estáu reports: - account: - reports: - one: "%{count} informe" - other: "%{count} informes" are_you_sure: "¿De xuru?" status: Estáu title: Informes @@ -122,12 +113,6 @@ ast: title: Descripción del sirvidor site_title: Nome del sirvidor title: Axustes del sitiu - statuses: - failed_to_execute: Fallu al executar - tags: - most_recent: Lo más recién - name: Etiqueta - title: Etiquetes title: Alministración admin_mailer: new_pending_account: @@ -135,13 +120,11 @@ ast: new_report: body: "%{reporter} informó de %{target}" body_remote: Daquién dende %{domain} informó de %{target} - new_trending_tag: - body: 'Güei la etiqueta #%{name} ye tendencia pero nun se revisó anteriormente. Nun va amosase públicamente a nun ser que lo permitas o guardes el formulariu como ta pa nun saber más d''ello.' aliases: empty: Nun tienes nomatos. appearance: advanced_web_interface: Interfaz web avanzada - advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol anchor de la pantalla, la interfaz web avanzada permítete configurar munches columnes estremaes pa ver tanta información al empar como quieras: Aniciu, avisos, llinia temporal federada, cualesquier cantidá de llistes y etiquetes...' + advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol llargor de la pantalla, la interfaz web avanzada permítete configurar munches columnes estremaes pa ver tanta información al empar como quieras: Aniciu, avisos, llinia temporal federada, cualesquier cantidá de llistes y etiquetes...' animations_and_accessibility: Animaciones y accesibilidá confirmation_dialogs: Diálogos de confirmación discovery: Descubrición @@ -155,8 +138,8 @@ ast: warning: Ten munchu curiáu con estos datos, ¡enxamás nun los compartas con naide! auth: change_password: Contraseña - checkbox_agreement_html: Aceuto les <a href="%{rules_path}" target="_blank">regles del sirvidor</a> y los <a href="%{terms_path}" target="_blank">términos del serviciu</a> - checkbox_agreement_without_rules_html: Aceuto los <a href="%{terms_path}" target="_blank"> términos del serviciu</a> + checkbox_agreement_html: Acepto les <a href="%{rules_path}" target="_blank">regles del sirvidor</a> y los <a href="%{terms_path}" target="_blank">términos del serviciu</a> + checkbox_agreement_without_rules_html: Acepto los <a href="%{terms_path}" target="_blank"> términos del serviciu</a> delete_account: Desaniciu de la cuenta delete_account_html: Si deseyes desaniciar la to cuenta, pues <a href="%{path}">siguir equí</a>. Va pidísete la confirmación. description: @@ -234,13 +217,10 @@ ast: resources: Recursos generic: all: Too - changes_saved_msg: "¡Los cambeos guardáronse con ésitu!" + changes_saved_msg: "¡Los cambeos guardáronse correutamente!" order_by: Clasificación - save_changes: Guardar cambeos - identity_proofs: - authorize: Sí, autorizar - i_am_html: Soi %{username} de %{service}. - identity: Identidá + save_changes: Guardar los cambeos + today: güei imports: modes: merge: Mecíu @@ -353,7 +333,7 @@ ast: mac: Mac other: plataforma desconocida revoke: Revocar - revoke_success: La sesión revocóse con esitu + revoke_success: La sesión revocóse correutamente title: Sesiones settings: account: Cuenta @@ -384,11 +364,9 @@ ast: one: "%{count} videu" other: "%{count} vídeos" boosted_from_html: Compartióse'l barritu dende %{acct_link} - language_detection: Deteutala automáticamente pin_errors: limit: Yá fixesti'l númberu máximu de barritos ownership: Nun pue fixase'l barritu d'otra persona - private: Nun puen fixase los barritos que nun seyan públicos reblog: Nun pue fixase un barritu compartíu poll: total_people: @@ -418,16 +396,14 @@ ast: two_factor_authentication: disable: Desactivar enabled: L'autenticación en dos pasos ta activada - enabled_success: L'autenticación en dos pasos activóse con ésitu + enabled_success: L'autenticación en dos pasos activóse correutamente generate_recovery_codes: Xenerar códigos de recuperación lost_recovery_codes: Los códigos de recuperación permítente recuperar l'accesu a la cuenta si pierdes el teléfonu. Si tamién pierdes estos códigos, pues rexeneralos equí. Los códigos de recuperación vieyos van invalidase. recovery_codes: Códigos de recuperación - recovery_codes_regenerated: Los códigos de recuperación rexeneráronse con ésitu + recovery_codes_regenerated: Los códigos de recuperación rexeneráronse correutamente webauthn: Claves d'autenticación user_mailer: warning: - explanation: - suspend: La to cuenta suspendióse y tolos espublizamientos qu'espublizares desaniciáronse de mou irreversible d'esti sirvidor y sirvidores onde teníes siguidores. subject: suspend: Suspendióse la cuenta %{acct} title: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index ffa78b386..f97d6508f 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -89,7 +89,6 @@ bg: accounts: add_email_domain_block: Блокиране на имейл домейн approve: Одобряване - approve_all: Одобряване на всички are_you_sure: Сигурни ли сте? avatar: Аватар by_domain: Домейн @@ -135,7 +134,6 @@ bg: active: Активно all: Всичко pending: Чакащо - silenced: Заглушено suspended: Спряно title: Модерация moderation_notes: Модераторни бележки @@ -152,7 +150,6 @@ bg: push_subscription_expires: PuSH абонаментът изтича redownload: Опресняване на профил reject: Отхвърляне - reject_all: Отхвърляне на всичко rejected_msg: Успешно отхвърлена заявка за регистрация на %{username} remove_avatar: Премахване на аватар remove_header: Премахване на заглавна част diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 7e6fee889..dd3eb91d9 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -94,7 +94,6 @@ bn: accounts: add_email_domain_block: নিষিদ্ধ করা ই-মেইল ডোমেইন approve: অনুমোদন দিন - approve_all: প্রত্যেক কে অনুমতি দিন are_you_sure: আপনি কি নিশ্চিত ? avatar: অবতার by_domain: ওয়েবসাইট/কার্যক্ষেত্র @@ -139,7 +138,6 @@ bn: active: চালু all: সব pending: অপেক্ষিত আছে - silenced: নীরব করা হয়েছে suspended: স্থগিত করা হয়েছে title: প্রশাসনা moderation_notes: প্রশাসনের কিছু লেখা @@ -156,7 +154,6 @@ bn: push_subscription_expires: PuSH সাবস্ক্রিপশনের মেয়াদ শেষ হয়ে গেছে redownload: প্রোফাইল সতেজ করুন reject: প্রত্যাখ্যান করুন - reject_all: সব প্রত্যাখ্যান করুন remove_avatar: অবতার অপসারণ করুন remove_header: হেডার এর ছবি অপসারণ করুন resend_confirmation: @@ -184,7 +181,6 @@ bn: statuses: স্থিতিগুলি subscribe: সদস্যতা suspended: স্থগিত করা হয়েছে - time_in_queue: কাতারে অপেক্ষা করছে %{time} title: একাউন্ট সমূহ unconfirmed_email: অনিশ্চিত ইমেল undo_silenced: নীরবতা পূর্বাবস্থা @@ -280,8 +276,6 @@ bn: expired: মেয়াদোত্তীর্ণ title: ফিল্টার title: আমন্ত্রণগুলি - pending_accounts: - title: মুলতুবি থাকা অ্যাকাউন্টগুলি (%{count}) relationships: title: "%{acct} এর সম্পর্কগুলি" relays: diff --git a/config/locales/br.yml b/config/locales/br.yml index d4320859f..31b8e2c47 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -72,13 +72,11 @@ br: remote: A-bell moderation: active: Oberiant - silenced: Mudet suspended: Astalet perform_full_suspension: Astalañ protocol: Komenad public: Publik reject: Nac'hañ - reject_all: Nac'hañ pep hini remove_header: Dilemel an talbenn reset: Adderaouekaat reset_password: Adderaouekaat ar ger-tremen @@ -166,13 +164,7 @@ br: site_title: Anv ar servijer title: Arventennoù al lec'hienn statuses: - batch: - delete: Dilemel deleted: Dilamet - no_media: Media ebet - tags: - name: Ger-klik - title: Gerioù-klik warning_presets: add_new: Ouzhpenniñ unan nevez delete: Dilemel @@ -244,8 +236,6 @@ br: copy: Eilañ delete: Dilemel order_by: Urzhiañ dre - identity_proofs: - identity: Identelezh invites: expires_in: '1800': 30 munutenn @@ -329,5 +319,27 @@ br: welcome: edit_profile_action: Kefluniañ ar profil subject: Donemat e Mastodoñ + title: Degemer mat e bourzh, %{name}! + users: + signed_in_as: 'Aet-tre evel:' + suspicious_sign_in_confirmation: N'ez aec'h ket tre d'ho kont deus ar benveg-se araok, neuze eo kaset deoc'h ur c'hod surentez d'ho postel evit bezañ sur c'hwi eo. + verification: + explanation_html: 'Gallout a rit <strong>gwiriañ c''hwi a zo perc''henn. ez liammoù metadata ho profil</strong>. Ret eo d''al lec''hienn web staget enderc''hel ul liamm evit mont d''ho profil Mastodon. <strong>Ret eo<strong> d''al liamm-se enderc''hel un doarenn <code>rel="me"</code>. Ne ra forzh an destenn a zo e-barzh al liamm. Setu ur skouer:' + verification: Amprouadur webauthn_credentials: + add: Ouzphennañ un alc'hwez surentez nevez + create: + error: Ur guden a oa en ur ouzphennañ hoc'h alc'hwez surentez. Mar plij, klaskit c'hoazh. + success: Hoc'h alc'hwez surentez a zo bet ouzphennet gant berzh. delete: Dilemel + delete_confirmation: Sur oc'h e fell deoc'h dilemel an alc'hwez surentez-se ? + description_html: Ma'z eo aotreet <strong>dilesadur dre alc'hwez surentez</strong>, ret e vo deoc'h implijout unan eus hoc'h alc'hwezioù surentez evit mont-tre. + destroy: + error: Ur gudenn a oa en ur zilemel hoc'h alc'hwez surentez. Mar plij, klaskit c'hoazh. + success: Hoc'h alc'hwez surentez a zo bet dilamet gant berzh. + invalid_credential: Alc'hwez surentez direizh + nickname_hint: Skrivit lesanv hoc'h alc'hwez surentez nevez + not_enabled: WebAuthn n'eo ket aotreet ganeoc'h c'hoazh + not_supported: Alc'hwezioù surentez a zo diembreg gant ar merdeer-se + otp_required: Evit implijout alc'hwezioù surentez, aotrit dilesadur dre eil-elfenn da gentañ. + registered_on: Enrollet d'ar %{date} diff --git a/config/locales/ca.yml b/config/locales/ca.yml index c0aef6c37..a3aa1fb92 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -16,10 +16,10 @@ ca: contact: Contacte contact_missing: No configurat contact_unavailable: N/D - discover_users: Descobreix usuaris + discover_users: Descobrir usuaris documentation: Documentació federation_hint_html: Amb un compte de %{instance} podràs seguir persones de qualsevol servidor Mastodon i altres. - get_apps: Prova una aplicació mòbil + get_apps: Provar una aplicació mòbil hosted_on: Mastodon allotjat a %{domain} instance_actor_flash: | Aquest compte és un actor virtual utilitzat per a representar al propi servidor i no cap usuari individual. @@ -99,7 +99,6 @@ ca: accounts: add_email_domain_block: Afegir el domini de correu a la llista negra approve: Aprova - approve_all: Aprova'ls tots approved_msg: L’aplicació del registre de %{username} s’ha aprovat amb èxit are_you_sure: N'estàs segur? avatar: Avatar @@ -114,6 +113,7 @@ ca: confirm: Confirma confirmed: Confirmat confirming: Confirmant + custom: Personalitzat delete: Esborra les dades deleted: Esborrats demote: Degrada @@ -132,7 +132,7 @@ ca: enabled: Habilitat enabled_msg: El compte de %{username} s’ha descongelat amb èxit followers: Seguidors - follows: Segueix + follows: Seguits header: Capçalera inbox_url: URL de la safata d'entrada invite_request_text: Motiu del registre @@ -153,7 +153,6 @@ ca: active: Actiu all: Tot pending: Pendent - silenced: Silenciat suspended: Suspès title: Moderació moderation_notes: Notes de moderació @@ -171,7 +170,6 @@ ca: redownload: Actualitza el perfil redownloaded_msg: El perfil de %{username} s’ha refrescat des de l’origen amb èxit reject: Rebutja - reject_all: Rebutja'ls tots rejected_msg: L’aplicació de registre de %{username} s’ha rebutjat amb èxit remove_avatar: Eliminar avatar remove_header: Treu la capçalera @@ -206,12 +204,14 @@ ca: silence: Silenci silenced: Silenciat statuses: Tuts + strikes: Accions anteriors subscribe: Subscriu 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ó. - time_in_queue: Esperant en la cua %{time} title: Comptes + unblock_email: Desbloqueja l'adreça de correu + unblocked_email_msg: Adreça de correu de %{username} desbloquejada amb èxit unconfirmed_email: Correu electrònic sense confirmar undo_sensitized: Desmarcar com a sensible undo_silenced: Deixa de silenciar @@ -226,6 +226,7 @@ ca: whitelisted: Llista blanca action_logs: action_types: + approve_user: Aprova l'usuari assigned_to_self_report: Assigna l'informe change_email_user: Canvia l'adreça electrònica per l'usuari confirm_user: Confirma l'usuari @@ -243,6 +244,7 @@ ca: destroy_domain_allow: Esborra el domini permès destroy_domain_block: Esborra el bloqueig de domini destroy_email_domain_block: Esborra el bloqueig de domini de l'adreça de correu + destroy_instance: Purga Domini destroy_ip_block: Eliminar regla IP destroy_status: Esborra el tut destroy_unavailable_domain: Esborra domini no disponible @@ -255,6 +257,7 @@ ca: enable_user: Activa l'usuari memorialize_account: Memoritza el compte promote_user: Promou l'usuari + reject_user: Rebutja l'usuari remove_avatar_user: Eliminar avatar reopen_report: Reobre l'informe reset_password_user: Restableix la contrasenya @@ -263,6 +266,7 @@ ca: silence_account: Silencia el compte suspend_account: Suspèn el compte unassigned_report: Des-assigna l'informe + unblock_email_account: Desbloqueja l'adreça de correu unsensitive_account: Desmarcar els mèdia en el teu compte com a sensibles unsilence_account: Desfés el silenci del compte unsuspend_account: Desfés la suspensió del compte @@ -271,6 +275,7 @@ ca: update_domain_block: Actualitza el Bloqueig de Domini update_status: Actualitza l'estat actions: + 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}" confirm_user_html: "%{name} ha confirmat l'adreça de correu electrònic de l'usuari %{target}" @@ -288,6 +293,7 @@ ca: destroy_domain_allow_html: "%{name} no permet la federació amb el domini %{target}" destroy_domain_block_html: "%{name} ha desbloquejat el domini %{target}" destroy_email_domain_block_html: "%{name} ha desbloquejat el domini de correu electrònic %{target}" + destroy_instance_html: "%{name} ha purgat el domini %{target}" destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}" destroy_status_html: "%{name} ha eliminat el tut de %{target}" destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}" @@ -300,6 +306,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_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}" reset_password_user_html: "%{name} ha restablert la contrasenya de l'usuari %{target}" @@ -308,6 +315,7 @@ ca: silence_account_html: "%{name} ha silenciat el compte de %{target}" suspend_account_html: "%{name} ha suspès el compte de %{target}" unassigned_report_html: "%{name} ha des-assignat l'informe %{target}" + unblock_email_account_html: "%{name} ha desbloquejat l'adreça de correu de %{target}" unsensitive_account_html: "%{name} ha desmarcat com sensibles els mèdia de %{target}" unsilence_account_html: "%{name} ha llevat el silenci del compte %{target}" unsuspend_account_html: "%{name} ha llevat la suspensió del compte de %{target}" @@ -341,7 +349,7 @@ ca: assign_category: Assigna una categoria by_domain: Domini copied_msg: S'ha creat correctament la còpia local de l'emoji - copy: Copia + copy: Copiar copy_failed_msg: No s'ha pogut fer una còpia local d'aquest emoji create_new_category: Crea una categoria nova created_msg: Emoji creat amb èxit! @@ -449,12 +457,12 @@ ca: empty: Cap domini de correu a la llista negre. from_html: des de %{domain} new: - create: Afegeix un domini + create: Afegir un domini title: Nova adreça de correu en la llista negra title: Llista negra de correus electrònics follow_recommendations: description_html: "<strong>Seguir les recomanacions ajuda als nous usuaris a trobar ràpidament contingut interessant</strong>. Quan un usuari no ha interactuat prou amb d'altres com per a formar a qui seguir personalment, aquests comptes li seran recomanats. Es recalculen a diari a partir d'una barreja de comptes amb els compromisos recents més alts i el nombre més alt de seguidors locals per a un idioma determinat." - language: Per llenguatge + language: Per idioma status: Estat suppress: Suprimeix les recomanacions de seguiment suppressed: Suprimit @@ -465,6 +473,7 @@ ca: back_to_limited: Limitades back_to_warning: Avís by_domain: Domini + confirm_purge: Estàs segur que vols eliminar permanentment les dades d'aquest domini? delivery: all: Totes clear: Neteja els errors de lliurament @@ -480,6 +489,7 @@ ca: delivery_available: El lliurament està disponible delivery_error_days: Dies de fallades de lliurament delivery_error_hint: Si el lliurament no és possible per %{count} dies, serà automàticament marcat com a no lliurable. + destroyed_msg: Les dades de %{domain} ara son en la cua per a esborrat imminent. empty: No s'han trobat dominis. known_accounts: one: "%{count} compte conegut" @@ -490,6 +500,7 @@ ca: title: Moderació private_comment: Comentari privat public_comment: Comentari públic + purge: Purga title: Federació total_blocked_by_us: Bloquejats per nosaltres total_followed_by_them: Seguits per ells @@ -519,8 +530,6 @@ ca: title: Crea nova regla IP no_ip_block_selected: No s’ha canviat cap regla IP perquè no s’han seleccionat title: Regles IP - pending_accounts: - title: Comptes pendents (%{count}) relationships: title: relacions del %{acct} relays: @@ -542,32 +551,44 @@ ca: report_notes: created_msg: La nota del informe s'ha creat correctament! destroyed_msg: La nota del informe s'ha esborrat correctament! + today_at: Avui a les %{time} reports: account: notes: one: "%{count} nota" other: "%{count} notes" - reports: - one: "%{count} informe" - other: "%{count} informes" + action_log: Registre d'auditoria action_taken_by: Mesures adoptades per + actions: + other_description_html: Veu més opcions controlant el comportament del compte i personalitza la comunicació al compte reportat. + 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:' + add_to_report: Afegir més al informe are_you_sure: N'estàs segur? assign_to_self: Assignar-me assigned: Moderador assignat by_target_domain: Domini del compte reportat + category: Categoria + category_description_html: La raó que aquest compte o contingut ha estat reportat serà citat en la comunicació amb el compte reportat comment: none: Cap + comment_description_html: 'Per a donar més informació, %{name} ha escrit:' created_at: Reportat + delete_and_resolve: Esborra i resol forwarded: Reenviat forwarded_to: Reenviat a %{domain} mark_as_resolved: Marca com a resolt mark_as_unresolved: Marcar com a sense resoldre + no_one_assigned: Ningú notes: - create: Afegeix una nota + create: Afegir una nota create_and_resolve: Resol amb una nota create_and_unresolve: Reobre amb una nota delete: Esborra 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 reopen: Reobre l'informe report: 'Informe #%{id}' reported_account: Compte reportat @@ -575,11 +596,14 @@ ca: resolved: Resolt resolved_msg: Informe resolt amb èxit! status: Estat + statuses: Contingut reportat + statuses_description_html: El contingut ofensiu serà citat en comunicació amb el compte reportat target_origin: Origen del compte reportat title: Informes unassign: Treu l'assignació unresolved: No resolt updated_at: Actualitzat + view_profile: Veure perfil rules: add_new: Afegir norma delete: Suprimeix @@ -681,15 +705,13 @@ ca: destroyed_msg: La càrrega al lloc s'ha suprimit correctament! statuses: back_to_account: Torna a la pàgina del compte + back_to_report: Torna a la pàgina del informe batch: - delete: Suprimeix - nsfw_off: Marcar com a no sensible - nsfw_on: Marcar com a sensible + remove_from_report: Treu del informe + report: Informe deleted: Esborrats - failed_to_execute: No s'ha pogut executar media: title: Contingut multimèdia - no_media: Sense contingut multimèdia 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 @@ -702,23 +724,53 @@ ca: sidekiq_process_check: message_html: No hi ha cap procés de Sidekiq executant-se per a la cua (o cues) de %{value}. Si us plau revisa la teva configuració de Sidekiq tags: - accounts_today: Usos únics actuals - accounts_week: Usos únics d'aquesta setmana - breakdown: Desglossament de l’ús actual per origen - last_active: Darrer actiu - most_popular: Més populars - most_recent: Més recent - name: Etiqueta review: Revisar l'estat - reviewed: Revisades - title: Etiquetes - trending_right_now: Actualment en tendència - unique_uses_today: "%{count} publicacions d'avui" - unreviewed: Sense revisar updated_msg: Ajustaments d'etiquetes actualitzats amb èxit title: Administració + trends: + allow: Permet + approved: Aprovat + disallow: No permès + links: + allow: Permet enllaç + allow_provider: Permet mitjà + disallow: No permetre l'enllaç + disallow_provider: No permetre el mitjà + shared_by_over_week: + one: Compartit per un usuari en la darrera setmana + other: Compartit per %{count} usuaris 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 + preview_card_providers: + allowed: Els enllaços d'aquest mitjà poden estar en tendència + rejected: Els enllaços d'aquest mitjà no poden estar en tendència + title: Mitjans + rejected: Rebutjat + tags: + current_score: Puntuació actual %{score} + dashboard: + tag_accounts_measure: usos únics + tag_languages_dimension: Els millors idiomes + tag_servers_dimension: Els millors servidors + tag_servers_measure: diferents servidors + tag_uses_measure: total usos + listable: Es pot suggerir + not_listable: No es pot suggerir + not_trendable: No apareixeran en les tendències + not_usable: No pot ser emprat + peaked_on_and_decaying: Punt màxim el dia %{date}, ara decaient + title: Etiquetes en tendència + trendable: Pot aparèixer en les tendències + trending_rank: 'Tendència #%{rank}' + usable: Pot ser emprat + usage_comparison: Usat %{today} vegades avui, comparat amb %{yesterday} d'ahir + used_by_over_week: + one: Emprat per un usuari en la darrera setmana + other: Emprat per %{count} usuaris en la darrera setmana + title: Tendència warning_presets: - add_new: Afegeix-ne un de nou + add_new: Afegir-ne un de nou delete: Esborra edit_preset: Edita l'avís predeterminat empty: Encara no has definit cap preavís. @@ -731,9 +783,16 @@ ca: body: "%{reporter} ha informat de %{target}" body_remote: Algú des de el domini %{domain} ha informat sobre %{target} subject: Informe nou per a %{instance} (#%{id}) - new_trending_tag: - body: 'La etiqueta #%{name} està actualment en tendència però no s''ha revisat prèviament. No es mostrarà públicament tret que ho permetis o guardis el formulari tal com està per a no tornar a escoltar res al respecte.' - subject: Nova etiqueta pendent de revisió a %{instance} (#%{name}) + new_trending_links: + body: Els enllaços següents son tendència avui però els seus mitjans no han estat verificats. No seran mostrats públicament fins que els aprovis. No es generaran noves notificacions dels mateixos mitjans. + no_approved_links: Actualment no hi ha enllaços en tendència aprovats. + requirements: L'enllaç en tendència més baixa aprovat és actualment "%{lowest_link_title}" amb una puntuació de %{lowest_link_score}. + subject: Nou enllaços en tendència pendents de revisar a %{instance} + new_trending_tags: + body: 'Les següents etiquetes son tendència avui però no han estat prèviament revisades. No seran mostrades públicament fins que les aprovis:' + no_approved_tags: Actualment no hi ha etiquetes en tendència aprovades. + requirements: L'etiqueta en tendència més baixa aprovada és actualment "%{lowest_tag_name}" amb una puntuació de %{lowest_tag_score}. + subject: Noves etiquetes en tendència pendents de ser revisades a %{instance} aliases: add_new: Crea un àlies created_msg: Nou àlies creat amb èxit. Ara pots iniciar el moviment des de'l compte vell. @@ -743,7 +802,7 @@ ca: remove: Desvincula l'àlies appearance: advanced_web_interface: Interfície web avançada - advanced_web_interface_hint: 'Si vols fer ús de tota l''amplada de la teva pantalla, l''interfície web avançada et permet configurar diverses columnes per a veure molta més informació al mateix temps: Inici, notificacions, línia de temps federada i qualsevol número de llistes i etiquetes.' + advanced_web_interface_hint: 'Si vols fer ús de tota l''amplada de la teva pantalla, l''interfície web avançada et permet configurar diverses columnes per a veure molta més informació al mateix temps: Inici, notificacions, línia de temps federada i qualsevol quantitat de llistes i etiquetes.' animations_and_accessibility: Animacions i accessibilitat confirmation_dialogs: Diàlegs de confirmació discovery: Descobriment @@ -771,7 +830,7 @@ ca: auth: apply_for_account: Demana una invitació change_password: Contrasenya - checkbox_agreement_html: Estic d'acord amb les <a href="%{rules_path}" target="_blank">normes del servidor</a> i <a href="%{terms_path}" target="_blank"> els termes del servei</a> + checkbox_agreement_html: Accepto les <a href="%{rules_path}" target="_blank">normes del servidor</a> i <a href="%{terms_path}" target="_blank"> els termes del servei</a> checkbox_agreement_without_rules_html: Acepto els <a href="%{terms_path}" target="_blank">termes del servei</a> delete_account: Suprimeix el compte delete_account_html: Si vols suprimir el compte pots <a href="%{path}">fer-ho aquí</a>. Se't demanarà confirmació. @@ -785,7 +844,8 @@ ca: invalid_reset_password_token: L'enllaç de restabliment de la contrasenya no és vàlid o ha caducat. Torna-ho a provar. link_to_otp: Introdueix el teu codi de doble factor des d’el teu mòbil o un codi de recuperació link_to_webauth: Usa el teu dispositiu de clau de seguretat - login: Inicia sessió + log_in_with: Inicia sessió amb + login: Iniciar sessió logout: Surt migrate_account: Mou a un compte diferent migrate_account_html: Si vols redirigir aquest compte a un altre diferent, el pots <a href="%{path}">configurar aquí</a>. @@ -793,7 +853,7 @@ ca: providers: cas: CAS saml: SAML - register: Registre + register: Registrar-se registration_closed: "%{instance} no accepta nous membres" resend_confirmation: Torna a enviar el correu de confirmació reset_password: Restableix la contrasenya @@ -806,7 +866,7 @@ ca: status: account_status: Estat del compte confirming: Esperant que es completi la confirmació del correu electrònic. - functional: El teu compte és plenament operatiu. + 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. @@ -898,7 +958,7 @@ ca: download: Baixa l’arxiu hint_html: Pots sol·licitar un arxiu dels teus <strong>tuts i dels fitxers multimèdia pujats</strong>. Les dades exportades tindran el format ActivityPub, llegible per qualsevol programari compatible. Pots sol·licitar un arxiu cada 7 dies. in_progress: S'està compilant el teu arxiu... - request: Sol·licita el teu arxiu + request: Sol·licitar el teu arxiu size: Mida blocks: Persones que has blocat bookmarks: Marcadors @@ -908,7 +968,7 @@ ca: mutes: Persones silenciades storage: Emmagatzematge featured_tags: - add_new: Afegir nova + add_new: Afegir nova etiqueta errors: limit: Ja has mostrat la quantitat màxima d'etiquetes hint_html: "<strong>Què son les etiquetes destacades?</strong> Es mostren de manera destacada en el teu perfil públic i permeten a les persones navegar per les teves publicacions gràcies a aquestes etiquetes. Són una gran eina per fer un seguiment de treballs creatius o de projectes a llarg termini." @@ -929,7 +989,7 @@ ca: empty: No hi tens cap filtre. title: Filtres new: - title: Afegeix un nou filtre + title: Afegir un nou filtre footer: developers: Desenvolupadors more: Més… @@ -938,36 +998,17 @@ ca: generic: all: Tot changes_saved_msg: Els canvis s'han desat correctament! - copy: Copia + copy: Copiar delete: Esborra - no_batch_actions_available: Cap accions de lot disponibles en aquesta pàgina + none: Cap order_by: Ordena per - save_changes: Desa els canvis + save_changes: Desar els canvis + today: avui validation_errors: one: Alguna cosa no va bé! Si us plau, revisa l'error other: Alguna cosa no va bé! Si us plau, revisa %{count} errors més a baix html_validator: invalid_markup: 'conté HTML markup no vàlid: %{error}' - identity_proofs: - active: Actiu - authorize: Sí, autoritza - authorize_connection_prompt: Autoritzar aquesta connexió criptogràfica? - errors: - failed: Ha fallat la connexió criptogràfica. Torna-ho a provar des de %{provider}. - keybase: - invalid_token: Els tokens de Keybase són hashs de signatures i han de tenir 66 caràcters hexadecimals - verification_failed: Keybase no reconeix aquest token com a signatura del usuari de Keybase %{kb_username}. Si us plau prova des de Keybase. - wrong_user: No es pot crear una prova per a %{proving} mentre es connectava com a %{current}. Inicia sessió com a %{proving} i prova de nou. - explanation_html: Aquí pots connectar criptogràficament les teves altres identitats com ara el teu perfil de Keybase. Això permet que altres persones t'enviïn missatges xifrats i confiar en el contingut que els hi envies. - i_am_html: Sóc %{username} a %{service}. - identity: Identitat - inactive: Inactiu - publicize_checkbox: 'I envia un tut d''això:' - publicize_toot: 'Està provat! Sóc %{username} a %{service}: %{url}' - remove: Elimina prova d’identitat del compte - removed: Prova d’identitat del compte eliminada amb èxit - status: Estat de verificació - view_proof: Veure la prova imports: errors: over_rows_processing_limit: conté més de %{count} files @@ -1103,7 +1144,7 @@ ca: status: subject: "%{name} ha publicat" notifications: - email_events: Esdeveniments per a notificacions per correu electrònic + email_events: Esdeveniments per a notificacions de correu electrònic email_events_hint: 'Selecciona els esdeveniments per als quals vols rebre notificacions:' other_settings: Altres opcions de notificació number: @@ -1183,6 +1224,9 @@ ca: reply: proceed: Procedir a respondre prompt: 'Vols respondre a aquest tut:' + reports: + errors: + invalid_rules: no fa referència a normes vàlides scheduled_statuses: over_daily_limit: Has superat el límit de %{limit} tuts programats per a aquell dia over_total_limit: Has superat el limit de %{limit} tuts programats @@ -1231,7 +1275,7 @@ ca: view_authentication_history: Veure l'historial d'autenticació del teu compte settings: account: Compte - account_settings: Ajustos del compte + account_settings: Configuració del compte aliases: Àlies de compte appearance: Aparença authorized_apps: Aplicacions autoritzades @@ -1241,7 +1285,6 @@ ca: edit_profile: Edita el perfil export: Exportació de dades featured_tags: Etiquetes destacades - identity_proofs: Proves d'identitat import: Importació import_and_export: Importació i exportació migrate: Migració del compte @@ -1249,7 +1292,7 @@ ca: preferences: Preferències profile: Perfil relationships: Seguits i seguidors - statuses_cleanup: Borrat automàtic de publicacions + statuses_cleanup: Esborrat automàtic de publicacions two_factor_authentication: Autenticació de dos factors webauthn_authentication: Claus de seguretat statuses: @@ -1266,18 +1309,19 @@ ca: other: "%{count} vídeos" boosted_from_html: Impulsat des de %{acct_link} content_warning: 'Avís de contingut: %{warning}' + default_language: El mateix que a la llengua de la interfície disallowed_hashtags: one: 'conté una etiqueta no permesa: %{tags}' other: 'conté les etiquetes no permeses: %{tags}' + edited_at: Editat %{date} errors: in_reply_not_found: El tut al qual intentes respondre sembla que no existeix. - language_detection: Detecta automàticament el llenguatge open_in_web: Obre en la web over_character_limit: Límit de caràcters de %{max} superat pin_errors: + direct: Les publicacions que només son visibles per els usuaris mencionats no poden ser fixades limit: Ja has fixat el màxim nombre de tuts ownership: No es pot fixar el tut d'algú altre - private: No es pot fixar un tut no públic reblog: No es pot fixar un impuls poll: total_people: @@ -1302,25 +1346,25 @@ ca: unlisted: No llistat unlisted_long: Tothom ho pot veure, però no es mostra en les línies de temps públiques statuses_cleanup: - enabled: Esborra automàtic publicacions velles + enabled: Esborrar automàticament publicacions antigues enabled_hint: Suprimeix automàticament les teves publicacions quan arribin a un llindar d’edat especificat, tret que coincideixin amb una de les excepcions següents exceptions: Excepcions - explanation: Com que suprimir publicacions és una operació cara, es fa lentament amb el pas del temps quan el servidor no està ocupat. Per aquest motiu, és possible que les teves publicacions se suprimeixin un temps després d’assolir el llindar d’edat. + explanation: Com que suprimir publicacions és una operació cara, es fa lentament amb el pas del temps i quan el servidor no està ocupat. Per aquest motiu, és possible que les teves publicacions se suprimeixin un temps després d’assolir el llindar d’edat. ignore_favs: Ignora favorits ignore_reblogs: Ignora impulsos interaction_exceptions: Excepcions basades en interaccions - interaction_exceptions_explanation: Tingues en compte que no es garanteix que es suprimeixen les publicacions si passen per sota del llindar de favorit o impuls després d'haver-lo superat. - keep_direct: Manté missatges directes + interaction_exceptions_explanation: Has de tenir en compte que no es garanteix que es suprimeixen les publicacions si passen per sota del llindar de favorit o impuls després d'haver-lo superat. + keep_direct: Mantenir missatges directes keep_direct_hint: No esborra cap dels teus missatges directes - keep_media: Manté les publicacions amb adjunts multimèdia + keep_media: Mantenir les publicacions amb contingut gràfic keep_media_hint: No esborra cap de les teves publicacions que tinguin adjunts multimèdia - keep_pinned: Manté les publicacions fixades + keep_pinned: Mantenir les publicacions fixades keep_pinned_hint: No esborra cap de les teves publicacions fixades - keep_polls: Manté enquestes + keep_polls: Mantenir enquestes keep_polls_hint: No esborra cap de les teves enquestes - keep_self_bookmark: Manté les publicacions que has desat a les adreces d'interès + keep_self_bookmark: Mantenir les publicacions que has desat a les adreces d'interès keep_self_bookmark_hint: No esborra les teves pròpies publicacions si les has desat en les adreces d'interès - keep_self_fav: Manté les publicacions que has afavorit + keep_self_fav: Mantenir les publicacions que has afavorit keep_self_fav_hint: No esborra les teves pròpies publicacions si les has afavorit min_age: '1209600': 2 setmanes @@ -1331,9 +1375,9 @@ ca: '63113904': 2 anys '7889238': 3 mesos min_age_label: Llindar d'edat - min_favs: Manté les publicacions afavorides més de + min_favs: Mantenir les publicacions afavorides més de min_favs_hint: No suprimeix cap de les teves publicacions que hagin rebut més d'aquesta quantitat de favorits. Deixa-ho en blanc per suprimir publicacions independentment del nombre de favorits que tinguin - min_reblogs: Manté les publicacions impulsades més de + min_reblogs: Mantenir les publicacions impulsades més de min_reblogs_hint: No suprimeix cap de les teves publicacions que s'hagin impulsat més que aquest número de vegades. Deixa-ho en blanc per suprimir les publicacions independentment del nombre d'impulsos que tinguin stream_entries: pinned: Tut fixat @@ -1432,6 +1476,7 @@ ca: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Afegeix disable: Desactiva @@ -1459,24 +1504,31 @@ ca: subject: Si us plau confirma l’intent d’inici de sessió title: Intent d’inici de sessió warning: + categories: + spam: Contingut brossa + violation: El contingut viola les següents guies de la comunitat explanation: - disable: Mentre el teu compte estigui congelat les dades romandran intactes però no pots dur a terme cap acció fins que no estigui desbloquejat. - sensitive: Els fitxers multimèdia pujats i els enllaçats seran tractas com a sensibles. - silence: Mentre el teu compte estigui limitat només les persones que ja et segueixen veuen les teves dades en aquest servidor i pots ser exclòs de diverses llistes públiques. No obstant això, d'altres encara poden seguir-te manualment. - suspend: El teu compte s'ha suspès i tots els teus tuts i fitxers multimèdia penjats s'han eliminat de manera irreversible d'aquest servidor i dels servidors on tenies seguidors. - get_in_touch: Pots respondre a aquest correu electrònic per a contactar amb el personal de %{instance}. + delete_statuses: Algunes de les teves publicacions han estat trobades que violen les guies de la comunitat i han estat per tant esborrades per els moderadors de %{instance}. Futures violacions podrien resultar en accions més punitives contra el teu compte. + disable: Ja no pots utilitzar el teu compte però el teu perfil i altres dades segueixen intactes. Pots demanar una copia de les teves dades, canviar els ajustaments del teu compte o esborrar-lo. + sensitive: A partir d'ara, tots els mèdia pujats seran marcats com a sensibles i ocultats darrera un avís. + silence: Encara pots fer servir el teu compte però només la gent que ja t'està seguint veuran les teves publicacions en aquest servidor i tu podries ser exclòs de les diverses opcions de descobriment. De totes maneres altres podrien encara seguir-te manualment. + 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: 'Concretament, per:' + statuses: 'Publicacions que han estat trobades com a violació:' subject: + delete_statuses: Les teves publicacions de %{acct} han estat esborrades disable: S'ha congelat el teu compte %{acct} none: Avís per a %{acct} - sensitive: El teu compte %{acct} de publicació de mèdia ha estat marcat com a sensible + sensitive: Els teus mèdia de %{acct} seran marcades com a sensibles a partir d'ara silence: El teu compte %{acct} ha estat limitat suspend: S'ha suspès el teu compte %{acct} title: + delete_statuses: Publicacions esborrades disable: Compte congelat none: Avís - sensitive: Els teus mèdia han estat marcats com a sensibles + sensitive: Mèdia ocult silence: Compte limitat suspend: Compte suspès welcome: diff --git a/config/locales/co.yml b/config/locales/co.yml index f2f278678..1128caca9 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -99,7 +99,6 @@ co: accounts: add_email_domain_block: Mette u duminiu e-mail in lista nera approve: Appruvà - approve_all: Appruvà tuttu approved_msg: A dumanda d'arregistramente di %{username} hè stata appruvata are_you_sure: Site sicuru·a? avatar: Ritrattu di prufile @@ -153,7 +152,6 @@ co: active: Attivu all: Tutti pending: In attesa - silenced: Silenzati suspended: Suspesi title: Muderazione moderation_notes: Note di muderazione @@ -171,7 +169,6 @@ co: redownload: Mette à ghjornu u prufile redownloaded_msg: U prufile di %{username} hè statu attualizatu da l'urighjine reject: Righjittà - reject_all: Righjittà tutti rejected_msg: A dumanda d'arregistramente di %{username} hè stata righjittata remove_avatar: Toglie l’avatar remove_header: Toglie a cuprendula @@ -210,7 +207,6 @@ co: suspended: Suspesu suspension_irreversible: I dati di stu contu sò stati irreversibilamente sguassati. Pudete annullà a suspensione di u contu per u rende utilizabile ma ùn pudete micca ricuperà i dati pricedenti. suspension_reversible_hint_html: U contu hè statu suspesu, è i so dati saranu sguassati u %{date}. Da quì à là, u contu pò esse ricuperatu senza prublemu. S'e voi vulete toglie tutti i dati di u contu avà, pudete fallu quì sottu. - time_in_queue: 'Attesa in fila: %{time}' title: Conti unconfirmed_email: E-mail micca cunfirmatu undo_sensitized: Annullà sensibile @@ -226,6 +222,7 @@ co: whitelisted: In a lista bianca action_logs: action_types: + approve_user: Appruvà l'utilizatore assigned_to_self_report: Assignà signalamentu change_email_user: Mudificà l'E-mail di l'Utilizatore confirm_user: Cunfirmà Utilizatore @@ -255,6 +252,7 @@ co: enable_user: Attivà utilizatore memorialize_account: Trasfurmà contu in mimuriale promote_user: Prumove Utilizatore + reject_user: Righjittà l'utilizatore remove_avatar_user: Toglie Avatar reopen_report: Riapre Signalamentu reset_password_user: Riinizializà Chjave d'Accessu @@ -369,9 +367,18 @@ co: updated_msg: L’emoji hè stata messa à ghjornu! upload: Caricà dashboard: + active_users: utilizatori attivi + interactions: interazzione + media_storage: Spaziu di i media + new_users: novi utilizatori + opened_reports: signalamenti aperti + resolved_reports: signalamenti risolti software: Lugiziale space: Usu di u spaziu title: Quatru di strumenti + top_languages: Lingue e più attive + top_servers: Servori i più attivi + website: Situ web domain_allows: add_new: Aghjunghje à a lista bianca created_msg: U duminiu hè statu aghjuntu à a lista bianca @@ -497,8 +504,6 @@ co: title: Creà una nova regula IP no_ip_block_selected: E regule ùn sò micca state mudificate perchè manc'un'era selezziunata title: Regule IP - pending_accounts: - title: Conti in attesa (%{count}) relationships: title: Rilazione di %{acct} relays: @@ -525,9 +530,6 @@ co: notes: one: "%{count} nota" other: "%{count} note" - reports: - one: "%{count} riportu" - other: "%{count} riporti" action_taken_by: Intervenzione di are_you_sure: Site sicuru·a? assign_to_self: Assignallu à mè @@ -553,6 +555,7 @@ co: resolved: Scioltu è chjosu resolved_msg: Signalamentu scioltu! status: Statutu + target_origin: Urighjine di u contu signalatu title: Signalamenti unassign: Disassignà unresolved: Micca sciolti @@ -656,15 +659,9 @@ co: destroyed_msg: Fugliale sguassatu da u situ! statuses: back_to_account: Ritornu à a pagina di u contu - batch: - delete: Toglie - nsfw_off: Indicà cum’è micca sensibile - nsfw_on: Indicà cum’è sensibile deleted: Sguassatu - failed_to_execute: Esecuzione impussibule media: title: Media - no_media: Nisun media no_status_selected: I statuti ùn sò micca stati mudificati perchè manc'unu era selezziunatu title: Statuti di u contu with_media: Cù media @@ -673,21 +670,29 @@ co: action: Amministrà e regule di u servore message_html: Ùn avete micca ancu difinitu di regula per u servore. tags: - accounts_today: Usi unichi oghji - accounts_week: Usi unichi sta settimana - breakdown: Ditagli di l'usu d'oghji per origine - last_active: Ultima attività - most_popular: Più pupulari - most_recent: Più ricente - name: Hashtag review: Statutu di verificazione - reviewed: Verificatu - title: Hashtag - trending_right_now: Tendenze avà - unique_uses_today: "%{count} pustendu oghji" - unreviewed: Micca verificatu updated_msg: Parametri di i hashtag messi à ghjornu title: Amministrazione + trends: + allow: Auturizà + approved: Appruvatu + disallow: Difende + links: + allow: Auturizà u ligame + pending_review: In attesa di rivista + preview_card_providers: + title: Pubblicatori + rejected: Righittate + tags: + current_score: Score attuale %{score} + dashboard: + tag_accounts_measure: usi unichi + tag_languages_dimension: Lingue principale + tag_servers_measure: servori sfarenti + tag_uses_measure: usi tutali + not_usable: Ùn pò esse usatu + title: Tendenze di hashtag + usable: Pò esse usatu warning_presets: add_new: Aghjunghje delete: Sguassà @@ -701,9 +706,6 @@ co: body: "%{reporter} hà palisatu %{target}" body_remote: Qualch’unu da %{domain} hà palisatu %{target} subject: Novu signalamentu nant’à %{instance} (#%{id}) - new_trending_tag: - body: 'U hashtag #%{name} hè in e tendenze oghji, mà ùn hè micca verificatu. Ùn sarà micca mustratu à u pubblicu eccettu s''ellu hè auturizatu, o pudete ancu salvà u furmulariu cusì per ùn mai più avè à ne sente parlà.' - subject: Novu hashtag in attesa di rivista nant'à %{instance} (#%{name}) aliases: add_new: Creà un pseudonimu created_msg: Novu pseudonimu creatu. Pudete avà inizià u trasferimentu da u vechju contu. @@ -910,7 +912,6 @@ co: changes_saved_msg: Cambiamenti salvati! copy: Cupià delete: Sguassà - no_batch_actions_available: Alcun'azzione di gruppu nant'à sta pagina order_by: Urdinà da save_changes: Salvà e mudificazione validation_errors: @@ -918,26 +919,6 @@ co: other: Qualcosa ùn và bè! Verificate %{count} prublemi quì sottu html_validator: invalid_markup: 'cuntene codice HTML invalidu: %{error}' - identity_proofs: - active: Attiva - authorize: Ié, auturizà - authorize_connection_prompt: Auturizà sta cunnessione crittograffica? - errors: - failed: A cunnessione crittograffica s'hè fiascata. Ripruvate da %{provider}. - keybase: - invalid_token: E fiscie Keybase sò hash di firme è duvenu fà 66 caratteri esadecimali (0-9 A-F) - verification_failed: Keybase ùn ricunosce micca sta fiscia cum'una firma di l'utilizatore Keybase %{kb_username}. Ripruvate da Keybase. - wrong_user: Ùn si pò micca creà una prova per %{proving} mentre chì site cunnettatu·a cum'è %{current}. Cunnettatevi cum'è %{proving} è ripruvate. - explanation_html: Quì pudete cunnettà crittografficamente e vostre altre identità, cum'è per esempiu un prufile Keybase. Quessu permette à d'altre persone di mandà vi missaghji crittati, è d'affiducià i cuntinuti chì mandate. - i_am_html: Sò %{username} nant'à %{service}. - identity: Identità - inactive: Inattiva - publicize_checkbox: 'È mandà stu statutu:' - publicize_toot: 'Hè pruvata! Sò %{username} nant’à %{service}: %{url}' - remove: Sguassà a prova da u contu - removed: Prova sguassata da u contu - status: Statutu di a verificazione - view_proof: Vede a prova imports: errors: over_rows_processing_limit: cuntene più di %{count} filari @@ -1205,7 +1186,6 @@ co: edit_profile: Mudificà u prufile export: Spurtazione d’infurmazione featured_tags: Hashtag in vista - identity_proofs: Prove d'identità import: Impurtazione import_and_export: Impurtazione è spurtazione migrate: Migrazione di u contu @@ -1234,13 +1214,11 @@ co: other: 'cuntene l’hashtag disattivati: %{tags}' errors: in_reply_not_found: U statutu à quellu avete pruvatu di risponde ùn sembra micca esiste. - language_detection: Truvà a lingua autumaticamente open_in_web: Apre nant’à u web over_character_limit: site sopr’à a limita di %{max} caratteri pin_errors: limit: Avete digià puntarulatu u numeru massimale di statuti ownership: Pudete puntarulà solu unu di i vostri propii statuti - private: Ùn pudete micca puntarulà un statutu ch’ùn hè micca pubblicu reblog: Ùn pudete micca puntarulà una spartera poll: total_people: @@ -1415,24 +1393,15 @@ co: subject: Cunfirmate u tentativu di cunnessione title: Tentativu di cunnessione warning: - explanation: - disable: Quandu u vostru contu hè ghjacciatu, i vostri dati stannu intatti, mà ùn pudete fà nunda fin'à ch'ellu sia sbluccatu. - sensitive: I vostri media caricati è in ligami saranu trattati cum'è sensibili. - silence: Quandu u vostru contu hè limitatu, solu quelli chì sò digià abbunati à u vostru contu viderenu i vostri statuti nant'à quessu servore, è puderete esse esclusu·a di parechje liste pubbliche. Però, altri conti puderenu sempre seguitavi. - suspend: U vostru contu hè statu suspesu, è tutti i vo statuti è fugliali media caricati sò stati sguassati di manera irreversibile di stu servore, è di i servori induve aviate abbunati. - get_in_touch: Pudete risponde à quest'e-mail per cuntattà a squadra di muderazione di %{instance}. review_server_policies: Leghje e pulitiche di u servore - statuses: 'Più pricisamente, per:' subject: disable: U vostru contu %{acct} hè statu ghjacciatu none: Avertimentu pè %{acct} - sensitive: I media di u vostru contu %{acct} sò stati marcati cum'è sensibili silence: U vostru contu %{acct} hè statu limitatu suspend: U vostru contu %{acct} hè statu suspesu title: disable: Contu ghjacciatu none: Avertimentu - sensitive: U vostru media hè statu marcatu cum'è sensibile silence: Contu limitatu suspend: Contu suspesu welcome: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 19428252b..9d807d923 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -107,7 +107,6 @@ cs: accounts: add_email_domain_block: Blokovat e-mailovou doménu approve: Schválit - approve_all: Schválit vše approved_msg: Žádost o registraci uživatele %{username} úspěšně schválena are_you_sure: Opravdu? avatar: Avatar @@ -161,7 +160,6 @@ cs: active: Aktivní all: Vše pending: Čekající - silenced: Omezené suspended: Pozastavené title: Moderování moderation_notes: Moderátorské poznámky @@ -179,7 +177,6 @@ cs: redownload: Obnovit profil redownloaded_msg: Profil účtu %{username} byl úspěšně obnoven ze zdroje reject: Zamítnout - reject_all: Zamítnout vše rejected_msg: Žádost o registraci uživatele %{username} úspěšně zamítnuta remove_avatar: Odstranit avatar remove_header: Odstranit záhlaví @@ -218,8 +215,9 @@ cs: suspended: Uživatel pozastaven suspension_irreversible: Data tohoto účtu byla nevratně smazána. Účet můžete obnovit, aby byl použitelný, ale nebudou obnovena žádná jeho dřívější data. suspension_reversible_hint_html: Účet byl pozastaven a jeho data budou kompletně smazána %{date}. Do té doby může být tento účet kompletně obnoven do původního stavu. Chcete-li smazat všechna data účtu ihned, můžete tak učinit níže. - time_in_queue: Čeká ve frontě %{time} title: Účty + unblock_email: Odblokovat e-mailovou adresu + unblocked_email_msg: E-mailová adresa %{username} byla úspěšně odblokována unconfirmed_email: Nepotvrzený e-mail undo_sensitized: Vrátit zpět citlivost undo_silenced: Zrušit omezení @@ -234,6 +232,7 @@ cs: whitelisted: Povoleno federovat action_logs: action_types: + approve_user: Schválit uživatele assigned_to_self_report: Přiřadit hlášení change_email_user: Změnit uživateli e-mailovou adresu confirm_user: Potvrdit uživatele @@ -251,6 +250,7 @@ cs: destroy_domain_allow: Odstranit povolenou doménu destroy_domain_block: Odstranit blokování domény destroy_email_domain_block: Smazat blokaci e-mailové domény + destroy_instance: Odmazat doménu destroy_ip_block: Smazat IP pravidlo destroy_status: Odstranit Příspěvek destroy_unavailable_domain: Smazat nedostupnou doménu @@ -263,6 +263,7 @@ cs: enable_user: Povolit uživatele memorialize_account: Změna na „in memoriam“ promote_user: Povýšit uživatele + reject_user: Odmítnout uživatele remove_avatar_user: Odstranit avatar reopen_report: Znovu otevřít hlášení reset_password_user: Obnovit heslo @@ -271,6 +272,7 @@ cs: silence_account: Omezit účet suspend_account: Pozastavit účet unassigned_report: Zrušit přiřazení hlášení + unblock_email_account: Odblokovat e-mailovou adresu unsensitive_account: Zrušit označení médií ve vašem účtu jako citlivých unsilence_account: Zrušit omezení účtu unsuspend_account: Zrušit pozastavení účtu @@ -279,6 +281,7 @@ cs: update_domain_block: Změnit blokaci domény update_status: Aktualizovat Příspěvek actions: + approve_user_html: "%{name} schválil registraci od %{target}" assigned_to_self_report_html: Uživatel %{name} si přidělil hlášení %{target} change_email_user_html: Uživatel %{name} změnil e-mailovou adresu uživatele %{target} confirm_user_html: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target} @@ -296,6 +299,7 @@ cs: destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target} destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target} destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target} + destroy_instance_html: Uživatel %{name} odmazal doménu %{target} destroy_ip_block_html: "%{name} odstranil pravidlo pro IP %{target}" destroy_status_html: Uživatel %{name} odstranil příspěvek uživatele %{target} destroy_unavailable_domain_html: "%{name} obnovil doručování na doménu %{target}" @@ -308,6 +312,7 @@ cs: enable_user_html: Uživatel %{name} povolil přihlašování pro uživatele %{target} memorialize_account_html: Uživatel %{name} změnil účet %{target} na „in memoriam“ stránku promote_user_html: Uživatel %{name} povýšil uživatele %{target} + reject_user_html: "%{name} odmítl registraci od %{target}" remove_avatar_user_html: Uživatel %{name} odstranil avatar uživatele %{target} reopen_report_html: Uživatel %{name} znovu otevřel hlášení %{target} reset_password_user_html: Uživatel %{name} obnovil heslo uživatele %{target} @@ -316,6 +321,7 @@ cs: silence_account_html: Uživatel %{name} ztišil uživatele %{target} suspend_account_html: Uživatel %{name} pozastavil účet uživatele %{target} unassigned_report_html: Uživatel %{name} odebral hlášení %{target} + unblock_email_account_html: Uživatel %{name} odblokoval e-mailovou adresu %{target} unsensitive_account_html: "%{name} zrušil označení médií účtu %{target} jako citlivých" unsilence_account_html: Uživatel %{name} zrušil ztišení uživatele %{target} unsuspend_account_html: Uživatel %{name} zrušil pozastavení účtu uživatele %{target} @@ -388,17 +394,17 @@ cs: 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í 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í hashtagy" + 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í uživatel" + other: "<strong>%{count}</strong> čekajících uživatelů" resolved_reports: vyřešeno hlášení software: Software sources: Zdroje registrací @@ -481,6 +487,7 @@ cs: back_to_limited: Omezený back_to_warning: Varování by_domain: Doména + confirm_purge: Jste si jisti, že chcete nevratně smazat data z této domény? delivery: all: Vše clear: Vymazat chyby doručení @@ -498,6 +505,7 @@ cs: delivery_available: Doručení je k dispozici delivery_error_days: Dny chybného doručování 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" @@ -510,6 +518,7 @@ cs: title: Moderování private_comment: Soukromý komentář public_comment: Veřejný komentář + purge: Odmazat title: Federace total_blocked_by_us: Blokované námi total_followed_by_them: Sledované jimi @@ -539,8 +548,6 @@ cs: title: Vytvořit nové IP pravidlo no_ip_block_selected: Nebyla změněna žádná IP pravidla, protože nebylo žádné zaškrtnuto title: IP pravidla - pending_accounts: - title: Čekající účty (%{count}) relationships: title: Vztahy uživatele %{acct} relays: @@ -569,11 +576,6 @@ cs: many: "%{count} poznámek" one: "%{count} poznámka" other: "%{count} poznámek" - reports: - few: "%{count} hlášení" - many: "%{count} hlášení" - one: "%{count} hlášení" - other: "%{count} hlášení" action_taken_by: Akci vykonal uživatel are_you_sure: Opravu? assign_to_self: Přidělit ke mně @@ -698,22 +700,16 @@ cs: desc_html: Ovlivňuje hashtagy, které nebyly dříve zakázány title: Povolit zobrazení hashtagů mezi populárními i bez předchozího posouzení trends: - desc_html: Veřejně zobrazit dříve schválené hashtagy, které jsou zrovna populární - title: Populární hashtagy + desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární + title: Trendy site_uploads: delete: Odstranit nahraný soubor destroyed_msg: Upload stránky byl úspěšně smazán! statuses: back_to_account: Zpět na stránku účtu - batch: - delete: Smazat - nsfw_off: Označit, že není citlivý - nsfw_on: Označit jako citlivý deleted: Smazáno - failed_to_execute: Nepodařilo se vykonat media: title: Média - no_media: Žádná média no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány title: Příspěvky účtu with_media: S médii @@ -726,21 +722,55 @@ cs: sidekiq_process_check: message_html: Pro %{value} frontu/fronty neběží žádný Sidekiq proces. Zkontrolujte prosím svou Sidekiq konfiguraci tags: - accounts_today: Dnešní jedinečná použití - accounts_week: Jedinečná použití tento týden - breakdown: Přehled dnešního používání podle zdroje - last_active: Nedávno použité - most_popular: Nejpopulárnější - most_recent: Nedávno vytvořené - name: Hashtag - review: Stav schválení - reviewed: Schválen - title: Hashtagy - trending_right_now: Populární právě teď - unique_uses_today: Dnes použilo %{count} uživatelů - unreviewed: Nezkontrolováno + review: Stav posouzení updated_msg: Nastavení hashtagů bylo úspěšně aktualizováno title: Administrace + trends: + allow: Povolit + approved: Schválené + disallow: Zakázat + links: + allow: Povolit odkaz + 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í + preview_card_providers: + allowed: Odkazy z tohoto vydavatele se smí objevovat mezi populárními + rejected: Odkazy z tohoto vydavatele se neobjeví mezi populárními + title: Vydavatelé + rejected: Zamítnutí + tags: + current_score: Aktuální skóre %{score} + dashboard: + tag_accounts_measure: unikátních použití + tag_languages_dimension: Nejčastější jazyky + tag_servers_dimension: Nejčastější servery + tag_servers_measure: různých serverů + tag_uses_measure: použití celkem + listable: Může být navrhován + not_listable: Nebude navrhován + not_trendable: Neobjeví se mezi populárními + not_usable: Nemůže být používán + peaked_on_and_decaying: Vrcholil %{date}, nyní skomírá + title: Populární hashtagy + trendable: Může se objevovat mezi populárními + 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é delete: Smazat @@ -755,9 +785,16 @@ cs: body: Uživatel %{reporter} nahlásil uživatele %{target} body_remote: Někdo z domény %{domain} nahlásil uživatele %{target} subject: Nové hlášení pro %{instance} (#%{id}) - new_trending_tag: - body: 'Hashtag #%{name} je dnes populární, ale nebyl dříve schválen. Pokud to nedovolíte, nebude veřejně zobrazen. Nebo pouze uložte formulář tak, jak je, a už o něm neuslyšíte.' - subject: Nový hashtag ke schválení na %{instance} (#%{name}) + new_trending_links: + body: Následující odkazy jsou dnes populární, ale jejich vydavatelé zatím nebyli posouzeni. Nebudou veřejně zobrazeny, pokud je neschválíte. Pro stejné vydavatele už další upozornění nedostanete. + no_approved_links: Momentálně nejsou žádné schválené populární odkazy. + requirements: Nejnižší schválený populární odkaz je momentálně "%{lowest_link_title}" se skóre %{lowest_link_score}. + subject: Nové populární odkazy k posouzení na %{instance} + new_trending_tags: + body: 'Následující hashtagy jsou dnes populární, ale nebyly dříve přezkoumány. Nebudou zobrazeny veřejně, pokud je neschválíte:' + no_approved_tags: Momentálně nejsou žádné schválené populární hashtagy. + requirements: Nejnižší schválený populární hashtag je momentálně "%{lowest_tag_name}" se skóre %{lowest_tag_score}. + subject: Nové populární hashtagy k posouzení na %{instance} aliases: add_new: Vytvořit alias created_msg: Nový alias byl úspěšně vytvořen. Nyní můžete zahájit přesun ze starého účtu. @@ -809,6 +846,7 @@ cs: invalid_reset_password_token: Token pro obnovení hesla je buď neplatný, nebo vypršel. Vyžádejte si prosím nový. link_to_otp: Zadat kód dvoufázového ověření z mobilu nebo záložní kód link_to_webauth: Použít svůj bezpečnostní klíč + log_in_with: Přihlásit přes login: Přihlásit logout: Odhlásit migrate_account: Přesunout se na jiný účet @@ -831,7 +869,7 @@ cs: 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 schválení naším personálem. To může nějakou dobu trvat. Pokud bude váš požadavek schválen, obdržíte e-mail. + 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. trouble_logging_in: Problémy s přihlášením? @@ -964,9 +1002,10 @@ cs: changes_saved_msg: Změny byly úspěšně uloženy! copy: Kopírovat delete: Smazat - no_batch_actions_available: Pro tuto stránku nejsou dostupné žádné souhrnné akce + none: Žádné order_by: Seřadit podle save_changes: Uložit změny + today: dnes validation_errors: few: Něco ještě není úplně v pořádku! Zkontrolujte prosím %{count} chyby uvedené níže many: Něco ještě není úplně v pořádku! Zkontrolujte prosím %{count} chyb uvedených níže @@ -974,26 +1013,6 @@ cs: other: Něco ještě není úplně v pořádku! Zkontrolujte prosím %{count} chyb uvedených níže html_validator: invalid_markup: 'obsahuje neplatný HTML kód: %{error}' - identity_proofs: - active: Aktivní - authorize: Ano, autorizovat - authorize_connection_prompt: Autorizovat toto kryptografické spojení? - errors: - failed: Kryptografické spojení selhalo. Zkuste to prosím znovu z %{provider}. - keybase: - invalid_token: Keybase tokeny jsou hashe podpisů a musí být dlouhé 66 hexadecimálních znaků - verification_failed: Keybase nerozpoznává tento token jako podpis uživatele %{kb_username} na Keybase. Zkuste to prosím znovu z Keybase. - wrong_user: Nelze vytvořit důkaz pro %{proving}, zatímco jste přihlášeni jako %{current}. Přihlaste se jako %{proving} a zkuste to znovu. - explanation_html: Zde můžete kryptograficky propojit další své identity z jiných platforem, jako například Keybase. To umožňuje jiným lidem poslat vám šifrované zprávy na těchto platformách a důvěřovat, že obsah, který jim posíláte, pochází od vás. - i_am_html: Na %{service} jsem %{username}. - identity: Identita - inactive: Neaktivní - publicize_checkbox: 'A odeslat tohle:' - publicize_toot: 'Je to dokázáno! Na %{service} jsem %{username}: %{url}' - remove: Odstranit důkaz z účtu - removed: Úspěšně odstraněn důkaz z účtu - status: Stav ověření - view_proof: Zobrazit důkaz imports: errors: over_rows_processing_limit: obsahuje více než %{count} řádků @@ -1273,7 +1292,6 @@ cs: edit_profile: Upravit profil export: Export dat featured_tags: Zvýrazněné hashtagy - identity_proofs: Důkazy identity import: Import import_and_export: Import a export migrate: Přesun účtu @@ -1311,13 +1329,12 @@ cs: other: 'obsahoval nepovolené hashtagy: %{tags}' errors: in_reply_not_found: Příspěvek, na který se pokoušíte odpovědět, neexistuje. - language_detection: Zjistit jazyk automaticky open_in_web: Otevřít na webu over_character_limit: byl překročen limit %{max} znaků pin_errors: + direct: Příspěvky viditelné pouze zmíněným uživatelům nelze připnout limit: Už jste si připnuli maximální počet příspěvků ownership: Nelze připnout příspěvek někoho jiného - private: Neveřejné příspěvky nelze připnout reblog: Boosty nelze připnout poll: total_people: @@ -1503,24 +1520,15 @@ cs: subject: Potvrďte prosím pokus o přihlášení title: Pokus o přihlášení warning: - explanation: - disable: Nemůžete se přihlásit do svého účtu nebo ho jakkoliv jinak používat, ale váš profil a ostatní data zůstávají nedotčeny. - sensitive: Vámi nahrané a odkazované mediální soubory budou považovány za citlivé. - silence: Nadále můžete používat svůj účet, ale pouze lidé, kteří vás již sledovali, uvidí vaše příspěvky na tomto serveru a můžete být vyjmuti z různých veřejných seznamů. Ostatní vás však stále mohou ručně začít sledovat. - suspend: Nemůžete už používat svůj účet a váš profil a ostatní data již nejsou dostupná. Stále se můžete přihlásit pro vyžádání zálohy svých dat, dokud nebudou zcela smazána, ale ponecháme si některé údaje, abychom vám zabránili ve vyhýbání se pozastavení. - get_in_touch: Můžete odpovědět na tento e-mail a spojit se s personálem serveru %{instance}. review_server_policies: Zkontrolujte pravidla serveru - statuses: 'Konkrétně kvůli:' subject: disable: Váš účet %{acct} byl zmrazen none: Varování pro %{acct} - sensitive: Média z Vašeho účtu %{acct} byla označena za citlivá silence: Váš účet %{acct} byl omezen suspend: Váš účet %{acct} byl pozastaven title: disable: Účet zmrazen none: Varování - sensitive: Vaše média byla označena jako citlivá silence: Účet omezen suspend: Účet pozastaven welcome: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 8e899ebd0..16fd77cdd 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -110,7 +110,6 @@ cy: accounts: add_email_domain_block: Cosbrestru parth e-bost approve: Cymeradwyo - approve_all: Cymeradwyo pob un are_you_sure: Ydych chi'n siŵr? avatar: Afatar by_domain: Parth @@ -155,7 +154,6 @@ cy: active: Yn weithredol all: Popeth pending: Yn aros - silenced: Wedi ei dawelu suspended: Wedi ei atal title: Goruwchwyliad moderation_notes: Nodiadau goruwchwylio @@ -172,7 +170,6 @@ cy: push_subscription_expires: Tanysgrifiad gwthiadwy yn dod i ben redownload: Adnewyddu proffil reject: Gwrthod - reject_all: Gwrthod pob un remove_avatar: Dileu afatar remove_header: Dileu pennawd resend_confirmation: @@ -199,7 +196,6 @@ cy: statuses: Statysau subscribe: Tanysgrifio suspended: Ataliwyd - time_in_queue: Yn aros yn y rhestr am %{time} title: Cyfrifon unconfirmed_email: E-bost heb ei gadarnhau undo_silenced: Dadwneud tawelu @@ -392,8 +388,6 @@ cy: expired: Wedi dod i ben title: Hidlo title: Gwahoddiadau - pending_accounts: - title: Cyfrifau yn aros (%{count}) relationships: title: Perthnasau %{acct} relays: @@ -424,13 +418,6 @@ cy: other: "%{count} o nodiadau" two: "%{count} o nodiadau" zero: "%{count} nodyn" - reports: - few: "%{count} o adroddiadau" - many: "%{count} o adroddiadau" - one: "%{count} adroddiad" - other: "%{count} o adroddiadau" - two: "%{count} o adroddiadau" - zero: "%{count} adroddiad" action_taken_by: Gwnaethpwyd hyn gan are_you_sure: Ydych chi'n sicr? assign_to_self: Aseinio i mi @@ -549,32 +536,14 @@ cy: destroyed_msg: Uwchlwythiad wefan wedi'i ddileu yn lwyddianus! statuses: back_to_account: Yn ôl i dudalen y cyfrif - batch: - delete: Dileu - nsfw_off: Marcio fel nad yw'n sensitif - nsfw_on: Marcio'n sensitif deleted: Dilëwyd - failed_to_execute: Methwyd a gweithredu media: title: Cyfryngau - no_media: Dim cyfryngau no_status_selected: Ni newidwyd dim statws achos ni ddewiswyd dim un title: Statysau cyfrif with_media: A chyfryngau tags: - accounts_today: Defyddau unigol heddiw - accounts_week: Defnyddau unigol yr wythnos hon - breakdown: Ymddatodiad o ddefnyddiaeth heddiw wrth ffynhonnell - last_active: Yn weithredol ddiwethaf - most_popular: Mwyaf poblogaidd - most_recent: Mwyaf diweddar - name: Hashnod review: Adolygu statws - reviewed: Wedi'i adolygu - title: Hashnodau - trending_right_now: Yn tueddu nawr - unique_uses_today: "%{count} yn postio heddiw" - unreviewed: Heb ei adolygu updated_msg: Gosodiadau hashnodau wedi'i diweddaru'n llwyddiannus title: Gweinyddiaeth warning_presets: @@ -590,9 +559,6 @@ cy: body: Mae %{reporter} wedi cwyno am %{target} body_remote: Mae rhywun o %{domain} wedi cwyno am %{target} subject: Cwyn newydd am %{instance} (#%{id}) - new_trending_tag: - body: 'Mae''r hashnod #%{name} yn tueddu heddiw, ond nid yw''r hashnod wedi''i adolygu''n gynt. Ni fydd o''n cael ei arddangos yn gyhoeddus oni bai bod chi''n ei ganiataú, neu arbedwch y ffurflen fel y mae i fyth clywed amdano eto.' - subject: Hashnod newydd i fynnu ar gyfer adolygiad ar %{instance} (%{name}) aliases: add_new: Creu enw arall created_msg: Wedi creu enw arall yn llwyddianus. Gallwch nawr dechrau'r symudiad o'r hen gyfrif. @@ -783,7 +749,6 @@ cy: changes_saved_msg: Llwyddwyd i gadw y newidiadau! copy: Copïo delete: Dileu - no_batch_actions_available: Dim gweithredau llwyth ar gael ar y dudalen hon order_by: Trefnu wrth save_changes: Cadw newidiadau validation_errors: @@ -795,26 +760,6 @@ cy: zero: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda html_validator: invalid_markup: 'yn cynnwys marciad HTML annilys: %{error}' - identity_proofs: - active: Yn weithredol - authorize: Ie, awdurdodi - authorize_connection_prompt: Awdurdodi y cysylltiad cryptograffig hon? - errors: - failed: Methwyd y cysylltiad cryptograffig. Ceisiwch eto o %{provider}, os gwelwch yn dda. - keybase: - invalid_token: Mae tocynnau keybase yn hashiau o llofnodau ac mae rhaid iddynt bod yn 66 cymeriadau hecs - verification_failed: Nid yw Keybase yn adnabod y tocyn hyn fel llofnod defnyddiwr Keybase %{kb_username}. Cesiwch eto o Keybase, os gwelwch yn dda. - wrong_user: Ni all greu prawf ar gyfer %{proving} tra wedi mewngofnodi fel %{current}. Mewngofnodi fel %{proving} a cheisiwch eto. - explanation_html: Fama gallwch cysylltu i'ch hunanieithau arall yn cryptograffig, er enghraifft proffil Keybase. Mae hyn yn gadael pobl arall i anfon chi negeseuon amgryptiedig a ymddiried mewn cynnwys rydych yn eich anfon iddynt. - i_am_html: Rydw i'n %{username} ar %{service}. - identity: Hunaniaeth - inactive: Anweithgar - publicize_checkbox: 'A thŵtiwch hon:' - publicize_toot: 'Wedi profi! Rydw i''n %{username} ar %{service}: %{url}' - remove: Tynnu prawf o'r cyfrif - removed: Wedi tynnu prawf o'r cyfrif yn llwyddiannus - status: Statws gwirio - view_proof: Gweld prawf imports: modes: merge: Cyfuno @@ -1050,7 +995,6 @@ cy: edit_profile: Golygu proffil export: Allforio data featured_tags: Hashnodau Nodedig - identity_proofs: Profiadau Hunaniaeth import: Mewnforio import_and_export: Mewnfori ac allfori migrate: Mudo cyfrif @@ -1094,13 +1038,11 @@ cy: zero: 'yn cynnwys yr hashnod gwaharddedig: %{tags}' errors: in_reply_not_found: Nid yw'r statws rydych yn ceisio ymateb i yn edrych fel ei fod yn bodoli. - language_detection: Canfod iaith yn awtomataidd open_in_web: Agor yn y wê over_character_limit: wedi mynd heibio'r uchafswm nodyn o %{max} pin_errors: limit: Yr ydych wedi pinio yr uchafswm posib o dŵtiau ownership: Ni ellir pinio tŵt rhywun arall - private: Ni ellir pinio tŵt nad yw'n gyhoeddus reblog: Ni ellir pinio bŵstiau poll: total_people: @@ -1242,13 +1184,7 @@ cy: subject: Cadarnhewch yr ymgais mewngofnodi title: Ymgais mewngofnodi warning: - explanation: - disable: Er bod eich cyfrif wedi'i rewi, mae eich data cyfrif yn parhau i fod yn gyfan, ond ni allwch chi berfformio unrhyw gamau nes ei ddatgloi. - silence: Pan mae eich cyfrif yn gyfyngiedig, dim ond pobl sydd yn barod yn eich dilyn yn gweld eich tŵtiau ar y gweinydd hon, a efallai byddwch yn cael eich tynnu o restrau cyhoeddus. Er hyn, gall eraill eich dilyn chi wrth law. - suspend: Mae eich cyfrif wedi cael ei wahardd, a mae gyd o'ch tŵtiau a'ch ffeiliau cyfrwng uwchlwythadwy wedi cael eu tynnu or gweinydd yn barhaol, ac o weinyddau ble yr oedd eich dilynwyr. - get_in_touch: Gallwch ymateb i'r e-bost hwn i gysylltu â staff %{instance}. review_server_policies: Adolygu polisïau'r gweinydd - statuses: 'Yn benodol, ar gyfer:' 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 128d3ece9..c898bee20 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -99,7 +99,6 @@ da: accounts: add_email_domain_block: Blokér e-maildomæne approve: Godkend - approve_all: Godkend alle approved_msg: Tilmeldingsansøgning for %{username} blev godkendt are_you_sure: Sikker? avatar: Profilbillede @@ -114,6 +113,7 @@ da: confirm: Bekræft confirmed: Bekræftet confirming: Bekræfter + custom: Tilpasset delete: Slet data deleted: Slettet demote: Degradér @@ -153,7 +153,6 @@ da: active: Aktiv all: Alle pending: Afventer - silenced: Tavsgjort suspended: Suspenderet title: Moderation moderation_notes: Moderationsnotater @@ -171,7 +170,6 @@ da: redownload: Opfrisk profil redownloaded_msg: Profil for %{username} opfriske fra oprindelsesserver reject: Afvis - reject_all: Afvis alle rejected_msg: Tilmeldingsansøgning fra %{username} afvist remove_avatar: Fjern profilbillede remove_header: Fjern overskrift @@ -206,12 +204,14 @@ da: silence: Tavsgør silenced: Tavsgjort statuses: Statusser + strikes: Tidligere striber subscribe: Abonné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. - time_in_queue: Venter i køen %{time} title: Konti + unblock_email: Afblokér e-mailadresse + unblocked_email_msg: "%{username}s e-mail-adresse afblokeret" unconfirmed_email: Ikke-bekræftet e-mail undo_sensitized: Fortryd sensitiv undo_silenced: Fortryd tavsgørelse @@ -226,6 +226,7 @@ da: whitelisted: Tilladt for federering action_logs: action_types: + approve_user: Godkend bruger assigned_to_self_report: Tildel rapport change_email_user: Skift e-mail for bruger confirm_user: Bekræft bruger @@ -243,6 +244,7 @@ da: destroy_domain_allow: Slet domænetilladelse destroy_domain_block: Slet domæneblokering destroy_email_domain_block: Slet e-maildomæneblokering + destroy_instance: Udrens domæne destroy_ip_block: Slet IP-regel destroy_status: Slet status destroy_unavailable_domain: Slet Utilgængeligt Domæne @@ -255,6 +257,7 @@ da: enable_user: Aktivér brugeren memorialize_account: Gør til mindekonto promote_user: Promovér bruger + reject_user: Afvis bruger remove_avatar_user: Fjern profilbillede reopen_report: Genåbn anmeldelse reset_password_user: Nulstil adgangskode @@ -263,6 +266,7 @@ da: silence_account: Tavsgør konto suspend_account: Suspendér konto unassigned_report: Aftildel anmeldelse + unblock_email_account: Afblokér af e-mailadresse unsensitive_account: Afmarkér medierne i din konto som sensitive unsilence_account: Fjern kontotavsgørelse unsuspend_account: Afsuspendér konto @@ -271,6 +275,7 @@ da: update_domain_block: Opdatér domæneblokering update_status: Opdatér status actions: + 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}" confirm_user_html: "%{name} bekræftede e-mailadressen for bruger %{target}" @@ -288,6 +293,7 @@ da: destroy_domain_allow_html: "%{name} fjernede federeringstilladelsen med domænet %{target}" destroy_domain_block_html: "%{name} afblokerede domænet %{target}" destroy_email_domain_block_html: "%{name} afblokerede e-maildomænet %{target}" + destroy_instance_html: "%{name} udrensede domænet %{target}" destroy_ip_block_html: "%{name} slettede en regel for IP %{target}" destroy_status_html: "%{name} fjernede statussen fra %{target}" destroy_unavailable_domain_html: "%{name} genoptog levering til domænet %{target}" @@ -300,6 +306,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_user_html: "%{name} afviste tilmelding fra %{target}" remove_avatar_user_html: "%{name} fjernede %{target}s profilbillede" reopen_report_html: "%{name} genåbnede anmeldelsen %{target}" reset_password_user_html: "%{name} nulstillede adgangskoden for brugeren %{target}" @@ -308,6 +315,7 @@ da: silence_account_html: "%{name} tavsgjorde %{target}s konto" suspend_account_html: "%{name} suspenderede %{target}s konto" unassigned_report_html: "%{name} fjernede tildelingen af rapporten %{target}" + unblock_email_account_html: "%{name} afblokerede %{target}s e-mailadresse" unsensitive_account_html: "%{name} afmarkerede %{target}s medier som sensitive" unsilence_account_html: "%{name} fjernede tavsgøring af %{target}s konto" unsuspend_account_html: "%{name} fjernede suspenderingen af %{target}s konto" @@ -375,6 +383,7 @@ da: interactions: interaktioner media_storage: Medielagerplads new_users: nye brugere + opened_reports: rapporter åbnet pending_reports_html: one: "<strong>1</strong> afventende rapport" other: "<strong>%{count}</strong> afventende rapporter" @@ -464,6 +473,7 @@ da: back_to_limited: Begrænset back_to_warning: Advarsel by_domain: Domæne + confirm_purge: Sikker på, at data skal slettes fra dette domæne permanent? delivery: all: Alle clear: Ryd leveringsfejl @@ -479,6 +489,7 @@ da: delivery_available: Levering er tilgængelig delivery_error_days: Leveringsfejldage delivery_error_hint: Er levering ikke mulig i %{count} dage, markeres den automatisk som ikke-leverbar. + destroyed_msg: Data fra %{domain} er nu sat i kø til snarlig sletning. empty: Ingen domæner fundet. known_accounts: one: "%{count} kendt konto" @@ -489,6 +500,7 @@ da: title: Moderation private_comment: Privat kommentar public_comment: Offentlig kommentar + purge: Udrens title: Federation total_blocked_by_us: Blokeret af os total_followed_by_them: Følges af dem @@ -518,8 +530,6 @@ da: title: Opret ny IP-regel no_ip_block_selected: Ingen IP-regler blev ændret, da ingen blev valgt title: IP-regler - pending_accounts: - title: Afventende konti (%{count}) relationships: title: "%{acct}-relationer" relays: @@ -541,32 +551,44 @@ da: report_notes: created_msg: Anmeldelsesnotat er oprettet! destroyed_msg: Anmeldelsesnotat er slettet! + today_at: I dag kl. %{time} reports: account: notes: one: "%{count} notat" other: "%{count} notater" - reports: - one: "%{count} anmeldelse" - other: "%{count} anmeldelser" + action_log: Revisionslog action_taken_by: Handling udført af + actions: + 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:' + add_to_report: Føj mere til anmeldelse are_you_sure: Sikker? assign_to_self: Tildel til mig assigned: Tildelt moderator by_target_domain: Domæne for anmeldt konto + category: Kategori + category_description_html: Årsagen til anmeldelsen af denne konto og/eller indhold refereres i kommunikationen med den anmeldte konto comment: none: Ingen + comment_description_html: 'For at give mere information, skrev %{name}:' created_at: Anmeldt + delete_and_resolve: Løs og slet forwarded: Videresendt forwarded_to: Videresendt til %{domain} mark_as_resolved: Markér som løst mark_as_unresolved: Markér som ikke-løst + no_one_assigned: Ingen notes: create: Tilføj notat create_and_resolve: Løs med notat create_and_unresolve: Genåbn med notat delete: Slet 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 reopen: Genåbn anmeldelse report: 'Anmeldelse #%{id}' reported_account: Anmeldt konto @@ -574,11 +596,14 @@ da: resolved: Løst resolved_msg: Anmeldelse er nu løst! status: Status + statuses: Anmeld indhold + statuses_description_html: Krænkende indhold refereres i kommunikationen med den anmeldte konto target_origin: Anmeldte kontos oprindelse title: Anmeldelser unassign: Utildel unresolved: Ikke-løst updated_at: Opdateret + view_profile: Vis profil rules: add_new: Tilføj regel delete: Slet @@ -680,15 +705,13 @@ da: destroyed_msg: Websteds-upload blev slettet! statuses: back_to_account: Tilbage til kontosiden + back_to_report: Retur til anmeldelsessiden batch: - delete: Slet - nsfw_off: Markér som ikke-sensitivt - nsfw_on: Markér som sensitivt + remove_from_report: Fjern fra anmeldelse + report: Anmeldelse deleted: Slettet - failed_to_execute: Udførelse mislykkedes media: title: Medier - no_media: Ingen medier no_status_selected: Ingen indlæg ændret, da ingen var valgt title: Kontoindlæg with_media: Med medier @@ -701,21 +724,51 @@ da: sidekiq_process_check: message_html: Ingen Sidekiq-proces kører for %{value}-kø(er). Gennemgå din Sidekiq-opsætning tags: - accounts_today: Unikke anvendelser i dag - accounts_week: Unikke anvendelser denne uge - breakdown: Dagens anvendelse fordelt på kilde - last_active: Senest aktiv - most_popular: Mest populære - most_recent: Seneste - name: Hashtag review: Gennemsynsstatus - reviewed: Gennemgået - title: Hashtags - trending_right_now: Populære lige nu - unique_uses_today: "%{count} indlæg i dag" - unreviewed: Ikke gennemgået updated_msg: Hashtag-indstillinger opdateret title: Administration + trends: + allow: Tillad + approved: Godkendt + disallow: Tillad ikke + links: + allow: Tillad link + allow_provider: Tillad udgiver + 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 + title: Populære links + usage_comparison: Delt %{today} gange i dag, sammenlignet med %{yesterday} i går + pending_review: Afventende vurdering + preview_card_providers: + allowed: Links fra denne udgiver kan trende + rejected: Links fra denne udgiver vil ikke trende + title: Udgivere + rejected: Afvist + tags: + current_score: Aktuel score %{score} + dashboard: + tag_accounts_measure: unikke brugere + tag_languages_dimension: Topsprog + tag_servers_dimension: Topservere + tag_servers_measure: forskellige servere + tag_uses_measure: brugere i alt + listable: Kan foreslås + not_listable: Foreslås ikke + not_trendable: Vises ikke under tendenser + not_usable: Kan ikke bruges + peaked_on_and_decaying: Toppede d. %{date}, nu nedadgående + title: Populære hashtags + trendable: Kan vises under tendenser + trending_rank: 'Populær #%{rank}' + 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 + title: Trends warning_presets: add_new: Tilføj ny delete: Slet @@ -730,9 +783,16 @@ da: body: "%{reporter} har anmeldt %{target}" body_remote: Nogen fra %{domain} har anmeldt %{target} subject: Ny anmeldelse for %{instance} (#%{id}) - new_trending_tag: - body: 'Hashtagget #%{name} teender i dag, men er ikke tidligere blevet gennemgået. Det vises ikke offentligt, medmindre du tillader det eller blot gemme formularen, som den er, for aldrig at høre om det igen.' - subject: Nyt hashtag til gennemsyn på %{instance} (#%{name}) + new_trending_links: + body: De flg. links er populære i dag, men deres udgivere er ikke tidligere blevet revideret. De vil ikke blive vist offentligt, medmindre du godkender dem. Yderligere notifikationer fra de samme udgivere genereres ikke. + no_approved_links: Der er i pt. ingen godkendte populære links. + requirements: Det laveste godkendte populære link er pt. "%{lowest_link_title}" med en score på %{lowest_link_score}. + subject: Nye populære links er klar til revidering på %{instance} + new_trending_tags: + body: 'Flg. hashtags er populære i dag, men de er ikke tidligere revideret. De vises ikke offentligt, medmindre du godkender dem:' + no_approved_tags: Der er pt. ingen godkendte populære hashtags. + requirements: 'Det laveste godkendte populære hashtags er pt. #%{lowest_tag_name} med en score på %{lowest_tag_score}.' + subject: Nye populære hashtags er klar til revidering på %{instance} aliases: add_new: Opret alias created_msg: Nyt alias oprettet. Du kan nu påbegynde flytningen fra den gamle konto. @@ -784,6 +844,7 @@ da: invalid_reset_password_token: Adgangskodenulstillingstoken ugyldigt eller udløbet. Anmod om et nyt. link_to_otp: Angiv en tofaktorkode fra din mobil, eller en gendannelseskode link_to_webauth: Brug din sikkerhedsnøgleenhed + log_in_with: Log ind med login: Log ind logout: Log ud migrate_account: Flyt til en anden konto @@ -939,34 +1000,15 @@ da: changes_saved_msg: Ændringerne er gemt! copy: Kopier delete: Slet - no_batch_actions_available: Ingen multihandlinger tilgængelige på denne side + none: Intet order_by: Sortér efter save_changes: Gem ændringer + today: i dag validation_errors: one: Noget er ikke er helt i vinkel! Tjek fejlen nedenfor other: Noget er ikke er helt i vinkel! Tjek de %{count} fejl nedenfor html_validator: invalid_markup: 'indeholder ugyldig HTML-markup: %{error}' - identity_proofs: - active: Aktiv - authorize: Ja, godkend - authorize_connection_prompt: Godkend denne kryptografiske forbindelse? - errors: - failed: Den kryptografiske forbindelse mislykkedes. Prøv igen fra %{provider}. - keybase: - invalid_token: Keybase-tokens er hashes af signaturer og skal udgøre 66 hex tegn - verification_failed: Keybase genkender ikke dette token som Keybasebruger %{kb_username}s signatur. Forsøg igen fra Keybase. - wrong_user: Kan ikke oprette et bevis til %{proving}, når indlogget %{current}. Log ind som %{proving} og forsøg igen. - explanation_html: Her kan du kryptografisk forbinde dine andre identiteter fra andre platforme, såsom Keybase. Dette lader andre personer sende dig krypterede beskeder på disse platforme og giver dem mulighed for at stole på, at det indhold, du sender dem, kommer fra dig. - i_am_html: Jeg er %{username} på %{service}. - identity: Identitet - inactive: Inaktiv - publicize_checkbox: 'Og toot dette:' - publicize_toot: 'Det er bevist! Jeg er %{username} på %{service}: %{url}' - remove: Fjern bevis fra konto - removed: Bevis fjernet fra kontoen - status: Verifikationsstatus - view_proof: Se bevis imports: errors: over_rows_processing_limit: indeholder mere end %{count} rækker @@ -1182,6 +1224,9 @@ da: reply: proceed: Fortsæt for at besvare prompt: 'Du ønsker at besvare dette indlæg:' + reports: + errors: + invalid_rules: refererer ikke til gyldige regler scheduled_statuses: over_daily_limit: Du har nået dagsgrænsen på %{limit} planlagte indlæg over_total_limit: Du har nået grænsen på %{limit} planlagte indlæg @@ -1240,7 +1285,6 @@ da: edit_profile: Redigér profil export: Dataeksport featured_tags: Fremhævede hashtags - identity_proofs: Identitetsbeviser import: Import import_and_export: Importér og eksportér migrate: Kontomigrering @@ -1265,18 +1309,19 @@ da: other: "%{count} videoer" boosted_from_html: Boostet fra %{acct_link} content_warning: 'Indholdsadvarsel: %{warning}' + default_language: Det samme som UI-sproget disallowed_hashtags: one: 'indeholdte et ikke tilladt hashtag: %{tags}' other: 'indeholdte de ikke tilladte hashtags: %{tags}' + edited_at: Redigeret %{date} errors: in_reply_not_found: Indlægget, du forsøger at besvare, ser ikke ud til at findes. - language_detection: Detektér sprog automatisk open_in_web: Åbn i browser over_character_limit: grænsen på %{max} tegn er nået pin_errors: + direct: Indlæg, som kun kan ses af nævnte brugere, kan ikke fastgøres limit: Du har allerede fastgjort det maksimale antal indlæg ownership: Andres indlæg kan ikke fastgøres - private: Ikke-offentlige indlæg kan ikke fastgjøres reblog: Et boost kan ikke fastgøres poll: total_people: @@ -1351,6 +1396,7 @@ da: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Tilføj disable: Deaktivér 2FA @@ -1378,24 +1424,31 @@ da: subject: Bekræft indlogningsforsøg title: Indlogningsforsøg warning: + categories: + spam: Spam + violation: Indhold overtræder flg. fællesskabsretningslinjer explanation: - disable: Du kan ikke længere logge ind på, eller på anden vis bruge, din konto, men din profil og øvrige data forbliver intakte. - sensitive: Dine uploadede mediefiler og linkede medier vil blive behandlet som sensitive. - silence: Du kan stadig bruge din konto, men kun personer, som allerede følger dig, vil se dine indlæg på denne server, og du kan blive udelukket fra forskellige offentlige lister. Personer vil stadig manuelt kunne følge dig. - suspend: Du kan ikke længere bruge din konto, og din profil samt øvrige data kan ikke længere tilgås. Du kan stadig logge ind for at anmode om en sikkerhedskopi af dine data, indtil dataene helt er fjernet. men visse data bevares mhp. at forhindre dig i at omgå udelukkelsen. - get_in_touch: Du kan besvare denne e-mail for at komme i kontakt med personalet på %{instance}. + delete_statuses: Nogle af dine indlæg har vist sig at være i strid med en eller flere fællesskabsretningslinjer og er som konsekvens fjernet af moderatorerne på %{instance}. Fremtidige overtrædelser kan resultere i hårdere kontosanktioner. + disable: Din konto kan ikke længere bruges, men profilen og andre data er intakte. Du kan anmode om en sikkerhedskopi af dine data, ændre kontoindstillinger eller slette kontoen. + sensitive: Fra nu af vil alle dine uploadede mediefiler blive markeret som sensitive og skjult bag en klik-igennem advarsel. + silence: Din konto kan stadig bruges, men dine indlæg vil kunne ses af personer, som allerede følger dig på denne server, og du kan blive udelukket fra forskellige opdagelsesfunktioner. Personer vil stadig kunne følge dig manuelt. + 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: 'Specifikt til:' + statuses: 'Indlæg fundet i krænkelse:' subject: + delete_statuses: Dine indlæg på %{acct} er blevet fjernet disable: Din konto %{acct} er blevet frosset none: Advarsel for %{acct} - sensitive: Din konto %{acct} opslagsmedie er blevet markeret som sensitivt + sensitive: Dine mediefiler på %{acct} markeres fra nu af som sensitive silence: Din konto %{acct} er blevet begrænset suspend: Din konto %{acct} er blevet suspenderet title: + delete_statuses: Indlæg fjernet disable: Konto frosset none: Advarsel - sensitive: Dit medie er blevet markeret som sensitivt + sensitive: Medier skjult silence: Konto begrænset suspend: Konto suspenderet welcome: diff --git a/config/locales/de.yml b/config/locales/de.yml index 4e59f7b34..6d0865026 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -99,7 +99,6 @@ de: accounts: add_email_domain_block: E-Mail-Domain blacklisten approve: Akzeptieren - approve_all: Alle akzeptieren approved_msg: "%{username}'s Anmeldeantrag erfolgreich genehmigt" are_you_sure: Bist du sicher? avatar: Profilbild @@ -114,6 +113,7 @@ de: confirm: Bestätigen confirmed: Bestätigt confirming: Bestätigung + custom: Benutzerdefiniert delete: Daten löschen deleted: Gelöscht demote: Degradieren @@ -131,7 +131,7 @@ de: enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentifizierung per E-Mail enabled: Freigegeben enabled_msg: "%{username}'s Konto erfolgreich freigegeben" - followers: Folgende + followers: Follower follows: Folgt header: Titelbild inbox_url: Posteingangs-URL @@ -153,7 +153,6 @@ de: active: Aktiv all: Alle pending: In Warteschlange - silenced: Stummgeschaltet suspended: Gesperrt title: Moderation moderation_notes: Moderationsnotizen @@ -171,7 +170,6 @@ de: redownload: Profil neu laden redownloaded_msg: Profil von %{username} erfolgreich von Ursprung aktualisiert reject: Ablehnen - reject_all: Alle ablehnen rejected_msg: "%{username}'s Anmeldeantrag erfolgreich abgelehnt" remove_avatar: Profilbild entfernen remove_header: Titelbild entfernen @@ -206,12 +204,14 @@ de: silence: Stummschalten silenced: Stummgeschaltet statuses: Beiträge + strikes: Vorherige Strikes subscribe: Abonnieren 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. - time_in_queue: "%{time} in der Warteschlange" title: Konten + unblock_email: E-Mail Adresse entsperren + unblocked_email_msg: Die E-Mail-Adresse von %{username} wurde erfolgreich entsperrt unconfirmed_email: Unbestätigte E-Mail-Adresse undo_sensitized: Nicht mehr als NSFW markieren undo_silenced: Stummschaltung aufheben @@ -226,6 +226,7 @@ de: whitelisted: Auf der Whitelist action_logs: action_types: + approve_user: Benutzer genehmigen assigned_to_self_report: Bericht zuweisen change_email_user: E-Mail des Benutzers ändern confirm_user: Benutzer bestätigen @@ -243,6 +244,7 @@ de: destroy_domain_allow: Erlaube das Löschen von Domains destroy_domain_block: Domain-Blockade löschen destroy_email_domain_block: E-Mail-Domain-Blockade löschen + destroy_instance: Domain-Daten entfernen destroy_ip_block: IP-Regel löschen destroy_status: Beitrag löschen destroy_unavailable_domain: Nicht verfügbare Domain löschen @@ -255,6 +257,7 @@ de: enable_user: Benutzer aktivieren memorialize_account: Account deaktivieren promote_user: Benutzer befördern + reject_user: Benutzer ablehnen remove_avatar_user: Profilbild entfernen reopen_report: Meldung wieder eröffnen reset_password_user: Passwort zurücksetzen @@ -263,6 +266,7 @@ de: silence_account: Konto stummschalten suspend_account: Konto sperren unassigned_report: Meldung widerrufen + unblock_email_account: E-Mail Adresse entsperren unsensitive_account: Markiere die Medien in deinem Konto nicht mehr als NSFW unsilence_account: Konto nicht mehr stummschalten unsuspend_account: Konto nicht mehr sperren @@ -271,6 +275,7 @@ de: update_domain_block: Domain Block aktualisieren update_status: Beitrag aktualisieren actions: + 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" confirm_user_html: "%{name} hat die E-Mail-Adresse von %{target} bestätigt" @@ -288,6 +293,7 @@ de: destroy_domain_allow_html: "%{name} hat die Domain %{target} von der Whitelist entfernt" destroy_domain_block_html: "%{name} hat die Domain %{target} entblockt" destroy_email_domain_block_html: "%{name} hat die E-Mail-Domain %{target} gewhitelistet" + destroy_instance_html: "%{name} hat die Daten der Domain %{target} entfernt" destroy_ip_block_html: "%{name} hat eine Regel für IP %{target} gelöscht" destroy_status_html: "%{name} hat einen Beitrag von %{target} entfernt" destroy_unavailable_domain_html: "%{name} setzte die Lieferung an die Domain %{target} fort" @@ -300,6 +306,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_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" reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt" @@ -308,6 +315,7 @@ de: silence_account_html: "%{name} hat das Konto von %{target} stummgeschaltet" suspend_account_html: "%{name} hat das Konto von %{target} verbannt" unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt" + unblock_email_account_html: "%{name} entsperrte %{target}'s E-Mail-Adresse" unsensitive_account_html: "%{name} markierte %{target}'s Medien nicht als NSFW" unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben" unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben" @@ -371,9 +379,28 @@ de: updated_msg: Emoji erfolgreich aktualisiert! upload: Hochladen dashboard: + active_users: Aktive Benutzer + interactions: Interaktionen + 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 space: Speicherverbrauch title: Übersicht + top_languages: Top aktive Sprachen + top_servers: Top aktive Server + website: Website domain_allows: add_new: Whitelist-Domain created_msg: Domain wurde erfolgreich zur Whitelist hinzugefügt @@ -446,6 +473,7 @@ de: back_to_limited: Beschränkt back_to_warning: Warnung by_domain: Domain + confirm_purge: Bist du dir sicher, dass du die Daten für diese Domain für immer löschen möchtest? delivery: all: Alle clear: Zustellfehler löschen @@ -461,6 +489,7 @@ de: delivery_available: Zustellung funktioniert delivery_error_days: Tage seitdem die Zustellung nicht funktioniert 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" @@ -471,6 +500,7 @@ de: title: Moderation private_comment: Privater Kommentar public_comment: Öffentlicher Kommentar + purge: Löschen title: Föderation total_blocked_by_us: Von uns blockiert total_followed_by_them: Gefolgt von denen @@ -500,8 +530,6 @@ de: title: Neue IP-Regel erstellen no_ip_block_selected: Keine IP-Regeln wurden geändert, weil keine ausgewählt wurden title: IP-Regeln - pending_accounts: - title: Ausstehende Konten (%{count}) relationships: title: Beziehungen von %{acct} relays: @@ -523,32 +551,44 @@ de: report_notes: created_msg: Meldungs-Kommentar erfolgreich erstellt! destroyed_msg: Meldungs-Kommentar erfolgreich gelöscht! + today_at: Heute um %{time} reports: account: notes: one: "%{count} Notiz" other: "%{count} Notizen" - reports: - one: "%{count} Bericht" - other: "%{count} Berichte" + action_log: Überprüfungsprotokoll action_taken_by: Maßnahme ergriffen durch + actions: + other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation an das gemeldete Konto. + 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:' + add_to_report: Mehr zur Meldung hinzufügen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen assigned: Zugewiesener Moderator by_target_domain: Domain des gemeldeten Kontos + category: Kategorie + category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert comment: none: Kein + comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} folgendes:' created_at: Gemeldet + delete_and_resolve: Löschen und auflösen forwarded: Weitergeleitet forwarded_to: Weitergeleitet an %{domain} mark_as_resolved: Als gelöst markieren mark_as_unresolved: Als ungelöst markieren + no_one_assigned: Niemand notes: create: Kommentar hinzufügen create_and_resolve: Mit Kommentar lösen create_and_unresolve: Mit Kommentar wieder öffnen delete: Löschen 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 reopen: Meldung wieder eröffnen report: 'Meldung #%{id}' reported_account: Gemeldetes Konto @@ -556,11 +596,14 @@ de: resolved: Gelöst resolved_msg: Meldung erfolgreich gelöst! status: Zustand + statuses: Gemeldeter Inhalt + statuses_description_html: Störende Inhalte werden in der Kommunikation mit dem gemeldeten Konto zitiert target_origin: Domain des gemeldeten Kontos title: Meldungen unassign: Zuweisung entfernen unresolved: Ungelöst updated_at: Aktualisiert + view_profile: Zeige Profil rules: add_new: Regel hinzufügen delete: Löschen @@ -662,15 +705,13 @@ de: destroyed_msg: Upload erfolgreich gelöscht! statuses: back_to_account: Zurück zum Konto + back_to_report: Zurück zur Seite mit den Meldungen batch: - delete: Löschen - nsfw_off: Als nicht NSFW markieren - nsfw_on: Als NSFW markieren + remove_from_report: Von der Meldung entfernen + report: Meldung deleted: Gelöscht - failed_to_execute: Ausführen fehlgeschlagen media: title: Medien - no_media: Keine Medien no_status_selected: Keine Beiträge wurden geändert, weil keine ausgewählt wurden title: Beiträge des Kontos with_media: Mit Medien @@ -683,21 +724,51 @@ de: sidekiq_process_check: message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfen Sie Ihre Sidekiq-Konfiguration tags: - accounts_today: Einzigartige Nutzungen heute - accounts_week: Einzigartige Nutzung dieser Woche - breakdown: Heruntergebrochene Statistiken der heutigen Nutzung nach Quelle - last_active: Zuletzt aktiv - most_popular: Am beliebtesten - most_recent: Neuste - name: Hashtag review: Prüfstatus - reviewed: Überprüft - title: Hashtags - trending_right_now: Aktuell in den Trends - unique_uses_today: "%{count} Beiträge heute" - unreviewed: Nicht überprüft updated_msg: Hashtageinstellungen wurden erfolgreich aktualisiert title: Administration + trends: + allow: Erlauben + approved: Freigegeben + disallow: Verbieten + links: + allow: Erlaube Link + 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 + preview_card_providers: + allowed: Links von diesem Herausgeber können angesagt sein + rejected: Links von diesem Herausgeber können nicht angesagt sein + title: Herausgeber + rejected: Abgelehnt + tags: + current_score: Aktuelle Punktzahl %{score} + dashboard: + tag_accounts_measure: eindeutige Verwendungen + tag_languages_dimension: Top Sprachen + tag_servers_dimension: Top Server + tag_servers_measure: verschiedene Server + tag_uses_measure: Gesamtnutzungen + listable: Kann vorgeschlagen werden + not_listable: Wird nicht vorgeschlagen + 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 + 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 delete: Löschen @@ -712,9 +783,16 @@ de: body: "%{reporter} hat %{target} gemeldet" body_remote: Jemand von %{domain} hat %{target} gemeldet subject: Neue Meldung auf %{instance} (#%{id}) - new_trending_tag: - body: 'Der Hashtag #%{name} ist heute am trenden, aber wurde vorher noch nicht überprüft. Er wird nicht öffentlich angezeigt, es sei denn du erlaubst es oder speicherst das Formular ab und vergisst es.' - subject: Neuer Hashtag zur Überprüfung auf %{instance} verfügbar (#%{name}) + new_trending_links: + body: Die folgenden Links sind heute in den Trends, aber der Ursprung wurde bisher nicht überprüft. Sie werden nicht öffentlich angezeigt, es sei denn, du genehmigst sie. Sollten weitere Links vom selben Ursprung trenden, müssen sie nicht vorher überprüft werden. + no_approved_links: Derzeit sind keine Links hinterlegt, die genehmigt wurden. + requirements: Der am wenigsten genehmigte Trend-Link ist derzeit "%{lowest_link_title}" mit einer Punktzahl von %{lowest_link_score}. + subject: Neue Trend-Links zur Überprüfung auf %{instance} + new_trending_tags: + body: 'Die folgenden Hashtags trenden heute, aber sie wurden bisher nicht überprüft. Sie werden nicht öffentlich angezeigt, es sei denn, du genehmigst sie:' + no_approved_tags: Derzeit gibt es keine genehmigten trendene Hashtags. + requirements: 'Der am wenigsten genehmigte trendene Hashtag ist derzeit #%{lowest_tag_name} mit einer Punktzahl von %{lowest_tag_score}.' + subject: Neuer Hashtag zur Überprüfung auf %{instance} verfügbar aliases: add_new: Alias erstellen created_msg: Ein neuer Alias wurde erfolgreich erstellt. Du kannst nun den Wechsel vom alten Konto starten. @@ -766,6 +844,7 @@ de: invalid_reset_password_token: Das Token zum Zurücksetzen des Passworts ist ungültig oder abgelaufen. Bitte fordere ein neues an. link_to_otp: Gib einen Zwei-Faktor-Code von deinem Handy oder einen Wiederherstellungscode ein link_to_webauth: Verwende deinen Sicherheitsschlüssel + log_in_with: Anmelden mit login: Anmelden logout: Abmelden migrate_account: Ziehe zu einem anderen Konto um @@ -921,34 +1000,15 @@ de: changes_saved_msg: Änderungen gespeichert! copy: Kopieren delete: Löschen - no_batch_actions_available: Keine Massenaktionen auf dieser Seite verfügbar + none: Keine order_by: Sortieren nach save_changes: Änderungen speichern + today: heute validation_errors: one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler other: Etwas ist noch nicht ganz richtig! Bitte korrigiere %{count} Fehler html_validator: invalid_markup: 'enthält ungültiges HTML-Markup: %{error}' - identity_proofs: - active: Aktiv - authorize: Ja, autorisieren - authorize_connection_prompt: Diese kryptographische Verbindung autorisieren? - errors: - failed: Die kryptographische Verbindung ist fehlgeschlagen. Bitte versuche es nochmal von %{provider}. - keybase: - invalid_token: Keybase-Tokens sind Hashsignaturen und müssen 66 Hexadezimalzeichen lang sein - verification_failed: Keybase nimmt dieses Token nicht als Signatur für Keybase-Benutzer %{kb_username} an. Bitte versuche es nochmal über Keybase. - wrong_user: Kann keinen Beweis für %{proving} erstellen während du als %{current} angemeldet bist. Melde dich als %{proving} an und versuche es noch einmal. - explanation_html: Hier kannst du kryptographisch deine anderen Identitäten wie dein Keybase-Profil verbinden. Dadurch können andere Leute dir verschlüsselte Nachrichten senden und dem Inhalt, den sie dir senden, vertrauen. - i_am_html: Ich bin %{username} auf %{service}. - identity: Identität - inactive: Inaktiv - publicize_checkbox: 'Und poste das:' - publicize_toot: 'Es ist offiziell! Ich bin %{username} auf %{service}: %{url}' - remove: Nachweis vom Konto entfernen - removed: Identitätsnachweis erfolgreich vom Konto entfernt - status: Verifizierungsstatus - view_proof: Zeige Nachweis imports: errors: over_rows_processing_limit: enthält mehr als %{count} Zeilen @@ -1164,6 +1224,9 @@ de: reply: proceed: Fortfahren zum Antworten prompt: 'Du möchtest auf diesen Beitrag antworten:' + reports: + errors: + invalid_rules: verweist nicht auf gültige Regeln scheduled_statuses: over_daily_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, für heute erreicht over_total_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, erreicht @@ -1222,7 +1285,6 @@ de: edit_profile: Profil bearbeiten export: Datenexport featured_tags: Empfohlene Hashtags - identity_proofs: Identitätsnachweise import: Datenimport import_and_export: Importieren und Exportieren migrate: Konto-Umzug @@ -1230,7 +1292,7 @@ de: preferences: Einstellungen profile: Profil relationships: Folgende und Gefolgte - statuses_cleanup: Automatisches Beitraglöschen + statuses_cleanup: Automatische Löschung two_factor_authentication: Zwei-Faktor-Auth webauthn_authentication: Sicherheitsschlüssel statuses: @@ -1247,18 +1309,19 @@ de: other: "%{count} Videos" boosted_from_html: Geteilt von %{acct_link} content_warning: 'Inhaltswarnung: %{warning}' + default_language: Wie die Oberflächensprache disallowed_hashtags: one: 'enthält einen verbotenen Hashtag: %{tags}' other: 'enthält verbotene Hashtags: %{tags}' + edited_at: Bearbeitet am %{date} errors: in_reply_not_found: Der Beitrag, auf den du antworten möchtest, scheint nicht zu existieren. - language_detection: Sprache automatisch erkennen open_in_web: Im Web öffnen over_character_limit: Zeichenlimit von %{max} überschritten pin_errors: + direct: Beiträge, die nur für erwähnte Benutzer sichtbar sind, können nicht angepinnt werden limit: Du hast bereits die maximale Anzahl an Beiträgen angeheftet ownership: Du kannst nur eigene Beiträge anheften - private: Du kannst nur öffentliche Beiträge anheften reblog: Du kannst keine geteilten Beiträge anheften poll: total_people: @@ -1415,6 +1478,7 @@ de: formats: default: "%d.%m.%Y %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Hinzufügen disable: Deaktivieren @@ -1442,24 +1506,31 @@ de: subject: Bitte bestätige den Anmeldeversuch title: Anmeldeversuch warning: + categories: + spam: Spam + violation: Inhalt verletzt die folgenden Community-Richtlinien explanation: - disable: Solange dein Konto eingefroren ist, sind deine Benutzerdaten intakt; aber du kannst nichts tun, bis dein Konto entsperrt wurde. - sensitive: Deine hochgeladenen Mediendateien und verknüpften Medien werden als NSFW markiert. + delete_statuses: Einige deiner Beiträge wurden aufgrund eines Verstoßes gegen eine oder mehrere Community-Richtlinien entfernt und von den Moderatoren auf %{instance} entfernt. Künftige Verstöße können zu härteren Strafmaßnahmen gegen dein Konto führen. + disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst ein Backup deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen. + sensitive: Von nun an werden alle deine hochgeladenen Mediendateien als sensibel markiert und hinter einer Warnung versteckt. silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. - suspend: Dein Konto wurde gesperrt und alle deine Beiträge und hochgeladenen Medien wurden unwiderruflich vom Server und anderen Servern, bei denen du Folgende hattest, gelöscht. - get_in_touch: Du kannst auf diese E-Mail antworten, um mit dem Personal von %{instance} in Kontakt zu treten. + 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: 'Besonders für:' + statuses: 'Beiträge, die in Verletzung gefunden wurden:' subject: + delete_statuses: Deine Beiträge auf %{acct} wurden entfernt disable: Dein Konto %{acct} wurde eingefroren none: Warnung für %{acct} - sensitive: Die Medien deines Konto %{acct} wurden als NSFW markiert + sensitive: Deine Mediendateien auf %{acct} werden von nun an als sensibel markiert silence: Dein Konto %{acct} wurde limitiert suspend: Dein Konto %{acct} wurde gesperrt title: + delete_statuses: Beiträge entfernt disable: Konto eingefroren none: Warnung - sensitive: Deine Medien wurden als NSFW markiert + sensitive: Medien versteckt silence: Konto limitiert suspend: Konto gesperrt welcome: diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml index 29fde3941..eaeb425f3 100644 --- a/config/locales/devise.ast.yml +++ b/config/locales/devise.ast.yml @@ -2,8 +2,8 @@ ast: devise: confirmations: - confirmed: La direición de corréu confirmóse con ésitu. - send_instructions: Nunos minutos, vas recibir un corréu coles instrucciones pa cómo confirmar la direición de corréu. Comprueba la carpeta Puxarra si nun lu recibiesti, por favor. + confirmed: La direición de corréu confirmóse correutamente. + send_instructions: Nunos minutos, vas recibir un corréu coles instrucciones pa cómo confirmar la direición de corréu. Comprueba la carpeta Puxarra si nun lu recibiesti. send_paranoid_instructions: Si la direición de corréu esiste na nuesa base de datos, nunos minutos vas recibir un corréu coles instrucciones pa cómo confirmala. Comprueba la carpeta Puxarra si nun lu recibiesti. failure: already_authenticated: Yá aniciesti sesión. @@ -11,7 +11,7 @@ ast: last_attempt: Tienes un intentu más enantes de bloquiar la cuenta. locked: La cuenta ta bloquiada. pending: La cuenta ta entá en revisión. - timeout: La sesión caducó. Volvi aniciar sesión pa siguir, por favor. + timeout: La sesión caducó. Volvi aniciar sesión pa siguir. unauthenticated: Precises aniciar sesión o rexistrate enantes de siguir. mailer: confirmation_instructions: @@ -22,7 +22,8 @@ ast: title: Direición nueva de corréu password_change: explanation: Camudó la contraseña de la cuenta. - subject: 'Mastodon: Camudó la contraseña' + extra: Si nun camudesti la contraseña, ye probable que daquién accediere a la cuenta. Camuda la contraseña agora mesmo o ponte en contautu cola alministración del sirvidor si nun yes a acceder a la cuenta. + subject: 'Mastodon: La contraseña camudó' reset_password_instructions: explanation: Solicitesti una contraseña nueva pa la cuenta. extra: Si nun solicitesti esto, inora esti corréu. La contraseña nun va camudar hasta que nun accedas al enllaz d'enriba y crees una nueva. @@ -38,20 +39,21 @@ ast: passwords: send_instructions: Si la direición de corréu esiste na base de datos, nunos minutos vas recibir un enllaz pa recuperar la contraseña a esi corréu. Comprueba la carpeta Puxarra si nun lu recibiesti. send_paranoid_instructions: Si la direición de corréu esiste na base de datos, nunos minutos vas recibir un enllaz pa recuperar la contraseña a esi corréu. Comprueba la carpeta Puxarra si nun lu recibiesti. - updated: La contraseña camudó con ésitu. Agora aniciesti sesión. - updated_not_active: La contraseña camudó con ésitu. + updated_not_active: La contraseña camudó con correutamente. registrations: - signed_up: "¡Afáyate! Rexistréstite con ésitu." - signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la direición de corréu. Sigui l'enllaz p'activar la cuenta. Comprueba la carpeta Puxarra si nun recibiesti esti corréu, por favor. - updated: La cuenta anovóse con ésitu. + signed_up: "¡Afáyate! Rexistréstite correutamente." + signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la direición de corréu. Sigui l'enllaz p'activar la cuenta. Comprueba la carpeta Puxarra si nun recibiesti esti corréu. + updated: La cuenta anovóse correutamente. + sessions: + signed_in: Aniciesti sesión correutamente. unlocks: send_instructions: Nunos minutos vas recibir un corréu coles instrucciones pa cómo desbloquiar la cuenta. Comprueba la carpeta Puxarra si nun lu recibiesti. send_paranoid_instructions: Si esiste la cuenta, nun momentu vas recibir un corréu coles instrucciones pa cómo desbloquiala. Comprueba la carpeta Puxarra si nun recibiesti esti corréu. - unlocked: La cuenta desbloquióse con ésitu. Anicia sesión pa siguir, por favor. + unlocked: La cuenta desbloquióse correutamente. Anicia sesión pa siguir. errors: messages: already_confirmed: yá se confirmó, volvi aniciar sesión not_found: nun s'alcontró not_saved: one: '1 fallu torgó que %{resource} se guardare:' - other: "%{count} fallos torgó que %{resource} se guardaren:" + other: "%{count} fallos torgaron que %{resource} se guardaren:" diff --git a/config/locales/devise.br.yml b/config/locales/devise.br.yml index dc4a650e4..86c726811 100644 --- a/config/locales/devise.br.yml +++ b/config/locales/devise.br.yml @@ -3,6 +3,8 @@ br: devise: confirmations: confirmed: Kadarnaet eo bet ho chomlec'h postel gant berzh. + send_instructions: Resev a rit ur postel evit displegañ penaos kadarnaat ho chomlec'h-postel tuchantig, Mar plij, gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. + send_paranoid_instructions: Ma'z eo ho chomlec'h-postel er stlennvon dija, kaset a vo ur postel deoc'h evit displegañ penaos kadarnaat ho chomlec'h-postel tuchantig. Mar plij, gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. failure: already_authenticated: Kennasket oc'h dija. inactive: N'eo ket gweredekaet ho kont c'hoazh. @@ -11,47 +13,106 @@ br: locked: Prennet eo ho kont. not_found_in_database: "%{authentication_keys} pe ger-tremen diwiriek." pending: O vezañ asantet eo ho kont. + timeout: Ho talc'h a zo aet da dermen. Mar plij, kit-tre c'hoazh evit kenderc'hel. + unauthenticated: Ret eo deoc'h mont-tre pe e em enskrivañ araok kenderc'hel. + unconfirmed: Ret eo deoc'h kadarnaat ho chomlec'h-postel araok kenderc'hel. mailer: confirmation_instructions: action: Gwiriekaat ar chomlec'h postel action_with_app: Kadarnaat ha distroiñ da %{app} + explanation: Krouet ho peus ur c'hont war %{host} gant ar chomlec'h-postel-mañ. N'eus nemet ur c'hlik evit bevaat anezhañ. Ma ne oa ket krouet ganeoc'h, dianavezit ar postel-se. + explanation_when_pending: Enskrivañ ho peus d'ur c'hemennad da %{host} gant ar chomlec'h-postel-se. Pa vo kadarnaet ho chomlec'h-postel, hoc'h enskrivadur a vo asantet. Gallout a rit mont-tre evit kemmañ munudoù ho kont pe skarzhañ anezhañ, met ne c'hellit ket implijout ul lod eus an aezamantoù par ma n'eo ket asantet ho kont. Ma vefe hoc'h enskrivadur nac'het, ho keloù a vefe skarzhet, neuze ne vo ket ret deoc'h ober netra ken. Ma ne oa ket ac'hanoc'h, dianavezit ar postel-se. + extra_html: Mar plij, gwiriit ivez <a href="%{terms_path}"> reolennoù ar servijer</a> ha <a href="%{policy_path}"> hon divizoù-implij</a>. + subject: 'Mastodon: kemennoù kadarnadur evit %{instance}' title: Gwiriekaat ar chomlec'h postel email_changed: + explanation: 'Chomlec''h-postel ho kont a zo bet kemmet da:' + extra: Ma n'ho peus ket kemmet ho postel, e seblant un den bennak en deus gallet mont-tre d'ho kont. Mar plij, kemmit ho ker-tremen hep gortoz, pe kit e darempred gant merer ar servijer ma'z oc'h bac'het e-maez ho kont. subject: 'Mastodoñ : Postel kemmet' title: Chomlec'h postel nevez password_change: explanation: Kemmet eo bet ger-tremen ho kont. + extra: Ma n'ho peus ket kemmet ho ker-tremen, e seblant un den bennak en deus gallet mont-tre d'ho kont. Mar plij, kemmit ho ker-tremen hep gortoz, pe kit e darempred gant merer ar servijer ma'z oc'h bac'het e-maez ho kont. subject: 'Mastodoñ : Ger-tremen kemmet' title: Ger-tremen kemmet reconfirmation_instructions: - explanation: Kadarnait ar chomlec'h nevez evit cheñch ho postel. + explanation: Kadarnait ar chomlec'h nevez evit kemmañ ho postel. + extra: Ma ne oa ket lañset ar ch'emm-se ganeoc'h, dianavezit ar postel-mañ. Chomlec'h-postel ar c'hont Mastodon ne vo ket kemmet keit ha ma c'hlikit ar lec'hienn a-us. subject: 'Mastodoñ : Kadarnait ar postel evit %{instance}' title: Gwiriekaat ar chomlec'h postel reset_password_instructions: - action: Cheñch ar ger-tremen + action: Kemmañ ar ger-tremen explanation: Goulennet ho peus ur ger-tremen nevez evit ho kont. + extra: Ma n'ho peus ket goulennet an dra-se, dianavezit ar postel-mañ. Ho ker-tremen ne gemmo ket keit ha ma c'hlikit ar lec'hienn a-us ha krouiit unan all. + subject: 'Mastodon: Adkorañ kemennoù ar ger-tremen' title: Adderaouekaat ar ger-tremen two_factor_disabled: + explanation: Dilesadur dre eil-elfenn a zo bet nac'het. Gallout a reer mont-tre en ur implijout nemet ur chomlec'h-postel hag ur ger-tremen. + subject: 'Mastodon: dilesadur dre eil-elfenn nac''het' title: 2FA diweredekaet two_factor_enabled: + explanation: Dilesadur dre eil-elfenn a zo aotreet evit ho kont. Ret a vo implij ur jedouer krouet gant an app TOTP koublet evit mont-tre. + subject: 'Mastodon: dilesadur dre eil-elfenn aotreet' title: 2FA gweredekaet + two_factor_recovery_codes_changed: + explanation: Ar c'hodoù adtapout diaraok a zo bet skarzhet ha kodoù nevez krouet. + subject: 'Mastodon: kod adtapout dre eil-elfenn a zo adgrouet' + title: Kod adtapout 2FA a zo bet kemmet + unlock_instructions: + subject: 'Mastodon: Dikrouilhiñ kemennoù' + webauthn_credential: + added: + explanation: An alc'hwez surentez-se a zo bet ouzhpennet d'ho kont + subject: 'Mastodon: alc''hwez surentez nevez-flamm' + title: Un alc'hwez surentez nevez-flamm a zo bet ouzhpennet + deleted: + explanation: An alc'hwez surentez-se a zo bet dilamet eus ho kont + subject: 'Mastodon: alc''hwezioù surentez dilamet' + title: Unan eus hoc'h alc'hwezioù surentez a zo bet dilamet + webauthn_disabled: + explanation: Dilezadur dre alc'hwezioù surentel a zo bet nac'het evit ho kont. Gallout a reer mont-tre en ur implijout ar jedouer krouet gant app TOTP koublet. + subject: 'Mastodon: dilesadur dre alc''hwezioù surentez nac''het' + title: Alc'hwezioù surentez nac'het + webauthn_enabled: + explanation: Dilesadur dre alc'hwez surentez a zo bet aotreet evit ho kont. Hoc'h alc'hwez surentez a c'hell bezañ implijet evit mont-tre. + subject: 'Mastodon: dilesadur dre alc''hwezioù surentez aotreet' + title: Alc'hwezioù surentez aotreet + omniauth_callbacks: + failure: Ne c'haller ket bezañ gwiriekaet deus %{kind} abalamour da "%{reason}". + success: Gwiriekaet deus kont %{kind} gant berzh. passwords: - updated: Cheñchet eo bet ho ker-tremen gant berzh. Bremañ oc'h anavezadennet. + no_token: Ne c'hellit ket mont d'ar bajenn-mañ ma zeuit ket deus ur postel evit adkorañ ur ger-tremen. M'ho peus implijet ur postel evit adkorañ ur ger-tremen, gwiriit oc'h implijet an URL a-bezh. + send_instructions: Ma'z eo ho chomlec'h-postel er stlennvon dija, kaset a vo deoc'h ur lec'hienn evit adkorañ ho ker-tremen tuchantig. Mar plij, gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. + send_paranoid_instructions: Ma'z eo ho chomlec'h-postel er stlennvon dija, kaset a vo deoc'h ur lec'hienn evit adkorañ ho ker-tremen tuchantig. Mar plij, gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. + updated: Kemmet eo bet ho ker-tremen gant berzh. Bremañ oc'h anavezadennet. updated_not_active: Kemmet eo bet ho ker-tremen ent reizh. registrations: destroyed: Kenavo! Ho kont a zo bet nullet gant berzh. Emichañs e viot adwelet tuchant. signed_up: Donemat ! Kevreet oc'h. signed_up_but_inactive: Enskrivet oc'h bet gant berzh. N'omp ket evit anavezadenniñ ac'hanoc'h alatao, rak ho kont n'eo ket aotreet c'hoazh. signed_up_but_locked: Enskrivet oc'h bet gant berzh. N'omp ket evit anavezadenniñ ac'hanoc'h alatao, rak ho kont a zo prennet. + signed_up_but_pending: Ur c'hemennad gant ul lec'hienn kadarnaat a zo bet kaset d'ho chomlec'h-postel. Pa vo kliket al lec'hienn ganeoc'h e vo gwiriet hoc'h arload ganeomp. Ur gemennadenn a vo kaset deoc'h hag-eñ eo erbedet ho kont. + signed_up_but_unconfirmed: Ur ch'emennad gant ul lec'hienn kadarnaat a zo bet kaset d'ho chomlec'h-postel. Mar plij, heuliit al lec'hienn evit gweredekaat ho kont. Gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. + update_needs_confirmation: Ho kont a zo bet hizivaet da benn, met ret eo deomp gwiriañ ho chomlec'h-postel nevez. Mar plij, gwiriit ho postelioù ha heuliit al lec'hienn evit kadarnaat ho chomlec'h-postel nevez. Gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. + updated: Ho kont a zo bet hizivaet da benn. sessions: already_signed_out: Digennasket gant berzh. signed_in: Kennasket gant berzh. signed_out: Digennasket gant berzh. unlocks: + send_instructions: Kaset e vo ur postel deoc'h evit displegañ deoc'h penaos dikrouilhiñ anezhañ tuchantig. Mar plij, gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. + send_paranoid_instructions: Ma'z eo ho kont krouet dija, kaset e vo ur postel deoc'h evit displegañ deoc'h penaos dikrouilhiñ anezhañ. Mar plij, gwiriit ho restr strobel ma ne oa ket resevet ar postel-mañ ganeoc'h. unlocked: Ho kont a zo bet dibrennet gant berzh. Anavezadennit evit mont-tre. errors: messages: already_confirmed: a zo bet kadarnaet dija, klaskit d'en em anavezadenniñ confirmation_period_expired: eo ret bezañ kadarnaet a-raok %{period}, goulennit unan all mar plij + expired: a zo aet da dermen, goulennit unan nevez mar plij not_found: digavet not_locked: ne oa ket prennet + not_saved: + few: "%{count} faot en deus miret ouzh %{resource} da vezañ gwarezet:" + many: "%{count} faot en deus miret ouzh %{resource} da vezañ gwarezet:" + one: '1 faot en deus miret ouzh %{resource} da vezañ gwarezet:' + other: "%{count} faot en deus miret ouzh %{resource} da vezañ gwarezet:" + two: "%{count} faot en deus miret ouzh %{resource} da vezañ gwarezet:" diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index 41ec75856..c43653662 100644 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -6,7 +6,7 @@ fr: send_instructions: Vous allez recevoir par courriel les instructions nécessaires à la confirmation de votre compte dans quelques minutes. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables. send_paranoid_instructions: Si votre adresse électronique existe dans notre base de données, vous allez bientôt recevoir un courriel contenant les instructions de confirmation de votre compte. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables. failure: - already_authenticated: Vous êtes déjà connecté. + already_authenticated: Vous êtes déjà connecté⋅e. inactive: Votre compte n’est pas encore activé. invalid: "%{authentication_keys} ou mot de passe invalide." last_attempt: Vous avez droit à une dernière tentative avant que votre compte ne soit verrouillé. @@ -27,12 +27,12 @@ fr: title: Vérifiez l’adresse courriel email_changed: explanation: 'L’adresse courriel de votre compte est en cours de modification pour devenir :' - extra: Si vous n’avez pas changé votre adresse courriel, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur du serveur si vous êtes bloqué hors de votre compte. + extra: Si vous n’avez pas changé votre adresse courriel, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice du serveur si vous êtes bloqué·e hors de votre compte. subject: 'Mastodon : Courriel modifié' title: Nouvelle adresse courriel password_change: explanation: Le mot de passe de votre compte a été changé. - extra: Si vous n’avez pas changé votre mot de passe, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur du serveur si vous êtes bloqué hors de votre compte. + extra: Si vous n’avez pas changé votre mot de passe, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice du serveur si vous êtes bloqué·e hors de votre compte. subject: 'Mastodon : Votre mot de passe a été modifié avec succès' title: Mot de passe modifié reconfirmation_instructions: @@ -89,16 +89,16 @@ fr: registrations: destroyed: Au revoir ! Votre compte a été supprimé avec succès. Nous espérons vous revoir bientôt. signed_up: Bienvenue ! Vous êtes connecté. - signed_up_but_inactive: Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte n’est pas encore activé. - signed_up_but_locked: Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte est verrouillé. - signed_up_but_pending: Un message avec un lien de confirmation a été envoyé à votre adresse courriel. Après avoir cliqué sur le lien, nous examinerons votre demande. Vous serez informé si elle a été approuvée. + signed_up_but_inactive: Vous êtes bien enregistré·e. Vous ne pouvez cependant pas vous connecter car votre compte n’est pas encore activé. + signed_up_but_locked: Vous êtes bien enregistré·e. Vous ne pouvez cependant pas vous connecter car votre compte est verrouillé. + signed_up_but_pending: Un message avec un lien de confirmation a été envoyé à votre adresse courriel. Après avoir cliqué sur le lien, nous examinerons votre demande. Vous serez informé·e si elle a été approuvée. signed_up_but_unconfirmed: Un message contenant un lien de confirmation a été envoyé à votre adresse courriel. Ouvrez ce lien pour activer votre compte. Veuillez vérifier votre dossier d'indésirables si vous ne recevez pas le courriel. update_needs_confirmation: Votre compte a bien été mis à jour, mais nous devons vérifier votre nouvelle adresse courriel. Merci de vérifier vos courriels et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse. Si vous n'avez pas reçu le courriel, vérifiez votre dossier de spams. updated: Votre compte a été modifié avec succès. sessions: already_signed_out: Déconnecté·e. - signed_in: Connecté. - signed_out: Déconnecté. + signed_in: Connecté·e. + signed_out: Déconnecté·e. unlocks: send_instructions: Vous allez recevoir les instructions nécessaires au déverrouillage de votre compte dans quelques instants. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables. send_paranoid_instructions: Si votre compte existe, vous allez bientôt recevoir un courriel contenant les instructions pour le déverrouiller. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables. @@ -111,5 +111,5 @@ fr: not_found: n’a pas été trouvé not_locked: n’était pas verrouillé not_saved: - one: 'Une erreur a empêché cette %{resource} d’être sauvegardé :' - other: "%{count} erreurs ont empêché %{resource} d’être sauvegardé :" + one: 'Une erreur a empêché ce·tte %{resource} d’être sauvegardé·e :' + other: "%{count} erreurs ont empêché %{resource} d’être sauvegardé⋅e :" diff --git a/config/locales/devise.gl.yml b/config/locales/devise.gl.yml index 6c8718f28..0bb52d8e2 100644 --- a/config/locales/devise.gl.yml +++ b/config/locales/devise.gl.yml @@ -78,7 +78,7 @@ gl: subject: 'Mastodon: Autenticación con chave de seguridade activada' title: Chaves de seguridade activas omniauth_callbacks: - failure: Non foi posíbel autenticar %{kind} porque "%{reason}". + failure: Non foi posible autenticarte desde %{kind} debido a "%{reason}". success: Autenticado con éxito na conta %{kind}. passwords: no_token: Non podes acceder a esta páxina se non vés a través da ligazón enviada por email para o mudado do teu contrasinal. Se empregaches esa ligazón para chegar aquí, por favor verifica que o enderezo URL actual é o mesmo do que foi enviado no email. diff --git a/config/locales/devise.hy.yml b/config/locales/devise.hy.yml index 2a75385e9..2d235c0af 100644 --- a/config/locales/devise.hy.yml +++ b/config/locales/devise.hy.yml @@ -3,7 +3,7 @@ hy: devise: confirmations: confirmed: Ձեր էլ․ փոստի հասցէն յաջողութեամբ հաստատուեց։ - send_instructions: Մի քանի րոպէից դու կը ստանաս իմակ՝ նկարագրութիւններով, թէ ինչպէս հաստատես էլ․ հասցէդ։ Խնդրում ենք, ստուգիր սպամ պանակդ, եթէ չստանաս իմակ։ + send_instructions: Մի քանի րոպէից դու կը ստանաս էլ. նամակ՝ նկարագրութիւններով, թէ ինչպէս հաստատես էլ․ հասցէդ։ Եթե չստանաս, խնդրում ենք ստուգիր նաեւ սպամ պանակդ։ send_paranoid_instructions: Եթե ձեր էլ․փոստի հասցեն արդեն կա մեր տվյալների բազայում, ապա մենք ուղարկել ենք Ձեզ էլ․նամակ՝ նկարագրությունով, թե ինչպես հաստատեք էլ․փոստը մի քանի վայրկյանում։ Ստուգե ձեր թափոն թղթապանակը, եթե նամակ չեք ստացել։ failure: already_authenticated: Արդէն մուտք ես գործել diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml index 53e8169e4..3aba63a9c 100644 --- a/config/locales/devise.it.yml +++ b/config/locales/devise.it.yml @@ -93,7 +93,7 @@ it: signed_up_but_locked: Ti sei registrato con successo. Purtroppo però non possiamo farti accedere perché il tuo account è bloccato. signed_up_but_pending: Un messaggio con un collegamento per la conferma è stato inviato al tuo indirizzo email. Dopo aver cliccato il collegamento, esamineremo la tua richiesta. Ti sarà notificato se verrà approvata. signed_up_but_unconfirmed: Un messaggio con un link di conferma è stato inviato al tuo indirizzo email. Per favore, visita il link per attivare il tuo account. - update_needs_confirmation: Hai aggiornato correttamente il tuo account, ma abbiamo bisogno di verificare il tuo nuovo indirizzo email. Per favore, controlla la posta in arrivo e visita il link di conferma per verificare il tuo indirizzo email. + update_needs_confirmation: Il tuo account è stato aggiornato correttamente, tuttavia è necessario verificare il tuo nuovo indirizzo e-mail. Controlla la tua casella di posta elettronica e segui il link di conferma per confermare il tuo nuovo indirizzo e-mail. Controlla la cartella posta indesiderata se non trovi l'email. updated: Il tuo account è stato aggiornato con successo. sessions: already_signed_out: Sei uscito correttamente dal tuo account. diff --git a/config/locales/devise.kab.yml b/config/locales/devise.kab.yml index 79faaaa1b..eb599e55e 100644 --- a/config/locales/devise.kab.yml +++ b/config/locales/devise.kab.yml @@ -60,6 +60,10 @@ kab: title: Tangalt n tuɣalin 2FA tettwabeddel unlock_instructions: subject: 'Mastodon: iwelihhen n userreḥ' + webauthn_credential: + added: + subject: 'Maṣṭudun : Tasarutt tamaynutt n tɣellist' + title: Tasarut tamaynutt n tɣellist tamaynut tettwarna omniauth_callbacks: failure: Ur nezmir ara ad ak·akem-nsesṭeb seg %{kind} acku "%{reason}". success: Asesṭeb idda akken iwata seg umiḍan %{kind}. diff --git a/config/locales/devise.ro.yml b/config/locales/devise.ro.yml index 8579d2c64..d25d0f6b3 100644 --- a/config/locales/devise.ro.yml +++ b/config/locales/devise.ro.yml @@ -60,6 +60,23 @@ ro: title: Coduri de recuperare 2FA modificate unlock_instructions: subject: Instrucțiuni de deblocare + webauthn_credential: + added: + explanation: Următoarea cheie de securitate a fost adăugată în contul tău + subject: 'Mastodon: Noua cheie de securitate' + title: A fost adăugată o nouă cheie de securitate + deleted: + explanation: Următoarea cheie de securitate a fost ștearsă din contul tău + subject: 'Mastodon: Cheie de securitate ștearsă' + title: Una dintre cheile tale de securitate a fost ștearsă + webauthn_disabled: + explanation: Autentificarea cu chei de securitate a fost dezactivată pentru contul tău. Conectarea este posibilă acum folosind doar token-ul generat de aplicația TOTP. + subject: 'Mastodon: Autentificarea cu chei de securitate dezactivată' + title: Chei de securitate dezactivate + webauthn_enabled: + explanation: Autentificarea cheii de securitate a fost activată pentru contul tău. Cheia ta de securitate poate fi acum folosită pentru conectare. + subject: 'Mastodon: Autentificarea cheii de securitate activată' + title: Chei de securitate activate omniauth_callbacks: failure: Nu te-am putut autentifica de la %{kind} deoarece "%{reason}". success: Autentificat cu succes din contul %{kind}. diff --git a/config/locales/devise.sl.yml b/config/locales/devise.sl.yml index dee1b9125..6553e3cd6 100644 --- a/config/locales/devise.sl.yml +++ b/config/locales/devise.sl.yml @@ -46,8 +46,37 @@ sl: extra: Če tega niste zahtevali, prezrite to e-poštno sporočilo. Vaše geslo se ne bo spremenilo, dokler ne kliknete na zgornjo povezavo in ustvarite novega. subject: 'Mastodon: Navodila za ponastavitev gesla' title: Ponastavi geslo + two_factor_disabled: + explanation: Dvojno oz. dvofazno preverjanje pristnosti je za vaš račun onemogočeno. Prijava je zdaj možna le z e-poštnim naslovom in geslom. + subject: 'Mastodon: dvojno preverjanje pristnosti je onemogočeno' + title: 2FA onemogočeno + two_factor_enabled: + explanation: Dvojno oz. dvofazno preverjanje pristnosti je za vaš račun omogočena. Žeton, izdelan z aplikacijo TOTP, bo zahtevan zs prijavo. + subject: 'Mastodon: dvojno preverjanje pristnosti je omogočeno' + title: 2FA omogočeno + two_factor_recovery_codes_changed: + explanation: Prejšnje obnovitvene kode so postale neveljavne in ustvarjene so bile nove. + subject: 'Mastodon: varnostne obnovitvene kode za dvojno preverjanje pristnosti so ponovno izdelane' + title: obnovitvene kode 2FA spremenjene unlock_instructions: subject: 'Mastodon: Odkleni navodila' + webauthn_credential: + added: + explanation: Naslednja varnostna koda je dodana vašemu računu + subject: 'Mastodon: nova varnostna koda' + title: Dodana je nova varnostna koda + deleted: + explanation: Naslednja varnostna koda je izbrisana iz vašega računa + subject: 'Mastodon: varnostna koda izbrisana' + title: Ena od vaših varnostnih kod je bila izbrisana + webauthn_disabled: + explanation: Overjanje pristnosti z varnostnimi ključi je za vaš račun onemogočeno. Prijava je zdaj možna le z uporabo žetona, ki ga izdela aplikacijo TOTP. + subject: 'Mastodon: overjanje pristnosti z varnosnimi kodami je onemogočeno' + title: Varnostne kode onemogočene + webauthn_enabled: + explanation: Overjanje z varnostnim ključem je omogočeno za vaš račun. Svoj varnostni ključ lahko zdaj uporabite za prijavo. + subject: 'Mastodon: preverjanje pristnosti z varnostno kodo je omogočeno' + title: Varnostne kode omogočene omniauth_callbacks: failure: Overitev iz %{kind} ni možna zaradi "%{reason}". success: Overitev iz računa %{kind} je bila uspešna. diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml index 5970e8d26..e53c0f895 100644 --- a/config/locales/devise.th.yml +++ b/config/locales/devise.th.yml @@ -47,7 +47,7 @@ th: subject: 'Mastodon: คำแนะนำการตั้งรหัสผ่านใหม่' title: การตั้งรหัสผ่านใหม่ two_factor_disabled: - explanation: ปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยสำหรับบัญชีของคุณแล้ว การเข้าสู่ระบบสามารถทำได้โดยใช้ที่อยู่อีเมลและรหัสผ่านเท่านั้น + explanation: ปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยสำหรับบัญชีของคุณแล้ว ตอนนี้สามารถเข้าสู่ระบบได้โดยใช้ที่อยู่อีเมลและรหัสผ่านเท่านั้น subject: 'Mastodon: ปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยแล้ว' title: ปิดใช้งาน 2FA แล้ว two_factor_enabled: @@ -70,9 +70,11 @@ th: subject: 'Mastodon: ลบกุญแจความปลอดภัยแล้ว' title: ลบหนึ่งในกุญแจความปลอดภัยของคุณแล้ว webauthn_disabled: + explanation: ปิดใช้งานการรับรองความถูกต้องด้วยกุญแจความปลอดภัยสำหรับบัญชีของคุณแล้ว ตอนนี้สามารถเข้าสู่ระบบได้โดยใช้โทเคนที่สร้างโดยแอป TOTP ที่จับคู่เท่านั้น subject: 'Mastodon: ปิดใช้งานการรับรองความถูกต้องด้วยกุญแจความปลอดภัยแล้ว' title: ปิดใช้งานกุญแจความปลอดภัยแล้ว webauthn_enabled: + explanation: เปิดใช้งานการรับรองความถูกต้องด้วยกุญแจความปลอดภัยสำหรับบัญชีของคุณแล้ว ตอนนี้สามารถใช้กุญแจความปลอดภัยของคุณสำหรับการเข้าสู่ระบบ subject: 'Mastodon: เปิดใช้งานการรับรองความถูกต้องด้วยกุญแจความปลอดภัยแล้ว' title: เปิดใช้งานกุญแจความปลอดภัยแล้ว omniauth_callbacks: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 0d8e487c9..ef09b0d03 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -4,7 +4,7 @@ zh-CN: confirmations: confirmed: 已成功确认你的邮箱地址。 send_instructions: 你将在几分钟内收到一封电子邮件,指导你如何验证电子邮箱地址。如果你没有收到这封邮件,请检查你的垃圾邮件文件夹。 - send_paranoid_instructions: 如果你的电子邮箱地址存在于我们的数据库中,你将在几分钟内收到一封邮件,知道你如何验证电子邮箱地址。如果你没有收到这封邮件,请检查你的垃圾邮件文件夹。 + send_paranoid_instructions: 如果你的电子邮箱地址存在于我们的数据库中,你将在几分钟内收到一封邮件,指导你如何验证电子邮箱地址。如果你没有收到这封邮件,请检查你的垃圾邮件文件夹。 failure: already_authenticated: 你已登录。 inactive: 你还没有激活帐户。 @@ -79,19 +79,19 @@ zh-CN: title: 已启用安全密钥 omniauth_callbacks: failure: 由于%{reason},无法从%{kind}获得授权。 - success: 成功地从%{kind}获得授权。 + success: 成功地从 %{kind} 获得授权。 passwords: - no_token: 你必须通过密码重置邮件才能访问这个页面。如果你确实如此,请确保你输入的 URL 是完整的。 - send_instructions: 几分钟后,你将收到重置密码的电子邮件。如果没有,请检查你的垃圾邮箱。 - send_paranoid_instructions: 如果你的邮箱存在于我们的数据库中,你将收到一封找回密码的邮件。如果没有,请检查你的垃圾邮箱。 - updated: 你的密码已修改成功,你现在已登录。 - updated_not_active: 你的密码已修改成功。 + no_token: 如果你不是来自于密码重置邮件,你就不能访问这个页面。如果你确实来自密码重置邮件,请确保你使用了所提供的完整 URL 。 + send_instructions: 如果你的电子邮件地址存在于我们的数据库中,你将在几分钟后收到一个密码恢复链接。如果你没有收到这封邮件,请检查你邮箱的垃圾箱。 + send_paranoid_instructions: 如果你的电子邮件地址存在于我们的数据库中,你将在几分钟后收到一个密码恢复链接。如果你没有收到这封邮件,请检查你邮箱的垃圾箱。 + updated: 你的密码已成功修改,现在你已登录。 + updated_not_active: 你的密码已成功修改。 registrations: destroyed: 再见!你的帐户已成功注销。我们希望很快可以再见到你。 - signed_up: 欢迎!你已注册成功。 - signed_up_but_inactive: 你已成功注册,但因尚未激活帐户所以无法登陆。 - signed_up_but_locked: 你已成功注册,但因帐户被锁定所以无法登陆。 - signed_up_but_pending: 一封带有确认链接的邮件已经发送到了你的邮箱。 在你点击确认链接后,我们将会审核你的申请。审核通过后,我们将会通知你。 + signed_up: 欢迎!你已成功注册。 + signed_up_but_inactive: 你已成功注册,但我们无法让你登录,因为你的账户还没有激活。 + signed_up_but_locked: 你已成功注册,但我们无法让你登录,因为你的账户已被锁定。 + signed_up_but_pending: 一条带有确认链接的邮件已经发送到你的电子邮件地址。在你点击该链接后,我们将会审查你的申请。如果申请被批准,你将收到通知。 signed_up_but_unconfirmed: 一封带有确认链接的邮件已经发送至你的邮箱,请点击邮件中的链接以激活你的帐户。如果没有,请检查你的垃圾邮件。 update_needs_confirmation: 帐号信息更新成功,但我们需要验证你的新电子邮件地址,请点击邮件中的链接以确认。如果没有,请检查你的垃圾邮箱。 updated: 帐户资料更新成功。 @@ -101,14 +101,14 @@ zh-CN: signed_out: 已成功登出。 unlocks: send_instructions: 几分钟后,你将收到一封解锁帐户的邮件。如果没有,请检查你的垃圾邮箱。 - send_paranoid_instructions: 如果你的帐号存在于数据库中,你将收到一封指引你解锁帐户的邮件。如果没有,请检查你的垃圾邮箱。 + send_paranoid_instructions: 如果你的账户存在,你将会在几分钟内收到一封指引你如何解锁账户的邮件。如果你没有收到这封邮件,请检查你邮箱的垃圾箱。 unlocked: 你的帐户已成功解锁。登录以继续。 errors: messages: - already_confirmed: 已经确认成功,请尝试登录 + already_confirmed: 已经成功确认,请尝试登录 confirmation_period_expired: 必须在 %{period} 以内确认。请重新发起请求 expired: 已过期。请重新发起请求 not_found: 未找到 not_locked: 未被锁定 not_saved: - other: 发生 %{count} 个错误,导致%{resource}保存失败: + other: 在保存 %{resource} 时发生了 %{count} 个错误: diff --git a/config/locales/doorkeeper.br.yml b/config/locales/doorkeeper.br.yml index a9b8d5b90..dfcdb984d 100644 --- a/config/locales/doorkeeper.br.yml +++ b/config/locales/doorkeeper.br.yml @@ -4,7 +4,15 @@ br: attributes: doorkeeper/application: name: Anv an arload + redirect_uri: Dazkas URI website: Lec'hienn an arload + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + invalid_uri: eo ret bezañ un URI reizh. + secured_uri: eo ret bezañ un HTTPS/SSL URI. doorkeeper: applications: buttons: @@ -12,11 +20,21 @@ br: cancel: Nullañ destroy: Distrujañ edit: Aozañ + submit: Kas confirmations: destroy: Ha sur oc'h ? + edit: + title: Kemmañ an arload + form: + error: Hopala! Gwiriit ho frammenn rak fazioù a c'hell bezañ enni + help: + native_redirect_uri: Implijit %{native_redirect_uri} evit amprouadennoù lec'hel + redirect_uri: Implijit ul linenn evit pep URI index: application: Arload + callback_url: URL adc'halv delete: Dilemel + empty: Arloadoù ebet ganeoc'h. name: Anv new: Arload nevez show: Diskouez @@ -24,16 +42,51 @@ br: new: title: Arload nevez show: + actions: Obererezhioù + application_id: Alc'hwez an arval + callback_urls: URLoù adc'halv title: 'Arload : %{name}' authorizations: buttons: authorize: Aotren + deny: Nac'hañ + error: + title: Ur fazi a zo degouezhet + new: + able_to: Gallout a raio + prompt: Arload %{client_name} a reket moned d'ho kont + title: Aotre rekis + show: + title: Eilennit kod aotre-se ha pegit en arload. authorized_applications: + buttons: + revoke: Skarzhañ confirmations: revoke: Ha sur oc'h ? index: application: Arload + created_at: Aotreet date_format: "%d-%m-%Y %H:%M:%S" + title: Hoc'h arloadoù aotreet + errors: + messages: + access_denied: Perc'henn an danvez pe ar servijer aotre nac'het ar reket. + invalid_grant: An aotre pourvezhet a zo direizh, aet da dermen, skarzhet, roet d'un arval all pe ne glot ket gant an URI dazkas implijet. + invalid_redirect_uri: An URI dazkas n'eo ket reizh. + invalid_request: + missing_param: 'Un arventenn a vank: %{value}.' + request_not_authorized: Ret eo d'ar reket bezañ aotreet. Arventenn rekis evit aotren ar reket a zo direizh pe diank. + unknown: Ar reket a vank un arventenn rekis, a enlaak un dalvoud arventenn dianavezet, pe a zo faziek en ur mod all. + invalid_resource_owner: Testenioù perc'henn an danvez pourvezet n'int ket reizh, pe perc'henn an danvez ne c'hell ket bezañ kavet + invalid_token: + expired: Ar jedouer moned a zo aet da dermen + revoked: Ar jedouer moned a zo skarzhet + unknown: Ar jedouer moned a zo direizh + server_error: Ur fazi digortozet a c'hoarveze hag a vire ar servijer aotre ouzh klokaat ar reket. + temporarily_unavailable: Ar servijer aotre ne c'hall ket seveniñ ar reket abalamour d'ur soulgarg pe d'ur gempenn. + unauthorized_client: An arval n'eo ket aotreet seveniñ ar reket-mañ er mod-se. + unsupported_grant_type: Diembreg eo seurt aotre gant ar servijer aotre. + unsupported_response_type: Diembreg eo seurt respontoù gant ar servijer aotre. flash: applications: create: @@ -42,11 +95,47 @@ br: notice: Dilamet eo bet an arload. update: notice: Hizivaet eo bet an arload. + authorized_applications: + destroy: + notice: Skarzhet eo bet an arload. layouts: admin: nav: applications: Arloadoù + oauth2_provider: OAuth2 Pourvezer + application: + title: OAuth aotre rekis scopes: + admin:read: lenn holl titouroù ar servijer + admin:read:accounts: lenn titouroù kizidik an holl kontoù + admin:read:reports: lenn titouroù kizidik an holl danevelloù hag an holl kontoù danevellet + admin:write: kemmañ holl titouroù ar servijer + admin:write:accounts: ober evezherezh war ar c'hontoù + admin:write:reports: ober evezherezh war an danevelloù + follow: kemmañ darempredoù ho kont + push: resev ho kemennoù push + read: lenn holl titouroù ho kont + read:accounts: gwelout titouroù ar c'hontoù + read:blocks: gwelout ar pezh a zo stanket ganeoc'h + read:bookmarks: gwelout ho sinedoù + read:favourites: gwelout ho muiañ-karet + read:filters: gwelout ho siloù + read:follows: gwelout ar pezh a zo heuliet ganeoc'h read:lists: gwelout ho listennoù + read:mutes: gwelout traoù pe kontoù kuzhet ganeoc'h + read:notifications: gwellout ho kemennoù + read:reports: gwelout ho tanevelloù + read:statuses: gwelout an holl toudoù + write: kemmañ holl titouroù ho kont + write:accounts: kemmañ ho profil + write:blocks: berzañ kontoù ha domanioù + write:bookmarks: toudoù enrollet evel sinedoù + write:favourites: merkañ toudoù evel muiañ-karet + write:filters: krouiñ siloù + write:follows: heuliañ an dud write:lists: krouiñ listennoù + write:media: pellgargañ restroù media + write:mutes: kuzhat tud ha kaozeadennoù + write:notifications: skarzhañ ho kemennoù + write:reports: danevellañ tud all write:statuses: embann toudoù diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml index d85738ec2..9b0961433 100644 --- a/config/locales/doorkeeper.ca.yml +++ b/config/locales/doorkeeper.ca.yml @@ -75,7 +75,7 @@ ca: created_at: Creat el date_format: "%A-%m-%d %H:%M:%S" scopes: Àmbits - title: Les aplicacions autoritzades + title: Les teves aplicacions autoritzades errors: messages: access_denied: El propietari del recurs o servidor d'autorizació ha denegat la petició. diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml index bc86a064c..d977c0afb 100644 --- a/config/locales/doorkeeper.fa.yml +++ b/config/locales/doorkeeper.fa.yml @@ -125,7 +125,7 @@ fa: admin:write:accounts: انجام کنش مدیریتی روی حسابها admin:write:reports: انجام کنش مدیریتی روی گزارشها follow: پیگیری، مسدودسازی، لغو مسدودسازی، و لغو پیگیری حسابها - push: برای حساب خود اعلانهای لحظهای دریافت کنید + push: دریافت آگاهیای ارسالیتان read: خواندن اطلاعات حساب شما read:accounts: دیدن اطّلاعات حساب read:blocks: دیدن انسدادهایتان @@ -133,7 +133,7 @@ fa: read:favourites: دیدن برگزیدههایتان read:filters: دیدن پالایههایتان read:follows: دیدن پیگیریهایتان - read:lists: دیدن فهرستهایتان + read:lists: دیدن سیاهههایتان read:mutes: دیدن خموشیهایتان read:notifications: دیدن آگاهیهایتان read:reports: دیدن گزارشهایتان @@ -146,7 +146,7 @@ fa: write:favourites: برگزیدن وضعیتها write:filters: ایحاد پالایشها write:follows: پیگیری افراد - write:lists: ایجاد فهرستها + write:lists: ایجاد سیاههها write:media: بارگذاری پروندههای رسانه write:mutes: خموش کردن افراد و گفتوگوها write:notifications: پامسازی آگاهیهایتان diff --git a/config/locales/doorkeeper.gl.yml b/config/locales/doorkeeper.gl.yml index dd2071639..365eebb6e 100644 --- a/config/locales/doorkeeper.gl.yml +++ b/config/locales/doorkeeper.gl.yml @@ -138,12 +138,12 @@ gl: read:notifications: ver as notificacións read:reports: ver as túas denuncias read:search: buscar no teu nome - read:statuses: ver todos os estados + read:statuses: ver todas as publicacións write: modificar todos os datos da tua conta write:accounts: modificar o teu perfil write:blocks: bloquear contas e dominios - write:bookmarks: marcar os estados - write:favourites: estados favoritos + write:bookmarks: marcar publicacións + write:favourites: publicacións favoritas write:filters: crear filtros write:follows: seguir usuarias write:lists: crear listaxes @@ -151,4 +151,4 @@ gl: write:mutes: acalar usuarias e conversas write:notifications: eliminar as notificacións write:reports: denunciar usuarias - write:statuses: publicar estados + write:statuses: publicar diff --git a/config/locales/doorkeeper.it.yml b/config/locales/doorkeeper.it.yml index 6aea56e49..43053c73d 100644 --- a/config/locales/doorkeeper.it.yml +++ b/config/locales/doorkeeper.it.yml @@ -25,7 +25,7 @@ it: edit: Modifica submit: Invia confirmations: - destroy: Sei sicur*? + destroy: Sei sicuro/a? edit: title: Modifica applicazione form: @@ -69,7 +69,7 @@ it: buttons: revoke: Disabilita confirmations: - revoke: Sei sicur*? + revoke: Sei sicuro/a? index: application: Applicazione created_at: Autorizzato @@ -98,7 +98,7 @@ it: temporarily_unavailable: Al momento il server di autorizzazione non può completare la tua richiesta a causa di un temporaneo sovraccarico o di manutenzione del server. unauthorized_client: Il client non è autorizzato a eseguire questa operazione con questo metodo. unsupported_grant_type: Questa modalità di trasmissione di autenticazione non è supportata da questo server. - unsupported_response_type: Il server autorizzatore non supporta questa modalità di risposta. + unsupported_response_type: Il server di autorizzazione non supporta questo tipo di risposta. flash: applications: create: @@ -138,12 +138,12 @@ it: read:notifications: vedere le tue notifiche read:reports: vedere i tuoi rapporti read:search: fare ricerche per te - read:statuses: vedere tutti gli status + read:statuses: vedere tutti i post write: modificare tutti i dati del tuo account write:accounts: modificare il tuo profilo write:blocks: bloccare account e domini - write:bookmarks: aggiungi post ai preferiti - write:favourites: segnare status come preferiti + write:bookmarks: aggiungere post ai preferiti + write:favourites: apprezzare post write:filters: creare filtri write:follows: seguire persone write:lists: creare liste @@ -151,4 +151,4 @@ it: write:mutes: silenziare persone e conversazioni write:notifications: cancellare le tue notifiche write:reports: fare rapporto su altre persone - write:statuses: pubblicare status + write:statuses: pubblicare post diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml index 419bc28a6..72727d64c 100644 --- a/config/locales/doorkeeper.nn.yml +++ b/config/locales/doorkeeper.nn.yml @@ -73,6 +73,7 @@ nn: index: application: Applikasjon created_at: Autorisert + date_format: "%d. %m %Y kl. %H.%M.%S" scopes: Skop title: Dine autoriserte applikasjonar errors: @@ -82,6 +83,10 @@ nn: invalid_client: Klientautentisering feilet på grunn av ukjent klient, ingen autentisering inkludert, eller autentiseringsmetode er ikke støttet. invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen eller var utstedt til en annen klient. invalid_redirect_uri: Omdirigerings-URLen er ikkje gyldig. + invalid_request: + missing_param: 'Mangler påkrevd parameter: %{value}.' + request_not_authorized: Forespørselen må godkjennes. Påkrevd parameter for godkjenningsforespørselen mangler eller er ugyldig. + unknown: Forespørselen mangler en påkrevd parameter, inkluderer en ukjent parameterverdi, eller er utformet for noe annet. invalid_resource_owner: Ressurseierens detaljer er ikke gyldige, eller så er det ikke mulig å finne eieren invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur. invalid_token: diff --git a/config/locales/doorkeeper.pt-PT.yml b/config/locales/doorkeeper.pt-PT.yml index 4a5bb899a..d2c768a70 100644 --- a/config/locales/doorkeeper.pt-PT.yml +++ b/config/locales/doorkeeper.pt-PT.yml @@ -120,10 +120,10 @@ pt-PT: scopes: admin:read: ler todos os dados no servidor admin:read:accounts: ler informações sensíveis de todas as contas - admin:read:reports: ler informações sensíveis de todos os relatórios e contas reportadas + admin:read:reports: ler informações sensíveis de todas as denúnicas e contas denunciadas admin:write: modificar todos os dados no servidor admin:write:accounts: executar ações de moderação em contas - admin:write:reports: executar ações de moderação em relatórios + admin:write:reports: executar ações de moderação em denúncias follow: siga, bloqueie, desbloqueie, e deixa de seguir contas push: receber as suas notificações push read: tenha acesso aos dados da tua conta @@ -150,5 +150,5 @@ pt-PT: write:media: carregar arquivos de media write:mutes: silenciar pessoas e conversas write:notifications: limpar as suas notificações - write:reports: reportar outras pessoas + write:reports: denunciar outras pessoas write:statuses: publicar estado diff --git a/config/locales/doorkeeper.ro.yml b/config/locales/doorkeeper.ro.yml index fc4efdcc5..c09fb9e3d 100644 --- a/config/locales/doorkeeper.ro.yml +++ b/config/locales/doorkeeper.ro.yml @@ -73,6 +73,7 @@ ro: index: application: Aplicație created_at: Autorizat + date_format: "%Y-%m-%d %H:%M:%S" scopes: Domenii title: Aplicațiile dvs autorizate errors: @@ -82,6 +83,10 @@ ro: invalid_client: Autentificarea clientului a eșuat din cauza unui client necunoscut, nici o autentificare client inclusă, sau metodă de autentificare nesuportată. invalid_grant: Acordarea autorizației furnizată este invalidă, expirată, revocată, nu corespunde URI-ului de redirecționare folosit în cererea de autorizare, sau a fost eliberat altui client. invalid_redirect_uri: Uri-ul de redirecționare inclus nu este valid. + invalid_request: + missing_param: 'Lipseste parametrul necesar: %{value}.' + request_not_authorized: Solicitarea trebuie să fie autorizată. Parametrul necesar pentru solicitarea de autorizare lipsește sau este invalid. + unknown: Solicitarea nu are un parametru necesar, include un parametru nesuportat sau este dealtfel formatat incorect. invalid_resource_owner: Acreditările proprietarului de resurse nu sunt valide sau proprietarul de resurse nu poate fi găsit invalid_scope: Domeniul de aplicare solicitat este invalid, necunoscut sau incorect. invalid_token: diff --git a/config/locales/doorkeeper.sl.yml b/config/locales/doorkeeper.sl.yml index bb69d7519..d8e1ef43a 100644 --- a/config/locales/doorkeeper.sl.yml +++ b/config/locales/doorkeeper.sl.yml @@ -38,6 +38,7 @@ sl: application: Program callback_url: Povratni URL delete: Izbriši + empty: Nimate programov. name: Ime new: Nov program scopes: Obsegi @@ -72,6 +73,7 @@ sl: index: application: Program created_at: Odobreno + date_format: "%Y-%m-%d %H:%M:%S" scopes: Obsegi title: Vaši odobreni programi errors: @@ -81,6 +83,10 @@ sl: invalid_client: Overitev odjemalca ni uspelo zaradi neznanega odjemalca, zaradi nevključitve overitve odjemalca ali zaradi nepodprte metode overitve. invalid_grant: Predložena odobritev za pooblastilo je neveljavna, potekla, preklicana, se ne ujema z URI preusmeritvijo, ki je uporabljena v zahtevi za pooblastilo ali je bila izdana drugemu odjemalcu. invalid_redirect_uri: URI za preusmeritev ni veljaven. + invalid_request: + missing_param: 'Zahtevani parameter manjka: %{value}.' + request_not_authorized: Zahtevo je potrebno overiti. Zahtevani parameter za overjanje zahteve manjka ali ni veljaven. + unknown: Zahtevku manjka zahtevani parameter, vključuje nepodprto vrednost parametra ali je nepravilno oblikovan. invalid_resource_owner: Predložene poverilnice lastnika virov niso veljavne ali pa lastnika virov ni mogoče najti invalid_scope: Zahtevani obseg je neveljaven, neznan ali nepravilen. invalid_token: @@ -123,6 +129,7 @@ sl: read: preberi vse podatke svojega računa read:accounts: oglejte si podrobnosti računov read:blocks: oglejte si svoje blokirane + read:bookmarks: glejte svoje zaznamke read:favourites: oglejte si svoje priljubljene read:filters: oglejte si svoje filtre read:follows: oglejte si svoje sledilce @@ -135,6 +142,7 @@ sl: write: spremenite vse podatke svojega računa write:accounts: spremenite svoj profil write:blocks: blokirajte račune in domene + write:bookmarks: objave zaznamkov write:favourites: priljubljena stanja write:filters: ustvari filtre write:follows: sledi osebam diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index 7fefaf951..4a2c97e34 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -4,7 +4,7 @@ zh-CN: attributes: doorkeeper/application: name: 应用名称 - redirect_uri: 跳转 URI + redirect_uri: 重定向 URI scopes: 权限范围 website: 应用网站 errors: @@ -12,9 +12,9 @@ zh-CN: doorkeeper/application: attributes: redirect_uri: - fragment_present: 不能包含网址片段(#) - invalid_uri: 必须是有效的 URL 格式 - relative_uri: 必须是绝对的 URL 地址 + fragment_present: 不能包含网页书签(#) + invalid_uri: 必须是有效的 URL 地址。 + relative_uri: 必须是绝对的 URL 地址。 secured_uri: 必须是 HTTPS/SSL 的 URL 地址 doorkeeper: applications: @@ -61,7 +61,7 @@ zh-CN: title: 发生错误 new: able_to: 此应用将能够 - prompt: 授权 %{client_name} 访问你的帐户? + prompt: "%{client_name} 应用想要授权访问你的账户" title: 需要授权 show: title: 接下来请复制此处的授权代码并粘贴到应用中。 @@ -73,12 +73,12 @@ zh-CN: index: application: 应用 created_at: 授权时间 - date_format: "%Y年%m月%d日 %H:%M:%S" + date_format: "%Y 年 %m 月 %d 日 %H:%M:%S" scopes: 权限范围 title: 已授权的应用列表 errors: messages: - access_denied: 资源所有者或服务器拒绝了请求 + access_denied: 资源所有者或验证服务器拒绝了此请求 credential_flow_not_configured: 由于 Doorkeeper.configure.resource_owner_from_credentials 尚未配置,应用验证授权流程失败。 invalid_client: 由于应用信息未知、未提交认证信息或使用了不支持的认证方式,认证失败 invalid_grant: 授权方式无效、过期或已被撤销、与授权请求中的回调地址不一致,或使用了其他应用的回调地址 diff --git a/config/locales/el.yml b/config/locales/el.yml index 7b91dd9e9..f1bdf34a8 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -98,7 +98,6 @@ el: accounts: add_email_domain_block: Εγγραφή τομέα email σε μαύρη λίστα approve: Έγκριση - approve_all: Έγκριση όλων approved_msg: Επιτυχής έγκριση αίτησης εγγραφής του/της %{username} are_you_sure: Σίγουρα; avatar: Αβατάρ @@ -150,7 +149,6 @@ el: active: Ενεργός/ή all: Όλα pending: Εκκρεμούν - silenced: Αποσιωπημένα suspended: Σε αναστολή title: Μεσολάβηση moderation_notes: Σημειώσεις μεσολάβησης @@ -168,7 +166,6 @@ el: redownload: Ανανέωση αβατάρ redownloaded_msg: Επιτυχής ανανέωη προφίλ του/της %{username} από την πηγή reject: Απόρριψη - reject_all: Απόρριψη όλων rejected_msg: Επιτυχής απόρριψη αίτησης εγγραφής του/της %{username} remove_avatar: Απομακρυσμένο αβατάρ remove_header: Αφαίρεση επικεφαλίδας @@ -203,8 +200,9 @@ el: suspended: Σε αναστολή suspension_irreversible: Τα δεδομένα αυτού του λογαριασμού έχουν διαγραφεί οριστικά. Μπορείς να άρεις την αναστολή του λογαριασμού για να μπορέσει να χρησιμοποιηθεί αλλά αυτό δεν θα επαναφέρει όσα δεδομένα είχε προηγουμένως. suspension_reversible_hint_html: Ο λογαριασμός έχει ανασταλλεί και τα δεδομένα του θα διαγραφούν πλήρως στις %{date}. Μέχρι τότε ο λογαριασμός μπορεί να επανέλθει κανονικά. Αν θέλεις να διαγράψεις όλα τα δεδομένα του λογαριασμού, μπορείς να το κάνεις παρακάτω. - time_in_queue: Σε αναμονή για %{time} title: Λογαριασμοί + unblock_email: Ξεμπλοκάρισμα διεύθυνσης email + unblocked_email_msg: Επιτυχής κατάργηση αποκλεισμού διεύθυνσης ηλεκτρονικού ταχυδρομείου %{username} unconfirmed_email: Ανεπιβεβαίωτο email undo_sensitized: Αναίρεση ευαίσθητου undo_silenced: Αναίρεση αποσιώπησης @@ -219,6 +217,7 @@ el: whitelisted: Εγκεκριμένοι action_logs: action_types: + approve_user: Έγκριση Χρήστη assigned_to_self_report: Ανάθεση Αναφοράς change_email_user: Αλλαγή email για χρήστη confirm_user: Επιβεβαίωση Χρήστη @@ -235,6 +234,7 @@ el: destroy_domain_allow: Διαγραφή Επιτρεπτού Τομέα destroy_domain_block: Διαγραφή Αποκλεισμού Τομέα destroy_email_domain_block: Διαγραφή Αποκλεισμένου Τομέα email + destroy_instance: Εκκαθάριση Τομέα destroy_ip_block: Διαγραφή κανόνα IP destroy_status: Διαγραφή Κατάστασης disable_2fa_user: Απενεργοποίηση 2FA @@ -244,6 +244,7 @@ el: enable_user: Ενεργοποίηση Χρήστη memorialize_account: Μετατροπή Λογαριασμού σε Αναμνηστικό promote_user: Προαγωγή Χρήστη + reject_user: Απόρριψη Χρήστη remove_avatar_user: Αφαίρεση Avatar reopen_report: Ξανάνοιγμα Καταγγελίας reset_password_user: Επαναφορά Συνθηματικού @@ -252,12 +253,18 @@ el: silence_account: Σίγαση Λογαριασμού suspend_account: Αναστολή Λογαριασμού unassigned_report: Αποδέσμευση Καταγγελίας + unblock_email_account: Ξεμπλοκάρισμα διεύθυνσης email unsensitive_account: Αφαίρεση σήμανσης των πολυμέσων στον λογαριασμό σας ως ευαίσθητων unsilence_account: Άρση Σίγασης Λογαριασμού unsuspend_account: Άρση Αναστολής Λογαριασμού update_announcement: Ενημέρωση Ανακοίνωσης update_custom_emoji: Ενημέρωση Προσαρμοσμένου Emoji update_status: Ενημέρωση Κατάστασης + actions: + approve_user_html: "%{name} εγκρίθηκε εγγραφή από %{target}" + destroy_instance_html: Ο/Η %{name} εκκαθάρισε τον τομέα %{target} + reject_user_html: "%{name} απορρίφθηκε εγγραφή από %{target}" + unblock_email_account_html: "%{name} ξεμπλόκαρε τη διεύθυνση ηλεκτρονικού ταχυδρομείου του %{target}" deleted_status: "(διαγραμμένη δημοσίευση)" empty: Δεν βρέθηκαν αρχεία καταγραφής. filter_by_action: Φιλτράρισμα ανά ενέργεια @@ -314,6 +321,15 @@ 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: Ταμπλό @@ -378,7 +394,9 @@ el: status: Κατάσταση instances: by_domain: Τομέας + confirm_purge: Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τα δεδομένα από αυτόν τον τομέα; delivery_available: Διαθέσιμη παράδοση + destroyed_msg: Τα δεδομένα από το %{domain} βρίσκονται σε αναμονή για επικείμενη διαγραφή. empty: Δεν βρέθηκαν τομείς. known_accounts: one: "%{count} γνωστός λογαριασμός" @@ -389,6 +407,7 @@ el: title: Διαμεσολάβηση private_comment: Ιδιωτικό σχόλιο public_comment: Δημόσιο σχόλιο + purge: Εκκαθάριση title: Γνωστοί κόμβοι total_blocked_by_us: Μπλοκάρονται από εμάς total_followed_by_them: Ακολουθούνται από εκείνους @@ -417,8 +436,6 @@ el: new: title: Δημιουργία νέου κανόνα IP title: Κανόνες IP - pending_accounts: - title: Λογαριασμοί σε αναμονή (%{count}) relationships: title: Σχέσεις %{acct} relays: @@ -440,32 +457,39 @@ el: report_notes: created_msg: Επιτυχής δημιουργία σημείωσης καταγγελίας! destroyed_msg: Επιτυχής διαγραφή σημείωσης καταγγελίας! + today_at: Σήμερα στις %{time} reports: account: notes: one: "%{count} σημείωση" other: "%{count} σημειώσεις" - reports: - one: "%{count} αναφορά" - other: "%{count} αναφορές" + action_log: Αρχείο ελέγχου action_taken_by: Ενέργεια από τον/την + actions: + other_description_html: Δείτε περισσότερες επιλογές για τον έλεγχο της συμπεριφοράς του λογαριασμού και προσαρμόσετε την επικοινωνία στον αναφερόμενο λογαριασμό. + silence_description_html: Το προφίλ θα είναι ορατό μόνο σε όσους το ακολουθούν ή το αναζητούν με μη αυτόματο τρόπο, περιορίζοντας σημαντικά την εμβέλειά του. Μπορεί πάντα να επανέλθει. + add_to_report: Προσθέστε περισσότερα στην αναφορά are_you_sure: Σίγουρα; assign_to_self: Ανάθεση σε μένα assigned: Αρμόδιος συντονιστής by_target_domain: Κόμβος του λογαριασμού υπό καταγγελία + category: Κατηγορία 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: Επίλυσε με σημείωση create_and_unresolve: Ξανάνοιξε με σημείωση delete: Διαγραφή placeholder: Περιέγραψε τις ενέργειες που έγιναν, ή οποιαδήποτε άλλη ενημέρωση... + title: Σημειώσεις reopen: Ξανάνοιξε την καταγγελία report: 'Καταγγελία #%{id}' reported_account: Αναφερόμενος λογαριασμός @@ -473,10 +497,12 @@ el: resolved: Επιλύθηκε resolved_msg: Η καταγγελία επιλύθηκε επιτυχώς! status: Κατάσταση + statuses: Αναφερόμενο περιεχόμενο title: Αναφορές unassign: Αποσύνδεση unresolved: Άλυτη updated_at: Ενημερωμένη + view_profile: Προβολή προφίλ rules: add_new: Προσθήκη κανόνα delete: Διαγραφή @@ -576,14 +602,11 @@ el: statuses: back_to_account: Επιστροφή στη σελίδα λογαριασμού batch: - delete: Διαγραφή - nsfw_off: Σημείωσε ως μη ευαίσθητο - nsfw_on: Σημείωσε ως ευαίσθητο + remove_from_report: Αφαίρεση από την αναφορά + report: Αναφορά deleted: Διαγραμμένα - failed_to_execute: Αποτυχία εκτέλεσης media: title: Πολυμέσα - no_media: Χωρίς πολυμέσα no_status_selected: Καμία δημοσίευση δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη title: Καταστάσεις λογαριασμού with_media: Με πολυμέσα @@ -594,19 +617,7 @@ el: action: Διαχείριση κανόνων διακομιστή message_html: Δεν έχετε ορίσει κανέναν κανόνα διακομιστή. tags: - accounts_today: Μοναδικές χρήσεις ημέρας - accounts_week: Μοναδικές χρήσεις εβδομάδας - breakdown: Ανάλυση σημερινής χρήσης ανα πηγή - last_active: Τελευταία δραστηριότητα - most_popular: Δημοφιλέστερες - most_recent: Πιο πρόσφατες - name: Ετικέτα review: Κατάσταση έγκρισης - reviewed: Εγκεκριμένες - title: Ετικέτες - trending_right_now: Δημοφιλείς αυτή τη στιγμή - unique_uses_today: "%{count} σημερινές δημοσιεύσεις" - unreviewed: Εκκρεμεί έγκριση updated_msg: Οι ρυθμίσεις των ετικετών ενημερώθηκαν επιτυχώς title: Διαχείριση warning_presets: @@ -623,9 +634,6 @@ el: body: Ο/Η %{reporter} κατήγγειλε τον/την %{target} body_remote: Κάποιος/α από τον τομέα %{domain} κατήγγειλε τον/την %{target} subject: Νέα καταγγελία για %{instance} (#%{id}) - new_trending_tag: - body: 'Η ετικέτα #%{name} είναι δημοφιλής σήμερα, αλλά δεν έχει εγκριθεί μέχρι τώρα. Δεν θα εμφανίζεται δημοσίως μέχρι να δοθεί έγκριση, αλλιώς αποθήκευση τη φόρμα ως έχει για να μην την δεις ξανά.' - subject: Νέα ετικέτα προς έγκριση στο %{instance} (#%{name}) aliases: add_new: Δημιουργία ψευδώνυμου created_msg: Δημιουργήθηκε νέο ψευδώνυμο. Τώρα μπορείς να ξεκινήσεις τη μεταφορά από τον παλιό λογαριασμό. @@ -677,6 +685,7 @@ el: invalid_reset_password_token: Το διακριτικό επαναφοράς συνθηματικού είναι άκυρο ή ληγμένο. Παρακαλώ αιτήσου νέο. link_to_otp: Γράψε τον κωδικό πιστοποίησης 2 παραγόντων (2FA) από το τηλέφωνό σου ή τον κωδικό επαναφοράς link_to_webauth: Χρήση συσκευής κλειδιού ασφαλείας + log_in_with: Σύνδεση με login: Σύνδεση logout: Αποσύνδεση migrate_account: Μετακόμιση σε διαφορετικό λογαριασμό @@ -828,34 +837,14 @@ el: changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν! copy: Αντιγραφή delete: Διαγραφή - no_batch_actions_available: Δεν υπάρχουν ομαδικές ενέργειες σε αυτή τη σελίδα order_by: Ταξινόμηση κατά save_changes: Αποθήκευση αλλαγών + today: σήμερα validation_errors: one: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε το παρακάτω σφάλμα other: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε τα παρακάτω %{count} σφάλματα html_validator: invalid_markup: 'περιέχει λάθος μορφοποίηση HTML: %{error}' - identity_proofs: - active: Ενεργή - authorize: Ναι, εξουσιοδότησε - authorize_connection_prompt: Εξουσιοδότηση αυτής της κρυπτογραφικής σύνδεσης; - errors: - failed: Η κρυπτογραφική σύνδεση απέτυχε. Παρακαλώ ξανά δοκίμασε μέσω %{provider}. - keybase: - invalid_token: Τα κλειδιά Keybase είναι κατακερματισμένες υπογραφές και πρέπει να έχουν μήκος 66 δεκαεξαδικών χαρακτήρων - verification_failed: Το Keybase δεν δέχτηκε αυτό το κλειδί ως υπογραφή του χρήστη %{kb_username}. Παρακαλούμε δοκίμασε μέσω Keybase. - wrong_user: Δεν επιτρέπεται να δημιουργηθεί ένα αποδεικτικό για %{proving} υπό τη σύνδεση ως %{current}. Συνδέσου ως %{proving} και δοκίμασε ξανά. - explanation_html: Εδώ μπορείς να συνδέσεις κρυπτογραφικά τις υπόλοιπες ταυτοτητές σου, όπως για παράδειγμα ένα προφίλ στο Keybase. Αυτό επιτρέπει σε άλλους ανθρώπους να σου στέλνουν κρυπτογραφημένα μηνύματα και να μπορούν να εμπιστευτούν το περιεχόμενο που τους στέλνεις εσύ. - i_am_html: Είμαι ο/η %{username} στην υπηρεσία %{service}. - identity: Ταυτότητα - inactive: Ανενεργή - publicize_checkbox: 'Και κάνε τουτ αυτό:' - publicize_toot: 'Αποδείχτηκε! Λέγομαι %{username} στο %{service}: %{url}' - remove: Αφαίρεση απόδειξης από τον λογαριασμό - removed: Επιτυχής αφαίρεση απόδειξης από τον λογαριασμό - status: Κατάσταση επαλήθευσης - view_proof: Εμφάνιση απόδειξης imports: errors: over_rows_processing_limit: περιέχει περισσότερες από %{count} γραμμές @@ -1053,6 +1042,9 @@ el: reply: proceed: Συνέχισε για να απαντήσεις prompt: 'Θέλεις να απαντήσεις σε αυτό το τουτ:' + reports: + errors: + invalid_rules: δεν παραπέμπει σε έγκυρους κανόνες scheduled_statuses: over_daily_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ για εκείνη τη μέρα over_total_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ @@ -1083,7 +1075,6 @@ el: edit_profile: Επεξεργασία προφίλ export: Εξαγωγή δεδομένων featured_tags: Χαρακτηριστικές ετικέτες - identity_proofs: Αποδείξεις ταυτοτήτων import: Εισαγωγή import_and_export: Εισαγωγή & Εξαγωγή migrate: Μετακόμιση λογαριασμού @@ -1106,18 +1097,19 @@ el: other: "%{count} βίντεο" boosted_from_html: Προωθήθηκε από %{acct_link} content_warning: 'Προειδοποίηση περιεχομένου: %{warning}' + default_language: Ίδια με γλώσσα διεπαφής disallowed_hashtags: one: 'περιέχει μη επιτρεπτή ετικέτα: %{tags}' other: περιέχει μη επιτρεπτές ετικέτες %{tags} + edited_at: Επεξεργάστηκε στις %{date} errors: in_reply_not_found: Η κατάσταση στην οποία προσπαθείτε να απαντήσετε δεν υπάρχει. - language_detection: Αυτόματη αναγνώριση γλώσσας open_in_web: Δες στο διαδίκτυο over_character_limit: υπέρβαση μέγιστου ορίου %{max} χαρακτήρων pin_errors: + direct: Αναρτήσεις που είναι ορατές μόνο στους αναφερόμενους χρήστες δεν μπορούν να καρφιτσωθούν limit: Έχεις ήδη καρφιτσώσει το μέγιστο αριθμό επιτρεπτών τουτ ownership: Δεν μπορείς να καρφιτσώσεις τουτ κάποιου άλλου - private: Τα μη δημόσια τουτ δεν καρφιτσώνονται reblog: Οι προωθήσεις δεν καρφιτσώνονται poll: total_people: @@ -1232,6 +1224,9 @@ el: contrast: Mastodon (Υψηλή αντίθεση) default: Mastodon (Σκοτεινό) mastodon-light: Mastodon (Ανοιχτόχρωμο) + time: + formats: + time: "%H:%M" two_factor_authentication: add: Προσθήκη disable: Απενεργοποίησε @@ -1256,13 +1251,10 @@ el: subject: Παρακαλούμε επιβεβαίωσε την απόπειρα εισόδου title: Απόπειρα εισόδου warning: - explanation: - disable: Όσο ο λογαριασμός σου είναι παγωμένος, τα στοιχεία του παραμένουν άθικτα αλλά δεν μπορείς να κανείς καμία ενέργεια μέχρι να ξεκλειδωθείς. - silence: Όσο ο λογαριασμός σου είναι περιορισμένος, μόνο όσοι σε ακολουθούν ήδη θα βλέπουν τα τουτ σου σε αυτό τον κόμβο ενώ μπορεί να εξαιρεθείς από διάφορες δημόσιες απαριθμήσεις. Πάντως, θα μπορούν να σε ακολουθήσουν χειροκίνητα. - suspend: Ο λογαριασμός σου αναστάλθηκε μόνιμα, όλα τα τουτ και τα ανεβασμένα πολυμέσα σου διαγράφηκαν αμετάκλητα από αυτόν τον κόμβο και σε όσους άλλους είχες ακόλουθους. - get_in_touch: Μπορείς να απαντήσεις σε αυτό το email για να επικοινωνήσεις με το προσωπικό του %{instance}. + categories: + spam: Ανεπιθύμητο + reason: 'Αιτιολογία:' review_server_policies: Αναθεώρηση πολιτικής του κόμβου - statuses: 'Συγκεκριμένα, για:' subject: disable: Ο λογαριασμός σου %{acct} έχει παγώσει none: Προειδοποίηση προς %{acct} @@ -1271,7 +1263,7 @@ el: title: disable: Παγωμένος λογαριασμός none: Προειδοποίηση - sensitive: Το πολυμέσο σας έχει σημανθεί ως ευαίσθητο + sensitive: Κρυμμένο πολυμέσο silence: Περιορισμένος λογαριασμός suspend: Λογαριασμός σε αναστολή welcome: diff --git a/config/locales/en.yml b/config/locales/en.yml index 85aa87c7a..1809f123e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -206,6 +206,7 @@ en: statuses: Posts strikes: Previous strikes subscribe: Subscribe + suspend: Suspend suspended: Suspended suspension_irreversible: The data of this account has been irreversibly deleted. You can unsuspend the account to make it usable but it will not recover any data it previously had. suspension_reversible_hint_html: The account has been suspended, and the data will be fully removed on %{date}. Until then, the account can be restored without any ill effects. If you wish to remove all of the account's data immediately, you can do so below. @@ -560,10 +561,12 @@ en: action_log: Audit log action_taken_by: Action taken by actions: + delete_description_html: The reported posts will be deleted and a strike will be recorded to help you escalate on future infractions by the same account. other_description_html: See more options for controlling the account's behaviour and customize communication to the reported account. + resolve_description_html: No action will be taken against the reported account, no strike recorded, and the report will be closed. silence_description_html: The profile will be visible only to those who already follow it or manually look it up, severely limiting its reach. Can always be reverted. suspend_description_html: The profile and all its contents will become inaccessible until it is eventually deleted. Interacting with the account will be impossible. Reversible within 30 days. - actions_description_html: 'If removing the offending content above is insufficient:' + actions_description_html: Decide which action to take to resolve this report. If you take a punitive action against the reported account, an e-mail notification will be sent to them, except when the <strong>Spam</strong> category is selected. add_to_report: Add more to report are_you_sure: Are you sure? assign_to_self: Assign to me @@ -575,7 +578,7 @@ en: none: None comment_description_html: 'To provide more information, %{name} wrote:' created_at: Reported - delete_and_resolve: Delete and resolve + delete_and_resolve: Delete posts forwarded: Forwarded forwarded_to: Forwarded to %{domain} mark_as_resolved: Mark as resolved @@ -589,12 +592,14 @@ en: placeholder: Describe what actions have been taken, or any other related updates... title: Notes notes_description_html: View and leave notes to other moderators and your future self + quick_actions_description_html: 'Take a quick action or scroll down to see reported content:' reopen: Reopen report report: 'Report #%{id}' reported_account: Reported account reported_by: Reported by resolved: Resolved resolved_msg: Report successfully resolved! + skip_to_actions: Skip to actions status: Status statuses: Reported content statuses_description_html: Offending content will be cited in communication with the reported account @@ -1143,6 +1148,8 @@ en: title: New boost status: subject: "%{name} just posted" + update: + subject: "%{name} edited a post" notifications: email_events: Events for e-mail notifications email_events_hint: 'Select events that you want to receive notifications for:' @@ -1225,6 +1232,9 @@ en: reply: proceed: Proceed to reply prompt: 'You want to reply to this post:' + reports: + errors: + invalid_rules: does not reference valid rules scheduled_statuses: over_daily_limit: You have exceeded the limit of %{limit} scheduled posts for today over_total_limit: You have exceeded the limit of %{limit} scheduled posts @@ -1307,13 +1317,13 @@ en: other: "%{count} videos" boosted_from_html: Boosted from %{acct_link} content_warning: 'Content warning: %{warning}' + default_language: Same as interface language disallowed_hashtags: one: 'contained a disallowed hashtag: %{tags}' other: 'contained the disallowed hashtags: %{tags}' edited_at: Edited %{date} errors: in_reply_not_found: The post you are trying to reply to does not appear to exist. - language_detection: Automatically detect language open_in_web: Open in web over_character_limit: character limit of %{max} exceeded pin_errors: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 6841bb439..e2315ae82 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -91,7 +91,6 @@ eo: accounts: add_email_domain_block: Bloki retadresan domajnon approve: Aprobi - approve_all: Aprobi ĉiujn are_you_sure: Ĉu vi certas? avatar: Profilbildo by_domain: Domajno @@ -139,7 +138,6 @@ eo: active: Aktiva all: Ĉio pending: Pritraktata - silenced: Silentigita suspended: Haltigita title: Kontrolado moderation_notes: Kontrolaj notoj @@ -156,7 +154,6 @@ eo: push_subscription_expires: Eksvalidiĝo de la abono al PuSH redownload: Aktualigi profilon reject: Malakcepti - reject_all: Malaprobi ĉiujn remove_avatar: Forigi profilbildon remove_header: Forigi kapan bildon resend_confirmation: @@ -190,7 +187,6 @@ eo: statuses: Mesaĝoj subscribe: Aboni suspended: Haltigita - time_in_queue: Atendado en atendovico %{time} title: Kontoj unconfirmed_email: Nekonfirmita retadreso undo_sensitized: Malfari sentema @@ -204,6 +200,7 @@ eo: whitelisted: En la blanka listo action_logs: action_types: + approve_user: Aprobu Uzanton assigned_to_self_report: Atribui Raporton change_email_user: Ŝanĝi retadreson de uzanto confirm_user: Konfermi uzanto @@ -222,6 +219,7 @@ eo: destroy_email_domain_block: Forigi blokadon de retpoŝta domajno destroy_ip_block: Forigi IP-regulon destroy_status: Forigi mesaĝon + destroy_unavailable_domain: Forigi Nehaveblan Domajnon disable_2fa_user: Malebligi 2FA disable_custom_emoji: Malebligi Propran Emoĝion disable_user: Malebligi uzanton @@ -328,9 +326,15 @@ eo: updated_msg: Emoĝio sukcese ĝisdatigita! upload: Alŝuti dashboard: + active_users: aktivaj uzantoj + interactions: interago + media_storage: Aŭdvidaĵa memorilo + new_users: novaj uzantoj software: Programo space: Memorspaca uzado title: Kontrolpanelo + top_servers: Plej aktivaj serviloj + website: Retejo domain_allows: add_new: Aldoni domajnon al la blanka listo created_msg: Domajno estis sukcese aldonita al la blanka listo @@ -441,8 +445,6 @@ eo: title: Krei novan IP-regulon no_ip_block_selected: Neniu IP-regulo estis ŝanĝita ĉar neniu estis elektita title: IP-reguloj - pending_accounts: - title: Pritraktataj kontoj (%{count}) relationships: title: Rilatoj de %{acct} relays: @@ -468,9 +470,6 @@ eo: notes: one: "%{count} noto" other: "%{count} notoj" - reports: - one: "%{count} signalo" - other: "%{count} signaloj" action_taken_by: Ago farita de are_you_sure: Ĉu vi certas? assign_to_self: Asigni al mi @@ -589,15 +588,9 @@ eo: delete: Forigi elŝutitan dosieron statuses: back_to_account: Reveni al konta paĝo - batch: - delete: Forigi - nsfw_off: Marki netikla - nsfw_on: Marki tikla deleted: Forigita - failed_to_execute: Ekigo malsukcesa media: title: Aŭdovidaĵoj - no_media: Neniu aŭdovidaĵo no_status_selected: Neniu mesaĝo estis ŝanĝita ĉar neniu estis elektita title: Mesaĝoj de la konto with_media: Kun aŭdovidaĵoj @@ -608,19 +601,7 @@ eo: action: Administri servilajn regulojn message_html: Vi ne difinis iujn servilajn regulojn. tags: - accounts_today: Unikaj uzoj hodiaŭ - accounts_week: Unikaj uzoj je ĉi tiu semajno - breakdown: Disigo de la hodiaŭa uzo per fonto - last_active: Laste aktiva - most_popular: La plej populara - most_recent: Plej lasta - name: Kradvorto review: La statuso de la recenzo - reviewed: Recenzis - title: Kradvortoj - trending_right_now: Nunaj furoraĵoj - unique_uses_today: "%{count} uzas hodiaŭ" - unreviewed: Ne recenzis updated_msg: Kradvorto agordoj ĝisdatigis sukcese title: Administrado warning_presets: @@ -636,9 +617,6 @@ eo: body: "%{reporter} signalis %{target}" body_remote: Iu de %{domain} signalis %{target} subject: Nova signalo por %{instance} (#%{id}) - new_trending_tag: - body: 'La kradvorto #%{name} furoras hodiaŭ, sed ankoraŭ ne estis kontrolita. Ĝi ne aperos publike sen via aprobo. Se vi ne volas tion, simple konservu la formularon tiel kiel.' - subject: Nova kradvorto kontrolebla en %{instance} (#%{name}) aliases: add_new: Krei alinomon created_msg: Kreis novan alinomon sukcese. Vi povas inici la transloki el la malnovan konton nun. @@ -687,6 +665,7 @@ eo: forgot_password: Pasvorto forgesita? invalid_reset_password_token: Ĵetono por restarigi pasvorton nevalida aŭ eksvalida. Bonvolu peti novan. link_to_webauth: Uzi vian sekurecan ŝlosilon + log_in_with: Ensaluti per login: Ensaluti logout: Elsaluti migrate_account: Movi al alia konto @@ -839,24 +818,6 @@ eo: other: Io mise okazis! Bonvolu konsulti la subajn %{count} erar-raportojn html_validator: invalid_markup: 'havas nevalidan HTML-markadon: %{error}' - identity_proofs: - active: Aktiva - authorize: Jes, permesi - authorize_connection_prompt: Permesi ĉi tiu ĉifrikan conekton? - errors: - failed: La ĉifrika conekto nefaris. Peti provu denove el %{provider}. - keybase: - invalid_token: Keybase signo estas haŝoj de subskribo kaj devi 66 deksesuma leteroj - verification_failed: Keybase ne rekoni ĉi tiu signo kiel subskribo de Keybase uzanto %{kb_username}. Peti provu denove el Keybase. - wrong_user: Ne povas krei por %{proving} dum ensalutis kiel %{current}. Ensaluti kiel %{proving} kaj provu denove. - explanation_html: Ĉi tie vi povas ĉifrika konekti via alia identicoj, kiel Keybase profilon. ĉi tiu igi aliaj popoloj sendi al vi ĉifritaj mesaĝoj kaj fidi kontento vi sendi al ilin. - i_am_html: Mi estas %{username} en %{service}. - identity: Identeco - inactive: Malaktiva - publicize_checkbox: 'Kaj fajfi ĉi tio:' - publicize_toot: 'I estas pruvita! Mi estas %{username} sur %{service}: %{url}' - status: Confirmo statuso - view_proof: Vidi pruvo imports: modes: merge: Kunigi @@ -1025,7 +986,7 @@ eo: mutual: Reciproka primary: Primara relationship: Rilato - remove_selected_domains: Forigi ĉiuj sekvantojn el la selektitajn domajnojn + remove_selected_domains: Forigi ĉiujn sekvantojn el la selektitaj domajnoj remove_selected_followers: Forigi selektitajn sekvantojn remove_selected_follows: Ne plu sekvi elektitajn uzantojn status: Statuso de la konto @@ -1103,7 +1064,6 @@ eo: edit_profile: Redakti profilon export: Eksporti datumojn featured_tags: Elstarigitaj kradvortoj - identity_proofs: Pruvo de identeco import: Importi import_and_export: Alporto kaj elporto migrate: Konta migrado @@ -1130,13 +1090,11 @@ eo: disallowed_hashtags: one: 'enhavas malpermesitan kradvorton: %{tags}' other: 'enhavis malpermesitan kradvorton: %{tags}' - language_detection: Aŭtomate detekti la lingvon open_in_web: Malfermi retumile over_character_limit: limo de %{max} signoj transpasita pin_errors: limit: Vi jam atingis la maksimuman nombron de alpinglitaj mesaĝoj ownership: Mesaĝo de iu alia ne povas esti alpinglita - private: Mesaĝo nepublika ne povas esti alpinglita reblog: Diskonigo ne povas esti alpinglita poll: total_people: @@ -1209,12 +1167,7 @@ eo: subject: Via arkivo estas preta por elŝutado title: Arkiva elŝuto warning: - explanation: - disable: Dum via konto estas frostigita, via kontaj datumoj restas intaktaj, sed vi ne povas plenumi iujn agojn ĝis ĝi estas malhaltigita. - silence: Dum via konto estas limigita, nur tiuj, kiuj jam sekvas vin, vidos viajn mesaĝojn en ĉi tiu servilo, kaj vi povus esti ekskludita de diversaj publikaj listoj. Tamen, aliaj ankoraŭ povas mane sekvi vin. - suspend: Via konto estis haltigita, kaj ĉiuj el viaj mesaĝoj kaj alŝutitaj aŭdovidaj dosieroj estis nemalfareble forigitaj de ĉi tiu servilo, kaj de la serviloj, kie vi havis sekvantojn. review_server_policies: Superrigardi servilajn politikojn - statuses: 'Specife, per:' 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 bcfab74c8..e14a8d725 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -99,7 +99,6 @@ es-AR: accounts: add_email_domain_block: Bloquear el dominio del correo electrónico approve: Aprobar - approve_all: Aprobar todas approved_msg: Se aprobó exitosamente la solicitud de registro de %{username} are_you_sure: "¿Estás seguro?" avatar: Avatar @@ -114,6 +113,7 @@ es-AR: confirm: Confirmar confirmed: Confirmado confirming: Confirmación + custom: Personalizar delete: Eliminar datos deleted: Eliminado demote: Bajar de nivel @@ -153,7 +153,6 @@ es-AR: active: Activas all: Todas pending: Pendientes - silenced: Limitadas suspended: Suspendidas title: Moderación moderation_notes: Notas de moderación @@ -171,7 +170,6 @@ es-AR: redownload: Refrescar perfil redownloaded_msg: Se refrescó exitosamente el perfil de %{username} desde el origen reject: Rechazar - reject_all: Rechazar todas rejected_msg: Se rechazó exitosamente la solicitud de registro de %{username} remove_avatar: Quitar avatar remove_header: Quitar cabecera @@ -206,12 +204,14 @@ es-AR: silence: Limitar silenced: Limitadas statuses: Mensajes + strikes: Sanciones previas subscribe: Suscribirse 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. - time_in_queue: Esperando en cola %{time} title: Cuentas + unblock_email: Desbloquear dirección de correo electrónico + unblocked_email_msg: Se desbloqueó exitosamente la dirección de correo electrónico de %{username} unconfirmed_email: Correo electrónico sin confirmar undo_sensitized: Deshacer Forzar como sensible undo_silenced: Deshacer límite @@ -226,6 +226,7 @@ es-AR: whitelisted: Permitidas para federación action_logs: action_types: + approve_user: Aprobar usuario assigned_to_self_report: Asignar denuncia change_email_user: Cambiar correo electrónico del usuario confirm_user: Confirmar usuario @@ -243,6 +244,7 @@ es-AR: destroy_domain_allow: Eliminar permiso de dominio destroy_domain_block: Eliminar bloqueo de dominio destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico + destroy_instance: Purgar dominio destroy_ip_block: Eliminar regla de dirección IP destroy_status: Eliminar mensaje destroy_unavailable_domain: Eliminar dominio no disponible @@ -255,6 +257,7 @@ es-AR: enable_user: Habilitar usuario memorialize_account: Convertir en cuenta conmemorativa promote_user: Promover usuario + reject_user: Rechazar usuario remove_avatar_user: Quitar avatar reopen_report: Reabrir denuncia reset_password_user: Cambiar contraseña @@ -263,6 +266,7 @@ es-AR: silence_account: Limitar cuenta suspend_account: Suspender cuenta unassigned_report: Desasignar denuncia + unblock_email_account: Desbloquear dirección de correo electrónico unsensitive_account: Desmarcar Forzar cuenta como sensible unsilence_account: Deshacer Limitar cuenta unsuspend_account: Dejar de suspender cuenta @@ -271,6 +275,7 @@ es-AR: update_domain_block: Actualizar bloque de dominio update_status: Actualizar mensaje actions: + 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}" confirm_user_html: "%{name} confirmó la dirección de correo del usuario %{target}" @@ -288,6 +293,7 @@ es-AR: destroy_domain_allow_html: "%{name} no permitió la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" + destroy_instance_html: "%{name} purgó el dominio %{target}" destroy_ip_block_html: "%{name} eliminó la regla para la dirección IP %{target}" destroy_status_html: "%{name} eliminó el mensaje de %{target}" destroy_unavailable_domain_html: "%{name} reanudó la entrega al dominio %{target}" @@ -300,6 +306,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_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}" reset_password_user_html: "%{name} cambió la contraseña del usuario %{target}" @@ -308,6 +315,7 @@ es-AR: silence_account_html: "%{name} limitó la cuenta de %{target}" suspend_account_html: "%{name} suspendió la cuenta de %{target}" unassigned_report_html: "%{name} desasignó la denuncia %{target}" + unblock_email_account_html: "%{name} desbloqueó la dirección de correo electrónico de %{target}" unsensitive_account_html: "%{name} desmarcó los medios de %{target} como sensibles" unsilence_account_html: "%{name} quitó el límite de la cuenta de %{target}" unsuspend_account_html: "%{name} quitó la suspensión de la cuenta de %{target}" @@ -371,9 +379,28 @@ es-AR: updated_msg: "¡Emoji actualizado exitosamente!" upload: Subir dashboard: + active_users: usuarios activos + interactions: interacciones + media_storage: Almacenamiento de medios + new_users: nuevos usuarios + opened_reports: denuncias abiertas + pending_reports_html: + one: "<strong>1</strong> denuncia pendiente" + other: "<strong>%{count}</strong> denuncias 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: denuncias resueltas software: Software + sources: Fuentes de registro space: Uso de almacenamiento title: Panel + top_languages: Idiomas más activos + top_servers: Servidores más activos + website: Sitio web domain_allows: add_new: Permitir federación con el dominio created_msg: El dominio fue exitosamente permitido para la federación @@ -446,6 +473,7 @@ es-AR: back_to_limited: Limitados back_to_warning: Advertencia by_domain: Dominio + confirm_purge: "¿Estás seguro que querés eliminar permanentemente los datos de este dominio?" delivery: all: Todos clear: Limpiar errores de entrega @@ -461,6 +489,7 @@ es-AR: delivery_available: La entrega está disponible delivery_error_days: Días de error de entrega delivery_error_hint: Si la entrega no es posible durante %{count} días, se marcará automáticamente como no entregable. + destroyed_msg: Los datos de %{domain} están ahora en cola para su eliminación inminente. empty: No se encontraron dominios. known_accounts: one: "%{count} cuenta conocida" @@ -471,6 +500,7 @@ es-AR: title: Moderación private_comment: Comentario privado public_comment: Comentario público + purge: Purgar title: Federación total_blocked_by_us: Bloqueada por nosotros total_followed_by_them: Seguidas por ellos @@ -500,8 +530,6 @@ es-AR: title: Crear nueva regla de dirección IP no_ip_block_selected: No se cambió ninguna regla de dirección IP, ya que no se seleccionó ninguna title: Reglas de dirección IP - pending_accounts: - title: Cuentas pendientes (%{count}) relationships: title: Relaciones de %{acct} relays: @@ -523,32 +551,44 @@ es-AR: report_notes: created_msg: "¡La nota de denuncia fue creada exitosamente!" destroyed_msg: "¡La nota de denuncia fue eliminada exitosamente!" + today_at: Hoy a las %{time} reports: account: notes: one: "%{count} nota" other: "%{count} notas" - reports: - one: "%{count} denuncia" - other: "%{count} denuncias" + action_log: Registro de auditoría action_taken_by: Acción tomada por + actions: + other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta denunciada. + 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:' + add_to_report: Agregar más a la denuncia are_you_sure: "¿Estás seguro?" assign_to_self: Asignármela a mí assigned: Moderador asignado by_target_domain: Dominio de la cuenta denunciada + category: Categoría + category_description_html: El motivo por el que se denunció esta cuenta o contenido será citado en las comunicaciones con la cuenta denunciada comment: none: Ninguno + comment_description_html: 'Para proporcionar más información, %{name} escribió:' created_at: Denunciado + delete_and_resolve: Resolver y eliminar forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resuelta mark_as_unresolved: Marcar como no resuelta + no_one_assigned: Nadie notes: create: Agregar nota create_and_resolve: Resolver con nota create_and_unresolve: Reabrir con nota delete: Eliminar 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 reopen: Reabrir denuncia report: 'Denuncia #%{id}' reported_account: Cuenta denunciada @@ -556,11 +596,14 @@ es-AR: resolved: Resueltas resolved_msg: "¡Denuncia exitosamente resuelta!" status: Estado + statuses: Contenido denunciado + statuses_description_html: El contenido ofensivo se citará en la comunicación con la cuenta denunciada target_origin: Origen de la cuenta denunciada title: Denuncias unassign: Desasignar unresolved: No resueltas updated_at: Actualizadas + view_profile: Ver perfil rules: add_new: Agregar regla delete: Eliminar @@ -656,21 +699,19 @@ es-AR: title: Permitir que las etiquetas sean tendencia sin revisión previa trends: desc_html: Mostrar públicamente etiquetas previamente revisadas que son tendencia actualmente - title: Etiquetas en tendencia + title: Tendencias site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Subida al sitio eliminada exitosamente!" statuses: back_to_account: Volver a la página de la cuenta + back_to_report: Volver a la página de la denuncia batch: - delete: Eliminar - nsfw_off: Marcar contenido como no sensible - nsfw_on: Marcar contenido como sensible + remove_from_report: Quitar de la denuncia + report: Denunciar deleted: Eliminado - failed_to_execute: Falló al ejecutar media: title: Medios - no_media: Sin medios no_status_selected: No se cambió ningún mensaje, ya que ninguno fue seleccionado title: Mensajes de la cuenta with_media: Con medios @@ -683,21 +724,51 @@ es-AR: sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la/s cola/s %{value}. Por favor, revisá tu configuración de Sidekiq tags: - accounts_today: Usos únicos de hoy - accounts_week: Usos únicos esta semana - breakdown: Desglose del consumo de hoy por fuentes - last_active: Usadas recientemente - most_popular: Lo más popular - most_recent: Creadas recientemente - name: Etiqueta review: Estado de revisión - reviewed: Revisado - title: Etiquetas - trending_right_now: En tendencia ahora mismo - unique_uses_today: "%{count} mensajes hoy" - unreviewed: No revisada updated_msg: La configuración de la etiqueta se actualizó exitosamente title: Administración + trends: + allow: Permitir + approved: Aprobadas + disallow: Rechazar + links: + allow: Permitir enlace + 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 la/s %{yesterday} vez/veces de ayer + pending_review: Revisión pendiente + preview_card_providers: + allowed: Los enlaces de este medio pueden ser tendencia + rejected: Los enlaces de este medio no serán tendencia + title: Medios + rejected: Rechazadas + tags: + current_score: Puntuación actual %{score} + dashboard: + tag_accounts_measure: usos únicos + tag_languages_dimension: Idiomas principales + tag_servers_dimension: Servidores principales + tag_servers_measure: diferentes servidores + tag_uses_measure: usos totales + listable: Pueden ser recomendadas + not_listable: No serán recomendadas + not_trendable: No aparecerán en tendencias + not_usable: No podrán ser usadas + peaked_on_and_decaying: Alcanzó el pico el %{date}, ahora decreciendo + title: Etiquetas en tendencia + trendable: Pueden aparecer en tendencias + trending_rank: Tendencia n.º %{rank} + 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 + title: Tendencias warning_presets: add_new: Agregar nuevo delete: Eliminar @@ -712,9 +783,16 @@ es-AR: body: "%{reporter} denunció a %{target}" body_remote: Alguien de %{domain} denunció a %{target} subject: Nueva denuncia para %{instance} (#%{id}) - new_trending_tag: - body: 'La etiqueta #%{name} está en tendencia hoy, pero no fue revisada previamente. No se mostrará públicamente a menos que lo permitas, o si no simplemente guardá el formulario como está para no volver a ver esto.' - subject: Nueva etiqueta para revisión en %{instance} (#%{name}) + new_trending_links: + body: Los siguientes enlaces están en tendencia hoy, pero sus medios de origen no han sido revisados previamente. No se mostrarán públicamente a menos que los aprobés. No se generarán más notificaciones de estos medios. + no_approved_links: Actualmente no hay enlaces en tendencia aprobados. + requirements: El enlace en tendencia aprobado más bajo actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}. + subject: Nuevos enlaces en tendencia esperando ser revisados en %{instance} + new_trending_tags: + body: 'Las siguientes etiquetas están en tendencia hoy, pero no han sido revisadas previamente. No se mostrarán públicamente a menos que las aprobés:' + no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. + requirements: La etiqueta en tendencia aprobada más baja actualmente es "%{lowest_tag_name}" con una puntuación de %{lowest_tag_score}. + subject: Nuevas etiquetas en tendencia esperando ser revisadas en %{instance} aliases: add_new: Crear alias created_msg: El nuevo alias se creó exitosamente. Ahora podés empezar la mudanza desde la cuenta vieja. @@ -766,6 +844,7 @@ es-AR: invalid_reset_password_token: La clave para cambiar la contraseña no es válida o venció. Por favor, solicitá una nueva. link_to_otp: Ingresá un código de dos factores desde tu dispositivo o un código de recuperación link_to_webauth: Usá tu dispositivo de llave de seguridad + log_in_with: Iniciar sesión con login: Iniciar sesión logout: Cerrar sesión migrate_account: Mudarse a otra cuenta @@ -921,34 +1000,15 @@ es-AR: changes_saved_msg: "¡Cambios guardados exitosamente!" copy: Copiar delete: Eliminar - no_batch_actions_available: No hay acciones por lotes disponibles en esta página + none: "[Ninguna]" order_by: Ordenar por save_changes: Guardar cambios + today: hoy validation_errors: one: "¡Falta algo! Por favor, revisá el error abajo" other: "¡Falta algo! Por favor, revisá los %{count} errores abajo" html_validator: invalid_markup: 'contiene markup HTML no válido: %{error}' - identity_proofs: - active: Activa - authorize: Sí, autorizar - authorize_connection_prompt: "¿Autorizar esta conexión criptográfica?" - errors: - failed: Falló la conexión criptográfica. Por favor, intentá de nuevo desde %{provider}. - keybase: - invalid_token: Las claves de Keybase son hashes de firmas y deben tener 66 caracteres hexadecimales - verification_failed: Keybase no reconoce esta clave como una firma del usuario de Keybase %{kb_username}. Por favor, intentá de nuevo desde Keybase. - wrong_user: No se puede crear una prueba para %{proving} mientras se haya iniciado sesión como %{current}. Iniciá sesión como %{proving} e intentá de nuevo. - explanation_html: Acá podés conectar criptográficamente tus otras identidades, como un perfil de Keybase. Esto permite a otras personas enviarte mensajes cifrados y confiar en el contenido que les envías. - i_am_html: Soy %{username} en %{service}. - identity: Identidad - inactive: Inactiva - publicize_checkbox: 'Y enviá esto:' - publicize_toot: "¡Comprobado! Soy %{username} en %{service}: %{url}" - remove: Quitar prueba de cuenta - removed: Se quitó la prueba de cuenta exitosamente - status: Estado de verificación - view_proof: Ver prueba imports: errors: over_rows_processing_limit: contiene más de %{count} filas @@ -1164,6 +1224,9 @@ es-AR: reply: proceed: Proceder para responder prompt: 'Vas a responder a este mensaje:' + reports: + errors: + invalid_rules: no hace referencia a reglas válidas scheduled_statuses: over_daily_limit: Superaste el límite de %{limit} mensajes programados para ese día over_total_limit: Superaste el límite de %{limit} mensajes programados @@ -1222,7 +1285,6 @@ es-AR: edit_profile: Editar perfil export: Exportación de datos featured_tags: Etiquetas destacadas - identity_proofs: Pruebas de identidad import: Importar import_and_export: Importación y exportación migrate: Migración de la cuenta @@ -1247,18 +1309,19 @@ es-AR: other: "%{count} videos" boosted_from_html: Adherido desde %{acct_link} content_warning: 'Advertencia de contenido: %{warning}' + default_language: Igual que el idioma de la interface disallowed_hashtags: one: 'contenía una etiqueta no permitida: %{tags}' other: 'contenía las etiquetas no permitidas: %{tags}' + edited_at: Editado %{date} errors: in_reply_not_found: El mensaje al que intentás responder no existe. - language_detection: Detectar idioma automáticamente open_in_web: Abrir en la web over_character_limit: se excedió el límite de %{max} caracteres pin_errors: + direct: Los mensajes que sólo son visibles para los usuarios mencionados no pueden ser fijados limit: Ya fijaste el número máximo de mensajes ownership: No se puede fijar el mensaje de otra cuenta - private: Los mensajes que no son públicos no se pueden fijar reblog: No se puede fijar una adhesión poll: total_people: @@ -1312,9 +1375,9 @@ es-AR: '63113904': 2 años '7889238': 3 meses min_age_label: Umbral de edad - min_favs: Conservar mensajes marcados como favoritos de hace más de + min_favs: Conservar mensajes marcados como favoritos de por lo menos min_favs_hint: No elimina ninguno de tus mensajes que haya recibido más de esta cantidad de favoritos. Dejá en blanco para eliminar mensajes independientemente de su número de favoritos - min_reblogs: Conservar adhesiones de hace más de + min_reblogs: Conservar adhesiones de por lo menos min_reblogs_hint: No elimina ninguno de tus mensajes que haya recibido más de esta cantidad de adhesiones. Dejá en blanco para eliminar mensajes independientemente de su número de adhesiones stream_entries: pinned: Mensaje fijado @@ -1413,6 +1476,7 @@ es-AR: formats: default: "%Y.%b.%d, %H:%M" month: "%b de %Y" + time: "%H:%M" two_factor_authentication: add: Agregar disable: Deshabilitar 2FA @@ -1440,24 +1504,31 @@ es-AR: subject: Por favor, confirmá el intento de inicio de sesión title: Intento de inicio de sesión warning: + categories: + spam: Spam + violation: El contenido viola las siguientes directrices de la comunidad explanation: - disable: Ya no podés iniciar sesión en tu cuenta o usarla de alguna manera, pero tu perfil y otros datos permanecen intactos. - sensitive: Tus archivos de medios subidos y enlaces de medios serán tratados como sensibles. - silence: Todavía podés usar tu cuenta, pero sólo las cuentas que ya te estén siguiendo verán tus mensajes en este servidor, y puede que se te excluya de varios listados públicos. Sin embargo, otras cuentas pueden seguirte manualmente. - suspend: Ya no podés usar tu cuenta; tu perfil y otros datos ya no son accesibles. Todavía podés iniciar sesión para solicitar un resguardo de tus datos hasta que los mismos sean totalmente quitados, pero retendremos ciertos datos para prevenirte de evadir la suspensión. - get_in_touch: Podés responder a esta dirección de correo electrónico para ponerte en contacto con la administración de %{instance}. + delete_statuses: Algunos de tus mensajes violan una o más directrices de la comunidad y por consiguiente fueron eliminados por los moderadores de %{instance}. Futuras violaciones pueden resultar en acciones punitivas más severas contra tu cuenta. + disable: Ya no podés usar tu cuenta, pero tu perfil y el resto de datos permanecen intactos. Podés solicitar una copia de seguridad de tus datos, cambiar la configuración de tu cuenta, o eliminarla. + sensitive: A partir de ahora, todos tus archivos subidos serán marcados como sensibles y ocultos tras una advertencia en la que habrá que hacer clic. + silence: Todavía podés usar tu cuenta, pero sólo las personas que te están siguiendo verán tus publicaciones en este servidor, y podrías ser excluido de varias funciones de descubrimiento. Sin embargo, otras cuentas podrán seguirte manualmente. + 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: 'Específicamente, para:' + statuses: 'Mensajes que se encontraron en violación:' subject: + delete_statuses: Se eliminaron tus mensajes en %{acct} disable: Tu cuenta %{acct} fue congelada none: Advertencia para %{acct} - sensitive: Los mensajes con medios de tu cuenta %{acct} fueron marcados como sensibles + sensitive: Tus archivos en %{acct} se marcarán como sensibles a partir de ahora silence: Tu cuenta %{acct} fue limitada suspend: Tu cuenta %{acct} fue suspendida title: + delete_statuses: Mensajes eliminados disable: Cuenta congelada none: Advertencia - sensitive: Tus medios fueron marcados como sensibles + sensitive: Medios ocultos silence: Cuenta limitada suspend: Cuenta suspendida welcome: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 0260febab..834b3a7d4 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -99,7 +99,6 @@ es-MX: accounts: add_email_domain_block: Poner en lista negra el dominio del correo approve: Aprobar - approve_all: Aprobar todos approved_msg: La solicitud de registro de %{username} ha sido aprobada correctamente are_you_sure: "¿Estás seguro?" avatar: Foto de perfil @@ -114,6 +113,7 @@ es-MX: confirm: Confirmar confirmed: Confirmado confirming: Confirmando + custom: Personalizado delete: Eliminar datos deleted: Borrado demote: Degradar @@ -153,7 +153,6 @@ es-MX: active: Activo all: Todos pending: Pendiente - silenced: Silenciados suspended: Suspendidos title: Moderación moderation_notes: Notas de moderación @@ -171,7 +170,6 @@ es-MX: redownload: Refrescar avatar redownloaded_msg: Se actualizó correctamente el perfil de %{username} desde el origen reject: Rechazar - reject_all: Rechazar todos rejected_msg: La solicitud de registro de %{username} ha sido rechazada con éxito remove_avatar: Eliminar el avatar remove_header: Eliminar cabecera @@ -206,12 +204,14 @@ es-MX: silence: Silenciar silenced: Silenciado statuses: Estados + strikes: Amonestaciones previas subscribe: Suscribir 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. - time_in_queue: Esperando en cola %{time} title: Cuentas + unblock_email: Desbloquear dirección de correo + unblocked_email_msg: Se ha desbloqueado correctamente la dirección de correo de %{username} unconfirmed_email: Correo electrónico sin confirmar undo_sensitized: Desmarcar como sensible undo_silenced: Des-silenciar @@ -226,6 +226,7 @@ es-MX: whitelisted: Añadido a la lista blanca action_logs: action_types: + approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario confirm_user: Confirmar Usuario @@ -243,6 +244,7 @@ es-MX: destroy_domain_allow: Eliminar Permiso de Dominio destroy_domain_block: Eliminar Bloqueo de Dominio destroy_email_domain_block: Eliminar Bloqueo de Dominio de Correo Electrónico + destroy_instance: Purgar Dominio destroy_ip_block: Eliminar regla IP destroy_status: Eliminar Estado destroy_unavailable_domain: Eliminar Dominio No Disponible @@ -255,6 +257,7 @@ es-MX: enable_user: Habilitar Usuario memorialize_account: Transformar en Cuenta Conmemorativa promote_user: Promover Usuario + reject_user: Rechazar Usuario remove_avatar_user: Eliminar Avatar reopen_report: Reabrir Reporte reset_password_user: Restablecer Contraseña @@ -263,6 +266,7 @@ es-MX: silence_account: Silenciar Cuenta suspend_account: Suspender Cuenta unassigned_report: Desasignar Reporte + unblock_email_account: Desbloquear dirección de correo unsensitive_account: Desmarcar multimedia en tu cuenta como sensible unsilence_account: Dejar de Silenciar Cuenta unsuspend_account: Dejar de Suspender Cuenta @@ -271,6 +275,7 @@ es-MX: update_domain_block: Actualizar el Bloqueo de Dominio update_status: Actualizar Estado actions: + 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}" confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" @@ -288,6 +293,7 @@ es-MX: destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" + destroy_instance_html: "%{name} purgó el dominio %{target}" destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" destroy_status_html: "%{name} eliminó el estado por %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" @@ -300,6 +306,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_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}" reset_password_user_html: "%{name} reinició la contraseña del usuario %{target}" @@ -308,6 +315,7 @@ es-MX: silence_account_html: "%{name} silenció la cuenta de %{target}" suspend_account_html: "%{name} suspendió la cuenta de %{target}" unassigned_report_html: "%{name} des-asignó el informe %{target}" + unblock_email_account_html: "%{name} ha desbloqueado la dirección de correo de %{target}" unsensitive_account_html: "%{name} desmarcó la multimedia de %{target} como sensible" unsilence_account_html: "%{name} desilenció la cuenta de %{target}" unsuspend_account_html: "%{name} reactivó la cuenta de %{target}" @@ -371,9 +379,28 @@ es-MX: updated_msg: "¡Emoji actualizado con éxito!" upload: Subir dashboard: + active_users: usuarios activos + interactions: interacciones + 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 space: Uso de almacenamiento title: Tablero + top_languages: Idiomas más activos + top_servers: Servidores más activos + website: Sitio web domain_allows: add_new: Añadir dominio a la lista blanca created_msg: Dominio añadido a la lista blanca con éxito @@ -446,6 +473,7 @@ es-MX: back_to_limited: Limitados back_to_warning: Advertencia by_domain: Dominio + confirm_purge: "¿Seguro que quieres eliminar permanentemente los datos de este dominio?" delivery: all: Todos clear: Limpiar errores de entrega @@ -461,6 +489,7 @@ es-MX: delivery_available: Entrega disponible delivery_error_days: Días de error de entrega 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" @@ -471,6 +500,7 @@ es-MX: title: Moderación private_comment: Comentario privado public_comment: Comentario público + purge: Purgar title: Instancias conocidas total_blocked_by_us: Bloqueado por nosotros total_followed_by_them: Seguidos por ellos @@ -500,8 +530,6 @@ es-MX: title: Crear nueva regla IP no_ip_block_selected: No se han cambiado reglas IP ya que no se ha seleccionado ninguna title: Reglas IP - pending_accounts: - title: Cuentas pendientes (%{count}) relationships: title: Relaciones de %{acct} relays: @@ -523,32 +551,44 @@ es-MX: report_notes: created_msg: "¡El registro de la denuncia se ha creado correctamente!" destroyed_msg: "¡El registro de la denuncia se ha borrado correctamente!" + today_at: Hoy a las %{time} reports: account: notes: one: "%{count} nota" other: "%{count} notas" - reports: - one: "%{count} informe" - other: "%{count} informes" + action_log: Registro de auditoría action_taken_by: Acción tomada por + actions: + other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada. + 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:' + add_to_report: Añadir más al reporte are_you_sure: "¿Estás seguro?" assign_to_self: Asignármela a mí assigned: Moderador asignado by_target_domain: Dominio de la cuenta reportada + category: Categoría + category_description_html: La razón por la que se reportó esta cuenta o contenido será citada en las comunicaciones con la cuenta reportada comment: none: Ninguno + comment_description_html: 'Para proporcionar más información, %{name} escribió:' created_at: Denunciado + delete_and_resolve: Eliminar y resolver forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resuelto mark_as_unresolved: Marcar como no resuelto + no_one_assigned: Nadie notes: create: Añadir una nota create_and_resolve: Resolver con una nota create_and_unresolve: Reabrir con una nota delete: Eliminar 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 reopen: Reabrir denuncia report: 'Reportar #%{id}' reported_account: Cuenta reportada @@ -556,11 +596,14 @@ es-MX: resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" status: Estado + statuses: Contenido reportado + statuses_description_html: El contenido ofensivo se citará en la comunicación con la cuenta reportada target_origin: Origen de la cuenta reportada title: Reportes unassign: Desasignar unresolved: No resuelto updated_at: Actualizado + view_profile: Ver perfil rules: add_new: Añadir norma delete: Eliminar @@ -662,15 +705,13 @@ es-MX: destroyed_msg: "¡Carga del sitio eliminada con éxito!" statuses: back_to_account: Volver a la cuenta + back_to_report: Volver a la página del reporte batch: - delete: Eliminar - nsfw_off: Marcar contenido como no sensible - nsfw_on: Marcar contenido como sensible + remove_from_report: Eliminar del reporte + report: Reporte deleted: Eliminado - failed_to_execute: Falló al ejecutar media: title: Multimedia - no_media: No hay multimedia no_status_selected: No se cambió ningún estado al no seleccionar ninguno title: Estado de las cuentas with_media: Con multimedia @@ -683,21 +724,51 @@ es-MX: sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq tags: - accounts_today: Usos únicos de hoy - accounts_week: Usos únicos esta semana - breakdown: Desglose del consumo actual por fuentes - last_active: Última actividad - most_popular: Más popular - most_recent: Más reciente - name: Etiqueta review: Estado de revisión - reviewed: Revisado - title: Etiquetas - trending_right_now: En tendencia ahora mismo - unique_uses_today: "%{count} publicando hoy" - unreviewed: No revisado updated_msg: Hashtags actualizados exitosamente title: Administración + trends: + allow: Permitir + approved: Aprobadas + disallow: No permitir + links: + allow: Permitir enlace + 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 + preview_card_providers: + allowed: Los enlaces de este medio pueden ser tendencia + rejected: Los enlaces de este medio no pueden ser tendencia + title: Medios + rejected: Rechazadas + tags: + current_score: Puntuación actual %{score} + dashboard: + tag_accounts_measure: usos únicos + tag_languages_dimension: Idiomas principales + tag_servers_dimension: Servidores principales + tag_servers_measure: diferentes servidores + tag_uses_measure: usos totales + listable: Pueden ser recomendadas + not_listable: No serán recomendadas + not_trendable: No aparecerán en tendencias + not_usable: No pueden ser usadas + peaked_on_and_decaying: Alcanzó el pico en %{date}, ahora decreciendo + title: Etiquetas en tendencia + trendable: Pueden aparecer en tendencias + 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 delete: Borrar @@ -712,9 +783,16 @@ es-MX: body: "%{reporter} ha reportado a %{target}" body_remote: Alguien de %{domain} a reportado a %{target} subject: Nuevo reporte para la %{instance} (#%{id}) - new_trending_tag: - body: 'El hashtag #%{name} está en tendencia hoy, pero no ha sido revisado previamente. No se mostrará públicamente a menos que lo permita, o simplemente guarde el formulario como para no volver a ver esto.' - subject: Nuevo hashtag para revisión en %{instance} (#%{name}) + new_trending_links: + body: Los siguientes enlaces están en tendencia hoy, pero sus medios de origen no han sido revisados previamente. No se mostrarán públicamente a menos que los apruebes. No se generarán más notificaciones de estos medios. + no_approved_links: Actualmente no hay enlaces en tendencia aprobados. + requirements: El enlace en tendencia aprobado más bajo actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}. + subject: Nuevos enlaces en tendencia esperando ser revisados en %{instance} + new_trending_tags: + body: 'Las siguientes etiquetas están en tendencia hoy, pero no han sido revisadas previamente. No se mostrarán públicamente a menos que las apruebes:' + no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. + requirements: La etiqueta en tendencia aprobada más baja actualmente es "%{lowest_tag_name}" con una puntuación de %{lowest_tag_score}. + subject: Nuevas etiquetas en tendencia esperando ser revisadas en %{instance} aliases: add_new: Crear alias created_msg: El nuevo alias se ha creado correctamente. Ahora puedes empezar el traslado desde la cuenta antigua. @@ -766,6 +844,7 @@ es-MX: invalid_reset_password_token: El token de reinicio de contraseña es inválido o expiró. Por favor pide uno nuevo. link_to_otp: Introduce un código de dos factores desde tu teléfono o un código de recuperación link_to_webauth: Utilice su dispositivo de clave de seguridad + log_in_with: Iniciar sesión con login: Iniciar sesión logout: Cerrar sesión migrate_account: Mudarse a otra cuenta @@ -921,34 +1000,15 @@ es-MX: changes_saved_msg: "¡Cambios guardados con éxito!" copy: Copiar delete: Eliminar - no_batch_actions_available: No hay acciones por lotes disponibles en esta página + none: Nada order_by: Ordenar por save_changes: Guardar cambios + today: hoy validation_errors: one: "¡Algo no está bien! Por favor, revisa el error" other: "¡Algo no está bien! Por favor, revise %{count} errores más abajo" html_validator: invalid_markup: 'contiene código HTML no válido: %{error}' - identity_proofs: - active: Activo - authorize: Sí, autorizar - authorize_connection_prompt: "¿Autorizar esta conexión criptográfica?" - errors: - failed: La conexión criptográfica falló. Por favor, inténtalo de nuevo desde %{provider}. - keybase: - invalid_token: Los tokens de Keybase son hashes de firmas y deben tener 66 caracteres hex - verification_failed: Keybase no reconoce este token como una firma del usuario de Keybase %{kb_username}. Por favor, inténtelo de nuevo desde Keybase. - wrong_user: No se puede crear una prueba para %{proving} mientras se inicia sesión como %{current}. Inicia sesión como %{proving} e inténtalo de nuevo. - explanation_html: Aquí puedes conectar criptográficamente sus otras identidades, como un perfil de Keybase. Esto permite a otras personas enviarle mensajes encriptados y confiar en el contenido que les envías. - i_am_html: Soy %{username} en %{service}. - identity: Identidad - inactive: Inactivo - publicize_checkbox: 'Y tootee esto:' - publicize_toot: "¡Comprobado! Soy %{username} en %{service}: %{url}" - remove: Eliminar prueba de la cuenta - removed: Prueba eliminada con éxito de la cuenta - status: Estado de la verificación - view_proof: Ver prueba imports: errors: over_rows_processing_limit: contiene más de %{count} filas @@ -1222,7 +1282,6 @@ es-MX: edit_profile: Editar perfil export: Exportar información featured_tags: Hashtags destacados - identity_proofs: Pruebas de identidad import: Importar import_and_export: Importar y exportar migrate: Migración de cuenta @@ -1247,18 +1306,19 @@ es-MX: other: "%{count} vídeos" boosted_from_html: Impulsado desde %{acct_link} content_warning: 'Alerta de contenido: %{warning}' + default_language: Igual que el idioma de la interfaz disallowed_hashtags: one: 'contenía un hashtag no permitido: %{tags}' other: 'contenía los hashtags no permitidos: %{tags}' + edited_at: Editado %{date} errors: in_reply_not_found: El estado al que intentas responder no existe. - language_detection: Detección automática de idioma open_in_web: Abrir en web over_character_limit: Límite de caracteres de %{max} superado pin_errors: + direct: Las publicaciones que son visibles solo para los usuarios mencionados no pueden fijarse limit: Ya has fijado el número máximo de publicaciones ownership: El toot de alguien más no puede fijarse - private: Los toots no-públicos no pueden fijarse reblog: Un boost no puede fijarse poll: total_people: @@ -1413,6 +1473,7 @@ es-MX: formats: default: "%d de %b del %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Añadir disable: Deshabilitar @@ -1440,24 +1501,31 @@ es-MX: subject: Por favor, confirma el intento de inicio de sesión title: Intento de inicio de sesión warning: + categories: + spam: Spam + violation: El contenido viola las siguientes directrices de la comunidad explanation: - disable: Mientras su cuenta esté congelada, la información de su cuenta permanecerá intacta, pero no puede realizar ninguna acción hasta que se desbloquee. - sensitive: Los archivos multimedia subidos y vinculados serán tratados como sensibles. - silence: Mientras su cuenta está limitada, sólo las personas que ya le están siguiendo verán sus toots en este servidor, y puede que se le excluya de varios listados públicos. Sin embargo, otros pueden seguirle manualmente. - suspend: Su cuenta ha sido suspendida, y todos tus toots y tus archivos multimedia subidos han sido irreversiblemente eliminados de este servidor, y de los servidores donde tenías seguidores. - get_in_touch: Puede responder a esta dirección de correo electrónico para ponerse en contacto con el personal de %{instance}. + delete_statuses: Se ha visto que algunas de tus publicaciones violan una o más directrices de la comunidad y seguidamente han sido eliminadas por los moderadores de %{instance}. Futuras violaciones pueden resultar en acciones punitivas más severas contra tu cuenta. + disable: Ya no puedes usar tu cuenta, pero tu perfil y el resto de datos permanecen intactos. Puedes solicitar una copia de seguridad de tus datos, cambiar la configuración de tu cuenta o eliminarla. + sensitive: A partir de ahora todos los archivos multimedia que subas serán marcados como sensibles y ocultos tras una advertencia que habrá que clicar. + silence: Aún puedes usar tu cuenta, pero solo las personas que te están siguiendo verán tus publicaciones en este servidor, y puedes ser excluido de varias funcionalidades de descubrimiento. Sin embargo, otras cuentas podrán empezar a seguirte manualmente. + 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: 'Específicamente, para:' + statuses: 'Publicaciones que han sido halladas contrarias las directrices:' subject: + delete_statuses: Tus publicaciones en %{acct} han sido eliminadas disable: Su cuenta %{acct} ha sido congelada none: Advertencia para %{acct} - sensitive: Tu cuenta %{acct} ha sido marcada como sensible + sensitive: Tus archivos multimedia en %{acct} se marcarán como sensibles a partir de ahora silence: Su cuenta %{acct} ha sido limitada suspend: Su cuenta %{acct} ha sido suspendida title: + delete_statuses: Publicaciones eliminadas disable: Cuenta congelada none: Advertencia - sensitive: Tu multimedia ha sido marcado como sensible + sensitive: Contenido multimedia oculto silence: Cuenta limitada suspend: Cuenta suspendida welcome: diff --git a/config/locales/es.yml b/config/locales/es.yml index 6bd81c8a2..02dee7b4f 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -99,7 +99,6 @@ es: accounts: add_email_domain_block: Poner en lista negra el dominio del correo approve: Aprobar - approve_all: Aprobar todos approved_msg: La solicitud de registro de %{username} ha sido aprobada correctamente are_you_sure: "¿Estás seguro?" avatar: Avatar @@ -114,6 +113,7 @@ es: confirm: Confirmar confirmed: Confirmado confirming: Confirmando + custom: Personalizado delete: Eliminar datos deleted: Borrado demote: Degradar @@ -153,7 +153,6 @@ es: active: Activo all: Todos pending: Pendiente - silenced: Silenciados suspended: Suspendidos title: Moderación moderation_notes: Notas de moderación @@ -171,7 +170,6 @@ es: redownload: Refrescar avatar redownloaded_msg: Se actualizó correctamente el perfil de %{username} desde el origen reject: Rechazar - reject_all: Rechazar todos rejected_msg: La solicitud de registro de %{username} ha sido rechazada con éxito remove_avatar: Eliminar el avatar remove_header: Eliminar cabecera @@ -206,12 +204,14 @@ es: silence: Silenciar silenced: Silenciado statuses: Estados + strikes: Amonestaciones previas subscribe: Suscribir 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. - time_in_queue: Esperando en cola %{time} title: Cuentas + unblock_email: Desbloquear dirección de correo + unblocked_email_msg: Se ha desbloqueado correctamente la dirección de correo de %{username} unconfirmed_email: Correo electrónico sin confirmar undo_sensitized: Desmarcar como sensible undo_silenced: Des-silenciar @@ -226,6 +226,7 @@ es: whitelisted: Añadido a la lista blanca action_logs: action_types: + approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario confirm_user: Confirmar Usuario @@ -243,6 +244,7 @@ es: destroy_domain_allow: Eliminar Permiso de Dominio destroy_domain_block: Eliminar Bloqueo de Dominio destroy_email_domain_block: Eliminar Bloqueo de Dominio de Correo Electrónico + destroy_instance: Purgar Dominio destroy_ip_block: Eliminar regla IP destroy_status: Eliminar Estado destroy_unavailable_domain: Eliminar Dominio No Disponible @@ -255,6 +257,7 @@ es: enable_user: Habilitar Usuario memorialize_account: Transformar en Cuenta Conmemorativa promote_user: Promover Usuario + reject_user: Rechazar Usuario remove_avatar_user: Eliminar Avatar reopen_report: Reabrir Reporte reset_password_user: Restablecer Contraseña @@ -263,6 +266,7 @@ es: silence_account: Silenciar Cuenta suspend_account: Suspender Cuenta unassigned_report: Desasignar Reporte + unblock_email_account: Desbloquear dirección de correo unsensitive_account: Desmarcar multimedia en tu cuenta como sensible unsilence_account: Dejar de Silenciar Cuenta unsuspend_account: Dejar de Suspender Cuenta @@ -271,6 +275,7 @@ es: update_domain_block: Actualizar el Bloqueo de Dominio update_status: Actualizar Estado actions: + 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}" confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" @@ -288,6 +293,7 @@ es: destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" + destroy_instance_html: "%{name} purgó el dominio %{target}" destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" destroy_status_html: "%{name} eliminó el estado por %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" @@ -300,6 +306,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_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}" reset_password_user_html: "%{name} reinició la contraseña del usuario %{target}" @@ -308,6 +315,7 @@ es: silence_account_html: "%{name} silenció la cuenta de %{target}" suspend_account_html: "%{name} suspendió la cuenta de %{target}" unassigned_report_html: "%{name} des-asignó el informe %{target}" + unblock_email_account_html: "%{name} ha desbloqueado la dirección de correo de %{target}" unsensitive_account_html: "%{name} desmarcó la multimedia de %{target} como sensible" unsilence_account_html: "%{name} desilenció la cuenta de %{target}" unsuspend_account_html: "%{name} reactivó la cuenta de %{target}" @@ -465,6 +473,7 @@ es: back_to_limited: Limitados back_to_warning: Advertencia by_domain: Dominio + confirm_purge: "¿Seguro que quieres eliminar permanentemente los datos de este dominio?" delivery: all: Todos clear: Limpiar errores de entrega @@ -480,6 +489,7 @@ es: delivery_available: Entrega disponible delivery_error_days: Días de error de entrega 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" @@ -490,6 +500,7 @@ es: title: Moderación private_comment: Comentario privado public_comment: Comentario público + purge: Purgar title: Instancias conocidas total_blocked_by_us: Bloqueado por nosotros total_followed_by_them: Seguidos por ellos @@ -519,8 +530,6 @@ es: title: Crear nueva regla IP no_ip_block_selected: No se han cambiado reglas IP ya que no se ha seleccionado ninguna title: Reglas IP - pending_accounts: - title: Cuentas pendientes (%{count}) relationships: title: Relaciones de %{acct} relays: @@ -542,32 +551,44 @@ es: report_notes: created_msg: "¡El registro de la denuncia se ha creado correctamente!" destroyed_msg: "¡El registro de la denuncia se ha borrado correctamente!" + today_at: Hoy a las %{time} reports: account: notes: one: "%{count} nota" other: "%{count} notas" - reports: - one: "%{count} informe" - other: "%{count} informes" + action_log: Registro de auditoría action_taken_by: Acción tomada por + actions: + other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada. + 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:' + add_to_report: Añadir más al reporte are_you_sure: "¿Estás seguro?" assign_to_self: Asignármela a mí assigned: Moderador asignado by_target_domain: Dominio de la cuenta reportada + category: Categoría + category_description_html: La razón por la que se reportó esta cuenta o contenido será citada en las comunicaciones con la cuenta reportada comment: none: Ninguno + comment_description_html: 'Para proporcionar más información, %{name} escribió:' created_at: Denunciado + delete_and_resolve: Eliminar y resolver forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resuelto mark_as_unresolved: Marcar como no resuelto + no_one_assigned: Nadie notes: create: Añadir una nota create_and_resolve: Resolver con una nota create_and_unresolve: Reabrir con una nota delete: Eliminar 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 reopen: Reabrir denuncia report: 'Reportar #%{id}' reported_account: Cuenta reportada @@ -575,11 +596,14 @@ es: resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" status: Estado + statuses: Contenido reportado + statuses_description_html: El contenido ofensivo se citará en la comunicación con la cuenta reportada target_origin: Origen de la cuenta reportada title: Reportes unassign: Desasignar unresolved: No resuelto updated_at: Actualizado + view_profile: Ver perfil rules: add_new: Añadir norma delete: Eliminar @@ -681,15 +705,13 @@ es: destroyed_msg: "¡Carga del sitio eliminada con éxito!" statuses: back_to_account: Volver a la cuenta + back_to_report: Volver a la página del reporte batch: - delete: Eliminar - nsfw_off: Marcar contenido como no sensible - nsfw_on: Marcar contenido como sensible + remove_from_report: Eliminar del reporte + report: Reporte deleted: Eliminado - failed_to_execute: Falló al ejecutar media: title: Multimedia - no_media: No hay multimedia no_status_selected: No se cambió ningún estado al no seleccionar ninguno title: Estado de las cuentas with_media: Con multimedia @@ -702,21 +724,51 @@ es: sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq tags: - accounts_today: Usos únicos de hoy - accounts_week: Usos únicos esta semana - breakdown: Desglose del consumo actual por fuentes - last_active: Última actividad - most_popular: Más popular - most_recent: Más reciente - name: Hashtag review: Estado de revisión - reviewed: Revisado - title: Etiquetas - trending_right_now: En tendencia ahora mismo - unique_uses_today: "%{count} publicando hoy" - unreviewed: No revisado updated_msg: Hashtags actualizados exitosamente title: Administración + trends: + allow: Permitir + approved: Aprobadas + disallow: No permitir + links: + allow: Permitir enlace + 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 + preview_card_providers: + allowed: Los enlaces de este medio pueden ser tendencia + rejected: Los enlaces de este medio no pueden ser tendencia + title: Medios + rejected: Rechazadas + tags: + current_score: Puntuación actual %{score} + dashboard: + tag_accounts_measure: usos únicos + tag_languages_dimension: Idiomas principales + tag_servers_dimension: Servidores principales + tag_servers_measure: diferentes servidores + tag_uses_measure: usos totales + listable: Pueden ser recomendadas + not_listable: No serán recomendadas + not_trendable: No aparecerán en tendencias + not_usable: No pueden ser usadas + peaked_on_and_decaying: Alcanzó el pico en %{date}, ahora decreciendo + title: Etiquetas en tendencia + trendable: Pueden aparecer en tendencias + 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 delete: Borrar @@ -731,9 +783,16 @@ es: body: "%{reporter} ha reportado a %{target}" body_remote: Alguien de %{domain} a reportado a %{target} subject: Nuevo reporte para la %{instance} (#%{id}) - new_trending_tag: - body: 'El hashtag #%{name} está en tendencia hoy, pero no ha sido revisado previamente. No se mostrará públicamente a menos que lo permita, o simplemente guarde el formulario como para no volver a ver esto.' - subject: Nuevo hashtag para revisión en %{instance} (#%{name}) + new_trending_links: + body: Los siguientes enlaces están en tendencia hoy, pero sus medios de origen no han sido revisados previamente. No se mostrarán públicamente a menos que los apruebes. No se generarán más notificaciones de estos medios. + no_approved_links: Actualmente no hay enlaces en tendencia aprobados. + requirements: El enlace en tendencia aprobado más bajo actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}. + subject: Nuevos enlaces en tendencia esperando ser revisados en %{instance} + new_trending_tags: + body: 'Las siguientes etiquetas están en tendencia hoy, pero no han sido revisadas previamente. No se mostrarán públicamente a menos que las apruebes:' + no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. + requirements: La etiqueta en tendencia aprobada más baja actualmente es "%{lowest_tag_name}" con una puntuación de %{lowest_tag_score}. + subject: Nuevas etiquetas en tendencia esperando ser revisadas en %{instance} aliases: add_new: Crear alias created_msg: El nuevo alias se ha creado correctamente. Ahora puedes empezar el traslado desde la cuenta antigua. @@ -785,6 +844,7 @@ es: invalid_reset_password_token: El token de reinicio de contraseña es inválido o expiró. Por favor pide uno nuevo. link_to_otp: Introduce un código de dos factores desde tu teléfono o un código de recuperación link_to_webauth: Utilice su dispositivo de clave de seguridad + log_in_with: Iniciar sesión con login: Iniciar sesión logout: Cerrar sesión migrate_account: Mudarse a otra cuenta @@ -929,7 +989,7 @@ es: empty: No tienes filtros. title: Filtros new: - title: Añadir un nuevo filtro + title: Añadir nuevo filtro footer: developers: Desarrolladores more: Mas… @@ -940,34 +1000,15 @@ es: changes_saved_msg: "¡Cambios guardados con éxito!" copy: Copiar delete: Eliminar - no_batch_actions_available: No hay acciones por lotes disponibles en esta página + none: Nada order_by: Ordenar por save_changes: Guardar cambios + today: hoy validation_errors: one: "¡Algo no está bien! Por favor, revisa el error" other: "¡Algo no está bien! Por favor, revise %{count} errores más abajo" html_validator: invalid_markup: 'contiene código HTML no válido: %{error}' - identity_proofs: - active: Activo - authorize: Sí, autorizar - authorize_connection_prompt: "¿Autorizar esta conexión criptográfica?" - errors: - failed: La conexión criptográfica falló. Por favor, inténtalo de nuevo desde %{provider}. - keybase: - invalid_token: Los tokens de Keybase son hashes de firmas y deben tener 66 caracteres hex - verification_failed: Keybase no reconoce este token como una firma del usuario de Keybase %{kb_username}. Por favor, inténtelo de nuevo desde Keybase. - wrong_user: No se puede crear una prueba para %{proving} mientras se inicia sesión como %{current}. Inicia sesión como %{proving} e inténtalo de nuevo. - explanation_html: Aquí puedes conectar criptográficamente sus otras identidades, como un perfil de Keybase. Esto permite a otras personas enviarle mensajes encriptados y confiar en el contenido que les envías. - i_am_html: Soy %{username} en %{service}. - identity: Identidad - inactive: Inactivo - publicize_checkbox: 'Y tootee esto:' - publicize_toot: "¡Comprobado! Soy %{username} en %{service}: %{url}" - remove: Eliminar prueba de la cuenta - removed: Prueba eliminada con éxito de la cuenta - status: Estado de la verificación - view_proof: Ver prueba imports: errors: over_rows_processing_limit: contiene más de %{count} filas @@ -1183,6 +1224,9 @@ es: reply: proceed: Proceder a responder prompt: 'Quieres responder a esta publicación:' + reports: + errors: + invalid_rules: no hace referencia a reglas válidas scheduled_statuses: over_daily_limit: Ha superado el límite de %{limit} publicaciones programadas para ese día over_total_limit: Ha superado el límite de %{limit} publicaciones programadas @@ -1241,7 +1285,6 @@ es: edit_profile: Editar perfil export: Exportar información featured_tags: Hashtags destacados - identity_proofs: Pruebas de identidad import: Importar import_and_export: Importar y exportar migrate: Migración de cuenta @@ -1266,18 +1309,19 @@ es: other: "%{count} vídeos" boosted_from_html: Impulsado desde %{acct_link} content_warning: 'Alerta de contenido: %{warning}' + default_language: Igual que el idioma de la interfaz disallowed_hashtags: one: 'contenía un hashtag no permitido: %{tags}' other: 'contenía los hashtags no permitidos: %{tags}' + edited_at: Editado %{date} errors: in_reply_not_found: El estado al que intentas responder no existe. - language_detection: Detección automática de idioma open_in_web: Abrir en web over_character_limit: Límite de caracteres de %{max} superado pin_errors: + direct: Las publicaciones que son visibles solo para los usuarios mencionados no pueden fijarse limit: Ya has fijado el número máximo de publicaciones ownership: La publicación de otra persona no puede fijarse - private: Las publicaciones no públicas no pueden fijarse reblog: Un boost no puede fijarse poll: total_people: @@ -1432,6 +1476,7 @@ es: formats: default: "%d de %b del %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Añadir disable: Deshabilitar @@ -1459,24 +1504,31 @@ es: subject: Por favor, confirma el intento de inicio de sesión title: Intento de inicio de sesión warning: + categories: + spam: Spam + violation: El contenido viola las siguientes directrices de la comunidad explanation: - disable: Mientras su cuenta esté congelada, la información de su cuenta permanecerá intacta, pero no puede realizar ninguna acción hasta que se desbloquee. - sensitive: Los archivos multimedia subidos y vinculados serán tratados como sensibles. - silence: Mientras su cuenta está limitada, sólo las personas que ya te están siguiendo verán tus publicaciones en este servidor, y puede que se te excluya de varios listados públicos. Sin embargo, otros pueden seguirte manualmente. - suspend: Su cuenta ha sido suspendida, y todas tus publicaciones y tus archivos multimedia subidos han sido irreversiblemente eliminados de este servidor, y de los servidores donde tenías seguidores. - get_in_touch: Puede responder a esta dirección de correo electrónico para ponerse en contacto con el personal de %{instance}. + delete_statuses: Se ha visto que algunas de tus publicaciones violan una o más directrices de la comunidad y seguidamente han sido eliminadas por los moderadores de %{instance}. Futuras violaciones pueden resultar en acciones punitivas más severas contra tu cuenta. + disable: Ya no puedes usar tu cuenta, pero tu perfil y el resto de datos permanecen intactos. Puedes solicitar una copia de seguridad de tus datos, cambiar la configuración de tu cuenta o eliminarla. + sensitive: A partir de ahora todos los archivos multimedia que subas serán marcados como sensibles y ocultos tras una advertencia que habrá que clicar. + silence: Aún puedes usar tu cuenta, pero solo las personas que te están siguiendo verán tus publicaciones en este servidor, y puedes ser excluido de varias funcionalidades de descubrimiento. Sin embargo, otras cuentas podrán empezar a seguirte manualmente. + 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: 'Específicamente, para:' + statuses: 'Publicaciones que han sido halladas contrarias las directrices:' subject: + delete_statuses: Tus publicaciones en %{acct} han sido eliminadas disable: Su cuenta %{acct} ha sido congelada none: Advertencia para %{acct} - sensitive: Tu cuenta %{acct} ha sido marcada como sensible + sensitive: Tus archivos multimedia en %{acct} se marcarán como sensibles a partir de ahora silence: Su cuenta %{acct} ha sido limitada suspend: Su cuenta %{acct} ha sido suspendida title: + delete_statuses: Publicaciones eliminadas disable: Cuenta congelada none: Advertencia - sensitive: Tu multimedia ha sido marcado como sensible + sensitive: Contenido multimedia oculto silence: Cuenta limitada suspend: Cuenta suspendida welcome: diff --git a/config/locales/et.yml b/config/locales/et.yml index 3fcca0ad5..1060dda35 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -91,7 +91,6 @@ et: accounts: add_email_domain_block: Keela e-posti domeen approve: Kinnita - approve_all: Kinnita kõik are_you_sure: Olete kindel? avatar: Profiilipilt by_domain: Domeen @@ -135,7 +134,6 @@ et: active: Aktiivne all: Kõik pending: Ootel - silenced: Vaigistatud suspended: Peatatud title: Moderatsioon moderation_notes: Moderatsiooniteated @@ -152,7 +150,6 @@ et: push_subscription_expires: PuSH tellimus aegub redownload: Värskenda profiili reject: Hülga - reject_all: Hülga kõik remove_avatar: Kustuta profiilipilt remove_header: Kustuta päis resend_confirmation: @@ -180,7 +177,6 @@ et: statuses: Staatuseid subscribe: Telli suspended: Peatatud - time_in_queue: Ootab järjekorras %{time} title: Kontod unconfirmed_email: Kinnitamata e-post undo_silenced: Võta vaigistus tagasi @@ -369,8 +365,6 @@ et: available: Saadaval expired: Aegunud title: Kutsed - pending_accounts: - title: Ootel olevad kasutajad (%{count}) relationships: title: "%{acct}-i suhted" relays: @@ -397,9 +391,6 @@ et: notes: one: "%{count} märkus" other: "%{count} märkust" - reports: - one: "%{count} teavitus" - other: "%{count} teavitust" action_taken_by: Meetmeid kasutanud are_you_sure: Olete kindel? assign_to_self: Määra mulle @@ -518,32 +509,14 @@ et: destroyed_msg: Üleslaetud fail edukalt kustutatud! statuses: back_to_account: Tagasi konto lehele - batch: - delete: Kustuta - nsfw_off: Märgi kui mitte tundlik - nsfw_on: Märgi kui tundlik deleted: Kustutatud - failed_to_execute: Täitmine ebaõnnestus media: title: Meedia - no_media: Meedia puudub no_status_selected: Mitte ühtegi staatust muudeti sest midagi polnud valitud title: Konto staatused with_media: Meediaga tags: - accounts_today: Unikaalseid kasutusi täna - accounts_week: Unikaalseid kasutusi see nädal - breakdown: Tänane kasutus allikate kohta - last_active: Viimati aktiivne - most_popular: Kõige populaarsemad - most_recent: Viimased - name: Silt review: Staatuse ülevaade - reviewed: Ülevaadatud - title: Sildid - trending_right_now: Praegu populaarsed - unique_uses_today: "%{count} inimest postitavad täna" - unreviewed: Üle vaatamata updated_msg: Sildi sätted edukalt uuendatud title: Administreerimine warning_presets: @@ -559,9 +532,6 @@ et: body: "%{reporter} teavitas kasutajast %{target}" body_remote: Keegi domeenist %{domain} teavitas kasutajast %{target} subject: Uus teavitus %{instance}-ile (#%{id}) - new_trending_tag: - body: Silt %{name} on täna trendikas, aga pole eelnevalt üle vaadatud. Seda ei näidata avalikult, välja arvatud juhul, kui Te ise seda lubate või lihtsalt salvestage vorm nagu see on ning Te ei kuule sellest enam kunagi. - subject: Uus silt valmis ülevaatluseks serveril %{instance} (#%{name}) aliases: add_new: Loo teine nimi created_msg: Teine nimi on edukalt loodud. Te saate nüüd alustada kolimist vanalt kontolt. @@ -752,7 +722,6 @@ et: changes_saved_msg: Muudatuste salvestamine õnnestus! copy: Kopeeri delete: Kustuta - no_batch_actions_available: Komplekttegevused pole sellel lehel saadaval order_by: Järjesta save_changes: Salvesta muudatused validation_errors: @@ -760,26 +729,6 @@ et: other: Midagi pole ikka õigesti! Palun vaadake all olevad %{count} veateadet üle html_validator: invalid_markup: 'sisaldab valet HTMLi süntaksi: %{error}' - identity_proofs: - active: Aktiivne - authorize: Jah, luba - authorize_connection_prompt: Luba see krüptograafiline ühendus? - errors: - failed: Krüptograafiline ühendus ebaõnnestus. Palun proovi uuesti %{provider}-ist. - keybase: - invalid_token: Keybase võtmed on allkirjade hashid ja peavad olema 66 hex tähemärki - verification_failed: Keybase ei tunnista seda võtit kui kasutaja %{kb_username} omand. Palun proovige uuesti Keybasest. - wrong_user: Ei saa luua tõendit kontole %{proving} kui olete sisseloginud kui %{current}. Logige sisse kui %{proving} ja proovige uuesti. - explanation_html: Siin saate luua krüptograafilisi ühendusi oma teiste identiteetidega, nagu näiteks Keybase profiiliga. See võimaldab teistel kasutajatel saata Teile krüptitud sõnumeid ja usaldada sisu, mis Teie saadate neile. - i_am_html: Ma olen %{username} teenusel %{service}. - identity: Identiteet - inactive: Passiivne - publicize_checkbox: 'Ja tuututa seda:' - publicize_toot: 'See on tõestatud! Ma olen %{username} teenusel %{service}: %{url}' - remove: Eemalda isikutõend kontolt - removed: Isikutõendi eemaldamine oli edukas - status: Kinnituse staatus - view_proof: Vaata tõendit imports: modes: merge: Lõimi @@ -991,7 +940,6 @@ et: edit_profile: Muuda profiili export: Andmete eksportimine featured_tags: Esile toodud sildid - identity_proofs: Isikutõendid import: Impordi import_and_export: Import / eksport migrate: Konto migreerumine @@ -1013,13 +961,11 @@ et: other: 'sisaldab ebasobivaid silte: %{tags}' errors: in_reply_not_found: Staatus, millele üritate vastata, ei näi enam eksisteerivat. - language_detection: Automaatselt tuvasta keel open_in_web: Ava veebis over_character_limit: tähtmärkide limiit %{max} ületatud pin_errors: limit: Te olete juba maksimum arvu lubatud tuututusi kinnitanud ownership: Kellegi teise tuututust ei saa kinnitada - private: Privaatset tuututust ei saa kinnitada reblog: Upitust ei saa kinnitada poll: total_people: @@ -1070,13 +1016,7 @@ et: subject: Teie arhiiv on allalaadimiseks valmis title: Arhiivi väljavõte warning: - explanation: - disable: Kuniks Teie konto on lukus, ei saa Te teha sellega ühtegi tegevust kuni see on lukust lahti tehtud. - silence: Kuniks Teie konto on limiteeritud, ainult need inimesed, kes Teid juba jälgivad, näevad Teie tuututusi sellel serveril ning Teid jäetakse välja avalikest nimekirjadest. Sellest hoolimata võivad inimesed Teid siiski jälgida. - suspend: Teie konto on peatatud ning kõik Teie tuututused ja üleslaetud meediafailid on jäädavalt kustutatud sellelt serverilt ning serveritelt, kus Teil oli jälgijad. - get_in_touch: Te saate sellele e-kirjale vastata, et võtta ühendust %{instance}-i personaliga. review_server_policies: Vaadake üle serveri eeskirju - statuses: 'Täpsemalt:' subject: disable: Teie konto %{acct} on lukustatud none: Hoiatus kasutajale %{acct} diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 7fd8fdd93..e9c9320e2 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -1,7 +1,7 @@ --- eu: about: - about_hashtag_html: Hauek <strong>#%{hashtag}</strong> traola duten bidalketa publikoak dira. Fedibertsoko edozein kontu baduzu harremanetan jarri zaitezke. + about_hashtag_html: Hauek <strong>#%{hashtag}</strong> traola duten bidalketa publikoak dira. Fedibertsoko edozein kontu baduzu haiekin elkarrekintza izan dezakezu. about_mastodon_html: 'Etorkizuneko sare soziala: ez iragarkirik eta ez zelatatze korporatiborik, diseinu etikoa eta deszentralizazioa! Izan zure datuen jabea Mastodonekin!' about_this: Honi buruz active_count_after: aktibo @@ -97,7 +97,6 @@ eu: accounts: add_email_domain_block: Sartu domeinua zerrenda beltzean approve: Onartu - approve_all: Onartu denak approved_msg: "%{username} erabiltzailearen erregistratzeko eskaera behar bezala onartu da" are_you_sure: Ziur zaude? avatar: Abatarra @@ -117,6 +116,7 @@ eu: demote: Jaitsi mailaz destroyed_msg: "%{username} erabiltzailearen datuak behin betiko ezabatzeko ilaran daude" disable: Desgaitu + disable_sign_in_token_auth: Desgaitu e-posta token autentifikazioa disable_two_factor_authentication: Desgaitu 2FA disabled: Desgaituta display_name: Pantaila-izena @@ -125,6 +125,7 @@ eu: email: E-mail email_status: Posta elektronikoaren egoera enable: Gaitu + enable_sign_in_token_auth: Gaitu e-posta token autentifikazioa enabled: Gaituta enabled_msg: "%{username} kontua behar bezala desblokeatu da" followers: Jarraitzaileak @@ -149,7 +150,6 @@ eu: active: Aktiboa all: Denak pending: Zain - silenced: Isilarazita suspended: Kanporatua title: Moderazioa moderation_notes: Moderazio oharrak @@ -167,7 +167,6 @@ eu: redownload: Freskatu profila redownloaded_msg: "%{username} erabiltzailearen profila behar bezala freskatu da jatorritik" reject: Ukatu - reject_all: Ukatu denak rejected_msg: "%{username} erabiltzailearen izen emate eskaera behar bezala ukatu da" remove_avatar: Kendu abatarra remove_header: Kendu goiburua @@ -189,6 +188,10 @@ eu: search: Bilatu search_same_email_domain: E-mail domeinu bera duten beste erabiltzailean search_same_ip: IP bera duten beste erabiltzaileak + security_measures: + only_password: Soilik pasahitza + password_and_2fa: Pasahitza eta 2FA + password_and_sign_in_token: Pasahitza eta e-posta tokena sensitive: Hunkigarria sensitized: hunkigarri gisa markatua shared_inbox_url: Partekatutako sarrera ontziaren URL-a @@ -202,8 +205,9 @@ eu: 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. - time_in_queue: Kolan zain %{time} title: Kontuak + unblock_email: Desblokeatu eposta helbidea + unblocked_email_msg: Behar bezala desblokeatu da %{username} eposta helbidea unconfirmed_email: Baieztatu gabeko e-mail helbidea undo_sensitized: Desegin hunkigarria undo_silenced: Utzi isilarazteari @@ -218,6 +222,7 @@ eu: whitelisted: Zerrenda zurian action_logs: action_types: + approve_user: Onartu erabiltzailea assigned_to_self_report: Esleitu salaketa change_email_user: Aldatu erabiltzailearen e-maila confirm_user: Berretsi erabiltzailea @@ -235,16 +240,20 @@ eu: destroy_domain_allow: Ezabatu domeinu baimena destroy_domain_block: Ezabatu domeinu blokeoa destroy_email_domain_block: Ezabatu e-mail domeinu blokeoa + destroy_instance: Ezabatu betiko domeinua destroy_ip_block: Ezabatu IP araua destroy_status: Ezabatu bidalketa destroy_unavailable_domain: Ezabatu eskuragarri ez dagoen domeinua disable_2fa_user: Desgaitu 2FA disable_custom_emoji: Desgaitu emoji pertsonalizatua + disable_sign_in_token_auth_user: Desgaitu e-posta token autentifikazioa erabiltzailearentzat disable_user: Desgaitu erabiltzailea enable_custom_emoji: Gaitu emoji pertsonalizatua + enable_sign_in_token_auth_user: Gaitu e-posta token autentifikazioa erabiltzailearentzat enable_user: Gaitu erabiltzailea memorialize_account: Bihurtu kontua oroigarri promote_user: Igo erabiltzailea mailaz + reject_user: Baztertu erabiltzailea remove_avatar_user: Kendu abatarra reopen_report: Berrireki txostena reset_password_user: Berrezarri pasahitza @@ -253,6 +262,7 @@ eu: silence_account: Isilarazi kontua suspend_account: Kanporatu kontua unassigned_report: Kendu txostenaren esleipena + unblock_email_account: Desblokeatu eposta helbidea unsensitive_account: Utzi zure kontuko multimedia hunkigarri bezala markatzeari unsilence_account: Utzi kontua isilarazteari unsuspend_account: Atzera bota kontua kanporatzea @@ -261,6 +271,7 @@ eu: update_domain_block: Eguneratu domeinu-blokeoa update_status: Eguneratu bidalketa actions: + 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" confirm_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea berretsi du" @@ -278,16 +289,20 @@ eu: destroy_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federatzea debekatu du" destroy_domain_block_html: "%{name} erabiltzaileak %{target} domeinua desblokeatu du" destroy_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua desblokeatu du" + destroy_instance_html: "%{name} erabiltzaileak %{target} domeinua betiko ezabatu du" destroy_ip_block_html: "%{name} erabiltzaileak %{target} IParen araua ezabatu du" destroy_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa kendu du" destroy_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketari berrekin dio" disable_2fa_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen bi faktoreko autentifikazioa desgaitu du" disable_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a desgaitu du" + disable_sign_in_token_auth_user_html: "%{name} erabiltzaileak e-posta token autentifikazioa desgaitu du %{target} helburuan" disable_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen saioa desgaitu du" enable_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a gaitu du" + enable_sign_in_token_auth_user_html: "%{name} erabiltzaileak e-posta token autentifikazioa gaitu du %{target} helburuan" 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_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" reset_password_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen pasahitza berrezarri du" @@ -296,6 +311,7 @@ eu: silence_account_html: "%{name} erabiltzaileak %{target} kontua isilarazi du" suspend_account_html: "%{name} erabiltzaileak %{target} kontua kanporatu du" unassigned_report_html: "%{name} erabiltzaileak %{target} txostenaren esleipena atzera bota du" + unblock_email_account_html: "%{name} erabiltzaileak %{target} eposta helbidea desblokeatu du" unsensitive_account_html: "%{name} erabiltzaileak %{target} erabiltzailearen multimedia hunkigarri bezala markatzeari utzi dio" unsilence_account_html: "%{name} erabiltzaileak %{target} kontua isilarazteari utzi dio" unsuspend_account_html: "%{name} erabiltzaileak %{target} kontuaren kanporaketa atzera bota du" @@ -359,9 +375,28 @@ eu: updated_msg: Emoji-a ongi eguneratu da! upload: Igo dashboard: + active_users: erabiltzaile aktibo + interactions: elkarrekintza + 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 space: Espazio erabilera title: Kontrol panela + top_languages: Hizkuntza aktiboenak + top_servers: Zerbitzari aktiboenak + website: Webgunea domain_allows: add_new: Sartu domeinua zerrenda zurian created_msg: Domeinua ongi sartu da zerrenda zurian @@ -434,6 +469,7 @@ eu: back_to_limited: Mugatua back_to_warning: Abisua by_domain: Domeinua + confirm_purge: Ziur zaude domeinu honen datuak behin betiko ezabatu nahi dituzula? delivery: all: Guztiak clear: Garbitu banaketa erroreak @@ -449,6 +485,7 @@ eu: delivery_available: Bidalketa eskuragarri dago delivery_error_days: Banaketa errore egunak delivery_error_hint: Banaketa ezin bada %{count} egunean egin, banaezin bezala markatuko da automatikoki. + destroyed_msg: "%{domain} domeinuko datuak berehala ezabatzeko ilaran daude orain." empty: Ez da domeinurik aurkitu. known_accounts: one: Kontu ezagun %{count} @@ -459,6 +496,7 @@ eu: title: Moderazioa private_comment: Iruzkin pribatua public_comment: Iruzkin publikoa + purge: Ezabatu betiko title: Federazioa total_blocked_by_us: Guk blokeatuta total_followed_by_them: Haiek jarraitua @@ -488,8 +526,6 @@ eu: title: Sortu IP arau berria no_ip_block_selected: Ez da IP araurik aldatu, ez delako batere hautatu title: IP arauak - pending_accounts: - title: Zain dauden kontuak (%{count}) relationships: title: "%{acct}(e)ren erlazioak" relays: @@ -516,9 +552,6 @@ eu: notes: one: Ohar %{count} other: "%{count} ohar" - reports: - one: Txosten %{count} - other: "%{count} txosten" action_taken_by: Neurrien hartzailea are_you_sure: Ziur zaude? assign_to_self: Esleitu niri @@ -544,6 +577,7 @@ eu: resolved: Konponduta resolved_msg: Salaketa ongi konpondu da! status: Mezua + target_origin: Salatutako kontuaren jatorria title: Salaketak unassign: Kendu esleipena unresolved: Konpondu gabea @@ -649,15 +683,9 @@ eu: destroyed_msg: Guneko igoera ongi ezabatu da! statuses: back_to_account: Atzera kontuaren orrira - batch: - delete: Ezabatu - nsfw_off: Markatu ez hunkigarri gisa - nsfw_on: Markatu hunkigarri gisa deleted: Ezabatuta - failed_to_execute: Ezin izan da burutu media: title: Multimedia - no_media: Multimediarik ez no_status_selected: Ez da bidalketarik aldatu ez delako bidalketarik aukeratu title: Kontuaren bidalketak with_media: Multimediarekin @@ -670,21 +698,51 @@ eu: sidekiq_process_check: message_html: Ez da ari Sidekiq prozesurik exekutatzen %{value} ilad(et)an. Egiaztatu Sidekiq konfigurazioa tags: - accounts_today: Erabilera bakanak gaur - accounts_week: Erabilera bakanak aste honetan - breakdown: Gaurko erabilera iturriaren arabera - last_active: Azkenekoz aktiboa - most_popular: Erabilienak - most_recent: Azkenak - name: Traola review: Berrikusketaren egoera - reviewed: Berrikusita - title: Traolak - trending_right_now: Joera orain - unique_uses_today: "%{count} bidalketa gaur" - unreviewed: Berrikusi gabe updated_msg: Traola-ezarpenak ongi eguneratu dira title: Administrazioa + trends: + allow: Onartu + approved: Onartua + disallow: Ukatu + links: + allow: Onartu esteka + 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 + preview_card_providers: + allowed: Argitaratzaile honen estekak joera izan daitezke + rejected: Argitaratzaile honen estekek ezin dute joera izan + title: Argitaratzaileak + rejected: Ukatua + tags: + current_score: Uneko emaitza%{score} + dashboard: + tag_accounts_measure: aldiz + tag_languages_dimension: Hizkuntza nagusiak + tag_servers_dimension: Zerbitzari nagusiak + tag_servers_measure: zerbitzari desberdin + tag_uses_measure: erabilera guztira + listable: Gomendatu daiteke + not_listable: Ez da gomendatuko + not_trendable: Ez da joeretan agertuko + not_usable: Ezin da erabili + peaked_on_and_decaying: "%{date} datan jo du goia, orain beherantz" + title: Traolak joeran + trendable: Joeretan agertuko da + 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 delete: Ezabatu @@ -699,9 +757,16 @@ eu: body: "%{reporter}(e)k %{target} salatu du" body_remote: "%{domain} domeinuko norbaitek %{target} salatu du" subject: Salaketa berria %{instance} instantzian (#%{id}) - new_trending_tag: - body: "#%{name} traola joeran dago gaur, baina ez da oraindik errebisatu. Ez da publikoki agertuko baimentzen ez baduzu, edo gorde inprimakia dagoen moduan eta ez duzu berriro honi buruz entzungo." - subject: Traola berria errebisatzeko %{instance} instantzian (#%{name}) + new_trending_links: + body: Ondorengo estekak dira joera gaur, baina beren argitaratzaileak ez dira berrikusi aurretik. Ez dira bistaratuko publikoki onartu ezean. Ez da sortuko argitaratzaile hauen jakinarazpen gehiago. + no_approved_links: Ez dago onartutako esteken joerarik une honetan. + requirements: Onartutako esteken joera baxuena %{lowest_link_title} da une honetan %{lowest_link_score} emaitzarekin. + subject: Esteken joera gehiago daude berrikusteko %{instance} instantzian + new_trending_tags: + body: 'Ondorengo traolak dira joera gaur, baina ez dira berrikusi aurretik. Ez dira bistaratuko publikoki onartzen ez badituzu:' + no_approved_tags: Ez dago onartutako traolen joerarik une honetan. + requirements: Onartutako traolen joera baxuena %{lowest_tag_name} da une honetan %{lowest_tag_score} emaitzarekin. + subject: Traolen joera gehiago daude berrikusteko %{instance} instantzian aliases: add_new: Sortu ezizena created_msg: Ongi sortu da ezizena. Orain kontu zaharretik migratzen hasi zaitezke. @@ -908,34 +973,15 @@ eu: changes_saved_msg: Aldaketak ongi gorde dira! copy: Kopiatu delete: Ezabatu - no_batch_actions_available: Ez dago ekintza masiborik orri honetan eskuragarri + none: Bat ere ez order_by: Ordenatze-irizpidea save_changes: Gorde aldaketak + today: gaur validation_errors: one: Zerbait ez dabil ongi! Egiaztatu beheko errorea mesedez other: Zerbait ez dabil ongi! Egiaztatu beheko %{count} erroreak mesedez html_validator: invalid_markup: 'HTML markaketa baliogabea du: %{error}' - identity_proofs: - active: Aktiboa - authorize: Bai, baimendu - authorize_connection_prompt: Baimendu zifratutako konexio hau? - errors: - failed: Zifratutako konexioak huts egin du. Saiatu berriro %{provider} hornitzailetik. - keybase: - invalid_token: Keybase-ko token-ak sinaduren hash-ak dira eta 66 hex karakterekoak izan beha dira - verification_failed: Keybase-k ez du token hau Keybase-ko %{kb_username} erabiltzailearen sinaduratzat onartzen. Saiatu berriro Keybase-tik. - wrong_user: Ezin izan da %{proving} erabiltzailearentzat froga sortu %{current} gisa saioa hasita. Hasi saioa %{proving} erabilita eta saiatu berriro. - explanation_html: Hemen modu zifratuan konektatu ditzakezu zure beste identitateak, esaterako Keybase profila. Honek beste jendeak zuri zifratutako mezuak bidaltzea ahalbidetzen du, eta zuk beraiei bidalitako edukia fidagarritzat jotzea. - i_am_html: "%{username} erabiltzailea naiz %{service} zerbitzuan." - identity: Identitatea - inactive: Ez aktiboa - publicize_checkbox: 'Eta argitaratu bidalketa hau:' - publicize_toot: 'Frogatua dago! %{username} erabiltzailea naiz %{service} zerbitzuan: %{url}' - remove: Kendu froga kontutik - removed: Ongi kendu da froga kontutik - status: Egiaztatze egoera - view_proof: Ikusi froga imports: errors: over_rows_processing_limit: "%{count} lerro baina gehiago ditu" @@ -1209,7 +1255,6 @@ eu: edit_profile: Aldatu profila export: Datuen esportazioa featured_tags: Nabarmendutako traolak - identity_proofs: Identitate frogak import: Inportazioa import_and_export: Inportatu eta esportatu migrate: Kontuaren migrazioa @@ -1217,6 +1262,7 @@ eu: preferences: Hobespenak profile: Profila relationships: Jarraitutakoak eta jarraitzaileak + statuses_cleanup: Bidalketak automatikoki ezabatzea two_factor_authentication: Bi faktoreetako autentifikazioa webauthn_authentication: Segurtasun gakoak statuses: @@ -1238,13 +1284,11 @@ eu: other: 'debekatutako traola hauek zituen: %{tags}' errors: in_reply_not_found: Erantzuten saiatu zaren bidalketa antza ez da existitzen. - language_detection: Antzeman hizkuntza automatikoki open_in_web: Ireki web-ean over_character_limit: "%{max}eko karaktere muga gaindituta" pin_errors: limit: Gehienez finkatu daitekeen bidalketa kopurua finkatu duzu jada ownership: Ezin duzu beste norbaiten bidalketa bat finkatu - private: Ezin dira publikoak ez diren bidalketak finkatu reblog: Bultzada bat ezin da finkatu poll: total_people: @@ -1268,6 +1312,40 @@ eu: public_long: Edonork ikusi dezake unlisted: Zerrendatu gabea unlisted_long: Edonork ikusi dezake, baina ez da denbora-lerro publikoetan agertzen + statuses_cleanup: + enabled: Ezabatu bidalketa zaharrak automatikoki + enabled_hint: Zure bidalketa zaharrak automatikoki ezabatzen ditu zehazturiko denbora mugara iristean, beheko baldintza bat betetzen ez bada + exceptions: Salbuespenak + explanation: Bidalketak ezabatzea eragiketa garestia denez, mantso egiten da, zerbitzaria lasai dagoenean. Horregatik, zure bidalketak denbora mugara iristen direnetik ezabatu arte tarte bat igaro daiteke. + ignore_favs: Ez ezabatu gogokoak + ignore_reblogs: Ez ezabatu bultzadak + interaction_exceptions: Elkarrekintzetan oinarritutako salbuespenak + interaction_exceptions_explanation: Kontuan izan ezin dela ziurtatu ez direnik ezabatuko gogoko edo bultzaden muga gainditzen duten bidalketak, ondoren mugatik behera gelditzen badira ere. + keep_direct: Mantendu mezu zuzenak + keep_direct_hint: Zure mezu zuzenak ez dira ezabatuko + keep_media: Mantendu multimediak dituzten bidalketak + keep_media_hint: Multimedia eranskinak dituzten zure bidalketak ez dira ezabatuko + keep_pinned: Mantendu finkatutako bidalketak + keep_pinned_hint: Zure finkatutako bidalketak ez dira ezabatuko + keep_polls: Mantendu inkestak + keep_polls_hint: Zure inkestak ez dira ezabatuko + keep_self_bookmark: Mantendu laster-marka duten bidalketak + keep_self_bookmark_hint: Laster-marka egin diezun zure bidalketak ez dira ezabatuko + keep_self_fav: Mantendu gogoko bidalketak + keep_self_fav_hint: Gogoko bezala markatu dituzun zure bidalketak ez ditu ezabatuko + min_age: + '1209600': 2 aste + '15778476': 6 hilabete + '2629746': Hilabete 1 + '31556952': Urte 1 + '5259492': 2 hilabete + '63113904': 2 urte + '7889238': 3 hilabete + min_age_label: Denbora muga + min_favs: Mantendu gogoko kopuru hau duten bidalketak + min_favs_hint: Gutxienez gogoko kopuru hau jaso duten zure bidalketak ez dira ezabatuko. Hutsik utziz gero gogoko kopurua ez da kontuan hartuko bidalketak ezabatzean + min_reblogs: Mantendu bultzada kopuru hau duten bidalketak + min_reblogs_hint: Gutxienez bultzada kopuru hau jaso duten zure bidalketak ez dira ezabatuko. Hutsik utziz gero bultzada kopurua ez da kontuan hartuko bidalketak ezabatzean stream_entries: pinned: Finkatutako bidalketa reblogged: "(r)en bultzada" @@ -1392,24 +1470,15 @@ eu: subject: Berretsi saioa hasteko saiakera title: Saioa hasteko saiakera warning: - explanation: - disable: Zure kontua izoztuta dagoen bitartean, zure kontua bere horretan dirau, baina ezin duzu ekintzarik burutu desblokeatzen den arte. - sensitive: Igotzen dituzun multimedia fitxategiak eta estekatutako edukiak hunkigarri bezala hartuko dira. - silence: Zure kontua murriztua dagoen bitartean, jada zu jarraitzen zaituztenak besterik ez dituzte zure bidalketak ikusiko zerbitzari honetan, eta agian zerrenda publikoetatik kenduko zaizu. Hala ere besteek oraindik zu jarraitu zaitzakete. - suspend: Zure kontua kanporatua izan da, zure toot guztiak eta multimedia fitxategiak behin betiko ezabatu dira zerbitzari honetatik, eta zure jarraitzaileen zerbitzarietatik. - get_in_touch: "%{instance} instantziako jendearekin harremanetan jartzeko e-mail honi erantzun ahal diozu." review_server_policies: Berrikusi zerbitzariko politikak - statuses: 'Zehazki, honentzat:' subject: disable: Zure %{acct} kontua izoztu da none: "%{acct} konturako abisua" - sensitive: Zure %{acct} kontuaren multimedia bidalketak hunkigarri bezala markatu dira silence: Zure %{acct} kontua murriztu da suspend: Zure %{acct} kontua kanporatua izan da title: disable: Kontu izoztua none: Abisua - sensitive: Zure multimedia edukiak hunkigarri bezala markatu dira silence: Kontu murriztua suspend: Kontu kanporatua welcome: diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 8d4dab2b1..9f0b39a9c 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -10,7 +10,7 @@ fa: api: رابط برنامهنویسی کاربردی apps: اپهای موبایل apps_platforms: ماستودون را در iOS، اندروید، و سایر سیستمها داشته باشید - browse_directory: کاربران را بر اساس علاقهمندیهایشان از فهرست گزیده بیابید + browse_directory: شاخهٔ نمایهای را مرور کرده و بر حسب علاقه، بپالایید browse_local_posts: جریانی زنده از فرستههای عمومی این کارساز را ببینید browse_public_posts: جریانی زنده از فرستههای عمومی روی ماستودون را ببینید contact: تماس @@ -43,9 +43,7 @@ fa: reason: دلیل rejecting_media: 'پروندههای رسانه از این کارسازها پردازش یا ذخیره نخواهند شد و هیچ بندانگشتیای نمایش نخواهد یافت. نیازمند کلیک دستی برای رسیدن به پروندهٔ اصلی:' rejecting_media_title: رسانههای پالوده - silenced: |- - هیچ کدام از نوشتهها از طرف این کارساز اینجا نمایش نخواهند یافت مگر در فهرست پیگیریها شما، اگر نویسندهاش را پی بگیرید. - فرستهها از این کارسازها در گفتوگوها و فهرست نوشتههای عمومی نهفته خواهند بود و تا وقتی پیگیرشان نشوید، هیچ اعلانی از برهمکنشهای کاربرانشان تولید نخواهد شد: + silenced: 'فرستهها از این کارسازها در خطزمانیهای عمومی و گفتوگوها پنهان خواهند بود و هیچ آگاهیای از برهمکنشهای کاربرانشان ایجاد نخواهد شد،مگر این که دنبالشان کنید:' silenced_title: کارسازهای خموش suspended: 'هیچ دادهای از این کارسازها پردازش، ذخیره یا مبادله نخواهد شد، که هرگونه برهمکنش یا ارتباط با کاربران این کارسازها را غیرممکن خواهد کرد:' suspended_title: کارسازهای معلّق @@ -101,7 +99,6 @@ fa: accounts: add_email_domain_block: مسدود کردن دامنهٔ رایانامه approve: پذیرفتن - approve_all: پذیرفتن همه approved_msg: کارهٔ ثبتنام %{username} با موفقیت تأیید شد are_you_sure: مطمئنید؟ avatar: تصویر نمایه @@ -116,6 +113,7 @@ fa: confirm: تأیید confirmed: تأیید شد confirming: تأیید + custom: سفارشی delete: حذف دادهها deleted: حذف شده demote: تنزلدادن @@ -155,7 +153,6 @@ fa: active: فعّال all: همه pending: منتظر - silenced: خموشانده suspended: تعلیق شده title: مدیریت moderation_notes: یادداشتهای مدیریتی @@ -173,7 +170,6 @@ fa: redownload: نوسازی نمایه redownloaded_msg: حساب %{username} با موفقیت از ابتدا نوسازی شد reject: نپذیرفتن - reject_all: نپذیرفتن هیچکدام rejected_msg: کارهٔ ثبتنام %{username} با موفقیت رد شد remove_avatar: حذف تصویر نمایه remove_header: برداشتن تصویر زمینه @@ -208,12 +204,14 @@ fa: silence: خموشاندن silenced: خموشانده statuses: نوشتهها + strikes: اخطار های پیشین subscribe: اشتراک suspended: تعلیقشده suspension_irreversible: دادههای این حساب به صورت بیبازگشت حذف شد. میتوانید برای قابل استفاده کردنش، آن را نامعلّق کنید، ولی این کار هیچ دادهای را که از پیش داده، برنخواهد گرداند. suspension_reversible_hint_html: حساب معلّق شد و دادهها به صورت کامل در %{date} برداشته خواهند شد. تا آن زمان، حساب میتواند بی هیچ عوارضی بازگردانده شود. اگر میخواهید فوراً همهٔ دادههای حساب را بردارید، میتوانید در پایین این کار را بکنید. - time_in_queue: در حال انتظار %{time} title: حسابها + unblock_email: رفع مسدودیت نشانی ایمیل + unblocked_email_msg: مسدودیت نشانی ایمیل %{username} با موفقیت رفع شد unconfirmed_email: ایمیل تأییدنشده undo_sensitized: بازگردانی حساس undo_silenced: واگردانی بیصداکردن @@ -228,6 +226,7 @@ fa: whitelisted: فهرست مجاز action_logs: action_types: + approve_user: تایید کاربر assigned_to_self_report: واگذاری گزارش change_email_user: تغییر رایانامه برای کاربر confirm_user: تأیید کاربر @@ -245,6 +244,7 @@ fa: destroy_domain_allow: حذف اجازهٔ دامنه destroy_domain_block: حذف انسداد دامنه destroy_email_domain_block: حذف انسداد دامنهٔ رایانامه + destroy_instance: پاکسازی دامنه destroy_ip_block: حذف قاعدهٔ آیپی destroy_status: حذف وضعیت destroy_unavailable_domain: حذف دامنهٔ ناموجود @@ -257,6 +257,7 @@ fa: enable_user: به کار انداختن کاربر memorialize_account: یادسپاری حساب promote_user: ترفیع کاربر + reject_user: رد کاربر remove_avatar_user: برداشتن تصویر نمایه reopen_report: بازگشایی گزارش reset_password_user: بازنشانی گذرواژه @@ -265,6 +266,7 @@ fa: silence_account: خموشی حساب suspend_account: تعلیق حساب unassigned_report: رفع واگذاری گزارش + unblock_email_account: رفع مسدودیت ایمیل unsensitive_account: برداشتن علامت رسانه در حسابتان به عنوان حساس unsilence_account: رفع خموشی حساب unsuspend_account: رفع تعلیق حساب @@ -273,6 +275,7 @@ fa: update_domain_block: بهروزرسانی مسدودسازی دامنه update_status: بهروز رسانی وضعیت actions: + approve_user_html: "%{name} ثبت نام %{target} را تایید کرد" assigned_to_self_report_html: "%{name} رسیدگی به گزارش %{target} را به عهده گرفت" change_email_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را عوض کرد" confirm_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را تأیید کرد" @@ -290,6 +293,7 @@ fa: destroy_domain_allow_html: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت" destroy_domain_block_html: "%{name} انسداد دامنهٔ %{target} را رفع کرد" destroy_email_domain_block_html: "%{name} انسداد دامنهٔ رایانامهٔ %{target} را برداشت" + destroy_instance_html: "%{name} دامنه %{target} را پاکسازی کرد" destroy_ip_block_html: "%{name} قاعدهٔ آیپی %{target} را حذف کرد" destroy_status_html: "%{name} وضعیت %{target} را برداشت" destroy_unavailable_domain_html: "%{name} تحویل محتوا به دامنه %{target} را از سر گرفت" @@ -302,6 +306,7 @@ fa: enable_user_html: "%{name} ورود را برای کاربر %{target} فعال کرد" memorialize_account_html: "%{name} حساب %{target} را تبدیل به صفحهٔ یادمان کرد" promote_user_html: "%{name} کاربر %{target} را ترفیع داد" + reject_user_html: "%{name} ثبت نام %{target} را رد کرد" remove_avatar_user_html: "%{name} تصویر نمایهٔ %{target} را حذف کرد" reopen_report_html: "%{name} گزارش %{target} را دوباره به جریان انداخت" reset_password_user_html: "%{name} گذرواژه کاربر %{target} را بازنشاند" @@ -310,6 +315,7 @@ fa: silence_account_html: "%{name} حساب %{target} را محدود کرد" suspend_account_html: "%{name} حساب %{target} را تعلیق کرد" unassigned_report_html: "%{name} گزارش %{target} را از حالت محول شده خارج کرد" + unblock_email_account_html: "%{name} نشانی ایمیل %{target} را رفع مسدودیت کرد" unsensitive_account_html: "%{name} علامت حساس رسانهٔ %{target} را برداشت" unsilence_account_html: "%{name} محدودیت حساب %{target} را برداشت" unsuspend_account_html: "%{name} حساب %{target} را از تعلیق خارج کرد" @@ -358,7 +364,7 @@ fa: enabled_msg: این شکلک با موفقیت فعال شد image_hint: پروندهٔ PNG حداکثر 50KB list: فهرست - listed: فهرستشده + listed: فهرست شده new: title: افزودن شکلک سفارشی not_permitted: مجاز به انجام این کنش نیستید @@ -368,14 +374,33 @@ fa: title: شکلکهای سفارشی uncategorized: دستهبندی نشده unlist: نافهرست - unlisted: فهرستنشده + unlisted: فهرست نشده update_failed_msg: این شکلک نتوانست بهروز شود updated_msg: شکلک با موفقیت بهروز شد! upload: بارگذاری dashboard: + active_users: کاربران فعّال + interactions: برهمکنشها + 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: منابع ثبتنام space: فضای مصرفشده title: ابزارهای مدیریت + top_languages: زبانهای فعّالتر + top_servers: کاربران فعّالتر + website: پایگاه وب domain_allows: add_new: مجاز کردن دامنه created_msg: دامنه با موفقیت مجاز شد @@ -448,6 +473,7 @@ fa: back_to_limited: محدود back_to_warning: هشدار by_domain: دامین + confirm_purge: آیا مطمئن هستید میخواهید داده را از این دامنه برای همیشه پاک کنید؟ delivery: all: همه clear: پاک کردن خطاهای تحول محتوا @@ -457,9 +483,13 @@ fa: unavailable: ناموجود unavailable_message: تحویل محتوا در دسترس نیست warning: هشدار + warning_message: + one: شکست تحویل %{count} روز + other: شکست تحویل محتوا %{count} روز delivery_available: پیام آماده است delivery_error_days: زورهای خطای تحویل محتوا delivery_error_hint: اگر تحویل محتوا به مدت %{count} روز ممکن نباشد، به طور خودکار به عنوان تحویلناشونده علامتگذاری خواهد شد. + destroyed_msg: هم اکنون داده دامنه %{domain} در صف حذف حتمی است. empty: هیج دامنهای پیدا نشد. known_accounts: one: "%{count} حساب شناختهشده" @@ -470,6 +500,7 @@ fa: title: مدیریت private_comment: یادداشت خصوصی public_comment: یادداشت عمومی + purge: پاکسازی title: ارتباط میانسروری total_blocked_by_us: مسدودشده از طرف ما total_followed_by_them: ما را پی میگیرند @@ -482,7 +513,7 @@ fa: all: همه available: در دسترس expired: منقضیشده - title: فیلتر + title: پالایه title: دعوتها ip_blocks: add_new: ایجاد قانون @@ -499,8 +530,6 @@ fa: title: ایجاد قانون جدید IP no_ip_block_selected: هیچ قاعدهٔ آیپیای تغییری نکرد زیرا هیچکدام گزیده نشده بودند title: قوانین IP - pending_accounts: - title: حسابهای منتظر (%{count}) relationships: title: روابط %{acct} relays: @@ -522,32 +551,38 @@ fa: report_notes: created_msg: یادداشت گزارش با موفقیت ساخته شد! destroyed_msg: یادداشت گزارش با موفقیت حذف شد! + today_at: امروز در %{time} reports: account: notes: one: "%{count} یادداشت" other: "%{count} یادداشت" - reports: - one: "%{count} گزارش" - other: "%{count} گزارش" + action_log: گزارش حسابرسی action_taken_by: انجامدهنده + actions: + other_description_html: دیدن انتخاب های بیشتر برای کنترل رفتار حساب و سفارشی سازی ارتباط با حساب گزارش شده. + add_to_report: افزودن بیشتر به گزارش are_you_sure: مطمئنید؟ assign_to_self: به عهدهٔ من بگذار assigned: مدیر عهدهدار by_target_domain: دامنهٔ حساب گزارششده + category: دسته 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: حل کردن با یادداشت create_and_unresolve: دوباره گشودن با یادداشت delete: حذف placeholder: کارهایی را که در این باره انجام شده، یا هر بهروزرسانی دیگری را بنویسید... + title: یادداشتها reopen: دوباره به جریان بیندازید report: 'گزارش #%{id}' reported_account: حساب گزارششده @@ -555,11 +590,13 @@ fa: resolved: حلشده resolved_msg: گزارش با موفقیت حل شد! status: نوشته + statuses: محتوای گزارش شده target_origin: خاستگاه حساب گزارششده title: گزارشها unassign: پسگرفتن مسئولیت unresolved: حلنشده updated_at: بهروز شد + view_profile: دیدن نمایه rules: add_new: افزودن قانون delete: حذف @@ -598,13 +635,13 @@ fa: title: تصویر نماد peers_api_enabled: desc_html: دامینهایی که این سرور به آنها برخورده است - title: انتشار فهرست سرورهای یافتهشده + title: انتشار سیاههٔ کارسازهای کشف شده در API preview_sensitive_media: desc_html: پیوند به سایتهای دیگر پیشنمایشی خواهد داشت که یک تصویر کوچک را نشان میدهد، حتی اگر نوشته به عنوان حساس علامتگذاری شده باشد title: نمایش تصاویر حساسیتبرانگیز در پیشنمایشهای OpenGraph profile_directory: - desc_html: به کاربران اجازه دهید تا بتوانند خود را روی فهرست گزیدهٔ کاربران این سرور نمایش دهند - title: فعالسازی فهرست گزیدهٔ کاربران + desc_html: اجازه به کاربران برای قابل کشف بودن + title: به کار انداختن شاخهٔ نمایه registrations: closed_message: desc_html: وقتی امکان ثبت نام روی سرور فعال نباشد در صفحهٔ اصلی نمایش مییابد<br>میتوانید HTML بنویسید @@ -661,15 +698,13 @@ fa: destroyed_msg: بارگذاری پایگاه با موفقیت حذف شد! statuses: back_to_account: بازگشت به صفحهٔ حساب + back_to_report: بازگشت به صفحهٔ گزارش batch: - delete: پاککردن - nsfw_off: علامتزدن به عنوان غیرحساس - nsfw_on: علامتزدن به عنوان حساس + remove_from_report: برداشتن از گزارش + report: گزارش deleted: پاکشده - failed_to_execute: اجرا نشد media: title: رسانه - no_media: بدون عکس یا ویدیو no_status_selected: هیچ بوقی تغییری نکرد زیرا هیچکدام از آنها انتخاب نشده بودند title: نوشتههای حساب with_media: دارای عکس یا ویدیو @@ -682,21 +717,37 @@ fa: sidekiq_process_check: message_html: صف(های) %{value} فاقد هیچونه فرایند Sidekiq هستند. لطفا تنظیمات Sidekiq خود را بازبینی کنید tags: - accounts_today: کاربرد یکتا در امروز - accounts_week: کاربرد یکتا در این هفته - breakdown: کاربردهای امروز به تفکیک منبع - last_active: آخرین فعالیت - most_popular: محبوبترین - most_recent: تازهترین - name: هشتگ review: وضعیت بازبینی - reviewed: بازبینی شده - title: هشتگها - trending_right_now: پرطرفدارهای کنونی - unique_uses_today: "%{count} امروز منتشر شده" - unreviewed: بازبینی نشده updated_msg: تنظیمات برچسبها با موفقیت بهروز شد title: مدیریت + trends: + allow: اجازه + approved: تأیید شده + disallow: اجازه ندادن + links: + allow: اجازه به پیوند + allow_provider: اجازه به ناشر + disallow: اجازه ندادن به پیوند + disallow_provider: اجازه ندادن به ناشر + title: پیوندهای داغ + pending_review: بازبینی منتظر + preview_card_providers: + title: ناشران + rejected: رد شده + tags: + current_score: امتیاز کنونی %{score} + dashboard: + tag_accounts_measure: استفادهٔ یکتا + tag_languages_dimension: زبانهای برتر + tag_servers_dimension: کارسازهای برتر + tag_servers_measure: کارسازهای گوناگون + tag_uses_measure: کل استفادهّا + listable: میتواند پیشنهاد شود + not_listable: پیشنهاد نخواهد شد + not_usable: غیر قابل استفاده + title: برچسبهای پرطرفدار + usable: قابل استفاده + title: پرطرفدار warning_presets: add_new: افزودن تازه delete: زدودن @@ -711,9 +762,6 @@ fa: body: کاربر %{reporter} کاربر %{target} را گزارش داد body_remote: کسی از %{domain} گزارش %{target} را فرستاده subject: گزارش تازهای برای %{instance} (#%{id}) - new_trending_tag: - body: 'برچسب #%{name} امروز پرطرفدار است، ولی تا حالا بازبینی نشده. تا وقتی که شما اجازه ندادهاید، این برچسب به طور عمومی نمایش داده نخواهد شد. اگر فرم را به شکل فعلی ذخیره کنید، هیچ وقت چیزی دربارهٔ این برچسب نخواهید دید.' - subject: برچسب تازهای در %{instance} نیازمند بررسی است (#%{name}) aliases: add_new: ساختن نام مستعار created_msg: نام مستعار تازه با موفقیت ساخته شد. الان میتوانید انتقال از حساب قدیمی را آغاز کنید. @@ -723,7 +771,7 @@ fa: remove: حذف ارتباط نام مستعار appearance: advanced_web_interface: رابط کاربری پیشرفته - advanced_web_interface_hint: 'اگر میخواهید همهٔ فضای نمایشگر خود را به کار ببرید، میتوانید به کمک رابط کاربری پیشرفته ستونهای گوناگونی داشته باشید تا در یک نگاه همهٔ اطلاعاتی را که میخواهید ببینید: نوشتههای دیگران، اعلانها، فهرست نوشتههای همهجا، و هر تعداد فهرست و برچسب که بخواهید.' + advanced_web_interface_hint: اگر میخواهید از تمامی پهنای صفحهتان استفاده کنید، رابط پیشرفتهٔ وب میگذارد هر چند ستون را که میخواهید، برای دیدن اطّلاعات بیشتر در یک زمان، پیکربندی کنید:خانه، آگاهیها، خط زمانی عمومی، هرتعدادی از سیاههها و برچسبها. animations_and_accessibility: پویانماییهای و دسترسیپذیری confirmation_dialogs: پیغامهای تأیید discovery: کاوش @@ -765,6 +813,7 @@ fa: invalid_reset_password_token: کد بازنشانی رمز نامعتبر یا منقضی شده است. لطفاً کد دیگری درخواست کنید. link_to_otp: رمز بازگردانی یا رمز دوعاملی را از تلفنتان وارد کنید link_to_webauth: استفاده از افزارهٔ امنیتیتان + log_in_with: ورود با login: ورود logout: خروج migrate_account: نقل مکان به یک حساب دیگر @@ -849,7 +898,7 @@ fa: username_available: نام کاربری شما دوباره در دسترس خواهد بود username_unavailable: نام کاربری شما برای دیگران غیرقابل دسترس خواهد ماند directories: - directory: فهرست گزیدهٔ کاربران + directory: شاخهٔ نمایه explanation: کاربران را بر اساس علاقهمندیهایشان بیابید explore_mastodon: گشت و گذار در %{title} domain_validator: @@ -884,7 +933,7 @@ fa: bookmarks: نشانکها csv: CSV domain_blocks: دامینهای مسدودشده - lists: فهرستها + lists: سیاههها mutes: حسابهای بیصداشده storage: تصویرهای ذخیرهشده featured_tags: @@ -896,8 +945,8 @@ fa: contexts: account: نمایهها home: خانه - notifications: اعلانها - public: فهرست عمومی + notifications: آگاهیها + public: خط زمانیهای عمومی thread: گفتگوها edit: title: ویرایش پالایه @@ -920,34 +969,15 @@ fa: changes_saved_msg: تغییرات با موفقیت ذخیره شدند! copy: رونوشت delete: حذف - no_batch_actions_available: هیچ کار گروهیای در این صفحه موجود نیست + none: هیچکدام order_by: مرتبسازی save_changes: ذخیرهٔ تغییرات + today: امروز validation_errors: one: یک چیزی هنوز درست نیست! لطفاً خطاهای زیر را ببینید other: یک چیزی هنوز درست نیست! لطفاً %{count} خطای زیر را ببینید html_validator: invalid_markup: 'دارای نشانهگذاری نامعتبر HTML است: %{error}' - identity_proofs: - active: فعال - authorize: بله، اجازه بده - authorize_connection_prompt: آیا اجازهٔ این ارتباط رمزگذاری را میدهید؟ - errors: - failed: برقراری ارتباط رمزگذاری شکست خورد. لطفاً دوباره از %{provider} تلاش کنید. - keybase: - invalid_token: کدهای Keybase چکیده (هش) امضاهای دیجیتال هستند و دستکم ۶۶ نویسه در مبنای ۱۶ دارند - verification_failed: این کد را Keybase به عنوان امضای دیجیتال کاربر %{kb_username} تأیید نمیکند. لطفاً دوباره از Keybase تلاش کنید. - wrong_user: نمیتوان تأییدی برای %{proving} در حالی که به عنوان %{current} وارد شدهاید. به عنوان %{proving} وارد شوید و دوباره تلاش کنید. - explanation_html: اینجا میتوانید به شناسههای دیگر خود مانند نمایهٔ Keybase خودتان به طور رمزنگارانه متصل شوید. با این کار دیگران میتوانند به شما پیغامهای رمزشده بفرستند و به چیزی که شما به آنها میفرستید اعتماد کنند. - i_am_html: من %{username} روی %{service} هستم. - identity: شناسه - inactive: غیرفعال - publicize_checkbox: 'این را ببوقید:' - publicize_toot: 'تأیید شد! من %{username} روی %{service} هستم: %{url}' - remove: برداشتن مدرک از حساب - removed: مدرک با موفّقیت از حساب برداشته شد - status: وضعیت تأیید - view_proof: دیدن مدرک imports: errors: over_rows_processing_limit: دارای بیش از %{count} ردیف @@ -956,14 +986,14 @@ fa: merge_long: دادههای فعلی را داشته باشید و دادههای تازهای بیفزایید overwrite: بازنویسی overwrite_long: دادههای فعلی را پاک کنید و دادههای تازهای بیفزایید - preface: میتوانید دادههایی مانند فهرست افرادی که دنبال یا مسدود کردهاید را که از کارسازی دیگر برونریختهاید درونریزی کنید. + preface: میتوانید دادههایی را که از کارسازی دیگر برونریختهاید، چون سیاههای از افرادی که پی گرفته یا مسدود میکنید را درونریزی کنید. success: دادههای شما با موفقیت بارگذاری شد و به زودی پردازش میشود types: - blocking: فهرست مسدودشدهها + blocking: سیاههٔ انسداد bookmarks: نشانکها - domain_blocking: فهرست دامینهای مسدودشده - following: فهرست پیگیریها - muting: فهرست بیصداشدهها + domain_blocking: سیاههٔ انسداد دامنه + following: سیاههٔ پیگیری + muting: سیاههٔ خموشی upload: بارگذاری in_memoriam_html: به یادبود. invites: @@ -990,7 +1020,7 @@ fa: title: دعوت دیگران lists: errors: - limit: از این بیشتر نمیشود فهرست داشت + limit: به بیشینهٔ مقدار سیاههها رسیدید login_activities: authentication_methods: otp: کارهٔ تأیید هویت دوعاملی @@ -1046,7 +1076,7 @@ fa: copy_account_note_text: 'این کاربر از %{acct} جابهجا شده است. یادداشتهای پیشینتان دربارهاش اینهاست:' notification_mailer: digest: - action: دیدن همهٔ اعلانها + action: دیدن تمامی آگاهیها body: خلاصهای از پیغامهایی که از زمان آخرین بازدید شما در %{since} فرستاده شد mention: "%{name} اینجا از شما نام برد:" new_followers_summary: @@ -1054,7 +1084,7 @@ fa: other: در ضمن، وقتی که نبودید %{count} پیگیر تازه پیدا کردید! چه عالی! subject: one: "یک اعلان تازه از زمان آخرین بازدید شما \U0001F418" - other: "%{count} اعلان تازه از زمان آخرین بازدید شما \U0001F418" + other: "%{count} آگاهی جدید از آخرین بازدیدتان \U0001F418" title: در مدتی که نبودید... favourite: body: "%{name} این نوشتهٔ شما را پسندید:" @@ -1083,9 +1113,9 @@ fa: status: subject: "%{name} چیزی فرستاد" notifications: - email_events: رویدادها برای اعلانهای ایمیلی - email_events_hint: 'رویدادهایی که میخواهید برایشان اعلانی دریافت کنید را برگزینید:' - other_settings: سایر تنظیمات اعلانها + email_events: رویدادها برای آگاهیهای رایانامهای + email_events_hint: 'گزینش رویدادهایی که میخواهید برایشان آگاهی دریافت کنید:' + other_settings: سایر تنظیمات آگاهیها number: human: decimal_units: @@ -1124,7 +1154,7 @@ fa: preferences: other: سایر تنظیمات posting_defaults: تنظیمات پیشفرض انتشار - public_timelines: فهرست عمومی نوشتهها + public_timelines: خط زمانیهای عمومی reactions: errors: limit_reached: تجاوز از کران واکنشهای مختلف @@ -1221,11 +1251,10 @@ fa: edit_profile: ویرایش نمایه export: برونسپاری دادهها featured_tags: برچسبهای برگزیده - identity_proofs: مدرک شناسهها import: درونریزی import_and_export: درونریزی و برونبری migrate: انتقال حساب - notifications: اعلانها + notifications: آگاهیها preferences: ترجیحات profile: نمایه relationships: پیگیریها و پیگیران @@ -1249,15 +1278,14 @@ fa: disallowed_hashtags: one: 'دارای هشتگ غیرمجاز: %{tags}' other: 'دارای هشتگهای غیرمجاز: %{tags}' + edited_at: ویراسته در %{date} errors: in_reply_not_found: به نظر نمیرسد وضعیتی که میخواهید به آن پاسخ دهید، وجود داشته باشد. - language_detection: زبان نوشته خودبهخود شناخته شود open_in_web: بازکردن در وب over_character_limit: از حد مجاز %{max} حرف فراتر رفتید pin_errors: limit: از این بیشتر نمیشود نوشتههای ثابت داشت ownership: نوشتههای دیگران را نمیتوان ثابت کرد - private: نوشتههای غیرعمومی را نمیتوان ثابت کرد reblog: بازبوقها را نمیتوان ثابت کرد poll: total_people: @@ -1279,7 +1307,7 @@ fa: private_long: تنها پیگیران شما میبینند public: عمومی public_long: همه میتوانند ببینند - unlisted: فهرستنشده + unlisted: فهرست نشده unlisted_long: عمومی، ولی در فهرست نوشتهها نمایش نمییابد statuses_cleanup: enabled: حذف خودکار فرستههای قدیمی @@ -1412,6 +1440,7 @@ fa: formats: default: "%d %b %Y, %H:%M" month: "%b %Y" + time: "%OH:%OM" two_factor_authentication: add: افزودن disable: غیرفعالکردن @@ -1439,24 +1468,20 @@ fa: subject: لطفاً تلاش برای ورود را تأیید کنید title: تلاش برای ورود warning: - explanation: - disable: تا وقتی حساب شما متوقف باشد، دادههای شما دستنخورده باقی میمانند، ولی تا وقتی که حسابتان باز نشده، نمیتوانید هیچ کاری با آن بکنید. - sensitive: پروندههای رسانهٔ بارگذاریشده و رسانههای پیوسته به عنوان حساس در نظر گرفته خواهند شد. - silence: تا وقتی حساب شما محدود باشد، تنها کسانی که از قبل پیگیر شما بودند نوشتههای شما در این کارساز را میبینند و شاید شما در برخی از فهرستهای عمومی دیده نشوید. ولی دیگران همچنان میتوانند به دلخواه خودشان پیگیر شما شوند. - suspend: حسابتان معلق شده و تمام بوقها و رسانههای بارگذاشتهتان، از روی این کارساز و کارسازهایی که پیگیرانی رویشان داشتید، به طور بازگشتناپذیری برداشته شدهاند. - get_in_touch: با پاسخ به این ایمیل میتوانید با دستاندرکاران %{instance} در تماس باشید. + categories: + spam: هرزنامه + reason: 'دلیل:' review_server_policies: مرور سیاستهای کارساز - statuses: 'به طور خاص برای:' subject: disable: حساب %{acct} شما متوقف شده است none: هشدار برای %{acct} - sensitive: رسانههای فرستاده شده توسط حساب %{acct} شما برچسب حساس خوردهاند silence: حساب %{acct} شما محدود شده است suspend: حساب %{acct} شما معلق شده است title: + delete_statuses: فرستهها برداشته شدند disable: حساب متوقف شده است none: هشدار - sensitive: رسانهتان به عنوان حساس در نظر گرفته شد + sensitive: رسانهٔ نهفته silence: حساب محدود شده است suspend: حساب معلق شده است welcome: @@ -1473,7 +1498,7 @@ fa: tip_federated_timeline: "«فهرست نوشتههای همهجا» نمایی کلی از شبکهٔ ماستودون است. ولی فقط شامل افرادیست که همسایگانتان پیگیرشان هستند؛ پس کامل نیست." tip_following: به طور پیشگزیده مدیر(ان) کارسازتان را پی میگیرید. برای یافتن افراد جالب دیگر، فهرست «نوشتههای محلی» و «نوشتههای همهجا» را ببینید. tip_local_timeline: فهرست نوشتههای محلی نمایی کلی از کاربران روی %{instance} را ارائه میدهد. اینها همسایههای شما هستند! - tip_mobile_webapp: اگر مرورگر موبایل شما امکان گذاشتن ماستودون روی صفحهٔ اصلی موبایل را به شما میدهد، این یعنی میتوانید اعلانهای خودکار ماستودون را دریافت کنید. با این کار ماستودون خیلی شبیه یک اپ معمولی موبایل میشود! + tip_mobile_webapp: اگر مرورگر همراهتان پیشنهاد افزودن ماستودون به صفحهٔ اصلیتان را میدهد، میتوانید آگاهیهای ارسالی را دریافت کنید. این کار از بسیاری جهتها،مانند یک کارهٔ بومی عمل میکند! tips: نکتهها title: خوش آمدید، کاربر %{name}! users: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index c8376023b..38b9a04bf 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1,18 +1,18 @@ --- fi: about: - about_hashtag_html: Nämä ovat hashtagilla <strong>#%{hashtag}</strong> merkittyjä julkisia tuuttauksia. Voit vastata niihin, jos sinulla on tili jossain päin fediversumia. - about_mastodon_html: Mastodon on sosiaalinen verkosto. Se on toteutettu avoimilla verkkoprotokollilla ja vapailla, avoimen lähdekoodin ohjelmistoilla, ja se toimii hajautetusti samaan tapaan kuin sähköposti. - about_this: Tietoja tästä palvelimesta - active_count_after: aktiivinen - active_footnote: Kuukausittaiset aktiiviset käyttäjät (MAU) + about_hashtag_html: Nämä julkiset julkaisut on merkitty hastagilla <strong>#%{hashtag}</strong>. Voit vastata niihin, jos sinulla on tili jossain päin fediversumia. + about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: Ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu! Pidä tietosi ominasi Mastodonilla!' + about_this: Tietoa tästä palvelimesta + active_count_after: aktiivista + active_footnote: Kuukausittain aktiiviset käyttäjät (MAU) administered_by: 'Ylläpitäjä:' api: Rajapinta - apps: Mobiili sovellukset - apps_platforms: Käytä Mastodonia iOS:llä, Androidilla tai muilla alustoilla - browse_directory: Selaa profiilihakemistoa ja suodata kiinnostuksen kohteiden mukaan - browse_local_posts: Selaa suoratoistoja julkisista viesteistä tältä palvelimelta - browse_public_posts: Selaa suoratoistoja julkisista viesteistä Mastodonissa + apps: Mobiilisovellukset + apps_platforms: Käytä Mastodonia Androidilla, iOS:llä ja muilla alustoilla + browse_directory: Selaa profiilihakemistoa + browse_local_posts: Selaa julkisia julkaisuja tältä palvelimelta + browse_public_posts: Selaa julkisia julkaisuja Mastodonissa contact: Ota yhteyttä contact_missing: Ei asetettu contact_unavailable: Ei saatavilla @@ -25,16 +25,16 @@ fi: Tämä on virtuaalitili, joka edustaa itse palvelinta eikä yksittäistä käyttäjää. Sitä käytetään yhdistämistarkoituksiin, eikä sitä saa estää, ellet halua estää koko palvelinta, jolloin sinun on käytettävä verkkotunnuksen estoa. learn_more: Lisätietoja - privacy_policy: Tietosuojaseloste + privacy_policy: Tietosuojakäytäntö rules: Palvelimen säännöt rules_html: 'Alla on yhteenveto säännöistä, joita sinun on noudatettava, jos haluat olla tili tällä Mastodonin palvelimella:' see_whats_happening: Näe mitä tapahtuu server_stats: 'Palvelimen tilastot:' source_code: Lähdekoodi status_count_after: - one: tila - other: tilanne - status_count_before: He ovat luoneet + one: julkaisun + other: julkaisua + status_count_before: Julkaistu tagline: Seuraa ja löydä uusia kavereita terms: Käyttöehdot unavailable_content: Moderoidut palvelimet @@ -50,8 +50,8 @@ fi: unavailable_content_html: Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle. user_count_after: one: käyttäjä - other: käyttäjät - user_count_before: Koti + other: käyttäjää + user_count_before: Palvelimella what_is_mastodon: Mikä on Mastodon? accounts: choices_html: "%{name} valinnat:" @@ -76,10 +76,10 @@ fi: pin_errors: following: Sinun täytyy seurata henkilöä jota haluat tukea posts: - one: Tuuttaus - other: Tuuttaukset - posts_tab_heading: Tuuttaukset - posts_with_replies: Tuuttaukset ja vastaukset + one: Julkaisu + other: Julkaisut + posts_tab_heading: Julkaisut + posts_with_replies: Julkaisut ja vastaukset roles: admin: Ylläpitäjä bot: Botti @@ -99,7 +99,6 @@ fi: accounts: add_email_domain_block: Estä sähköpostidomain approve: Hyväksy - approve_all: Hyväksy kaikki approved_msg: Käyttäjän %{username} liittymishakemus hyväksyttiin are_you_sure: Oletko varma? avatar: Profiilikuva @@ -153,7 +152,6 @@ fi: active: Aktiivinen all: Kaikki pending: Odottavat - silenced: Hiljennetty suspended: Jäähyllä title: Moderointi moderation_notes: Moderointimerkinnät @@ -171,7 +169,6 @@ fi: redownload: Päivitä profiilikuva redownloaded_msg: Käyttäjän %{username} profiilin päivittäminen alkuperästä onnistui reject: Hylkää - reject_all: Hylkää kaikki rejected_msg: Käyttäjän %{username} rekisteröitymishakemus hylättiin remove_avatar: Poista profiilikuva remove_header: Poista otsakekuva @@ -210,7 +207,6 @@ fi: 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. - time_in_queue: Odottaa jonossa %{time} title: Tilit unconfirmed_email: Sähköpostia ei vahvistettu undo_sensitized: Kumoa pakotus arkaluontoiseksi tiliksi @@ -219,13 +215,14 @@ fi: unsilenced_msg: "%{username} -tilin rajoituksen kumoaminen onnistui" unsubscribe: Lopeta tilaus unsuspended_msg: "%{username} -tilin keskeytyksen kumoaminen onnistui" - username: Käyttäjänimi + username: Käyttäjätunnus view_domain: Näytä verkkotunnuksen yhteenveto warn: Varoita web: Verkko whitelisted: Sallittu liittämiselle action_logs: action_types: + 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 confirm_user: Vahvista käyttäjä @@ -244,7 +241,7 @@ fi: destroy_domain_block: Poista verkkotunnuksen esto destroy_email_domain_block: Poista sähköpostipalvelimen esto destroy_ip_block: Poista IP-sääntö - destroy_status: Poista tilapäivitys + destroy_status: Poista julkaisu destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus disable_2fa_user: Poista kaksivaiheinen tunnistautuminen käytöstä disable_custom_emoji: Estä mukautettu emoji @@ -255,6 +252,7 @@ fi: enable_user: Tili otettu käyttöön memorialize_account: Muuta muistotiliksi promote_user: Käyttäjä ylennetty + reject_user: Hylkää käyttäjä remove_avatar_user: Profiilikuvan poisto reopen_report: Uudelleenavaa raportti reset_password_user: Nollaa salasana @@ -271,6 +269,7 @@ fi: update_domain_block: Päivitä verkkotunnuksen esto update_status: Päivitä viesti actions: + 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" confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen" @@ -300,6 +299,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_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}" reset_password_user_html: "%{name} palautti käyttäjän %{target} salasanan" @@ -315,7 +315,7 @@ fi: update_custom_emoji_html: "%{name} päivitti emojin %{target}" update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target}" update_status_html: "%{name} päivitti viestin %{target}" - deleted_status: "(poistettu tilapäivitys)" + deleted_status: "(poistettu julkaisu)" empty: Lokeja ei löytynyt. filter_by_action: Suodata tapahtuman mukaan filter_by_user: Suodata käyttäjän mukaan @@ -371,9 +371,19 @@ fi: updated_msg: Emojin päivitys onnistui! upload: Lähetä dashboard: + active_users: aktiiviset käyttäjät + interactions: vuorovaikutukset + media_storage: Median tallennustila + new_users: uudet käyttäjät + opened_reports: raportit avattu + resolved_reports: raportit ratkaistu software: Ohjelmisto + sources: Kirjautumisen lähteet space: Tilankäyttö title: Hallintapaneeli + top_languages: Aktiiviset kielet + top_servers: Aktiiviset palvelimet + website: Sivusto domain_allows: add_new: Salli liitto verkkotunnuksella created_msg: Verkkotunnus on onnistuneesti sallittu federaatiolle @@ -436,7 +446,7 @@ fi: follow_recommendations: description_html: "<strong>Suositusten noudattaminen auttaa uusia käyttäjiä löytämään nopeasti mielenkiintoista sisältöä.</strong>. Jos käyttäjä ei ole ollut vuorovaikutuksessa tarpeeksi muiden kanssa luodakseen henkilökohtaisia seuraajia, näitä muita tilejä suositellaan sen sijaan. Ne lasketaan uudelleen päivittäin yhdistelmästä tilejä, joilla on korkein viimeaikainen käyttö ja korkein paikallinen seuraajien määrä tietyllä kielellä." language: Kielelle - status: Tilanne + status: Tila suppress: Peitä noudata suosituksia suppressed: Rajoitettu title: Noudata suosituksia @@ -494,8 +504,6 @@ fi: title: Luo uusi IP-sääntö no_ip_block_selected: IP-sääntöjä ei muutettu, koska yhtään ei ole valittuna title: IP-säännöt - pending_accounts: - title: Vireillä olevat tilit (%{count}) relationships: title: "%{acct}n suhteet" relays: @@ -628,7 +636,7 @@ fi: desc_html: Näytetään sivupalkissa ja kuvauksessa. Kerro yhdessä kappaleessa, mitä Mastodon on ja mikä tekee palvelimesta erityisen. title: Lyhyt instanssin kuvaus site_terms: - desc_html: Tähän voi kirjoittaa instanssin tietosuojakäytännöstä, käyttöehdoista ja sen sellaisista asioista. HTML-tagit käytössä + desc_html: Tähän voit kirjoittaa tietosuojakäytännöistä, käyttöehdoista ja sen sellaisista asioista. Voit käyttää HTML-tageja title: Omavalintaiset käyttöehdot site_title: Instanssin nimi thumbnail: @@ -649,15 +657,9 @@ fi: destroyed_msg: Sivuston lataus onnistuneesti poistettu! statuses: back_to_account: Takaisin tilin sivulle - batch: - delete: Poista - nsfw_off: NSFW POIS - nsfw_on: NSFW PÄÄLLÄ deleted: Poistettu - failed_to_execute: Suoritus epäonnistui media: title: Media - no_media: Ei mediaa no_status_selected: Viestejä ei muutettu, koska yhtään ei ole valittuna title: Tilin tilat with_media: Sisältää mediaa @@ -670,21 +672,51 @@ fi: sidekiq_process_check: message_html: Ei ole Sidekiq-prosessia käynnissä jonossa %{value}. Tarkista Sidekiq-asetukset tags: - accounts_today: Tämän päivän käyttö - accounts_week: Tämän viikon käyttö - breakdown: Tämän päivän käyttö lähteen mukaan - last_active: Aktiivinen viimeksi - most_popular: Suosituimmat - most_recent: Viimeisimmät - name: Aihetunniste review: Tarkista tila - reviewed: Tarkistetut - title: Aihetunnisteet - trending_right_now: Trendaa juuri nyt - unique_uses_today: "%{count} postausta tänään" - unreviewed: Ei tarkistettu updated_msg: Hashtagin asetukset päivitetty onnistuneesti title: Ylläpito + trends: + allow: Salli + approved: Hyväksytty + disallow: Estä + links: + allow: Salli linkki + 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 + preview_card_providers: + allowed: Tämän julkaisijan linkit voivat trendata + rejected: Tämän julkaisijan linkit eivät voi trendata + title: Julkaisijat + rejected: Hylätty + tags: + current_score: Nykyinen tulos %{score} + dashboard: + tag_accounts_measure: uniikit käyttötarkoitukset + tag_languages_dimension: Suosituimmat kielet + tag_servers_dimension: Suosituimmat palvelimet + tag_servers_measure: eri palvelimet + tag_uses_measure: käyttökerrat + listable: Voidaan ehdottaa + not_listable: Ei tulla ehdottamaan + not_trendable: Ei näy trendien alla + not_usable: Ei voida käyttää + peaked_on_and_decaying: Saavutti huipun %{date}, nyt hiipuu + title: Suositut tunnisteet + trendable: Voi näkyä trendien alla + 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 delete: Poista @@ -699,9 +731,16 @@ fi: body: "%{reporter} on raportoinut kohteen %{target}" body_remote: Joku osoitteesta %{domain} on raportoinut kohteen %{target} subject: Uusi raportti instanssista %{instance} (nro %{id}) - new_trending_tag: - body: 'Aihetunniste #%{name} on nousussa tänään, mutta sitä ei ole aiemmin tarkistettu. Sitä ei näytetä julkisesti, ellet salli sitä. Siitä ei ilmoiteta uudelleen, jos pelkästään tallennat lomakkeen sellaisenaan.' - subject: Uusi aihetunniste tarkistettavaksi %{instance} (#%{name}) + new_trending_links: + body: Seuraavat linkit trendaavat tänään, mutta niiden julkaisijoita ei ole aiemmin tarkistettu. Niitä ei näytetä julkisesti, ellet hyväksy niitä. Uusia ilmoituksia samoilta julkaisijoilta ei luoda. + no_approved_links: Tällä hetkellä ei ole hyväksyttyjä trendaavia linkkejä. + requirements: Alin hyväksytty trendilinkki on tällä hetkellä "%{lowest_link_title}" pisteillä %{lowest_link_score}. + subject: Uudet trendikkäät linkit tarkistettavaksi %{instance} + new_trending_tags: + body: 'Seuraavat hashtagit ovat trendejä tänään, mutta niitä ei ole aiemmin tarkistettu. Niitä ei näytetä julkisesti, ellet hyväksy niitä:' + no_approved_tags: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä hashtageja. + requirements: Alin hyväksytty trendikäs hashtag on tällä hetkellä "%{lowest_tag_name}" pisteillä %{lowest_tag_score}. + subject: Uusia trendikkäitä hashtageja tarkistettavaksi %{instance} aliases: add_new: Luo alias created_msg: Uusi alias luotiin onnistuneesti. Voit nyt aloittaa siirron vanhasta tilistä. @@ -739,7 +778,7 @@ fi: auth: apply_for_account: Pyydä kutsu change_password: Salasana - checkbox_agreement_html: Hyväksyn <a href="%{rules_path}" target="_blank">palvelinsäännöt</a> ja <a href="%{terms_path}" target="_blank">käyttöehdot</a> + checkbox_agreement_html: Hyväksyn <a href="%{rules_path}" target="_blank">palvelimen käytännöt</a> ja <a href="%{terms_path}" target="_blank">käyttöehdot</a> checkbox_agreement_without_rules_html: Hyväksyn <a href="%{terms_path}" target="_blank">käyttöehdot</a> delete_account: Poista tili delete_account_html: Jos haluat poistaa tilisi, <a href="%{path}">paina tästä</a>. Poisto on vahvistettava. @@ -908,34 +947,15 @@ fi: changes_saved_msg: Muutosten tallennus onnistui! copy: Kopioi delete: Poista - no_batch_actions_available: Tällä sivulla ei ole erätoimintoja + none: Ei mitään order_by: Järjestä save_changes: Tallenna muutokset + today: tänään validation_errors: one: Kaikki ei ole aivan oikein! Tarkasta alla oleva virhe other: Kaikki ei ole aivan oikein! Tarkasta alla olevat %{count} virhettä html_validator: invalid_markup: 'sisältää virheellisen HTML-merkinnän: %{error}' - identity_proofs: - active: Aktiivinen - authorize: Kyllä, valtuuta - authorize_connection_prompt: Sallitaanko tämä salausyhteys? - errors: - failed: Salausyhteys epäonnistui. Yritä uudelleen %{provider}. - keybase: - invalid_token: Keybase-tunnukset ovat allekirjoituksia ja niiden on oltava 66 hex-merkkiä - verification_failed: Keybase ei tunnista tätä tunnusta Keybase käyttäjän %{kb_username} allekirjoituksena. Yritä uudelleen Keybasesta. - wrong_user: Todistusta käyttäjälle %{proving} ei voida luoda kirjautuessa %{current}. Kirjaudu sisään käyttäjänä %{proving} ja yritä uudelleen. - explanation_html: Täällä voit salata muita identiteettejäsi muista alustoista, kuten Keybase. Näin muut ihmiset voivat lähettää sinulle salattuja viestejä kyseisillä alustoilla ja he voivat luottaa siihen, että lähettämäsi sisältö tulee sinulta. - i_am_html: Olen %{username} %{service}. - identity: Identiteetti - inactive: Passiivinen - publicize_checkbox: 'Ja toot tämä:' - publicize_toot: 'Se on todistettu! Olen %{username} %{service}: %{url}' - remove: Poista todiste tililtä - removed: Todisteen poistaminen tililtä onnistui - status: Vahvistuksen tila - view_proof: Näytä todiste imports: errors: over_rows_processing_limit: sisältää yli %{count} riviä @@ -1020,8 +1040,18 @@ fi: warning: backreference_required: Uusi tili on ensin määritettävä viittaamaan tähän tiliin before: 'Ennen jatkamista, lue nämä huomautukset huolellisesti:' + cooldown: Muuton jälkeen on odotusaika, jonka aikana et pysty enää liikkumaan + disabled_account: Nykyinen tilisi ei ole täysin käytettävissä jälkikäteen. Sinulla on kuitenkin pääsy tietojen vientiin ja uudelleenaktivointiin. + followers: Tämä toiminto siirtää kaikki seuraajat nykyisestä tilistä uudelle tilille + only_redirect_html: Vaihtoehtoisesti voit <a href="%{path}">asettaa vain uudelleenohjauksen profiiliisi</a>. + other_data: Muita tietoja ei siirretä automaattisesti + redirect: Nykyinen tilisi profiili päivitetään, ohjataan uudelleen ja jätetään pois hausta moderation: title: Moderointi + move_handler: + carry_blocks_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka olit estänyt. + carry_mutes_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka mykistit. + copy_account_note_text: 'Tämä käyttäjä siirtyi paikasta %{acct}, tässä olivat aiemmat muistiinpanosi niistä:' notification_mailer: digest: action: Näytä kaikki ilmoitukset @@ -1052,45 +1082,99 @@ fi: body: "%{name} mainitsi sinut:" subject: "%{name} mainitsi sinut" title: Uusi maininta + poll: + subject: Äänestys käyttäjältä %{name} on päättynyt reblog: body: "%{name} buustasi tilaasi:" subject: "%{name} boostasi tilaasi" title: Uusi buustaus + status: + subject: "%{name} julkaisi juuri" + notifications: + email_events: Sähköposti-ilmoitusten tapahtumat + email_events_hint: 'Valitse tapahtumat, joista haluat saada ilmoituksia:' + other_settings: Muut ilmoitusasetukset number: human: decimal_units: format: "%n %u" units: billion: Mrd + million: M quadrillion: Brd thousand: k trillion: B + otp_authentication: + code_hint: Anna todennussovelluksen luoma koodi vahvistaaksesi + description_html: Jos otat käyttöön <strong>kaksivaiheisen todentamisen</strong>, käyttämällä todennussovellusta, kirjautumiseen vaaditaan puhelin, jolla voidaan luoda kirjautumistunnuksia. + enable: Ota käyttöön + instructions_html: "<strong>Lue tämä QR-koodi puhelimen Google Authenticator- tai vastaavalla TOTP-sovelluksella</strong>. Sen jälkeen sovellus luo tunnuksia, joita tarvitset kun kirjaudut sisään." + manual_instructions: 'Jos et voi lukea QR-koodia ja haluat syöttää sen käsin, tässä on salainen koodi tekstinä:' + setup: Asetusten määritys + wrong_code: Annettu koodi oli virheellinen! Ovatko palvelimen aika ja laitteen aika oikein? pagination: newer: Uudemmat next: Seuraava older: Vanhemmat prev: Edellinen + truncate: "…" polls: errors: + already_voted: Olet jo äänestänyt tässä äänestyksessä + duplicate_options: sisältää kaksoiskappaleita duration_too_long: on liian kaukana tulevaisuudessa duration_too_short: on liian aikainen expired: Äänestys on jo loppunut + invalid_choice: Valittua äänestysvaihtoehtoa ei ole + over_character_limit: voi olla enintään %{max} merkkiä + too_few_options: on oltava useampi kuin yksi + too_many_options: ei voi sisältää enempää kuin %{max} kohdetta preferences: other: Muut + posting_defaults: Julkaisujen oletusasetukset public_timelines: Julkiset aikajanat reactions: errors: + limit_reached: Erilaisten reaktioiden raja saavutettu unrecognized_emoji: ei ole tunnistettu emoji relationships: activity: Tilin tapahtumat + dormant: Ei aktiivinen + follow_selected_followers: Seuraa valittuja seuraajia followers: Seuraajat following: Seuratut invited: Kutsuttu + last_active: Viimeksi aktiivinen + most_recent: Viimeisin + moved: Muuttaneet + mutual: Molemminpuoleinen + primary: Ensisijainen + relationship: Suhde + remove_selected_domains: Poista kaikki seuraajat valituista verkkotunnuksista + remove_selected_followers: Poista valitut seuraajat + remove_selected_follows: Lopeta valittujen käyttäjien seuraaminen + status: Tilin tila remote_follow: acct: Syötä se käyttäjätunnus@verkkotunnus, josta haluat seurata missing_resource: Vaadittavaa uudelleenohjaus-URL:ää tiliisi ei löytynyt + no_account_html: Eikö sinulla ole tiliä? Voit <a href='%{sign_up_path}' target='_blank'>rekisteröityä täällä</a> proceed: Siirry seuraamaan prompt: 'Olet aikeissa seurata:' + reason_html: "<strong>Miksi tämä vaihe on tarpeen?</strong> <code>%{instance}</code> ei ehkä ole se palvelin, jolle olet rekisteröitynyt, joten meidän täytyy ensin ohjata sinut kotipalvelimellesi." + remote_interaction: + favourite: + proceed: Jatka suosikiksi lisäämiseen + prompt: 'Haluat lisätä suosikiksi julkaisun:' + reblog: + proceed: Jatka buustaamiseen + prompt: 'Haluat buustata julkaisun:' + reply: + proceed: Jatka vastaamiseen + prompt: 'Haluat vastata julkaisuun:' + 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 + too_soon: Ajoitetun päivämäärän on oltava tulevaisuudessa sessions: activity: Viimeisin toiminta browser: Selain @@ -1100,8 +1184,13 @@ fi: chrome: Chrome edge: Microsoft Edge electron: Electron + firefox: Firefox generic: Tuntematon selain + ie: Internet Explorer + micro_messenger: MicroMessenger nokia: Nokia S40 Ovi -selain + opera: Opera + otter: Otter phantom_js: PhantomJS qq: QQ Browser safari: Safari @@ -1127,6 +1216,7 @@ fi: revoke: Hylkää revoke_success: Istunnon hylkäys onnistui title: Istunnot + view_authentication_history: Näytä tilisi todennushistoria settings: account: Tili account_settings: Tilin asetukset @@ -1145,25 +1235,34 @@ fi: notifications: Ilmoitukset preferences: Ominaisuudet profile: Profiili - relationships: Seurattavat ja seuraajat + relationships: Seuratut ja seuraajat + statuses_cleanup: Automaattinen viestin poisto two_factor_authentication: Kaksivaiheinen todentaminen + webauthn_authentication: Suojausavaimet statuses: attached: + audio: + one: "%{count} ääni" + other: "%{count} ääntä" description: 'Liitetty: %{attached}' image: one: "%{count} kuva" other: "%{count} kuvaa" + video: + one: "%{count} video" + other: "%{count} videota" + boosted_from_html: Tehostettu %{acct_link} content_warning: 'Sisältövaroitus: %{warning}' disallowed_hashtags: one: 'sisälsi aihetunnisteen jota ei sallita: %{tags}' other: 'sisälsi aihetunnisteet joita ei sallita: %{tags}' - language_detection: Tunnista kieli automaattisesti + 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: limit: Olet jo kiinnittänyt suurimman mahdollisen määrän tuuttauksia ownership: Muiden tuuttauksia ei voi kiinnittää - private: Piilotettua tuuttausta ei voi kiinnittää reblog: Buustausta ei voi kiinnittää poll: total_people: @@ -1195,6 +1294,7 @@ fi: ignore_favs: Ohita suosikit ignore_reblogs: Ohita tehostukset 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_media: Säilytä viestit, joissa on liitetiedostoja keep_media_hint: Ei poista viestejä, joissa on liitteitä @@ -1210,10 +1310,11 @@ fi: '1209600': 2 viikkoa '15778476': 6 kuukautta '2629746': 1 kuukausi - '31556952': 1 year - '5259492': 2 months - '63113904': 2 years - '7889238': 3 months + '31556952': 1 vuosi + '5259492': 2 kuukautta + '63113904': 2 vuotta + '7889238': 3 kuukautta + min_age_label: Ikäraja stream_entries: pinned: Kiinnitetty tuuttaus reblogged: buustasi @@ -1221,26 +1322,46 @@ fi: terms: title: "%{instance}, käyttöehdot ja tietosuojakäytäntö" themes: - default: Mastodon + contrast: Mastodon (Korkea kontrasti) + default: Mastodon (Tumma) + mastodon-light: Mastodon (Vaalea) time: formats: default: "%d.%m.%Y klo %H.%M" + month: "%b %Y" two_factor_authentication: + add: Lisää disable: Poista käytöstä + edit: Muokkaa enabled: Kaksivaiheinen todentaminen käytössä enabled_success: Kaksivaiheisen todentamisen käyttöönotto onnistui generate_recovery_codes: Luo palautuskoodit lost_recovery_codes: Palautuskoodien avulla voit käyttää tiliä, jos menetät puhelimesi. Jos olet hukannut palautuskoodit, voit luoda uudet tästä. Vanhat palautuskoodit poistetaan käytöstä. + methods: Kaksivaiheisen tunnistautumisen menetelmät + otp: Todennussovellus recovery_codes: Varapalautuskoodit recovery_codes_regenerated: Uusien palautuskoodien luonti onnistui recovery_instructions_html: Jos menetät puhelimesi, voit kirjautua tilillesi jollakin alla olevista palautuskoodeista. <strong>Pidä palautuskoodit hyvässä tallessa</strong>. Voit esimerkiksi tulostaa ne ja säilyttää muiden tärkeiden papereiden joukossa. + webauthn: Suojausavaimet user_mailer: backup_ready: explanation: Pyysit täydellistä varmuuskopiota Mastodon-tilistäsi. Voit nyt ladata sen! subject: Arkisto on valmiina ladattavaksi title: Arkiston tallennus + sign_in_token: + details: 'Tässä yrityksen yksityiskohtia:' + explanation: 'Tunnistimme sisäänkirjautumisyrityksen tunnistamattomasta IP-osoitteesta. Jos se olit sinä, syötä alla oleva turvakoodi sisäänkirjautumissivulle:' + further_actions: 'Jos tämä et ollut sinä, vaihda salasanasi ja ota käyttöön kaksivaiheinen todennus tililläsi. Voit tehdä sen täällä:' + subject: Ole hyvä ja vahvista sisäänkirjautumisyritys + title: Sisäänkirjautumisyritys warning: + review_server_policies: Tarkista palvelimen käytännöt + subject: + disable: Tilisi %{acct} on jäädytetty + none: Varoitus %{acct} title: + disable: Tili jäädytetty + none: Varoitus silence: Rajoitettu tili suspend: Tilin käyttäminen keskeytetty welcome: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 6fc840824..7fde95d4f 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -16,14 +16,14 @@ fr: contact: Contact contact_missing: Non défini contact_unavailable: Non disponible - discover_users: Découvrez des utilisateur·rice·s + discover_users: Découvrez des utilisateurs documentation: Documentation federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre les gens sur n’importe quel serveur Mastodon et au-delà. get_apps: Essayez une application mobile hosted_on: Serveur Mastodon hébergé par %{domain} instance_actor_flash: | - Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un utilisateur individuel. - 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 bloqueur de domaine. + 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. learn_more: En savoir plus privacy_policy: Politique de confidentialité rules: Règles du serveur @@ -43,14 +43,14 @@ fr: reason: Motif rejecting_media: 'Les fichiers média de ces serveurs ne seront ni traités ni stockés, et aucune miniature ne sera affichée, rendant nécessaire de cliquer vers le fichier d’origine :' rejecting_media_title: Médias filtrés - silenced: 'Les messages de ces serveurs seront cachés des flux publics et conversations, et les interactions de leurs utilisateurs ne donneront lieu à aucune notification, à moins que vous ne les suiviez :' + silenced: 'Les messages de ces serveurs seront cachés des flux publics et conversations, et les interactions de leurs utilisateur·rice·s ne donneront lieu à aucune notification, à moins que vous ne les suiviez :' silenced_title: Serveurs masqués - suspended: 'Aucune donnée venant de ces serveurs ne sera traitée, stockée ou échangée, rendant impossible toute interaction ou communication avec les utilisateurs de ces serveurs :' + suspended: 'Aucune donnée venant de ces serveurs ne sera traitée, stockée ou échangée, rendant impossible toute interaction ou communication avec les utilisateur·rice·s de ces serveurs :' suspended_title: Serveurs suspendus unavailable_content_html: Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateur·rice·s de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier. user_count_after: one: utilisateur - other: utilisateurs + other: utilisateur·rice·s user_count_before: Abrite what_is_mastodon: Qu’est-ce que Mastodon ? accounts: @@ -59,11 +59,11 @@ fr: featured_tags_hint: Vous pouvez mettre en avant certains hashtags qui seront affichés ici. follow: Suivre followers: - one: Abonné + one: Abonné·e other: Abonné·e·s following: Abonnements instance_actor_flash: Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un utilisateur individuel. Il est utilisé à des fins de fédération et ne doit pas être suspendu. - joined: Inscrit en %{date} + joined: Inscrit·e en %{date} last_active: dernière activité link_verified_on: La propriété de ce lien a été vérifiée le %{date} media: Médias @@ -74,7 +74,7 @@ fr: people_followed_by: Personnes suivies par %{name} people_who_follow: Personnes qui suivent %{name} pin_errors: - following: Vous devez être déjà abonné à la personne que vous désirez recommander + following: Vous devez être déjà abonné·e à la personne que vous désirez recommander posts: one: Message other: Messages @@ -84,7 +84,7 @@ fr: admin: Admin bot: Robot group: Groupe - moderator: Modérateur + moderator: Modérateur·trice unavailable: Profil non disponible unfollow: Ne plus suivre admin: @@ -99,7 +99,6 @@ fr: accounts: add_email_domain_block: Mettre le domaine du courriel sur liste noire approve: Approuver - approve_all: Tout approuver approved_msg: La demande d’inscription de %{username} a été approuvée avec succès are_you_sure: Voulez-vous vraiment faire ça ? avatar: Avatar @@ -114,6 +113,7 @@ fr: confirm: Confirmer confirmed: Confirmé confirming: Confirmation + custom: Personnalisé delete: Supprimer les données deleted: Supprimé demote: Rétrograder @@ -131,14 +131,14 @@ fr: enable_sign_in_token_auth: Activer l'authentification basée sur les jetons envoyés par courriel enabled: Activé enabled_msg: Le compte de %{username} a été débloqué avec succès - followers: Abonnés + followers: Abonné·e·s follows: Abonnements header: Entête inbox_url: URL d’entrée invite_request_text: Raisons de l’adhésion invited_by: Invité par ip: Adresse IP - joined: Inscrit depuis + joined: Inscrit·e depuis location: all: Tous local: Local @@ -146,14 +146,13 @@ fr: title: Situation login_status: Statut de connexion media_attachments: Fichiers médias - memorialize: Convertir en mémorial - memorialized: Mis en mémoire + memorialize: Ériger en mémorial + memorialized: Compte érigé en mémorial memorialized_msg: Transformation réussie de %{username} en un compte mémorial moderation: active: Actifs all: Tous pending: En cours de traitement - silenced: Masqués suspended: Suspendus title: Modération moderation_notes: Notes de modération @@ -171,14 +170,13 @@ fr: redownload: Rafraîchir le profil redownloaded_msg: Le profil de %{username} a été actualisé avec succès depuis l’origine reject: Rejeter - reject_all: Tout rejeter rejected_msg: La demande d’inscription de %{username} a été rejetée avec succès remove_avatar: Supprimer l’avatar remove_header: Supprimer l’entête removed_avatar_msg: L’avatar de %{username} a été supprimé avec succès removed_header_msg: L’image d’en-tête de %{username} a été supprimée avec succès resend_confirmation: - already_confirmed: Cet utilisateur est déjà confirmé + already_confirmed: Cet·te utilisateur·rice est déjà confirmé·e send: Renvoyer un courriel de confirmation success: Courriel de confirmation envoyé avec succès ! reset: Réinitialiser @@ -191,8 +189,8 @@ fr: staff: Équipe user: Utilisateur search: Rechercher - search_same_email_domain: Autres utilisateurs avec le même domaine de courriel - search_same_ip: Autres utilisateurs avec la même IP + search_same_email_domain: Autres utilisateurs·trices avec le même domaine de courriel + search_same_ip: Autres utilisateur·rice·s avec la même IP security_measures: only_password: Mot de passe uniquement password_and_2fa: Mot de passe et 2FA @@ -206,12 +204,14 @@ fr: silence: Masquer silenced: Masqué statuses: Statuts + strikes: Punitions précédentes subscribe: S’abonner 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. - time_in_queue: En file d’attente %{time} title: Comptes + unblock_email: Débloquer l'adresse courriel + unblocked_email_msg: L'adresse courriel de %{username} a été débloquée avec succès unconfirmed_email: Courriel non confirmé undo_sensitized: Annuler sensible undo_silenced: Ne plus masquer @@ -219,13 +219,14 @@ fr: unsilenced_msg: Le compte de %{username} a été illimité avec succès unsubscribe: Se désabonner unsuspended_msg: Le compte de %{username} a été réactivé avec succès - username: Nom d’utilisateur + username: Nom d’utilisateur·ice view_domain: Voir le résumé du domaine warn: Avertissement web: Web whitelisted: Sur liste blanche action_logs: action_types: + approve_user: Approuver l’utilisateur assigned_to_self_report: Affecter le signalement change_email_user: Modifier le courriel pour confirm_user: Confirmer l’utilisateur @@ -237,24 +238,26 @@ fr: create_email_domain_block: Créer un blocage de domaine de courriel create_ip_block: Créer une règle IP create_unavailable_domain: Créer un domaine indisponible - demote_user: Rétrograder l’utilisateur + demote_user: Rétrograder l’utilisateur·ice destroy_announcement: Supprimer l’annonce destroy_custom_emoji: Supprimer des émojis personnalisés destroy_domain_allow: Supprimer le domaine autorisé destroy_domain_block: Supprimer le blocage de domaine 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_unavailable_domain: Supprimer le domaine indisponible disable_2fa_user: Désactiver l’A2F disable_custom_emoji: Désactiver les émojis personnalisés - disable_sign_in_token_auth_user: Désactiver l'authentification basée sur les jetons envoyés par courriel pour l'utilisateur - disable_user: Désactiver l’utilisateur + disable_sign_in_token_auth_user: Désactiver l'authentification basée sur les jetons envoyés par courriel pour l'utilisateur·rice + disable_user: Désactiver le compte enable_custom_emoji: Activer les émojis personnalisées - enable_sign_in_token_auth_user: Activer l'authentification basée sur les jetons envoyés par courriel pour l'utilisateur + enable_sign_in_token_auth_user: Activer l'authentification basée sur les jetons envoyés par courriel pour l'utilisateur·rice enable_user: Activer l’utilisateur - memorialize_account: Se souvenir du compte + memorialize_account: Ériger en mémorial promote_user: Promouvoir l’utilisateur + reject_user: Rejeter l’utilisateur remove_avatar_user: Supprimer l’avatar reopen_report: Rouvrir le signalement reset_password_user: Réinitialiser le mot de passe @@ -263,6 +266,7 @@ fr: silence_account: Masque le compte suspend_account: Suspendre le compte unassigned_report: Ne plus assigner le signalement + unblock_email_account: Débloquer l'adresse courriel unsensitive_account: Ne pas marquer les médias de votre compte comme sensibles unsilence_account: Ne plus masquer le compte unsuspend_account: Annuler la suspension du compte @@ -271,9 +275,10 @@ fr: update_domain_block: Mettre à jour le blocage de domaine update_status: Mettre à jour le statut actions: - assigned_to_self_report_html: "%{name} s’est assigné le signalement de %{target}" - change_email_user_html: "%{name} a modifié l'adresse de courriel de l'utilisateur %{target}" - confirm_user_html: "%{name} a confirmé l'adresse courriel de l'utilisateur·rice %{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}" + confirm_user_html: "%{name} a confirmé l'adresse courriel de l'utilisateur %{target}" create_account_warning_html: "%{name} a envoyé un avertissement à %{target}" create_announcement_html: "%{name} a créé une nouvelle annonce %{target}" create_custom_emoji_html: "%{name} a téléversé un nouvel émoji %{target}" @@ -282,32 +287,35 @@ fr: create_email_domain_block_html: "%{name} a bloqué de domaine de courriel %{target}" create_ip_block_html: "%{name} a créé une règle pour l'IP %{target}" create_unavailable_domain_html: "%{name} a arrêté la livraison vers le domaine %{target}" - demote_user_html: "%{name} a rétrogradé l'utilisateur %{target}" + demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}" destroy_announcement_html: "%{name} a supprimé l'annonce %{target}" destroy_custom_emoji_html: "%{name} a détruit l'émoji %{target}" destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}" destroy_domain_block_html: "%{name} a débloqué le domaine %{target}" 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_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 %{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}" disable_sign_in_token_auth_user_html: "%{name} a désactivé l'authentification basée sur les jetons envoyés par courriel pour %{target}" - disable_user_html: "%{name} a désactivé la connexion de l'utilisateur %{target}" + disable_user_html: "%{name} a désactivé la connexion de l'utilisateur·rice %{target}" enable_custom_emoji_html: "%{name} a activé l'émoji %{target}" enable_sign_in_token_auth_user_html: "%{name} a activé l'authentification basée sur les jetons envoyés par courriel pour %{target}" - enable_user_html: "%{name} a activé la connexion de l'utilisateur %{target}" + 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 %{target}" + promote_user_html: "%{name} a promu l'utilisateur·rice %{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}" - reset_password_user_html: "%{name} a réinitialisé le mot de passe de l'utilisateur %{target}" + reset_password_user_html: "%{name} a réinitialisé le mot de passe de l'utilisateur·rice %{target}" resolve_report_html: "%{name} a résolu le signalement %{target}" sensitive_account_html: "%{name} a marqué le média de %{target} comme sensible" silence_account_html: "%{name} a masqué le compte de %{target}" suspend_account_html: "%{name} a suspendu le compte de %{target}" unassigned_report_html: "%{name} a désassigné le signalement %{target}" + unblock_email_account_html: "%{name} a débloqué l'adresse courriel de %{target}" unsensitive_account_html: "%{name} a enlevé le marquage comme sensible du média de %{target}" unsilence_account_html: "%{name} a enlevé le masquage du compte de %{target}" unsuspend_account_html: "%{name} a réactivé le compte de %{target}" @@ -318,7 +326,7 @@ fr: deleted_status: "(statut supprimé)" empty: Aucun journal trouvé. filter_by_action: Filtrer par action - filter_by_user: Filtrer par utilisateur + filter_by_user: Filtrer par utilisateur·ice title: Journal d’audit announcements: destroyed_msg: Annonce supprimée avec succès ! @@ -346,7 +354,7 @@ fr: create_new_category: Créer une nouvelle catégorie created_msg: Émoji créé avec succès ! delete: Supprimer - destroyed_msg: Émoji supprimé avec succès! + destroyed_msg: Émoji supprimé avec succès ! disable: Désactiver disabled: Désactivé disabled_msg: Émoji désactivé avec succès @@ -368,7 +376,7 @@ fr: unlist: Délister unlisted: Délisté update_failed_msg: Cet émoji n'a pas pu être mis à jour - updated_msg: Émoji mis à jour avec succès! + updated_msg: Émoji mis à jour avec succès ! upload: Téléverser dashboard: active_users: utilisateurs actifs @@ -383,8 +391,8 @@ fr: one: "<strong>1</strong> hashtag en attente" other: "<strong>%{count}</strong> hashtags en attente" pending_users_html: - one: "<strong>1</strong> utilisateur en attente" - other: "<strong>%{count}</strong> utilisateurs en attente" + one: "<strong>1</strong> utilisateur·rice en attente" + other: "<strong>%{count}</strong> utilisateur·rice·s en attente" resolved_reports: rapports résolus software: Logiciel sources: Sources d'inscription @@ -403,7 +411,7 @@ fr: created_msg: Le blocage de domaine est désormais activé destroyed_msg: Le blocage de domaine a été désactivé domain: Domaine - edit: Modifier le bloqueur de domaine + edit: Modifier le blocage de domaine existing_domain_block_html: Vous avez déjà imposé des limites plus strictes à %{name}, vous devez d’abord le <a href="%{unblock_url}">débloquer</a>. new: create: Créer le blocage @@ -438,8 +446,8 @@ fr: suspend: Annuler la suspension des comptes existants affectés pour ce domaine title: Annuler le blocage du domaine %{domain} undo: Annuler - undo: Annuler le bloqueur de domaine - view: Afficher les bloqueurs de domaines + undo: Annuler le blocage de domaine + view: Afficher les blocages de domaines email_domain_blocks: add_new: Ajouter created_msg: Le blocage de domaine de courriel est désormais activé @@ -453,7 +461,7 @@ fr: title: Nouveau blocage de domaine de courriel title: Blocage de domaines de courriel follow_recommendations: - description_html: "<strong>Les recommandations d'abonnement aident les nouvelles personnes à trouver rapidement du contenu intéressant</strong>. Si un utilisateur n'a pas assez interagi avec les autres pour avoir des recommandations personnalisées, ces comptes sont alors recommandés. La sélection est mise à jour quotidiennement depuis un mélange de comptes ayant le plus d'interactions récentes et le plus grand nombre d'abonnés locaux pour une langue donnée." + description_html: "<strong>Les recommandations d'abonnement aident les nouvelles personnes à trouver rapidement du contenu intéressant</strong>. Si un·e utilisateur·rice n'a pas assez interagi avec les autres pour avoir des recommandations personnalisées, ces comptes sont alors recommandés. La sélection est mise à jour quotidiennement depuis un mélange de comptes ayant le plus d'interactions récentes et le plus grand nombre d'abonné·e·s locaux pour une langue donnée." language: Pour la langue status: État suppress: Supprimer les recommandations d'abonnement @@ -465,6 +473,7 @@ fr: back_to_limited: Limité back_to_warning: Avertissement by_domain: Domaine + confirm_purge: Êtes-vous sûr de vouloir supprimer définitivement les données de ce domaine ? delivery: all: Tout clear: Effacer les erreurs de livraison @@ -480,6 +489,7 @@ fr: delivery_available: Livraison disponible delivery_error_days: Jours d'erreur de livraison delivery_error_hint: Si la livraison n'est pas possible pendant %{count} jours, elle sera automatiquement marquée comme non livrable. + destroyed_msg: Les données de %{domain} sont maintenant en file d'attente pour une suppression imminente. empty: Aucun domaine trouvé. known_accounts: one: "%{count} compte connu" @@ -490,6 +500,7 @@ fr: title: Modération private_comment: Commentaire privé public_comment: Commentaire public + purge: Purge title: Fédération total_blocked_by_us: Bloqués par nous total_followed_by_them: Suivi par eux @@ -519,8 +530,6 @@ fr: title: Créer une nouvelle règle IP no_ip_block_selected: Aucune règle IP n’a été modifiée car aucune n’a été sélectionnée title: Règles IP - pending_accounts: - title: Comptes en attente (%{count}) relationships: title: Relations de %{acct} relays: @@ -542,32 +551,44 @@ fr: report_notes: created_msg: Note de signalement créée avec succès ! destroyed_msg: Note de signalement effacée avec succès ! + today_at: Aujourd'hui à %{time} reports: account: notes: one: "%{count} note" other: "%{count} notes" - reports: - one: "%{count} signalement" - other: "%{count} signalements" + action_log: Journal d’audit action_taken_by: Intervention de + actions: + other_description_html: Voir plus d'options pour contrôler le comportement du compte et personnaliser la communication vers le compte signalé. + 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 :' + add_to_report: Ajouter davantage au rapport are_you_sure: Voulez-vous vraiment faire ça ? assign_to_self: Me l’assigner assigned: Modérateur assigné by_target_domain: Domaine du compte signalé + category: Catégorie + category_description_html: La raison pour laquelle ce compte et/ou ce contenu a été signalé sera citée dans la communication avec le compte signalé comment: none: Aucun + comment_description_html: 'Pour fournir plus d''informations, %{name} a écrit :' created_at: Signalé + delete_and_resolve: Supprimer et résoudre forwarded: Transféré forwarded_to: Transféré à %{domain} mark_as_resolved: Marquer comme résolu mark_as_unresolved: Marquer comme non-résolu + no_one_assigned: Personne notes: create: Ajouter une note create_and_resolve: Résoudre avec une note create_and_unresolve: Ré-ouvrir avec une note delete: Supprimer 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 reopen: Ré-ouvrir le signalement report: 'Signalement #%{id}' reported_account: Compte signalé @@ -575,25 +596,28 @@ fr: resolved: Résolus resolved_msg: Signalement résolu avec succès ! status: Statut + statuses: Contenu signalé + statuses_description_html: Le contenu offensant sera cité dans la communication avec le compte signalé target_origin: Origine du compte signalé title: Signalements unassign: Dés-assigner unresolved: Non résolus updated_at: Mis à jour + view_profile: Voir le profil rules: add_new: Ajouter une règle delete: Supprimer - description_html: Bien que la plupart des gens prétende avoir lu les conditions d'utilisation avant de les accepter, généralement les utilisateurs ne les lisent vraiment que lorsque un problème apparaît. <strong>Pour faciliter la visualisation des règles de votre serveur en un seul coup d’œil, présentez-les sous la forme d'une liste à puces !</strong> Essayez de garder chacune des règles simple et concise, mais faites attention à ne pas non plus les diviser en de trop nombreux éléments distincts. + description_html: Bien que la plupart des gens prétende avoir lu les conditions d'utilisation avant de les accepter, généralement les utilisateur·rice·s ne les lisent vraiment que lorsque un problème apparaît. <strong>Pour faciliter la visualisation des règles de votre serveur en un seul coup d’œil, présentez-les sous la forme d'une liste à puces !</strong> Essayez de garder chacune des règles simple et concise, mais faites attention à ne pas non plus les diviser en de trop nombreux éléments distincts. edit: Modifier la règle empty: Aucune règle de serveur n'a été définie pour l'instant. title: Règles du serveur settings: activity_api_enabled: - desc_html: Nombre de statuts affichés localement, de comptes actifs et de nouvelles inscriptions regroupés par semaine - title: Publier des statistiques agrégées sur l’activité des utilisateurs + desc_html: Nombre de messages publiés localement, de comptes actifs et de nouvelles inscriptions regroupés par semaine + title: Publier des statistiques agrégées sur l’activité des utilisateur·rice·s bootstrap_timeline_accounts: - desc_html: Séparez les noms d’utilisateurs par des virgules. Ne fonctionne qu’avec des comptes locaux et non verrouillés. Si laissé vide, tous les administrateurs locaux sont sélectionnés - title: Abonnements par défaut pour les nouveaux utilisateurs + desc_html: Séparez les noms d'utilisateur·rice·s par des virgules. Ces comptes seront affichés dans les recommendations d'abonnement + title: Recommender ces comptes aux nouveaux·elles utilisateur·rice·s contact_information: email: Entrez une adresse courriel publique username: Entrez un nom d’utilisateur·ice @@ -606,8 +630,8 @@ fr: domain_blocks: all: À tout le monde disabled: À personne - title: Afficher les bloqueurs de domaines - users: Aux utilisateurs connectés localement + title: Afficher le blocage de domaines + users: Aux utilisateur·rice·s connecté·e·s localement domain_blocks_rationale: title: Montrer la raison hero: @@ -618,19 +642,19 @@ fr: title: Image de la mascotte peers_api_enabled: desc_html: Noms des domaines que ce serveur a découvert dans le fédiverse - title: Publier la liste des serveurs découverts + title: Publier la liste des serveurs découverts dans l’API preview_sensitive_media: desc_html: Les aperçus de lien sur les autres sites web afficheront une vignette même si les médias sont marqués comme sensibles title: Montrer les médias sensibles dans les prévisualisations OpenGraph profile_directory: - desc_html: Permettre aux utilisateurs d’être découverts + desc_html: Permettre aux utilisateur·ice·s d’être découvert·e·s title: Activer l’annuaire des profils registrations: closed_message: desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées. Vous pouvez utiliser des balises HTML title: Message de fermeture des inscriptions deletion: - desc_html: Permettre à tous les utilisateurs de supprimer leur compte + desc_html: Permettre à tou·te·s les utilisateur·rice·s de supprimer leur compte title: Autoriser les suppressions de compte min_invite_role: disabled: Personne @@ -648,7 +672,7 @@ fr: desc_html: Lorsque désactivée, restreint le fil public accessible via la page d’accueil de l’instance pour ne montrer que le contenu local title: Inclure le contenu fédéré sur la page de fil public sans authentification show_staff_badge: - desc_html: Montrer un badge de responsable sur une page utilisateur + desc_html: Montrer un badge de responsable sur une page utilisateur·rice title: Montrer un badge de responsable site_description: desc_html: Paragraphe introductif sur la page d’accueil. Décrivez ce qui rend spécifique ce serveur Mastodon et toute autre chose importante. Vous pouvez utiliser des balises HTML, en particulier <code><a></code> et <code><em></code>. @@ -681,15 +705,13 @@ fr: destroyed_msg: Téléversement sur le site supprimé avec succès ! statuses: back_to_account: Retour à la page du compte + back_to_report: Retour à la page du rapport batch: - delete: Supprimer - nsfw_off: Marquer comme non-sensible - nsfw_on: Marquer comme sensible + remove_from_report: Retirer du rapport + report: Signalement deleted: Supprimé - failed_to_execute: Erreur d’exécution media: title: Médias - no_media: Aucun média no_status_selected: Aucun statut n’a été modifié car aucun n’a été sélectionné title: Statuts du compte with_media: Avec médias @@ -702,21 +724,51 @@ fr: sidekiq_process_check: message_html: Aucun processus Sidekiq en cours d'exécution pour la/les file(s) d'attente %{value}. Veuillez vérifier votre configuration de Sidekiq tags: - accounts_today: Utilisations uniques aujourd'hui - accounts_week: Utilisation unique cette semaine - breakdown: Répartition de l’utilisation actuelle par source - last_active: Dernière activité - most_popular: Plus populaire - most_recent: Plus récent - name: Hashtag review: État du traitement - reviewed: Traité - title: Hashtags - trending_right_now: Populaire en ce moment - unique_uses_today: "%{count} publications aujourd'hui" - unreviewed: Non traité updated_msg: Paramètres du hashtag mis à jour avec succès title: Administration + trends: + allow: Autoriser + approved: Approuvé + disallow: Interdire + links: + allow: Autoriser le lien + allow_provider: Autoriser l'éditeur + 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 + title: Liens tendances + usage_comparison: Partagé %{today} fois aujourd'hui, comparé à %{yesterday} hier + pending_review: En attente de révision + preview_card_providers: + allowed: Les liens de cet éditeur peuvent être tendance + rejected: Les liens de cet éditeur ne seront pas considérés tendance + title: Éditeurs + rejected: Rejeté + tags: + current_score: Score actuel %{score} + dashboard: + tag_accounts_measure: utilisations uniques + tag_languages_dimension: Langues principales + tag_servers_dimension: Meilleurs serveurs + tag_servers_measure: différents serveurs + tag_uses_measure: utilisations totales + listable: Peut être suggéré + not_listable: Ne sera pas suggéré + not_trendable: N'apparaîtra pas sous les tendances + not_usable: Ne peut être utilisé + peaked_on_and_decaying: A atteint son maximum le %{date}, maintenant en déclin + title: Hashtags tendance + trendable: Peut apparaître sous les tendances + trending_rank: 'Tendance #%{rank}' + 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 + title: Tendances warning_presets: add_new: Ajouter un nouveau delete: Supprimer @@ -731,9 +783,16 @@ fr: body: "%{reporter} a signalé %{target}" body_remote: Quelqu’un de %{domain} a signalé %{target} subject: Nouveau signalement sur %{instance} (#%{id}) - new_trending_tag: - body: 'Le hashtag #%{name} est dans les tendances aujourd’hui, mais il n’a pas encore été approuvé. Il ne sera pas affiché publiquement à moins que vous l’autorisiez. Sauvegardez simplement ce formulaire tel quel pour ne plus jamais en entendre parler.' - subject: Nouveau hashtag en attente d’approbation sur %{instance} (#%{name}) + new_trending_links: + body: Les liens suivants sont tendance aujourd'hui, mais leurs éditeurs n'ont pas été révisés auparavant. Ils ne seront pas affichés publiquement à moins que vous ne les approuviez. De nouvelles notifications provenant des mêmes éditeurs ne seront pas générées. + no_approved_links: Il n'y a actuellement aucun lien tendance approuvé. + requirements: Le lien tendance le plus bas est actuellement "%{lowest_link_title}" avec un score de %{lowest_link_score}. + subject: Nouveaux liens tendance à examiner sur %{instance} + new_trending_tags: + body: 'Les hashtags suivants sont tendances aujourd''hui, mais ils n''ont pas été examinés précédemment. Ils ne seront pas affichés publiquement à moins que vous ne les approuviez :' + no_approved_tags: Il n'y a actuellement aucun hashtag tendance approuvé. + requirements: 'Le hashtag tendance le plus bas est actuellement #%{lowest_tag_name} avec un score de %{lowest_tag_score}.' + subject: Nouveaux hashtags tendance à réviser sur %{instance} aliases: add_new: Créer un alias created_msg: Un nouvel alias a été créé avec succès. Vous pouvez maintenant déménager depuis l'ancien compte. @@ -778,13 +837,14 @@ fr: description: prefix_invited_by_user: "@%{name} vous invite à rejoindre ce serveur Mastodon !" prefix_sign_up: Inscrivez-vous aujourd’hui sur Mastodon ! - suffix: Avec un compte, vous pourrez suivre des gens, publier des statuts et échanger des messages avec les utilisateurs de n'importe quel serveur Mastodon et bien plus ! + suffix: Avec un compte, vous pourrez suivre des gens, publier des statuts et échanger des messages avec les utilisateur·rice·s de n'importe quel serveur Mastodon et bien plus ! didnt_get_confirmation: Vous n’avez pas reçu les consignes de confirmation ? dont_have_your_security_key: Vous n'avez pas votre clé de sécurité? forgot_password: Mot de passe oublié ? invalid_reset_password_token: Le lien de réinitialisation du mot de passe est invalide ou a expiré. Merci de réessayer. link_to_otp: Entrez un code à deux facteurs de votre téléphone ou un code de récupération link_to_webauth: Utilisez votre appareil de clé de sécurité + log_in_with: Se connecter via login: Se connecter logout: Se déconnecter migrate_account: Déménager vers un compte différent @@ -821,7 +881,7 @@ fr: following: 'Youpi ! Vous suivez maintenant :' post_follow: close: Ou bien, vous pouvez fermer cette fenêtre. - return: Afficher le profil de l’utilisateur + return: Afficher le profil de l’utilisateur·ice web: Retour à l’interface web title: Suivre %{acct} challenge: @@ -866,11 +926,11 @@ fr: email_reconfirmation_html: Si vous ne recevez pas le courriel de confirmation, vous pouvez le <a href="%{path}">demander à nouveau</a> irreversible: Vous ne pourrez pas restaurer ou réactiver votre compte more_details_html: Pour plus de détails, voir la <a href="%{terms_path}">politique de confidentialité</a>. - username_available: Votre nom d’utilisateur sera à nouveau disponible - username_unavailable: Votre nom d’utilisateur restera indisponible + username_available: Votre nom d’utilisateur·rice sera à nouveau disponible + username_unavailable: Votre nom d’utilisateur·rice restera indisponible directories: directory: Annuaire des profils - explanation: Découvrir des utilisateurs en selon leurs centres d’intérêt + explanation: Découvrir des utilisateur·rice·s en fonction de leurs centres d’intérêt explore_mastodon: Explorer %{title} domain_validator: invalid_domain: n’est pas un nom de domaine valide @@ -885,12 +945,12 @@ fr: title: Vérification de sécurité échouée '429': Trop de requêtes émises dans un délai donné '500': - content: Nous sommes désolés, mais quelque chose s’est mal passé de notre côté. + content: Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté. title: Cette page n’est pas correcte '503': La page n'a pas pu être servie en raison d'une défaillance temporaire du serveur. noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript. Sinon, essayez l’une des <a href="%{apps_path}">applications natives</a> pour Mastodon pour votre plate-forme. existing_username_validator: - not_found: n’a pas trouvé d’utilisateur local avec ce nom + not_found: impossible de trouver un·e utilisateur·ice local·e de ce nom not_found_multiple: n’a pas trouvé %{usernames} exports: archive_takeout: @@ -903,7 +963,7 @@ fr: blocks: Vous bloquez bookmarks: Signets csv: CSV - domain_blocks: Bloqueurs de domaine + domain_blocks: Blocages de domaine lists: Listes mutes: Vous masquez storage: Médias stockés @@ -940,34 +1000,15 @@ fr: changes_saved_msg: Les modifications ont été enregistrées avec succès ! copy: Copier delete: Supprimer - no_batch_actions_available: Aucune action par lots disponible sur cette page + none: Aucun order_by: Classer par save_changes: Enregistrer les modifications + today: aujourd’hui validation_errors: one: Quelque chose ne va pas ! Veuillez vérifiez l’erreur ci-dessous other: Certaines choses ne vont pas ! Veuillez vérifiez les %{count} erreurs ci-dessous html_validator: invalid_markup: 'contient un balisage HTML invalide: %{error}' - identity_proofs: - active: Active - authorize: Oui, autoriser - authorize_connection_prompt: Autoriser cette connexion chiffrée ? - errors: - failed: La connexion chiffrée a échoué. Veuillez réessayer à partir de %{provider}. - keybase: - invalid_token: Les jetons Keybase sont des hachages de signatures et doivent comporter 66 caractères hexadécimaux - verification_failed: Keybase ne reconnaît pas ce jeton comme une signature de l’utilisateur Keybase %{kb_username}. Veuillez réessayer à partir de Keybase. - wrong_user: Impossible de créer une preuve pour %{proving} lorsque vous êtes connecté en tant que %{current}. Connectez-vous en tant que %{proving} et réessayez. - explanation_html: Ici, vous pouvez connecter de manière chiffrée vos autres identités, par exemple un profil Keybase. Cela permet à d’autres personnes de vous envoyer des messages chiffrés et de faire confiance au contenu que vous leur envoyez. - i_am_html: Je suis %{username} sur %{service}. - identity: Identité - inactive: Inactive - publicize_checkbox: 'Et publier ceci :' - publicize_toot: 'C’est prouvé ! Je suis %{username} sur %{service}: %{url}' - remove: Retirer la preuve du compte - removed: Preuve retirée du compte avec succès - status: État de la vérification - view_proof: Voir la preuve imports: errors: over_rows_processing_limit: contient plus de %{count} lignes @@ -998,7 +1039,7 @@ fr: '86400': 1 jour expires_in_prompt: Jamais generate: Générer un lien d'invitation - invited_by: 'Vous avez été invité par :' + invited_by: 'Vous avez été invité·e par :' max_uses: one: 1 utilisation other: "%{count} utilisations" @@ -1030,31 +1071,31 @@ fr: migrations: acct: A déménagé vers cancel: Annuler la redirection - cancel_explanation: Annuler la redirection réactivera votre compte actuel, mais ne rapportera pas les abonnés qui ont été déplacés sur ce compte. + cancel_explanation: Annuler la redirection réactivera votre compte actuel, mais ne rapportera pas les abonné·e·s qui ont été déplacé·e·s sur ce compte. cancelled_msg: Suppression de la redirection réussie. errors: already_moved: est le même compte que vous avez déjà déplacé vers missing_also_known_as: ne référence pas ce compte en retour move_to_self: ne peut pas être le compte actuel not_found: n'a pas été trouvé - on_cooldown: Vous êtes soumis à un temps de rechargement - followers_count: Abonnés au moment du déménagement + on_cooldown: Vous êtes soumis·e à un temps de rechargement + followers_count: Abonné·e·s au moment du déménagement incoming_migrations: Déplacement depuis un compte différent incoming_migrations_html: Pour déménager d'un autre compte à celui-ci, vous devez d'abord <a href="%{path}">créer un alias de compte</a>. - moved_msg: Votre compte est maintenant redirigé vers %{acct} et vos abonnés sont en train d'être déplacés. + moved_msg: Votre compte est maintenant redirigé vers %{acct} et vos abonné·e·s sont en train d'être déplacé·e·s. not_redirecting: Votre compte n'est pas redirigé vers un autre compte actuellement. on_cooldown: Vous avez récemment migré votre compte. Cette fonction sera à nouveau disponible dans %{count} jours. past_migrations: Migrations passées - proceed_with_move: Migrer les abonnés + proceed_with_move: Migrer les abonné·e·s redirected_msg: Votre compte est maintenant redirigé vers %{acct}. redirecting_to: Votre compte est redirigé vers %{acct}. set_redirect: Définir la redirection warning: backreference_required: Le nouveau compte doit d'abord être configuré pour faire référence à celui-ci en définissant un alias before: 'Avant de procéder, veuillez lire attentivement ces notes :' - cooldown: Après le déménagement, il y a une période d’attente pendant laquelle vous ne pourrez pas re-déménager + cooldown: Après le déménagement, il y a une période d’attente pendant laquelle vous ne pourrez pas redéménager disabled_account: Votre compte actuel ne sera pas entièrement utilisable par la suite. Cependant, vous aurez accès à l'exportation de données et à la réactivation. - followers: Cette action va déménager tous les abonnés du compte actuel vers le nouveau compte + followers: Cette action va déménager tou·te·s les abonné·e·s du compte actuel vers le nouveau compte only_redirect_html: Alternativement, vous pouvez <a href="%{path}">seulement appliquer une redirection sur votre profil</a>. other_data: Aucune autre donnée ne sera déplacée automatiquement redirect: Le profil de votre compte actuel sera mis à jour avec un avis de redirection et sera exclu des recherches @@ -1063,15 +1104,15 @@ fr: move_handler: carry_blocks_over_text: Cet utilisateur que vous aviez bloqué est parti de %{acct}. carry_mutes_over_text: Cet utilisateur que vous aviez masqué est parti de %{acct}. - copy_account_note_text: 'Cet utilisateur est parti de %{acct}, voici vos notes précédentes à son sujet :' + copy_account_note_text: 'Cet·te utilisateur·rice est parti·e de %{acct}, voici vos notes précédentes à son sujet :' notification_mailer: digest: action: Voir toutes les notifications body: Voici un bref résumé des messages que vous avez raté depuis votre dernière visite le %{since} - mention: "%{name} vous a mentionné dans :" + mention: "%{name} vous a mentionné⋅e dans :" new_followers_summary: - one: Vous avez un nouvel abonné ! Youpi ! - other: Vous avez %{count} nouveaux abonnés ! Incroyable ! + one: De plus, vous avez un·e nouvel·le abonné·e ! Youpi ! + other: De plus, vous avez %{count} abonné·e·s de plus ! Incroyable ! subject: one: "Une nouvelle notification depuis votre dernière visite \U0001F418" other: "%{count} nouvelles notifications depuis votre dernière visite \U0001F418" @@ -1083,16 +1124,16 @@ fr: follow: body: "%{name} vous suit !" subject: "%{name} vous suit" - title: Nouvel abonné + title: Nouvel·le abonné·e follow_request: action: Gérer les demandes d’abonnement body: "%{name} a demandé à vous suivre" - subject: 'Abonnés en attente : %{name}' + subject: 'Abonné·e en attente : %{name}' title: Nouvelle demande d’abonnement mention: action: Répondre - body: "%{name} vous a mentionné dans :" - subject: "%{name} vous a mentionné" + body: "%{name} vous a mentionné⋅e dans :" + subject: "%{name} vous a mentionné·e" title: Nouvelle mention poll: subject: Un sondage de %{name} est terminé @@ -1152,19 +1193,19 @@ fr: relationships: activity: Activité du compte dormant: Dormant - follow_selected_followers: Suivre les abonnés sélectionnés - followers: Abonnés - following: Abonnements - invited: Invité + follow_selected_followers: Suivre les abonné·e·s sélectionné·e·s + followers: Abonné·e + following: Abonnement + invited: Invité·e last_active: Dernière activité most_recent: Plus récent moved: Déménagé mutual: Mutuel primary: Primaire relationship: Relation - remove_selected_domains: Supprimer tous les abonnés des domaines sélectionnés - remove_selected_followers: Supprimer les abonnés sélectionnés - remove_selected_follows: Cesser de suivre les comptes sélectionnés + remove_selected_domains: Supprimer tou·te·s les abonné·e·s des domaines sélectionnés + remove_selected_followers: Supprimer les abonné·e·s sélectionné·e·s + remove_selected_follows: Ne plus suivre les comptes sélectionnés status: État du compte remote_follow: acct: Entrez l’adresse profil@serveur depuis laquelle vous voulez effectuer cette action @@ -1172,7 +1213,7 @@ fr: no_account_html: Vous n’avez pas de compte ? Vous pouvez <a href='%{sign_up_path}' target='_blank'>vous inscrire ici</a> proceed: Confirmer l’abonnement prompt: 'Vous allez suivre :' - reason_html: "<strong>Pourquoi cette étape est-elle nécessaire?</strong> <code>%{instance}</code> pourrait ne pas être le serveur sur lequel vous vous êtes inscrit, et nous devons donc vous rediriger vers votre serveur de base en premier." + reason_html: "<strong>Pourquoi cette étape est-elle nécessaire?</strong> <code>%{instance}</code> pourrait ne pas être le serveur sur lequel vous vous êtes inscrit·e, et nous devons donc vous rediriger vers votre serveur de base en premier." remote_interaction: favourite: proceed: Confirmer l’ajout aux favoris @@ -1241,7 +1282,6 @@ fr: edit_profile: Modifier le profil export: Export de données featured_tags: Hashtags mis en avant - identity_proofs: Preuves d’identité import: Import de données import_and_export: Import et export migrate: Migration de compte @@ -1249,7 +1289,7 @@ fr: preferences: Préférences profile: Profil relationships: Abonnements et abonné·e·s - statuses_cleanup: Suppression automatique de la publication + statuses_cleanup: Suppression automatique de messages two_factor_authentication: Identification à deux facteurs webauthn_authentication: Clés de sécurité statuses: @@ -1266,18 +1306,19 @@ fr: other: "%{count} vidéos" boosted_from_html: Partagé depuis %{acct_link} content_warning: 'Avertissement sur le contenu : %{warning}' + default_language: Même langue que celle de l’interface disallowed_hashtags: one: 'contient un hashtag désactivé : %{tags}' other: 'contient les hashtags désactivés : %{tags}' + edited_at: Édité le %{date} errors: in_reply_not_found: Le statut auquel vous essayez de répondre ne semble pas exister. - language_detection: Détecter automatiquement la langue open_in_web: Ouvrir sur le web over_character_limit: limite de %{max} caractères dépassée pin_errors: + direct: Les messages qui ne sont visibles que pour les utilisateurs mentionnés ne peuvent pas être épinglés limit: Vous avez déjà épinglé le nombre maximum de pouets ownership: Vous ne pouvez pas épingler un statut ne vous appartenant pas - private: Les statuts non-publics ne peuvent pas être épinglés reblog: Un partage ne peut pas être épinglé poll: total_people: @@ -1295,15 +1336,15 @@ fr: title: '%{name} : "%{quote}"' visibilities: direct: Direct - private: Abonnés uniquement - private_long: Afficher seulement à vos vos abonnés + private: Abonné⋅e⋅s uniquement + private_long: Afficher seulement à vos vos abonné·e·s public: Publique public_long: Tout le monde peut voir vos statuts unlisted: Public sans être affiché sur le fil public unlisted_long: Tout le monde peut voir vos statuts mais ils ne seront pas listés sur les fils publics statuses_cleanup: - enabled: Supprimer automatiquement les anciennes publications - enabled_hint: Supprime automatiquement vos publications une fois qu'elles ont atteint un seuil d'ancienneté défini, à moins qu'elles ne correspondent à l'une des exceptions ci-dessous + enabled: Supprimer automatiquement vos anciens messages + enabled_hint: Supprime automatiquement vos messages une fois qu'ils ont atteint un seuil d'ancienneté défini, à moins qu'ils ne correspondent à l'une des exceptions ci-dessous exceptions: Exceptions explanation: Parce que la suppression de messages est une opération lourde, cela se fait lentement au fil du temps lorsque le serveur n'est pas autrement occupé. Pour cette raison, vos messages peuvent être supprimés un peu plus tard que le seuil d'ancienneté défini. ignore_favs: Ignorer les favoris @@ -1312,16 +1353,16 @@ fr: interaction_exceptions_explanation: Notez qu'il n'est pas garanti que les messages soient supprimés s'ils passent sous le seuil des favoris ou des partages une fois qu'ils les ont dépassés. keep_direct: Conserver les messages directs keep_direct_hint: Ne supprime aucun de vos messages directs - keep_media: Conserver les publications avec des fichiers médias joints - keep_media_hint: Ne supprime pas les publications contenant des fichiers médias joints - keep_pinned: Conserver les publications épinglées - keep_pinned_hint: Ne supprime aucune de vos publications épinglées + keep_media: Conserver les messages avec des fichiers médias joints + keep_media_hint: Ne supprime pas les messages contenant des fichiers médias joints + keep_pinned: Conserver les messages épinglés + keep_pinned_hint: Ne supprime aucun de vos messages épinglés keep_polls: Conserver les sondages keep_polls_hint: Ne supprime aucun de vos sondages - keep_self_bookmark: Conserver les publications que vous avez mises en marque-page - keep_self_bookmark_hint: Ne supprime pas vos propres publications si vous les avez ajoutées aux marque-pages - keep_self_fav: Conserver les publications que vous avez mises dans vos favoris - keep_self_fav_hint: Ne supprime pas vos propres publications si vous les avez mises dans vos favoris + keep_self_bookmark: Conserver les messages que vous avez mis en marque-page + keep_self_bookmark_hint: Ne supprime pas vos propres messages si vous les avez ajoutés aux marque-pages + keep_self_fav: Conserver les messages que vous avez mis dans vos favoris + keep_self_fav_hint: Ne supprime pas vos propres messages si vous les avez ajoutés à vos favoris min_age: '1209600': 2 semaines '15778476': 6 mois @@ -1331,10 +1372,10 @@ fr: '63113904': 2 ans '7889238': 3 mois min_age_label: Seuil d'ancienneté - min_favs: Conserver les publications favorites plus de - min_favs_hint: Ne supprime aucune de vos publications qui ont reçu plus que ce nombre de favoris. Laisser vide pour supprimer les messages quel que soit leur nombre de favoris - min_reblogs: Conserver les publications partagées plus de - min_reblogs_hint: Ne supprime aucune de vos publications qui ont été partagées plus que ce nombre de fois. Laisser vide pour supprimer les publications indépendamment de leur nombre de partages + min_favs: Conserver les messages mis en favoris au moins + min_favs_hint: Ne supprime aucun de vos messages qui ont reçu au moins ce nombre de favoris. Laisser vide pour supprimer les messages quel que soit leur nombre de favoris + min_reblogs: Conserver les messages partagés au moins + min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages stream_entries: pinned: Message épinglé reblogged: a partagé @@ -1348,8 +1389,8 @@ fr: <ul> <li><em>Informations de base sur votre compte</em> : si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.</li> - <li><em>Posts, liste d’abonnements et autres informations publiques</em> : la liste de vos abonnements ainsi que la liste de vos abonnés sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistrés. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonnés, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimez un post, il est probable que l'action soit aussi délivrée à vos abonnés. Partager un message ou le marquer comme favori est toujours une action publique.</li> - <li><em>Posts directs et abonnés uniquement</em> : tous les posts sont stockés et traités par le serveur. Les messages abonnés uniquement ne sont transmis qu’à vos abonnés et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne foi pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonnés. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux abonnés. <em>Gardez s’il vous plaît en mémoire que les opérateurs du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages</em> et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. <em>Ne partagez aucune information sensible à l’aide de Mastodon !</em></li> + <li><em>Posts, liste d’abonnements et autres informations publiques</em> : la liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimez un post, il est probable que l'action soit aussi délivrée à vos abonné·e·s. Partager un message ou le marquer comme favori est toujours une action publique.</li> + <li><em>Posts directs et abonné·e·s uniquement</em> : tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne foi pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. <em>Gardez s’il vous plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages</em> et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. <em>Ne partagez aucune information sensible à l’aide de Mastodon !</em></li> <li><em>IP et autres métadonnées</em> : quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.</li> </ul> @@ -1360,7 +1401,7 @@ fr: <p>Toutes les informations que nous collectons sur vous peuvent être utilisées des manières suivantes :</p> <ul> - <li>pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.</li> + <li>pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.</li> <li>pour aider à la modération de la communauté : par exemple, comparer votre adresse IP avec d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.</li> <li>l’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyer des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour toutes autres requêtes ou questions.</li> </ul> @@ -1379,7 +1420,7 @@ fr: <ul> <li>pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.</li> - <li>pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateurs enregistrés.</li> + <li>pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.</li> </ul> <p>Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.</p> @@ -1400,9 +1441,9 @@ fr: <p>Nous ne vendons, n’échangeons ou ne transférons d’une quelconque manière que ce soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tiers de confiance qui nous aident à faire fonctionner ce site, à conduire nos activités commerciales ou à vous servir, du moment qu’ils acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que cela est nécessaire pour nous conformer à la loi, pour faire respecter les règles de notre site, ainsi que pour défendre nos droits, notre propriété, notre sécurité, ou ceux d’autres personnes.</p> - <p>Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonnés et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonnés uniquement peuvent être délivrés vers les serveurs de vos abonnés tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.</p> + <p>Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.</p> - <p>Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, à votre liste d’abonnements, votre liste d’abonnés, vos listes, tous vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.</p> + <p>Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, à votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tous vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.</p> <hr class="spacer" /> @@ -1432,6 +1473,7 @@ fr: formats: default: "%d %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Ajouter disable: Désactiver @@ -1459,39 +1501,46 @@ fr: subject: Veuillez confirmer la tentative de connexion title: Tentative de connexion warning: + categories: + spam: Indésirable + violation: Le contenu viole les directives de la communauté suivantes explanation: - disable: Lorsque votre compte est gelé, les données de votre compte demeurent intactes, mais vous ne pouvez effectuer aucune action jusqu’à ce qu’il soit débloqué. - sensitive: Vos fichiers médias téléversés et vos médias liés seront traités comme sensibles. - silence: Vous pouvez encore utiliser votre compte, mais seuls les comptes qui vous suivent déjà verront vos messages sur ce serveur, et vous pouvez être exclu de plusieurs listes publiques. Néanmoins, il est encore possible de vous suivre manuellement. - suspend: Votre ne pouvez plus utiliser votre compte, et votre profil ainsi que d’autres données ne sont plus accessibles. Vous pouvez vous connecter pour demander une sauvegarde de vos données avant qu’elles ne soient complètement supprimées, mais nous gardons certaines données pour vous empêcher d’échapper à la suspension. - get_in_touch: Vous pouvez répondre à cette adresse pour entrer en contact avec l’équipe de %{instance}. + delete_statuses: Certains de vos messages ont été jugés en violation d'une ou plusieurs directives de la communauté et ont été supprimés par les modérateurs de %{instance}. De nouvelles violations peuvent entraîner des actions punitives plus sévères contre votre compte. + disable: Vous ne pouvez plus utiliser votre compte, mais votre profil et d'autres données restent intacts. Vous pouvez demander une sauvegarde de vos données, modifier les paramètres de votre compte ou supprimer votre compte. + 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}. + reason: 'Motif :' review_server_policies: Passer en revue les politiques du serveur - statuses: 'Spécialement, pour :' + statuses: 'Les messages qui ont été jugés en violation :' subject: + delete_statuses: Vos messages sur %{acct} ont été supprimés disable: Votre compte %{acct} a été gelé none: Avertissement pour %{acct} - sensitive: Les médias de votre compte %{acct} ont été marqués comme sensibles + sensitive: Vos fichiers multimédias sur %{acct} seront désormais marqués comme sensibles silence: Votre compte %{acct} a été limité suspend: Votre compte %{acct} a été suspendu title: + delete_statuses: Messages supprimés disable: Compte gelé none: Avertissement - sensitive: Vos médias ont été marqués comme sensibles + sensitive: Média masqué silence: Compte limité suspend: Compte suspendu welcome: edit_profile_action: Configuration du profil - edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux abonnés avant qu’ils ne soient autorisés à vous suivre, vous pouvez verrouiller votre compte. + edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux·lles abonné·e·s avant qu’iels ne soient autorisé·e·s à vous suivre, vous pouvez verrouiller votre compte. explanation: Voici quelques conseils pour vous aider à démarrer final_action: Commencez à publier - final_step: 'Commencez à publier ! Même sans abonnés, vos messages publics peuvent être vus par d’autres, par exemple sur le fil public local et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.' + final_step: 'Commencez à publier ! Même sans abonné·e·s, vos messages publics peuvent être vus par d’autres, par exemple sur le fil public local et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.' full_handle: Votre identifiant complet - full_handle_hint: C’est ce que vous diriez à vos amis pour leur permettre de vous envoyer un message ou vous suivre à partir d’un autre serveur. + full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour leur permettre de vous envoyer un message ou vous suivre à partir d’un autre serveur. review_preferences_action: Modifier les préférences review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous publier vos messages par défaut. Si vous n’avez pas le mal des transports, vous pouvez choisir d’activer la lecture automatique des GIF. subject: Bienvenue sur Mastodon - tip_federated_timeline: La fil public global est une vue en direct du réseau Mastodon. Mais elle n’inclut que les personnes auxquelles vos voisins sont abonnés, donc elle n’est pas complète. - tip_following: Vous suivez les administrateur·rice·s de votre serveur par défaut. Pour trouver d’autres personnes intéressantes, consultez les fils publics local et global. + tip_federated_timeline: Le fil public global est une vue en direct du réseau Mastodon. Mais elle n’inclut que les personnes auxquelles vos voisin·e·s sont abonné·e·s, donc elle n’est pas complète. + tip_following: Vous suivez les administrateurs de votre serveur par défaut. Pour trouver d’autres personnes intéressantes, consultez les fils publics local et global. tip_local_timeline: Le fil public local est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats ! tip_mobile_webapp: Si votre navigateur mobile vous propose d’ajouter Mastodon à votre écran d’accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons ! tips: Astuces @@ -1503,7 +1552,7 @@ fr: invalid_sign_in_token: Code de sécurité non valide otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email} seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles. - signed_in_as: 'Connecté en tant que :' + signed_in_as: 'Connecté·e en tant que :' suspicious_sign_in_confirmation: Il semblerait que vous ne vous êtes pas connecté depuis cet appareil auparavant et que vous ne vous êtes pas connecté depuis un moment, alors nous envoyons un code de sécurité à votre adresse courriel pour confirmer qu’il s’agit bien de vous. verification: explanation_html: 'Vous pouvez <strong>vous vérifier en tant que propriétaire des liens dans les métadonnées de votre profil</strong>. Pour cela, le site web lié doit contenir un lien vers votre profil Mastodon. Le lien de retour <strong>doit</strong> avoir un attribut <code>rel="me"</code> . Le texte du lien n’a pas d’importance. Voici un exemple :' diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 357a12b25..17f32cb04 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -46,7 +46,7 @@ gd: rejecting_media: 'Cha dèid faidhlichean meadhain o na frithealaichean seo a phròiseasadh no a stòradh agus cha dèid dealbhagan dhiubh a shealltainn. Feumar briogadh gus an ruigear am faidhle tùsail a làimh:' rejecting_media_title: Meadhanan criathraichte silenced: 'Thèid postaichean o na frithealaichean seo fhalach air loidhnichean-ama is còmhraidhean poblach agus cha dèid brathan a ghintinn à conaltraidhean nan cleachdaichean aca ach ma bhios tu fèin a’ leantainn orra:' - silenced_title: Frithealaichean mùchte + silenced_title: Frithealaichean cuingichte suspended: 'Cha dèid dàta sam bith o na frithealaichean seo a phròiseasadh, a stòradh no iomlaid agus chan urrainn do na cleachdaichean o na frithealaichean sin conaltradh an-seo:' suspended_title: Frithealaichean à rèim unavailable_content_html: San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus conaltradh leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo. @@ -107,7 +107,6 @@ gd: accounts: add_email_domain_block: Bac àrainn a’ phuist-d approve: Aontaich ris - approve_all: Aontaich ris na h-uile approved_msg: Chaidh aontachadh ris an iarrtas clàraidh aig %{username} are_you_sure: A bheil thu cinnteach? avatar: Avatar @@ -122,6 +121,7 @@ gd: confirm: Dearbh confirmed: Chaidh a dhearbhachadh confirming: "’Ga dhearbhadh" + custom: Gnàthaichte delete: Sguab às an dàta deleted: Chaidh a sguabadh às demote: Ìslich @@ -161,7 +161,6 @@ gd: active: Gnìomhach all: Na h-uile pending: Ri dhèiligeadh - silenced: Mùchte suspended: À rèim title: Maorsainneachd moderation_notes: Nòtaichean na maorsainneachd @@ -179,7 +178,6 @@ gd: redownload: Ath-nuadhaich a’ phròifil redownloaded_msg: Chaidh a’ phròifil aig %{username} on tùs reject: Diùlt - reject_all: Diùlt na h-uile rejected_msg: Chaidh an t-iarrtas clàraidh aig %{username} a dhiùltadh remove_avatar: Thoir air falbh an t-avatar remove_header: Thoir air falbh am bann-cinn @@ -205,26 +203,28 @@ gd: only_password: Facal-faire a-mhàin password_and_2fa: Facal-faire ’s dà-cheumnach password_and_sign_in_token: Facal-faire ’s tòcan puist-d - sensitive: Frionasach + sensitive: Spàrr an fhrionasachd air sensitized: Chaidh comharradh gu bheil e frionasach shared_inbox_url: URL a’ bhogsa a-steach cho-roinnte show: created_reports: Gearanan a chaidh a dhèanamh targeted_reports: Gearanan le càch - silence: Crìoch + silence: Cuingich silenced: Cuingichte statuses: Postaichean + strikes: Rabhaidhean roimhe subscribe: Fo-sgrìobh suspended: À rèim suspension_irreversible: Chaidh dàta a’ chunntais seo a sguabadh às gu buan. ’S urrainn an cunntas a chur ann an rèim a-rithist ach an gabh a chleachdadh ach chan fhaigh thu gin dhen dàta air ais a b’ àbhaist a bhith aige. suspension_reversible_hint_html: Chaidh an cunntas a chur à rèim agus thèid an dàta aige a sguabadh às gu buan %{date}. Gus an dig an t-àm ud, gabhaidh an cunntas aiseag fhathast gun droch bhuaidh sam bith air. Nam bu toigh leat gach dàta a’ chunntais a thoirt air falbh sa bhad, ’s urrainn dhut sin a dhèanamh gu h-ìosal. - time_in_queue: A’ feitheamh air a’ chiudha fad %{time} title: Cunntasan + unblock_email: Dì-bhac an seòladh puist-d + unblocked_email_msg: Chaidh am post-d aig %{username} a dhì-bhacadh unconfirmed_email: Post-d gun dearbhadh - undo_sensitized: Thoir air falbh a comharra gu bheil e frionasach - undo_silenced: Dì-mhùch + undo_sensitized: Na spàrr an fhrionasachd air tuilleadh + undo_silenced: Dì-chuingich undo_suspension: Cuir ann an rèim a-rithist - unsilenced_msg: Chaidh an cuingeachadh a thoirt air falbh on chunntas aig %{username} + unsilenced_msg: Chaidh an cunntas aig %{username} a dhì-chuingeachadh unsubscribe: Cuir crìoch air an fho-sgrìobhadh unsuspended_msg: Chaidh an cunntas aig %{username} a chur ann an rèim a-rithist username: Ainm-cleachdaiche @@ -234,6 +234,7 @@ gd: whitelisted: Ceadaichte a chùm co-nasgaidh action_logs: action_types: + approve_user: Aontaich ris a’ chleachdaiche assigned_to_self_report: Iomruin an gearan change_email_user: Atharraich post-d a’ chleachdaiche confirm_user: Dearbh an cleachdaiche @@ -251,6 +252,7 @@ gd: destroy_domain_allow: Sguab às ceadachadh na h-àrainne destroy_domain_block: Sguab às bacadh na h-àrainne destroy_email_domain_block: Sguab às bacadh na h-àrainne puist-d + destroy_instance: Purgaidich an àrainn destroy_ip_block: Sguab às an riaghailt IP destroy_status: Sguab às am post destroy_unavailable_domain: Sguab às àrainn nach eil ri fhaighinn @@ -263,22 +265,25 @@ gd: enable_user: Cuir an cleachdaiche an comas memorialize_account: Dèan cuimhneachan dhen chunntas promote_user: Àrdaich an cleachdaiche + reject_user: Diùlt an cleachdaiche remove_avatar_user: Thoir air falbh an t-avatar reopen_report: Fosgail an gearan a-rithist reset_password_user: Ath-shuidhich am facal-faire resolve_report: Fuasgail an gearan - sensitive_account: Comharraich gu bheil na meadhanan sa chunntas agad frionasach - silence_account: Mùch an cunntas + sensitive_account: Spàrr an fhrionasachd air a’ chunntas seo + silence_account: Cuingich an cunntas suspend_account: Cuir an cunntas à rèim unassigned_report: Dì-iomruin an gearan - unsensitive_account: Comharraich nach eil na meadhanan sa chunntas agad frionasach - unsilence_account: Dì-mhùch an cunntas + unblock_email_account: Dì-bhac an seòladh puist-d + unsensitive_account: Na spàrr an fhrionasachd air a’ chunntas seo tuilleadh + unsilence_account: Dì-chuingich an cunntas unsuspend_account: Cuir an cunntas ann an rèim a-rithist update_announcement: Ùraich am brath-fios update_custom_emoji: Ùraich an t-Emoji gnàthaichte update_domain_block: Ùraich bacadh na h-àrainne update_status: Ùraich am post actions: + approve_user_html: Dh’aontaich %{name} ri clàradh o %{target} assigned_to_self_report_html: Dh’iomruin %{name} an gearan %{target} dhaibh fhèin change_email_user_html: Dh’atharraich %{name} seòladh puist-d a’ chleachdaiche %{target} confirm_user_html: Dhearbh %{name} seòladh puist-d a’ chleachdaiche %{target} @@ -296,6 +301,7 @@ gd: destroy_domain_allow_html: Dì-cheadaich %{name} co-nasgadh leis an àrainn %{target} destroy_domain_block_html: Dì-bhac %{name} an àrainn %{target} destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target} + destroy_instance_html: Purgaidich %{name} an àrainn %{target} destroy_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} destroy_status_html: Thug %{name} post aig %{target} air falbh destroy_unavailable_domain_html: Lean %{name} air adhart leis an lìbhrigeadh dhan àrainn %{target} @@ -308,16 +314,18 @@ gd: enable_user_html: Chuir %{name} an clàradh a-steach an comas dhan chleachdaiche %{target} memorialize_account_html: Rinn %{name} duilleag cuimhneachain dhen chunntas aig %{target} promote_user_html: Dh’àrdaich %{name} an cleachdaiche %{target} + reject_user_html: Dhiùlt %{name} an clàradh o %{target} remove_avatar_user_html: Thug %{name} avatar aig %{target} air falbh reopen_report_html: Dh’fhosgail %{name} an gearan %{target} a-rithist reset_password_user_html: Dh’ath-shuidhich %{name} am facal-faire aig a’ chleachdaiche %{target} resolve_report_html: Dh’fhuasgail %{name} an gearan %{target} sensitive_account_html: Chuir %{name} comharra gu bheil e frionasach ri meadhan aig %{target} - silence_account_html: Mhùch %{name} an cunntas aig %{target} + silence_account_html: Chuingich %{name} an cunntas aig %{target} suspend_account_html: Chuir %{name} an cunntas aig %{target} à rèim unassigned_report_html: Neo-iomruin %{name} an gearan %{target} + unblock_email_account_html: Dhì-bhac %{name} an seòladh puist-d aig %{target} unsensitive_account_html: Chuir %{name} comharra nach eil e frionasach ri meadhan aig %{target} - unsilence_account_html: Dì-mhùch %{name} an cunntas aig %{target} + unsilence_account_html: Dì-chuingich %{name} an cunntas aig %{target} unsuspend_account_html: Chuir %{name} an cunntas aig %{target} ann an rèim a-rithist update_announcement_html: Dh’ùraich %{name} am brath-fios %{target} update_custom_emoji_html: Dh’ùraich %{name} an Emoji %{target} @@ -379,9 +387,34 @@ gd: updated_msg: Chaidh an t-Emoji ùrachadh! upload: Luchdaich suas dashboard: + active_users: cleachdaichean gnìomhach + interactions: eadar-ghnìomhan + 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 space: Caitheamh àite title: Deas-bhòrd + top_languages: Brod nan cànan gnìomhach + top_servers: Brod nam frithealaichean gnìomhach + website: Làrach-lìn domain_allows: add_new: Ceadaich co-nasgadh le àrainn created_msg: Chaidh an àrainn a cheadachadh a chùm co-nasgaidh @@ -416,7 +449,7 @@ gd: rejecting_media: a’ diùltadh faidhlichean meadhain rejecting_reports: a’ diùltadh gearanan severity: - silence: mùchte + silence: cuingichte suspend: à rèim show: affected_accounts: @@ -425,7 +458,7 @@ gd: 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ì-mhùch na cunntasan a tha ann on àrainn seo ’s air a bheil buaidh + 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 title: Neo-dhèan bacadh na h-àrainne %{domain} undo: Neo-dhèan @@ -456,6 +489,7 @@ gd: back_to_limited: Cuingichte back_to_warning: Rabhadh by_domain: Àrainn + confirm_purge: A bheil thu cinnteach gu bheil thu airson an dàta on àrainn seo a sguabadh às gu buan? delivery: all: Na h-uile clear: Falamhaich na mearachdan lìbhrigidh @@ -473,6 +507,7 @@ gd: delivery_available: Tha lìbhrigeadh ri fhaighinn delivery_error_days: Làithean le mearachd lìbhrigidh 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" @@ -485,6 +520,7 @@ gd: title: Maorsainneachd private_comment: Beachd prìobhaideachd public_comment: Beachd poblach + purge: Purgaidich title: Co-nasgadh total_blocked_by_us: "‘Ga bhacadh leinne" total_followed_by_them: "’Ga leantainn leotha-san" @@ -514,8 +550,6 @@ gd: title: Cruthaich riaghailt IP ùr no_ip_block_selected: Cha deach riaghailt IP sam bith atharrachadh o nach deach gin dhiubh a thaghadh title: Riaghailtean IP - pending_accounts: - title: Cunntasan ri dhèiligeadh (%{count}) relationships: title: Na dàimhean aig %{acct} relays: @@ -537,6 +571,7 @@ gd: report_notes: created_msg: Chaidh nòta a chruthachadh dhan ghearan! destroyed_msg: Chaidh nòta a’ ghearain a sguabadh às! + today_at: An-diugh aig %{time} reports: account: notes: @@ -544,29 +579,38 @@ gd: one: "%{count} nòta" other: "%{count} nòta" two: "%{count} nòta" - reports: - few: "%{count} gearanan" - one: "%{count} ghearan" - other: "%{count} gearan" - two: "%{count} ghearan" + action_log: Sgrùd an loga action_taken_by: Chaidh an gnìomh a ghabhail le + actions: + 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 assigned: Maor iomruinte by_target_domain: Àrainn cunntas a’ ghearain + category: Roinn-seòrsa + category_description_html: Thèid iomradh a thoirt air adhbhar a’ ghearain mun chunntas/susbaint seo sa chonaltradh leis a’ chunntas mun a chaidh an gearan a thogail comment: 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 mark_as_unresolved: Cuir comharra nach deach fhuasgladh + no_one_assigned: Gun iomruineadh notes: create: Cuir nòta ris create_and_resolve: Fuasgail le nòta create_and_unresolve: Ath-fhosgail le nòta delete: Sguab às placeholder: Mìnich dè na ghnìomhan a chaidh a ghabhail no naidheachd sam bith eile mu dhèidhinn… + title: Nòtaichean + notes_description_html: Seall is sgrìobh nòtaichean do mhaoir eile is dhut fhèin san àm ri teachd reopen: Fosgail an gearan a-rithist report: 'Gearan air #%{id}' reported_account: Cunntas mun a chaidh a ghearan @@ -574,11 +618,14 @@ gd: resolved: Air fhuasgladh resolved_msg: Chaidh an gearan fhuasgladh! status: Staid + statuses: Susbaint le gearan + statuses_description_html: Thèid iomradh a thoirt air an t-susbaint oilbheumach sa chonaltradh leis a’ chunntas mun a chaidh an gearan a thogail target_origin: Tùs cunntas a’ ghearain title: Gearanan unassign: Dì-iomruin unresolved: Gun fhuasgladh updated_at: Air ùrachadh + view_profile: Seall a’ phròifil rules: add_new: Cuir riaghailt ris delete: Sguab às @@ -673,22 +720,20 @@ gd: desc_html: Bheir seo buaidh air na tagaichean hais nach deach a dhì-cheadachadh roimhe title: Leig le tagaichean hais treandadh às aonais lèirmheis ro làimh trends: - desc_html: Seall tagaichean hais gu poblach a chaidh lèirmheas a dhèanamh orra roimhe ’s a tha a’ treandadh aig a àm seo - title: Tagaichean hais a’ treandadh + desc_html: Seall susbaint gu poblach a chaidh lèirmheas a dhèanamh oirre roimhe ’s a tha a’ treandadh + title: Treandaichean site_uploads: delete: Sguab às am faidhle a chaidh a luchdadh suas destroyed_msg: Chaidh an luchdadh suas dhan làrach a sguabadh às! statuses: back_to_account: Till gu duilleag a’ chunntais + back_to_report: Till gu duilleag a’ ghearain batch: - delete: Sguab às - nsfw_off: Cuir comharra nach eil e frionasach - nsfw_on: Cuir comharra gu bheil e frionasach + remove_from_report: Thoir air falbh on ghearan + report: Gearan deleted: Chaidh a sguabadh às - failed_to_execute: Cha b’ urrainn dhuinn a ruith media: title: Meadhanan - no_media: Chan eil meadhanan ann no_status_selected: Cha deach post sam bith atharrachadh o nach deach gin dhiubh a thaghadh title: Postaichean a’ chunntais with_media: Le meadhanan riutha @@ -701,21 +746,55 @@ gd: sidekiq_process_check: message_html: Chan eil pròiseas Sidekiq sam bith a ruith dhan chiutha/dha na ciuthan %{value}. Thoir sùil air an rèiteachadh Sidekiq agad tags: - accounts_today: Cleachdaidhean fa leth an-diugh - accounts_week: Cleachdaidhean fa leth an t-seachdain seo - breakdown: Seall an cleachdadh an-diugh a-rèir tùis - last_active: Air a chleachdadh o chionn goirid - most_popular: Na tha fèill mhòr air - most_recent: Air a chruthachadh o chionn goirid - name: Taga hais review: Dèan lèirmheas air an staid - reviewed: Chaidh lèirmheas a dhèanamh air - title: Tagaichean hais - trending_right_now: A’ treandadh an-dràsta - unique_uses_today: "%{count} a’ postadh an-diugh" - unreviewed: Gun lèirmheas updated_msg: Chaidh roghainnean nan tagaichean hais ùrachadh title: Rianachd + trends: + allow: Ceadaich + approved: Aontaichte + disallow: Na ceadaich + links: + allow: Ceadaich an ceangal + 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 + preview_card_providers: + allowed: Faodaidh ceanglaichean on fhoillsichear seo treandadh + rejected: Cha treandaich ceanglaichean on fhoillsichear seo + title: Foillsichearan + rejected: Air a dhiùltadh + tags: + current_score: Sgòr làithreach de %{score} + dashboard: + tag_accounts_measure: cleachdaidhean àraidh + tag_languages_dimension: Brod nan cànan + tag_servers_dimension: Brod nam frithealaichean + tag_servers_measure: frithealaichean eadar-dhealaichte + tag_uses_measure: cleachdaidhean iomlan + listable: Gabhaidh a mholadh + not_listable: Cha dèid a mholadh + not_trendable: Cha nochd e am measg nan treandaichean + not_usable: Cha ghabh a chleachdadh + peaked_on_and_decaying: Air a’ bhàrr %{date}, a’ crìonadh an-dràsta + title: Tagaichean hais a’ treandadh + trendable: Faodaidh e nochdadh am measg nan treandaichean + 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 delete: Sguab às @@ -730,9 +809,16 @@ gd: body: Rinn %{reporter} gearan air %{target} body_remote: Rinn cuideigin o %{domain} gearan air %{target} subject: Tha gearan ùr aig %{instance} (#%{id}) - new_trending_tag: - body: 'Tha an taga hais #%{name} a’ treandadh an-diugh ach cha deach lèirmheas a dhèanamh air cheana. Cha nochd e gu poblach ach ma cheadaicheas tu e. Ma shàbhaileas tu am foirm seo mar a tha e, cha bhodraig e a-rithist thu.' - subject: Tha taga hais ùr air %{instance} a’ feitheamh air lèirmheas (#%{name}) + new_trending_links: + body: Tha na ceanglaichean a leanas a’ treandadh an-diugh ach cha deach lèirmheas a dhèanamh air na foillsichearan aca fhathast. Cha nochd iad gu poblach mur aontaich thu riutha. Chan fhaic thu brathan eile mu na h-aon fhoillsichearan. + no_approved_links: Chan eil ceangal a’ treandadh le aontachadh ann. + requirements: "’S e “%{lowest_link_title}” a tha sa cheangal a’ treandadh as ìsle le aontachadh agus sgòr de %{lowest_link_score} air." + subject: Tha ceanglaichean ùra a’ trèanadh feumach air lèirmheas air %{instance} + new_trending_tags: + body: 'Tha na tagaichean hais a leanas a’ treandadh an-diugh ach cha deach lèirmheas a dhèanamh orra fhathast. Cha nochd iad gu poblach mur aontaich thu riutha:' + no_approved_tags: Chan eil tagaichean hais a’ treandadh le aontachadh ann. + requirements: "’S e #%{lowest_tag_name} a tha san taga hais a’ treandadh as ìsle le aontachadh agus sgòr de %{lowest_tag_score} air." + subject: Tha tagaichean hais ùra a’ trèanadh feumach air lèirmheas air %{instance} aliases: add_new: Cruthaich alias created_msg: Chaidh an t-alias ùr a chruthachadh. ’S urrainn dhut tòiseachadh air imrich on seann-chunntas a-nis. @@ -784,6 +870,7 @@ gd: invalid_reset_password_token: Tha tòcan ath-shuidheachadh an fhacail-fhaire mì-dhligheach no dh’fhalbh an ùine air. Feuch an iarr thu fear ùr. link_to_otp: Cuir a-steach còd dà-cheumnach no còd aisig on fhòn agad link_to_webauth: Cleachd uidheam na h-iuchrach tèarainteachd agad + log_in_with: Clàraich a-steach le login: Clàraich a-steach logout: Clàraich a-mach migrate_account: Imrich gu cunntas eile @@ -939,9 +1026,10 @@ gd: changes_saved_msg: Chaidh na h-atharraichean a shàbhaladh! copy: Dèan lethbhreac delete: Sguab às - no_batch_actions_available: Chan eil gnìomh grunna ri fhaighinn air an duilleag seo + none: Chan eil gin order_by: Seòrsaich a-rèir save_changes: Sàbhail na h-atharraichean + today: an-diugh validation_errors: few: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air na %{count} mhearachdan gu h-ìosal one: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air an %{count} mhearachd gu h-ìosal @@ -949,26 +1037,6 @@ gd: two: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air an %{count} mhearachd gu h-ìosal html_validator: invalid_markup: 'tha HTML markup mì-dhligheach ann: %{error}' - identity_proofs: - active: Gnìomhach - authorize: Tha, ùghdarraich - authorize_connection_prompt: A bheil thu airson an ceangal crioptaichte seo ùghdarrachadh? - errors: - failed: Dh’fhàillig leis a’ cheangal chrioptaichte. Feuch ris a-rithist o %{provider}. - keybase: - invalid_token: "’S e haisichean de shoidhnidhean a th’ anns na tòcanan Keybase agus feumaidh 66 caractar sia-dheicheach a bhith annta" - verification_failed: Chan aithnich Keybase an tòcan seo ’na shoidhneadh aig cleachdaiche Keybase %{kb_username}. Feuch ris a-rithist o Keybase. - wrong_user: Chan urrainn dhuinn dearbhadh air %{proving} a chruthachadh fhad ’s a bhios tu clàraichte a-steach mar %{current}. Clàraich a-steach mar %{proving} is feuch ris a-rithist. - explanation_html: "’S urrainn dhut na dearbh-aithnean eile agad a cheangal le crioptachadh o ùrlaran eile, can Keybase. Leigidh seo le càch teachdaireachdan crioptaichte a chur thugad air na h-ùrlaran sin agus bheir seo comas dhaibh gun cuir iad earbsa san t-susbaint a chuireas tu thuca ’s iad cinnteach gur ann uat-sa fhèin a thàinig i." - i_am_html: Is mise %{username} air %{service}. - identity: Dearbh-aithne - inactive: Neo-ghnìomhach - publicize_checkbox: "’S postaich seo mar dhùd:" - publicize_toot: 'Chaidh a dhearbhadh! Is mise %{username} air %{service}: %{url}' - remove: Thoir an dearbhadh air falbh on chunntas - removed: Chaidh an dearbhadh a thoirt air falbh on chunntas - status: Staid an dearbhaidh - view_proof: Seall an dearbhadh imports: errors: over_rows_processing_limit: tha còrr is %{count} ràgh(an) ann @@ -1248,7 +1316,6 @@ gd: edit_profile: Deasaich a’ phròifil export: Às-phortadh dàta featured_tags: Tagaichean hais brosnaichte - identity_proofs: Dearbhaidhean na dearbh-aithne import: Ion-phortadh import_and_export: Ion-phortadh ⁊ às-phortadh migrate: Imrich cunntais @@ -1284,15 +1351,15 @@ gd: one: "– bha na tagaichean hais toirmisgte seo ann: %{tags}" other: "– bha na tagaichean hais toirmisgte seo ann: %{tags}" two: "– bha na tagaichean hais toirmisgte seo ann: %{tags}" + edited_at: Air a dheasachadh %{date} errors: in_reply_not_found: Tha coltas nach eil am post dhan a tha thu airson freagairt ann. - language_detection: Mothaich dhan chànan gu fèin-obrachail open_in_web: Fosgail air an lìon over_character_limit: chaidh thu thar crìoch charactaran de %{max} pin_errors: + direct: Chan urrainn dhut post a phrìneachadh nach fhaic ach na cleachdaichean le iomradh orra limit: Tha an àireamh as motha de phostaichean prìnichte agad a tha ceadaichte ownership: Chan urrainn dhut post càich a phrìneachadh - private: Chan urrainn dhut post neo-phoblach a phrìneachadh reblog: Chan urrainn dhut brosnachadh a phrìneachadh poll: total_people: @@ -1350,10 +1417,10 @@ gd: '63113904': 2 bhliadhna '7889238': 3 mìosan min_age_label: Stairsneach aoise - min_favs: Cùm na tha ’na annsachd aig còrr is - min_favs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’nan annsachd aig barrachd daoine na an t-uiread seo. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud neach a chur ris na h-annsachdan iad - min_reblogs: Cùm na tha ’ga bhrosnachadh le còrr is - min_reblogs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’gam brosnachadh le barrachd daoine na an t-uiread seo. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud neach a tha ’gam brosnachadh + min_favs: Cùm na tha ’na annsachd aig co-dhiù + min_favs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’nan annsachd an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud turas a tha iad ’nan annsachd + min_reblogs: Cùm na tha ’ga bhrosnachadh le co-dhiù + min_reblogs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’gam brosnachadh an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud turas a tha iad ’gam brosnachadh stream_entries: pinned: Post prìnichte reblogged: "’ga bhrosnachadh" @@ -1361,7 +1428,9 @@ gd: tags: does_not_match_previous_name: "– chan eil seo a-rèir an ainm roimhe" terms: - body_html: '<h2>Poileasaidh prìobhaideachd</h2> <h3 id="collect">Dè am fiosrachadh a chruinnicheas sinn?</h3> <ul> <li><em>Fiosrachadh bunasach a’ cunntais</em>: Ma chlàraicheas tu leis an fhrithealaiche seo, dh’fhaoidte gun dèid iarraidh ort gun cuir thu a-steach ainm-cleachdaiche, seòladh puist-d agus facal-faire. Faodaidh tu barrachd fiosrachaidh a chur ris a’ phròifil agad ma thogras tu, can ainm-taisbeanaidh agus teacsa mu do dhèidhinn agus dealbhan pròifile ’s banna-chinn a luchdadh suas. Thèid an t-ainm-cleachdaiche, an t-ainm-taisbeanaidh, an teacsa mu do dhèidhinn agus dealbhan na pròifile ’s a bhanna-chinn a shealltainn gu poblach an-còmhnaidh.</li> <li><em>Postaichean, luchd-leantainn agus fiosrachadh poblach eile</em>: Tha liosta nan daoine air a leanas tu poblach mar a tha i dhan luchd-leantainn agad. Nuair a chuireas tu a-null teachdaireachd, thèid an t-àm ’s an ceann-latha a stòradh cho math ris an aplacaid leis an do chuir thu am foirm a-null. Faodaidh ceanglachain meadhain a bhith am broinn teachdaireachdan, can dealbhan no videothan. Tha postaichean poblach agus postaichean falaichte o liostaichean ri ’m faighinn gu poblach. Nuair a bhrosnaicheas tu post air a’ phròifil agad, ’s e fiosrachadh poblach a tha sin cuideachd. Thèid na postaichean agad a lìbhrigeadh dhan luchd-leantainn agad agus is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nuair a sguabas tu às post, thèid sin a lìbhrigeadh dhan luchd-leantainn agad cuideachd. Tha ath-bhlogachadh no dèanamh annsachd de phost eile poblach an-còmhnaidh.</li> <li><em>Postaichean dìreach is dhan luchd-leantainn a-mhàin</em>: Thèid a h-uile post a stòradh ’s a phròiseasadh air an fhrithealaiche. Thèid na postaichean dhan luchd-leantainn a-mhàin a lìbhrigeadh dhan luchd-leantainn agad agus dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost. Thèid postaichean dìreach a lìbhrigeadh dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost a-mhàin. Is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nì sinn ar dìcheall gun cuingich sinn an t-inntrigeadh dha na postaichean air na daoine a fhuair ùghdarrachadh dhaibh ach dh’fhaoidte nach dèan frithealaichean eile seo. Mar sin dheth, tha e cudromach gun doir thu sùil air na frithealaichean dhan a bhuineas an luchd-leantainn agad. Faodaidh tu roghainn a chur air no dheth a leigeas leat aontachadh ri luchd-leantainn ùra no an diùltadh a làimh. <em>Thoir an aire gum faic rianairean an fhrithealaiche agus frithealaiche sam bith a gheibh am fiosrachadh na teachdaireachdan dhen leithid</em> agus gur urrainn dha na faightearan glacaidhean-sgrìn no lethbhreacan dhiubh a dhèanamh no an cho-roinneadh air dòighean eile. <em>Na co-roinn fiosrachadh cunnartach air Mastodon idir.</em></li> <li><em>IPan is meata-dàta eile</em>: Nuair a nì thu clàradh a-steach, clàraidh sinn an seòladh IP on a rinn thu clàradh a-steach cuide ri ainm aplacaid a’ bhrabhsair agad. Bidh a h-uile seisean clàraidh a-steach ri làimh dhut airson an lèirmheas agus an cùl-ghairm sna roghainnean. Thèid an seòladh IP as ùire a chleachd thu a stòradh suas ri 12 mhìos. Faodaidh sinn cuideachd logaichean an fhrithealaiche a chumail a ghabhas a-steach seòladh IP aig a h-uile iarrtas dhan fhrithealaiche againn.</li> </ul> <hr class="spacer" /> <h3 id="use">Dè na h-adhbharan air an cleachd sinn am fiosrachadh agad?</h3> <p>Seo na dòighean air an cleachd sinn fiosrachadh sam bith a chruinnich sinn uat ma dh’fhaoidte:</p> <ul> <li>Airson bun-ghleusan Mhastodon a lìbhrigeadh. Chan urrainn dhut conaltradh le susbaint càich no an t-susbaint agad fhèin a phostadh ach nuair a bhios tu air do chlàradh a-steach. Mar eisimpleir, faodaidh tu leantainn air càch ach am faic thu na postaichean aca còmhla air loidhne-ama pearsanaichte na dachaigh agad.</li> <li>Airson cuideachadh le maorsainneachd na coimhearsnachd, can airson coimeas a dhèanamh eadar an seòladh IP agad ri feadhainn eile feuch am mothaich sinn do sheachnadh toirmisg no briseadh eile nan riaghailtean.</li> <li>Faodaidh sinn an seòladh puist-d agad a chleachdadh airson fiosrachadh no brathan mu chonaltraidhean càich leis an t-susbaint agad no teachdaireachdan a chur thugad, airson freagairt ri ceasnachaidhean agus/no iarrtasan no ceistean eile.</li> </ul> <hr class="spacer" /> <h3 id="protect">Ciamar a dhìonas sinn am fiosrachadh agad?</h3> <p>Cuiridh sinn iomadh gleus tèarainteachd an sàs ach an glèidheadh sinn sàbhailteachd an fhiosrachaidh phearsanta agad nuair a chuireas tu gin a-steach, nuair a chuireas tu a-null e no nuair a nì thu inntrigeadh air. Am measg gleusan eile, thèid seisean a’ bhrabhsair agad cuide ris an trafaig eadar na h-aplacaidean agad ’s an API a dhìon le SSL agus thèid hais a dhèanamh dhen fhacal-fhaire agad le algairim aon-shligheach làidir. Faodaidh tu dearbhadh dà-cheumnach a chur an comas airson barrachd tèarainteachd a chur ris an inntrigeadh dhan chunntas agad.</p> <hr class="spacer" /> <h3 id="data-retention">Dè am poileasaidh cumail dàta againn?</h3> <p>Nì sinn ar dìcheall:</p> <ul> <li>Nach cùm sinn logaidhean an fhrithealaiche sa bheil seòlaidhean IP nan iarrtasan uile dhan fhrithealaiche seo nas fhaide na 90 latha ma chumas sinn logaichean dhen leithid idir.</li> <li>Nach cùm sinn na seòlaidhean IP a tha co-cheangailte ri cleachdaichean clàraichte nas fhaide na 12 mhìos.</li> </ul> <p>’S urrainn dhut tasg-lann iarraidh dhen t-susbaint agad ’s a luchdadh a-nuas is gabhaidh seo a-staigh na postaichean, na ceanglachain meadhain, dealbh na pròifil agus dealbh a’ bhanna-chinn agad.</p> <p>’S urrainn dhut an cunntas agad a sguabadh às gu buan uair sam bith.</p> <hr class="spacer"/> <h3 id="cookies">An cleachd sinn briosgaidhean?</h3> <p>Cleachdaidh. ’S e faidhlichean beaga a tha sna briosgaidean a thar-chuireas làrach no solaraiche seirbheise gu clàr-cruaidh a’ choimpiutair agad leis a’ bhrabhsair-lìn agad (ma cheadaicheas tu sin). Bheir na briosgaidean sin comas dhan làrach gun aithnich i am brabhsair agad agus ma tha cunntas clàraichte agad, gun co-cheangail i ris a’ chunntas chlàraichte agad e.</p> <p>Cleachdaidh sinn briosgaidean airson na roghainnean agad a thuigsinn ’s a ghlèidheadh gus an tadhail thu oirnn san àm ri teachd.</p> <hr class="spacer" /> <h3 id="disclose">Am foillsich sinn fiosrachadh sam bith gu pàrtaidhean air an taobh a-muigh?</h3> <p>Cha reic, malairt no tar-chuir sinn fiosrachadh air a dh’aithnichear thu fhèin gu pàrtaidh sam bith air an taobh a-muigh. Cha ghabh seo a-staigh treas-phàrtaidhean earbsach a chuidicheas leinn le ruith na làraich againn, le obrachadh a’ ghnìomhachais againn no gus an t-seirbheis a thoirt leat cho fada ’s a dh’aontaicheas na treas-phàrtaidhean sin gun cùm iad am fiosrachadh dìomhair. Faodaidh sinn am fiosrachadh agad fhoillseachadh cuideachd nuair a bhios sinn dhen bheachd gu bheil am foillseachadh sin iomchaidh airson gèilleadh dhan lagh, poileasaidhean na làraich againn èigneachadh no na còraichean, an sealbh no an t-sàbhailteachd againn fhèin no aig càch a dhìon.</p> <p>Dh’fhaoidte gun dèid an t-susbaint phoblach agad a luchdadh a-nuas le frithealaichean eile san lìonra. Thèid na postaichean poblach agad ’s an fheadhainn dhan luchd-leantainn a-mhàin a lìbhrigeadh dha na frithealaichean far a bheil an luchd-leantainn agad a’ còmhnaidh agus thèid na teachdaireachdan dìreach a lìbhrigeadh gu frithealaichean nam faightearan nuair a bhios iad a’ còmhnaidh air frithealaiche eile.</p> <p>Nuair a dh’ùghdarraicheas tu aplacaid gun cleachd i an cunntas agad, a-rèir sgòp nan ceadan a dh’aontaicheas tu riutha, faodaidh i fiosrachadh poblach na pròifil agad, liosta na feadhna air a bhios tu a’ leantainn, an luchd-leantainn agad, na liostaichean agad, na postaichean agad uile ’s na h-annsachdan agad inntrigeadh. Chan urrainn do dh’aplacaidean an seòladh puist-d no am facal-faire agad inntrigeadh idir.</p> <hr class="spacer" /> <h3 id="children">Cleachdadh na làraich leis a’ chloinn</h3> <p>Ma tha am frithealaiche seo san Aonadh Eòrpach (AE) no san Roinn Eaconomach na h-Eòrpa (EEA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">General Data Protection Regulation</a>) nach cleachd thu an làrach seo.</p> <p>Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children''s Online Privacy Protection Act</a>)ha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">General Data Protection Regulation</a>) nach cleachd thu an làrach seo.</p> <p>Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children''s Online Privacy Protection Act</a>) nach cleachd thu an làrach seo.</p> <p>Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile.</p> <hr class="spacer" /> <h3 id="changes">Atharraichean air a’ phoileasaidh phrìobhaideachd againn</h3> <p>Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo.</p> <p>Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-7mh dhen Mhart 2018.</p> <p>Chaidh a fhreagarrachadh o thùs o <a href="https://github.com/discourse/discourse">phoileasaidh prìobhaideachd Discourse</a>.</p> nach cleachd thu an làrach seo.</p> <p>Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile.</p> <hr class="spacer" /> <h3 id="changes">Atharraichean air a’ phoileasaidh phrìobhaideachd againn</h3> <p>Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo.</p> <p>Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-7mh dhen Mhart 2018.</p> <p>Chaidh a fhreagarrachadh o thùs o <a href="https://github.com/discourse/discourse">phoileasaidh prìobhaideachd Discourse</a>.</p>' + body_html: '<h2>Poileasaidh prìobhaideachd</h2> <h3 id="collect">Dè am fiosrachadh a chruinnicheas sinn?</h3> <ul> <li><em>Fiosrachadh bunasach a’ cunntais</em>: Ma chlàraicheas tu leis an fhrithealaiche seo, dh’fhaoidte gun dèid iarraidh ort gun cuir thu a-steach ainm-cleachdaiche, seòladh puist-d agus facal-faire. Faodaidh tu barrachd fiosrachaidh a chur ris a’ phròifil agad ma thogras tu, can ainm-taisbeanaidh agus teacsa mu do dhèidhinn agus dealbhan pròifile ’s banna-chinn a luchdadh suas. Thèid an t-ainm-cleachdaiche, an t-ainm-taisbeanaidh, an teacsa mu do dhèidhinn agus dealbhan na pròifile ’s a bhanna-chinn a shealltainn gu poblach an-còmhnaidh.</li> <li><em>Postaichean, luchd-leantainn agus fiosrachadh poblach eile</em>: Tha liosta nan daoine air a leanas tu poblach mar a tha i dhan luchd-leantainn agad. Nuair a chuireas tu a-null teachdaireachd, thèid an t-àm ’s an ceann-latha a stòradh cho math ris an aplacaid leis an do chuir thu am foirm a-null. Faodaidh ceanglachain meadhain a bhith am broinn teachdaireachdan, can dealbhan no videothan. Tha postaichean poblach agus postaichean falaichte o liostaichean ri ’m faighinn gu poblach. Nuair a bhrosnaicheas tu post air a’ phròifil agad, ’s e fiosrachadh poblach a tha sin cuideachd. Thèid na postaichean agad a lìbhrigeadh dhan luchd-leantainn agad agus is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nuair a sguabas tu às post, thèid sin a lìbhrigeadh dhan luchd-leantainn agad cuideachd. Tha ath-bhlogachadh no dèanamh annsachd de phost eile poblach an-còmhnaidh.</li> <li><em>Postaichean dìreach is dhan luchd-leantainn a-mhàin</em>: Thèid a h-uile post a stòradh ’s a phròiseasadh air an fhrithealaiche. Thèid na postaichean dhan luchd-leantainn a-mhàin a lìbhrigeadh dhan luchd-leantainn agad agus dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost. Thèid postaichean dìreach a lìbhrigeadh dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost a-mhàin. Is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nì sinn ar dìcheall gun cuingich sinn an t-inntrigeadh dha na postaichean air na daoine a fhuair ùghdarrachadh dhaibh ach dh’fhaoidte nach dèan frithealaichean eile seo. Mar sin dheth, tha e cudromach gun doir thu sùil air na frithealaichean dhan a bhuineas an luchd-leantainn agad. Faodaidh tu roghainn a chur air no dheth a leigeas leat aontachadh ri luchd-leantainn ùra no an diùltadh a làimh. <em>Thoir an aire gum faic rianairean an fhrithealaiche agus frithealaiche sam bith a gheibh am fiosrachadh na teachdaireachdan dhen leithid</em> agus gur urrainn dha na faightearan glacaidhean-sgrìn no lethbhreacan dhiubh a dhèanamh no an cho-roinneadh air dòighean eile. <em>Na co-roinn fiosrachadh cunnartach air Mastodon idir.</em></li> <li><em>IPan is meata-dàta eile</em>: Nuair a nì thu clàradh a-steach, clàraidh sinn an seòladh IP on a rinn thu clàradh a-steach cuide ri ainm aplacaid a’ bhrabhsair agad. Bidh a h-uile seisean clàraidh a-steach ri làimh dhut airson an lèirmheas agus an cùl-ghairm sna roghainnean. Thèid an seòladh IP as ùire a chleachd thu a stòradh suas ri 12 mhìos. Faodaidh sinn cuideachd logaichean an fhrithealaiche a chumail a ghabhas a-steach seòladh IP aig a h-uile iarrtas dhan fhrithealaiche againn.</li> </ul> <hr class="spacer" /> <h3 id="use">Dè na h-adhbharan air an cleachd sinn am fiosrachadh agad?</h3> <p>Seo na dòighean air an cleachd sinn fiosrachadh sam bith a chruinnich sinn uat ma dh’fhaoidte:</p> <ul> <li>Airson bun-ghleusan Mhastodon a lìbhrigeadh. Chan urrainn dhut conaltradh le susbaint càich no an t-susbaint agad fhèin a phostadh ach nuair a bhios tu air do chlàradh a-steach. Mar eisimpleir, faodaidh tu leantainn air càch ach am faic thu na postaichean aca còmhla air loidhne-ama pearsanaichte na dachaigh agad.</li> <li>Airson cuideachadh le maorsainneachd na coimhearsnachd, can airson coimeas a dhèanamh eadar an seòladh IP agad ri feadhainn eile feuch am mothaich sinn do sheachnadh toirmisg no briseadh eile nan riaghailtean.</li> <li>Faodaidh sinn an seòladh puist-d agad a chleachdadh airson fiosrachadh no brathan mu chonaltraidhean càich leis an t-susbaint agad no teachdaireachdan a chur thugad, airson freagairt ri ceasnachaidhean agus/no iarrtasan no ceistean eile.</li> </ul> <hr class="spacer" /> <h3 id="protect">Ciamar a dhìonas sinn am fiosrachadh agad?</h3> <p>Cuiridh sinn iomadh gleus tèarainteachd an sàs ach an glèidheadh sinn sàbhailteachd an fhiosrachaidh phearsanta agad nuair a chuireas tu gin a-steach, nuair a chuireas tu a-null e no nuair a nì thu inntrigeadh air. Am measg gleusan eile, thèid seisean a’ bhrabhsair agad cuide ris an trafaig eadar na h-aplacaidean agad ’s an API a dhìon le SSL agus thèid hais a dhèanamh dhen fhacal-fhaire agad le algairim aon-shligheach làidir. Faodaidh tu dearbhadh dà-cheumnach a chur an comas airson barrachd tèarainteachd a chur ris an inntrigeadh dhan chunntas agad.</p> <hr class="spacer" /> <h3 id="data-retention">Dè am poileasaidh cumail dàta againn?</h3> <p>Nì sinn ar dìcheall:</p> <ul> <li>Nach cùm sinn logaidhean an fhrithealaiche sa bheil seòlaidhean IP nan iarrtasan uile dhan fhrithealaiche seo nas fhaide na 90 latha ma chumas sinn logaichean dhen leithid idir.</li> <li>Nach cùm sinn na seòlaidhean IP a tha co-cheangailte ri cleachdaichean clàraichte nas fhaide na 12 mhìos.</li> </ul> <p>’S urrainn dhut tasg-lann iarraidh dhen t-susbaint agad ’s a luchdadh a-nuas is gabhaidh seo a-staigh na postaichean, na ceanglachain meadhain, dealbh na pròifil agus dealbh a’ bhanna-chinn agad.</p> <p>’S urrainn dhut an cunntas agad a sguabadh às gu buan uair sam bith.</p> <hr class="spacer"/> <h3 id="cookies">An cleachd sinn briosgaidhean?</h3> <p>Cleachdaidh. ’S e faidhlichean beaga a tha sna briosgaidean a thar-chuireas làrach no solaraiche seirbheise gu clàr-cruaidh a’ choimpiutair agad leis a’ bhrabhsair-lìn agad (ma cheadaicheas tu sin). Bheir na briosgaidean sin comas dhan làrach gun aithnich i am brabhsair agad agus ma tha cunntas clàraichte agad, gun co-cheangail i ris a’ chunntas chlàraichte agad e.</p> <p>Cleachdaidh sinn briosgaidean airson na roghainnean agad a thuigsinn ’s a ghlèidheadh gus an tadhail thu oirnn san àm ri teachd.</p> <hr class="spacer" /> <h3 id="disclose">Am foillsich sinn fiosrachadh sam bith gu pàrtaidhean air an taobh a-muigh?</h3> <p>Cha reic, malairt no tar-chuir sinn fiosrachadh air a dh’aithnichear thu fhèin gu pàrtaidh sam bith air an taobh a-muigh. Cha ghabh seo a-staigh treas-phàrtaidhean earbsach a chuidicheas leinn le ruith na làraich againn, le obrachadh a’ ghnìomhachais againn no gus an t-seirbheis a thoirt leat cho fada ’s a dh’aontaicheas na treas-phàrtaidhean sin gun cùm iad am fiosrachadh dìomhair. Faodaidh sinn am fiosrachadh agad fhoillseachadh cuideachd nuair a bhios sinn dhen bheachd gu bheil am foillseachadh sin iomchaidh airson gèilleadh dhan lagh, poileasaidhean na làraich againn èigneachadh no na còraichean, an sealbh no an t-sàbhailteachd againn fhèin no aig càch a dhìon.</p> <p>Dh’fhaoidte gun dèid an t-susbaint phoblach agad a luchdadh a-nuas le frithealaichean eile san lìonra. Thèid na postaichean poblach agad ’s an fheadhainn dhan luchd-leantainn a-mhàin a lìbhrigeadh dha na frithealaichean far a bheil an luchd-leantainn agad a’ còmhnaidh agus thèid na teachdaireachdan dìreach a lìbhrigeadh gu frithealaichean nam faightearan nuair a bhios iad a’ còmhnaidh air frithealaiche eile.</p> <p>Nuair a dh’ùghdarraicheas tu aplacaid gun cleachd i an cunntas agad, a-rèir sgòp nan ceadan a dh’aontaicheas tu riutha, faodaidh i fiosrachadh poblach na pròifil agad, liosta na feadhna air a bhios tu a’ leantainn, an luchd-leantainn agad, na liostaichean agad, na postaichean agad uile ’s na h-annsachdan agad inntrigeadh. Chan urrainn do dh’aplacaidean an seòladh puist-d no am facal-faire agad inntrigeadh idir.</p> <hr class="spacer" /> <h3 id="children">Cleachdadh na làraich leis a’ chloinn</h3> <p>Ma tha am frithealaiche seo san Aonadh Eòrpach (AE) no san Roinn Eaconomach na h-Eòrpa (EEA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">General Data Protection Regulation</a>) nach cleachd thu an làrach seo.</p> <p>Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children''s Online Privacy Protection Act</a>)ha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">General Data Protection Regulation</a>) nach cleachd thu an làrach seo.</p> <p>Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children''s Online Privacy Protection Act</a>) nach cleachd thu an làrach seo.</p> <p>Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile.</p> <hr class="spacer" /> <h3 id="changes">Atharraichean air a’ phoileasaidh phrìobhaideachd againn</h3> <p>Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo.</p> <p>Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-7mh dhen Mhart 2018.</p> <p>Chaidh a fhreagarrachadh o thùs o <a href="https://github.com/discourse/discourse">phoileasaidh prìobhaideachd Discourse</a>.</p> nach cleachd thu an làrach seo.</p> <p>Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile.</p> <hr class="spacer" /> <h3 id="changes">Atharraichean air a’ phoileasaidh phrìobhaideachd againn</h3> <p>Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo.</p> <p>Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-7mh dhen Mhart 2018.</p> <p>Chaidh a fhreagarrachadh o thùs o <a href="https://github.com/discourse/discourse">phoileasaidh prìobhaideachd Discourse</a>.</p> + + ' title: Teirmichean na seirbheise ⁊ poileasaidh prìobhaideachd %{instance} themes: contrast: Mastodon (iomsgaradh àrd) @@ -1371,6 +1440,7 @@ gd: formats: default: "%d %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Cuir ris disable: Cuir an dearbhadh dà-cheumnach à comas @@ -1398,24 +1468,31 @@ gd: subject: Dearbh an oidhirp air clàradh a-steach title: Oidhirp clàraidh a-steach warning: + categories: + spam: Spama + violation: Tha an t-susbaint a’ briseadh na riaghailtean giùlain a leanas explanation: - disable: Chan urrainn dhut clàradh a-steach dhan chunntas agad tuilleadh no a chleachdadh ann an dòigh sam bith eile ach mairidh a’ phròifil ’s an dàta eile agad. - sensitive: Thèid dèiligeadh ris na faidhlichean meadhain is na meadhanan ceangailte agad mar fheadhainn fhrionasach. - silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh liosta phoblach. Gidheadh, faodaidh càch leantainn ort a làimh fhathast." - 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 gu slàn ach cumaidh sinn cuid dhen dàta ach nach seachain thu an cur à rèim. - get_in_touch: "’S urrainn dhut freagairt dhan phost-d seo no conaltradh ris an sgioba aig %{instance}." + delete_statuses: Thathar dhen bheachd gu bheil cuid dhe na postaichean agad a’ briseadh riaghailt no riaghailtean giùlain agus chaidh an toirt air falbh le maoir %{instance} an uairsin. Ma bhriseas tu na riaghailtean a-rithist, dh’fhaoidte gum fulaing an cunntas agad peanas nas teinne. + disable: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh ach mairidh a’ phròifil ’s an dàta eile agad. Faodaidh tu lethbhreac-glèidhidh dhen dàta agad iarraidh, roghainnean a’ chunntais atharrachadh no an cunntas agad a sguabadh às. + sensitive: O seo a-mach, thèid comharra na frionasachd a chur ri faidhle meadhain sam bith a luchdaicheas tu suas agus thèid am falach air cùlaibh rabhaidh a ghabhas briogadh air. + silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus luirg. Gidheadh, faodaidh càch leantainn ort a làimh fhathast." + 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: 'Gu sònraichte, dha:' + statuses: 'Na postaichean a bhris riaghailt:' subject: + delete_statuses: Chaidh na postaichean agad air %{acct} a thoirt air falbh disable: Chaidh an cunntas %{acct} agad a reòthadh none: Rabhadh dha %{acct} - sensitive: Chaidh comharra a chur ri meadhanan a’ chunntais %{acct} agad gu bheil iad frionasach + sensitive: Thèid comharra na frionasachd a chur ris na faidhlichean meadhain agad air %{acct} o seo a-mach silence: Chaidh an cunntas %{acct} agad a chuingeachadh suspend: Chaidh an cunntas %{acct} agad a chur à rèim title: + delete_statuses: Chaidh postaichean a thoirt air falbh disable: Cunntas reòite none: Rabhadh - sensitive: Chaidh comharra a chur ris na meadhanan agad gu bheil iad frionasach + sensitive: Chaidh meadhanan fhalach silence: Cunntas cuingichte suspend: Cunntas à rèim welcome: @@ -1443,7 +1520,7 @@ gd: otp_lost_help_html: Ma chaill thu an t-inntrigeadh dhan dà chuid diubh, ’s urrainn dhut fios a chur gu %{email} seamless_external_login: Rinn thu clàradh a-steach le seirbheis on taobh a-muigh, mar sin chan eil roghainnean an fhacail-fhaire ’s a’ phuist-d ri làimh dhut. signed_in_as: 'Chlàraich thu a-steach mar:' - suspicious_sign_in_confirmation: Tha coltas nach do rinn thu clàradh a-steach on uidheam seo cheana agus cha do clàraich thu a-steach greis mhath. Air an adhbhar sin, cuiridh sinn còd tèarainteachd dhan t-seòladh puist-d agad ach an dearbhamaid gur e tusa a th’ ann. + suspicious_sign_in_confirmation: Tha coltas nach do rinn thu clàradh a-steach on uidheam seo cheana. Air an adhbhar sin, cuiridh sinn còd tèarainteachd dhan t-seòladh puist-d agad ach an dearbhamaid gur e tusa a th’ ann. verification: explanation_html: '’S urrainn dhut <strong>dearbhadh gur e seilbheadair nan ceanglaichean ann am meata-dàta na pròifil agad a th’ annad</strong>. Airson sin a dhèanamh, feumaidh ceangal air ais dhan phròifil Mastodon a bhith aig an làrach-lìn cheangailte. <strong>Feumaidh</strong> buadh <code>rel="me"</code> a bhith aig a’ cheangal air ais. Chan eil e gu diofar dè an t-susbaint a tha ann an teacsa a’ cheangail. Seo ball-eisimpleir dhut:' verification: Dearbhadh diff --git a/config/locales/gl.yml b/config/locales/gl.yml index d740d2b73..57154da58 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -21,7 +21,9 @@ gl: federation_hint_html: Cunha conta en %{instance} poderás seguir ás persoas en calquera servidor do Mastodon e alén. get_apps: Probar unha aplicación móbil hosted_on: Mastodon aloxado en %{domain} - instance_actor_flash: Esta conta é un actor virtual utilizado para representar ao servidor e non a unha usuaria individual. Utilízase para propósitos de federación e non debería estar bloqueada a menos que queiras bloquear a toda a instancia, en tal caso deberías utilizar o bloqueo do dominio. + instance_actor_flash: 'Esta conta é un actor virtual utilizado para representar ao servidor e non a unha usuaria individual. Utilízase para propósitos de federación e non debería estar bloqueada a menos que queiras bloquear a toda a instancia, en tal caso deberías utilizar o bloqueo do dominio. + + ' learn_more: Saber máis privacy_policy: Política de privacidade rules: Regras do servidor @@ -97,8 +99,7 @@ gl: accounts: add_email_domain_block: Bloquear o dominio do email approve: Aprobar - approve_all: Aprobar todos - approved_msg: Aprobada a solicitude da aplicación de conexión de %{username} + approved_msg: Aprobada a solicitude de rexistro de %{username} are_you_sure: Está segura? avatar: Imaxe de perfil by_domain: Dominio @@ -112,6 +113,7 @@ gl: confirm: Confirmar confirmed: Confirmado confirming: Estase a confirmar + custom: Personalizado delete: Eliminar datos deleted: Eliminado demote: Rebaixar @@ -151,7 +153,6 @@ gl: active: Activa all: Todo pending: Pendente - silenced: Acalada suspended: Suspendidos title: Moderación moderation_notes: Notas de moderación @@ -169,8 +170,7 @@ gl: redownload: Actualizar perfil redownloaded_msg: Actualizado o perfil de %{username} desde a orixe reject: Rexeitar - reject_all: Rexeitar todo - rejected_msg: Rexeitada a solicitude da aplicación de conexión de %{username} + rejected_msg: Rexeitada a solicitude de rexistro de %{username} remove_avatar: Eliminar imaxe de perfil remove_header: Eliminar cabeceira removed_avatar_msg: Eliminado a imaxe de avatar de %{username} @@ -195,8 +195,8 @@ gl: only_password: Só contrasinal password_and_2fa: Contrasinal e 2FA password_and_sign_in_token: Contrasinal e token nun email - sensitive: Sensible - sensitized: marcado como sensible + sensitive: Forzar como sensible + sensitized: Marcado como sensible shared_inbox_url: URL da caixa de entrada compartida show: created_reports: Denuncias feitas @@ -204,14 +204,16 @@ gl: silence: Silenciar silenced: Silenciado statuses: Publicacións + strikes: Accións previas subscribe: Subscribirse 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. - time_in_queue: Agardando na cola %{time} title: Contas + unblock_email: Desbloquear enderezo de email + unblocked_email_msg: Enderezo de email de %{username} desbloqueado unconfirmed_email: Email non confirmado - undo_sensitized: Desmarcar sensible + undo_sensitized: Desmarcar como sensible undo_silenced: Desfacer acalar undo_suspension: Desfacer suspensión unsilenced_msg: Retirado o límite da conta %{username} @@ -224,6 +226,7 @@ gl: whitelisted: Listaxe branca action_logs: action_types: + approve_user: Aprobar Usuaria assigned_to_self_report: Asignar denuncia change_email_user: Editar email da usuaria confirm_user: Confirmar usuaria @@ -241,6 +244,7 @@ gl: destroy_domain_allow: Eliminar permiso de dominio destroy_domain_block: Eliminar bloqueo de dominio destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico + destroy_instance: Purgar Dominio destroy_ip_block: Eliminar regra IP destroy_status: Eliminar publicación destroy_unavailable_domain: Eliminar dominio Non dispoñible @@ -253,6 +257,7 @@ gl: enable_user: Activar usuaria memorialize_account: Transformar en conta conmemorativa promote_user: Promover usuaria + reject_user: Rexeitar Usuaria remove_avatar_user: Eliminar avatar reopen_report: Reabrir denuncia reset_password_user: Restabelecer contrasinal @@ -261,6 +266,7 @@ gl: silence_account: Silenciar conta suspend_account: Suspender conta unassigned_report: Desasignar denuncia + unblock_email_account: Desbloquear enderezo de email unsensitive_account: Retira a marca de sensible do multimedia da conta unsilence_account: Deixar de silenciar conta unsuspend_account: Retirar suspensión de conta @@ -269,6 +275,7 @@ gl: update_domain_block: Actualizar bloqueo do dominio update_status: Actualizar publicación actions: + 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}" confirm_user_html: "%{name} confirmou o enderezo de email da usuaria %{target}" @@ -286,6 +293,7 @@ gl: destroy_domain_allow_html: "%{name} retirou a federación co dominio %{target}" destroy_domain_block_html: "%{name} desbloqueou o dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueou o dominio de email %{target}" + destroy_instance_html: "%{name} purgou o dominio %{target}" destroy_ip_block_html: "%{name} eliminou a regra para o IP %{target}" destroy_status_html: "%{name} eliminou a publicación de %{target}" destroy_unavailable_domain_html: "%{name} retomou a interacción co dominio %{target}" @@ -298,6 +306,7 @@ gl: enable_user_html: "%{name} activou a conexión 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_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}" reset_password_user_html: "%{name} restableceu o contrasinal da usuaria %{target}" @@ -306,6 +315,7 @@ gl: silence_account_html: "%{name} acalou a conta de %{target}" suspend_account_html: "%{name} suspendeu a conta de %{target}" unassigned_report_html: "%{name} quitoulle a asignación á denuncia %{target}" + unblock_email_account_html: "%{name} desbloqueou o enderezo de email de %{target}" unsensitive_account_html: "%{name} desmarcou como sensible o multimedia de %{target}" unsilence_account_html: "%{name} reactivou a conta de %{target}" unsuspend_account_html: "%{name} retiroulle a suspensión á conta de %{target}" @@ -425,7 +435,7 @@ gl: rejecting_media: rexeitando ficheiros multimedia rejecting_reports: rexeitando denuncias severity: - silence: silenciado + silence: limitado suspend: suspendido show: affected_accounts: @@ -463,6 +473,7 @@ gl: back_to_limited: Limitado back_to_warning: Aviso by_domain: Dominio + confirm_purge: Tes a certeza de querer eliminar permanentemente os datos deste dominio? delivery: all: Todo clear: Eliminar erros na entrega @@ -478,6 +489,7 @@ gl: delivery_available: Entrega dispoñíbel delivery_error_days: Días de fallo na entrega delivery_error_hint: Se non é posible a entrega durante %{count} días, será automáticamente marcado como non entregable. + destroyed_msg: Os datos desde %{domain} están na cola para o borrado inminente. empty: Non se atopan dominios. known_accounts: one: "%{count} conta coñecida" @@ -488,6 +500,7 @@ gl: title: Moderación private_comment: Comentario privado public_comment: Comentario público + purge: Purgar title: Federación total_blocked_by_us: Bloqueado por nós total_followed_by_them: Seguidos por eles @@ -517,8 +530,6 @@ gl: title: Crear nova regra IP no_ip_block_selected: Non se cambiou ningunha regra iP porque non seleccionaches ningunha title: Regras IP - pending_accounts: - title: Contas pendentes (%{count}) relationships: title: Relacións de %{acct} relays: @@ -540,32 +551,44 @@ gl: report_notes: created_msg: A nota da denuncia creouse de xeito correcto! destroyed_msg: A nota da denuncia borrouse de xeito correcto! + today_at: Hoxe ás %{time} reports: account: notes: one: "%{count} nota" other: "%{count} notas" - reports: - one: "%{count} denuncia" - other: "%{count} denuncias" + action_log: Rexistro de auditoría action_taken_by: Acción tomada por + actions: + other_description_html: Mira máis opcións para controlar o comportamento da conta e personalizar as comunicacións coa conta denunciada. + 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:' + add_to_report: Engadir máis á denuncia are_you_sure: Estás seguro? assign_to_self: Asignarme assigned: Moderador asignado by_target_domain: Dominio da conta denunciada + category: Categoría + category_description_html: A razón para denunciar esta conta ou contido será citada na comunicación coa conta denunciada comment: none: Ningún + comment_description_html: 'Como información engadida, %{name} escribiu:' created_at: Denunciado + delete_and_resolve: Eliminar e resolver forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resolto mark_as_unresolved: Marcar como non resolto + no_one_assigned: Ninguén notes: create: Engadir nota create_and_resolve: Resolver cunha nota create_and_unresolve: Reabrir cunha nota delete: Eliminar 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 reopen: Reabrir denuncia report: 'Denuncia #%{id}' reported_account: Conta denunciada @@ -573,11 +596,14 @@ gl: resolved: Resolto resolved_msg: Resolveuse con éxito a denuncia! status: Estado + statuses: Contido denunciado + statuses_description_html: O contido ofensivo será citado na comunicación coa conta denunciada target_origin: Orixe da conta denunciada title: Denuncias unassign: Non asignar unresolved: Non resolto updated_at: Actualizado + view_profile: Ver perfil rules: add_new: Engadir regra delete: Eliminar @@ -679,15 +705,13 @@ gl: destroyed_msg: Eliminado correctamente o subido! statuses: back_to_account: Volver a páxina da conta + back_to_report: Volver a denuncias batch: - delete: Eliminar - nsfw_off: Marcar como non sensible - nsfw_on: Marcar como sensible + remove_from_report: Eliminar da denuncia + report: Denuncia deleted: Eliminado - failed_to_execute: Fallou a execución media: title: Medios - no_media: Sen medios no_status_selected: Non se cambiou ningunha publicación xa que ningunha foi seleccionada title: Publicacións da conta with_media: con medios @@ -700,21 +724,51 @@ gl: sidekiq_process_check: message_html: Non hai procesos Sidekiq a funcionar para a cola(s) %{value}. Revisa a túa configuración para Sidekiq tags: - accounts_today: Usos únicos hoxe - accounts_week: Usos únicos esta semana - breakdown: Consumo do uso diario por fonte - last_active: Úlimo activo - most_popular: Máis popular - most_recent: Máis recente - name: Cancelo review: Estado de revisión - reviewed: Revisado - title: Cancelos - trending_right_now: Agora como Tendencia - unique_uses_today: "%{count} publicando hoxe" - unreviewed: Sen revisar updated_msg: Actualizaronse os axustes dos cancelos title: Administración + trends: + allow: Permitir + approved: Aprobadas + disallow: Denegar + links: + allow: Permitir ligazón + allow_provider: Permitir orixe + disallow: Denegar ligazón + disallow_provider: Denegar orixe + shared_by_over_week: + one: Compartido por unha persoa na última semana + other: Compartido por %{count} persoas na última semana + title: Ligazóns en voga + usage_comparison: Compartido %{today} veces hoxe, comparado con %{yesterday} onte + pending_review: Revisión pendente + preview_card_providers: + allowed: As ligazóns desta orixe poden estar en voga + rejected: As ligazóns desta orixe non poden estar en voga + title: Orixes + rejected: Rexeitado + tags: + current_score: Puntuación actual %{score} + dashboard: + tag_accounts_measure: usos únicos + tag_languages_dimension: Clasificiación idiomas + tag_servers_dimension: Clasificación Servidores + tag_servers_measure: diferentes servidores + tag_uses_measure: total de usos + listable: Pode ser suxerida + not_listable: Non vai ser suxerida + not_trendable: Non aparecerá en tendencias + not_usable: Non pode ser usado + peaked_on_and_decaying: Máximo en %{date}, agora diminúe + title: Cancelos en voga + trendable: Pode aparecer nas tendencias + trending_rank: 'En voga #%{rank}' + usable: Pode ser usado + usage_comparison: Utilizado %{today} veces hoxe, comparado coas %{yesterday} de onte + used_by_over_week: + one: Utilizado por unha persoa na última semana + other: Utilizado por %{count} persoas na última semana + title: Tendencias warning_presets: add_new: Engadir novo delete: Eliminar @@ -729,9 +783,16 @@ gl: body: "%{reporter} informou sobre %{target}" body_remote: Alguén desde %{domain} informou sobre %{target} subject: Novo informe sobre %{instance} (#%{id}) - new_trending_tag: - body: 'O cancelo #%{name} é tendencia hoxe, pero non foi previamente revisada. Non se amosará de xeito público a menos que ti o permitas, ou gardes o formulario para facer que non se che consulte de novo.' - subject: Un novo cancelo que revisar en %{instance} (#%{name}) + new_trending_links: + body: As seguintes ligazóns están hoxe en voga, pero as súas orixes non foron anteriormente revisadas. Non se van amosar públicamente ata que as aprobes. Non se crearán novas notificacións acerca destas orixes. + no_approved_links: Actualmente non hai ligazóns en voga aprobadas. + requirements: A ligazón en voga aprobada con menor rango é "%{lowest_link_title}" cunha puntuación de %{lowest_link_score}. + subject: Novas ligazóns en voga para revisión en %{instance} + new_trending_tags: + body: 'Os seguintes cancelos son tendencia hoxe, pero non foron previamente revisados. Non aparecerán públicamente a menos que os aprobes:' + no_approved_tags: Non hai cancelos en voga aprobados. + requirements: 'O cancelo aprobado con menor rango é #%{lowest_tag_name} cunha puntuación de %{lowest_tag_score}.' + subject: Hai novos cancelos pendentes de revisión en %{instance} aliases: add_new: Crear alcume created_msg: Creou un novo alcume correctamente. Pode iniciar o movemento desde a conta antiga. @@ -783,6 +844,7 @@ 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 migrate_account: Mover a unha conta diferente @@ -805,7 +867,7 @@ gl: 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 aplicación está pendente de revisión. Poderíanos levar algún tempo. Recibirás un correo se a aplicación está aprobada. + 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? @@ -815,7 +877,7 @@ gl: already_requested: Xa tes enviada unha solicitude de seguimento a esa conta error: Desgraciadamente, algo fallou ao buscar a conta remota follow: Seguir - follow_request: 'Enviou unha petición de seguimento a:' + follow_request: 'Enviaches unha petición de seguimento a:' following: 'Parabéns! Está a seguir a:' post_follow: close: Ou, pode pechar esta ventá. @@ -886,7 +948,7 @@ gl: content: Sentímolo, pero algo do noso lado falloou. title: Esta páxina non é correcta '503': A páxina non se puido servir debido a un fallo temporal no servidor. - noscript_html: Para utilizar a aplicación web de Mastodon debe habilitar JavaScript. De xeito alternativo, intente unha das <a href="%{apps_path}">apps nativas</a> para Mastodon da súa plataforma. + noscript_html: Para utilizar a aplicación web de Mastodon debes activar JavaScript. De xeito alternativo, probb cunha das <a href="%{apps_path}">apps nativas</a> para Mastodon na túa plataforma. existing_username_validator: not_found: non se atopou unha usuaria local con ese alcume not_found_multiple: non se atopou a %{usernames} @@ -938,34 +1000,15 @@ gl: changes_saved_msg: Cambios gardados correctamente!! copy: Copiar delete: Eliminar - no_batch_actions_available: Non hai accións en pila dispoñibles nesta páxina + none: Ningún order_by: Ordenar por save_changes: Gardar cambios + today: hoxe validation_errors: one: Algo non está ben de todo! Por favor revise abaixo o erro other: Algo aínda non está ben! Por favor revise os %{count} erros abaixo html_validator: invalid_markup: 'contén cancelos HTML non válidas: %{error}' - identity_proofs: - active: Activo - authorize: Si, autorizar - authorize_connection_prompt: Autorizar esta conexión criptográfica? - errors: - failed: Fallou a conexión criptográfica. Por favor inténteo de novo desde %{provider}. - keybase: - invalid_token: Os testemuños Keybase son hashes de firma e deben ter 66 caracteres hexadecimais - verification_failed: Keybase non recoñece este testemuño como firma da usuaria de Keybase %{kb_username}. Por favor inténteo desde Keybase. - wrong_user: Non se puido crear a proba para %{proving} mentras está conectada como %{current}. Conéctate como %{proving} e inténtao de novo. - explanation_html: Aquí podes conectar criptográficamente as tuas outras identidades, como a un perfil Keybase. Esto permítelle a outras persoas enviarche mensaxes cifradas e confiar no contido que ti lles envías. - i_am_html: Eu son %{username} en %{service}. - identity: Identidade - inactive: Inactiva - publicize_checkbox: 'E tootee esto:' - publicize_toot: 'Comprobado! Eu son %{username} en %{service}: %{url}' - remove: Quitar a verificación da conta - removed: Quitaches correctamente a verificación da conta - status: Estado da validación - view_proof: Ver proba imports: errors: over_rows_processing_limit: contén máis de %{count} filas @@ -975,7 +1018,7 @@ gl: overwrite: Sobreescribir overwrite_long: Sustituír rexistros actuais cos novos preface: Pode importar os datos que exportou de outro servidor, tales como a lista de usuarias que está a seguir ou bloquear. - success: Os seus datos foron correctamente subidos e serán procesados ao momento + success: Os teus datos foron correctamente subidos e serán procesados ao momento types: blocking: Lista de bloqueo bookmarks: Marcadores @@ -1181,6 +1224,9 @@ gl: reply: proceed: Respostar prompt: 'Vas responder a esta publicación:' + reports: + errors: + invalid_rules: non fai referencia a regras válidas scheduled_statuses: over_daily_limit: Excedeches o límite de %{limit} publicacións programadas para ese día over_total_limit: Excedeches o límite de %{limit} publicacións programadas @@ -1239,7 +1285,6 @@ gl: edit_profile: Editar perfil export: Exportar datos featured_tags: Cancelos destacados - identity_proofs: Probas de identidade import: Importar import_and_export: Importar e exportar migrate: Migrar conta @@ -1264,18 +1309,19 @@ gl: other: "%{count} vídeos" boosted_from_html: Promovida desde %{acct_link} content_warning: 'Aviso sobre o contido: %{warning}' + default_language: Igual que o idioma da interface disallowed_hashtags: one: 'contiña un cancelo non permitido: %{tags}' other: 'contiña uns cancelos non permitidos: %{tags}' + edited_at: Editado %{date} errors: in_reply_not_found: A publicación á que tentas respostar semella que non existe. - language_detection: Detección automática do idioma open_in_web: Abrir na web over_character_limit: Excedeu o límite de caracteres %{max} pin_errors: + direct: As publicacións que só son visibles para as usuarias mencionadas non se poden fixar limit: Xa fixaches o número máximo permitido de publicacións ownership: Non podes fixar a publicación doutra usuaria - private: As publicacións non-públicas non poden ser fixadas reblog: Non se poden fixar as mensaxes promovidas poll: total_people: @@ -1307,7 +1353,7 @@ gl: ignore_favs: Ignorar favoritas ignore_reblogs: Ignorar promocións interaction_exceptions: Excepcións baseadas en interaccións - interaction_exceptions_explanation: Ten en conta de que non hai garantía de que se eliminen as túas publicacións se non superan o límite de promocións e favoritos aínd que algunha vez o tivesen superado. + interaction_exceptions_explanation: Ten en conta de que non hai garantía de que se eliminen as túas publicacións se non superan o límite de promocións e favoritos aínda que algunha vez o tivesen superado. keep_direct: Manter mensaxes directas keep_direct_hint: Non borrar ningunha das túas mensaxes directas keep_media: Manter publicacións que conteñen multimedia @@ -1430,6 +1476,7 @@ gl: formats: default: "%d %b, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Engadir disable: Deshabilitar @@ -1457,32 +1504,39 @@ gl: subject: Por favor confirma o intento de conexión title: Intento de conexión warning: + categories: + spam: Spam + violation: O contido viola as seguintes normas da comunidade explanation: - disable: Cando a súa conta está conxelada, os datos permanecen intactos, pero non pode levar a fin accións ate que se desbloquea. - sensitive: Os teus ficheiros e ligazóns a multimedia serán tratados como sensibles. - silence: Mentras a conta está limitada, só a xente que actualmente te segue verá as publicacións neste servidor, e poderías estar excluída de varias listaxes públicas. Porén, outras persoas poderíante seguir de xeito manual. - suspend: A súa conta foi suspendida, e todos os seus toots e medios subidos foron eliminados de este servidor de xeito irreversible, e dos servidores onde tivese seguidoras. - get_in_touch: Pode responder a este correo para contactar coa administración de %{instance}. + delete_statuses: Algunha das túas publicacións semella que viola algunha das normas da comunidade e foi eliminada pola moderación de %{instance}. Futuras violacións poderían implicar accións máis contundentes contra a túa conta. + 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. + 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: 'En concreto, para:' + statuses: 'Publicacións que contradín as normas:' subject: + delete_statuses: As túas publicacións en %{acct} foron eliminadas disable: A súa conta %{acct} foi conxelada none: Aviso para %{acct} - sensitive: Ó publicar multimedia a túa conta %{acct} foi marcada como sensible + sensitive: A partir de agora os ficheiros multimedia en %{acct} van ser marcados como sensibles silence: A súa conta %{acct} foi limitada suspend: A súa conta %{acct} foi suspendida title: + delete_statuses: Publicacións eliminadas disable: Conta conxelada none: Aviso - sensitive: O teu multimedia foi marcado como sensible + sensitive: Contido multimedia agochado silence: Conta limitada suspend: Conta suspendida welcome: edit_profile_action: Configurar perfil edit_profile_step: Podes personalizar o teu perfil subindo un avatar, cabeceira, cambiar o nome público e aínda máis. Se restrinxes a túa conta podes revisar a conta das persoas que solicitan seguirte antes de permitirlles o acceso aos teus toots. - explanation: Aquí ten alunhas endereitas para ir aprendendo + explanation: Aquí tes algunhas endereitas para ir aprendendo final_action: Comece a publicar - final_step: 'Publica! Incluso sen seguidoras as túas mensaxes públicas serán vistas por outras, por exemplo na cronoloxía local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.' + final_step: 'Publica! Incluso sen seguidoras as túas mensaxes públicas serán vistas por outras persoas, por exemplo na cronoloxía local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.' full_handle: O seu alcume completo full_handle_hint: Esto é o que lle dirá aos seus amigos para que poidan seguila ou enviarlle mensaxes desde outro servidor. review_preferences_action: Cambiar preferencias diff --git a/config/locales/he.yml b/config/locales/he.yml index 300d13d62..c151f0192 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -65,7 +65,6 @@ he: memorialize: הפוך לדף זכרון moderation: all: הכל - silenced: מושתקים suspended: מושהים title: ניהול קהילה moderation_notes: הודעות מנחה @@ -97,6 +96,7 @@ he: targeted_reports: דיווחים נגד חשבון זה silence: השתקה statuses: הודעות + strikes: עבירות קודמות subscribe: הרשמה title: חשבונות undo_silenced: ביטול השתקה @@ -128,18 +128,28 @@ he: undo: ביטול instances: title: שרתים מוכרים + report_notes: + today_at: היום, ב%{time} reports: + add_to_report: הוספת פרטים לדיווח are_you_sure: 100% על בטוח? + category: קטגוריה comment: none: ללא + comment_description_html: 'על מנת לספק עוד מידע, %{name} כתב\ה:' mark_as_resolved: סימון כפתור + no_one_assigned: אף אחד + notes: + title: הערות report: 'דווח על #%{id}' reported_account: חשבון מדווח reported_by: דווח על ידי resolved: פתור status: הודעה + statuses: התוכן עליו דווח title: דיווחים unresolved: לא פתור + view_profile: צפה בפרופיל settings: contact_information: email: נא להקליד כתובת דוא"ל פומבית @@ -156,6 +166,11 @@ he: title: תיאור אתר מורחב site_title: כותרת האתר title: הגדרות אתר + statuses: + back_to_report: חזרה לעמוד הדיווח + batch: + remove_from_report: הסרה מהדיווח + report: דווח title: ניהול application_mailer: settings: 'שינוי הגדרות דוא"ל: %{link}' @@ -165,6 +180,7 @@ he: auth: didnt_get_confirmation: לא התקבלו הוראות אימות? forgot_password: הנשתכחה סיסמתך? + log_in_with: התחבר באמצעות login: כניסה logout: יציאה register: הרשמה @@ -172,6 +188,8 @@ he: reset_password: איפוס סיסמא security: החלפת סיסמא set_new_password: שינוי סיסמא + status: + redirecting_to: חשבונכם לא פעיל כעת מכיוון שמפנה ל%{acct}. authorize_follow: error: למרבה הצער, היתה שגיאה בחיפוש החשבון המרוחק follow: לעקוב @@ -221,6 +239,11 @@ he: validations: images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות too_many: לא ניתן להוסיף יותר מארבעה קבצים + migrations: + not_redirecting: חשבונכם לא מפנה לשום חשבון אחר כעת. + redirected_msg: חשבונכם כעת מפנה ל%{acct}. + redirecting_to: חשבונכם מפנה ל%{acct}. + set_redirect: הגדר הפניה notification_mailer: digest: body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since} @@ -257,6 +280,8 @@ he: preferences: העדפות two_factor_authentication: אימות דו-שלבי statuses: + default_language: זהה לשפת ממשק + edited_at: נערך ב%{date} open_in_web: פתח ברשת over_character_limit: חריגה מגבול התווים של %{max} show_more: עוד @@ -273,6 +298,7 @@ he: time: formats: default: "%d %b %Y, %H:%M" + time: "%H:%M" two_factor_authentication: disable: כיבוי enabled_success: אימות דו-שלבי הופעל בהצלחה @@ -280,5 +306,16 @@ he: lost_recovery_codes: קודי האחזור מאפשרים אחזור גישה לחשבון במידה ומכשירך אבד. במידה וקודי האחזור אבדו, ניתן לייצרם מחדש כאן. תוקף קודי האחזור הישנים יפוג. recovery_codes_regenerated: קודי האחזור יוצרו בהצלחה recovery_instructions_html: במידה והגישה למכשירך תאבד, ניתן לייצר קודי אחזור למטה על מנת לאחזר גישה לחשבונך בכל עת. <strong>נא לשמור על קודי הגישה במקום בטוח</strong>. לדוגמא על ידי הדפסתם ושמירתם עם מסמכים חשובים אחרים, או שימוש בתוכנה ייעודית לניהול סיסמאות וסודות. + user_mailer: + warning: + categories: + spam: ספאם + reason: 'סיבה:' + subject: + delete_statuses: הפוסטים שלכם ב%{acct} הוסרו + sensitive: קבצי המדיה שלכם ב%{acct} יסומנו בתור תוכן רגיש מעכשיו והלאה + title: + delete_statuses: פוסטים שהוסרו + sensitive: מדיה שהוסתרה users: invalid_otp_token: קוד דו-שלבי שגוי diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 3380f7d42..d1a809144 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -42,7 +42,6 @@ hr: create: Ostavi bilješku accounts: approve: Odobri - approve_all: Odobri sve are_you_sure: Jeste li sigurni? by_domain: Domena change_email: @@ -143,9 +142,6 @@ hr: copy: Kopiraj delete: Obriši save_changes: Sačuvaj izmjene - identity_proofs: - authorize: Da, autoriziraj - identity: Identitet imports: preface: Možete uvesti podatke koje ste izveli s drugog poslužitelja, kao što su liste ljudi koje pratite ili blokirate. success: Vaši podatci uspješno su preneseni i bit će obrađeni u dogledno vrijeme diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 720cc7350..a72c02eae 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -101,7 +101,6 @@ hu: accounts: add_email_domain_block: Email domain tiltólistára vétele approve: Jóváhagyás - approve_all: Mindet jóváhagy approved_msg: A %{username} fiók regisztrációs kérelmét sikeresen elfogadtuk are_you_sure: Biztos vagy benne? avatar: Profilkép @@ -116,6 +115,7 @@ hu: confirm: Megerősítés confirmed: Megerősítve confirming: Megerősítés alatt + custom: Egyéni delete: Adatok törlése deleted: Törölve demote: Lefokozás @@ -155,7 +155,6 @@ hu: active: Aktív all: Összes pending: Függőben - silenced: Némítva suspended: Felfüggesztve title: Moderáció moderation_notes: Moderációs bejegyzés @@ -173,7 +172,6 @@ hu: redownload: Profilkép frissítése redownloaded_msg: "%{username} profilját sikeresen frissítettük az eredetiből" reject: Elutasítás - reject_all: Összes elutasítása rejected_msg: A %{username} fiók regisztrációs kérelmét sikeresen elutasítottuk remove_avatar: Profilkép eltávolítása remove_header: Fejléc törlése @@ -208,12 +206,14 @@ hu: silence: Némítás silenced: Némított statuses: Bejegyzés + strikes: Korábbi kihágások subscribe: Feliratkozá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. - time_in_queue: Várakozás a sorban %{time} 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 unconfirmed_email: Nem megerősített e-mail undo_sensitized: Kényesnek jelölés visszavonása undo_silenced: Némítás visszavonása @@ -228,6 +228,7 @@ hu: whitelisted: Engedélyező-listán action_logs: action_types: + 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 confirm_user: Felhasználó megerősítése @@ -245,6 +246,7 @@ hu: destroy_domain_allow: Domain engedélyezés törlése destroy_domain_block: Domain tiltás törlése destroy_email_domain_block: E-mail domain tiltás törlése + destroy_instance: Domain végleges törlése destroy_ip_block: IP szabály törlése destroy_status: Bejegyzés törlése destroy_unavailable_domain: Elérhetetlen domain törlése @@ -257,6 +259,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_user: Felhasználó Elutasítása remove_avatar_user: Profilkép eltávolítása reopen_report: Jelentés újranyitása reset_password_user: Jelszó visszaállítása @@ -265,6 +268,7 @@ hu: silence_account: Fiók némítása suspend_account: Fiók felfüggesztése unassigned_report: Jelentés hozzárendelésének megszüntetése + unblock_email_account: E-mail-cím tiltásának feloldása unsensitive_account: A fiókodban minden média kényesként jelölésének törlése unsilence_account: Fiók némításának feloldása unsuspend_account: Fiók felfüggesztésének feloldása @@ -273,6 +277,7 @@ hu: update_domain_block: Domain tiltás frissítése update_status: Bejegyzés frissítése actions: + 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" confirm_user_html: "%{name} megerősítette %{target} e-mail-címét" @@ -286,22 +291,24 @@ hu: create_unavailable_domain_html: "%{name} leállította a kézbesítést a %{target} domainbe" demote_user_html: "%{name} lefokozta %{target} felhasználót" destroy_announcement_html: "%{name} törölte a %{target} közleményt" - destroy_custom_emoji_html: "%{name} törölte a %{target} emodzsit" + destroy_custom_emoji_html: "%{name} törölte az emodzsit: %{target}" destroy_domain_allow_html: "%{name} letiltotta a föderációt a %{target} domainnel" destroy_domain_block_html: "%{name} engedélyezte a %{target} domaint" destroy_email_domain_block_html: "%{name} engedélyezte a %{target} e-mail domaint" + destroy_instance_html: "%{name} véglegesen törölte a(z) %{target} domaint" destroy_ip_block_html: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban" destroy_status_html: "%{name} eltávolította %{target} felhasználó bejegyzését" destroy_unavailable_domain_html: "%{name} újraindította a kézbesítést a %{target} domainbe" disable_2fa_user_html: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján" - disable_custom_emoji_html: "%{name} letiltotta a %{target} emodzsit" + disable_custom_emoji_html: "%{name} letiltotta az emodzsit: %{target}" disable_sign_in_token_auth_user_html: "%{name} letiltotta a tokenes e-mail hitelesítést %{target} felhasználóra" disable_user_html: "%{name} letiltotta %{target} felhasználó bejelentkezését" - enable_custom_emoji_html: "%{name} engedélyezte a %{target} emodzsit" + enable_custom_emoji_html: "%{name} engedélyezte az emodzsit: %{target}" enable_sign_in_token_auth_user_html: "%{name} engedélyezte a tokenes e-mail hitelesítést %{target} felhasználóra" 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_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" reset_password_user_html: "%{name} visszaállította %{target} felhasználó jelszavát" @@ -310,11 +317,12 @@ hu: silence_account_html: "%{name} lenémította %{target} felhasználói fiókját" suspend_account_html: "%{name} felfüggesztette %{target} felhasználói fiókját" unassigned_report_html: "%{name} törölte a %{target} bejelentés hozzárendelését" + unblock_email_account_html: "%{name} feloldotta a(z) %{target} e-mail-cím tiltását" unsensitive_account_html: "%{name} levette a kényesnek jelölést %{target} médiatartalmáról" unsilence_account_html: "%{name} feloldotta a némítást %{target} felhasználói fiókján" unsuspend_account_html: "%{name} feloldotta %{target} felhasználói fiókjának felfüggesztését" update_announcement_html: "%{name} frissítette a %{target} közleményt" - update_custom_emoji_html: "%{name} frissítette a %{target} emodzsit" + update_custom_emoji_html: "%{name} frissítette az emodzsit: %{target}" update_domain_block_html: "%{name} frissítette a %{target} domain tiltását" update_status_html: "%{name} frissítette %{target} felhasználó bejegyzését" deleted_status: "(törölt bejegyzés)" @@ -340,35 +348,35 @@ hu: unpublished_msg: A közlemény közzététele sikeresen visszavonva! updated_msg: A közlemény sikeresen frissítve! custom_emojis: - assign_category: Kategóriák + assign_category: Kategória hozzárendelése by_domain: Domain - copied_msg: Sikeresen létrehoztuk az emodzsi helyi másolatát + copied_msg: Sikeresen létrejött az emodzsi helyi másolata copy: Másolás - copy_failed_msg: Emodzsi helyi másolatának létrehozása sikertelen + copy_failed_msg: Az emodzsi helyi másolatának létrehozása sikertelen create_new_category: Új kategória létrehozása - created_msg: Emodzsi létrehozva! + created_msg: Emodzsi sikeresen létrehozva! delete: Törlés - destroyed_msg: Emodzsi törlése sikeres! + destroyed_msg: Az emodzsi törlése sikeres! disable: Letiltás disabled: Letiltva - disabled_msg: Emodzsi letiltva + disabled_msg: Emodzsi sikeresen letiltva emoji: Emodzsi enable: Engedélyezés enabled: Engedélyezve - enabled_msg: Emodzsji engedélyezve - image_hint: PNG (maximális méret 50KB) - list: Listázás - listed: Listázva + enabled_msg: Emodzsi sikeresen engedélyezve + image_hint: PNG (legfeljebb 50 kB-os) + list: Felsorolás + listed: Felsorolva new: - title: Új egyedi emodzsi hozzáadása + title: Új egyéni emodzsi hozzáadása not_permitted: Nem vagy jogosult a művelet végrehajtására overwrite: Felülírás shortcode: Rövidítés shortcode_hint: Legalább két karakter, csak betűk, számok és alsóvonás - title: Egyedi emodzsik + title: Egyéni emodzsik uncategorized: Nem kategorizált unlist: Elrejtés a listáról - unlisted: Nincs listázva + unlisted: Nem listázott update_failed_msg: Nem sikerült frissíteni az emodzsit updated_msg: Emodzsi sikeresen frissítve! upload: Feltöltés @@ -467,6 +475,7 @@ hu: back_to_limited: Korlátozott back_to_warning: Figyelmeztetés by_domain: Domain + confirm_purge: Biztos, hogy véglegesen törölni akarod az adatokat ebből a domainből? delivery: all: Mind clear: Kézbesítési hibák törlése @@ -482,6 +491,7 @@ hu: delivery_available: Kézbesítés elérhető delivery_error_days: Kézbesítési hiba időtartama delivery_error_hint: Ha a kézbesítés lehetetlen %{count} napig, automatikusan kézbesíthetetlennek lesz megjelölve. + destroyed_msg: A(z) %{domain} adatai sorba lettek állítva végleges törléshez. empty: Nem található domain. known_accounts: one: "%{count} ismert fiók" @@ -492,6 +502,7 @@ hu: title: Moderáció private_comment: Privát megjegyzés public_comment: Nyilvános megjegyzés + purge: Végleges törlés title: Föderáció total_blocked_by_us: Általunk letiltott total_followed_by_them: Általuk követett @@ -521,8 +532,6 @@ hu: title: Új IP szabály létrehozása no_ip_block_selected: Nem változtattunk egy IP szabályon sem, mivel egy sem volt kiválasztva title: IP szabály - pending_accounts: - title: Függőben lévő fiókok (%{count}) relationships: title: "%{acct} kapcsolatai" relays: @@ -544,32 +553,44 @@ hu: report_notes: created_msg: Bejelentési feljegyzés létrehozva! destroyed_msg: Bejelentési feljegyzés törölve! + today_at: Ma %{time}-kor reports: account: notes: one: "%{count} feljegyzés" other: "%{count} feljegyzés" - reports: - one: "%{count} bejelentés" - other: "%{count} bejelentés" + action_log: Audit napló action_taken_by: 'Kezelte:' + actions: + 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. + 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:' + add_to_report: Továbbiak hozzáadása a bejelentéshez are_you_sure: Biztos vagy benne? assign_to_self: Magamhoz rendelés assigned: Hozzárendelt moderátor by_target_domain: A bejelentett fiók domainje + category: Kategória + category_description_html: A fiók vagy tartalom bejelentésének oka a jelentett fiókkal kapcsolatos kommunikációban idézve lesz comment: 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 forwarded: Továbbítva forwarded_to: 'Továbbítva ide: %{domain}' mark_as_resolved: Megjelölés megoldottként mark_as_unresolved: Megjelölés megoldatlanként + no_one_assigned: Senki notes: create: Feljegyzés hozzáadása create_and_resolve: Megoldás feljegyzéssel create_and_unresolve: Újranyitás feljegyzéssel delete: Törlés 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 reopen: Bejelentés újranyitása report: "#%{id} számú jelentés" reported_account: Bejelentett fiók @@ -577,11 +598,14 @@ hu: resolved: Megoldott resolved_msg: A bejelentést sikeresen megoldottuk! status: Állapot + statuses: Jelentett tartalom + statuses_description_html: A sértő tartalmat idézni fogjuk a bejelentett fiókkal való kommunikáció során target_origin: A jelentett fiók eredete title: Bejelentések unassign: Hozzárendelés törlése unresolved: Megoldatlan updated_at: Frissítve + view_profile: Profil megtekintése rules: add_new: Szabály hozzáadása delete: Törlés @@ -601,7 +625,7 @@ hu: username: Kapcsolattartó felhasználóneve custom_css: desc_html: Változtasd meg a kinézetet ebben a CSS-ben, mely minden oldalon be fog töltődni - title: Egyedi CSS + title: Egyéni CSS default_noindex: desc_html: Olyan felhasználókat érinti, akik nem módosították ezt a beállítást title: Alapértelmezésként ne indexeljék a keresők a felhasználóinkat @@ -657,16 +681,16 @@ hu: title: A szerver bemutatása site_description_extended: desc_html: Ide teheted például a közösségi és egyéb szabályzatot, útmutatókat és mindent, ami egyedivé teszi szerveredet. HTML-tageket is használhatsz - title: További egyedi információ + title: További egyéni információk site_short_description: desc_html: Oldalsávban és meta tag-ekben jelenik meg. Írd le, mi teszi ezt a szervert különlegessé egyetlen bekezdésben. title: Rövid leírás site_terms: desc_html: Megírhatod saját adatkezelési szabályzatodat, felhasználási feltételeidet vagy más hasonló jellegű dokumentumodat. HTML-tageket is használhatsz - title: Egyedi felhasználási feltételek + title: Egyéni felhasználási feltételek site_title: A szerver neve thumbnail: - desc_html: OpenGraph-os és API-s előnézetekben használjuk. Ajánlott mérete 1200x630 pixel + desc_html: Az OpenGraph-on és API-n keresztüli előnézetekhez használatos. Ajánlott mérete 1200×630 képpont. title: A szerver bélyegképe timeline_preview: desc_html: Nyilvános idővonal megjelenítése a főoldalon @@ -674,24 +698,22 @@ hu: title: Webhely beállításai trendable_by_default: desc_html: Azokra a hashtagekere hat, melyet előzőleg nem tiltottak le - title: Hashtagek trendiségének engedélyezése előzetes ellenőrzés nélkül + title: Felkapott hashtagek engedélyezése előzetes ellenőrzés nélkül trends: - desc_html: Előzetesen engedélyezett és most trendi hashtagek nyilvános mutatása - title: Trendi hashtagek + desc_html: Előzetesen engedélyezett és most felkapott hashtagek nyilvános megjelenítése + title: Felkapott hashtagek site_uploads: delete: Feltöltött fájl törlése destroyed_msg: Sikeresen töröltük a site feltöltését! statuses: back_to_account: Vissza a fiók oldalára + back_to_report: Vissza a bejelentés oldalra batch: - delete: Törlés - nsfw_off: Kényesnek jelölés törlése - nsfw_on: Megjelölés kényes tartalomként + remove_from_report: Eltávolítás a bejelentésből + report: Bejelentés deleted: Törölve - failed_to_execute: Végrehajtás sikertelen media: title: Média - no_media: Nincs média 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 @@ -704,21 +726,51 @@ hu: sidekiq_process_check: message_html: Nincs Sidekiq folyamat, mely a %{value} sorhoz van rendelve. Kérlek, nézd át a Sidekiq beállításait tags: - accounts_today: Egyedi használat a mai napon - accounts_week: Egyedi használat ezen a héten - breakdown: Mai használat bontása forrás szerint - last_active: Utoljára aktív - most_popular: Legnépszerűbb - most_recent: Legutóbbi - name: Címke review: Engedélyezés állapota - reviewed: Engedélyezett - title: Hashtagek - trending_right_now: Most trendi - unique_uses_today: "%{count} mai bejegyzés" - unreviewed: Még nem engedélyezett updated_msg: A hashtag beállításokat sikeresen frissítettük title: Karbantartás + trends: + allow: Engedélyezés + approved: Jóváhagyott + disallow: Letiltás + links: + allow: Hivatkozás engedélyezése + allow_provider: Közzétevő engedélyezése + 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" + title: Felkapott hivatkozások + usage_comparison: "%{today} alkalommal lett ma megosztva, a tegnapi %{yesterday} alkalomhoz képest" + pending_review: Áttekintésre vár + preview_card_providers: + allowed: A közzétevő hivatkozásai felkapottak lehetnek + rejected: A közzétevő hivatkozásai nem lesznek felkapottak + title: Közzétévők + rejected: Elutasított + tags: + current_score: 'Jelenlegi pontszám: %{score}' + dashboard: + tag_accounts_measure: egyedi használat + tag_languages_dimension: Legnépszerűbb nyelvek + tag_servers_dimension: Legnépszerűbb kiszolgálók + tag_servers_measure: különböző kiszolgáló + tag_uses_measure: összes használat + listable: Javasolható + not_listable: Nem lesz javasolva + not_trendable: Nem fog megjelenni a trendek alatt + not_usable: Nem használható + peaked_on_and_decaying: 'Ekkor volt a csúcson: %{date}, most hanyatlik' + title: Felkapott hashtagek + trendable: Megjelenhet a trendek alatt + trending_rank: "%{rank}. felkapott" + usable: Használható + usage_comparison: "%{today} alkalommal lett ma használva, a tegnapi %{yesterday} alkalomhoz képest" + used_by_over_week: + one: Egy ember használta a múlt héten + other: "%{count} ember használta a múlt héten" + title: Trendek warning_presets: add_new: Új hozzáadása delete: Törlés @@ -733,9 +785,16 @@ hu: body: "%{reporter} jelentette: %{target}" body_remote: Valaki a %{domain} domainről jelentette %{target} subject: 'Új jelentés az alábbi szerveren: %{instance} (#%{id})' - new_trending_tag: - body: 'A #%{name} hashtag trendi a mai napon, de még nem engedélyeztük eddig. Nem mutatjuk meg nyilvánosan, hacsak nem engedélyezed. Csak simán mentsd az űrlapot, ha soha többé nem akarsz erről a hashtagről hallani.' - subject: Új hashtag (#%{name}) engedélyezésre vár a %{instance} szerveren + new_trending_links: + body: A következő hivatkozások ma felkapottak, de a közzétevőjük eddig még nem lett ellenőrizve. Nem fognak nyilvánosan megjelenni, hacsak nem hagyod jóvá őket. További értesítések nem lesznek előállítva ugyanahhoz a közzétevőhöz. + no_approved_links: Jelenleg nincsenek jóváhagyott felkapott hivatkozások. + requirements: 'A legkisebb pontszámú jóváhagyott felkapott hivatkozás jelenleg ez: „%{lowest_link_title}”, pontszáma %{lowest_link_score}.' + subject: 'Új jóváhagyandó felkapott hivatkozások ezen: %{instance}' + new_trending_tags: + body: 'A következő hashtagek ma felkapottak, de a eddig még nem lettek ellenőrizve. Nem fognak nyilvánosan megjelenni, hacsak nem hagyod jóvá őket:' + no_approved_tags: Jelenleg nincsenek jóváhagyott felkapott hashtagek. + requirements: 'A legkisebb pontszámú jóváhagyott felkapott hashtag jelenleg ez: #%{lowest_tag_name}, pontszáma %{lowest_tag_score}.' + subject: 'Új jóváhagyandó felkapott hashtagek ezen: %{instance}' aliases: add_new: Alias készítése created_msg: Elkészült az új aliasod. Most már elkezdheted a költöztetést a régi fiókból. @@ -787,6 +846,7 @@ hu: invalid_reset_password_token: A jelszó-visszaállítási kulcs nem megfelelő vagy lejárt. Kérlek generálj egy újat. link_to_otp: Írj be egy kétlépcsős azonosító kódot a telefonodról vagy egy visszaállító kódot link_to_webauth: Használd a biztonsági kulcs eszközödet + log_in_with: Bejelentkezés, mint login: Bejelentkezés logout: Kijelentkezés migrate_account: Felhasználói fiók költöztetése @@ -936,40 +996,21 @@ hu: developers: Fejlesztőknek more: Többet… resources: Segédanyagok - trending_now: Most trendi + trending_now: Most felkapott generic: all: Mind changes_saved_msg: A változásokat elmentettük! copy: Másolás delete: Törlés - no_batch_actions_available: Ezen az oldalon nem elérhetőek kötegelt műveletek + none: Nincs order_by: Rendezés save_changes: Változások mentése + today: ma validation_errors: one: Valami nincs rendjén! Tekintsd meg a hibát lent other: Valami nincs rendjén! Tekintsd meg a(z) %{count} hibát lent html_validator: invalid_markup: 'hibás HTML leíró: %{error}' - identity_proofs: - active: Aktív - authorize: Igen, engedélyezés - authorize_connection_prompt: Engedélyezed ezt a kriptografikus kapcsolatot? - errors: - failed: A kriptografikus kapcsolat sikertelen. Próbáld inkább innen %{provider}. - keybase: - invalid_token: A Keybase tokenek hashelt aláírások és pont 66 hexa karakterből állnak - verification_failed: A Keybase ezt a tokent nem ismerte fel a %{kb_username} Keybase felhasználó aláírásaként. Próbáld újra Keybase-ből. - wrong_user: Nem tudjuk tanúsítani %{proving} felhasználót amíg %{current} felhasználóként vagy bejelentkezve. Jelentkezz be %{proving} felhasználóként és próbáld újra. - explanation_html: Itt más személyazonosságaiddal tudsz kriptografikus kapcsolatot létesíteni, pl. Keybase profillal. Így mások titkosított üzenetet küldhetnek neked, valamint megbízhatnak az általad küldött tartalomban is. - i_am_html: "%{username} vagyok %{service} szerveren." - identity: Személyazonosság - inactive: Inaktív - publicize_checkbox: 'És ezt tülköld ki:' - publicize_toot: 'Tanúsítva! %{username} vagyok %{service}: %{url} szerveren' - remove: Tanúsítás eltávolítása a fiókról - removed: Leszedtük a tanúsítást a fiókról - status: Ellenőrzés állapota - view_proof: Tanúsítás megtekintése imports: errors: over_rows_processing_limit: több mint %{count} sort tartalmaz @@ -1002,8 +1043,8 @@ hu: generate: Generálás invited_by: 'Téged meghívott:' max_uses: - one: 1 felhasználás - other: "%{count} felhasználás" + one: 1 használat + other: "%{count} használat" max_uses_prompt: Nincs korlát prompt: Az itt generált linkek megosztásával hívhatod meg ismerőseidet erre a szerverre table: @@ -1040,9 +1081,9 @@ hu: move_to_self: nem lehet az aktuális fiók not_found: nem található on_cooldown: Még tart a türelmi idő - followers_count: Követő a költözéskor - incoming_migrations: Más fiókból költöző - incoming_migrations_html: Ahhoz, hogy egy másik fiókból ebbe költözz, először <a href="%{path}">hozz létre egy fiók aliast</a>. + followers_count: Követők a költözéskor + incoming_migrations: Átköltözés egy másik fiókból + incoming_migrations_html: Ahhoz, hogy egy másik fiókból ebbe költözz, először <a href="%{path}">hozz létre egy fiókálnevet</a>. moved_msg: A fiókod mostantól ide %{acct} irányít át, a követőidet átköltöztetjük. not_redirecting: A fiókod nincs átirányítva jelenleg sehová sem. on_cooldown: Nemrég költöztetted a fiókod. Ez a funkció %{count} nap múlva lesz megint elérhető. @@ -1185,6 +1226,9 @@ hu: reply: proceed: Válaszadás prompt: 'Erre a bejegyzésre szeretnél válaszolni:' + reports: + errors: + invalid_rules: nem hivatkozik érvényes szabályra scheduled_statuses: over_daily_limit: Túllépted az időzített bejegyzésekre vonatkozó %{limit} db-os napi limitet over_total_limit: Túllépted az időzített bejegyzésekre vonatkozó %{limit} db-os limitet @@ -1243,7 +1287,6 @@ hu: edit_profile: Profil szerkesztése export: Adatok exportálása featured_tags: Kiemelt hashtagek - identity_proofs: Személyazonosság tanúsítások import: Importálás import_and_export: Import és export migrate: Fiók átirányítása @@ -1268,18 +1311,19 @@ hu: other: "%{count} videó" boosted_from_html: Megtolva innen %{acct_link} content_warning: 'Tartalom figyelmeztetés: %{warning}' + default_language: Felhasználói felület nyelvével azonos disallowed_hashtags: one: 'tiltott hashtaget tartalmaz: %{tags}' other: 'tiltott hashtageket tartalmaz: %{tags}' + edited_at: Szerkesztve %{date} errors: in_reply_not_found: Már nem létezik az a bejegyzés, melyre válaszolni szeretnél. - language_detection: Nyelv automatikus felismerése open_in_web: Megnyitás a weben over_character_limit: túllépted a maximális %{max} karakteres keretet pin_errors: + direct: A csak a megemlített felhasználók számára látható bejegyzések nem tűzhetők ki limit: Elérted a kitűzhető bejegyzések maximális számát ownership: Nem tűzheted ki valaki más bejegyzését - private: Nem nyilvános bejegyzéseket nem tűzhetsz ki reblog: Megtolt bejegyzést nem tudsz kitűzni poll: total_people: @@ -1434,6 +1478,7 @@ hu: formats: default: "%Y. %b %d., %H:%M" month: "%Y %b" + time: "%H:%M" two_factor_authentication: add: Hozzáadás disable: Kikapcsolás @@ -1461,24 +1506,31 @@ hu: subject: Erősítsd meg a megkísérelt belépést title: Belépési kísérlet warning: + categories: + spam: Kéretlen üzenet + violation: A tartalom megsérti a következő közösségi irányelveket explanation: - disable: A fiókod befagyasztott állapotban megtartja minden adatát, de feloldásig nem csinálhatsz vele semmit. - sensitive: A feltöltött és hivatkozott médiatartalmaidat kényesként kezeljük. - silence: A fiókodat így is használhatod, de csak a követőid láthatják a bejegyzéseidet ezen a szerveren, valamint kimaradhatsz a nyilvános idővonalakról is. Ugyanakkor ettől még mások manuálisan bekövethetnek. - 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 lementsd az adataidat addig, amíg azokat teljesen le nem töröljük, bár néhány adatot megtartunk, hogy a jövőben ne tudd elkerülni a felfüggesztést. - get_in_touch: Válaszolhatsz erre az emailre, hogy kapcsolatba lépj a %{instance} csapatával. + delete_statuses: Néhány bejegyzésedről a moderátorok úgy találták, hogy sérti a közösségi szabályainkat, így ezeket eltávolították a %{instance} kiszolgálóról. A jövőbeni kihágásokat a fiókodon keményebben is büntethetik. + disable: Nem használhatod tovább a fiókodat, bár a profil- és egyéb adataid érintetlenül maradnak. Kérhetsz mentést az adataidról, megváltoztathatod a beállításaidat vagy törölheted a fiókodat. + sensitive: Mostantól minden feltöltött médiaállományodat érzékeny tartalomként jelölünk meg és kattintásos figyelmeztetés mögé rejtjük. + silence: A fiókodat most is használhatod, de ezen a kiszolgálón csak olyanok láthatják a bejegyzéseidet, akik már eddig is a követőid voltak, valamint kihagyunk különböző felfedezésre használható funkciókból. Ettől még mások továbbra is manuálisan be tudnak követni. + 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: 'Különösen hozzá:' + 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 disable: A fiókodat %{acct} befagyasztották none: Figyelmeztetés a %{acct} fióknak - sensitive: A %{acct} fiókod médiatartalmait kényesnek jelölték + sensitive: A(z) %{acct} fiók médiafájljai mostantól érzékenynek lesznek jelölve silence: A fiókodat %{acct} korlátozták suspend: A fiókodat %{acct} felfüggesztették title: + delete_statuses: Bejegyzések törölve disable: Befagyasztott fiók none: Figyelem - sensitive: Médiatartalmadat kényesnek jelölték + sensitive: Média elrejtve silence: Lekorlátozott fiók suspend: Felfüggesztett fiók welcome: diff --git a/config/locales/hy.yml b/config/locales/hy.yml index fb9df0156..021aa7c31 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -97,7 +97,6 @@ hy: accounts: add_email_domain_block: Արգելափակել էլ․ փոստի տիրոյթը approve: Ընդունել - approve_all: Ընդունել բոլորը approved_msg: Յաջողութեամբ հաստատուեց %{username}֊ի գրանցման յայտը are_you_sure: Վստա՞հ ես avatar: Աւատար @@ -149,7 +148,6 @@ hy: active: Ակտիվ all: Բոլորը pending: Սպասում - silenced: Լռեցուած suspended: Կասեցուած title: Մոդերացիա moderation_notes: Մոդերացիայի նշումներ @@ -167,7 +165,6 @@ hy: redownload: Թարմացնել հաշիւը redownloaded_msg: "%{username}֊ի հաշիւը սկզբնաղբիւրից բարեյաջող թարմացուեց" reject: Մերժել - reject_all: Մերժել բոլորը rejected_msg: Յաջողութեամբ մերժուեց %{username}֊ի գրանցման յայտը remove_avatar: Հեռացնել աւատարը remove_header: Հեռացնել գլխագիրը @@ -206,7 +203,6 @@ hy: suspended: Կասեցուած suspension_irreversible: Հաշուի տուեալները անդարձ ջնջուեցին։ Դու կարող ես ապակասեցնել հաշիւը՝ դարձնելով այն կիրառելի, բայց այն չի վերականգնի նախկին տուեալները։ suspension_reversible_hint_html: Հաշիւը կասեցուեց, եւ տուեալներն ամբողջապէս կը վերացուի %{date}ին։ Մինչեւ այդ, հաշիւը կարող է վերականգնուել՝ առանց կողմնակի ազդեցութիւնների։ Եթէ ցանկանում ես վերացնել հաշուի տուեալները միանգամից, կարող ես դա անել ներքեւում։ - time_in_queue: Հերթում է %{time} title: Հաշիւներ unconfirmed_email: Չհաստատուած էլ․ հասցէ undo_sensitized: Ետարկել դիւրազգացութիւնը @@ -414,8 +410,6 @@ hy: new: title: Ստեղծել նոր IP կանոն title: IP կանոններ - pending_accounts: - title: Սպասող հաշիւներ (%{count}) relationships: title: "%{acct}ի յարաբերութիւններ" relays: @@ -433,9 +427,6 @@ hy: notes: one: "%{count} նոթ" other: "%{count} նոթեր" - reports: - one: "%{count} զեկոյց" - other: "%{count} զեկոյց" action_taken_by: Գործողութիւնը կատարել է are_you_sure: Վստա՞հ ես assign_to_self: Ինձ յանձնարարուած @@ -516,28 +507,13 @@ hy: destroyed_msg: Կայքի վերբեռնումը բարեյաջող ջնջուեց statuses: back_to_account: Վերադառնալ անձնական էջ - batch: - delete: Ջնջել - nsfw_off: Նշել որպէս ոչ դիւրազգաց - nsfw_on: Նշել որպէս դիւրազգաց deleted: Ջնջված է - failed_to_execute: Կատարումը ձախողուեց media: title: Մեդիա - no_media: Մեդիա չկայ title: Օգտատիրոջ գրառումները with_media: Մեդիայի հետ tags: - last_active: Վերջին ակտիւութիւնը - most_popular: Ամէնայայտնի - most_recent: Վերջին - name: Պիտակ review: Վերանայել գրառումը - reviewed: Վերանայուած - title: Պիտակներ - trending_right_now: Այժմ թրենդի մէջ է - unique_uses_today: "%{count} հրապարակուել է այսօր" - unreviewed: Վերանայուած չէ title: Ադմինիստարցիա warning_presets: add_new: Ավելացնել նորը @@ -697,19 +673,6 @@ hy: delete: Ջնջել order_by: Դասաւորել ըստ save_changes: Պահպանել փոփոխութիւնները - identity_proofs: - active: Ակտիվ - authorize: Այո, նոյնականացնել - authorize_connection_prompt: Հաւաստագրէ՞լ այս ծածկագրման կապակցումը - i_am_html: Ես %{username}ն եմ %{service}ում։ - identity: Ինքնութիւն - inactive: Ոչ ակտիւ - publicize_checkbox: Հրապարակել սա՝ - publicize_toot: 'Ապացուցուա՜ծ է․ Ես%{username} եմ %{service}ում․ %{url} ' - remove: Հաշուից հեռացնել ապացոյցը - removed: Ապացոյցը բարեյաջող հեռացուեց հաշուից - status: Հաստատման կարգավիճակ - view_proof: Նայել ապացոյցը imports: errors: over_rows_processing_limit: տողերի քանակը աւելին է քան %{count}-ը @@ -903,7 +866,6 @@ hy: edit_profile: Խմբագրել պրոֆիլը export: Տվյալների արտահանում featured_tags: Ընտրուած հէշթեգեր - identity_proofs: Անձի նոյնացումներ import: Ներմուծել import_and_export: Ներմուծել և արտահանել migrate: Հաշուի տեղափոխում @@ -925,7 +887,6 @@ hy: one: "%{count} վիդեո" other: "%{count} վիդեո" content_warning: Նախազգուշացում։ %{warning} - language_detection: Ինքնուրոյն ճանաչել լեզուն open_in_web: Բացել վէբում over_character_limit: "%{max} նիշի սահմանը գերազանցուած է" poll: @@ -1075,15 +1036,12 @@ hy: sign_in_token: title: Մուտքի փորձ warning: - get_in_touch: Կարող էք կապուել %{instance} հանգոյցի անձնակազմի հետ պատասխանելով այս նամակին։ - statuses: Մասնաւորապէս, միայն՝ subject: disable: Քո %{acct} հաշիւը սառեցուել է none: Նախազգուշացուեմ %{acct}-ին title: disable: Հաշիւը սառեցուած է none: Զգուշացում - sensitive: Մեդիաֆայլը պիտակուել է որպէս զգայուն։ silence: Հաշիւը սահմանափակուած է suspend: Հաշիւը արգելափակուած է welcome: diff --git a/config/locales/id.yml b/config/locales/id.yml index d3987ceb7..b034da26f 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -93,7 +93,6 @@ id: accounts: add_email_domain_block: Masukkan domain email ke daftar hitam approve: Terima - approve_all: Terima semua approved_msg: Berhasil menerima pendaftaran %{username} are_you_sure: Anda yakin? avatar: Avatar @@ -108,6 +107,7 @@ id: confirm: Konfirmasi confirmed: Dikonfirmasi confirming: Mengkonfirmasi + custom: Kustom delete: Hapus data deleted: Terhapus demote: Turunkan @@ -147,7 +147,6 @@ id: active: Aktif all: Semua pending: Tertunda - silenced: Didiamkan suspended: Disuspen title: Moderasi moderation_notes: Catatan moderasi @@ -165,7 +164,6 @@ id: redownload: Muat ulang profil redownloaded_msg: Berhasil menyegarkan profil %{username} dari asal reject: Tolak - reject_all: Tolak semua rejected_msg: Berhasil menolak permintaan pendaftaran %{username} remove_avatar: Hapus avatar remove_header: Hapus header @@ -200,12 +198,14 @@ id: silence: Diam silenced: Didiamkan statuses: Status + strikes: Peringatan sebelumnya subscribe: Langganan 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. - time_in_queue: Menunggu dalam antrean %{time} title: Akun + unblock_email: Buka blokir alamat email + unblocked_email_msg: Berhasil membuka blokir alamat email %{username} unconfirmed_email: Email belum dikonfirmasi undo_sensitized: Batalkan sensitif undo_silenced: Undo mendiamkan @@ -220,6 +220,7 @@ id: whitelisted: Masuk daftar putih action_logs: action_types: + approve_user: Setujui Pengguna assigned_to_self_report: Berikan laporan change_email_user: Ubah Email untuk Pengguna confirm_user: Konfirmasi Pengguna @@ -237,6 +238,7 @@ id: destroy_domain_allow: Hapus Izin Domain destroy_domain_block: Hapus Blokir Domain destroy_email_domain_block: Hapus email blokir domain + destroy_instance: Hapus Domain destroy_ip_block: Hapus aturan IP destroy_status: Hapus Status destroy_unavailable_domain: Hapus Domain yang Tidak Tersedia @@ -249,6 +251,7 @@ id: enable_user: Aktifkan Pengguna memorialize_account: Kenang Akun promote_user: Promosikan Pengguna + reject_user: Tolak Pengguna remove_avatar_user: Hapus Avatar reopen_report: Buka Lagi Laporan reset_password_user: Atur Ulang Kata sandi @@ -257,6 +260,7 @@ id: silence_account: Bisukan Akun suspend_account: Tangguhkan Akun unassigned_report: Batalkan Pemberian Laporan + unblock_email_account: Buka blokir alamat email unsensitive_account: Batalkan tanda media di akun Anda dari sensitif unsilence_account: Lepas Status Bisu Akun unsuspend_account: Lepas Status Tangguh Akun @@ -265,6 +269,7 @@ id: update_domain_block: Perbarui Blokir Domain update_status: Perbarui Status actions: + 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}" confirm_user_html: "%{name} mengonfirmasi alamat email pengguna %{target}" @@ -282,6 +287,7 @@ id: destroy_domain_allow_html: "%{name} membatalkan izin penggabungan dengan domain %{target}" destroy_domain_block_html: "%{name} membuka blokir domain %{target}" destroy_email_domain_block_html: "%{name} membuka blokir domain email %{target}" + destroy_instance_html: "%{name} menghapus domain %{target}" destroy_ip_block_html: "%{name} menghapus aturan untuk IP %{target}" destroy_status_html: "%{name} menghapus status %{target}" destroy_unavailable_domain_html: "%{name} melanjutkan pengiriman ke domain %{target}" @@ -294,6 +300,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_user_html: "%{name} menolak pendaftaran dari %{target}" remove_avatar_user_html: "%{name} menghapus avatar %{target}" reopen_report_html: "%{name} membuka ulang laporan %{target}" reset_password_user_html: "%{name} mereset kata sandi pengguna %{target}" @@ -302,6 +309,7 @@ id: silence_account_html: "%{name} membisukan akun %{target}" suspend_account_html: "%{name} menangguhkan akun %{target}" unassigned_report_html: "%{name} membatalkan penugasan laporan %{target}" + unblock_email_account_html: "%{name} membuka blokir alamat email %{target}" unsensitive_account_html: "%{name} membatalkan tanda media %{target} sebagai sensitif" unsilence_account_html: "%{name} membunyikan akun %{target}" unsuspend_account_html: "%{name} membatalkan penangguhan akun %{target}" @@ -455,6 +463,7 @@ id: back_to_limited: Terbatas back_to_warning: Peringatan by_domain: Domain + confirm_purge: Yakin ingin menghapus permanen data dari domain ini? delivery: all: Semua clear: Hapus galat pengiriman @@ -469,6 +478,7 @@ id: delivery_available: Pengiriman tersedia delivery_error_days: Lama hari pengiriman galat delivery_error_hint: Jika pengiriman tidak terjadi selama %{count} hari, ia akan ditandai secara otomatis sebagai tidak terkirim. + destroyed_msg: Data dari %{domain} masuk antrean dihapus dalam waktu dekat. empty: Domain tidak ditemukan. known_accounts: other: "%{count} akun yang dikenal" @@ -478,6 +488,7 @@ id: title: Moderasi private_comment: Komentar pribadi public_comment: Komentar publik + purge: Hapus title: Server yang diketahui total_blocked_by_us: Yang kita blokir total_followed_by_them: Diikuti mereka @@ -507,8 +518,6 @@ id: title: Buat aturan IP baru no_ip_block_selected: Tak ada aturan IP yang berubah karena tak ada yang dipilih title: Aturan IP - pending_accounts: - title: Akun tertunda (%{count}) relationships: title: Hubungan %{acct} relays: @@ -530,30 +539,43 @@ id: report_notes: created_msg: Catatan laporan berhasil dibuat! destroyed_msg: Catatan laporan berhasil dihapus! + today_at: Hari ini pada %{time} reports: account: notes: other: "%{count} catatan" - reports: - other: "%{count} laporan" + action_log: Log audit action_taken_by: Aksi dilakukan oleh + actions: + other_description_html: Lihat opsi lain untuk mengendalikan perilaku akun dan menyesuaikan komunikasi ke akun yang dilaporkan. + 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:' + add_to_report: Tambahkan lebih banyak untuk lapor are_you_sure: Apakah Anda yakin? assign_to_self: Tugaskan kpd saya assigned: Moderator tertugas by_target_domain: Domain akun yang dilaporkan + category: Kategori + category_description_html: Alasan akun dan/atau konten ini dilaporkan akan disampaikan saat berkomunikasi dengan akun yang dilaporkan comment: none: Tidak ada + comment_description_html: 'Untuk menyediakan lebih banyak informasi, %{name} menulis:' created_at: Dilaporkan + delete_and_resolve: Hapus dan selesaikan forwarded: Diteruskan forwarded_to: Diteruskan ke %{domain} mark_as_resolved: Tandai telah diseleseikan mark_as_unresolved: Tandai belum terselesaikan + no_one_assigned: Tidak ada notes: create: Tambah catatan create_and_resolve: Diselesaikan dengan catatan create_and_unresolve: Dibuka kembali dengan catatan delete: Hapus 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 reopen: Buka lagi laporan report: 'Laporkan #%{id}' reported_account: Akun yang dilaporkan @@ -561,11 +583,14 @@ id: resolved: Terseleseikan resolved_msg: Laporan berhasil diselesaikan! status: Status + statuses: Konten yang dilaporkan + statuses_description_html: Konten menyinggung akan disampaikan saat komunikasi dengan akun yang dilaporkan target_origin: Akun asal yang dilaporkan title: Laporan unassign: Bebas Tugas unresolved: Belum Terseleseikan updated_at: Diperbarui + view_profile: Lihat profil rules: add_new: Tambah aturan delete: Hapus @@ -667,15 +692,13 @@ id: destroyed_msg: Situs yang diunggah berhasil dihapus! statuses: back_to_account: Kembali ke halaman akun + back_to_report: Kembali ke halaman laporan batch: - delete: Hapus - nsfw_off: Tandai sebagai tak sensitif - nsfw_on: Tandai sebagai sensitif + remove_from_report: Hapus dari laporan + report: Laporan deleted: Dihapus - failed_to_execute: Gagal mengeksekusi media: title: Media - no_media: Tanpa media no_status_selected: Tak ada status yang berubah karena tak ada yang dipilih title: Status akun with_media: Dengan media @@ -688,21 +711,49 @@ id: sidekiq_process_check: message_html: Tidak ada proses Sidekiq yang berjalan untuk %{value} antrian. Silakan tinjau konfigurasi Sidekiq Anda tags: - accounts_today: Penggunaan unik hari ini - accounts_week: Penggunaan unik minggu ini - breakdown: Rinci penggunaan hari ini berdasar sumber - last_active: Terakhir aktif - most_popular: Paling populer - most_recent: Terkini - name: Tagar review: Tinjau status - reviewed: Ditinjau - title: Tagar - trending_right_now: Sedang tren sekarang - unique_uses_today: "%{count} memposkan hari ini" - unreviewed: Tak tertinjau updated_msg: Pembaruan pengaturan tagar berhasil title: Administrasi + trends: + allow: Izinkan + approved: Disetujui + disallow: Batalkan izin + links: + allow: Izinkan tautan + allow_provider: Izinkan penerbit + disallow: Batalkan izin tautan + disallow_provider: Batalkan izin penerbit + shared_by_over_week: + other: Dibagikan oleh %{count} orang selama seminggu terakhir + title: Tautan sedang tren + usage_comparison: Dibagikan %{today} kali hari ini, dibandingkan %{yesterday} kemarin + pending_review: Tinjauan tertunda + preview_card_providers: + allowed: Tautan dari penerbit ini dapat menjadi tren + rejected: Tautan dari penerbit ini tidak dapat menjadi tren + title: Penerbit + rejected: Ditolak + tags: + current_score: Skor saat ini %{score} + dashboard: + tag_accounts_measure: kegunaan unik + tag_languages_dimension: Bahasa terpopuler + tag_servers_dimension: Server terpopuler + tag_servers_measure: server berbeda + tag_uses_measure: kegunaan total + listable: Dapat disarankan + not_listable: Tidak akan disarankan + not_trendable: Tidak akan muncul di bawah tren + not_usable: Tidak dapat digunakan + peaked_on_and_decaying: Populer pada %{date}, kini mulai turun + title: Tagar sedang tren + trendable: Dapat muncul di bawah tren + trending_rank: 'Sedang tren #%{rank}' + 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 + title: Tren warning_presets: add_new: Tambah baru delete: Hapus @@ -717,9 +768,16 @@ id: body: "%{reporter} telah melaporkan %{target}" body_remote: Seseorang dari %{domain} telah melaporkan %{target} subject: Laporan baru untuk %{instance} (#%{id}) - new_trending_tag: - body: 'Tagar #%{name} sedang tren hari ini, tetapi belum ditinjau. Itu tidak akan ditampilkan secara publik kecuali Anda mengizinkannya, atau simpan saja borang sebagaimana mestinya untuk tidak mendengarnya lagi.' - subject: Tagar baru muncul untuk ditinjau di %{instance} (#%{name}) + new_trending_links: + body: Tautan berikut sedang tren hari ini, tetapi penerbit sebelumnya belum ditinjau. Mereka tidak akan ditampilkan secara publik kecuali Anda menyetujuinya. Notifikasi berikutnya dari penerbit yang sama tidak akan dibuat. + no_approved_links: Saat ini tidak akan tautan tren yang disetujui. + requirements: Tautan tren yang disetujui peringkat terendah saat ini "%{lowest_link_title}" dengan skor %{lowest_link_score}. + subject: Tautan tren baru mulai ditinjau di %{instance} + new_trending_tags: + body: 'Tagar berikut sedang tren hari ini, tetapi mereka sebelumnya belum ditinjau. Mereka tidak akan muncul secara publik kecuali Anda menyetujuinya:' + no_approved_tags: Saat ini tidak ada tagar tren yang disetujui. + requirements: 'Tagar tren yang disetujui peringkat terendah saat ini #%{lowest_tag_name} dengan skor %{lowest_tag_score}.' + subject: Tagar tren baru mulai ditinjau di %{instance} aliases: add_new: Buat alias created_msg: Berhasil membuat alias baru. Sekarang Anda dapat memulai pindah dari akun lama. @@ -771,6 +829,7 @@ id: invalid_reset_password_token: Token reset kata sandi tidak valid atau kedaluwarsa. Silakan minta yang baru. link_to_otp: Masukkan kode dua-faktor dari ponsel Anda atau dari kode pemulihan link_to_webauth: Gunakan perangkat kunci keamanan Anda + log_in_with: Masuk dengan login: Masuk logout: Keluar migrate_account: Pindah ke akun berbeda @@ -926,33 +985,14 @@ id: changes_saved_msg: Perubahan berhasil disimpan! copy: Salin delete: Hapus - no_batch_actions_available: Tindakan batch tidak tersedia di halaman ini + none: Tidak ada order_by: Urut berdasarkan save_changes: Simpan perubahan + today: hari ini validation_errors: other: Ada yang belum benar! Silakan tinjau %{count} kesalahan di bawah ini html_validator: invalid_markup: 'berisi markup HTML yang tidak valid: %{error}' - identity_proofs: - active: Aktif - authorize: Ya, izinkan - authorize_connection_prompt: Izinkan koneksi kriptografi ini? - errors: - failed: Koneksi kriptografi gagal. Silakan coba lagi dari %{provider}. - keybase: - invalid_token: Token Keybase adalah sandi tanda tangan dan harus berupa 66 karakter hex - verification_failed: Keybase tidak mengenali token ini sebagai tanda tangan pengguna Keybase %{kb_username}. Silakan ulangi lagi dari Keybase. - wrong_user: Tidak dapat membuat bukti untuk %{proving} saat masuk sebagai %{current}. Masuk sebagai %{proving} dan coba lagi. - explanation_html: Anda dapat mengoneksikan identitas lain secara kriptografi, seperti profil Keybase. Ini mengizinkan orang lain untuk mengirim pesan terenkripsi kepada Anda dan mempercayai konten yang Anda kirim. - i_am_html: Saya adalah %{username} di %{service}. - identity: Identitas - inactive: Tidak aktif - publicize_checkbox: 'Dan toot ini:' - publicize_toot: 'Terbukti! Saya adalah %{username} di %{service}: %{url}' - remove: Hapus bukti dari akun - removed: Berhasil menghapus bukti dari akun - status: Status verifikasi - view_proof: Lihat bukti imports: errors: over_rows_processing_limit: berisi lebih dari %{count} baris @@ -1223,7 +1263,6 @@ id: edit_profile: Ubah profil export: Expor data featured_tags: Tagar unggulan - identity_proofs: Bukti identitas import: Impor import_and_export: Impor dan ekspor migrate: Pemindahan akun @@ -1245,17 +1284,18 @@ id: other: "%{count} video" boosted_from_html: Boost dari %{acct_link} content_warning: 'Peringatan konten: %{warning}' + default_language: Sama seperti bahasa antarmuka disallowed_hashtags: other: 'berisi tagar yang tidak diizinkan: %{tags}' + edited_at: Diedit %{date} errors: in_reply_not_found: Status yang ingin Anda balas sudah tidak ada. - language_detection: Deteksi bahasa secara otomatis open_in_web: Buka di web over_character_limit: melebihi %{max} karakter pin_errors: + direct: Kiriman yang hanya terlihat oleh pengguna yang disebutkan tidak dapat disematkan limit: Anda sudah mencapai jumlah maksimum toot yang dapat disematkan ownership: Toot orang lain tidak bisa disematkan - private: Toot privat tidak bisa disematkan reblog: Boost tidak bisa disematkan poll: total_people: @@ -1408,6 +1448,7 @@ id: formats: default: "%d %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Tambah disable: Matikan @@ -1435,24 +1476,31 @@ id: subject: Harap konfirmasi usaha masuk akun title: Usaha masuk akun warning: + categories: + spam: Spam + violation: Konten melanggar panduan komunitas berikut explanation: - disable: Saat akun Anda beku, data Anda tetap utuh. Anda tidak akan dapat melakukan apa-apa sampai akun Anda tidak lagi dikunci. - sensitive: Berkas media dan media tertaut yang Anda unggah akan dianggap sebagai sensitif. - silence: Saat akun Anda dibatasi, hanya akun yang Anda ikuti yang dapat melihat toot Anda di server ini. Akun Anda mungkin akan dikecualikan dari daftar publik. Akun lain dapat mengikuti akun Anda secara manual. - suspend: Akun Anda telah ditangguhkan. Semua toot dan media yang Anda unggah dihapus secara permanen dari server ini, dan server tempat Anda memiliki pengikut. - get_in_touch: Anda dapat membalas email ini untuk menghubungi pengurus %{instance}. + delete_statuses: Beberapa kiriman Anda melanggar satu atau lebih panduan komunitas dan telah dihapus oleh moderator %{instance}. Pelanggaran berikutnya akan menyebabkan tindakan yang lebih parah terhadap akun Anda. + disable: Anda tidak lagi dapat menggunakan akun, tapi profil dan data Anda lainnya masih tersimpan. Anda dapat minta cadangan data Anda, mengubah pengaturan akun, atau menghapus akun. + sensitive: Mulai sekarang, semua berkas media yang telah Anda unggah akan ditandai sebagai sensitif dan disembunyikan di balik peringatan yang harus diklik. + silence: Anda masih tetap dapat menggunakan akun tetapi hanya orang yang mengikuti Anda yang dapat melihat kiriman Anda di server ini, dan Anda mungkin akan dikeluarkan dari fitur pencarian akun. Bagaimana pun, orang lain tetap dapat mengikuti Anda secara manual. + 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: 'Khususnya untuk:' + statuses: 'Postingan yang telah terbukti pelanggarannya:' subject: + delete_statuses: Postingan anda pada %{acct} telah dihapus disable: Akun Anda %{acct} telah dibekukan none: Peringatan untuk %{acct} - sensitive: Postingan media akun Anda %{acct} telah ditandai sebagai sensitif + sensitive: File media anda pada %{acct} akan ditandai sebagai sensitif mulai saat ini silence: Akun Anda %{acct} telah dibatasi suspend: Akun Anda %{acct} telah ditangguhkan title: + delete_statuses: Postingan dihapus disable: Akun dibekukan none: Peringatan - sensitive: Media Anda telah ditandai sebagai sensitif + sensitive: Media disembunyikan silence: Akun dibatasi suspend: Akun ditangguhkan welcome: diff --git a/config/locales/is.yml b/config/locales/is.yml index f17977aa9..3a1896df1 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1,7 +1,7 @@ --- is: about: - about_hashtag_html: Þetta eru opinber tíst 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 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_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 @@ -99,7 +99,6 @@ is: accounts: add_email_domain_block: Útiloka tölvupóstlén approve: Samþykkja - approve_all: Samþykkja allt approved_msg: Tókst að samþykkja skráningu fyrir %{username} are_you_sure: Ertu viss? avatar: Auðkennismynd @@ -114,6 +113,7 @@ is: confirm: Staðfesta confirmed: Staðfest confirming: Staðfesti + custom: Sérsniðið delete: Eyða gögnum deleted: Eytt demote: Lækka í tign @@ -153,7 +153,6 @@ is: active: Virkur all: Allt pending: Í bið - silenced: Hulið suspended: Í bið title: Umsjón moderation_notes: Minnispunktar umsjónarmanna @@ -171,7 +170,6 @@ is: redownload: Endurlesa notandasnið redownloaded_msg: Tókst að endurlesa notandasnið %{username} úr upphaflegu sniði reject: Hafna - reject_all: Hafna öllu rejected_msg: Tókst að hafna skráningu fyrir %{username} remove_avatar: Fjarlægja auðkennismynd remove_header: Fjarlægja haus @@ -206,12 +204,14 @@ is: silence: Hylja silenced: Hulið statuses: Stöðufærslur + strikes: Fyrri refsingar subscribe: Gerast áskrifandi 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. - time_in_queue: Bíður í biðröð %{time} title: Notandaaðgangar + unblock_email: Leyfa tölvupóstfang + 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 undo_silenced: Hætta að hylja @@ -226,6 +226,7 @@ is: whitelisted: Á lista yfir leyft action_logs: action_types: + approve_user: Samþykkja notanda assigned_to_self_report: Úthluta kæru change_email_user: Skipta um tölvupóstfang notanda confirm_user: Staðfesta notanda @@ -243,6 +244,7 @@ is: 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_instance: Henda léni destroy_ip_block: Eyða IP-reglu destroy_status: Eyða stöðufærslu destroy_unavailable_domain: Eyða léni sem ekki er tiltækt @@ -255,6 +257,7 @@ is: enable_user: Virkja notanda memorialize_account: Gera aðgang að minningargrein promote_user: Hækka notanda í tign + reject_user: Hafna notanda remove_avatar_user: Fjarlægja auðkennismynd reopen_report: Enduropna kæru reset_password_user: Endurstilla lykilorð @@ -263,6 +266,7 @@ is: silence_account: Hylja notandaaðgang suspend_account: Setja notandaaðgang í bið unassigned_report: Aftengja úthlutun kæru + unblock_email_account: Leyfa tölvupóstfang unsensitive_account: Afmerkja myndefni á aðgangnum þínum sem viðkvæmt unsilence_account: Hætta að hylja notandaaðgang unsuspend_account: Taka notandaaðgang úr bið @@ -271,6 +275,7 @@ is: update_domain_block: Uppfæra útilokun léns update_status: Uppfæra stöðufærslu actions: + 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}" confirm_user_html: "%{name} staðfesti tölvupóstfang fyrir notandann %{target}" @@ -288,6 +293,7 @@ is: destroy_domain_allow_html: "%{name} bannaði skýjasamband með léninu %{target}" destroy_domain_block_html: "%{name} aflétti útilokun af léninu %{target}" 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_unavailable_domain_html: "%{name} hóf aftur afhendingu til lénsins %{target}" @@ -300,6 +306,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_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}" reset_password_user_html: "%{name} endurstillti lykilorð fyrir notandann %{target}" @@ -308,6 +315,7 @@ is: silence_account_html: "%{name} þaggaði niður í aðgangnum %{target}" suspend_account_html: "%{name} setti notandaaðganginn %{target} í bið" unassigned_report_html: "%{name} fjarlægði úthlutun af kæru %{target}" + unblock_email_account_html: "%{name} opnaði á tölvupóstfangið %{target}" unsensitive_account_html: "%{name} tók merkinguna viðkvæmt af myndefni frá %{target}" unsilence_account_html: "%{name} hætti að hylja notandaaðganginn %{target}" unsuspend_account_html: "%{name} tók notandaaðganginn %{target} úr bið" @@ -371,9 +379,28 @@ is: updated_msg: Tókst að uppfæra tjáningartákn! upload: Senda inn dashboard: + active_users: virkir notendur + interactions: aðgerðir + media_storage: Geymsla myndefnis + new_users: nýir notendur + opened_reports: kærur opnaðar + pending_reports_html: + one: "<strong>1</strong> kæra í bið" + other: "<strong>%{count}</strong> kærur í bið" + pending_tags_html: + one: "<strong>1</strong> myllumerki í bið" + other: "<strong>%{count}</strong> myllumerki í bið" + pending_users_html: + one: "<strong>1</strong> notandi í bið" + other: "<strong>%{count}</strong> notendur í bið" + resolved_reports: kærur leystar software: Hugbúnaður + sources: Uppruni nýskráninga space: Notkun geymslurýmis title: Stjórnborð + top_languages: Virkustu tungumál + top_servers: Virkustu netþjónar + website: Vefsvæði domain_allows: add_new: Setja lén á lista yfir leyft created_msg: Það tókst að setja lénið á lista yfir leyft @@ -446,6 +473,7 @@ is: back_to_limited: Takmarkað back_to_warning: Aðvörun by_domain: Lén + confirm_purge: Ertu viss um að þú viljir eyða gögnum endanlega frá þessu léni? delivery: all: Allt clear: Hreinsa afhendingarvillur @@ -461,6 +489,7 @@ is: delivery_available: Afhending er til taks delivery_error_days: Dagar með villum í afhendingu delivery_error_hint: Ef afhending er ekki möguleg í %{count} daga, verður það sjálfkrafa merkt sem óafhendanlegt. + destroyed_msg: Gögn frá %{domain} bíða núna eftir að vera eytt innan skamms. empty: Engin lén fundust. known_accounts: one: "%{count} þekktur notandaaðgangur" @@ -471,6 +500,7 @@ is: title: Umsjón private_comment: Einkaathugasemd public_comment: Opinber athugasemd + purge: Henda title: Samband total_blocked_by_us: Útilokaðir af okkur total_followed_by_them: Fylgt af þeim @@ -500,8 +530,6 @@ is: title: Búa til nýja IP-reglu no_ip_block_selected: Engum IP-reglum var breytt því ekkert var valið title: IP-reglur - pending_accounts: - title: Notendaaðgangar í bið (%{count}) relationships: title: Vensl %{acct} relays: @@ -523,32 +551,44 @@ is: report_notes: created_msg: Tókst að útbúa minnispunkt skýrslu! destroyed_msg: Tókst að eyða minnispunkti skýrslu! + today_at: Í dag kl. %{time} reports: account: notes: one: "%{count} minnispunktur" other: "%{count} minnispunktar" - reports: - one: "%{count} skýrsla" - other: "%{count} skýrslur" + action_log: Atvikaskrá action_taken_by: Aðgerð framkvæmd af + actions: + 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. + 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:' + add_to_report: Bæta fleiru í kæru are_you_sure: Ertu viss? assign_to_self: Úthluta mér assigned: Úthlutaður umsjónarmaður by_target_domain: Lén kærða notandaaðgangsins + category: Flokkur + category_description_html: Ástæðan fyrir því að þessi notandaaðgangur og/eða efni hans var kært mun verða tiltekin í samskiptum við kærðan notandaaðgang comment: 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 forwarded: Áframsent forwarded_to: Áframsent á %{domain} mark_as_resolved: Merkja sem leyst mark_as_unresolved: Merkja sem óleyst + no_one_assigned: Enginn notes: create: Bæta við minnispunkti create_and_resolve: Leysa með minnispunkti create_and_unresolve: Enduropna með minnispunkti delete: Eyða 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 reopen: Enduropna kæru report: 'Kæra #%{id}' reported_account: Kærður notandaaðgangur @@ -556,11 +596,14 @@ is: resolved: Leyst resolved_msg: Það tókst að leysa kæruna! status: Staða + statuses: Kært efni + statuses_description_html: Óviðeigandi efni verður tiltekið í samskiptum við kærðan notandaaðgang target_origin: Uppruni kærða notandaaðgangsins title: Kærur unassign: Aftengja úthlutun unresolved: Óleyst updated_at: Uppfært + view_profile: Skoða notandasnið rules: add_new: Skrá reglu delete: Eyða @@ -662,15 +705,13 @@ is: destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! statuses: back_to_account: Fara aftur á síðu notandaaðgangsins + back_to_report: Til baka á kærusíðu batch: - delete: Eyða - nsfw_off: Merkja gögn sem ekki viðkvæm - nsfw_on: Merkja sem viðkvæmt + remove_from_report: Fjarlægja úr kæru + report: Kæra deleted: Eytt - failed_to_execute: Mistókst að keyra media: title: Myndefni - no_media: Ekkert myndefni no_status_selected: Engum stöðufærslum var breytt þar sem engar voru valdar title: Staða notendaaðganga with_media: Með myndefni @@ -683,21 +724,51 @@ is: sidekiq_process_check: message_html: Ekkert Sidekiq-ferli er í gangi fyrir %{value} biðröð/biðraðir. Endilega athugaðu Sidekiq-uppsetninguna þína tags: - accounts_today: Einstök afnot í dag - accounts_week: Einstök afnot í þessari viku - breakdown: Samantekt á notkun dagsins eftir uppruna - last_active: Síðasta virkni - most_popular: Vinsælast - most_recent: Nýjast - name: Myllumerki review: Yfirfara stöðufærslu - reviewed: Yfirfarið - title: Myllumerki - trending_right_now: Í umræðunni nákvæmlega núna - unique_uses_today: "%{count} færslur í dag" - unreviewed: Ekki yfirfarið updated_msg: Það tókst að uppfæra stillingar myllumerkja title: Stjórnendur + trends: + allow: Leyfa + approved: Samþykkt + disallow: Ekki leyfa + links: + allow: Leyfa tengil + allow_provider: Leyfa útgefanda + disallow: Ekki leyfa tengil + disallow_provider: Ekki leyfa útgefanda + shared_by_over_week: + one: Deilt af einum aðila síðustu vikuna + other: Deilt af %{count} aðilum síðustu vikuna + title: Vinsælir tenglar + usage_comparison: Deilt %{today} sinnum í dag, samanborið við %{yesterday} í gær + pending_review: Bíður eftir yfirlestri + preview_card_providers: + allowed: Tenglar frá þessum útgefanda geta verið með í vinsældum + rejected: Tenglar frá þessum útgefanda verða ekki með í vinsældum + title: Útgefendur + rejected: Hafnað + tags: + current_score: Núverandi stig %{score} + dashboard: + tag_accounts_measure: einstök tilvik + tag_languages_dimension: Vinsælustu tungumál + tag_servers_dimension: Vinsælustu netþjónar + tag_servers_measure: mismunandi netþjónar + tag_uses_measure: tilvik alls + listable: Má stinga uppá + not_listable: Mun ekki vera stungið uppá + not_trendable: Mun ekki birtast í vinsældum + not_usable: Má ekki nota + peaked_on_and_decaying: Toppaði þann %{date}, núna dalandi + title: Vinsæl myllumerki + trendable: Má vera með í vinsældum + trending_rank: 'Vinsæl #%{rank}' + usable: Má nota + usage_comparison: Notað %{today} sinnum í dag, samanborið við %{yesterday} í gær + used_by_over_week: + one: Notað af einum aðila síðustu vikuna + other: Notað af %{count} aðilum síðustu vikuna + title: Tilhneiging warning_presets: add_new: Bæta við nýju delete: Eyða @@ -712,9 +783,16 @@ is: body: "%{reporter} hefur kært %{target}" body_remote: Einhver frá %{domain} hefur kært %{target} subject: Ný kæra vegna %{instance} (#%{id}) - new_trending_tag: - body: 'Myllumerkið #%{name} er í umræðunni í dag, en hefur ekki verið yfirfarið áður. Það mun ekki verða birt opinberlega nema að þú samþykkir það, annars geturðu vistað eyðublaðið óbreytt og aldrei heyrt á þetta minnst framar.' - subject: Nýtt myllumerki er komið til yfirferðar á %{instance} (#%{name}) + new_trending_links: + body: Eftirfarandi tenglar eru vinsælir í dag, en ekki er búið að yfirfara útgefendur þeirra. Þeir munu ekki birtast opinberlega nema þú samþykkir þá. Ekki verða útbúnar frekari tilkynningar frá sömu útgefendum. + no_approved_links: Í augnablikinu eru engir samþykktir vinsælir tenglar. + requirements: Minnst vinsæli tengillinn sem búið er að samþykkja er núna "%{lowest_link_title}" með stigaskorið %{lowest_link_score}. + subject: Nýir vinsælir tenglar eru tilbúnir til yfirferðar á %{instance} + new_trending_tags: + body: 'Eftirfarandi myllumerki eru vinsæl í dag, en ekki er búið að yfirfara þau. Þau munu ekki birtast opinberlega nema þú samþykkir þau:' + no_approved_tags: Í augnablikinu eru engin samþykkt vinsæl myllumerki. + requirements: Minnst vinsæla myllumerkið sem búið er að samþykkja er núna %{lowest_tag_name} með stigaskorið %{lowest_tag_score}. + subject: Ný vinsæl myllumerki eru tilbúin til yfirferðar á %{instance} aliases: add_new: Búa til samnefni (alias) created_msg: Tókst að búa til samnefni. Þú getur núna byrjað að færa gögn af gamla aðgangnum. @@ -766,6 +844,7 @@ is: invalid_reset_password_token: Teikn fyrir endurstillingu lykilorðs er ógilt eða útrunnið. Biddu um nýtt teikn. link_to_otp: Settu inn tveggja-þátta kóða úr farsímanum þínum eða endurheimtukóða link_to_webauth: Notaðu tæki með öryggislykli + log_in_with: Skrá inn með login: Skrá inn logout: Skrá út migrate_account: Færa á annan notandaaðgang @@ -921,34 +1000,15 @@ is: changes_saved_msg: Það tókst að vista breytingarnar! copy: Afrita delete: Eyða - no_batch_actions_available: Engar magnvinnsluaðgerðir tiltækar á þessari síðu + none: Ekkert order_by: Raða eftir save_changes: Vista breytingar + today: í dag validation_errors: one: Ennþá er ekk alvegi allt í lagi! Skoðaðu vel villuna hér fyrir neðan other: Ennþá er ekki alveg allt í lagi! Skoðaðu vel villurnar %{count} hér fyrir neðan html_validator: invalid_markup: 'inniheldur ógildar HTML-merkingar: %{error}' - identity_proofs: - active: Virkur - authorize: Já, heimila - authorize_connection_prompt: Auðkenna dulkóðaða tengingu? - errors: - failed: Dulrituð tenging mistókst, endilega reyndu aftur frá %{provider}. - keybase: - invalid_token: Keybase-teikn eru tætigildi undirritana og verða að vera 66 hex-stafir - verification_failed: Keybase skilur þetta teikn ekki sem undirritun Keybase-notandans %{kb_username}. Prófaðu aftur í Keybase. - wrong_user: Get ekki búið til sannvottun fyrir %{proving} á meðan skráð er inn sem %{current}. Skráðu inn sem %{proving} og prófaðu aftur. - explanation_html: Hér geturðu tengt dulritað önnur auðkenni þín, eins og t.d. Keybase-notandasnið. Þetta gerir öðru fólki kleift að senda þér dulrituð skilaboð og að treysta efni sem þú sendir þeim. - i_am_html: Ég er %{username} á %{service}. - identity: Auðkenni - inactive: Óvirkt - publicize_checkbox: 'Og tísti þetta:' - publicize_toot: 'Það er búið að sanna þetta! Ég er %{username} á %{service}: %{url}' - remove: Fjarlægja sönnun úr notandaaðgangi - removed: Tókst að fjarlægja sönnun úr notandaaðgangi - status: Staða sannvottunar - view_proof: Skoða sönnun imports: errors: over_rows_processing_limit: inniheldur meira en %{count} raðir @@ -1164,6 +1224,9 @@ is: reply: proceed: Halda áfram í að svara prompt: 'Þú ætlar að svara þessu tísti:' + 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 @@ -1222,7 +1285,6 @@ is: edit_profile: Breyta notandasniði export: Útflutningur gagna featured_tags: Myllumerki með aukið vægi - identity_proofs: Sannanir á auðkenni import: Flytja inn import_and_export: Inn- og útflutningur migrate: Yfirfærsla notandaaðgangs @@ -1247,18 +1309,19 @@ is: other: "%{count} myndskeið" boosted_from_html: Endurbirt frá %{acct_link} content_warning: 'Aðvörun vegna efnis (CW): %{warning}' + default_language: Sama og tungumál viðmóts disallowed_hashtags: one: 'innihélt óleyfilegt myllumerki: %{tags}' 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. - language_detection: Greina tungumál sjálfvirkt 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 - private: Óopinber tíst er ekki hægt að festa reblog: Ekki er hægt að festa endurbirtingu poll: total_people: @@ -1413,6 +1476,7 @@ is: formats: default: "%d. %b, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Bæta við disable: Gera óvirkt @@ -1440,24 +1504,31 @@ is: subject: Endilega staðfestu tilraun til innskráningar title: Tilraun til innskráningar warning: + categories: + spam: Ruslpóstur + violation: Efnið er á skjön við eftirfarandi leiðbeiningar til notenda explanation: - disable: Á meðan aðgangurinn þinn er frystur, eru gögn aðgangsins ósnert, en þú getur ekki framkvæmt neinar aðgerðir fyrr en honum hefur verið aflæst. - sensitive: Innsent myndefni sem þú sendir inn og tengt myndefni verður farið með sem viðkvæmt efni. - silence: Á meðan aðgangurinn þinn er takmarkaður, mun aðeins fólk sem þegar fylgist með þér 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. - suspend: Aðgangurinn þinn hefur verið settur í biðstöðu, öll þín tíst og innsent myndefni hafa verið óafturkræft fjarlægð af þessum vefþjóni, sem og af þeim vefþjónum þar sem þú áttir þér fylgjendur. - get_in_touch: Þú getur svarað þessum tölvupósti til að setja þig í samband við umsjónarmenn %{instance}. + 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. + 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. + 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: 'Sérstaklega fyrir:' + statuses: 'Skilaboð sem álitin eru að hafa gengið gegn samþykktum ákvæðum:' subject: + delete_statuses: Skilaboð ín á %{acct} hafa verið fjarlægð disable: Notandaaðgangurinn þinn %{acct} hefur verið frystur none: Aðvörun fyrir %{acct} - sensitive: Myndefni sent frá %{acct} aðgangnum þínum hefur verið merkt sem viðkvæmt + 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ð disable: Notandaaðgangur frystur none: Aðvörun - sensitive: Myndefnið þitt hefur verið merkt sem viðkvæmt + sensitive: Mynd er falin silence: Notandaaðgangur takmarkaður suspend: Notandaaðgangur í bið welcome: diff --git a/config/locales/it.yml b/config/locales/it.yml index 8194e4a2c..580179b68 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -11,8 +11,8 @@ it: apps: Applicazioni per dispositivi mobili apps_platforms: Usa Mastodon da iOS, Android e altre piattaforme browse_directory: Sfoglia la directory dei profili e filtra per interessi - browse_local_posts: Sfoglia il flusso in tempo reale di post pubblici su questo server - browse_public_posts: Sfoglia il flusso in tempo reale di post pubblici su Mastodon + browse_local_posts: Sfoglia il flusso di post pubblici in tempo reale su questo server + browse_public_posts: Sfoglia il flusso di post pubblici in tempo reale su Mastodon contact: Contatti contact_missing: Non impostato contact_unavailable: N/D @@ -99,7 +99,6 @@ it: accounts: add_email_domain_block: Inserisci il dominio email nella blacklist approve: Approva - approve_all: Approva tutto approved_msg: Richiesta di registrazione di %{username} approvata are_you_sure: Sei sicuro? avatar: Immagine di profilo @@ -114,6 +113,7 @@ it: confirm: Conferma confirmed: Confermato confirming: Confermando + custom: Personalizzato delete: Elimina dati deleted: Cancellato demote: Declassa @@ -153,7 +153,6 @@ it: active: Attivo all: Tutto pending: In attesa - silenced: Silenziati suspended: Sospesi title: Moderazione moderation_notes: Note di moderazione @@ -171,7 +170,6 @@ it: redownload: Aggiorna avatar redownloaded_msg: Il profilo di %{username} è stato aggiornato dall'origine reject: Rifiuta - reject_all: Rifiuta tutto rejected_msg: Richiesta di registrazione di %{username} rifiutata remove_avatar: Rimuovi avatar remove_header: Rimuovi intestazione @@ -206,12 +204,14 @@ it: silence: Silenzia silenced: Silenziato statuses: Stati + strikes: Provvedimenti precedenti subscribe: Sottoscrivi 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. - time_in_queue: Attesa in coda %{time} title: Account + unblock_email: Sblocca indirizzo email + unblocked_email_msg: Indirizzo email di %{username} sbloccato unconfirmed_email: Email non confermata undo_sensitized: Annulla sensibile undo_silenced: Rimuovi silenzia @@ -226,6 +226,7 @@ it: whitelisted: Nella whitelist action_logs: action_types: + approve_user: Approva Utente assigned_to_self_report: Assegna report change_email_user: Cambia l'e-mail per l'utente confirm_user: Conferma utente @@ -243,6 +244,7 @@ it: destroy_domain_allow: Cancella permesso di dominio destroy_domain_block: Cancella blocco di dominio destroy_email_domain_block: Cancella blocco dominio e-mail + destroy_instance: Ripulisci dominio destroy_ip_block: Elimina regola IP destroy_status: Cancella stato destroy_unavailable_domain: Elimina dominio non disponibile @@ -255,6 +257,7 @@ it: enable_user: Abilita utente memorialize_account: Trasforma in account commemorativo promote_user: Promuovi utente + reject_user: Rifiuta Utente remove_avatar_user: Elimina avatar reopen_report: Riapri report reset_password_user: Reimposta password @@ -263,6 +266,7 @@ it: silence_account: Silenzia account suspend_account: Sospendi account unassigned_report: Disassegna report + unblock_email_account: Sblocca indirizzo email unsensitive_account: Deseleziona il media nel tuo profilo come sensibile unsilence_account: De-silenzia account unsuspend_account: Annulla la sospensione dell'account @@ -271,6 +275,7 @@ it: update_domain_block: Aggiorna blocco di dominio update_status: Aggiorna stato actions: + 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}" confirm_user_html: "%{name} ha confermato l'indirizzo e-mail dell'utente %{target}" @@ -288,6 +293,7 @@ it: destroy_domain_allow_html: "%{name} ha negato la federazione al dominio %{target}" destroy_domain_block_html: "%{name} ha sbloccato dominio %{target}" destroy_email_domain_block_html: "%{name} ha sbloccato il dominio e-mail %{target}" + destroy_instance_html: "%{name} ha ripulito il dominio %{target}" destroy_ip_block_html: "%{name} ha eliminato la regola per l'IP %{target}" destroy_status_html: "%{name} ha eliminato lo status di %{target}" destroy_unavailable_domain_html: "%{name} ha ripreso la consegna al dominio %{target}" @@ -300,6 +306,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_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}" reset_password_user_html: "%{name} ha reimpostato la password dell'utente %{target}" @@ -308,6 +315,7 @@ it: silence_account_html: "%{name} ha silenziato l'account di %{target}" suspend_account_html: "%{name} ha sospeso l'account di %{target}" unassigned_report_html: "%{name} ha disassegnato il rapporto %{target}" + unblock_email_account_html: "%{name} ha sbloccato l'indirizzo email di %{target}" unsensitive_account_html: "%{name} ha annullato il segnare il media di %{target} come sensibile" unsilence_account_html: "%{name} ha riattivato l'account di %{target}" unsuspend_account_html: "%{name} ha annullato la sospensione dell'account di %{target}" @@ -379,6 +387,9 @@ it: pending_reports_html: one: "<strong>1</strong> rapporto in attesa" other: "<strong>%{count}</strong> rapporti in attesa" + pending_tags_html: + one: "<strong>1</strong> hashtag in attesa" + other: "<strong>%{count}</strong> hashtag in attesa" pending_users_html: one: "<strong>1</strong> utente in attesa" other: "<strong>%{count}</strong> utenti in attesa" @@ -401,7 +412,7 @@ it: destroyed_msg: Il blocco del dominio è stato rimosso domain: Dominio edit: Modifica blocco di dominio - existing_domain_block_html: Hai già impostato limitazioni più stringenti su %{name}, dovresti <a href="%{unblock_url}">sbloccare</a> prima. + existing_domain_block_html: Hai già impostato limitazioni più stringenti su %{name}, dovresti <a href="%{unblock_url}">sbloccarlo</a> prima. new: create: Crea blocco hint: Il blocco dominio non previene la creazione di utenti nel database, ma applicherà automaticamente e retroattivamente metodi di moderazione specifici su quegli account. @@ -462,6 +473,7 @@ it: back_to_limited: Limitato back_to_warning: Avviso by_domain: Dominio + confirm_purge: Sei sicuro di voler cancellare definitivamente i dati di questo dominio? delivery: all: Tutto clear: Cancella errori di consegna @@ -477,6 +489,7 @@ it: delivery_available: Distribuzione disponibile delivery_error_days: Giorni con errori di consegna delivery_error_hint: Se la consegna non è possibile per %{count} giorni, sarà automaticamente contrassegnata come non consegnabile. + destroyed_msg: I dati da %{domain} sono in coda per l'eliminazione imminente. empty: Nessun dominio trovato. known_accounts: one: "%{count} account noto" @@ -487,6 +500,7 @@ it: title: Moderazione private_comment: Commento privato public_comment: Commento pubblico + purge: Ripulisci title: Istanze conosciute total_blocked_by_us: Bloccato da noi total_followed_by_them: Seguito da loro @@ -516,8 +530,6 @@ it: title: Crea una nuova regola IP no_ip_block_selected: Nessuna regola IP è stata modificata poiché nessuna è stata selezionata title: Regole IP - pending_accounts: - title: Account in attesa (%{count}) relationships: title: Relazioni di %{acct} relays: @@ -539,32 +551,43 @@ it: report_notes: created_msg: Nota rapporto creata! destroyed_msg: Nota rapporto cancellata! + today_at: Oggi alle %{time} reports: account: notes: one: "%{count} nota" other: "%{count} note" - reports: - one: "%{count} rapporto" - other: "%{count} rapporti" action_taken_by: Azione intrapresa da + actions: + other_description_html: Vedi altre opzioni per controllare il comportamento dell'account e personalizzare la comunicazione all'account segnalato. + 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:' + add_to_report: Aggiungi altro al report are_you_sure: Sei sicuro? assign_to_self: Assegna a me assigned: Moderatore assegnato by_target_domain: Dominio dell'account segnalato + category: Categoria + category_description_html: Il motivo per cui questo account e/o contenuto è stato segnalato sarà citato nella comunicazione con l'account segnalato comment: none: Nessuno + comment_description_html: 'Per fornire ulteriori informazioni, %{name} ha scritto:' created_at: Segnalato + delete_and_resolve: Cancella e risolvi forwarded: Inoltrato forwarded_to: Inoltrato a %{domain} mark_as_resolved: Segna come risolto mark_as_unresolved: Segna come non risolto + no_one_assigned: Nessuno notes: create: Aggiungi nota create_and_resolve: Risolvi con nota create_and_unresolve: Riapri con nota delete: Elimina 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é reopen: Riapri rapporto report: 'Rapporto #%{id}' reported_account: Account segnalato @@ -572,11 +595,14 @@ it: resolved: Risolto resolved_msg: Rapporto risolto! status: Stato + statuses: Contenuto segnalato + statuses_description_html: Il contenuto offensivo sarà citato nella comunicazione con l'account segnalato target_origin: Origine dell'account segnalato title: Rapporti unassign: Non assegnare unresolved: Non risolto updated_at: Aggiornato + view_profile: Visualizza profilo rules: add_new: Aggiungi regola delete: Cancella @@ -598,7 +624,7 @@ it: desc_html: Modifica l'aspetto con il CSS caricato in ogni pagina title: CSS personalizzato default_noindex: - desc_html: Interessa tutti gli utenti che non hanno cambiato questa impostazione + desc_html: Influisce su tutti gli utenti che non hanno cambiato questa impostazione title: Esclude gli utenti dall'indicizzazione dei motori di ricerca per impostazione predefinita domain_blocks: all: A tutti @@ -651,7 +677,7 @@ it: desc_html: Paragrafo introduttivo nella pagina iniziale. Descrive ciò che rende speciale questo server Mastodon e qualunque altra cosa sia importante dire. Potete usare marcatori HTML, in particolare <code><a></code> e <code><em></code>. title: Descrizione del server site_description_extended: - desc_html: Un posto adatto per pubblicare regole di comportamento, linee guida e altre cose specifiche del vostro server. Potete usare marcatori HTML + desc_html: Un posto adatto le regole di comportamento, linee guida e altre cose specifiche del vostro server. Potete usare marcatori HTML title: Informazioni estese personalizzate site_short_description: desc_html: Mostrato nella barra laterale e nei tag meta. Descrive in un paragrafo che cos'è Mastodon e che cosa rende questo server speciale. Se vuoto, sarà usata la descrizione predefinita del server. @@ -678,15 +704,13 @@ it: destroyed_msg: Caricamento sito eliminato! statuses: back_to_account: Torna alla pagina dell'account + back_to_report: Torna alla pagina del report batch: - delete: Elimina - nsfw_off: Segna come non sensibile - nsfw_on: Segna come sensibile + remove_from_report: Rimuovi dal report + report: Rapporto deleted: Cancellato - failed_to_execute: Impossibile eseguire media: title: Media - no_media: Nessun media no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato title: Gli status dell'account with_media: con media @@ -699,21 +723,51 @@ it: sidekiq_process_check: message_html: Nessun processo di Sidekiq in esecuzione per le code di %{value}. Sei pregato di revisionare la tua configurazione di Sidekiq tags: - accounts_today: Usi unici oggi - accounts_week: Usi unici questa settimana - breakdown: Suddivisione dell'utilizzo di oggi per fonte - last_active: Ultima attività - most_popular: Più popolari - most_recent: Più recenti - name: Hashtag review: Esamina status - reviewed: Controllato - title: Hashtag - trending_right_now: Di tendenza ora - unique_uses_today: "%{count} post oggi" - unreviewed: Non controllato - updated_msg: Impostazioni degli hashtag aggiornate + updated_msg: Impostazioni hashtag aggiornate con successo title: Amministrazione + trends: + allow: Consenti + approved: Approvato + disallow: Non consentire + links: + allow: Consenti link + allow_provider: Consenti editore + disallow: Non consentire link + disallow_provider: Non consentire editore + shared_by_over_week: + one: Condiviso da una persona nell'ultima settimana + other: Condiviso da %{count} persone nell'ultima settimana + title: Link in tendenza + usage_comparison: Condiviso %{today} volte oggi, rispetto a %{yesterday} ieri + pending_review: Revisione in sospeso + preview_card_providers: + allowed: I link da questa fonte possono essere in tendenza + rejected: I link da questa fonte non possono essere in tendenza + title: Editori + rejected: Rifiutato + tags: + current_score: Punteggio corrente %{score} + dashboard: + tag_accounts_measure: usi unici + tag_languages_dimension: Lingue migliori + tag_servers_dimension: Server migliori + tag_servers_measure: server diversi + tag_uses_measure: usi totali + listable: Suggeribile + not_listable: Non sarà suggerito + not_trendable: Non apparirà nelle tendenze + not_usable: Inutilizzabile + peaked_on_and_decaying: Ha avuto un picco il %{date}, ora in caduta + title: Hashtag in tendenza + trendable: Può comparire nelle tendenze + trending_rank: 'In tendenza #%{rank}' + usable: Utilizzabile + usage_comparison: Usato %{today} volte oggi, rispetto a %{yesterday} ieri + used_by_over_week: + one: Usato da una persona nell'ultima settimana + other: Usato da %{count} persone nell'ultima settimana + title: Tendenze warning_presets: add_new: Aggiungi nuovo delete: Cancella @@ -728,9 +782,16 @@ it: body: "%{reporter} ha segnalato %{target}" body_remote: Qualcuno da %{domain} ha segnalato %{target} subject: Nuova segnalazione per %{instance} (#%{id}) - new_trending_tag: - body: 'L''hashtag #%{name} oggi è di tendenza, ma non è stato mai controllato. Non sarà visualizzato pubblicamente se non lo permetti; se salvi il form senza modifiche non lo vedrai mai più.' - subject: Nuovo hashtag pronto per essere controllato su %{instance} (#%{name}) + new_trending_links: + body: I seguenti link sono in tendenza oggi, ma i loro editori non sono stati revisionati precedentemente. Non saranno mostrati pubblicamente a meno che tu non li approvi. Ulteriori notifiche dagli stessi editori non saranno generate. + no_approved_links: Nessun link in tendenza correntemente approvato. + requirements: Il link in tendenza più basso approvato è correntemente "%{lowest_link_title}" con un punteggio di %{lowest_link_score}. + subject: Nuovi link in tendenza in attesa di revisione su %{instance} + new_trending_tags: + body: 'I seguenti hashtag sono in tendenza oggi, ma non sono stati precedentemente revisionati. Non saranno visualizzati pubblicamente a meno che non li approvi:' + no_approved_tags: Nessun hashtag in tendenza correntemente approvato. + requirements: 'L''hashtag in tendenza approvato con punteggio più basso è al momento #%{lowest_tag_name} con un punteggio di %{lowest_tag_score}.' + subject: I nuovi hashtag in tendenza in attesa di revisione su %{instance} aliases: add_new: Crea alias created_msg: Hai creato un nuovo alias. Ora puoi iniziare lo spostamento dal vecchio account. @@ -758,7 +819,7 @@ it: settings: 'Cambia le impostazioni per le email: %{link}' view: 'Guarda:' view_profile: Mostra profilo - view_status: Mostra stati + view_status: Mostra post applications: created: Applicazione creata con successo destroyed: Applicazione eliminata con successo @@ -784,6 +845,7 @@ it: invalid_reset_password_token: Il token di reimpostazione della password non è valido o è scaduto. Per favore richiedine uno nuovo. link_to_otp: Inserisci un codice a due fattori dal tuo telefono o un codice di recupero link_to_webauth: Usa il tuo dispositivo chiave di sicurezza + log_in_with: Accedi con login: Entra logout: Esci da Mastodon migrate_account: Sposta ad un account differente @@ -895,7 +957,7 @@ it: archive_takeout: date: Data download: Scarica il tuo archivio - hint_html: Puoi richiedere un archivio dei tuoi <strong>toot e media caricati</strong>. I dati esportati sono in formato ActivityPub, leggibili da qualunque software che segue questo standard. Puoi richiedere un archivio ogni 7 giorni. + hint_html: Puoi richiedere un archivio dei tuoi <strong>post media caricati</strong>. I dati esportati sono in formato ActivityPub, leggibili da qualunque software che segue questo standard. Puoi richiedere un archivio ogni 7 giorni. in_progress: Creazione archivio... request: Chiedi il tuo archivio size: Dimensioni @@ -939,34 +1001,15 @@ it: changes_saved_msg: Modifiche effettuate con successo! copy: Copia delete: Cancella - no_batch_actions_available: Nessuna azione batch disponibile su questa pagina + none: Nessuno order_by: Ordina per save_changes: Salva modifiche + today: oggi validation_errors: one: Qualcosa ancora non va bene! Per favore, controlla l'errore qui sotto other: Qualcosa ancora non va bene! Per favore, controlla i %{count} errori qui sotto html_validator: invalid_markup: 'contiene markup HTML non valido: %{error}' - identity_proofs: - active: Attive - authorize: Si, autorizza - authorize_connection_prompt: Autorizzare questa connessione crittografata? - errors: - failed: La connessione crittografata non è riuscita. Per favore riprova da %{provider}. - keybase: - invalid_token: I toked di Keybase sono hash di firme e devono essere lunghi 66 caratteri esadecimali - verification_failed: Keybase non riconosce questo token come firma dell'utente Keybase %{kb_username}. Per favore riprova da Keybase. - wrong_user: Impossibile creare una prova per %{proving} mentre si è effettuato l'accesso come %{current}. Accedi come %{proving} e riprova. - explanation_html: Qui puoi connettere crittograficamente le tue altre identità, come il profilo Keybase. Questo consente ad altre persone di inviarti messaggi criptati e fidarsi dei contenuto che tu invii a loro. - i_am_html: Io sono %{username} su %{service}. - identity: Identità - inactive: Inattiva - publicize_checkbox: 'E posta questo:' - publicize_toot: 'É provato! Io sono %{username} su %{service}: %{url}' - remove: Elimina prova dall'account - removed: Prova eliminata dall'account - status: Stato della verifica - view_proof: Vedi prova imports: errors: over_rows_processing_limit: contiene più di %{count} righe @@ -1047,14 +1090,14 @@ it: proceed_with_move: Sposta seguaci redirected_msg: Il tuo account sta reindirizzando a %{acct}. redirecting_to: Il tuo account sta reindirizzando a %{acct}. - set_redirect: Imposta ridirezione + set_redirect: Imposta reindirizzamento warning: backreference_required: Il nuovo account deve essere prima configurato per collegarsi a questo before: 'Prima di procedere, leggi attentamente queste avvertenze:' cooldown: Dopo il trasferimento c'è un periodo di pausa durante il quale non potrai trasferirti di nuovo disabled_account: Il tuo account attuale non sarà più pienamente utilizzabile. Tuttavia, avrai accesso all'esportazione dei dati e alla riattivazione. - followers: Questa azione sposterà tutti i seguaci dall'account attuale al nuovo account - only_redirect_html: In alternativa, puoi solo <a href="%{path}">impostare un redirect sul tuo profilo</a>. + followers: Questa azione sposterà tutti i follower dall'account attuale al nuovo account + only_redirect_html: In alternativa, puoi solo <a href="%{path}">impostare un reindirizzamento sul tuo profilo</a>. other_data: Nessun altro dato verrà spostato automaticamente redirect: Il profilo del tuo account corrente sarà aggiornato con un avviso di ridirezione e sarà escluso dalle ricerche moderation: @@ -1104,7 +1147,7 @@ it: notifications: email_events: Eventi per notifiche via email email_events_hint: 'Seleziona gli eventi per i quali vuoi ricevere le notifiche:' - other_settings: Altre impostazioni per le notifiche + other_settings: Altre impostazioni delle notifiche number: human: decimal_units: @@ -1175,16 +1218,16 @@ it: remote_interaction: favourite: proceed: Continua per segnare come apprezzato - prompt: 'Vuoi segnare questo toot come apprezzato:' + prompt: 'Vuoi segnare questo post come apprezzato:' reblog: proceed: Continua per condividere - prompt: 'Vuoi condividere questo toot:' + prompt: 'Vuoi condividere questo post:' reply: proceed: Continua per rispondere - prompt: 'Vuoi rispondere a questo toot:' + prompt: 'Vuoi rispondere a questo post:' scheduled_statuses: - over_daily_limit: Hai superato il limite di %{limit} toot programmati per questo giorno - over_total_limit: Hai superato il limite di %{limit} toot programmati + 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 too_soon: La data di pubblicazione deve essere nel futuro sessions: activity: Ultima attività @@ -1238,9 +1281,8 @@ it: delete: Cancellazione account development: Sviluppo edit_profile: Modifica profilo - export: Esporta impostazioni + export: Esportazione dati featured_tags: Hashtag in evidenza - identity_proofs: Prove di identità import: Importa import_and_export: Importa ed esporta migrate: Migrazione dell'account @@ -1265,18 +1307,19 @@ it: other: "%{count} video" boosted_from_html: Condiviso da %{acct_link} content_warning: 'Avviso di contenuto: %{warning}' + default_language: Come la lingua dell'interfaccia disallowed_hashtags: one: 'contiene un hashtag non permesso: %{tags}' other: 'contiene gli hashtags non permessi: %{tags}' + edited_at: Modificato il %{date} errors: - in_reply_not_found: Lo stato a cui stai tentando di rispondere non sembra esistere. - language_detection: Individua lingua automaticamente + in_reply_not_found: Il post a cui stai tentando di rispondere non sembra esistere. open_in_web: Apri sul Web over_character_limit: Limite caratteri superato di %{max} pin_errors: - limit: Hai già fissato in cima il massimo numero di toot - ownership: Non puoi fissare in cima un toot di qualcun altro - private: Un toot non pubblico non può essere fissato in cima + direct: I messaggi visibili solo agli utenti citati non possono essere fissati in cima + limit: Hai già fissato in cima il massimo numero di post + ownership: Non puoi fissare in cima un post di qualcun altro reblog: Un toot condiviso non può essere fissato in cima poll: total_people: @@ -1335,7 +1378,7 @@ it: min_reblogs: Conserva i post condivisi più di min_reblogs_hint: Non cancella nessuno dei tuoi post che è stato condiviso più di questo numero di volte. Lascia vuoto per cancellare i post indipendentemente dal loro numero di condivisioni stream_entries: - pinned: Toot fissato in cima + pinned: Post fissato in cima reblogged: condiviso sensitive_content: Materiale sensibile tags: @@ -1434,6 +1477,7 @@ it: formats: default: "%d %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Aggiungi disable: Disabilita @@ -1461,28 +1505,35 @@ it: subject: Conferma il tentativo di accesso title: Tentativo di accesso warning: + categories: + spam: Spam + violation: Il contenuto viola le seguenti linee guida della comunità explanation: - disable: Mentre il tuo account è congelato, i tuoi dati dell'account rimangono intatti, ma non potrai eseguire nessuna azione fintanto che non viene sbloccato. - sensitive: I tuoi file multimediali caricati e multimedia collegati saranno trattati come sensibili. - silence: Mentre il tuo account è limitato, solo le persone che già ti seguono possono vedere i tuoi toot su questo server, e potresti essere escluso da vari elenchi pubblici. Comunque, altri possono manualmente seguirti. - suspend: Non puoi più utilizzare il tuo account, e il tuo profilo e altri dati non sono più accessibili. È ancora possibile effettuare il login per richiedere un backup dei dati fino a quando i dati non vengono completamente rimossi, ma conserveremo alcuni dati per impedirti di eludere la sospensione. - get_in_touch: Puoi rispondere a questa email per entrare in contatto con lo staff di %{instance}. + delete_statuses: Alcuni dei tuoi post sono in violazione di una o più linee guida della comunità, e quindi sono stati eliminati dai moderatori di %{instance}. Le future violazioni possono comportare azioni punitive più severe contro il tuo account. + disable: Non puoi più utilizzare il tuo account, ma il tuo profilo e gli altri dati rimangono intatti. Puoi richiedere un backup dei tuoi dati, modificare le impostazioni dell'account o eliminare il tuo account. + sensitive: D'ora in poi, tutti i file multimediali che hai caricato saranno contrassegnati come sensibili e nascosti dietro un avviso click-through. + silence: Puoi ancora utilizzare il tuo account, ma solo le persone che già ti seguono possono vedere i tuoi post su questo server, e potresti essere escluso da varie funzionalità di ricerca. Gli altri utenti possono comunque seguirti manualmente. + 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: 'Nello specifico, per:' + statuses: 'Post che sono stati trovati in violazione:' subject: + delete_statuses: I tuoi post su %{acct} sono stati eliminati disable: Il tuo account %{acct} è stato congelato none: Avviso per %{acct} - sensitive: Il multimedia in pubblicazione del tuo profilo %{acct} è stato contrassegnato come sensibile + sensitive: I tuoi file multimediali su %{acct} d'ora in poi saranno contrassegnati come sensibili silence: Il tuo account %{acct} è stato limitato suspend: Il tuo account %{acct} è stato sospeso title: + delete_statuses: Post eliminati disable: Account congelato none: Avviso - sensitive: Il tuo multimedia è stato contrassegnato come sensibile + sensitive: Media nascosto silence: Account limitato suspend: Account sospeso welcome: - edit_profile_action: Imposta profilo + edit_profile_action: Configura profilo edit_profile_step: Puoi personalizzare il tuo profilo caricando un avatar, un'intestazione, modificando il tuo nome visualizzato e così via. Se vuoi controllare i tuoi nuovi seguaci prima di autorizzarli a seguirti, puoi bloccare il tuo account. explanation: Ecco alcuni suggerimenti per iniziare final_action: Inizia a postare @@ -1493,7 +1544,7 @@ it: review_preferences_step: Dovresti impostare le tue preferenze, ad esempio quali email vuoi ricevere oppure il livello predefinito di privacy per i tuoi post. Se le immagini in movimento non ti danno fastidio, puoi abilitare l'animazione automatica delle GIF. subject: Benvenuto/a su Mastodon tip_federated_timeline: La timeline federata visualizza uno dopo l'altro i messaggi pubblicati su Mastodon. Ma comprende solo gli utenti seguiti dai tuoi vicini, quindi non è completa. - tip_following: Per impostazione predefinita, segui l'amministratore/i del tuo server. Per trovare utenti più interessanti, dà un'occhiata alle timeline locale e federata. + tip_following: Per impostazione predefinita, segui gli amministratori del tuo server. Per trovare utenti più interessanti, dà un'occhiata alle timeline locale e federata. tip_local_timeline: La timeline locale visualizza uno dopo l'altro i messaggi degli utenti di %{instance}. Questi sono i tuoi vicini! tip_mobile_webapp: Se il tuo browser mobile ti dà la possibilità di aggiungere Mastodon allo schermo, puoi ricevere le notifiche. Funziona un po' come un'app natova! tips: Suggerimenti @@ -1504,7 +1555,7 @@ it: invalid_otp_token: Codice d'accesso non valido invalid_sign_in_token: Codice di sicurezza non valido otp_lost_help_html: Se perdessi l'accesso ad entrambi, puoi entrare in contatto con %{email} - seamless_external_login: Ti sei collegato per mezzo di un servizio esterno, quindi le impostazioni di email e password non sono disponibili. + seamless_external_login: Hai effettuato l'accesso tramite un servizio esterno, quindi le impostazioni di password e e-mail non sono disponibili. signed_in_as: 'Hai effettuato l''accesso come:' suspicious_sign_in_confirmation: Sembra che tu non abbia effettuato l'accesso da questo dispositivo prima d'ora, e non hai effettuato l'accesso per un po', quindi inviamo un codice di sicurezza al tuo indirizzo e-mail per confermare che sei proprio tu. verification: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 85c22a0f4..105974389 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1,10 +1,10 @@ --- ja: about: - about_hashtag_html: ハッシュタグ <strong>#%{hashtag}</strong> の付いた公開投稿です。どこでもいいので、連合に参加しているSNS上にアカウントを作れば会話に参加することができます。 + about_hashtag_html: ハッシュタグ <strong>#%{hashtag}</strong> の公開投稿です。どこか連合に参加しているSNS上にアカウントを作れば、会話に参加することができます。 about_mastodon_html: Mastodon は、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 about_this: 詳細情報 - active_count_after: 人アクティブ + active_count_after: 人がアクティブ active_footnote: 月間アクティブユーザー数 (MAU) administered_by: '管理者:' api: API @@ -93,7 +93,6 @@ ja: accounts: add_email_domain_block: メールドメインブロックに追加 approve: 承認 - approve_all: すべて承認 approved_msg: "%{username} の登録申請を承認しました" are_you_sure: 本当に実行しますか? avatar: アイコン @@ -108,11 +107,13 @@ ja: confirm: 確認 confirmed: 確認済み confirming: 確認中 + custom: カスタム delete: データを削除する deleted: 削除済み demote: 降格 destroyed_msg: "%{username} のデータは完全に削除されるよう登録されました" disable: 無効化 + disable_sign_in_token_auth: メールトークン認証を無効にする disable_two_factor_authentication: 二段階認証を無効にする disabled: 無効 display_name: 表示名 @@ -121,6 +122,7 @@ ja: email: メールアドレス email_status: メールアドレスの状態 enable: 有効化 + enable_sign_in_token_auth: メールトークン認証を有効にする enabled: 有効 enabled_msg: "%{username} の無効化を解除しました" followers: フォロワー数 @@ -145,7 +147,6 @@ ja: active: アクティブ all: すべて pending: 承認待ち - silenced: サイレンス済み suspended: 停止済み title: モデレーション moderation_notes: モデレーションメモ @@ -163,7 +164,6 @@ ja: redownload: プロフィールを更新 redownloaded_msg: "%{username} のプロフィールを正常に更新しました" reject: 却下 - reject_all: すべて却下 rejected_msg: "%{username} の登録申請を却下しました" remove_avatar: アイコンを削除 remove_header: ヘッダーを削除 @@ -186,12 +186,14 @@ ja: search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー search_same_ip: 同じ IP のユーザーを検索 security_measures: + only_password: パスワードのみ password_and_2fa: パスワードと 2FA + password_and_sign_in_token: パスワードとメールトークン sensitive: 閲覧注意 - sensitized: 閲覧注意済み + sensitized: 閲覧注意としてマーク済み shared_inbox_url: Shared inbox URL show: - created_reports: このアカウントで作られた通報 + created_reports: このアカウントからの通報 targeted_reports: このアカウントについての通報 silence: サイレンス silenced: サイレンス済み @@ -200,8 +202,9 @@ ja: suspended: 停止済み suspension_irreversible: このアカウントのデータは削除され元に戻せなくなります。後日アカウントの凍結を解除することはできますがデータは元に戻せません。 suspension_reversible_hint_html: アカウントは停止されており、データは %{date} に完全に削除されます。それまではアカウントを元に戻すことができます。今すぐ完全に削除したい場合は以下から行うことができます。 - time_in_queue: "%{time} 待ち" title: アカウント + unblock_email: メールアドレスのブロックを解除 + unblocked_email_msg: "%{username} のメールアドレスのブロックを解除しました" unconfirmed_email: 確認待ちのメールアドレス undo_sensitized: 閲覧注意から戻す undo_silenced: サイレンスから戻す @@ -216,6 +219,7 @@ ja: whitelisted: 連合許可済み action_logs: action_types: + approve_user: ユーザーの承認 assigned_to_self_report: 通報の担当者に設定 change_email_user: ユーザーのメールアドレスを変更 confirm_user: ユーザーの確認 @@ -233,16 +237,20 @@ ja: destroy_domain_allow: 連合許可を外す destroy_domain_block: ドメインブロックを削除 destroy_email_domain_block: メールドメインブロックを削除 + destroy_instance: ドメインをブロックする destroy_ip_block: IPルールを削除 destroy_status: 投稿を削除 destroy_unavailable_domain: 配送できないドメインを削除 disable_2fa_user: 二段階認証を無効化 disable_custom_emoji: カスタム絵文字を無効化 + disable_sign_in_token_auth_user: ユーザーのE-mail トークン認証を無効にする disable_user: ユーザーを無効化 enable_custom_emoji: カスタム絵文字を有効化 + enable_sign_in_token_auth_user: E-mail トークンのユーザー認証を有効にする enable_user: ユーザーを有効化 memorialize_account: 追悼アカウント化 promote_user: ユーザーを昇格 + reject_user: ユーザーを拒否 remove_avatar_user: アイコンを削除 reopen_report: 未解決に戻す reset_password_user: パスワードをリセット @@ -251,6 +259,7 @@ ja: silence_account: アカウントをサイレンス suspend_account: アカウントを停止 unassigned_report: 通報の担当を解除 + unblock_email_account: メールアドレスのブロックを解除 unsensitive_account: アカウントのメディアの閲覧注意マークを解除 unsilence_account: アカウントのサイレンスを解除 unsuspend_account: アカウントの停止を解除 @@ -259,6 +268,7 @@ ja: update_domain_block: ドメインブロックを更新 update_status: 投稿を更新 actions: + approve_user_html: "%{target} から登録された %{name} さんを承認しました" assigned_to_self_report_html: "%{name} さんが通報 %{target} を自身の担当に割り当てました" change_email_user_html: "%{name} さんが %{target} さんのメールアドレスを変更しました" confirm_user_html: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました" @@ -276,16 +286,20 @@ ja: destroy_domain_allow_html: "%{name} さんが %{target} の連合許可を外しました" destroy_domain_block_html: "%{name} さんがドメイン %{target} のブロックを外しました" destroy_email_domain_block_html: "%{name} さんが %{target} をメールドメインブロックから外しました" + destroy_instance_html: "%{name} さんが %{target} をドメインブロックしました" destroy_ip_block_html: "%{name} さんが IP %{target} のルールを削除しました" destroy_status_html: "%{name} さんが %{target} さんの投稿を削除しました" destroy_unavailable_domain_html: "%{name} がドメイン %{target} への配送を再開しました" disable_2fa_user_html: "%{name} さんが %{target} さんの二段階認証を無効化しました" disable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を無効化しました" + disable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を無効にしました" disable_user_html: "%{name} さんが %{target} さんのログインを無効化しました" enable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を有効化しました" + enable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を有効にしました" enable_user_html: "%{name} さんが %{target} さんのログインを有効化しました" memorialize_account_html: "%{name} さんが %{target} さんを追悼アカウントページに登録しました" promote_user_html: "%{name} さんが %{target} さんを昇格しました" + reject_user_html: "%{target} から登録された %{name} さんを拒否しました" remove_avatar_user_html: "%{name} さんが %{target} さんのアイコンを削除しました" reopen_report_html: "%{name} さんが通報 %{target} を未解決に戻しました" reset_password_user_html: "%{name} さんが %{target} さんのパスワードをリセットしました" @@ -294,6 +308,7 @@ ja: silence_account_html: "%{name} さんが %{target} さんをサイレンスにしました" suspend_account_html: "%{name} さんが %{target} さんを停止しました" unassigned_report_html: "%{name} さんが通報 %{target} の担当を外しました" + unblock_email_account_html: "%{name} さんが %{target} のドメインブロックを解除しました" unsensitive_account_html: "%{name} さんが %{target} さんのメディアの閲覧注意を解除しました" unsilence_account_html: "%{name} さんが %{target} さんのサイレンスを解除しました" unsuspend_account_html: "%{name} さんが %{target} さんの停止を解除しました" @@ -357,9 +372,25 @@ ja: updated_msg: 絵文字の更新に成功しました! upload: アップロード dashboard: + active_users: アクティブユーザー + interactions: 相互作用 + media_storage: メディアストレージ + new_users: 新規ユーザー + opened_reports: レポートが開かれました + pending_reports_html: + other: 保留中の報告 <strong>%{count}</strong> 件 + pending_tags_html: + other: 保留中のハッシュタグ <strong>%{count}</strong> 件 + pending_users_html: + other: 保留中のユーザー <strong>%{count}</strong> 件 + resolved_reports: 解決済みのレポート software: ソフトウェア + sources: サインアップソース space: ディスク使用量 title: ダッシュボード + top_languages: トップのアクティブ言語 + top_servers: トップアクティブサーバー + website: ウェブサイト domain_allows: add_new: 連合を許可 created_msg: 連合を許可しました @@ -431,6 +462,7 @@ ja: back_to_limited: 制限あり back_to_warning: 警告あり by_domain: ドメイン + confirm_purge: このドメインを完全にブロックしてもよろしいですか? delivery: all: すべて clear: 配送エラーをクリア @@ -445,6 +477,7 @@ ja: delivery_available: 配送可能 delivery_error_days: 配送エラー発生日 delivery_error_hint: "%{count} 日間配送ができない場合は、自動的に配送不可としてマークされます。" + destroyed_msg: "%{domain} からのデータは、すぐに削除されるように、キューに追加されました。" empty: ドメインが見つかりませんでした。 known_accounts: other: 既知のアカウント数 %{count} @@ -454,6 +487,7 @@ ja: title: モデレーション private_comment: コメント (非公開) public_comment: コメント (公開) + purge: パージ title: 既知のサーバー total_blocked_by_us: ブロック合計 total_followed_by_them: 被フォロー合計 @@ -483,8 +517,6 @@ ja: title: 新規IPルール no_ip_block_selected: 何も選択されていないためIPルールを変更しませんでした title: IPルール - pending_accounts: - title: 承認待ちアカウント (%{count}) relationships: title: "%{acct} さんのフォロー・フォロワー" relays: @@ -506,20 +538,23 @@ ja: report_notes: created_msg: 通報メモを書き込みました! destroyed_msg: 通報メモを削除しました! + today_at: 今日 %{time} reports: account: notes: other: "%{count} 件のメモ" - reports: - other: "%{count} 件の通報" + action_log: 監査ログ action_taken_by: 通報処理者 + add_to_report: レポートにさらに追加 are_you_sure: 本当に実行しますか? assign_to_self: 担当になる assigned: 担当者 by_target_domain: ドメイン + category: カテゴリー comment: none: なし created_at: 通報日時 + delete_and_resolve: 解決済みにして削除 forwarded: 転送済み forwarded_to: "%{domain} に転送されました" mark_as_resolved: 解決済みとしてマーク @@ -530,6 +565,8 @@ ja: create_and_unresolve: 書き込み、未解決に戻す delete: 削除 placeholder: どのような措置が取られたか、または関連する更新を記述してください… + title: メモ + notes_description_html: 他のモデレーターと将来の自分にメモを残してください reopen: 未解決に戻す report: 通報#%{id} reported_account: 報告対象アカウント @@ -537,10 +574,13 @@ ja: resolved: 解決済み resolved_msg: 通報を解決済みにしました! status: ステータス + statuses: 通報内容 + target_origin: 報告されたアカウントの起源 title: 通報 unassign: 担当を外す unresolved: 未解決 updated_at: 更新日時 + view_profile: プロフィールを表示 rules: add_new: ルールを追加 delete: 削除 @@ -642,15 +682,13 @@ ja: destroyed_msg: ファイルを削除しました! statuses: back_to_account: アカウントページに戻る + back_to_report: レポートページに戻る batch: - delete: 削除 - nsfw_off: 閲覧注意をはずす - nsfw_on: 閲覧注意にする + remove_from_report: レポートから削除 + report: 通報 deleted: 削除済み - failed_to_execute: 実行に失敗しました media: title: メディア - no_media: メディアなし no_status_selected: 何も選択されていないため、変更されていません title: 投稿一覧 with_media: メディアあり @@ -663,21 +701,49 @@ ja: sidekiq_process_check: message_html: "%{value} キューに対応するSidekiq プロセスがありません。Sidekiq の設定を確認してください。" tags: - accounts_today: 本日使用した人数 - accounts_week: 今週使用した人数 - breakdown: 直近のサーバー別使用状況 - last_active: 最近使われた順 - most_popular: 使用頻度順 - most_recent: 新着順 - name: ハッシュタグ review: 審査状況 - reviewed: 審査済み - title: ハッシュタグ - trending_right_now: 現在のトレンド - unique_uses_today: 本日 %{count} 人が投稿に使用 - unreviewed: 未審査 updated_msg: ハッシュタグ設定が更新されました title: 管理 + trends: + allow: 許可 + approved: 承認 + disallow: 不許可 + links: + allow: リンクの許可 + allow_provider: 発行者の承認 + disallow: リンクの拒否 + disallow_provider: 発行者の拒否 + shared_by_over_week: + other: 先週 %{count} 人が共有しました + title: トレンドリンク + usage_comparison: 今日は %{today} 回、昨日は %{yesterday} 回共有されました + pending_review: 保留中のレビュー + preview_card_providers: + allowed: この発行者からのリンクを許可 + rejected: この発行者からのリンクを拒否 + title: 発行者 + rejected: 拒否 + tags: + current_score: 現在のスコア %{score} + dashboard: + tag_accounts_measure: 1回のみ使用 + tag_languages_dimension: 人気の言語 + tag_servers_dimension: 人気のサーバー + tag_servers_measure: その他のサーバー + tag_uses_measure: 合計利用数 + listable: おすすめの + 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: + other: 先週は %{count} 人に使用されました + title: トレンド warning_presets: add_new: 追加 delete: 削除 @@ -692,9 +758,16 @@ ja: body: "%{reporter} が %{target} を通報しました" body_remote: "%{domain} の誰かが %{target} を通報しました" subject: "%{instance} の新しい通報 (#%{id})" - new_trending_tag: - body: 'ハッシュタグ #%{name} が本日のトレンドになっていますが、審査がまだ行われていないためトレンドタグには表示されていません。一度許可すれば次回からこの操作は不要です。' - subject: "%{instance} で新しいハッシュタグ (#%{name}) が審査待ちです" + new_trending_links: + body: 以下のリンクは今日のトレンドですが、これらの発行者はまだレビューされていません。承認するまでは、このリンクは公開されず、通知も生成されません。 + no_approved_links: 承認済みのトレンドはありません。 + requirements: '承認された最低のトレンドは現在 %{lowest_link_title} です。(スコア: %{lowest_link_score} )' + subject: 新しいトレンドを %{instance} で確認してください。 + new_trending_tags: + body: 以下のハッシュタグは今日のトレンドですが、これらの発行者はまだレビューされていません。承認するまでは、このハッシュタグは公開されず、通知も生成されません。 + no_approved_tags: 承認済みのハッシュタグはありません。 + requirements: '承認された最低のトレンドハッシュタグは現在 %{lowest_tag_name} です。(スコア: %{lowest_tag_score} )' + subject: 新しいトレンドハッシュタグを %{instance} で確認してください。 aliases: add_new: エイリアスを作成 created_msg: エイリアスを作成しました。これで以前のアカウントから引っ越しを開始できます。 @@ -901,33 +974,14 @@ ja: changes_saved_msg: 正常に変更されました! copy: コピー delete: 削除 - no_batch_actions_available: このページに一括操作はありません + none: なし order_by: 並び順 save_changes: 変更を保存 + today: 今日 validation_errors: other: エラーが発生しました! 以下の%{count}個のエラーを確認してください html_validator: invalid_markup: '無効なHTMLマークアップが含まれています: %{error}' - identity_proofs: - active: アクティブ - authorize: 許可する - authorize_connection_prompt: この暗号化接続を許可しますか? - errors: - failed: 暗号化接続に失敗しました。%{provider}からもう一度やり直してください。 - keybase: - invalid_token: Keybaseトークンは16進数で66文字のハッシュである必要があります - verification_failed: KeybaseはこのトークンをKeybaseユーザー%{kb_username}の署名として認識しませんでした。Keybaseから再試行してください。 - wrong_user: "%{current}としてログインしている間%{proving}の証明を作成することはできません。%{proving}としてログインし、もう一度やり直してください。" - explanation_html: ここではKeybaseのような他のサービスのアカウントと暗号化し関連づけることができます。これによりそれらのサービス上で他の人が暗号化されたメッセージを送信したり、あなたの送信した内容があなたからのものであると信用できるようになります。 - i_am_html: 私は %{service} の %{username} です。 - identity: 所属 - inactive: 非アクティブ - publicize_checkbox: 'そしてこれをトゥートします:' - publicize_toot: '証明されました!私は %{service} の %{username} です: %{url}' - remove: アカウントから証明書を削除 - removed: アカウントから証明書を削除することに成功しました - status: 認証状態 - view_proof: 証明を表示 imports: errors: over_rows_processing_limit: "%{count} 行以上" @@ -972,9 +1026,15 @@ ja: limit: リストの上限に達しました login_activities: authentication_methods: + otp: 2要素認証 password: パスワード sign_in_token: 電子メールセキュリティコード webauthn: セキュリティキー + description_html: 認識できないアクティビティが表示された場合は、パスワードの変更と2要素認証の有効化を検討してください。 + empty: 利用可能な認証履歴がありません + failed_sign_in_html: "%{ip} (%{browser}) からの %{method} を利用したサインインに失敗しました。" + successful_sign_in_html: "%{ip} (%{browser}) からの %{method} を利用したサインインに成功しました" + title: 認証履歴 media_attachments: validations: images_and_video: 既に画像が追加されているため、動画を追加することはできません @@ -1179,6 +1239,7 @@ ja: revoke: 削除 revoke_success: セッションを削除しました title: セッション + view_authentication_history: アカウントの認証履歴を表示 settings: account: アカウント account_settings: アカウント設定 @@ -1191,7 +1252,6 @@ ja: edit_profile: プロフィールを編集 export: データのエクスポート featured_tags: 注目のハッシュタグ - identity_proofs: Identity proofs import: データのインポート import_and_export: インポート・エクスポート migrate: アカウントの引っ越し @@ -1213,17 +1273,18 @@ ja: other: "%{count} 本の動画" boosted_from_html: "%{acct_link} からブースト" content_warning: '閲覧注意: %{warning}' + default_language: UIの表示言語 disallowed_hashtags: other: '許可されていないハッシュタグが含まれています: %{tags}' + edited_at: "%{date} に編集" errors: in_reply_not_found: あなたが返信しようとしている投稿は存在しないようです。 - language_detection: 自動検出 open_in_web: Webで開く over_character_limit: 上限は %{max}文字までです pin_errors: + direct: 返信したユーザーのみに表示される投稿はピン留めできません limit: 固定できる投稿数の上限に達しました ownership: 他人の投稿を固定することはできません - private: 非公開の投稿を固定することはできません reblog: ブーストを固定することはできません poll: total_people: @@ -1376,6 +1437,7 @@ ja: formats: default: "%Y年%m月%d日 %H:%M" month: "%Y年 %b" + time: "%H:%M" two_factor_authentication: add: 追加 disable: 無効化 @@ -1403,24 +1465,26 @@ ja: subject: ログイン試行を確認してください title: ログインを検出しました warning: + categories: + spam: スパム + violation: コンテンツは以下のコミュニティガイドラインに違反しています explanation: - disable: あなたのアカウントはログインが禁止され使用できなくなりました。しかしアカウントのデータはそのまま残っています。 - sensitive: あなたのアップロードしたメディアファイルとリンク先のメディアは、閲覧注意として扱われます。 - silence: あなたのアカウントは制限されましたがそのまま使用できます。ただし既にフォローしている人はあなたの投稿を見ることができますが、様々な公開タイムラインには表示されない場合があります。また他のユーザーは今後も手動であなたをフォローすることができます。 - suspend: あなたのアカウントは使用できなくなりプロフィールやその他データにアクセスできなくなりました。アカウントが完全に削除されるまではログインしてデータのエクスポートをリクエストできます。証拠隠滅を防ぐため一部のデータは削除されず残ります。 - get_in_touch: このメールに返信することで %{instance} のスタッフと連絡を取ることができます。 + delete_statuses: あなたの投稿のいくつかは、1つ以上のコミュニティガイドラインに違反していることが判明し、 %{instance} のモデレータによって削除されました。 今後の違反は、より厳しい処罰が行われる可能性があります。 + disable: アカウントは使用できませんが、プロフィールやその他のデータはそのまま残ります。 データのバックアップをリクエストしたり、アカウント設定を変更したり、アカウントを削除したりできます。 + sensitive: 今後、アップロードされたすべてのメディアファイルは閲覧注意してマークされ、クリックスルー警告の背後に隠されます。 + silence: アカウントが制限されています。このサーバーでは既にフォローしている人だけがあなたの投稿を見ることができます。 様々な発見機能から除外されるかもしれません。他の人があなたを手動でフォローすることは可能です。 + reason: '理由:' review_server_policies: サーバーのポリシーを確認 - statuses: '特に次の投稿:' subject: disable: あなたのアカウント %{acct} は凍結されました none: "%{acct} に対する警告" - sensitive: あなたのアカウント %{acct} の投稿メディアは閲覧注意とマークされました silence: あなたのアカウント %{acct} はサイレンスにされました suspend: あなたのアカウント %{acct} は停止されました title: + delete_statuses: 投稿が削除されました disable: アカウントが凍結されました none: 警告 - sensitive: あなたのメディアが閲覧注意とマークされました + sensitive: メディアが非表示にされました silence: アカウントがサイレンスにされました suspend: アカウントが停止されました welcome: diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 02f0986f4..782d57e2a 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -83,7 +83,6 @@ ka: memorialize: აქციე მემორანდუმად moderation: all: ყველა - silenced: გაჩუმებული suspended: შეჩერებული title: მოდერაცია moderation_notes: მოდერაციის ჩანაწერები @@ -298,14 +297,8 @@ ka: title: საიტის პარამეტრები statuses: back_to_account: უკან ანგარიშის გვერდისკენ - batch: - delete: გაუქმება - nsfw_off: მონიშნე არა-მგრძნობიარედ - nsfw_on: მონიშნე მგრძნობიარედ - failed_to_execute: ვერ გაეშვა media: title: მედია - no_media: არაა მედია no_status_selected: სატუსები არ შეცვლილა, რადგან არცერთი არ მონიშნულა title: ანგარიშის სტატუსები with_media: მედიით @@ -596,13 +589,11 @@ ka: disallowed_hashtags: one: 'მოიცავდა აკრძალულ ჰეშტეგს: %{tags}' other: 'მოიცავს აკრძალულ ჰეშტეგს: %{tags}' - language_detection: ავტომატურად დადგინდეს ენა open_in_web: ვებში გახნსა over_character_limit: ნიშნების ლიმიტი გადასცდა %{max}-ს pin_errors: limit: ტუტების მაქსიმალური რაოდენობა უკვე აპინეთ ownership: სხვისი ტუტი ვერ აიპინება - private: არა-საჯარო ტუტი ვერ აიპინება reblog: ბუსტი ვერ აიპინება show_more: მეტის ჩვენება sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 5f675127f..6b18ddbc3 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -80,7 +80,6 @@ kab: accounts: add_email_domain_block: Sewḥel taɣult n yimayl approve: Qbel - approve_all: Qbel kullec are_you_sure: Tetḥeqqeḍ? avatar: Tugna n umaɣnu by_domain: Taɣult @@ -94,6 +93,7 @@ kab: confirm: Sentem confirmed: Yettwasentem confirming: Asentem + custom: Udmawan delete: Kkes isefka deleted: Yettwakkes demote: Sider s weswir @@ -130,7 +130,6 @@ kab: active: Yermed all: Akk pending: Yettraǧu - silenced: Yettwasgugem suspended: Yeḥbes title: Aseɣyed moderation_notes: Tamawin n useɣyed @@ -147,7 +146,6 @@ kab: push_subscription_expires: Ajerred PuSH ad ifakk redownload: Smiren amaɣnu reject: Aggi - reject_all: Aggi-ten akk remove_avatar: Kkes tugna n umaɣnu remove_header: Kkes tacacit resend_confirmation: @@ -179,7 +177,6 @@ kab: statuses: Tisuffɣin subscribe: Jerred suspended: Yeḥbes - time_in_queue: Deg tebdert n uraju %{time} title: Imiḍanen unconfirmed_email: Imayl ur yettwasentem ara undo_silenced: Kkes asgugem @@ -310,9 +307,11 @@ kab: update_failed_msg: Ur izmir ara ad-issali umuji-a upload: Sali dashboard: + new_users: iseqdacen imaynuten software: Aseɣẓan space: Tallunt yettwasqedcen title: Tafelwit + website: Asmel domain_allows: add_new: Timerna n taɣult ɣer tabdert tamellalt created_msg: Taγult-a tettwarna γer wumuγ amellal mebla ugur @@ -408,8 +407,6 @@ kab: title: Rnu alugen n IP amaynut no_ip_block_selected: Ula yiwen n ulugen n IP ur yettwabeddel acku ula yiwen ur yettwafren title: Ilugan n IP - pending_accounts: - title: Imiḍanen yettrajun (%{count}) relationships: title: Assaɣen n %{acct} relays: @@ -428,9 +425,6 @@ kab: notes: one: "%{count} n tamawt" other: "%{count} n timawin" - reports: - one: "%{count} uneqqis" - other: "%{count} n ineqqisen" action_taken_by: Tigawt yettwaṭṭfen sɣur are_you_sure: Tetḥaq-eḍ? comment: @@ -481,22 +475,11 @@ kab: delete: Kkes afaylu yulin statuses: back_to_account: Tuγalin γer usebter n umiḍan - batch: - delete: Kkes deleted: Yettwakkes media: title: Taγwalt - no_media: Mebla taγwalt title: Tisuffiγin n umiḍan with_media: S taγwalt - tags: - last_active: Armud aneggaru - most_popular: Ittwasnen aṭas - most_recent: Melmi kan - name: Ahacṭag - reviewed: Yettwacegger - title: Ihacṭagen - unique_uses_today: "%{count} i d-yeffen ass-a" title: Tadbelt warning_presets: add_new: Rnu amaynut @@ -511,6 +494,7 @@ kab: guide_link_text: Yal yiwen·t y·tezmer a ttekki. sensitive_content: Agbur amḥulfu application_mailer: + salutation: "%{name}," view: 'Ẓaṛ:' view_profile: Ssken-d amaɣnu view_status: Ssken-d tasuffiɣt @@ -558,6 +542,7 @@ kab: date: formats: default: "%d %b %Y" + with_month_name: "%d %B %Y" datetime: distance_in_words: about_x_hours: "%{count}isr" @@ -625,13 +610,6 @@ kab: delete: Kkes order_by: Sizwer s save_changes: Sekles ibeddilen - identity_proofs: - active: Yermed - authorize: Ih, ssireg - i_am_html: Nekki d %{username} deg %{service}. - identity: Tamagit - inactive: D arurmid - publicize_checkbox: 'Tjewqeḍ aya:' imports: modes: merge: Smezdi @@ -697,6 +675,7 @@ kab: number: human: decimal_units: + format: "%n%u" units: billion: AṬ million: A @@ -801,7 +780,6 @@ kab: video: one: "%{count} n tbidyutt" other: "%{count} n tbidyutin" - language_detection: Asefru awurman n tutlayt open_in_web: Ldi deg Web poll: total_people: @@ -814,7 +792,9 @@ kab: show_more: Ssken-d ugar show_thread: Ssken-d lxiḍ sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni + title: '%{name} : "%{quote}"' visibilities: + direct: Usrid private: Imeḍfaṛen kan private_long: Ssken i ymeḍfaṛen kan public: Azayez @@ -838,6 +818,10 @@ kab: contrast: Maṣṭudun (agnil awriran) default: Maṣṭudun (Aberkan) mastodon-light: Maṣṭudun (Aceɛlal) + time: + formats: + default: "%d %b %Y, %H:%M" + month: "%b %Y" two_factor_authentication: add: Rnu disable: Gdel diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 1c4445ee9..0ea1d6a39 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -91,7 +91,6 @@ kk: destroyed_msg: Модерация жазбасы өшірілді! accounts: approve: Құптау - approve_all: Бәрін құптау are_you_sure: Шынымен бе? avatar: Аватар by_domain: Домен @@ -136,7 +135,6 @@ kk: active: Актив all: Барлығы pending: Күтуде - silenced: Үнсіз suspended: Тоқтатылды title: Модерация moderation_notes: Модерация жазбалары @@ -153,7 +151,6 @@ kk: push_subscription_expires: PuSH жазылу мерзімі аяқталады redownload: Профиль жаңарт reject: Қабылдамау - reject_all: Бәрін қабылдамау remove_avatar: Аватар өшіру remove_header: Мұқаба суретін өшір resend_confirmation: @@ -180,7 +177,6 @@ kk: statuses: Статустар subscribe: Жазылу suspended: Тоқтатылды - time_in_queue: "%{time} күту" title: Аккаунттар unconfirmed_email: Құпталмаған email undo_silenced: Үнсіздікті қайтып алу @@ -318,8 +314,6 @@ kk: expired: Уақыты өткен title: Фильтр title: Шақырулар - pending_accounts: - title: Күтілген аккаунттар (%{count}) relationships: title: "%{acct} байланыстары" relays: @@ -460,32 +454,14 @@ kk: destroyed_msg: Жүктелген файл сәтті өшірілді! statuses: back_to_account: Аккаунт бетіне оралы - batch: - delete: Delеte - nsfw_off: Сезімтал емес ретінде белгіле - nsfw_on: Сезімтал ретінде белгіле deleted: Өшірілді - failed_to_execute: Орындалмады media: title: Медиa - no_media: Медиасыз no_status_selected: Бірде-бір статус өзгерген жоқ, себебі ештеңе таңдалмады title: Аккаунт статустары with_media: Медиамен tags: - accounts_today: Бүгін қолданылғандар - accounts_week: Осы аптада қолданылғандар - breakdown: Бүгінгі пайдалану көздері бойынша бөлу - last_active: Соңғы белсенділік - most_popular: Ең танымал - most_recent: Ең соңғы - name: Хэштег review: Статусты көрсету - reviewed: Көрілген - title: Hashtаgs - trending_right_now: Бұгінгі трендте - unique_uses_today: "%{count} бүгін жазылған" - unreviewed: Қаралды updated_msg: Хэштег параметрлері сәтті жаңартылды title: Administrаtion warning_presets: @@ -501,9 +477,6 @@ kk: body: "%{reporter} has rеported %{target}" body_remote: Someone from %{domain} has rеported %{target} subject: New rеport for %{instance} (#%{id}) - new_trending_tag: - body: "#%{name} хэштегі бүгін тренд, бірақ бұрын қарастырылмаған. Егер сіз оған рұқсат бермесеңіз немесе ол туралы ешқашан естімейтін болсаңыз, ол көпшілікке көрсетілмейді." - subject: Жаңа хештег күтілуде %{instance} (#%{name}) aliases: add_new: Алиас қосу created_msg: Жаңа алиас сәтті жасалды. Енді сіз ескі аккаунттан көшіруді бастай аласыз. @@ -686,7 +659,6 @@ kk: all: Барлығы changes_saved_msg: Өзгерістер сәтті сақталды! copy: Көшіру - no_batch_actions_available: Бұл бетте ешқандай әрекет жоқ order_by: Сұрыптау save_changes: Өзгерістерді сақтау validation_errors: @@ -694,24 +666,6 @@ kk: other: Бір нәрсе дұрыс емес! Төмендегі %{count} қатені қараңыз html_validator: invalid_markup: 'жарамсыз HTML код: %{error}' - identity_proofs: - active: Актив - authorize: Иә, авторластырыңыз - authorize_connection_prompt: Осы криптографиялық қосылымға рұқсат бересіз бе? - errors: - failed: Криптографиялық байланыс сәтсіз аяқталды. %{provider} әрекетті қайталаңыз. - keybase: - invalid_token: Пернетақтаның таңбалауыштары қолтаңбалар болып табылады және олар 66 таңбадан тұруы керек - verification_failed: Keybase бұл белгіні Keybase пайдаланушысының %{kb_username} қолтаңбасы ретінде танымайды. Keybase-тен қайталап көріңіз. - wrong_user: "%{current} ретінде кірген кезде %{proving} үшін дәлелдер жасау мүмкін емес. %{proving} ретінде кіріп, әрекетті қайталаңыз." - explanation_html: Мұнда сіз өзіңіздің жеке басыңызды, мысалы, Keybase профилі сияқты криптографиялық түрде байланыстыра аласыз. Бұл сізге басқа адамдарға шифрланған хабарламаларды жіберуге және сіз жіберетін мазмұнға сенімді болуға мүмкіндік береді. - i_am_html: Мен %{username} атты қолданушымын - %{service}. - identity: Жеке бас куәлігі - inactive: Инактив - publicize_checkbox: 'Түрт мынаны:' - publicize_toot: 'Керемет! Мен енді %{username} болып тіркелдім %{service}: %{url}' - status: Тексеру күйі - view_proof: Пруф көрсету imports: modes: merge: Біріктіру @@ -930,7 +884,6 @@ kk: edit_profile: Профиль өңдеу export: Экспорт уақыты featured_tags: Таңдаулы хэштегтер - identity_proofs: Жеке куәлік import: Импорт import_and_export: Импорт/экспорт migrate: Аккаунт көшіру @@ -953,13 +906,11 @@ kk: disallowed_hashtags: one: 'рұқсат етілмеген хэштег: %{tags}' other: 'рұқсат етілмеген хэштегтер: %{tags}' - language_detection: Тілді өздігінен таңда open_in_web: Вебте ашу over_character_limit: "%{max} максимум таңбадан асып кетті" pin_errors: limit: Жабыстырылатын жазба саны максимумынан асты ownership: Біреудің жазбасы жабыстырылмайды - private: Жабық жазба жабыстырылмайды reblog: Бөлісілген жазба жабыстырылмайды poll: total_people: @@ -1087,13 +1038,7 @@ kk: subject: Мұрағатыңыз түсіріп алуға дайын title: Мұрағатты алу warning: - explanation: - disable: Аккаунтыңыз қатып қалса, сіздің деректеріңіз өзгеріссіз қалады, бірақ ол құлыптан босатылғанша ешқандай әрекетті орындай алмайсыз. - silence: While your account is limited, only people who are already following you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually follоw you. - suspend: Сіздің аккаунтыңыз уақытша тоқтатылды және сіздің барлық файлдарыңыз бен жүктеп салынған медиа файлдарыңыз осы серверлерден және оқырманы болған серверлерден қайтарылмайды. - get_in_touch: Сіз бұл электронды поштаға %{instance} қызметкерлерімен байланысу үшін жауап бере аласыз. review_server_policies: Сервер саясатын қарап шығыңыз - statuses: 'Арнайы:' subject: disable: Аккаунтыңыз %{acct} уақытша тоқтатылды none: "%{acct} ескертуі" diff --git a/config/locales/kmr.yml b/config/locales/kmr.yml index 5a275b4c9..22eaf7b95 100644 --- a/config/locales/kmr.yml +++ b/config/locales/kmr.yml @@ -21,7 +21,9 @@ kmr: federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên rajekar û li derveyî mastodonê bişopînî. get_apps: Sepaneke mobîl bicerbîne hosted_on: Mastodon li ser%{domain} tê hildanê - instance_actor_flash: Ev ajimêr aktorekî aşopî ye ji bo rajekar were temsîl kirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca federasyonê dixebite û divê ney asteng kirin heta ku te xwest hemû nimûneyan asteng bikî, di vir de ger tu blogek navper bikarbînî. + instance_actor_flash: 'Ev ajimêr aktorekî aşopî ye ji bo rajekar were temsîl kirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca federasyonê dixebite û divê ney asteng kirin heta ku te xwest hemû nimûneyan asteng bikî, di vir de ger tu blogek navper bikarbînî. + + ' learn_more: Bêtir fêr bibe privacy_policy: Polîtikaya nihêniyê rules: Rêbazên rajekar @@ -97,7 +99,6 @@ kmr: accounts: add_email_domain_block: Navparê e-nameyê asteng bike approve: Bipejirîne - approve_all: Hemûyan bipejirîne approved_msg: Tomarkirina %{username} bi awayekî serkeftî hate pejirandin are_you_sure: Ma tu bawerî? avatar: Wêne @@ -112,6 +113,7 @@ kmr: confirm: Bipejirîne confirmed: Hate pejirandin confirming: Tê pejirandin + custom: Kesanekirin delete: Daneyan jê bibe deleted: Hate jêbirin demote: Ast daxistin @@ -151,7 +153,6 @@ kmr: active: Çalak all: Hemû pending: Tê nirxandin - silenced: Sînorkirî suspended: Sekinandî title: Çavdêrî moderation_notes: Nîşeyên Rêvebirinê @@ -169,7 +170,6 @@ kmr: redownload: Profîl nûve bike redownloaded_msg: Bi serkeftî profîla %{username} ji kokê va hat nûve kirin reject: Nepejirîne - reject_all: Hemûyan red bike rejected_msg: Tomarkirina %{username} bi awayekî serkeftî nehate pejirandin remove_avatar: Avatarê rake remove_header: Sernavê rake @@ -204,12 +204,14 @@ kmr: silence: Sînor silenced: Bêdeng kirî statuses: Şandî + strikes: Lêdanên berê subscribe: Bibe kiryar 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î. - time_in_queue: Di dorê de sekinandin %{time} title: Ajimêr + unblock_email: Astengiyê li ser navnîşana e-nameyê rake + unblocked_email_msg: Bi serkeftî astengiya li ser navnîşana e-nameyê %{username} hate rakirin unconfirmed_email: E-nameya nepejirandî undo_sensitized: Hestiyariyê vegerîne undo_silenced: Sînorê vegerîne @@ -224,6 +226,7 @@ kmr: whitelisted: Ji bona yekbûyînê maf tê dayîn action_logs: action_types: + approve_user: Bikarhêner bipejirîne assigned_to_self_report: Ragihandinê diyar bike change_email_user: E-nameya bikarhêner biguherîne confirm_user: Bikarhêner bipejirîne @@ -241,6 +244,7 @@ kmr: destroy_domain_allow: Navperên mafdayî jê bibe destroy_domain_block: Navperên astengkirî jê bibe destroy_email_domain_block: Navperên e-nameyê yên astengkirî jê bibe + destroy_instance: Pakirina navperê destroy_ip_block: Tomara IPyê jêbibe destroy_status: Şandiyê jê bibe destroy_unavailable_domain: Navperên tuneyî jê bibe @@ -253,6 +257,7 @@ kmr: enable_user: Bikarhêner çalak bike memorialize_account: Ajimêrê bike bîranînek promote_user: Bikarhêner pêş bixe + reject_user: Bikarhêner nepejirîne remove_avatar_user: Avatarê rake reopen_report: Ragihandina ji nû ve veke reset_password_user: Pêborînê ji nû ve saz bike @@ -261,6 +266,7 @@ kmr: silence_account: Ajimêrê bi sînor bike suspend_account: Ajimêr rawestîne unassigned_report: Ragihandinê diyar neke + unblock_email_account: Astengiyê li ser navnîşana e-nameyê rake unsensitive_account: Medyayên di ajimêrê te de wek hestyarî nepejirîne unsilence_account: Ajimêra sînorkirî vegerîne unsuspend_account: Ajimêrê xwe ji rewestandinê rake @@ -269,6 +275,7 @@ kmr: update_domain_block: Navperên astengkirî rojane bike update_status: Şandiyê rojane bike actions: + 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" confirm_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} piştrast kir" @@ -276,43 +283,46 @@ kmr: create_announcement_html: "%{name} agahdarkirineke nû çêkir %{target}" create_custom_emoji_html: "%{name} emojîyeke nû ya %{target} bar kir" create_domain_allow_html: "%{name} bi navperê %{target} re maf da federeyê" - create_domain_block_html: "%{name} ji navperê %{target} asteng kir" - create_email_domain_block_html: "%{name} e-name ya navperê %{target} asteng kir" + create_domain_block_html: "%{name} navpera %{target} asteng kir" + create_email_domain_block_html: "%{name} e-nameya navperê %{target} asteng kir" create_ip_block_html: "%{name} ji bo IPya %{target} rêzikname saz kir" create_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê rawestand" demote_user_html: "%{name} bikarhênerê %{target} kaşê jêr kir" destroy_announcement_html: "%{name} daxûyaniyeke %{target} jê bir" destroy_custom_emoji_html: "%{name} emojiya %{target} tune kir" destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda federeyê" - destroy_domain_block_html: "%{name} navpera astengkirî %{target}" - destroy_email_domain_block_html: "%{name} e-name yê navpera %{target} asteng kirinê rakir" + destroy_domain_block_html: "%{name} navpera %{target} asteng kir" + destroy_email_domain_block_html: "%{name} astengiya li ser navpera e-nameyê %{target} rakir" + destroy_instance_html: "%{name} navpera %{target} asteng kir" destroy_ip_block_html: "%{name}, ji bo IPya %{target} rêziknameyê jêbir" destroy_status_html: "%{name} ji alîyê %{target} ve şandiyê rakir" destroy_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê berdewam kir" disable_2fa_user_html: "%{name} ji bo bikarhênerê %{target} du faktorî neçalak kir" disable_custom_emoji_html: "%{name} emojiya %{target} neçalak kir" - disable_sign_in_token_auth_user_html: "%{name} ji bo %{target} biştraskirina e-name ya token ne çalak kir" - disable_user_html: "%{name}, ji bo bikarhênerê %{target} têketinê neçalak kir" + disable_sign_in_token_auth_user_html: "%{name} ji bo %{target} nîşana mafdayîna e-nameya ne çalak kir" + disable_user_html: "%{name} ji bo bikarhêner %{target} têketin neçalak kir" enable_custom_emoji_html: "%{name} emojiya %{target} çalak kir" - enable_sign_in_token_auth_user_html: "%{name} ji bo %{target} biştraskirina e-name ya token çalak kir" - enable_user_html: "%{name}, ji bo bikarhênerê %{target} têketinê çalak kir" + enable_sign_in_token_auth_user_html: "%{name} ji bo %{target} nîşana mafdayîna e-nameyê çalak kir" + 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" + promote_user_html: "%{name} bikarhêner %{target} bilind kir" + reject_user_html: "%{name} tomarkirina ji %{target} nepejirand" remove_avatar_user_html: "%{name} avatara bikarhêner %{target} rakir" - reopen_report_html: "%{name} gilîyê %{target} ji nû ve vekir" - reset_password_user_html: "%{name} şifre ya bikarhênerê %{target} ji nû ve saz kir" - resolve_report_html: "%{name} gilîya %{target} çareser kir" - sensitive_account_html: "%{name} medyayê %{target} ê wek hestiyarî nîşan kir" - silence_account_html: "%{name} ajimêrê %{target} ê sînor kir" - suspend_account_html: "%{name} ajimêrê %{target} ê hilda rawestandinê" - unassigned_report_html: "%{name} gilîkirina %{target} rakir" - unsensitive_account_html: "%{name} medyayê %{target} ê nîşandana hestiyarî rakir" - unsilence_account_html: "%{name} bêdengiya ajimêrê %{target} ê rakir" - unsuspend_account_html: "%{name} ajimêrê %{target} ê de rawestandinê rakir" - update_announcement_html: "%{name} agahdarî ya%{target} rojane kir" - update_custom_emoji_html: "%{name} emojiyê %{target} rojane kir" - update_domain_block_html: "%{name} ji bo navperê %{target} asteng kirinê rojane kir" - update_status_html: "%{name} şandiya bikarhêner %{target} rojanekir" + reopen_report_html: "%{name} ragihandina %{target} ji nû ve vekir" + reset_password_user_html: "%{name} pêborîna bikarhênerê %{target} ji nû ve saz kir" + resolve_report_html: "%{name} ragihandina %{target} çareser kir" + sensitive_account_html: "%{name} medyayê %{target} wekî hestiyarî nîşan kir" + silence_account_html: "%{name} ajimêra %{target} bi sînor kir" + suspend_account_html: "%{name} ajimêra %{target} hilda rawestandinê" + unassigned_report_html: "%{name} ragihandina %{target} rakir" + unblock_email_account_html: "%{name} navnîşana e-nameyê %{target} asteng kir" + unsensitive_account_html: "%{name} medyayê %{target} nîşandana wek hestiyarî rakir" + unsilence_account_html: "%{name} bêdengiya ajimêrê %{target} rakir" + unsuspend_account_html: "%{name} rawestandina ajimêrê %{target} rakir" + update_announcement_html: "%{name} daxûyaniya %{target} rojane kir" + update_custom_emoji_html: "%{name} emojiya %{target} rojane kir" + update_domain_block_html: "%{name} ji bo navpera %{target} astengkirin rojane kir" + update_status_html: "%{name} şandiya bikarhêner %{target} rojane kir" deleted_status: "(şandiyeke jêbirî)" empty: Tomarkirin nehate dîtin. filter_by_action: Li gorî çalakiyê biparzinîne @@ -465,6 +475,7 @@ kmr: back_to_limited: Sînorkirî back_to_warning: Hişyarî by_domain: Navper + confirm_purge: Ma tu dixwazî ku bi awayekî domdar daneyan ji vê navparê jê bibî? delivery: all: Hemû clear: Çewtiyên gihandinê paqij bike @@ -480,6 +491,7 @@ kmr: delivery_available: Gihandin berdest e delivery_error_days: Rojên çewtiyên gehandinê delivery_error_hint: Ger gehandin %{count} rojan ne pêkan be ewê wek bixweber wê nayê gehandin were nîşandan. + destroyed_msg: Daneyên %{domain} niha ji bo jêbirina nêzîk di rêzê de ne. empty: Tu navper nehatine dîtin. known_accounts: one: "%{count} ajimêra naskirî" @@ -490,6 +502,7 @@ kmr: title: Çavdêrî private_comment: Şîroveya taybet public_comment: Şîroveya ji hemû kesî re vekirî + purge: Pak bike title: Giştî total_blocked_by_us: Ji aliyê me ve hatiye astengkirin total_followed_by_them: Ji aliyê wan ve hatiye şopandin @@ -519,8 +532,6 @@ kmr: title: Rêzika nû a IPyê çêbike no_ip_block_selected: Ji ber ku tu ajimêr nehat hilbijartin tu rêzika IPyê nehate guhertin title: Rêbazên IP - pending_accounts: - title: Ajimêrên di dorê de ne (%{count}) relationships: title: Têkiliyên %{acct} relays: @@ -542,32 +553,44 @@ kmr: report_notes: created_msg: Nîşeyê ragihandinê bi awayekî serkeftî pêk hat! destroyed_msg: Nîşeyê ragihandinê bi awayekî serkeftî hate jêbirin! + today_at: Îro di %{time} de reports: account: notes: one: "%{count} nîşe" other: "%{count} nîşe" - reports: - one: "%{count} gilî" - other: "%{count} gilî" + action_log: Tomarê çavdêriyê action_taken_by: Çalakî hate kirin ji aliyê + actions: + 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. + 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:' + add_to_report: Bo ragihandinê bêtir tevlî bike are_you_sure: Gelo tu bawerî? assign_to_self: Bo min diyar bike assigned: Çavdêrê diyarkirî by_target_domain: Navperê ya ajimêrê ragihandî + category: Beş + category_description_html: Sedema ku ev ajimêr û/an jî naverok hate ragihandin wê di pêwendiya bi ajimêrê ragihandinê de werê diyarkirin comment: 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 forwarded: Beralîkirî forwarded_to: Beralîkirî bo %{domain} mark_as_resolved: Wekî çareserkirî nîşan bide mark_as_unresolved: Wekî neçareserkirî nîşan bide + no_one_assigned: Ne yek notes: create: Nîşe tevlî bike create_and_resolve: Bi nîşe re çareser bike create_and_unresolve: Bi nîşe re dîsa veke delete: Jê bibe 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 reopen: Ragihandina ji nû ve veke report: "@%{id} Ragihîne" reported_account: Ajimêra ragihandî @@ -575,11 +598,14 @@ kmr: resolved: Çareserkirî resolved_msg: Ragihandin bi awayekî serkeftî hate çareserkirin! status: Rewş + statuses: Naveroka ragihandî + statuses_description_html: Naveroka sûcdar wê di danûstendina bi xwediyê ajimêra ragihandî re wê werê diyarkirin target_origin: Jêdera ajimêrê ragihandî title: Ragihandinên unassign: Diyar neke unresolved: Neçareserkirî updated_at: Rojanekirî + view_profile: Profîlê nîşan bide rules: add_new: Rêbazekê tevlî bike delete: Jê bibe @@ -681,15 +707,13 @@ kmr: destroyed_msg: Barkirina malperê bi serkeftî hate jêbirin! statuses: back_to_account: Vegere bo rûpela ajimêr + back_to_report: Vegere rûpela ragihandinê batch: - delete: Jê bibe - nsfw_off: Wekî ne hestiyar nîşan bide - nsfw_on: Wekî hestiyar nîşan bide + remove_from_report: Ji ragihandinê rake + report: Ragihîne deleted: Hate jêbirin - failed_to_execute: Bi ser neket media: title: Medya - no_media: Medya nîne 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 @@ -702,21 +726,51 @@ kmr: sidekiq_process_check: message_html: Pêvajoyên Sidekiq ên heyî ji bo %{value} di rêz (an) de tune ne. Ji kerema xwe sazkariyên Sidekiq a xwe binirxîne tags: - accounts_today: Bikaranînên bêhempa yên îro - accounts_week: Bikaranînên bêhempa yên vê heftê - breakdown: Dabeşkirina bikaranîn yên îro li gorî çavkaniyan ve - last_active: Çalakiyên dawî - most_popular: Herî navdar - most_recent: Çalakiyên herî nû - name: Hashtag review: Binêre rewşê - reviewed: Hate vekolandin - title: Hashtag - trending_right_now: Niha di rojevê de - unique_uses_today: "%{count} şandiyên îro" - unreviewed: Nehatiye nirxandin updated_msg: Sazkariyên hashtag bi awayekî serkeftî hate rojanekirin title: Rêvebirî + trends: + allow: Bihêle + approved: Pejirandî + disallow: Nehêle + links: + allow: Mafê bide girêdanê + allow_provider: Mafê bide weşanger + disallow: Mafê nede girêdanê + 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 + title: Girêdanên di rojevê de + usage_comparison: Îro %{today} car hate parvekirin, li gorî %{yesterday} duh + pending_review: Li benda nirxandinê ye + preview_card_providers: + allowed: Girêdanên ji vê weşangerê dikarin bibin rojev + rejected: Girêdanên ji vê weşangerê nikarin bibin rojev + title: Weşanger + rejected: Nepejirand + tags: + current_score: Encama niha %{score} + dashboard: + tag_accounts_measure: bikaranînên bêhempa + tag_languages_dimension: Zimanên pir tên bikaranîn + tag_servers_dimension: Rajekarên pir tên bikaranîn + tag_servers_measure: rajekarên cuda + tag_uses_measure: bikaranîna giştî + listable: Dikare were pêşniyarkirin + not_listable: Nikare wer pêşniyarkirin + not_trendable: Wê di bin rojevan de xuya neke + not_usable: Nikare were bikaranîn + peaked_on_and_decaying: Di %{date} de derketiye asta herî bilind, û niha winda dibe + title: Hashtagên rojevê + trendable: Dikare di bin rojevan de xuya bibe + trending_rank: 'Rojev #%{rank}' + usable: Dikare were bikaranîn + usage_comparison: "%{today} car îro hate bikaranîn, li gorî %{yesterday} duh" + 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 + title: Rojev warning_presets: add_new: Yeka nû tevlî bike delete: Jê bibe @@ -731,9 +785,16 @@ kmr: body: "%{reporter} ji %{target} ê ragihand" body_remote: Kesekî bi navê %{domain} ji %{target} ê ragihand subject: Ragihandinek nû ji bo %{instance} (#%{id}) - new_trending_tag: - body: 'Hashtaga #%{name} îro rojev e, lê berê nehatibû nirxandin. Heya ku tu mafê nedît, ew ê bi gelemperî neyê xuyang kirin, an jî tenê formê tomar bike ku ew e ku tu careke din li ser wê tiştekî nebîne.' - subject: "(#%{name}) Hashtagek nû ji bo vekolandina li ser%{instance}" + new_trending_links: + body: Girêdanên li jêr îro rojev in, lê weşangerên wan berê nehatine nirxandin. Heya ku tu wan nepejirînî ew dê bi awayekî giştî neyên nîşandan. Ji heman weşangeran agahdarîyên bêtir nayên çêkirin. + no_approved_links: Niha tu girêdanên rojeva pejirandî tune ne. + requirements: Girêdanên rojevê ya herî kêm pejirandî niha "%{lowest_link_title}" e bi rêjeyek %{lowest_link_score}. + subject: Girêdanên rojevê yên nû ji bo nirxandinê li ser %{instance} derdikevin + new_trending_tags: + body: 'Hashtagên li jêr îro trojev in, lê ew berê nehatine nirxandin. Heya ku tu wan nepejirînî, ew dê bi awayekî gelemperî neyên nîşandan:' + no_approved_tags: Niha hashtagên rojevê pejirandî tune ne. + requirements: 'Hashtagên rojevê ya herî kêm pejirandî niha #%{lowest_tag_name} e bi rêjeyek %{lowest_tag_score}.' + subject: Hashtagên rojevê yên nû ji bo nirxandinê li ser %{instance} derdikevin aliases: add_new: Naveke sexte çê bike created_msg: Bi serkeftî nûçikê nû hat çêkirin. Tu niha dikarî di ajimêrê xwe kevn bar bikî. @@ -785,6 +846,7 @@ kmr: invalid_reset_password_token: Ji nû ve sazkirina pêborînê nederbasdar e an jî qediya ye. Jkx daxwaza yeka nû bike. link_to_otp: Ji têlefona xwe an jî ji kodeke rizgarkirinê kodeke du-gavî binivîsine link_to_webauth: Amûra kilîta ewlehiya xwe bi kar bîne + log_in_with: Têkeve bi riya login: Têkeve logout: Derkeve migrate_account: Derbasî ajimêreke din bibe @@ -894,7 +956,7 @@ kmr: not_found_multiple: "%{usernames} nehat dîtin" exports: archive_takeout: - date: Dem + date: Dîrok download: Arşîva xwe daxîne hint_html: Tu dikarî arşîvek ji <strong> weşanên xwe û medyayên barkirî </strong> re bixwaze. Daneyên derxistî dê di forma ActivityPub de bin, ku ji hêla nermalava ku vê formê ve têne xwendin. Tu dikarî her 7 rojan arşîvekê bixwaze. in_progress: Arşîve te tê berhev kirin... @@ -940,34 +1002,15 @@ kmr: changes_saved_msg: Guhertin bi serkeftî tomar bû! copy: Jê bigire delete: Jê bibe - no_batch_actions_available: Di vê rûpelê da tu çalakîyên tevahî tune ne + none: Ne yek order_by: Rêz bike bi save_changes: Guhertinan tomar bike + today: îro validation_errors: one: Tiştek hîn ne rast e! Ji kerema xwe çewtiya li jêr di ber çavan re derbas bike other: Tiştek hîn ne rast e! Ji kerema xwe %{count} çewtî li jêr di ber çavan re derbas bike html_validator: invalid_markup: 'di nav de nîşana HTML a nederbasdar heye: %{error}' - identity_proofs: - active: Çalak - authorize: Erê, bide rastandin - authorize_connection_prompt: Tu dixwazî ev girêdana şîfrekirinê bidî rastandin? - errors: - failed: Girêdana şîfrekirinê têk çû. Ji kerema xwe dîsa biceribîne ji%{provider}. - keybase: - invalid_token: Nîşanên Keybase beşek ji îmzeyan in û divê 66 tîpên hex bin - verification_failed: Keybase vê wekî îmzeya bikarhênerê %{kb_username} nas nake. Ji kerema xwe ji Keybase dîsa biceribîne. - wrong_user: Dema ku wekî %{current} têketin dikî, ji bo %{proving} delîl nayê çêkirin. Wekî %{proving} têkeve û dîsa biceribîne. - explanation_html: Li vir tu dikarî nasnameyên xwe yên din ji platformên din, wek Keybase, bi şîfrekî ve girê bidî. Ev dihêle mirovên din ji te re peyamên şîfrekirî li ser wan platforman bişînin û dihêle ew pê bawer bin ku naveroka ku tu ji wan re dişînin ji te tê. - i_am_html: Ez %{username} li ser %{service}. - identity: Nasname - inactive: Neçalak e - publicize_checkbox: 'Û vê toot bike:' - publicize_toot: 'Hat eşkerekirin! Ez %{username} li ser %{service}: %{url}' - remove: Di ajimêrê de delîla rabike - removed: Delîl di ajimêrê de bi serkeftî hat rakirin - status: Piştrastkirina rewşê - view_proof: Delîlan nîşan bike imports: errors: over_rows_processing_limit: ji %{count} zêdetir rêzok hene @@ -1179,10 +1222,13 @@ kmr: prompt: 'Tu dixwazî vê şandiyê bibijêrî:' reblog: proceed: Bo bilindkirinê bidomîne - prompt: 'Tu dixwazî vê şandî ye rabikî:' + prompt: 'Tu dixwazî vê şandî ye bilind bikî:' reply: proceed: Bersivandinê bidomîne prompt: 'Tu dixwazî bersiva vê şandiyê bidî:' + reports: + errors: + invalid_rules: rêbazên derbasdar nîşan nadê scheduled_statuses: over_daily_limit: Te sînorê %{limit} şandiyên demsazkirî yên ji bo îro derbas kir over_total_limit: Te sînorê %{limit} şandiyên demsazkirî derbas kir @@ -1241,7 +1287,6 @@ kmr: edit_profile: Profîlê serrast bike export: Derxistinê daneyan featured_tags: Hashtagên bijarte - identity_proofs: Delîlên nasnameyê import: Têxistin import_and_export: Têxistin û derxistin migrate: Barkirina ajimêrê @@ -1266,18 +1311,19 @@ kmr: other: "%{count} vîdyo" boosted_from_html: Bilindkirî ji alî %{acct_link} ve content_warning: 'Hişyariya naverokê: %{warning}' + default_language: Wekî zimanê navrûya bikarhêneriyê disallowed_hashtags: one: 'hashtagek bê maf tê de hebû: %{tags}' other: 'hashtagek bê maf tê de hebû: %{tags}' + edited_at: Di %{date} de hate serrastkirin errors: in_reply_not_found: Ew şandiya ku tu dikî nakî bersivê bide xuya nake an jî hatiye jêbirin. - language_detection: Bi xweberî ziman nas bike open_in_web: Di tevnê de veke over_character_limit: sînorê karakterê %{max} derbas kir pin_errors: + direct: Şandiyên ku tenê ji bikarhênerên qalkirî re têne xuyangkirin, nayê derzîkirin limit: Jixwe te mezintirîn hejmara şandîyên xwe derzî kir ownership: Şandiya kesekî din nay derzî kirin - private: Şandiyên negelemperî nayên daliqandin reblog: Ev şandî nayê derzî kirin poll: total_people: @@ -1307,7 +1353,7 @@ kmr: exceptions: Awarte explanation: Ji ber ku jêbirina şandiyan pêvajoyeke biha ye, ev hêdî hêdî bi demê re tê kirin dema ku rajekar wekî din mijûl nebe. Ji ber vê sedemê, dibe ku şandiyên te demek şûnda ku bigihîjin sînorê temenê wê werin jêbirin. ignore_favs: Ecibandinan paşguh bike - ignore_reblogs: Rakirina piştguh bike + ignore_reblogs: Bilindkirinê piştguh bike interaction_exceptions: Awarteyên li ser bingehên têkiliyan interaction_exceptions_explanation: Bizanibe ku heke şandiyeke ku ji binî ve têkeve jêrî bijare an bilindkirin ê piştî ku carek din di ser wan re derbas bibe, garantiyek tune ku werin jêbirin. keep_direct: Peyamên rasterast veşêre @@ -1333,7 +1379,7 @@ kmr: min_age_label: Şêmûga demê min_favs: Peyamên ku ji wê zêdetir hatine ecibandin veşêre min_favs_hint: Şandî ku ji evqas hezkirin wergirtibe nayê jêbirin. Vala bihêle da ku şandiyan jê bibî tevlî ku çiqas hezkirin wergirtibe - min_reblogs: Şandiyên ku zêdetir hatine rakirin veşêre + min_reblogs: Şandiyên ku bêtir hatine bilindkirin veşêre min_reblogs_hint: Şandî ku ji ji vê hejmarê bêtir bilindkirin wergirtibe nayê jêbirin. Vala bihêle da ku şandiyan jê bibî tevlî ku çiqas hezkirin wergirtibe stream_entries: pinned: Şandiya derzîkirî @@ -1432,6 +1478,7 @@ kmr: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Tevlî bike disable: 2FA neçalak bike @@ -1459,24 +1506,31 @@ kmr: subject: Ji kerema xwe re hewldanên têketinê piştrast bike title: Hewldanên têketinê warning: + categories: + spam: Nexwestî (Spam) + violation: Naverok rêbazên civakê yên jêrîn binpê dike explanation: - disable: Tu êdî nikarî têkevî ajimêra xwe an wê bi rengeke din bi kar bînî, lê profîla te û daneyên din saxlem dimînin. - sensitive: Pelên te yê medyayê a barkirî û girêdanên te yên medyayê wek hestiyarî wê bihê nirxandin. - silence: Gava ajimêra te sînorkirî be dîsa jî tu dikarî ajimêra xwe bi kar bînî lê tenê kesên ku berê te dişopînin dê şandiyên te li ser vê rajekarê bibînin, û dibe ku tu ji navnîşên cihêreng ên gelemperî bêne awaretkirin. Lêbelê, dibe ku yên din hîn te bişopînin bi destan. - 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, lê em ê hin daneyan biparêzin da ku tu ji rawestandinê rizgar bikin. - get_in_touch: Ji bo bi xebatkarên %{instance} têkilî deynî tu dikarî vê e-nameyê bibersivînî. + delete_statuses: Hate dîtin ku hinek nivîsên te yek an çend rêbazên civakê binpê dikin û dû re ji hêla çavdêran %{instance} ve hatine rakirin. Binpêkirinên di pêşerojê dibe ku li dijî ajimêra te bibe sedema kiryarên cezayê tundtir. + disable: Tu êdî nikarî ajimêra xwe bi kar bînî, lê profîla te û daneyên din bê ziyan dimînin. Tu dikarî ji daneyên xwe hilanînê bixwazî, sazkariyên ajimêrê biguherîmî an jî ajimêrê xwe jê bibî. + sensitive: Ji niha û pê ve, hemû pelên te yên medyayê yên hatine barkirin wê li piştî hişyariyek wekî hestyar û veşartî bêne nîşankirin. + silence: Tu hîn jî dikarî ajimêra xwe bi kar bînî lê tenê kesên ku jixwe te dişopînin wê şandiyên te li ser vê rajekarê bibînin, û dibe ku tu ji cûrbecûr taybetmendiyên vedîtinê werî bi dûrxistin. Lêbelê, yên din hîn jî dikarin bi destan te bişopînin. + 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: 'Bi taybetî, ji bo wê:' + statuses: 'Şandiyên ku di binpêkirinê de hatine dîtin:' subject: + delete_statuses: Şandiyên te yên li ser %{acct} hatin rakirin disable: Ajimêra te a %{acct} hat qerisandin none: Hişyarî bo %{acct} - sensitive: Ajimêra te %{acct} medyaya ku wek hestyar hatiye nîşandin weşandiye + sensitive: Pelên te yên medyayê yên li ser %{acct} wê ji niha û pê ve wekî hestyar bêne nîşankirin silence: Ajimêra te ya %{acct} hate bisînorkirin suspend: Ajimêra te %{acct} hate rawestandin title: + delete_statuses: Şandî hatin rakirin disable: Ajimêr hate qerisandin none: Hişyarî - sensitive: Medyayê te wekî hestyar hate nîşandan + sensitive: Medya veşartî ye silence: Ajimêr sînor kiriye suspend: Ajimêr hatiye rawestandin welcome: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index c9d5238ee..4da68f0b4 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -95,7 +95,6 @@ ko: accounts: add_email_domain_block: 이 이메일 도메인을 차단하기 approve: 승인 - approve_all: 모두 승인 approved_msg: 성공적으로 %{username}의 가입 신청서를 승인했습니다 are_you_sure: 정말로 실행하시겠습니까? avatar: 아바타 @@ -110,6 +109,7 @@ ko: confirm: 확인 confirmed: 확인됨 confirming: 확인 중 + custom: 사용자 지정 delete: 데이터 삭제 deleted: 삭제됨 demote: 강등 @@ -127,8 +127,8 @@ ko: enable_sign_in_token_auth: 이메일 토큰 인증 활성화 enabled: 활성 enabled_msg: "%{username}의 계정을 성공적으로 얼리기 해제하였습니다" - followers: 팔로워 수 - follows: 팔로잉 수 + followers: 팔로워 + follows: 팔로잉 header: 헤더 inbox_url: 수신함 URL invite_request_text: 가입 하려는 이유 @@ -149,7 +149,6 @@ ko: active: 활동 all: 전체 pending: 대기중 - silenced: 침묵 중 suspended: 정지 중 title: 중재 moderation_notes: 중재 기록 @@ -167,7 +166,6 @@ ko: redownload: 프로필 업데이트 redownloaded_msg: 성공적으로 %{username}의 프로필을 원본으로부터 업데이트 하였습니다 reject: 거부 - reject_all: 모두 거부 rejected_msg: 성공적으로 %{username}의 가입 신청서를 반려하였습니다 remove_avatar: 아바타 지우기 remove_header: 헤더 삭제 @@ -202,12 +200,14 @@ ko: silence: 침묵 silenced: 침묵 됨 statuses: 게시물 + strikes: 이전의 처벌들 subscribe: 구독하기 suspended: 정지 됨 suspension_irreversible: 이 계정의 데이터는 복구할 수 없도록 삭제되었습니다. 계정을 정지 해제함으로서 계정을 다시 사용 가능하게 할 수 있지만 이전에 삭제한 어떤 데이터도 복구되지 않습니다. suspension_reversible_hint_html: 계정이 정지되었습니다, 그리고 %{date}에 데이터가 완전히 삭제될 것입니다. 그 때까지는 어떤 안 좋은 효과 없이 계정이 복구 될 수 있습니다. 만약 지금 당장 계정의 모든 데이터를 삭제하고 싶다면, 아래에서 행할 수 있습니다. - time_in_queue: "%{time}동안 기다림" title: 계정 + unblock_email: 이메일 주소 차단 해제 + unblocked_email_msg: "%{username}의 이메일 주소를 성공적으로 차단 해제했습니다" unconfirmed_email: 미확인 된 이메일 주소 undo_sensitized: 민감함으로 설정 취소 undo_silenced: 침묵 해제 @@ -222,6 +222,7 @@ ko: whitelisted: 허용 목록 action_logs: action_types: + approve_user: 사용자 승인 assigned_to_self_report: 신고 맡기 change_email_user: 사용자의 이메일 변경 confirm_user: 사용자 확인 @@ -239,6 +240,7 @@ ko: destroy_domain_allow: 도메인 허용 삭제 destroy_domain_block: 도메인 차단 삭제 destroy_email_domain_block: 이메일 도메인 차단 삭제 + destroy_instance: 도메인 제거 destroy_ip_block: IP 규칙 삭제 destroy_status: 게시물 삭제 destroy_unavailable_domain: 사용 불가능한 도메인 제거 @@ -251,6 +253,7 @@ ko: enable_user: 사용자 활성화 memorialize_account: 추모계정으로 전환 promote_user: 사용자 승급 + reject_user: 사용자 거부 remove_avatar_user: 아바타 지우기 reopen_report: 신고 다시 열기 reset_password_user: 암호 재설정 @@ -259,6 +262,7 @@ ko: silence_account: 계정 침묵 suspend_account: 계정 정지 unassigned_report: 신고 맡기 취소 + unblock_email_account: 이메일 주소 차단 해제 unsensitive_account: 당신의 계정의 미디어를 민감함으로 표시하지 않음 unsilence_account: 계정 침묵 취소 unsuspend_account: 계정 정지 취소 @@ -267,6 +271,7 @@ ko: update_domain_block: 도메인 차단 갱신 update_status: 게시물 게시 actions: + approve_user_html: "%{name} 님이 %{target}의 가입을 승인했습니다" assigned_to_self_report_html: "%{name} 님이 신고 %{target}을 자신에게 할당했습니다" change_email_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 변경했습니다" confirm_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 승인했습니다" @@ -284,6 +289,7 @@ ko: destroy_domain_allow_html: "%{name} 님이 %{target} 도메인과의 연합을 금지했습니다" destroy_domain_block_html: "%{name} 님이 도메인 %{target}의 차단을 해제했습니다" destroy_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}을 차단 해제하였습니다" + destroy_instance_html: "%{name} 님이 도메인 %{target}를 제거했습니다" destroy_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 삭제하였습니다" destroy_status_html: "%{name} 님이 %{target}의 게시물을 삭제했습니다" destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개" @@ -296,6 +302,7 @@ ko: enable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 활성화 했습니다" memorialize_account_html: "%{name} 님이 %{target}의 계정을 추모비 페이지로 전환했습니다" promote_user_html: "%{name} 님이 사용자 %{target}를 승급시켰습니다" + reject_user_html: "%{name} 님이 %{target}의 가입을 거부했습니다" remove_avatar_user_html: "%{name} 님이 %{target}의 아바타를 지웠습니다" reopen_report_html: "%{name} 님이 신고 %{target}을 다시 열었습니다" reset_password_user_html: "%{name} 님이 사용자 %{target}의 암호를 초기화했습니다" @@ -304,6 +311,7 @@ ko: silence_account_html: "%{name} 님이 %{target}의 계정을 침묵시켰습니다" suspend_account_html: "%{name} 님이 %{target}의 계정을 정지시켰습니다" unassigned_report_html: "%{name} 님이 신고 %{target}을 할당 해제했습니다" + unblock_email_account_html: "%{name} 님이 %{target}의 이메일 주소를 차단 해제했습니다." unsensitive_account_html: "%{name} 님이 %{target}의 미디어를 민감하지 않음으로 표시했습니다" unsilence_account_html: "%{name} 님이 %{target}의 계정에 대한 침묵을 해제했습니다" unsuspend_account_html: "%{name} 님이 %{target}의 계정에 대한 정지를 해제했습니다" @@ -367,9 +375,25 @@ ko: updated_msg: 에모지가 성공적으로 업데이트 되었습니다! upload: 업로드 dashboard: + active_users: 활성 사용자 + interactions: 상호 작용 + media_storage: 미디어 저장소 + new_users: 새로운 사용자 + opened_reports: 신고 열림 + pending_reports_html: + other: "<strong>%{count}</strong> 개의 신고 대기중" + pending_tags_html: + other: "<strong>%{count}</strong> 개의 해시태그 대기중" + pending_users_html: + other: "<strong>%{count}</strong> 명의 사용자 대기중" + resolved_reports: 신고 해결됨 software: 소프트웨어 + sources: 가입 출처 space: 디스크 사용량 title: 대시보드 + top_languages: 상위 활성 언어 + top_servers: 상위 활성 서버 + website: 웹사이트 domain_allows: add_new: 도메인 허용 created_msg: 도메인이 성공적으로 허용 목록에 추가되었습니다 @@ -443,6 +467,7 @@ ko: back_to_limited: 제한됨 back_to_warning: 경고 by_domain: 도메인 + confirm_purge: 정말로 이 도메인의 데이터를 영구적으로 삭제하길 원하십니까? delivery: all: 전체 clear: 전달 에러 초기화 @@ -457,6 +482,7 @@ ko: delivery_available: 전송 가능 delivery_error_days: 전달 에러가 난 날짜들 delivery_error_hint: 만약 %{count}일동안 전달이 불가능하다면, 자동으로 전달불가로 표시됩니다. + destroyed_msg: "%{domain}의 데이터는 곧바로 지워지도록 대기열에 들어갔습니다." empty: 도메인이 하나도 없습니다. known_accounts: other: 알려진 계정 %{count}개 @@ -466,6 +492,7 @@ ko: title: 중재 private_comment: 비공개 주석 public_comment: 공개 주석 + purge: 제거 title: 연합 total_blocked_by_us: 우리에게 차단 됨 total_followed_by_them: 우리를 팔로우 @@ -495,8 +522,6 @@ ko: title: 새 IP 규칙 만들기 no_ip_block_selected: 아무 것도 선택 되지 않아 어떤 IP 규칙도 변경 되지 않았습니다 title: IP 규칙들 - pending_accounts: - title: 대기중인 계정 (%{count}) relationships: title: "%{acct}의 관계" relays: @@ -518,30 +543,43 @@ ko: report_notes: created_msg: 리포트 노트가 성공적으로 작성되었습니다! destroyed_msg: 리포트 노트가 성공적으로 삭제되었습니다! + today_at: 오늘 %{time} reports: account: notes: other: "%{count}개의 기록" - reports: - other: "%{count}개의 신고" + action_log: 감사 기록 action_taken_by: 신고 처리자 + actions: + other_description_html: 계정 동작을 제어하고 신고된 계정과의 의사소통을 사용자 지정하기 위한 추가 옵션을 봅니다. + silence_description_html: 이미 팔로우 하고 있는 사람이나 수동으로 찾아보는 사람에게만 프로필이 보여지고, 도달 범위를 엄격하게 제한합니다. 언제든지 되돌릴 수 있습니다. + suspend_description_html: 프로필과 모든 컨텐츠가 최종적으로 삭제될 때까지 접근 불가상태가 됩니다. 이 계정과의 상호작용은 불가능해집니다. 30일 이내에 되돌릴 수 있습니다. + actions_description_html: '만약 문제가 되는 위의 컨텐츠를 삭제하는 것을 불충분할 때에는:' + add_to_report: 신고에 더 추가하기 are_you_sure: 정말로 실행하시겠습니까? assign_to_self: 나에게 할당하기 assigned: 할당 된 중재자 by_target_domain: 신고된 계정의 도메인 + category: 카테고리 + category_description_html: 이 계정 또는 게시물이 신고된 이유는 신고된 계정과의 의사소통 과정에 인용됩니다 comment: none: 없음 + comment_description_html: '더 많은 정보를 위해, %{name} 님이 작성했습니다:' created_at: 리포트 시각 + delete_and_resolve: 삭제하고 처리됨으로 변경 forwarded: 전달됨 forwarded_to: "%{domain}에게 전달됨" mark_as_resolved: 해결 완료 처리 mark_as_unresolved: 미해결로 표시 + no_one_assigned: 아무도 없음 notes: create: 기록 추가 create_and_resolve: 기록을 작성하고 해결됨으로 표시 create_and_unresolve: 기록 작성과 함께 미해결로 표시 delete: 삭제 placeholder: 이 리포트에 대한 조치, 기타 관련 된 사항에 대해 설명합니다… + title: 노트 + notes_description_html: 확인하고 다른 중재자나 미래의 자신을 위해 기록을 작성합니다 reopen: 리포트 다시 열기 report: '신고 #%{id}' reported_account: 신고 대상 계정 @@ -549,11 +587,14 @@ ko: resolved: 해결됨 resolved_msg: 리포트가 성공적으로 해결되었습니다! status: 상태 + statuses: 신고된 컨텐츠 + statuses_description_html: 문제가 되는 컨텐츠는 신고된 계정에게 인용되어 전달됩니다 target_origin: 신고된 계정의 소속 title: 신고 unassign: 할당 해제 unresolved: 미해결 updated_at: 업데이트 시각 + view_profile: 프로필 보기 rules: add_new: 규칙 추가 delete: 삭제 @@ -655,15 +696,13 @@ ko: destroyed_msg: 사이트 업로드를 성공적으로 삭제했습니다! statuses: back_to_account: 계정으로 돌아가기 + back_to_report: 신고 페이지로 돌아가기 batch: - delete: 삭제 - nsfw_off: NSFW 끄기 - nsfw_on: NSFW 켜기 + remove_from_report: 신고에서 제거 + report: 신고 deleted: 삭제됨 - failed_to_execute: 실행을 실패하였습니다 media: title: 미디어 - no_media: 미디어 없음 no_status_selected: 아무 게시물도 선택 되지 않아 아무 것도 바뀌지 않았습니다 title: 계정 게시물 with_media: 미디어 있음 @@ -676,21 +715,49 @@ ko: sidekiq_process_check: message_html: "%{value} 큐에 대한 사이드킥 프로세스가 발견되지 않았습니다. 사이드킥 설정을 검토해주세요" tags: - accounts_today: 오늘의 순 사용자 - accounts_week: 금주의 순 사용자 - breakdown: 소스별 오늘의 사용량 분석 - last_active: 최근에 사용됨 - most_popular: 최고 인기 - most_recent: 최근에 추가됨 - name: 해시태그 review: 심사 상태 - reviewed: 심사 됨 - title: 해시태그 - trending_right_now: 지금 유행 중 - unique_uses_today: 오늘 %{count}명이 포스팅 - unreviewed: 심사 되지 않음 updated_msg: 해시태그 설정이 성공적으로 갱신되었습니다 title: 관리 + trends: + allow: 허용 + approved: 승인됨 + disallow: 거부 + links: + allow: 링크 허용하기 + allow_provider: 출처 허용하기 + disallow: 링크 거부하기 + disallow_provider: 출처 거부하기 + shared_by_over_week: + other: 한 주 동안 %{count}명의 사람이 공유했습니다 + title: 지금 유행 중인 링크 + usage_comparison: 오늘은 %{today}회 공유되었고, 어제는 %{yesterday}회 공유되었습니다 + pending_review: 심사 대기 + preview_card_providers: + allowed: 이 출처의 링크는 유행 목록에 실릴 수 있습니다 + rejected: 이 출처의 링크는 유행 목록에 실릴 수 없습니다 + title: 출처 + rejected: 거부됨 + tags: + current_score: 현재 %{score}점 + dashboard: + tag_accounts_measure: 고유한 사용 + tag_languages_dimension: 상위 언어 + tag_servers_dimension: 상위 서버 + tag_servers_measure: 다른 서버들 + tag_uses_measure: 총 사용 + listable: 추천될 수 있습니다 + 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: + other: 한 주 동안 %{count}명의 사람이 사용했습니다 + title: 유행 warning_presets: add_new: 새로 추가 delete: 삭제 @@ -705,9 +772,16 @@ ko: body: "%{reporter} 가 %{target} 를 신고했습니다" body_remote: "%{domain}의 누군가가 %{target}을 신고했습니다" subject: "%{instance} 에 새 신고 등록됨 (#%{id})" - new_trending_tag: - body: '오늘 #%{name} 해시태그가 유행하고 있습니다, 하지만 심사 된 적이 없습니다. 허용하지 않는 한 공개적으로 나타나지 않습니다. 또는 그냥 저장을 눌러 더이상 나타나지 않게 할 수 있습니다.' - subject: 새 해시태그가 %{instance}에서 심사 대기 중입니다(#%{name}) + new_trending_links: + body: 아래에 있는 링크들이 오늘 유행 중입니다, 하지만 이 링크들의 출처는 전에 심사를 받은 적이 없습니다. 이 링크들은 승인하기 전까지는 공개적으로 표시되지 않을 것입니다. 동일한 출처에 대한 알림은 더 생성되지 않습니다. + no_approved_links: 현재 승인된 유행 중인 링크가 없습니다. + requirements: 현재 승인된 유행하는 링크 중 가장 낮은 것은 %{lowest_link_score}점을 가진 "%{lowest_link_title}" 입니다 + subject: 새 유행하는 링크가 %{instance}에서 심사 대기 중입니다 + new_trending_tags: + body: '아래에 있는 해시태그들이 오늘 유행 중입니다, 하지만 전에 심사를 받은 적이 없습니다. 이 해시태그들은 승인하기 전까지는 공개적으로 표시되지 않을 것입니다:' + no_approved_tags: 현재 승인된 유행 중인 해시태그가 없습니다. + requirements: '현재 승인된 유행하는 해시태그 중 가장 낮은 것은 %{lowest_tag_score}점을 가진 #%{lowest_tag_name} 입니다' + subject: 새 유행하는 해시태그가 %{instance}에서 심사 대기 중입니다 aliases: add_new: 별칭 만들기 created_msg: 새 별칭이 성공적으로 만들어졌습니다. 이제 기존 계정에서 이주를 시작할 수 있습니다. @@ -759,6 +833,7 @@ ko: invalid_reset_password_token: 암호 리셋 토큰이 올바르지 못하거나 기간이 만료되었습니다. 다시 요청해주세요. link_to_otp: 휴대폰의 2차 코드 혹은 복구 키를 입력해 주세요 link_to_webauth: 보안 키 장치 사용 + log_in_with: 다음으로 로그인 login: 로그인 logout: 로그아웃 migrate_account: 계정 옮기기 @@ -809,7 +884,7 @@ ko: invalid_signature: 유효하지 않은 Ed25519 서명 date: formats: - default: "%Y-%b-%d" + default: "%Y-%m-%d" with_month_name: "%Y년 %B %d일" datetime: distance_in_words: @@ -914,33 +989,14 @@ ko: changes_saved_msg: 정상적으로 변경되었습니다! copy: 복사 delete: 삭제 - no_batch_actions_available: 이 페이지에서 수행할 수 있는 일괄작업이 없습니다 + none: 없음 order_by: 순서 save_changes: 변경 사항을 저장 + today: 오늘 validation_errors: other: 오류가 발생했습니다. 아래 %{count}개 오류를 확인해 주십시오 html_validator: invalid_markup: '올바르지 않은 HTML 마크업을 포함하고 있습니다: %{error}' - identity_proofs: - active: 활성 - authorize: 네, 인증합니다 - authorize_connection_prompt: 이 암호화 연결을 인증합니까? - errors: - failed: 암호화 연결에 실패했습니다. %{provider}에서 다시 시도해 주세요. - keybase: - invalid_token: 키베이스 토큰은 서명의 해시이며 66자의 16진수 문자여야 합니다 - verification_failed: 키베이스가 이 토큰을 키베이스 유저 %{kb_username}의 서명으로 인식하지 못했습니다. 키베이스에서 다시 시도하세요. - wrong_user: "%{current}로 로그인 한 상태에서는 %{proving}에 대한 증명을 할 수 없습니다. %{proving}으로 로그인 한 후 다시 시도하세요." - explanation_html: 키베이스와 같은 다른 명의에 대한 암호화 연결을 할 수 있습니다. 이것으로 다른 사람들이 당신에게 암호화 된 메시지를 보낼 수 있고 당신의 메시지를 믿을 수 있습니다. - i_am_html: 나는 %{service}의 %{username} 입니다. - identity: 신원 - inactive: 비활성 - publicize_checkbox: '그리고 이것을 게시하세요:' - publicize_toot: '증명되었습니다! 저는 %{service}에 있는 %{username}입니다: %{url}' - remove: 계정증명 삭제 - removed: 성공적으로 계정증명을 삭제했습니다 - status: 인증 상태 - view_proof: 증명 보기 imports: errors: over_rows_processing_limit: "%{count}개 이상의 열을 포함합니다" @@ -1040,7 +1096,7 @@ ko: digest: action: 모든 알림 보기 body: 마지막 로그인(%{since}) 이후로 일어난 일들에 관한 요약 - mention: "%{name} 님이 답장했습니다:" + mention: "%{name} 님이 나를 언급했습니다:" new_followers_summary: other: 게다가, 접속하지 않은 동안 %{count} 명의 팔로워가 생겼습니다! subject: @@ -1061,8 +1117,8 @@ ko: title: 새 팔로우 요청 mention: action: 답장 - body: "%{name} 님이 답장을 보냈습니다:" - subject: "%{name} 님이 답장을 보냈습니다" + body: "%{name} 님이 나를 언급했습니다:" + subject: "%{name} 님이 나를 언급했습니다" title: 새 멘션 poll: subject: "%{name}의 투표가 종료되었습니다" @@ -1211,7 +1267,6 @@ ko: edit_profile: 프로필 편집 export: 데이터 내보내기 featured_tags: 추천 해시태그 - identity_proofs: 신원 증명 import: 데이터 가져오기 import_and_export: 가져오기 / 내보내기 migrate: 계정 이동 @@ -1235,15 +1290,15 @@ ko: content_warning: '열람 주의: %{warning}' disallowed_hashtags: other: '허용되지 않은 해시태그를 포함하고 있습니다: %{tags}' + edited_at: "%{date}에 편집됨" errors: in_reply_not_found: 답장하려는 게시물이 존재하지 않습니다. - language_detection: 자동으로 언어 감지 open_in_web: Web으로 열기 over_character_limit: 최대 %{max}자까지 입력할 수 있습니다 pin_errors: + direct: 멘션된 사용자들에게만 보이는 게시물은 고정될 수 없습니다 limit: 이미 너무 많은 게시물을 고정했습니다 ownership: 다른 사람의 게시물은 고정될 수 없습니다 - private: 비공개 게시물은 고정될 수 없습니다 reblog: 부스트는 고정될 수 없습니다 poll: total_people: @@ -1396,6 +1451,7 @@ ko: formats: default: "%Y년 %m월 %d일 %H:%M" month: "%Y년 %b" + time: "%H:%M" two_factor_authentication: add: 추가 disable: 비활성화 @@ -1423,24 +1479,31 @@ ko: subject: 로그인 시도를 확인해 주십시오 title: 로그인 시도 warning: + categories: + spam: 스팸 + violation: 컨텐츠가 다음의 커뮤니티 규정을 위반합니다 explanation: - disable: 당신의 계정이 동결 된 동안 당신의 계정은 유지 됩니다. 하지만 잠금이 풀릴 때까지 당신은 아무 것도 할 수 없습니다. - sensitive: 당신의 업로드 한 미디어 파일들과 링크된 미디어들은 민감함으로 취급됩니다. - silence: 당신의 계정이 제한 된 동안엔 당신의 팔로워 이외엔 게시물을 받아 볼 수 없고 공개 리스팅에서 제외 됩니다. 하지만 다른 사람들은 여전히 당신을 팔로우 가능합니다. - suspend: 당신의 계정은 정지 되었으며, 모든 게시물과 업로드 한 미디어가 서버에서 삭제 되어 되돌릴 수 없습니다. - get_in_touch: 이 메일에 대해 답장해서 %{instance}의 스태프와 연락 할 수 있습니다. + delete_statuses: 당신의 게시물 중 몇 개가 커뮤니티 규정을 위반하는 것으로 확인되었고 %{instance}의 중재자에 의해 삭제되었습니다. 이후의 규정 위반은 당신의 계정에 대해 더 강력한 제재가 이루어 질 수 있습니다. + disable: 당신은 더이상 당신의 계정을 사용할 수 없습니다, 하지만 프로필과 다른 데이터들은 여전히 그대로 남아있습니다. 당신의 데이터에 대한 백업을 요청하거나, 계정 설정을 변경 또는 계정을 삭제할 수 있습니다. + sensitive: 지금부터는, 당신이 업로드한 미디어 파일들은 민감함 표시가 뜨게 되고 클릭해야만 볼 수 있다는 경고문 뒤에 가려지게 됩니다. + silence: 당신은 여전히 당신의 계정을 사용할 수 있지만 당신을 팔로우 하고 있는 사람들만 당신의 게시물을 볼 수 있으며, 여러가지 탐색 기능에서 제외됩니다. 하지만, 여전히 다른 사람들은 수동으로 당신을 팔로우 할 수 있습니다. + suspend: 당신은 더이상 당신의 계정을 사용할 수 없으며, 프로필과 데이터는 접근 불가능하게 됩니다. 데이터가 완전히 삭제되기 전인 30일동안은 여전히 백업을 요청하기 위해 로그인 할 수 있습니다, 하지만 계정 정지를 회피하는 것을 방지하기 위하여 몇 가지 정보는 유지됩니다. + get_in_touch: 이것이 잘못된 조치라고 생각된다면, 이 메일에 답장하여 %{instance}의 스태프들에게 연락할 수 있습니다. + reason: '사유:' review_server_policies: 서버 정책 검토하기 - statuses: '구체적으로:' + statuses: '위반사항이 발견된 게시물:' subject: + delete_statuses: 당신의 계정 %{acct}에서 작성한 게시물이 삭제되었습니다 disable: 당신의 계정 %{acct}가 동결 되었습니다 none: "%{acct}에게의 경고" - sensitive: 당신의 계정 %{acct}에서 포스팅 하는 미디어는 민감함으로 설정되었습니다 + sensitive: 지금부터 당신의 계정 %{acct}의 미디어 파일들은 민감함으로 표시됩니다 silence: 당신의 계정 %{acct}가 제한 되었습니다 suspend: 당신의 계정 %{acct}가 정지 되었습니다 title: + delete_statuses: 게시물 삭제됨 disable: 계정 동결 됨 none: 경고 - sensitive: 당신의 미디어는 민감함으로 표시되었습니다 + sensitive: 미디어 숨겨짐 silence: 계정 제한 됨 suspend: 계정 정지 됨 welcome: @@ -1483,7 +1546,7 @@ ko: destroy: error: 보안 키를 삭제하는데 문제가 발생했습니다. 다시 시도해보십시오. success: 보안 키가 성공적으로 삭제되었습니다. - invalid_credential: 잘못된 보안 키 + invalid_credential: 올바르지 않은 보안 키 nickname_hint: 새 보안 키의 별명을 입력해 주세요 not_enabled: 아직 WebAuthn을 활성화 하지 않았습니다. not_supported: 이 브라우저는 보안 키를 지원하지 않습니다 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index d421b42a7..744ead215 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -95,7 +95,6 @@ ku: accounts: add_email_domain_block: بلۆککردنی هەموو دۆمەینەکە approve: پەسەند کردن - approve_all: پەسەندکردنی هەموو approved_msg: بەرنامەی تۆمارکردنی %{username} بۆ چوونەناوی پەسەند کرا are_you_sure: دڵنیای? avatar: وێنۆچکە @@ -146,7 +145,6 @@ ku: active: چالاک all: هەموو pending: چاوەڕوان - silenced: بێدەنگ suspended: ڕاگرتن title: بەڕێوەبردن moderation_notes: بەڕێوەبردنی تێبینیەکان @@ -164,7 +162,6 @@ ku: redownload: نوێکردنەوەی پرۆفایل redownloaded_msg: پرۆفایلی %{username} لە بنەڕەتەوە بە سەرکەوتوویی نوێکرایەوە reject: ڕەتکردنەوە - reject_all: هەموو ڕەت بکەوە rejected_msg: بەرنامەی تۆمارکردنی %{username} بە سەرکەوتوویی ڕەتکرایەوە remove_avatar: لابردنی وێنۆجکە remove_header: سەرپەڕ لابدە @@ -199,7 +196,6 @@ ku: suspended: ڕاگرتن suspension_irreversible: داتای ئەم هەژمارەیە بە شێوەیەکی نائاسایی سڕاوەتەوە. دەتوانیت هەژمارەکەت ڕابخەیت بۆ ئەوەی بەکاربێت بەڵام هیچ داتایەک ناگەڕگەڕێتەوە کە پێشتر بوونی بوو. suspension_reversible_hint_html: هەژمارە ڕاگیرا ، و داتاکە بەتەواوی لە %{date} لادەبرێت. تا ئەو کاتە هەژمارەکە دەتوانرێت بە بێ هیچ کاریگەریەکی خراپ بژمێردرێتەوە. ئەگەر دەتەوێت هەموو داتاکانی هەژمارەکە بسڕەوە، دەتوانیت لە خوارەوە ئەمە بکەیت. - time_in_queue: چاوەڕوانی لە ڕیزدا %{time} title: هەژمارەکان unconfirmed_email: ئیمەیڵی پشتڕاستنەکراو undo_sensitized: " هەستیار نەکردن" @@ -308,32 +304,9 @@ ku: updated_msg: ئیمۆجی بە سەرکەوتوویی نوێکرایەوە! upload: بارکردن dashboard: - authorized_fetch_mode: دۆخی پارێزراو - backlog: کاری پشتەواز - config: شێوەپێدان - feature_deletions: سڕینەوەی هەژمارە - feature_invites: بانگێشتکردنی بەستەرەکان - feature_profile_directory: ڕێنیشاندەرێکی پرۆفایل - feature_registrations: تۆمارکراوەکان - feature_relay: گواستنەوەی گشتی - feature_timeline_preview: پێش نیشاندانی نووسراوەکان - features: تایبەتمەندیەکان - hidden_service: پەیوەندی نێوان ڕاژە یان خزمەتگوزاری نێننی - open_reports: ڕاپۆرتەکان بکەوە - pending_tags: هاشتاگی چاوەڕوانی پێداچوونەوە دەکات - pending_users: بەکارهێنەران چاوەڕێی پێداچوونەوەن - recent_users: بەکارهێنەرانی ئەم دواییە - search: گەڕانی تەواوی-دەق - single_user_mode: دۆخی بەکارهێنەری تاک software: نەرمەکالا space: بەکارهێنانی بۆشایی title: داشبۆرد - total_users: ژمارەی بەکارهێنەران - trends: تاگە بەرچاوکراوەکان - week_interactions: چالاکیەکانی ئەم هەفتەیە - week_users_active: چالاکی ئەم هەفتەیە - week_users_new: بەکارهێنەرانی ئەم هەفتەیە - whitelist_mode: شێوەی پێرستی ڕێپێدراو domain_allows: add_new: ڕێپێدان بە دۆمەین created_msg: دۆمەین بە سەرکەوتوویی رێگەی پێدرا @@ -432,8 +405,6 @@ ku: title: دروستکردنی یاسای نوێی IP no_ip_block_selected: هیچ ڕێسایەکی IP نەگۆڕدرا وەک ئەوەی هیچ کامیان دەستنیشان نەکران title: یاساکانی IP - pending_accounts: - title: هەژمارە هەڵواسراوەکان (%{count}) relationships: title: پەیوەنیەکان %{acct} relays: @@ -460,9 +431,6 @@ ku: notes: one: "%{count} یاداشت" other: "%{count} یاداشت" - reports: - one: "%{count} گوزارشت" - other: "%{count} گوزارشتەکان" action_taken_by: کردەوە لە لایەن are_you_sure: دڵنیای? assign_to_self: دیاریکردن بۆ من @@ -581,32 +549,14 @@ ku: destroyed_msg: بارکردنی ماڵپەڕ بە سەرکەوتوویی سڕدراوەتەوە! statuses: back_to_account: گەڕانەوە بۆ لاپەڕەی هەژمارە - batch: - delete: سڕینەوە - nsfw_off: نیشانەکردن وەک هەستیار نیە - nsfw_on: نیشانەکردن وەک هەستیار deleted: سڕینەوە - failed_to_execute: جێبەجێ کردن سەرکەوتوو نەبوو media: title: میدیا - no_media: هیچ میدیایەک no_status_selected: هیچ دۆخیک نەگۆڕاوە وەک ئەوەی هیچ بارێک دەستنیشان نەکراوە title: دۆخی ئەژمێر with_media: بە میدیا tags: - accounts_today: بەکارهێنانی بێ هاوتای ئەمڕۆ - accounts_week: بەکارهێنەری یەکتا لەم هەفتەیە - breakdown: بەکارهێنانی ئەمڕۆ بە جوداکردنی سەرچاوە - last_active: دوا چالاکی - most_popular: بەناوبانگترین - most_recent: تازەترین - name: هەشتاگ review: پێداچوونەوەی دۆخ - reviewed: پێداچوونەوە - title: هەشتاگ - trending_right_now: بەرچاوکردن لە ئێستادا - unique_uses_today: T%{count} ئەمڕۆ بڵاوکراوە - unreviewed: پێداچوونەوە نەکراوە updated_msg: ڕێکخستنی هاشتاگ بە سەرکەوتوویی نوێکرایەوە title: بەڕێوەبەر warning_presets: @@ -622,9 +572,6 @@ ku: body: بەکارهێنەری %{reporter} گوزارشی لە بەکارهینەری%{target} دا body_remote: کەسێک لە %{domain} گوزارشتی %{target} ناردووە subject: گوزارشتێکی نوی لە %{instance} (#%{id}) - new_trending_tag: - body: 'هاشتاگی #%{name} ئەمڕۆ ئاراستە دەکرێت، بەڵام پێشتر پێداچوونەوەی بۆ نەکراوە. بە ئاشکرا پیشان نادرێت مەگەر تۆ ڕێگەی پێ بدەیت، یان تەنها فۆرمەکەت وەک خۆی پاشەکەوت بکەیت کە هەرگیز لێی نەبیستیت.' - subject: تاگێکی نوێ لە %{instance} نیازمەندی پێداچوونەوەیە (#%{name}) aliases: add_new: دروستکردنی ناوی ساختە created_msg: نازناوێکی نوێیان سەرکەوتووانە دروستکرد. ئێستا دەتوانیت دەست بە گواستنەوە کەیت لە هەژمێرە کۆنەکەت. @@ -815,7 +762,6 @@ ku: changes_saved_msg: گۆڕانکاریەکان بە سەرکەوتوویی هەڵگیرا! copy: ڕوونووس delete: سڕینەوە - no_batch_actions_available: هیچ گرووپێکی کاری بەردەست نیە لەسەر ئەم لاپەڕەیە order_by: ڕێکخستن بەپێی save_changes: گۆڕانکاریەکان بپارێزە validation_errors: @@ -823,26 +769,6 @@ ku: other: هێشتا تەواو ڕاست نیە تکایە چاو بە هەڵەی %{count} خوارەوە بخشێنەوە html_validator: invalid_markup: 'نیشانەی HTML نادروستی تێدایە: %{error}' - identity_proofs: - active: چالاک - authorize: بەڵێ، ڕێگە بدە - authorize_connection_prompt: ئایا ئەم گرێدانە نهێنییە ڕیگە دەدەی? - errors: - failed: پەیوەندی کردنی نهێنیکردن سەرکەوتوو نەبوو. تکایە دووبارە لە %{provider} هەوڵ بدەوە. - keybase: - invalid_token: نیشانە کانی بنەکلیلی سەرەکی (هەش) واژووی دیجیتاڵن و لانی کەم ٦٦ نووسە لە توانی ١٦ هەیە - verification_failed: ئەم بنە کلیلیە(Keybase) بە ءینوانی واژووی دیجیتاڵی بەکارهێنەری %{kb_username} پەسەند ناکا، تکایا دووبارە لە بنە کلیلێکی دیکە هەوڵ بدەوە. - wrong_user: ناتوانرێت پشت ڕاستکردنەوەیەک بۆ %{proving} لە کاتێک بە عینوانی %{current} هاتنەتە ناوە. بە عینوانی %{proving} بچنە ناوەو دووبارە هەوڵ بدەنەوە. - explanation_html: لێرە دەتوانیت بە نهێنی ناسنامەکانی تر ت گرێ بدەی لە سەکۆکانی ترەوە، وەک کلیلی بنکە. ئەمە ڕێگە دەدات بە کەسانی تر نامەی رەمزێنراوەکانت بۆ بنێرن لەسەر ئەو پلاتفۆرمە ، رێگەیان پێدەدات متمانە بکەن کە ئەو ناوەڕۆکەی تۆ دەیاننێریت لە تۆوە دێت. - i_am_html: من %{username} ــم لەسەر %{service} ــنم. - identity: ناسنامە - inactive: ناچالاکە - publicize_checkbox: 'ئەمە توت بکە:' - publicize_toot: 'پەسەند کرا! من %{username} لەسەر %{service} هەم: %{url}' - remove: لابردنی بەڵگە لە هەژمارەی - removed: بە سەرکەوتوویی بەڵگەنامەی سەلماندن لابرا لە هەژمارەی بەکارهینەر - status: دۆخی سەلماندن - view_proof: پیشاندانی سەلماندن imports: modes: merge: یەکخستن @@ -1083,7 +1009,6 @@ ku: edit_profile: دەستکاری پرۆفایل export: ناردن زانیاری featured_tags: هاشتاگی تایبەت - identity_proofs: سەلماندنی ناسنامە import: هاوردن import_and_export: هاوردەکردن و ناردن migrate: گواستنەوەی هەژمارە @@ -1112,13 +1037,11 @@ ku: other: 'هاشتاگەکانی ڕێگەپێنەدراوەی تێدابوو: %{tags}' errors: in_reply_not_found: ئەو دۆخەی کە تۆ هەوڵی وەڵامدانەوەی دەدەیت وادەرناکەوێت کە هەبێت. - language_detection: بە شێوەیەکی خۆکارانە زمان بدۆزیەوە open_in_web: کردنەوە لە وێب over_character_limit: سنووری نووسەی %{max} تێپەڕێنرا pin_errors: limit: تۆ پێشتر زۆرترین ژمارەی توتتی چەسپیوەت هەیە ownership: نووسراوەکانی تر ناتوانرێ بسەلمێت - private: توتی ناگشتی ناتوانرێت بچەسپێ reblog: بەهێزکردن ناتوانرێت بچەسپێ poll: total_people: @@ -1256,24 +1179,15 @@ ku: subject: تکایە دڵنیابە لە هەوڵدان بۆ چوونە ژوورەوە title: هەوڵدان بۆ چوونە ژوورەوە warning: - explanation: - disable: تا کاتێک هەژمارەی ئێوە نەوێستاوە، دراوەکانی ئێوە دەستکاری ناکرێت.بەڵام تا کاتێک کە هەژمارەکەتان ناکرێتەوە. ناتوانن هیچ ئیشێکی لەسەر بکەن. - sensitive: پەڕگە میدیایە بارکراوەکانت و میدیا لینککراوەکانت وەک هەستیار مامەڵەیان لەگەڵ دەکرێت. - silence: تا کاتیک هەژمارەکەتان سنووردار بێت، تەنها ئەو کەسانە کە پێشتر شوێنکەوتووی ئێوە بوون نووسراوەکانی ئێوە لەم ڕاژە دەبینن. شایەد ئێوە لە زۆر پێرستی گشتی دیار نەکەون؛ بەڵام خەڵکانی دیکە دەتوانن بە دڵی خۆیان پەیگیری ئێوە بن. - suspend: هەژمارەکەتان هەڵواسراوە، وە تەواو توت و میدیاکان کە لەسەر ئەم ڕاژە بارتان کردووە یان ئەو ڕاژانە کە شوێنکەوتووتان لە سەری بووە ئیتر ناگەڕێنەوە. - get_in_touch: بە وڵام دانەوەی ئەم ئیمەیلە دەتوانن لە گەڵ لیژنەی %{instance} لە پەیوەندی بن. review_server_policies: پێداچوونەوەی سیاسەتەکانی ڕاژە - statuses: 'بە دیاریکراوی، بۆ:' subject: disable: هەژمارەکەت %{acct} بەستراوە none: ئاگاداری بۆ %{acct} - sensitive: هەژمارەکەت %{acct} میدیایەکی پۆست کردن بە هەستیار نیشان کراوە silence: هەژمارەکەی %{acct} سنووردار کراوە suspend: هەژمارەکەی %{acct} ڕاگیرا title: disable: هەژمارە بەستراوە none: ئاگاداری - sensitive: میدیاکەت بە هەستیار نیشان کراوە silence: هەژماری سنووردار suspend: هەژمار ڕاگیرا welcome: diff --git a/config/locales/lt.yml b/config/locales/lt.yml index b0de04024..c41db64cf 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -91,7 +91,6 @@ lt: moderation: active: Aktyvus all: Visi - silenced: Užtildytas suspended: Užrakintas title: Moderacija moderation_notes: Medaracijos žinutės @@ -343,19 +342,11 @@ lt: title: Tinklalapio nustatymai statuses: back_to_account: Atgal į paskyros puslapį - batch: - delete: Ištrinti - nsfw_off: Pažymėti kaip ne jautrią informaciją - nsfw_on: Pažymėti kaip jautrią informaciją - failed_to_execute: Nesėkmingas veiksmas media: title: Medija - no_media: Nėra medijos no_status_selected: Jokie statusai nebuvo pakeisti, nes niekas nepasirinkta title: Paskyros statusai with_media: Su medija - tags: - title: Saitažodžiai(#) title: Administracija warning_presets: add_new: Pridėti naują @@ -619,13 +610,11 @@ lt: description: 'Pridėta: %{attached}' boosted_from_html: Pakelta iš %{acct_link} content_warning: 'Turinio įspėjimas: %{warning}' - language_detection: Automatiškai nustatyti kalbą open_in_web: Atidaryti naudojan Web over_character_limit: pasiektas %{max} simbolių limitas pin_errors: limit: Jūs jau prisegėte maksimalų toot'ų skaičų ownership: Kitų vartotojų toot'ai negali būti prisegti - private: Ne vieši toot'ai negali būti prisegti reblog: Pakeltos žinutės negali būti prisegtos show_more: Daugiau sign_in_to_participate: Prisijunkite jeigu norite dalyvauti pokalbyje @@ -740,10 +729,6 @@ lt: subject: Jūsų archyvas paruoštas parsisiuntimui title: Archyvas išimtas warning: - explanation: - disable: Kol Jūsų paskyra užšaldyta, Jūsų duomenys tebėra matomi, tačiau jūs negalite atlikti jokių veiksmu, tol, kol užšaldymas panaikintas. - silence: Kol Jūsų paskyra limituota, tik žmonės, kurie jus jau sekė matus Jūsų toot'us serveryje, Jūs taip pat būsite išimtas iš viešųjų sąrašų. Tačiau, kiti gali jus rasti, savo rankomis. - suspend: Jūsų paskyra buvo užrakinta, ir visi Jūsų toot'ai, medijos failai, buvo panaikinti iš šio serverio, ir visų kitų serverių, kur turėjote sekėjų. review_server_policies: Apžvelgti serverio politiką subject: disable: Jūsų paskyra %{acct} buvo užšaldyta diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 5b51b2bca..875ad5c05 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1,7 +1,7 @@ --- lv: about: - about_hashtag_html: Šīs ir publiskas ziņas, kas atzīmētas ar <strong>#%{hashtag} </strong>. Tu vari mijiedarboties ar viņiem, ja tev ir konts jebkurā federācijas vietnē. + about_hashtag_html: Šīs ir publiskas ziņas, kas atzīmētas ar <strong>#%{hashtag}</strong>. Tu vari mijiedarboties ar tām, ja tev ir konts jebkurā federācijas vietnē. about_mastodon_html: 'Nākotnes sociālais tīkls: bez reklāmām, bez korporatīvās uzraudzības, ētisks dizains un decentralizācija! Pārvaldi savus datus ar Mastodon!' about_this: Par active_count_after: aktīvs @@ -9,7 +9,7 @@ lv: administered_by: 'Administrē:' api: API apps: Mobilās lietotnes - apps_platforms: Lieto Mastodon uz iOS, Android un citām platformām + apps_platforms: Lieto Mastodon iOS, Android un citās platformās browse_directory: Pārlūko profila direktoriju un atlasi pēc interesēm browse_local_posts: Pārlūko publisko ziņu straumi no šī servera browse_public_posts: Pārlūko publisko ziņu straumi no Mastodon @@ -60,6 +60,10 @@ lv: endorsements_hint: Jūs varat apstiprināt cilvēkus, kuriem sekojat no tīmekļa saskarnes, un viņi tiks parādīti šeit. featured_tags_hint: Šeit vari norādīt īpašus tēmturus, kuri tiks parādīti šeit. follow: Seko + followers: + one: Sekotājs + other: Sekotāji + zero: Sekotāju following: Seko instance_actor_flash: Šis konts ir virtuāls aktieris, ko izmanto, lai pārstāvētu pašu serveri, nevis atsevišķu lietotāju. To izmanto federācijas nolūkos, un to nevajadzētu apturēt. joined: Pievienojās %{date} @@ -74,6 +78,10 @@ lv: people_who_follow: Cilvēki, kuri seko %{name} pin_errors: following: Tev jau ir jāseko personai, kuru vēlies apstiprināt + posts: + one: Ziņa + other: Ziņas + zero: Ziņu posts_tab_heading: Ziņas posts_with_replies: Ziņas un atbildes roles: @@ -95,7 +103,6 @@ lv: accounts: add_email_domain_block: Bloķēt e-pasta domēnu approve: Apstiprināt - approve_all: Apstiprināt visus approved_msg: Veiksmīgi apstiprināts %{username} reģistrēšanās pieteikums are_you_sure: Vai esi pārliecināts? avatar: Avatars @@ -110,6 +117,7 @@ lv: confirm: Apstiprināt confirmed: Apstiprināts confirming: Apstiprina + custom: Pielāgot delete: Dzēst datus deleted: Dzēsts demote: Pazemināt @@ -149,7 +157,6 @@ lv: active: Aktīvie all: Visi pending: Gaida - silenced: Ierobežotie suspended: Apturētie title: Moderācija moderation_notes: Moderācijas piezīmes @@ -167,7 +174,6 @@ lv: redownload: Atsvaidzināt profilu redownloaded_msg: Veiksmīgi atsvaidzināts %{username} profils no izcelsmes reject: Noraidīt - reject_all: Noraidīt visus rejected_msg: Veiksmīgi noraidīts %{username} reģistrēšanās pieteikums remove_avatar: Noņemt avatāru remove_header: Noņemt galveni @@ -184,6 +190,7 @@ lv: roles: admin: Administrators moderator: Moderators + staff: Personāls user: Lietotājs search: Meklēt search_same_email_domain: Citi lietotāji ar tādu pašu e-pasta domēnu @@ -201,22 +208,78 @@ lv: silence: Ierobežot silenced: Ierobežots statuses: Ziņas + strikes: Iepriekšējie streiki subscribe: Abonē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. - time_in_queue: Gaida rindā %{time} title: Konti + unblock_email: Atbloķēt e-pasta adresi + unblocked_email_msg: Veiksmīgi atbloķēta %{username} e-pasta adrese unconfirmed_email: Neapstiprināts e-pasts undo_sensitized: Atcelt sensitivizēšanu + undo_silenced: Atsaukt ierobežojumu + undo_suspension: Atsaukt apturēšanu + unsilenced_msg: Veiksmīgi atsaukts %{username} konta ierobežojums + unsubscribe: Anulēt abonementu + unsuspended_msg: Veiksmīgi neapturēts %{username} konts + username: Lietotājvārds + view_domain: Skatīt domēna kopsavilkumu + warn: Brīdināt + web: Web + whitelisted: Atļauts federācijai action_logs: action_types: + approve_user: Apstiprināt lietotāju + assigned_to_self_report: Piešķirt Pārskatu + change_email_user: Mainīt e-pastu lietotājam + confirm_user: Apstiprināt lietotāju + create_account_warning: Izveidot Brīdinājumu + create_announcement: Izveidot Paziņojumu + create_custom_emoji: Izveidot pielāgotu emocijzīmi + create_domain_allow: Izveidot Domēna Atļauju + create_domain_block: Izveidot Domēna Bloku + create_email_domain_block: Izveidot E-pasta Domēna Bloku + create_ip_block: Izveidot IP noteikumu + create_unavailable_domain: Izveidot Nepieejamu Domēnu + demote_user: Pazemināt Lietotāju + destroy_announcement: Dzēst Paziņojumu + destroy_custom_emoji: Dzēst pielāgoto emocijzīmi + destroy_domain_allow: Dzēst Domēna Atļauju + destroy_domain_block: Dzēst Domēna Bloku + destroy_email_domain_block: Dzēst E-pasta Domēna Bloku + destroy_instance: Attīrīt domēnu + destroy_ip_block: Dzēst IP noteikumu + destroy_status: Izdzēst Rakstu + destroy_unavailable_domain: Dzēst Nepieejamu Domēnu + disable_2fa_user: Atspējot 2FA + disable_custom_emoji: Atspējot pielāgotu emocijzīmi + disable_sign_in_token_auth_user: Atspējoja e-pasta marķiera autentifikāciju lietotājam + disable_user: Atspējot Lietotāju + enable_custom_emoji: Iespējot pielāgotu emocijzīmi + enable_sign_in_token_auth_user: Iespējot e-pasta marķiera autentifikāciju lietotājam + enable_user: Ieslēgt Lietotāju + memorialize_account: Saglabāt Kontu Piemiņai + promote_user: Paaugstināt Lietotāju + reject_user: Noraidīt lietotāju + remove_avatar_user: Noņemt Avatāru + reopen_report: Atkārtoti Atvērt Ziņojumu + reset_password_user: Atiestatīt Paroli + resolve_report: Atrisināt Ziņojumu + sensitive_account: Piespiedu sensitīvizēt kontu + silence_account: Ierobežot Kontu + suspend_account: Apturēt Kontu + unassigned_report: Atcelt Pārskata Piešķiršanu + unblock_email_account: Atbloķēt e-pasta adresi + unsensitive_account: Atsaukt Konta Piespiedu Sensitivizēšanu + unsilence_account: Atcelt Konta Ierobežošanu unsuspend_account: Atcelt konta apturēšanu update_announcement: Atjaunināt Paziņojumu update_custom_emoji: Atjaunināt pielāgoto emocijzīmi update_domain_block: Atjaunināt Domēna Bloku update_status: Atjaunināt ziņu actions: + 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}" confirm_user_html: "%{name} apstiprināja e-pasta adresi lietotājam %{target}" @@ -234,6 +297,7 @@ lv: destroy_domain_allow_html: "%{name} neatļāva federāciju ar domēnu %{target}" destroy_domain_block_html: "%{name} atbloķēja domēnu %{target}" destroy_email_domain_block_html: "%{name} atbloķēja e-pasta domēnu %{target}" + destroy_instance_html: "%{name} attīrija domēnu %{target}" destroy_ip_block_html: "%{name} izdzēsa nosacījumu priekš IP %{target}" destroy_status_html: "%{name} noņēma ziņu %{target}" destroy_unavailable_domain_html: "%{name} atjaunoja piegādi uz domēnu %{target}" @@ -246,6 +310,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_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}" reset_password_user_html: "%{name} atiestatīja paroli lietotājam %{target}" @@ -254,6 +319,7 @@ lv: silence_account_html: "%{name} ierobežoja %{target} kontu" suspend_account_html: "%{name} apturēja %{target} kontu" unassigned_report_html: "%{name} nepiešķīra ziņojumu %{target}" + unblock_email_account_html: "%{name} atbloķēja %{target} e-pasta adresi" unsensitive_account_html: "%{name} atmarķēja %{target} mediju kā sensitīvu" unsilence_account_html: "%{name} atcēla ierobežojumu %{target} kontam" unsuspend_account_html: "%{name} neapturēja %{target} kontu" @@ -318,9 +384,30 @@ lv: upload: Augšupielādēt dashboard: active_users: aktīvie lietotāji + interactions: mijiedarbības + media_storage: Mediju krātuve + new_users: jauni lietotāji + opened_reports: atvērtie ziņojumi + pending_reports_html: + one: "<strong>1</strong> ziņojums gaida" + other: "<strong>%{count}</strong>ziņojumi gaida" + zero: "<strong>%{count}</strong> ziņojumu" + pending_tags_html: + one: "<strong>1</strong> tēmturis gaida" + other: "<strong>%{count}</strong>tēmturi gaida" + zero: "<strong>%{count}</strong> tēmturu" + pending_users_html: + one: "<strong>1</strong> lietotājs gaida" + other: "<strong>%{count}</strong>lietotāji gaida" + zero: "<strong>%{count}</strong> lietotāju" + resolved_reports: ziņojumi atrisināti software: Programmatūra + sources: Reģistrēšanās avoti space: Vietas izmantošana title: Panelis + top_languages: Aktīvākās valodas + top_servers: Aktīvākie serveri + website: Tīmekļa vietne domain_allows: add_new: Atļaut federāciju ar domēnu created_msg: Domēns ir veiksmīgi atļauts federācijai @@ -332,7 +419,54 @@ lv: destroyed_msg: Domēna bloķēšana ir atsaukta domain: Domēns edit: Rediģēt domēna bloķēšanu + existing_domain_block_html: Tu jau esi noteicis stingrākus ierobežojumus %{name}, vispirms tev <a href="%{unblock_url}">jāatbloķē</a>. + new: + create: Izveodot bloku + hint: Domēna bloķēšana netraucēs izveidot kontu ierakstus datu bāzē, bet ar atpakaļejošu datumu un automātiski tiks piemērotas noteiktas moderēšanas metodes šajos kontos. + severity: + desc_html: "<strong>Klusums</strong> padarīs konta ziņas neredzamas ikvienam, kurš tām neseko. <strong>Apturēt</strong> tiks noņemts viss konta saturs, mediji un profila dati. Izmanto <strong>Nevienu</strong>, ja vēlies noraidīt mediju failus." + noop: Neviens + silence: Klusums + suspend: Apturēt + title: Jauns domēna bloks + obfuscate: Apslēpt domēna vārdu + obfuscate_hint: Daļēji apslēpt domēna nosaukumu sarakstā, ja ir iespējota domēna ierobežojumu saraksta reklamēšana + private_comment: Privāts komentārs + private_comment_hint: Atstāj komentāru par šo domēna ierobežojumu moderatoru iekšējai lietošanai. + public_comment: Publisks komentārs + public_comment_hint: Atstāj komentāru par šo domēna ierobežojumu plašai sabiedrībai, ja ir iespējota domēnu ierobežojumu saraksta reklamēšana. + reject_media: Noraidīt mediju failus + reject_media_hint: Noņem lokāli saglabātos mediju failus un atsaka tos lejupielādēt nākotnē. Nav nozīmes apturēšanai + reject_reports: Noraidīt ziņojumus + reject_reports_hint: Ignorēt visus ziņojumus, kas nāk no šī domēna. Nav nozīmes apturēšanai + rejecting_media: noraidīt mediju failus + rejecting_reports: noraida ziņojumus + severity: + silence: ierobežots + suspend: apturēts + show: + affected_accounts: + one: Ietekmēts viens konts datu bāzē + other: Ietekmēti %{count} konti datu bāzē + zero: "%{count} ietekmētu kontu" + 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 + title: Atsaukt domēna bloķēšanu %{domain} + undo: Atsaukt + undo: Atsaukt domēna bloķēšanu + view: Skatīt domēna bloķēšanu email_domain_blocks: + add_new: Pievienot jaunu + created_msg: E-pasta domēns ir veiksmīgi bloķēts + delete: Dzēst + destroyed_msg: E-pasta domēns ir veiksmīgi atbloķēts + domain: Domēns + empty: Pašlaik nav bloķēts neviens e-pasta domēns. + from_html: no %{domain} + new: + create: Pievienot domēnu + title: Bloķēt jaunu e-pasta domēnu title: Bloķētie e-pasta domēni follow_recommendations: description_html: "<strong>Sekošana rekomendācijām palīdz jaunajiem lietotājiem ātri atrast interesantu saturu</strong>. Ja lietotājs nav pietiekami mijiedarbojies ar citiem, lai izveidotu personalizētus ieteikumus, ieteicams izmantot šos kontus. Tie tiek pārrēķināti katru dienu, izmantojot vairākus kontus ar visaugstākajām pēdējā laika saistībām un vislielāko vietējo sekotāju skaitu noteiktā valodā." @@ -347,6 +481,7 @@ lv: back_to_limited: Ierobežotās back_to_warning: Brīdinājums by_domain: Domēns + confirm_purge: Vai tiešām vēlies neatgriezeniski izdzēst datus no šī domēna? delivery: all: Visas clear: Notīrīt piegādes kļūdas @@ -356,16 +491,26 @@ lv: unavailable: Nav pieejams unavailable_message: Piegāde nav iespējama warning: Brīdinājums + warning_message: + one: Piegādes kļūme %{count} diena + other: Piegādes kļūme %{count} dienas + zero: Piegādes kļūme %{count} dienas delivery_available: Piegāde ir iespējama delivery_error_days: Piegādes kļūdu dienas delivery_error_hint: Ja piegāde nav iespējama %{count} dienas, tā tiks automātiski atzīmēta kā nepiegādājama. + destroyed_msg: Dati no %{domain} tagad ir gaidīšanas rindā, lai tos drīzumā dzēstu. empty: Domēni nav atrasti. + known_accounts: + one: "%{count} zināms konts" + other: "%{count} zināmi konti" + zero: "%{count} zināmu kontu" moderation: all: Visas limited: Ierobežotās title: Moderācija private_comment: Privāts komentārs public_comment: Publisks komentārs + purge: Iztīrīt title: Federācija total_blocked_by_us: Mūsu bloķēta total_followed_by_them: Viņiem seko @@ -389,13 +534,87 @@ lv: '15778476': 6 mēneši '2629746': 1 mēnesis '31556952': 1 gads - '86400': 1 day - '94670856': 3 years + '86400': 1 diena + '94670856': 3 gadi + new: + title: Izveidot jaunu IP noteikumu + no_ip_block_selected: Neviens IP noteikums netika mainīts, jo netika atlasīts + title: IP noteikumi + relationships: + title: "%{acct} attiecības" + relays: + add_new: Pievienot jaunu releju + delete: Dzēst + description_html: "<strong>Federācijas relejs</strong> ir starpniekserveris, kas apmainās ar lielu publisko ziņu apjomu starp serveriem, kas to abonē un publicē. <strong>Tas var palīdzēt maziem un vidējiem serveriem atklāt saturu no federācijas</strong>, pretējā gadījumā vietējiem lietotājiem manuāli jāseko citām personām attālos serveros." + disable: Atspējot + disabled: Atspējots + enable: Iespējot + enable_hint: Kad tas būs iespējots, tavs serveris abonēs visas publiskās ziņas no šī releja un sāks tam sūtīt šī servera publiskās ziņas. + enabled: Iespējots + inbox_url: Releja URL + pending: Gaida apstiprinājumu no releja + save_and_enable: Saglabāt un iespējot + setup: Iestatīt releja savienojumu + signatures_not_enabled: Releji nedarbosies pareizi, kamēr ir iespējots drošais režīms vai ierobežotas federācijas režīms + status: Statuss + title: Releji + report_notes: + created_msg: Ziņojuma piezīme ir veiksmīgi izveidota! + destroyed_msg: Ziņojuma piezīme ir veiksmīgi izdzēsta! + today_at: Šodien %{time} reports: + account: + notes: + one: "%{count} piezīme" + other: "%{count} piezīmes" + zero: "%{count} piezīmju" + action_log: Auditācijas pieraksti + action_taken_by: Veiktā darbība + actions: + other_description_html: Skatīt vairāk iespēju kontrolēt konta uzvedību un pielāgot saziņu ar paziņoto kontu. + 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:' + add_to_report: Pievienot varāk paziņošanai + are_you_sure: Vai esi pārliecināts? + assign_to_self: Piešķirt man + assigned: Piešķirtais moderators + by_target_domain: Ziņotā konta domēns + category: Kategorija + category_description_html: Iemesls kāpēc šis konts un / vai saturs tika ziņots, tiks minēts saziņā ar paziņoto kontu + comment: + 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 + forwarded: Pārsūtīti + forwarded_to: Pārsūtīti %{domain} + mark_as_resolved: Atzīmēt kā atrisinātu + mark_as_unresolved: Atzīmēt kā neatrisinātu + no_one_assigned: Neviena + notes: + create: Pievienot piezīmi + create_and_resolve: Atrisināt ar piezīmi + create_and_unresolve: Atvērt atkārtoti ar piezīmi + delete: Dzēst + 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 + 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! + status: Statuss + statuses: Ziņotais saturs + statuses_description_html: Pārkāpuma saturs tiks minēts saziņā ar paziņoto kontu + target_origin: Ziņotā konta izcelsme title: Ziņojumi unassign: Atsaukt unresolved: Neatrisinātie updated_at: Atjaunināts + view_profile: Skatīt profilu rules: add_new: Pievienot noteikumu delete: Dzēst @@ -464,8 +683,105 @@ lv: desc_html: Ja šī funkcija ir atspējota, tā ierobežo publisko ziņu lentu, kas ir saistīta ar galveno lapu, lai parādītu tikai vietējo saturu title: Iekļaut federēto saturu neautentificētā publiskā ziņu lentas lapā show_staff_badge: - desc_html: Parādiet personāla emblēmu lietotāja lapā + desc_html: Parāda personāla emblēmu lietotāja lapā + title: Parādīt personāla emblēmu + site_description: + desc_html: Ievadpunkts par API. Apraksti, kas padara šo Mastodon serveri īpašu, un jebko citu svarīgu. Vari izmantot HTML tagus, jo īpaši <code><a></code> un <code><em></code>. + title: Servera apraksts + site_description_extended: + desc_html: Laba vieta tavam rīcības kodeksam, noteikumiem, vadlīnijām un citām lietām, kas atšķir tavu serveri. Tu vari izmantot HTML tagus + title: Pielāgota paplašināta informācija + site_short_description: + desc_html: Tiek parādīts sānjoslā un metatagos. Vienā rindkopā apraksti, kas ir Mastodon un ar ko šis serveris ir īpašs. + title: Īss servera apraksts + site_terms: + desc_html: Tu vari uzrakstīt savu privātuma politiku, pakalpojumu sniegšanas noteikumus vai citu likumīgu. Tu vari izmantot HTML tagus + title: Pielāgoti pakalpojuma sniegšanas noteikumi + site_title: Servera nosaukums + thumbnail: + desc_html: Izmanto priekšskatījumiem, izmantojot OpenGraph un API. Ieteicams 1200x630 pikseļi + title: Servera sīkbilde + timeline_preview: + desc_html: Galvenajā lapā parādi saiti uz publisku laika skalu un ļauj API piekļūt publiskai ziņu lentai bez autentifikācijas + title: Atļaut neautentificētu piekļuvi publiskai ziņu lentai + title: Vietnes iestatījumi + trendable_by_default: + desc_html: Ietekmē tēmturus, kas iepriekš nav bijuši aizliegti + title: Ļaujiet tēmturiem mainīties bez iepriekšējas pārskatīšanas + trends: + desc_html: Publiski parādīt iepriekš pārskatītus tēmturus, kas pašlaik ir populāri + title: Populārākie tēmturi + site_uploads: + delete: Dzēst augšupielādēto failu + destroyed_msg: Vietnes augšupielāde ir veiksmīgi izdzēsta! + statuses: + back_to_account: Atpakaļ uz konta lapu + back_to_report: Atpakaļ uz paziņojumu lapu + batch: + remove_from_report: Noņemt no ziņojuma + report: Ziņojums + deleted: Dzēstie + media: + title: Mediji + no_status_selected: Neviena ziņa netika mainīta, jo neviena netika atlasīta + title: Konta ziņas + with_media: Ar medijiem + 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 + rules_check: + action: Pārvaldīt servera nosacījumus + message_html: Tu neesi definējis nevienu servera nosacījumu. + sidekiq_process_check: + message_html: Rindā(s) %{value} nedarbojas neviens Sidekiq process. Lūdzu, pārskati savu Sidekiq konfigurāciju + tags: + review: Pārskatīt statusu + updated_msg: Tēmtura uzstādījumi ir veiksmīgi atjaunināti title: Administrēšana + trends: + allow: Atļaut + approved: Apstiprināts + disallow: Neatļaut + links: + allow: Atļaut saiti + allow_provider: Atļaut publicētāju + disallow: Neatļaut saiti + disallow_provider: Neatļaut publicētāju + 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 + title: Populārākās saites + usage_comparison: Šodien kopīgots %{today} reizes, salīdzinot ar %{yesterday} vakar + pending_review: Gaida pārskatīšanu + preview_card_providers: + allowed: Šī publicētāja saites var mainīties + rejected: Saites no šī publicētāja nebūs tendence + title: Publicētāji + rejected: Noraidīts + tags: + current_score: Pašreizējais rezultāts %{score} + dashboard: + tag_accounts_measure: unikāli lietojumi + tag_languages_dimension: Populārākās valodas + tag_servers_dimension: Populārākie serveri + tag_servers_measure: dažādi serveri + tag_uses_measure: lietojumi pavisam + listable: Var tikt ieteikts + not_listable: Nevar tikt ieteikts + not_trendable: Neparādīsies pie tendencēm + not_usable: Nevar tikt lietots + peaked_on_and_decaying: Sasniedza maksimumu %{date}, tagad samazinās + title: Populārākie tēmturi + trendable: Var parādīsies pie tendencēm + trending_rank: 'Populārākie #%{rank}' + usable: Var tikt lietots + usage_comparison: Šodien lietots %{today} reizes, salīdzinot ar %{yesterday} vakar + 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 + title: Tendences warning_presets: add_new: Pievienot jaunu delete: Dzēst @@ -475,13 +791,824 @@ lv: admin_mailer: 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}) + new_report: + body: "%{reporter} ziņoja par %{target}" + body_remote: Kāds no %{domain} ziņoja par %{target} + subject: Jauns ziņojums par %{instance} (#%{id}) + new_trending_links: + body: Tālāk norādītās saites šodien ir populāras, taču to publicētāji iepriekš nav pārskatīti. Tie netiks rādīti publiski, ja vien tu tos neapstiprināsi. Turpmāki paziņojumi no tiem pašiem publicētājiem netiks ģenerēti. + no_approved_links: Pašlaik nav apstiprinātu tendenču saišu. + requirements: Viszemāk apstiprinātā populārā saite pašlaik ir “%{lowest_link_title}” ar rezultātu %{lowest_link_score}. + subject: Jaunas populāras saites ir pieejamas pārskatīšanai vietnē %{instance} + new_trending_tags: + body: 'Tālāk norādītās atsauces ir populāras, taču tās iepriekš nav pārskatītas. Tie netiks rādīti publiski, ja vien tu tās neapstiprināsi:' + no_approved_tags: Pašlaik nav apstiprinātu tendenču tēmturu. + requirements: 'Viszemāk apstiprinātais populārais tēmturis pašlaik ir #%{lowest_tag_name} ar rezultātu %{lowest_tag_score}.' + subject: Jauni populāri tēmturi ir pieejami pārskatīšanai vietnē %{instance} + aliases: + add_new: Izveidot aizstājvārdu + created_msg: Veiksmīgi izveidots jauns aizstājvārds. Tagad vari sākt pārvietošanu no vecā konta. + deleted_msg: Aizstājvārds tika veiksmīgi noņemts. Pāreja no šī konta uz šo vairs nebūs iespējama. + empty: Tev nav aizstājvārdu. + hint_html: Ja vēlies pāriet no cita konta uz šo, šeit vari izveidot aizstājvārdu, kas ir nepieciešams, lai varētu turpināt sekotāju pārvietošanu no vecā konta uz šo. Šī darbība pati par sevi ir <strong>nekaitīga un atgriezeniska</strong>. <strong>Konta migrācija tiek sākta no vecā konta</strong>. + remove: Atsaistīt aizstājvārdu + appearance: + advanced_web_interface: Paplašinātais web interfeiss + advanced_web_interface_hint: 'Ja vēlies izmantot visu ekrāna platumu, uzlabotā tīmekļa saskarne ļauj konfigurēt daudzas dažādas kolonnas, lai vienlaikus redzētu tik daudz informācijas, cik vēlies: Sākums, paziņojumi, federētā ziņu lenta, neierobežots skaits sarakstu un tēmturu.' + animations_and_accessibility: Animācijas un pieejamība + confirmation_dialogs: Apstiprināšanas dialogi + discovery: Atklājums + localization: + body: Mastodon ir tulkojuši brīvprātīgie. + guide_link: https://crowdin.com/project/mastodon + guide_link_text: Ikviens var piedalīties. + sensitive_content: Sensitīvs saturs + toot_layout: Ziņas izskats + application_mailer: + notification_preferences: Mainīt e-pasta preferences + salutation: "%{name}," + settings: 'Mainīt e-pasta preferences: %{link}' + view: 'Skatījums:' + view_profile: Skatīt profilu + view_status: Skatīt ziņu + applications: + created: Lietojumprogramma ir veiksmīgi izveidota + destroyed: Lietojumprogramma ir veiksmīgi dzēsta + invalid_url: Norādītais URL nav derīgs + regenerate_token: Atjaunot piekļuves marķieri + token_regenerated: Piekļuves marķieris veiksmīgi atjaunots + warning: Esi ļoti uzmanīgs ar šiem datiem. Nekad nedalies ne ar vienu ar tiem! + your_token: Tavs piekļuves marķieris + auth: + apply_for_account: Pieprasīt ielūgumu + change_password: Parole + checkbox_agreement_html: Es piekrītu <a href="%{rules_path}" target="_blank">servera noteikumiem</a> un <a href="%{terms_path}" target="_blank">pakalpojuma sniegšanas noteikumiem</a> + checkbox_agreement_without_rules_html: Es piekrītu <a href="%{terms_path}" target="_blank">pakalpojuma sniegšanas noteikumiem</a> + delete_account: Dzēst kontu + delete_account_html: Ja vēlies dzēst savu kontu, tu vari <a href="%{path}">turpināt šeit</a>. Tev tiks lūgts apstiprinājums. + description: + prefix_invited_by_user: "@%{name} aicina tevi pievienoties šim Mastodon serverim!" + prefix_sign_up: Reģistrējies Mastodon jau šodien! + suffix: Izmantojot kontu, tu varēsi sekot cilvēkiem, publicēt atjauninājumus un apmainīties ar ziņojumiem ar lietotājiem no jebkura Mastodon servera un daudz ko citu! + didnt_get_confirmation: Vai nesaņēmi apstiprināšanas norādījumus? + dont_have_your_security_key: Vai tev nav drošības atslēgas? + forgot_password: Aizmirsi paroli? + invalid_reset_password_token: Paroles atiestatīšanas pilnvara nav derīga, vai tai ir beidzies derīgums. Lūdzu, pieprasi jaunu. + link_to_otp: Ievadi divfaktoru kodu no tālruņa vai atkopšanas kodu + link_to_webauth: Lieto savu drošības atslēgas iekārtu + log_in_with: Pieslēgties ar + login: Pieteikties + logout: Iziet + migrate_account: Pāriešana uz citu kontu + migrate_account_html: Ja vēlies novirzīt šo kontu uz citu, tu vari <a href="%{path}">to konfigurēt šeit</a>. + or_log_in_with: Vai piesakies ar + providers: + cas: CAS + saml: SAML + register: Reģistrēties + registration_closed: "%{instance} nepieņem jaunus dalībniekus" + resend_confirmation: Atkārtoti nosūtīt apstiprinājuma norādījumus + reset_password: Atiestatīt paroli + security: Drošība + set_new_password: Iestatīt jaunu paroli + setup: + email_below_hint_html: Ja zemāk norādītā e-pasta adrese ir nepareiza, vari to nomainīt šeit un saņemt jaunu apstiprinājuma e-pastu. + email_settings_hint_html: Apstiprinājuma e-pasts tika nosūtīts uz %{email}. Ja šī e-pasta adrese nav pareiza, vari to nomainīt konta iestatījumos. + title: Iestatīt + 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. + trouble_logging_in: Problēma ar pieteikšanos? + use_security_key: Lietot drošības atslēgu + authorize_follow: + already_following: Tu jau seko šim kontam + already_requested: Tu jau esi nosūtījis sekošanas pieteikumu šim kontam + error: Diemžēl, meklējot attālināto kontu, radās kļūda + follow: Sekot + follow_request: 'Tu esi nosūtījis sekošanas pieteikumu:' + following: 'Veiksmīgi! Tu tagad seko:' + post_follow: + close: Vai vienkārši aizver šo logu. + return: Parādīt lietotāja profilu + web: Doties uz tīmekli + title: Seko %{acct} + challenge: + confirm: Turpināt + hint_html: "<strong>Padoms:</strong> Nākamās stundas laikā mēs tev vairs neprasīsim paroli." + invalid_password: Nepareiza parole + prompt: Lai turpinātu, apstiprini paroli + crypto: + errors: + invalid_key: nav derīga Ed25519 vai Curve25519 atslēga + invalid_signature: nav derīgs Ed25519 paraksts + date: + formats: + default: "%b %d, %Y" + with_month_name: "%B %d, %Y" + datetime: + distance_in_words: + about_x_hours: "%{count}st" + about_x_months: "%{count}mēn" + about_x_years: "%{count}g" + almost_x_years: "%{count}g" + half_a_minute: Tikko + less_than_x_minutes: "%{count}min" + less_than_x_seconds: Tikko + over_x_years: "%{count}g" + x_days: "%{count}d" + x_minutes: "%{count}min" + x_months: "%{count}mēn" + x_seconds: "%{count}s" + deletes: + challenge_not_passed: Tevis ievadītā informācija nebija pareiza + confirm_password: Ievadi savu pašreizējo paroli, lai pārbaudītu savu identitāti + confirm_username: Ievadi savu lietotājvārdu, lai apstiprinātu procedūru + proceed: Dzēst kontu + success_msg: Tavs konts tika veiksmīgi dzēsts + warning: + before: 'Pirms turpināt, lūdzu, uzmanīgi izlasi šīs piezīmes:' + caches: Citu serveru kešatmiņā saglabātais saturs var saglabāties + data_removal: Tavas ziņas un citi dati tiks neatgriezeniski noņemti + email_change_html: Tu vari <a href="%{path}">mainīt savu e-pasta adresi</a>, neizdzēšot savu kontu + email_contact_html: Ja tas joprojām nav saņemts, tu vari nosūtīt e-pastu <a href="mailto:%{email}">%{email}</a> lai saņemtu palīdzību + email_reconfirmation_html: Ja tu nesaņem apstiprinājuma e-pastu, tu vari <a href="%{path}">pieprsīt to vēlreiz</a> + irreversible: Tu nevarēsi atjaunot vai atkārtoti aktivizēt savu kontu + more_details_html: Plašāku informāciju skatīt <a href="%{terms_path}">privātuma politika</a>. + username_available: Tavs lietotājvārds atkal būs pieejams + username_unavailable: Tavs lietotājvārds paliks nepieejams + directories: + directory: Profila direktorija + explanation: Atklāj lietotājus, pamatojoties uz viņu interesēm + explore_mastodon: Izpētīt %{title} + domain_validator: + invalid_domain: nav derīgs domēna nosaukums errors: - '400': The request you submitted was invalid or malformed. - '403': You don't have permission to view this page. - '404': The page you are looking for isn't here. - '406': This page is not available in the requested format. - '410': The page you were looking for doesn't exist here anymore. - '422': - '429': Too many requests - '500': - '503': The page could not be served due to a temporary server failure. + '400': Tevis iesniegtais pieprasījums bija nederīgs vai nepareizi izveidots. + '403': Tev nav atļauts aplūkot šo lapu. + '404': Tevis meklētās lapas šeit nav. + '406': Šī lapa nav pieejama pieprasītajā formātā. + '410': Tevis meklētā lapa šeit vairs nepastāv. + '422': + content: Drošības pārbaude neizdevās. Vai tu bloķē sīkfailus? + title: Drošības pārbaude neizdevās + '429': Pārāk daudz pieprasījumu + '500': + content: Atvaino, bet kaut kas mūsu pusē nogāja greizi. + title: Šī lapa nav pareiza + '503': Lapu nevarēja apkalpot īslaicīgas servera kļūmes dēļ. + noscript_html: Lai izmantotu Mastodon web lietojumu, lūdzu, iespējo JavaScript. Vai arī izmēģini kādu no <a href="%{apps_path}">vietējām lietotnēm</a> Mastodon savai platformai. + existing_username_validator: + not_found: nevarēja atrast lokālo lietotāju ar šādu lietotājvārdu + not_found_multiple: nevarēja atrast %{usernames} + exports: + archive_takeout: + date: Dati + download: Lejupielādē savu arhīvu + hint_html: Tu vari pieprasīt savu <strong>ziņu un augšupielādēto mediju</strong> arhīvu. Eksportētie dati būs ActivityPub formātā, ko varēs nolasīt ar jebkuru saderīgu programmatūru. Tu vari pieprasīt arhīvu ik pēc 7 dienām. + in_progress: Notiek tava arhīva apkopošana... + request: Pieprasi savu arhīvu + size: Izmērs + blocks: Tu bloķē + bookmarks: Grāmatzīmes + csv: CSV + domain_blocks: Bloķētie domēni + lists: Saraksti + mutes: Tu apklusini + storage: Mediju krātuve + featured_tags: + add_new: Pievienot jaunu + errors: + limit: Tu jau esi piedāvājis maksimālo tēmturu skaitu + hint_html: "<strong>Kas ir piedāvātie tēmturi?</strong> Tie ir redzami tavā publiskajā profilā un ļauj cilvēkiem pārlūkot tavas publiskās ziņas tieši zem šiem tēmturiem. Tie ir lielisks līdzeklis radošu darbu vai ilgtermiņa projektu izsekošanai." + filters: + contexts: + account: Profili + home: Sākums un saraksti + notifications: Paziņojumi + public: Publiskās ziņu lentas + thread: Sarunas + edit: + title: Rediģēt filtru + errors: + invalid_context: Nav, vai piegādāts nederīgs konteksts + invalid_irreversible: Neatgriezeniskā filtrēšana darbojas tikai sākuma vai paziņojumu kontekstā + index: + delete: Dzēst + empty: Tev nav filtru. + title: Filtri + new: + title: Pievienot jaunu filtru + footer: + developers: Izstrādātāji + more: Vairāk… + resources: Resursi + trending_now: Šobrīd tendences + generic: + all: Visi + changes_saved_msg: Izmaiņas veiksmīgi saglabātas! + copy: Kopēt + delete: Dzēst + none: Neviens + order_by: Kārtot pēc + save_changes: Saglabāt izmaiņas + today: šodien + validation_errors: + one: Kaut kas vēl nav īsti kārtībā! Lūdzu, pārskati zemāk norādīto kļūdu + other: Kaut kas vēl nav īsti kārtībā! Lūdzu, pārskati %{count} kļūdas zemāk + zero: "%{count} kļūdu" + html_validator: + invalid_markup: 'satur nederīgu HTML marķējumu: %{error}' + imports: + errors: + over_rows_processing_limit: satur vairāk, nekā %{count} rindas + modes: + merge: Savienot + merge_long: Saglabāt esošos ierakstus un pievienot jaunus + overwrite: Pārrakstīt + overwrite_long: Nomainīt pašreizējos ierakstus ar jauniem + preface: Tu vari importēt datus, kurus esi eksportējis no cita servera, piemēram, to personu sarakstu, kurām tu seko vai kuras bloķē. + success: Tavi dati tika veiksmīgi augšupielādēti un tiks apstrādāti noteiktajā laikā + types: + blocking: Bloķēšanas saraksts + bookmarks: Grāmatzīmes + domain_blocking: Domēnu bloķēšanas saraksts + following: Šāds saraksts + muting: Izslēgšanas saraksts + upload: Augšupielādēt + in_memoriam_html: Piemiņai. + invites: + delete: Deaktivizēt + expired: Beigušies + expires_in: + '1800': 30 minūtes + '21600': 6 stundas + '3600': 1 stunda + '43200': 12 stundas + '604800': 1 nedēļa + '86400': 1 diena + expires_in_prompt: Nekad + generate: Ģenerēt uzaicinājuma saiti + invited_by: 'Tevi uzaicināja:' + max_uses: + one: 1 lietojums + other: "%{count} lietojumi" + zero: "%{count} lietojumu" + max_uses_prompt: Nav ierobežojuma + prompt: Izveido un kopīgo saites ar citiem, lai piešķirtu piekļuvi šim serverim + table: + expires_at: Beidzas + uses: Lieto + title: Uzaicināt cilvēkus + lists: + errors: + limit: Esi sasniedzis maksimālo sarakstu skaitu + login_activities: + authentication_methods: + otp: divfaktoru autentifikācijas lietotne + password: parole + sign_in_token: e-pasta drošības kods + webauthn: drošības atslēgas + description_html: Ja pamani darbības, kuras tu neatpazīsti, apsver iespēju nomainīt savu paroli un iespējot divfaktoru autentifikāciju. + empty: Nav pieejama autentifikācijas vēsture + failed_sign_in_html: Neizdevies pierakstīšanās mēģinājums ar %{method} no %{ip} (%{browser}) + successful_sign_in_html: Veiksmīga pierakstīšanās ar %{method} no %{ip} (%{browser}) + title: Autentifikācijas vēsture + media_attachments: + validations: + images_and_video: Nevar pievienot videoklipu tādai ziņai, kura jau satur attēlus + not_ready: Nevar pievienot failus, kuru apstrāde nav pabeigta. Pēc brīža mēģini vēlreiz! + too_many: Nevar pievienot vairāk kā 4 failus + migrations: + acct: Pārcēlās uz + cancel: Atcelt novirzīšanu + cancel_explanation: Atceļot novirzīšanu, tavs pašreizējais konts tiks atkārtoti aktivizēts, taču netiks atgriezti sekotāji, kas ir pārvietoti uz šo kontu. + cancelled_msg: Novirzīšana sekmīgi atcelta. + errors: + already_moved: ir tas pats konts, uz kuru jau esi pārcēlies + missing_also_known_as: nav šī konta aizstājvārds + move_to_self: nevar būt šis pats konts + not_found: nevarēja atrast + on_cooldown: Tu esi atpūtā + followers_count: Sekotāji pārvietošanās brīdī + incoming_migrations: Pārnākšana no cita konta + incoming_migrations_html: Lai pārnāktu no cita konta uz šo, vispirms tev <a href="%{path}">jāizveido konta aizstājvārds</a>. + moved_msg: Tavs konts tagad tiek novirzīts uz %{acct}, un tavi sekotāji tiek pārvietoti. + not_redirecting: Tavs konts pašlaik netiek novirzīts uz jebkādu citu kontu. + on_cooldown: Tu nesen migrēji savu kontu. Šī funkcija atkal būs pieejama pēc %{count} dienām. + past_migrations: Pagātnes migrācijas + proceed_with_move: Pārvietot sekotājus + redirected_msg: Tavs konts tagad tiek novirzīts uz %{acct}. + redirecting_to: Tavs konts tiek novirzīts uz %{acct}. + set_redirect: Iestatīt novirzīšanu + warning: + backreference_required: Jaunais konts vispirms ir jākonfigurē, lai tas atsauktos uz šo kontu + before: 'Pirms turpināt, lūdzu, uzmanīgi izlasi šīs piezīmes:' + cooldown: Pēc pārcelšanās ir gaidīšanas periods, kura laikā tu vairs nevarēsi pārvietoties + disabled_account: Tavs pašreizējais konts pēc tam nebūs pilnībā lietojams. Tomēr tev būs piekļuve datu eksportēšanai, kā arī atkārtotai aktivizēšanai. + followers: Veicot šo darbību, visi sekotāji tiks pārvietoti no pašreizējā konta uz jauno kontu + only_redirect_html: Citādāk tu vari arī <a href="%{path}">savā profilā ievietot tikai novirzīšanu</a>. + other_data: Nekādi citi dati netiks automātiski pārvietoti + redirect: Tava pašreizējā konta profils tiks atjaunināts ar novirzīšanas paziņojumu un tiks izslēgts no meklēšanas + moderation: + title: Moderācija + move_handler: + carry_blocks_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji bloķējis. + carry_mutes_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji apklusinājis. + copy_account_note_text: 'Šis lietotājs pārcēlās no %{acct}, šeit bija tavas iepriekšējās piezīmes par viņu:' + notification_mailer: + digest: + action: Rādīt visus paziņojumus + body: Šeit ir īss kopsavilkums par ziņojumiem, kurus tu esi palaidis garām kopš pēdējā apmeklējuma %{since} + mention: "%{name} pieminēja tevi:" + new_followers_summary: + one: Tāpat, atrodoties prom, esi ieguvis vienu jaunu sekotāju! Jip! + other: Turklāt, atrodoties prom, esi ieguvis %{count} jaunus sekotājus! Apbrīnojami! + zero: "%{count} jaunu sekotāju!" + subject: + one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma \U0001F418" + other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma \U0001F418" + zero: "%{count} jaunu paziņojumu" + title: Tavas prombūtnes laikā... + favourite: + body: 'Tavu ziņu izlasei pievienoja %{name}:' + subject: "%{name} pievienoja tavu ziņu izlasei" + title: Jauns izcēlums + follow: + body: "%{name} tagad tev seko!" + subject: "%{name} tagad tev seko" + title: Jauns sekotājs + follow_request: + action: Pārvaldīt sekošanas pieprasījumus + body: "%{name} vēlas tev sekot" + subject: 'Gaidošs sekotājs: %{name}' + title: Jauns sekotāja pieprasījums + mention: + action: Atbildēt + body: 'Tevi pieminēja %{name}:' + subject: Tevi pieminēja %{name} + title: Jauna pieminēšana + poll: + subject: "%{name} aptauja ir beigusies" + reblog: + body: 'Tavu ziņu paaugstināja %{name}:' + subject: "%{name} paaugstināja tavu ziņu" + title: Jauns stimuls + status: + subject: "%{name} tikko publicēja" + notifications: + email_events: E-pasta paziņojumu notikumi + email_events_hint: 'Atlasi notikumus, par kuriem vēlies saņemt paziņojumus:' + other_settings: Citu paziņojumu iestatījumi + number: + human: + decimal_units: + format: "%n%u" + units: + billion: B + million: M + quadrillion: Q + thousand: K + trillion: T + otp_authentication: + code_hint: Lai apstiprinātu, ievadi autentifikācijas lietotnes ģenerēto kodu + description_html: Ja iespējosi <strong>divfaktoru autentifikāciju</strong>, izmantojot autentifikatora lietotni, lai pieteiktos, tev būs nepieciešams tālrunis, kas ģenerēs ievadāmos marķierus. + enable: Iespējot + instructions_html: "<strong>Skenē šo QR kodu Google Authenticator vai līdzīgā TOTP lietotnē savā tālrunī</strong>. No šī brīža šī lietotne ģenerēs marķierus, kas tev būs jāievada, piesakoties." + manual_instructions: 'Ja nevari noskenēt QR kodu un tas ir jāievada manuāli, šeit ir noslēpums vienkāršā tekstā:' + setup: Iestatīt + wrong_code: Ievadītais kods nebija derīgs! Vai servera laiks un ierīces laiks ir pareizs? + pagination: + newer: Jaunāks + next: Nākamais + older: Vecāks + prev: Iepr + truncate: "…" + polls: + errors: + already_voted: Šajā aptaujā tu esi jau balsojis + duplicate_options: satur dublētus vienumus + duration_too_long: ir pārāk tālu nākotnē + duration_too_short: ir par agru + expired: Aptauja jau ir beigusies + invalid_choice: Izvēlētā balsošanas iespēja nepastāv + over_character_limit: katrs nedrīkst būt garāks par %{max} rakstzīmēm + too_few_options: jābūt vairāk nekā vienam vienumam + too_many_options: nevar saturēt vairāk par %{max} vienumiem + preferences: + other: Citi + posting_defaults: Publicēšanas noklusējuma iestatījumi + public_timelines: Publiskās ziņu lentas + reactions: + errors: + limit_reached: Sasniegts dažādu reakciju limits + unrecognized_emoji: nav atpazīta emocijzīme + relationships: + activity: Konta aktivitāte + dormant: Snaudošie + follow_selected_followers: Sekot atlasītajiem sekotājiem + followers: Sekotāji + following: Seko + invited: Uzaicinātie + last_active: Pēdējā aktivitāte + most_recent: Jaunākais + moved: Pārvietots + mutual: Savstarpējs + primary: Primārais + relationship: Attiecības + remove_selected_domains: Noņemt visus sekotājus no atlasītajiem domēniem + remove_selected_followers: Noņemt atlasītos sekotājus + remove_selected_follows: Pārtraukt sekošanu atlasītajiem lietotājiem + status: Konta statuss + remote_follow: + acct: Ievadi savu lietotajvards@domens, no kura vēlies darboties + missing_resource: Nevarēja atrast tavam kontam nepieciešamo novirzīšanas URL + no_account_html: Vai tev nav konta? Tu vari <a href='%{sign_up_path}' target='_blank'>piereģistrēties šeit</a> + proceed: Turpini lai sekotu + prompt: 'Tu gatavojies sekot:' + reason_html: "<strong> Kāpēc šis solis ir nepieciešams?</strong> <code>%{instance}</code>, iespējams, nav serveris, kurā esi reģistrēts, tāpēc mums vispirms ir jānovirza tevi uz tavu mājas serveri." + remote_interaction: + favourite: + proceed: Pārej uz izlasi + prompt: 'Tu vēlies pievienot izlasei šo ziņu:' + reblog: + proceed: Turpini paaugstināt + prompt: 'Tu vēlies paugstināt šo ziņu:' + reply: + proceed: Turpini lai atbildētu + prompt: 'Tu vēlies atbildēt uz šo ziņu:' + reports: + errors: + invalid_rules: neatsaucas uz derīgiem noteikumiem + scheduled_statuses: + over_daily_limit: Tu esi pārsniedzis šodien ieplānoto %{limit} ziņu ierobežojumu + over_total_limit: Tu esi pārsniedzis ieplānoto %{limit} ziņu ierobežojumu + too_soon: Ieplānotajam datumam ir jābūt nākotnē + sessions: + activity: Pēdējā aktivitāte + browser: Pārlūks + browsers: + alipay: Alipay + blackberry: Blackberry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox + generic: Nezināms pārlūks + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Nokia S40 Ovi Browser + opera: Opera + otter: Otter + phantom_js: PhantomJS + qq: QQ Browser + safari: Safari + uc_browser: UCBrowser + weibo: Weibo + current_session: Pašreizējā sesija + description: "%{browser} uz %{platform}" + explanation: Šīs ir tīmekļa pārlūkprogrammas, kurās pašlaik esi pieteicies savā Mastodon kontā. + ip: IP + platforms: + adobe_air: Adobe Air + android: Android + blackberry: Blackberry + chrome_os: Chrome OS + firefox_os: Firefox OS + ios: iOS + linux: Linux + mac: macOS + other: nezināma platforma + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone + revoke: Atsaukt + revoke_success: Sesija veiksmīgi atsaukta + title: Sesijas + view_authentication_history: Skatīt sava konta autentifikācijas vēsturi + settings: + account: Konts + account_settings: Konta iestatījumi + aliases: Konta aizstājvārdi + appearance: Izskats + authorized_apps: Autorizētās lietotnes + back: Atgriezties Mastodon + delete: Konta dzēšana + development: Izstrāde + edit_profile: Rediģēt profilu + export: Datu eksports + featured_tags: Piedāvātie tēmturi + import: Imports + import_and_export: Imports un eksports + migrate: Konta migrācija + notifications: Paziņojumi + preferences: Iestatījumi + profile: Profils + relationships: Man seko un sekotāji + statuses_cleanup: Automātiska ziņu dzēšana + two_factor_authentication: Divfaktoru Aut + webauthn_authentication: Drošības atslēgas + statuses: + attached: + audio: + one: "%{count} audio" + other: "%{count} audio" + zero: "%{count} audio" + description: 'Pievienots: %{attached}' + image: + one: "%{count} attēls" + other: "%{count} attēli" + zero: "%{count} attēlu" + video: + one: "%{count} video" + other: "%{count} video" + zero: "%{count} video" + boosted_from_html: Paaugstināja %{acct_link} + content_warning: 'Satura brīdinājums: %{warning}' + default_language: Tāda, kā interfeisa valoda + disallowed_hashtags: + one: 'saturēja neatļautu tēmturi: %{tags}' + other: 'saturēja neatļautus tēmturus: %{tags}' + zero: 'neatļauti tēmturi: %{tags}' + edited_at: Rediģēts %{date} + errors: + in_reply_not_found: Šķiet, ka ziņa, uz kuru tu mēģini atbildēt, nepastāv. + open_in_web: Atvērt webā + over_character_limit: pārsniegts %{max} rakstzīmju ierobežojums + pin_errors: + direct: Ziņojumus, kas ir redzami tikai minētajiem lietotājiem, nevar piespraust + limit: Tu jau esi piespraudis maksimālo ziņu skaitu + ownership: Citas personas ziņu nevar piespraust + reblog: Paaugstinātās ziņas nevar piespraust + poll: + total_people: + one: "%{count} persona" + other: "%{count} personas" + zero: "%{count} personu" + total_votes: + one: "%{count} balss" + other: "%{count} balsis" + zero: "%{count} balsu" + vote: Balsu skaits + show_more: Rādīt vairāk + show_newer: Nekad nerādīt + show_older: Rādīt senākus + show_thread: Rādīt tematu + sign_in_to_participate: Lai piedalītos sarunā, pieraksties + title: "%{name}: “%{quote}”" + visibilities: + direct: Tiešs + private: Tikai sekotājiem + private_long: Rādīt tikai sekotājiem + public: Publisks + public_long: Visi var redzēt + unlisted: Neiekļautie + unlisted_long: Ikviens var redzēt, bet nav norādīts publiskajā ziņu lentā + statuses_cleanup: + enabled: Automātiski dzēst vecās ziņas + enabled_hint: Automātiski izdzēš tavas ziņas, tiklīdz tās sasniedz noteiktu vecuma slieksni, ja vien tās neatbilst kādam no tālāk norādītajiem izņēmumiem + exceptions: Izņēmumi + explanation: Tā kā ziņu dzēšana ir dārga darbība, tā tiek veikta lēnām laika gaitā, kad serveris nav citādi aizņemts. Šī iemesla dēļ tavas ziņas var tikt izdzēstas kādu laiku pēc vecuma sliekšņa sasniegšanas. + ignore_favs: Ignorēt izlasi + ignore_reblogs: Ignorēt paaugstinātās + interaction_exceptions: Izņēmumi, kuru pamatā ir mijiedarbība + interaction_exceptions_explanation: Ņem vērā, ka nav garantijas, ka ziņas tiks dzēstas, ja tās ir zemākas par izlases vai paaugstinājuma slieksni pēc to pārsniegšanas. + keep_direct: Saglabāt tiešos ziņojumus + keep_direct_hint: Nedzēš nevienu tavu tiešo ziņojumu + keep_media: Saglabāt ziņas ar mediju pielikumiem + keep_media_hint: Neizdzēš nevienu no tavām ziņām, kurām ir mediju pielikumi + keep_pinned: Saglabāt piespraustās ziņas + keep_pinned_hint: Nedzēš nevienu tavis piesprausto ziņu + keep_polls: Saglabāt aptaujas + keep_polls_hint: Nedzēš nevienu tavu aptauju + keep_self_bookmark: Saglabāt ziņas, kuras esi pievienojis grāmatzīmēm + keep_self_bookmark_hint: Neizdzēš tavas ziņas, ja esi tās pievienojis grāmatzīmēm + keep_self_fav: Saglabāt ziņas, kuras esi pievienojis izlasei + keep_self_fav_hint: Neizdzēš tavas ziņas, ja esi tās pievienojis izlasei + min_age: + '1209600': 2 nedēļas + '15778476': 6 mēneši + '2629746': 1 mēnesis + '31556952': 1 gads + '5259492': 2 mēneši + '63113904': 2 gadi + '7889238': 3 mēneši + min_age_label: Vecuma slieksnis + min_favs: Saglabāt ziņas izlsasē vismaz + min_favs_hint: Nedzēš nevienu tavu ziņu, kas ir saņēmusi vismaz tik daudz izlases. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to izlases skaita + min_reblogs: Saglabāt ziņas paaugstinātas vismaz + min_reblogs_hint: Neizdzēš nevienu no tavām ziņām, kas ir paaugstinātas vismaz tik reižu. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to paaugstinājumu skaita + stream_entries: + pinned: Piespraustā ziņa + reblogged: paaugstinātās + sensitive_content: Sensitīvs saturs + tags: + does_not_match_previous_name: nesakrīt ar iepriekšējo nosaukumu + terms: + body_html: | + <h2>Privātuma politika</h2> + <h3 id="collect">Kādu informāciju mēs apkopojam?</h3> + + <ul> + <li><em>Konta pamatinformācija</em>: Ja tu reģistrējies šajā serverī, iespējams, tev tiks lūgts ievadīt lietotājvārdu, e-pasta adresi un paroli. Vari arī ievadīt papildu profila informāciju, piemēram, parādāmo vārdu un biogrāfiju, kā arī augšupielādēt profila attēlu un galvenes attēlu. Lietotājvārds, parādāmais vārds, biogrāfija, profila attēls un galvenes attēls vienmēr ir publiski.</li> + <li><em>Ziņas, sekošana un cita publiska informācija</em>: To personu saraksts, kurām tu seko, ir publiski pieejams, tas pats attiecas uz taviem sekotājiem. Iesniedzot ziņojumu, tiek saglabāts datums un laiks, kā arī pieteikums, no kura iesniedzi ziņojumu. Ziņojumos var būt mediju pielikumi, piemēram, attēli un videoklipi. Publiskās un nerindotās ziņas ir pieejamas publiski. Ja savā profilā ievieto ziņu, tā ir arī publiski pieejama informācija. Ziņas tiek piegādātas taviem sekotājiem, dažos gadījumos tas nozīmē, ka tās tiek piegādātas uz dažādiem serveriem un tur tiek glabātas to kopijas. Dzēšot ziņas, tas tāpat tiek piegādāts taviem sekotājiem. Atkārtota emuāra pievienošana vai citas ziņas pievienošana izlasei vienmēr ir publiskas.</li> + <li><em>Tiešas un tikai sekotāju ziņas</em>: Visas ziņas tiek glabātas un apstrādātas serverī. Tikai sekotājiem paredzētās ziņas tiek piegādātas taviem sekotājiem un tajās minētajiem lietotājiem, un tiešās ziņas tiek piegādātas tikai tajās minētajiem lietotājiem. Dažos gadījumos tas nozīmē, ka tās tiek piegādātas uz dažādiem serveriem un tur tiek saglabātas kopijas. Mēs godprātīgi cenšamies ierobežot piekļuvi šīm ziņām tikai pilnvarotām personām, taču citiem serveriem tas var neizdoties. Tāpēc ir svarīgi pārskatīt serverus, kuriem pieder tavi sekotāji. Iestatījumos varat manuāli pārslēgt iespēju apstiprināt un noraidīt jaunus sekotājus. <em>Lūdzu, ņemiet vērā, ka servera operatori un jebkura saņēmēja servera operatori var skatīt šādus ziņojumus</em> un adresāti var uzņemt to ekrānšāviņus, kopēt vai citādi atkārtoti kopīgot. <em>Nekopīgo nekādu sensitīvu informāciju, izmantojot Mastodon.</em></li> + <li><em>IP un citi metadati</em>: Kad tu piesakies, mēs ierakstām IP adresi, no kuras piesakies, kā arī tavu pārlūkprogrammas un/vai lietojumprogrammas nosaukumu. Visas pieteikušās sesijas ir pieejamas iestatījumos pārskatīšanai un atsaukšanai. Pēdējā izmantotā IP adrese tiek glabāta līdz 12 mēnešiem. Mēs varam arī saglabāt servera žurnālus, kuros ir iekļauta katra mūsu serverim nosūtītā pieprasījuma IP adrese.</li> + </ul> + + <hr class="spacer" /> + + <h3 id="use">Kam mēs izmantojam tavu informāciju?</h3> + + <p>Jebkuru informāciju, ko mēs apkopojam par tevi, var izmantot šādos veidos:</p> + + <ul> + <li>Lai nodrošinātu Mastodon pamatfunkcionalitāti. Tu vari mijiedarboties ar citu personu saturu un izlikt savu saturu tikai tad, kad esi pieteicies. Piemēram, tu vari sekot citām personām, lai skatītu viņu apvienotās ziņas savā personalizētajā mājas laika skalā.</li> + <li>Lai palīdzētu regulēt kopienu, piemēram, salīdzinot tavu IP adresi ar citām zināmām, lai noteiktu izvairīšanos no aizlieguma vai citus pārkāpumus.</li> + <li>Tevis norādītā e-pasta adrese var tikt izmantota, lai nosūtītu tev informāciju, paziņojumus par citām personām, kas mijiedarbojas ar tavu saturu vai sūta tev ziņojumus, kā arī atbildētu uz jautājumiem un/vai citiem pieprasījumiem vai jautājumiem.</li> + </ul> + + <hr class="spacer" /> + + <h3 id="protect">Kā mēs aizsargājam tavu informāciju?</h3> + + <p>Mēs ieviešam dažādus drošības pasākumus, lai saglabātu tavas personiskās informācijas drošību, kad ievadi, iesniedz vai piekļūsti savai personas informācijai. Cita starpā pārlūkprogrammas sesija, kā arī datplūsma starp lietojumprogrammām un API ir aizsargāta ar SSL, un tava parole tiek sajaukta, izmantojot spēcīgu vienvirziena algoritmu. Vari iespējot divu faktoru autentifikāciju, lai vēl vairāk aizsargātu piekļuvi savam kontam.</p> + + <hr class="spacer" /> + + <h3 id="use">Kam mēs izmantojam tavu informāciju?</h3> + + <p>Jebkuru informāciju, ko mēs apkopojam no jums, var izmantot šādos veidos:</p> + + <ul> + <li>Lai nodrošinātu Mastodon pamatfunkcionalitāti. Jūs varat mijiedarboties ar citu personu saturu un izlikt savu saturu tikai tad, kad esat pieteicies. Piemēram, varat sekot citām personām, lai skatītu viņu apvienotās ziņas savā personalizētajā mājas laika skalā.</li> + <li>Lai palīdzētu regulēt kopienu, piemēram, salīdzinot jūsu IP adresi ar citām zināmām, lai noteiktu izvairīšanos no aizlieguma vai citus pārkāpumus.</li> + <li>Jūsu norādītā e-pasta adrese var tikt izmantota, lai nosūtītu jums informāciju, paziņojumus par citām personām, kas mijiedarbojas ar jūsu saturu vai sūta jums ziņojumus, kā arī atbildētu uz jautājumiem un/vai citiem pieprasījumiem vai jautājumiem.</li> + </ul> + + <hr class="spacer" /> + + <h3 id="data-retention">Kāda ir mūsu datu saglabāšanas politika?</h3> + + <p>Mēs godprātīgi centīsimies:</p> + + <ul> + <li>Saglabājiet servera žurnālus, kuros ir visu šim serverim nosūtīto pieprasījumu IP adrese, ciktāl šādi žurnāli tiek glabāti, ne ilgāk kā 90 dienas.</li> + <li>Saglabājiet ar reģistrētajiem lietotājiem saistītās IP adreses ne ilgāk kā 12 mēnešus.</li> + </ul> + + <p>Varat pieprasīt un lejupielādēt sava satura arhīvu, tostarp ziņas, multivides pielikumus, profila attēlu un galvenes attēlu.</p> + + <p>Jūs jebkurā laikā varat neatgriezeniski izdzēst savu kontu.</p> + + <hr class="spacer"/> + + <h3 id="cookies">Vai mēs izmantojam sīkfailus?</h3> + + <p>Jā. Sīkfaili ir mazi faili, ko vietne vai tās pakalpojumu sniedzējs pārsūta uz jūsu datora cieto disku, izmantojot jūsu tīmekļa pārlūkprogrammu (ja atļaujat). Šīs sīkdatnes ļauj vietnei atpazīt jūsu pārlūkprogrammu un, ja jums ir reģistrēts konts, saistīt to ar jūsu reģistrēto kontu.</p> + + <p>Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu preferences turpmākiem apmeklējumiem.</p> + + <hr class="spacer" /> + + <h3 id="disclose">Vai mēs izpaužam kādu informāciju ārējām pusēm?</h3> + + <p>Mēs nepārdodam, netirgojam vai citādi nenododam ārējām pusēm jūsu personu identificējošo informāciju. Tas neietver uzticamas trešās puses, kas palīdz mums darboties mūsu vietnē, veikt mūsu uzņēmējdarbību vai apkalpot jūs, ja vien šīs puses piekrīt saglabāt šīs informācijas konfidencialitāti. Mēs varam arī izpaust jūsu informāciju, ja uzskatām, ka tā ir piemērota, lai ievērotu likumus, īstenotu mūsu vietnes politikas vai aizsargātu mūsu vai citu tiesības, īpašumu vai drošību.</p> + + <p>Jūsu publisko saturu var lejupielādēt citi tīkla serveri. Jūsu publiskās un tikai sekotājiem paredzētās ziņas tiek piegādātas serveros, kur atrodas jūsu sekotāji, un tiešie ziņojumi tiek piegādāti adresātu serveriem, ja šie sekotāji vai adresāti atrodas citā serverī, nevis šajā.</p> + + <p>Kad jūs pilnvarojat lietojumprogrammu izmantot jūsu kontu, atkarībā no jūsu apstiprināto atļauju apjoma, tā var piekļūt jūsu publiskā profila informācijai, jūsu sekojošajam sarakstam, jūsu sekotājiem, sarakstiem, visām jūsu ziņām un jūsu izlasei. Lietojumprogrammas nekad nevar piekļūt jūsu e-pasta adresei vai parolei.</p> + + <hr class="spacer" /> + + <h3 id="children">Vietnes lietojums bērniem</h3> + + <p>Ja šis serveris atrodas ES vai EEZ: mūsu vietne, produkti un pakalpojumi ir paredzēti personām, kuras ir vismaz 16 gadus vecas. Ja esat jaunāks par 16 gadiem, neizmantojiet šo vietni atbilstoši GDPR (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">Vispārīgās datu aizsardzības regulas</a>) prasībām..</p> + + <p>Ja šis serveris atrodas ASV: mūsu vietne, produkti un pakalpojumi ir paredzēti personām, kuras ir vismaz 13 gadus vecas. Ja esat jaunāks par 13 gadiem, saskaņā ar COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children's Online Privacy Protection Act</a>) prasībām neizmantojiet šajā vietnē.</p> + + <p>Tiesību prasības var atšķirties, ja šis serveris atrodas citā jurisdikcijā.</p> + + <hr class="spacer" /> + + <h3 id="changes">Izmaiņas mūsu konfidencialitātes politikā</h3> + + <p>Ja mēs nolemsim mainīt savu konfidencialitātes politiku, mēs publicēsim šīs izmaiņas šajā lapā.</p> + + <p>Šis dokuments ir CC-BY-SA. Pēdējo reizi tas tika atjaunināts 2018. gada 7. martā.</p> + + <p>Sākotnēji pielāgots no <a href="https://github.com/discourse/discourse">Discourse konfidencialitātes politikas</a>.</p> + title: "%{instance} Pakalpojuma Noteikumi un Privātuma Politika" + themes: + contrast: Mastodon (Augsts kontrasts) + default: Mastodon (Tumšs) + mastodon-light: Mastodon (Gaišs) + time: + formats: + default: "%b %d, %Y, %H:%M" + month: "%b %Y" + time: "%H:%M" + two_factor_authentication: + add: Pievienot + disable: Atspējot 2FA + disabled_success: Divfaktoru autentifikācija veiksmīgi atspējota + edit: Rediģēt + enabled: Divfaktoru autentifikācija ir iespējota + enabled_success: Divfaktoru autentifikācija veiksmīgi iespējota + generate_recovery_codes: Ģenerēt atkopšanas kodus + lost_recovery_codes: Atkopšanas kodi ļauj atgūt piekļuvi tavam kontam, ja pazaudē tālruni. Ja esi pazaudējis atkopšanas kodus, tu vari tos ģenerēt šeit. Tavi vecie atkopšanas kodi tiks anulēti. + methods: Divfaktoru metodes + otp: Autentifikātora lietotne + recovery_codes: Veidot atkopšanas kodu rezerves kopijas + recovery_codes_regenerated: Atkopšanas kodi veiksmīgi atjaunoti + 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: + 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 + title: Arhīva līdzņemšana + sign_in_token: + details: 'Šeit ir sīkāka informācija par mēģinājumu:' + explanation: 'Mēs atklājām mēģinājumu pierakstīties tavā kontā no neatpazītas IP adreses. Ja tas esi tu, lūdzu, ievadi zemāk esošo drošības kodu pierakstīšanās izaicinājumu lapā:' + further_actions: 'Ja tas nebiji tu, lūdzu, nomaini paroli un savā kontā iespējo divfaktoru autentifikāciju. To var izdarīt šeit:' + subject: Lūdzu, apstiprini pierakstīšanās mēģinājumu + title: Pierakstīšanās mēģinājums + warning: + categories: + spam: Spams + violation: Saturs pārkāpj šādas kopienas pamatnostādnes + explanation: + delete_statuses: Ir konstatēts, ka daži no jūsu ierakstiem pārkāpj vienu vai vairākas kopienas vadlīnijas, un pēc tam %{instance} moderatori tos ir izdzēsuši. Turpmāki pārkāpumi var novest pie bargākiem soda pasākumiem pret jūsu kontu. + disable: Tu vairs nevari izmantot savu kontu, taču tavs profils un citi dati paliek neskarti. Tu vari pieprasīt savu datu dublējumu, mainīt konta iestatījumus vai dzēst kontu. + sensitive: No šī brīža visi augšupielādētie mediju faili tiks atzīmēti kā sensitīvi un paslēpti aiz klikšķa brīdinājuma. + silence: Tu joprojām vari izmantot savu kontu, taču tikai tie cilvēki, kuri jau tev seko, redzēs tavas ziņas šajā serverī, un tev var tikt liegtas dažādas atklāšanas funkcijas. Tomēr citi joprojām var tev manuāli sekot. + 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 + disable: Tavs konts %{acct} tika iesaldēts + none: Brīdinājums par %{acct} + sensitive: Tavi mediju faili %{acct} turpmāk tiks marķēti kā sensitīvi + silence: Tavs konts %{acct} tika ierobežots + suspend: Tava konta %{acct} darbība ir apturēta + title: + delete_statuses: Izdzēstās ziņas + disable: Konts iesaldēts + none: Brīdinājums + sensitive: Paslēptie mediji + silence: Konts ierobežots + suspend: Konts apturēts + welcome: + edit_profile_action: Iestatīt profilu + edit_profile_step: Vari pielāgot savu profilu, augšupielādējot avataru, galveni, mainot parādāmo vārdu un daudz ko citu. Ja vēlies pārskatīt jaunus sekotājus, pirms viņiem ir atļauts tev sekot, tu vari bloķēt savu kontu. + explanation: Šeit ir daži padomi, kā sākt darbu + final_action: Sāc publicēt + final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā un atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.' + full_handle: Tavs pilnais rokturis + full_handle_hint: Šis ir tas, ko tu pasaki saviem draugiem, lai viņi varētu tev ziņot vai sekot tev no cita servera. + review_preferences_action: Mainīt preferences + review_preferences_step: Noteikti iestati savas preferences, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu. + subject: Laipni lūgts Mastodon + tip_federated_timeline: Apvienotā ziņu lenta ir skats caur ugunsdzēsības šļūteni uz Mastodon tīklu. Bet tajā ir iekļauti tikai tie cilvēki, kurus abonē tavi kaimiņi, tāpēc tas nav pilnīgs. + tip_following: Pēc noklusējuma tu seko sava servera administratoram(-iem). Lai atrastu vairāk interesantu cilvēku, pārbaudi vietējās un federālās ziņu lentas. + tip_local_timeline: Vietējā ziņu lenta ir skats caur ugunsdzēsības šļūteni uz %{instance}. Tie ir tavi tuvākie kaimiņi! + tip_mobile_webapp: Ja tava mobilā pārlūkprogramma piedāvā pievienot Mastodon sākuma ekrānam, vari saņemt push paziņojumus. Daudzējādi tā darbojas kā vietējā lietotne! + tips: Padomi + title: Laipni lūgts uz borta, %{name}! + users: + follow_limit_reached: Tu nevari sekot vairāk par %{limit} cilvēkiem + generic_access_help_html: Vai nevari piekļūt savam kontam? Lai saņemtu palīdzību, tu vari sazināties ar %{email} + invalid_otp_token: Nederīgs divfaktora kods + invalid_sign_in_token: Nederīgs drošības kods + otp_lost_help_html: Ja esi zaudējis piekļuvi abiem, tu vari sazināties ar %{email} + seamless_external_login: Tu esi pieteicies, izmantojot ārēju pakalpojumu, tāpēc paroles un e-pasta iestatījumi nav pieejami. + signed_in_as: 'Pierakstījies kā:' + suspicious_sign_in_confirmation: Šķiet, ka tu iepriekš neesi pieteicies no šīs ierīces, tāpēc mēs nosūtām drošības kodu uz tavu e-pasta adresi, lai apstiprinātu, ka tas esi tu. + verification: + explanation_html: 'Tu vari <strong>apstiprināt sevi kā sava profila metadatos esošo saišu īpašnieku</strong>. Lai to izdarītu, saistītajā vietnē ir jābūt saitei uz tavu Mastodon profilu. Atpakaļsaitē <strong>jābūt</strong> atribūtam <code>rel="me"</code>. Saites teksta saturam nav nozīmes. Šeit ir piemērs:' + verification: Pārbaude + webauthn_credentials: + add: Pievienot jaunu drošības atslēgu + create: + error: Pievienojot drošības atslēgu, radās problēma. Lūdzu mēģini vēlreiz. + success: Tava drošības atslēga tika veiksmīgi pievienota. + delete: Dzēst + delete_confirmation: Vai tiešām vēlies dzēst šo drošības atslēgu? + description_html: Ja iespējosi <strong>drošības atslēgas autentifikāciju</strong>, piesakoties būs jāizmanto viena no tavām drošības atslēgām. + destroy: + error: Dzēšot tavu drošības atslēgu, radās problēma. Lūdzu mēģini vēlreiz. + success: Tava drošības atslēga tika veiksmīgi izdēsta. + invalid_credential: Nederīga drošības atslēga + nickname_hint: Ievadi savas jaunās drošības atslēgas segvārdu + not_enabled: Tu vel neesi iespējojis WebAuthn + not_supported: Šī pārlūkprogramma neatbalsta drošības atslēgas + otp_required: Lai izmantotu drošības atslēgas, lūdzu, vispirms iespējo divfaktoru autentifikāciju. + registered_on: Reģistrēts %{date} diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 1d6cbaf22..47ed7ed1c 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -46,7 +46,6 @@ ml: accounts: add_email_domain_block: ഇ-മെയിൽ ഡൊമെയ്ൻ തടയുക approve: അംഗീകരിക്കുക - approve_all: എല്ലാം അംഗീകരിക്കുക are_you_sure: നിങ്ങൾക്ക് ഉറപ്പാണോ? avatar: അവതാർ by_domain: മേഖല diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 3305c17c9..b38b9279a 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -95,7 +95,6 @@ ms: accounts: add_email_domain_block: Sekat domain e-mel approve: Luluskan - approve_all: Luluskan semua approved_msg: Berjaya meluluskan permohonan pendaftaran %{username} are_you_sure: Adakah anda pasti? avatar: Avatar @@ -147,7 +146,6 @@ ms: active: Aktif all: Semua pending: Menunggu - silenced: Didiamkan suspended: Digantungkan title: Penyederhanaan moderation_notes: Catatan penyederhana @@ -165,7 +163,6 @@ ms: redownload: Segarkan semula profil redownloaded_msg: Berjaya segarkan semula profil %{username} daripada asalnya reject: Tolak - reject_all: Tolak semua rejected_msg: Berjaya menolak permohonan pendaftaran %{username} remove_avatar: Buang avatar remove_header: Buang pengepala @@ -200,7 +197,6 @@ ms: suspended: Digantung suspension_irreversible: Data akaun ini telah dipadam secara kekal. Anda boleh nyahgantungkannya untuk membuatkan akaun ini boleh digunakan semula tetapi data lama tidak akan diperolehi. suspension_reversible_hint_html: Akaun ini telah digantung, dan datanya akan dibuang pada %{date}. Sebelum tarikh itu, akaun ini boleh diperoleh semula tanpa kesan buruk. Jika anda mahu memadamkan kesemua data akaun ini serta-merta, anda boleh melakukannya di bawah. - time_in_queue: Menunggu giliran %{time} title: Akaun unconfirmed_email: E-mel belum disahkan undo_sensitized: Nyahtanda sensitif @@ -483,8 +479,6 @@ ms: title: Cipta peraturan alamat IP baharu no_ip_block_selected: Tiada peraturan alamat IP diubah kerana tiada yang dipilih title: Peraturan alamat IP - pending_accounts: - title: Akaun sedang menunggu (%{count}) relationships: title: Hubungan %{acct} relays: @@ -510,8 +504,6 @@ ms: account: notes: other: "%{count} catatan" - reports: - other: "%{count} laporan" action_taken_by: Tindakan diambil oleh are_you_sure: Adakah anda pasti? assign_to_self: Menugaskan kepada saya diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 7a7773f46..723e7de9c 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -42,7 +42,7 @@ nl: rejecting_media: 'Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken:' rejecting_media_title: Mediabestanden geweigerd silenced: Toots van deze server worden nergens weergegeven, behalve op jouw eigen starttijdlijn wanneer je het account volgt. - silenced_title: Genegeerde servers + silenced_title: Beperkte servers suspended: Je bent niet in staat om iemand van deze server te volgen, en er worden geen gegevens van deze server verwerkt of opgeslagen, en met deze server uitgewisseld. suspended_title: Opgeschorte servers unavailable_content_html: Met Mastodon kun je in het algemeen berichten bekijken van en communiceren met gebruikers van elke andere server in de fediverse. Dit zijn de uitzonderingen die door deze server zijn gemaakt en expliciet alleen hier gelden. @@ -97,7 +97,6 @@ nl: accounts: add_email_domain_block: E-maildomein blokkeren approve: Goedkeuren - approve_all: Alles goedkeuren approved_msg: Het goedkeuren van het registratieverzoek van %{username} is geslaagd are_you_sure: Weet je het zeker? avatar: Avatar @@ -112,6 +111,7 @@ nl: confirm: Bevestigen confirmed: Bevestigd confirming: Bevestiging + custom: Handmatig delete: Gegevens verwijderen deleted: Verwijderd demote: Degraderen @@ -149,7 +149,6 @@ nl: active: Actief all: Alles pending: In afwachting - silenced: Genegeerd suspended: Opgeschort title: Moderatie moderation_notes: Opmerkingen voor moderatoren @@ -167,7 +166,6 @@ nl: redownload: Profiel vernieuwen redownloaded_msg: Het herstellen van het oorspronkelijke profiel van %{username} is geslaagd reject: Afkeuren - reject_all: Alles afkeuren rejected_msg: Het afwijzen van het registratieverzoek van %{username} is geslaagd remove_avatar: Avatar verwijderen remove_header: Omslagfoto verwijderen @@ -189,7 +187,7 @@ nl: search: Zoeken search_same_email_domain: Andere gebruikers met hetzelfde e-maildomein search_same_ip: Andere gebruikers met hetzelfde IP-adres - sensitive: Gevoelig + sensitive: Gevoelig forceren sensitized: als gevoelig gemarkeerd shared_inbox_url: Gedeelde inbox-URL show: @@ -202,11 +200,10 @@ nl: suspended: Opgeschort suspension_irreversible: De gegevens van dit account zijn onomkeerbaar verwijderd. Je kunt het opschorten van dit account ongedaan maken zodat het weer valt te gebruiken, maar de verwijderde gegevens worden hiermee niet hersteld. suspension_reversible_hint_html: Dit account is opgeschort en de gegevens worden volledig verwijderd op %{date}. Tot die tijd kan dit account worden hersteld zonder nadelige gevolgen. Wanneer je alle gegevens van dit account onmiddellijk wilt verwijderen, kun je dit hieronder doen. - time_in_queue: "%{time} in de wachtrij" title: Accounts unconfirmed_email: Onbevestigd e-mailadres - undo_sensitized: Niet meer als gevoelig markeren - undo_silenced: Niet langer negeren + undo_sensitized: Niet meer als gevoelig forceren + undo_silenced: Niet langer beperken undo_suspension: Niet langer opschorten unsilenced_msg: Het opheffen van de beperkingen van %{username} zijn geslaagd unsubscribe: Opzeggen @@ -488,8 +485,6 @@ nl: title: Nieuwe IP-regel aanmaken no_ip_block_selected: Er zijn geen IP-regels veranderd, omdat er geen een was geselecteerd title: IP-regels - pending_accounts: - title: Accounts in afwachting (%{count}) relationships: title: Relaties van %{acct} relays: @@ -516,9 +511,6 @@ nl: notes: one: "%{count} opmerking" other: "%{count} opmerkingen" - reports: - one: "%{count} rapportage" - other: "%{count} rapportages" action_taken_by: Actie uitgevoerd door are_you_sure: Weet je het zeker? assign_to_self: Aan mij toewijzen @@ -649,15 +641,9 @@ nl: destroyed_msg: Verwijderen website-upload geslaagd! statuses: back_to_account: Terug naar accountpagina - batch: - delete: Verwijderen - nsfw_off: Als niet gevoelig markeren - nsfw_on: Als gevoelig markeren deleted: Verwijderd - failed_to_execute: Uitvoeren mislukt media: title: Media - no_media: Geen media no_status_selected: Er werden geen toots gewijzigd, omdat er geen enkele werd geselecteerd title: Toots van account with_media: Met media @@ -670,19 +656,7 @@ nl: sidekiq_process_check: message_html: Er draait geen Sidekiqproces voor de wachtrij(en) %{value}. Controleer je Sidekiqconfiguratie tags: - accounts_today: Aantal verschillende keren vandaag gebruikt - accounts_week: Aantal verschillende keren deze week gebruikt - breakdown: Uitsplitsing van het gebruik van vandaag naar bron - last_active: Laatst actief - most_popular: Meest populair - most_recent: Meest recent - name: Hashtag review: Status beoordelen - reviewed: Beoordeeld - title: Hashtags - trending_right_now: Op dit moment trending - unique_uses_today: "%{count} keer vandaag gebruikt" - unreviewed: Niet beoordeeld updated_msg: Instellingen hashtag succesvol bijgewerkt title: Beheer warning_presets: @@ -699,9 +673,6 @@ nl: body: "%{reporter} heeft %{target} gerapporteerd" body_remote: Iemand van %{domain} heeft %{target} gerapporteerd subject: Nieuwe rapportage op %{instance} (#%{id}) - new_trending_tag: - body: 'De hashtag #%{name} is vandaag trending, maar is nog niet beoordeeld. Het wordt niet in het openbaar getoond alvorens je de hashtag goedkeurt. Je kunt ook het formulier zoals het nu is opslaan, waarna je er niks meer over zult horen.' - subject: Nieuwe hashtag te beoordelen op %{instance} (#%{name}) aliases: add_new: Alias aanmaken created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen. @@ -908,7 +879,6 @@ nl: changes_saved_msg: Wijzigingen succesvol opgeslagen! copy: Kopiëren delete: Verwijderen - no_batch_actions_available: Geen batchacties op deze pagina beschikbaar order_by: Sorteer op save_changes: Wijzigingen opslaan validation_errors: @@ -916,26 +886,6 @@ nl: other: Er is iets niet helemaal goed! Bekijk onderstaande %{count} fouten html_validator: invalid_markup: 'bevat ongeldige HTML-opmaak: %{error}' - identity_proofs: - active: Actief - authorize: Ja, autoriseren - authorize_connection_prompt: Deze cryptografische verbinding autoriseren? - errors: - failed: De cryptografische verbinding is mislukt. Probeer het opnieuw vanaf %{provider}. - keybase: - invalid_token: Keybasetokens zijn hashes van handtekeningen en moeten een lengte hebben van 66 hexadecimale tekens - verification_failed: Keybase herkent deze token niet als een handtekening van Keybasegebruiker %{kb_username}. Probeer het opnieuw vanuit Keybase. - wrong_user: Er kan geen bewijs worden aangemaakt voor %{proving} terwijl je bent ingelogd als %{current}. Log in als %{proving} en probeer het opnieuw. - explanation_html: Hier kun je met behulp van cryptografie jouw andere identiteiten verbinden, zoals een Keybaseprofiel. Hiermee kunnen andere mensen jou versleutelde berichten sturen en inhoud die jij verstuurt vertrouwen. - i_am_html: Ik ben %{username} op %{service}. - identity: Identiteit - inactive: Inactief - publicize_checkbox: 'En toot dit:' - publicize_toot: 'Het is bewezen! Ik ben %{username} op %{service}: %{url}' - remove: Bewijs uit account verwijderen - removed: Bewijs is succesvol uit account verwijderd - status: Verificatiestatus - view_proof: Bekijk bewijs imports: errors: over_rows_processing_limit: bevat meer dan %{count} rijen @@ -1197,7 +1147,6 @@ nl: edit_profile: Profiel bewerken export: Exporteren featured_tags: Uitgelichte hashtags - identity_proofs: Identiteitsbewijzen import: Importeren import_and_export: Importeren en exporteren migrate: Accountmigratie @@ -1226,13 +1175,11 @@ nl: other: 'bevatte niet toegestane hashtags: %{tags}' errors: in_reply_not_found: De toot waarop je probeert te reageren lijkt niet te bestaan. - language_detection: Taal automatisch detecteren open_in_web: In de webapp openen over_character_limit: Limiet van %{max} tekens overschreden pin_errors: limit: Je hebt het maximaal aantal toots al vastgezet ownership: Een toot van iemand anders kan niet worden vastgezet - private: Alleen openbare toots kunnen worden vastgezet reblog: Een boost kan niet worden vastgezet poll: total_people: @@ -1380,24 +1327,15 @@ nl: subject: Bevestig de inlogpoging title: Inlogpoging warning: - explanation: - disable: Zolang jouw account is bevroren blijven jouw accountgegevens intact, maar kun je geen handelingen uitvoeren totdat het account is vrijgegeven. - sensitive: De mediabestanden die je upload en gekoppelde media worden als gevoelig behandeld. - silence: Zolang jouw account wordt beperkt, kunnen alleen mensen die jou al volgen jouw toots op deze server zien. Tevens ben je niet zichtbaar in meldingen, gesprekken en op openbare tijdlijnen. Anderen kunnen je echter wel handmatig volgen. - suspend: Jouw account is opgeschort. Jouw toots en geüploade media zijn onomkeerbaar van deze server verwijderd, en ook o.a. van de servers waar jij volgers had. - get_in_touch: Je kunt deze e-mail beantwoorden om in contact te komen met de medewerkers van %{instance}. review_server_policies: Serverbeleid bekijken - statuses: 'Met name voor:' subject: disable: Jouw account %{acct} is bevroren none: Waarschuwing voor %{acct} - sensitive: De door jouw account %{acct} geplaatste media is als gevoelig gemarkeerd silence: Jouw account %{acct} is nu beperkt suspend: Jouw account %{acct} is opgeschort title: disable: Account bevroren none: Waarschuwing - sensitive: Jouw media is als gevoelig gemarkeerd silence: Account beperkt suspend: Account opgeschort welcome: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 005523a9f..d75e8bb87 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -97,7 +97,6 @@ nn: accounts: add_email_domain_block: Gøym e-postdomene approve: Godtak - approve_all: Godtak alle approved_msg: Godkjent %{username} sin registreringsapplikasjon are_you_sure: Er du sikker? avatar: Bilete @@ -151,7 +150,6 @@ nn: active: Aktiv all: Alle pending: Ventar på svar - silenced: Dempa suspended: Utvist title: Moderasjon moderation_notes: Moderasjonsmerknader @@ -169,7 +167,6 @@ nn: redownload: Last inn profil på nytt redownloaded_msg: Oppdatert %{username} sin profil fra opprinnelse reject: Avvis - reject_all: Avvis alle rejected_msg: Vellykket avvist %{username} sin registreringsapplikasjon remove_avatar: Fjern bilete remove_header: Fjern overskrift @@ -207,7 +204,6 @@ nn: suspended: Utvist suspension_irreversible: Dataene fra denne kontoen har blitt ikke reverserbart slettet. Du kan oppheve suspenderingen av kontoen for å gjøre den brukbart, men den vil ikke gjenopprette alle data den tidligere har hatt. suspension_reversible_hint_html: Kontoen har blitt suspendert, og dataene vil bli fullstendig fjernet den %{date}. Frem til da kan kontoen gjenopprettes uten negative effekter. Hvis du ønsker å fjerne alle kontoens data umiddelbart, kan du gjøre det nedenfor. - time_in_queue: Ventar i kø %{time} title: Kontoar unconfirmed_email: E-post utan stadfesting undo_silenced: Angr målbinding @@ -222,6 +218,7 @@ nn: whitelisted: Kvitlista action_logs: action_types: + approve_user: Godkjenn bruker assigned_to_self_report: Tilordne rapport change_email_user: Byt e-post for brukar confirm_user: Stadfest brukar @@ -246,6 +243,7 @@ nn: enable_custom_emoji: Skruv på tilpassa emoji enable_user: Skruv på brukar promote_user: Forfrem brukar + reject_user: Avvis bruker remove_avatar_user: Fjern avatar reopen_report: Opn rapport opp att reset_password_user: Tilbakestill passord @@ -257,11 +255,13 @@ nn: update_custom_emoji: Oppdater tilpassa emoji update_status: Oppdater tut actions: + approve_user_html: "%{name} godkjente registrering fra %{target}" create_custom_emoji_html: "%{name} lastet opp ny emoji %{target}" create_domain_allow_html: "%{name} tillatt føderasjon med domenet %{target}" create_domain_block_html: "%{name} blokkert domene %{target}" create_email_domain_block_html: "%{name} blokkert e-post domene %{target}" create_ip_block_html: "%{name} opprettet regel for IP %{target}" + reject_user_html: "%{name} avslo registrering fra %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" deleted_status: "(sletta status)" empty: Ingen loggar funne. @@ -319,9 +319,19 @@ nn: updated_msg: Kjensleteiknet er oppdatert! upload: Last opp dashboard: + active_users: aktive brukere + interactions: interaksjoner + media_storage: Medialagring + new_users: nye brukere + opened_reports: rapporter åpnet + resolved_reports: rapporter løst software: Programvare + sources: Kilder for registreringer space: Lagrinsplass nytta title: Dashbord + top_languages: Mest aktive språk + top_servers: Mest aktive servere + website: Nettside domain_allows: add_new: Kvitlist domene created_msg: Domene er vorte kvitlista @@ -441,8 +451,6 @@ nn: title: Opprett ny IP-regel no_ip_block_selected: Ingen IP-regler ble endret da ingen ble valgt title: IP-regler - pending_accounts: - title: Kontoar som ventar (%{count}) relationships: title: "%{acct} sitt forhold" relays: @@ -469,9 +477,6 @@ nn: notes: one: "%{count} notis" other: "%{count} notiser" - reports: - one: "%{count} rapport" - other: "%{count} rapporter" action_taken_by: Handling gjort av are_you_sure: Er du sikker? assign_to_self: Tilegn til meg @@ -601,15 +606,9 @@ nn: destroyed_msg: Vellukka sletting av sideopplasting! statuses: back_to_account: Tilbake til kontosida - batch: - delete: Slett - nsfw_off: NSFW AV - nsfw_on: NSFW PÅ deleted: Sletta - failed_to_execute: Lét seg ikkje gjera media: title: Media - no_media: Ingen media no_status_selected: Ingen statusar vart endra sidan ingen vart valde title: Kontostatusar with_media: Med media @@ -620,19 +619,7 @@ nn: action: Behandle serverregler message_html: Du har ikke definert noen serverregler. tags: - accounts_today: Ulike brukarar i dag - accounts_week: Unike brukstilfeller denne uken - breakdown: Oversyn over bruk i dag etter kjelde - last_active: Sist aktiv - most_popular: Mest populær - most_recent: Nyast - name: Emneknagg review: Sjå gjennom status - reviewed: Gjennomgått - title: Emneknaggar - trending_right_now: Populært no - unique_uses_today: "%{count} legg ut i dag" - unreviewed: Ikkje gjennomgått updated_msg: Emneknagginnstillingane er oppdaterte title: Leiing warning_presets: @@ -648,9 +635,6 @@ nn: body: "%{reporter} har rapportert %{target}" body_remote: Nokon frå %{domain} har meldt %{target} subject: Ny rapport for %{instance} (#%{id}) - new_trending_tag: - body: 'Emneknaggen #%{name} trender i dag, men den har ikke blitt gjennomgått tidligere. Den vil ikke bli vist offentlig med mindre du tillater at den blir det, eller du kan bare lagre skjemaet slik det er for å aldri høre om det igjen.' - subject: Ny emneknagg ventar gjennomgang på %{instance} (#%{name}) aliases: add_new: Lag psevdonym created_msg: Laga eit nytt kallenamn. No kan du setja i gang med flyttinga frå den gamle kontoen. @@ -850,33 +834,14 @@ nn: changes_saved_msg: Alle endringane vart lagra! copy: Kopier delete: Slett - no_batch_actions_available: Ingen batch-handlingar tilgjengelege på denne sida order_by: Sorter etter save_changes: Lagr endringar + today: i dag validation_errors: one: Noe er ikke helt riktig ennå. Vennligst se etter en gang til other: Noe er ikke helt riktig ennå. Det er ennå %{count} feil å rette på html_validator: invalid_markup: 'rommar ugild HTML-kode: %{error}' - identity_proofs: - active: Aktiv - authorize: Ja, stadfest - authorize_connection_prompt: Vil du autorisere denne kryptografiske forbindelsen? - errors: - failed: Den kryptografiske tilkoplinga gjekk gale. Venlegast prøv om att frå %{provider}. - keybase: - verification_failed: Keybase kjenner ikke igjen denne sjetongen som en signatur for Keybase-brukeren %{kb_username}. Vennligst prøv igjen gjennom Keybase. - wrong_user: Kan ikke lage et bevis for %{proving} mens du er logget på som %{current}. Logg på som %{proving} og prøv igjen. - explanation_html: Her kan du kryptografisk koble til dine andre enheter, f.eks. en Keybase-profil. Dette lar andre folk sende deg krypterte meldinger og stole på innhold som du sender dem. - i_am_html: Eg er %{username} på %{service}. - identity: Identitet - inactive: Uaktiv - publicize_checkbox: 'Og tut dette:' - publicize_toot: 'Det er prova! Eg er %{username} på %{service}: %{url}' - remove: Fjern prov frå konto - removed: Vellukka fjerning av prov frå konto - status: Stadfestingsstatus - view_proof: Sjå prov imports: modes: merge: Set saman @@ -1137,7 +1102,6 @@ nn: edit_profile: Endr profil export: Dataeksport featured_tags: Utvalgte emneknagger - identity_proofs: Identitetsprov import: Hent inn import_and_export: Importer og eksporter migrate: Kontoflytting @@ -1166,13 +1130,12 @@ nn: other: 'inneheldt emneknaggen som ikkje var tillaten: %{tags}' errors: in_reply_not_found: Det ser ut til at tutet du freistar å svara ikkje finst. - language_detection: Kjenn att språk automatisk open_in_web: Opn på nett over_character_limit: øvregrensa for teikn, %{max}, er nådd pin_errors: + direct: Innlegg som bare er synlige for nevnte brukere kan ikke festes limit: Du har allereie festa så mange tut som det går an å festa ownership: Du kan ikkje festa andre sine tut - private: Du kan ikkje festa uoffentlege tut reblog: Ei framheving kan ikkje festast poll: total_people: @@ -1319,24 +1282,15 @@ nn: subject: Venlegast stadfest forsøket på å logga inn title: Forsøk på å logga inn warning: - explanation: - disable: Mens kontoen din er fryst, forblir dine kontodata intakt, men du kan ikke utføre noen handlinger før den har blitt tint opp. - sensitive: De opplastede mediefilene og linket vil bli behandlet som sensitive. - silence: Mens kontoen din er begrenset, vil bare folk som allerede følger deg se dine tuter på denne tjeneren, og du kan bli ekskludert fra diverse offentlige oppføringer. Men andre kan fortsatt følge deg manuelt. - suspend: Kontoen din har blitt suspendert, og alle dine tuter og opplastede media har blitt ugjenkallelig fjernet fra denne tjeneren, og fra tjenere der du hadde følgere. - get_in_touch: Du kan svare på denne E-posten for å komme i kontakt med styret i %{instance}. review_server_policies: Gjennomgå serverretningslinjer - statuses: 'Spesifikt for å:' subject: disable: Kontoen din, %{acct}, har blitt fryst none: Åtvaring for %{acct} - sensitive: Din konto %{acct} medier har blitt merket som følsom silence: Kontoen din, %{acct}, er vorten avgrensa suspend: Kontoen din, %{acct}, er vorten utvist title: disable: Konto frosen none: Åtvaring - sensitive: Mediet ditt er markert som følsom silence: Konto avgrensa suspend: Konto utvist welcome: diff --git a/config/locales/no.yml b/config/locales/no.yml index 668efca9c..088812fb1 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -97,7 +97,6 @@ accounts: add_email_domain_block: Svartelist E-postdomenet approve: Godkjenn - approve_all: Godkjenn alle approved_msg: Godkjent %{username} sin registreringsapplikasjon are_you_sure: Er du sikker? avatar: Profilbilde @@ -151,7 +150,6 @@ active: Aktive all: Alle pending: Avventer - silenced: Målbundet suspended: Utvist title: Moderasjon moderation_notes: Moderasjonsnotater @@ -169,7 +167,6 @@ redownload: Oppdater avatar redownloaded_msg: Oppdatert %{username} sin profil fra opprinnelse reject: Avslå - reject_all: Avslå alle rejected_msg: Vellykket avvist %{username} sin registreringsapplikasjon remove_avatar: Fjern profilbilde remove_header: Fjern overskrift @@ -207,7 +204,6 @@ suspended: Suspendert suspension_irreversible: Dataene fra denne kontoen har blitt ikke reverserbart slettet. Du kan oppheve suspenderingen av kontoen for å gjøre den brukbart, men den vil ikke gjenopprette alle data den tidligere har hatt. suspension_reversible_hint_html: Kontoen har blitt suspendert, og dataene vil bli fullstendig fjernet den %{date}. Frem til da kan kontoen gjenopprettes uten negative effekter. Hvis du ønsker å fjerne alle kontoens data umiddelbart, kan du gjøre det nedenfor. - time_in_queue: Venter i kø %{time} title: Kontoer unconfirmed_email: Ubekreftet E-postadresse undo_silenced: Angre målbinding @@ -222,6 +218,7 @@ whitelisted: Hvitelistet action_logs: action_types: + approve_user: Godkjenn bruker assigned_to_self_report: Tilordne rapport change_email_user: Endre brukerens E-postadresse confirm_user: Bekreft brukeren @@ -243,6 +240,7 @@ enable_custom_emoji: Skru på tilpassede emojier enable_user: Aktiver bruker promote_user: Promoter bruker + reject_user: Avvis bruker remove_avatar_user: Fjern Avatar reopen_report: Gjenåpne rapporten reset_password_user: Tilbakestill passord @@ -254,11 +252,13 @@ update_custom_emoji: Oppdater tilpasset Emoji update_status: Oppdater statusen actions: + approve_user_html: "%{name} godkjente registrering fra %{target}" create_custom_emoji_html: "%{name} lastet opp ny emoji %{target}" create_domain_allow_html: "%{name} tillatt føderasjon med domenet %{target}" create_domain_block_html: "%{name} blokkert domene %{target}" create_email_domain_block_html: "%{name} blokkert e-post domene %{target}" create_ip_block_html: "%{name} opprettet regel for IP %{target}" + reject_user_html: "%{name} avslo registrering fra %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" deleted_status: "(statusen er slettet)" empty: Ingen loggføringer ble funnet. @@ -321,15 +321,6 @@ media_storage: Medialagring new_users: nye brukere opened_reports: rapporter åpnet - pending_reports_html: - one: "<strong>1</strong> ventende rapport" - other: "<strong>%{count}</strong> ventende rapporter" - pending_tags_html: - one: "<strong>1</strong> ventende hashtag" - other: "<strong>%{count}</strong> ventende hashtags" - pending_users_html: - one: "<strong>1</strong> ventende bruker" - other: "<strong>%{count}</strong> ventende brukere" resolved_reports: rapporter løst software: Programvare sources: Kilder for registreringer @@ -457,8 +448,6 @@ title: Opprett ny IP-regel no_ip_block_selected: Ingen IP-regler ble endret da ingen ble valgt title: IP-regler - pending_accounts: - title: Avventende brukere (%{count}) relationships: title: "%{acct} sitt forhold" relays: @@ -485,9 +474,6 @@ notes: one: "%{count} notis" other: "%{count} notiser" - reports: - one: "%{count} rapport" - other: "%{count} rapporter" action_taken_by: Handling utført av are_you_sure: Er du sikker? assign_to_self: Tilegn til meg @@ -617,15 +603,9 @@ destroyed_msg: Vellykket sletting av sideopplasting! statuses: back_to_account: Tilbake til kontosiden - batch: - delete: Slett - nsfw_off: NSFW AV - nsfw_on: NSFW PÅ deleted: Slettet - failed_to_execute: Utføring mislyktes media: title: Media - no_media: Ingen media no_status_selected: Ingen statuser ble endret da ingen ble valgt title: Kontostatuser with_media: Med media @@ -636,18 +616,7 @@ action: Behandle serverregler message_html: Du har ikke definert noen serverregler. tags: - accounts_today: Ulike brukere i dag - accounts_week: Unike brukstilfeller denne uken - last_active: Senest aktiv - most_popular: Mest populært - most_recent: Nyligst - name: Emneknagg review: Gjennomgangsstatus - reviewed: Gjennomgått - title: Emneknagger - trending_right_now: Trender akkurat nå - unique_uses_today: "%{count} legger ut om det i dag" - unreviewed: Ikke gjennomgått title: Administrasjon warning_presets: add_new: Legg til ny @@ -660,8 +629,6 @@ body: "%{reporter} har rapportert %{target}" body_remote: Noen fra %{domain} har rapportert %{target} subject: Ny rapport for %{instance} (#%{id}) - new_trending_tag: - body: 'Emneknaggen #%{name} trender i dag, men den har ikke blitt gjennomgått tidligere. Den vil ikke bli vist offentlig med mindre du tillater at den blir det, eller du kan bare lagre skjemaet slik det er for å aldri høre om det igjen.' aliases: add_new: Lag et alias empty: Du har ingen aliaser. @@ -856,26 +823,10 @@ delete: Slett order_by: Sorter etter save_changes: Lagre endringer + today: i dag validation_errors: one: Noe er ikke helt riktig ennå. Vennligst se etter en gang til other: Noe er ikke helt riktig ennå. Det er ennå %{count} feil å rette på - identity_proofs: - active: Aktive - authorize: Ja, autoriser - authorize_connection_prompt: Vil du autorisere denne kryptografiske forbindelsen? - errors: - keybase: - verification_failed: Keybase kjenner ikke igjen denne sjetongen som en signatur for Keybase-brukeren %{kb_username}. Vennligst prøv igjen gjennom Keybase. - wrong_user: Kan ikke lage et bevis for %{proving} mens du er logget på som %{current}. Logg på som %{proving} og prøv igjen. - explanation_html: Her kan du kryptografisk koble til dine andre enheter, f.eks. en Keybase-profil. Dette lar andre folk sende deg krypterte meldinger og stole på innhold som du sender dem. - i_am_html: Jeg er %{username} på %{service}. - identity: Identitet - inactive: Inaktive - publicize_checkbox: 'Og tut ut dette:' - publicize_toot: 'Det er bevist! Jeg er %{username} på %{service}: %{url}' - remove: Fjern bevis fra kontoen - status: Verifiseringsstatus - view_proof: Se bevis imports: modes: merge: Slå sammen @@ -1135,7 +1086,6 @@ edit_profile: Endre profil export: Dataeksport featured_tags: Utvalgte emneknagger - identity_proofs: Identitetsbevis import: Importér import_and_export: Importer og eksporter migrate: Kontomigrering @@ -1161,13 +1111,12 @@ content_warning: 'Innholdsadvarsel: %{warning}' errors: in_reply_not_found: Posten du prøver å svare ser ikke ut til eksisterer. - language_detection: Oppdag språk automatisk open_in_web: Åpne i nettleser over_character_limit: grense på %{max} tegn overskredet pin_errors: + direct: Innlegg som bare er synlige for nevnte brukere kan ikke festes limit: Du har allerede festet det maksimale antall tuter ownership: Kun egne tuter kan festes - private: Kun offentlige tuter kan festes reblog: En fremheving kan ikke festes poll: total_people: @@ -1314,24 +1263,15 @@ subject: Bekreft forsøk på å logge inn title: Påloggingsforsøk warning: - explanation: - disable: Mens kontoen din er fryst, forblir dine kontodata intakt, men du kan ikke utføre noen handlinger før den har blitt tint opp. - sensitive: De opplastede mediefilene og linket vil bli behandlet som sensitive. - silence: Mens kontoen din er begrenset, vil bare folk som allerede følger deg se dine tuter på denne tjeneren, og du kan bli ekskludert fra diverse offentlige oppføringer. Men andre kan fortsatt følge deg manuelt. - suspend: Kontoen din har blitt suspendert, og alle dine tuter og opplastede media har blitt ugjenkallelig fjernet fra denne tjeneren, og fra tjenere der du hadde følgere. - get_in_touch: Du kan svare på denne E-posten for å komme i kontakt med styret i %{instance}. review_server_policies: Gjennomgå serverretningslinjer - statuses: 'Spesifikt for å:' subject: disable: Kontoen din, %{acct}, har blitt fryst none: Advarsel for %{acct} - sensitive: Din konto %{acct} medier har blitt merket som følsom silence: Kontoen din, %{acct}, har blitt begrenset suspend: Kontoen din, %{acct}, har blitt suspendert title: disable: Kontoen er fryst none: Advarsel - sensitive: Mediet ditt er markert som følsom silence: Kontoen er begrenset suspend: Kontoen er suspendert welcome: diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 64035d34a..5ba40c527 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -91,7 +91,6 @@ oc: accounts: add_email_domain_block: Metre lo domeni del corrièl en lista negra approve: Aprovar - approve_all: O validar tot are_you_sure: Sètz segur ? avatar: Avatar by_domain: Domeni @@ -105,6 +104,7 @@ oc: confirm: Confirmar confirmed: Confirmat confirming: Confirmacion + custom: Personalizar delete: Suprimir donadas deleted: Suprimits demote: Retrogradar @@ -138,7 +138,6 @@ oc: active: Actius all: Totes pending: En espèra - silenced: Resconduts suspended: Suspenduts title: Moderacion moderation_notes: Nòtas de moderacion @@ -155,7 +154,6 @@ oc: push_subscription_expires: Fin de l’abonament PuSH redownload: Actualizar lo perfil reject: Regetar - reject_all: O regetar tot remove_avatar: Supriir l’avatar remove_header: Levar la bandièra resend_confirmation: @@ -173,6 +171,10 @@ oc: user: Uitlizaire search: Cercar search_same_ip: Autres utilizaires amb la meteissa IP + security_measures: + only_password: Sonque senhal + password_and_2fa: Senhal e 2FA + password_and_sign_in_token: Senhal e geton via mail sensitive: Sensible sensitized: marcar coma sensible shared_inbox_url: URL de recepcion partejada @@ -184,7 +186,6 @@ oc: statuses: Estatuts subscribe: S’abonar suspended: Suspendut - time_in_queue: En espèra a la fila %{time} title: Comptes unconfirmed_email: Adreça pas confirmada undo_sensitized: Desmarcar coma sensible @@ -197,6 +198,7 @@ oc: whitelisted: Mes en lista blanca action_logs: action_types: + approve_user: Aprobar l’utilizaire assigned_to_self_report: Assignar lo rapòrt change_email_user: Cambiar l’adreça de l’utilizaire confirm_user: Confirmar l’utilizaire @@ -285,15 +287,7 @@ oc: interactions: interraccions media_storage: Emmagazinatge dels mèdias new_users: utilizaire novèl - pending_reports_html: - one: "<strong>1</strong> senhalament en espèra" - other: "<strong>%{count}</strong> senhalaments en espèra" - pending_tags_html: - one: "<strong>1</strong> etiqueta en espèra" - other: "<strong>%{count}</strong> etiquetas en espèra" - pending_users_html: - one: "<strong>1</strong> utilizaire en espèra" - other: "<strong>%{count}</strong> utilizaires en espèra" + opened_reports: senhalaments dubèrts resolved_reports: senhalament resolguts software: Logicial space: Utilizacion de l’espaci @@ -399,8 +393,6 @@ oc: new: title: Crear una règlas IP novèla title: Règlas IP - pending_accounts: - title: Comptes en espèra (%{count}) relationships: title: Relacions de %{acct} relays: @@ -427,14 +419,12 @@ oc: notes: one: "%{count} nòta" other: "%{count} nòtas" - reports: - one: "%{count} senhalament" - other: "%{count} senhalaments" action_taken_by: Mesura menada per are_you_sure: Es segur ? assign_to_self: Me l’assignar assigned: Moderador assignat by_target_domain: Domeni del compte senhalat + category: Categoria comment: none: Pas cap created_at: Creacion @@ -457,6 +447,7 @@ oc: unassign: Levar unresolved: Pas resolgut updated_at: Actualizat + view_profile: Veire lo perfil rules: title: Règlas del servidor settings: @@ -544,15 +535,9 @@ oc: delete: Suprimir lo fichièr enviat statuses: back_to_account: Tornar a la pagina Compte - batch: - delete: Suprimir - nsfw_off: Marcar coma pas sensible - nsfw_on: Marcar coma sensible deleted: Suprimits - failed_to_execute: Fracàs media: title: Mèdia - no_media: Cap de mèdia no_status_selected: Cap d’estatut pas cambiat estant que cap èra pas seleccionat title: Estatuts del compte with_media: Amb mèdia @@ -561,20 +546,14 @@ oc: action: Gerir las règlas servidor message_html: Avètz pas definida cap de règla. tags: - accounts_today: Utilizacions unicas uèi - accounts_week: Utilizacions unicas aquesta setmana - last_active: Darrièra activitat - most_popular: Mai popularas - most_recent: Mai recentas - name: Etiqueta review: Repassar l’estatut - reviewed: Repassadas - title: Etiquetas - trending_right_now: Actualament en tendéncia - unique_uses_today: "%{count} publicacions uèi" - unreviewed: Pas repassadas updated_msg: Paramètres d’etiquetas corrèctament actualizats title: Administracion + trends: + tags: + dashboard: + tag_languages_dimension: Lengas principalas + tag_servers_dimension: Servidors principals warning_presets: add_new: N’ajustar un nòu delete: Escafar @@ -588,8 +567,6 @@ oc: body: "%{reporter} a senhalat %{target}" body_remote: Qualqu’un de %{domain} senhalèt %{target} subject: Novèl senhalament per %{instance} (#%{id}) - new_trending_tag: - subject: Nòva etiqueta per repassar sus %{instance} (#%{name}) aliases: add_new: Crear un alias remove: Desligar l’alias @@ -772,33 +749,14 @@ oc: changes_saved_msg: Cambiaments ben realizats ! copy: Copiar delete: Suprimir - no_batch_actions_available: Cap d’accion de massa pas disponibla sus aquesta pagina order_by: Triar per save_changes: Salvar los cambiaments + today: uèi validation_errors: one: I a quicòm que truca ! Mercés de corregir l’error çai-jos other: I a quicòm que truca ! Mercés de corregir las %{count} errors çai-jos html_validator: invalid_markup: 'conten un balisatge HTML invalid : %{error}' - identity_proofs: - active: Actiu - authorize: Òc, autorizar - authorize_connection_prompt: Autorizar aquesta connexion criptografica ? - errors: - failed: La connexion criptografica a fracassat. Ensajatz tornamai de %{provider} estant. - keybase: - invalid_token: Los getons Keybase son de hashes de signaturas e devon èsser de caractèrs 66 hex - verification_failed: Keybase reconeis pas aqueste geton coma signatura de l’utilizaire Keybase %{kb_username}. Ensajatz tornamai de Keybase estant. - wrong_user: Creacion impossibla de la pròva per %{proving} en estant connectat coma %{current}. Connectatz-vos coma %{proving} e ensajatz tornamai. - explanation_html: Aquí podètz connectar d’un biais criptografic vòstras identitats, coma un perfil Keybase. Aquò permet al monde de vos enviar de messatges chifrats e fisar al contengut que lor enviatz. - i_am_html: Soi %{username} a %{service}. - identity: Identitat - inactive: Inactiu - publicize_checkbox: 'E enviatz lo tut seguent :' - publicize_toot: 'Es provat ! Soi %{username} de %{service} : %{url}' - remove: Tirar la pròva del compte - status: Estatut de verificacion - view_proof: Veire la pròva imports: modes: merge: Fondre @@ -840,6 +798,11 @@ oc: lists: errors: limit: Avètz atengut lo maximum de listas + login_activities: + authentication_methods: + password: senhal + sign_in_token: còdi de seguretat mail + webauthn: claus de seguretat media_attachments: validations: images_and_video: Se pòt pas ajustar una vidèo a un estatut que ten ja d’imatges @@ -1027,7 +990,6 @@ oc: edit_profile: Modificar lo perfil export: Exportar de donadas featured_tags: Etiquetas en avant - identity_proofs: Pròvas d’identitat import: Importar de donadas import_and_export: Import e export migrate: Migracion de compte @@ -1054,13 +1016,11 @@ oc: disallowed_hashtags: one: 'conten una etiqueta desactivada : %{tags}' other: 'conten las etiquetas desactivadas : %{tags}' - language_detection: Detectar automaticament la lenga open_in_web: Dobrir sul web over_character_limit: limit de %{max} caractèrs passat pin_errors: limit: Avètz ja lo maximum de tuts penjats ownership: Se pòt pas penjar lo tut de qualqu’un mai - private: Se pòt pas penjar los tuts pas publics reblog: Se pòt pas penjar un tut partejat poll: total_people: @@ -1088,6 +1048,14 @@ oc: keep_direct: Gardar los messatges dirèctes keep_media: Gardar las publicacions amb pèça-junta keep_pinned: Gardar las publicacions penjadas + min_age: + '1209600': 2 setmanas + '15778476': 6 meses + '2629746': 1 mes + '31556952': 1 an + '5259492': 2 meses + '63113904': 2 ans + '7889238': 3 meses stream_entries: pinned: Tut penjat reblogged: a partejat @@ -1187,6 +1155,7 @@ oc: formats: default: Lo %-d %B de %Y a %Ho%M month: "%B de %Y" + time: "%H'h'%M" two_factor_authentication: add: Ajustar disable: Desactivar @@ -1206,13 +1175,8 @@ oc: subject: Vòstre archiu es prèst per telecargament title: Archiu per emportar warning: - explanation: - disable: Quand vòstre compte es gelat, las donadas d’aqueste demòran senceras, mas podètz pas realizar cap d’accion fins que siá desblocat. - silence: Del temps que vòstre compte es limitat, solament lo monde que vos sègon veiràn vòstres tuts sus aqueste servidor, e poiriatz èsser tirat de mantuna lista publica. Pasmens, d’autres vos pòdon sègre manualament. - suspend: Vòstre compte es suspendut e totes vòstres tuts e fichièrs enviats son estats suprimits sens retorn possible d’aqueste servidor e los de vòstres seguidors. - get_in_touch: Podètz respondre a aqueste corrièl per contactar la còla de %{instance}. + reason: 'Motiu :' review_server_policies: Repassar las politicas del servidor - statuses: 'Especificament per :' 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 8023251c9..ed565cc76 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -107,7 +107,6 @@ pl: accounts: add_email_domain_block: Dodaj domenę e-mail na czarną listę approve: Przyjmij - approve_all: Zatwierdź wszystkie approved_msg: Pomyślnie zaakceptowano wniosek o rejestrację %{username} are_you_sure: Jesteś tego pewien? avatar: Awatar @@ -122,6 +121,7 @@ pl: confirm: Potwierdź confirmed: Potwierdzono confirming: Potwierdzanie + custom: Własne delete: Usuń dane deleted: Usunięto demote: Degraduj @@ -161,7 +161,6 @@ pl: active: Aktywne all: Wszystkie pending: Oczekujące - silenced: Wyciszone suspended: Zawieszone title: Moderacja moderation_notes: Notatki moderacyjne @@ -179,7 +178,6 @@ pl: redownload: Odśwież profil redownloaded_msg: Pomyślnie odświeżono profil %{username} z miejsca pochodzenia reject: Odrzuć - reject_all: Odrzuć wszystkie rejected_msg: Pomyślnie odrzucono wniosek o rejestrację %{username} remove_avatar: Usun awatar remove_header: Usuń nagłówek @@ -214,12 +212,14 @@ pl: silence: Wycisz silenced: Wyciszono statuses: Wpisy + strikes: Poprzednie ostrzeżenia subscribe: Subskrybuj 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. - time_in_queue: Czekanie w kolejce %{time} title: Konta + unblock_email: Odblokuj adres e-mail + unblocked_email_msg: Pomyślnie odblokowano adres e-mail %{username} unconfirmed_email: Niepotwierdzony adres e-mail undo_sensitized: Cofnij oznaczenie undo_silenced: Cofnij wyciszenie @@ -234,6 +234,7 @@ pl: whitelisted: Na białej liście action_logs: action_types: + approve_user: Zatwierdź użytkownika assigned_to_self_report: Przypisz zgłoszenie change_email_user: Zmień adres e-mail użytkownika confirm_user: Potwierdź użytkownika @@ -251,6 +252,7 @@ pl: destroy_domain_allow: Usuń zezwolenie dla domeny destroy_domain_block: Usuń blokadę domeny destroy_email_domain_block: Usuń blokadę domeny e-mail + destroy_instance: Wyczyść domenę destroy_ip_block: Usuń regułę IP destroy_status: Usuń wpis destroy_unavailable_domain: Usuń niedostępną domenę @@ -263,6 +265,7 @@ pl: enable_user: Włącz użytkownika memorialize_account: Upamiętnij konto promote_user: Podnieś uprawnienia + reject_user: Odrzuć użytkownika remove_avatar_user: Usuń awatar reopen_report: Otwórz zgłoszenie ponownie reset_password_user: Resetuj hasło @@ -271,6 +274,7 @@ pl: silence_account: Wycisz konto suspend_account: Zawieś konto unassigned_report: Cofnij przypisanie zgłoszenia + unblock_email_account: Odblokuj adres e-mail unsensitive_account: Cofnij oznaczenie zawartości multimedialnej swojego konta jako wrażliwą unsilence_account: Cofnij wyciszenie konta unsuspend_account: Cofnij zawieszenie konta @@ -279,6 +283,7 @@ pl: update_domain_block: Zaktualizuj blokadę domeny update_status: Aktualizuj wpis actions: + 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}" confirm_user_html: "%{name} potwierdził(a) adres e-mail użytkownika %{target}" @@ -296,6 +301,7 @@ pl: destroy_domain_allow_html: "%{name} usunął(-ęła) domenę %{target} z białej listy" destroy_domain_block_html: "%{name} odblokował(a) domenę %{target}" destroy_email_domain_block_html: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy" + destroy_instance_html: "%{name} usunął domenę %{target}" destroy_ip_block_html: "%{name} usunął(-ęła) regułę dla IP %{target}" destroy_status_html: "%{name} usunął(-ęła) wpis użytkownika %{target}" destroy_unavailable_domain_html: "%{name} wznowił(a) doręczanie do domeny %{target}" @@ -308,6 +314,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_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}" reset_password_user_html: "%{name} przywrócił(a) hasło użytkownikowi %{target}" @@ -316,6 +323,7 @@ pl: silence_account_html: "%{name} wyciszył(a) konto %{target}" suspend_account_html: "%{name} zawiesił(a) konto %{target}" unassigned_report_html: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}" + unblock_email_account_html: "%{name} odblokował adres e-mail %{target}" unsensitive_account_html: "%{name} cofnął(-ęła) oznaczenie zawartości multimedialnej %{target} jako wrażliwą" unsilence_account_html: "%{name} cofnął(-ęła) wyciszenie konta %{target}" unsuspend_account_html: "%{name} cofnął(-ęła) zawieszenie konta %{target}" @@ -387,12 +395,12 @@ pl: pending_reports_html: few: "<strong>%{count}</strong> oczekujące raporty" many: "<strong>%{count}</strong> oczekujących raportów" - one: "<strong>1</strong> oczekujący raport" + one: "<strong>%{count}</strong> oczekujący raport" other: "<strong>%{count}</strong> oczekujących raportów" pending_tags_html: few: "<strong>%{count}</strong> oczekujące hashtagi" many: "<strong>%{count}</strong> oczekujących hashtagów" - one: "<strong>1</strong> oczekujący hashtag" + one: "<strong>%{count}</strong>oczekujący hasztag" other: "<strong>%{count}</strong> oczekujących hashtagów" pending_users_html: few: "<strong>%{count}</strong> oczekujących użytkowników" @@ -481,6 +489,7 @@ pl: back_to_limited: Ograniczone back_to_warning: Ostrzeżenie by_domain: Domena + confirm_purge: Czy na pewno chcesz trwale usunąć dane z tej domeny? delivery: all: Wszystkie clear: Wyczyść błędy w doręczaniu @@ -498,6 +507,7 @@ pl: delivery_available: Doręczanie jest dostępne delivery_error_days: Dni błędów doręczenia 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" @@ -510,6 +520,7 @@ pl: title: Moderacja private_comment: Prywatny komentarz public_comment: Publiczny komentarz + purge: Wyczyść title: Znane instancje total_blocked_by_us: Zablokowane przez nas total_followed_by_them: Śledzeni przez nich @@ -539,8 +550,6 @@ pl: title: Utwórz nową regułę IP no_ip_block_selected: Żadna reguła nie została zmieniona, ponieważ żadna nie została wybrana title: Reguły adresów IP - pending_accounts: - title: Oczekujące konta (%{count}) relationships: title: Relacje %{acct} relays: @@ -562,6 +571,7 @@ pl: report_notes: created_msg: Pomyslnie utworzono notatkę moderacyjną. destroyed_msg: Pomyślnie usunięto notatkę moderacyjną. + today_at: Dziś o %{time} reports: account: notes: @@ -569,29 +579,38 @@ pl: many: "%{count} notatek" one: "%{count} notatka" other: "%{count} notatki" - reports: - few: "%{count} zgłoszenia" - many: "%{count} zgłoszeń" - one: "%{count} zgłoszenie" - other: "%{count} zgłoszenia" + action_log: Dziennik audytu action_taken_by: Działanie podjęte przez + actions: + other_description_html: Zobacz więcej opcji do kontrolowania zachowania konta i dostosuj komunikację do zgłoszonego konta. + 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:' + add_to_report: Dodaj więcej do raportu are_you_sure: Czy na pewno? assign_to_self: Przypisz do siebie assigned: Przypisany moderator by_target_domain: Domena zgłaszanego konta + category: Kategoria + category_description_html: Powód, dla którego to konto i/lub zawartość zostały zgłoszone, będzie cytowany w komunikacji ze zgłoszonym kontem comment: none: Brak + comment_description_html: 'Aby dostarczyć więcej informacji, %{name} napisał:' created_at: Zgłoszono + delete_and_resolve: Usuń i rozwiąż forwarded: Przekazano forwarded_to: Przekazano do %{domain} mark_as_resolved: Oznacz jako rozwiązane mark_as_unresolved: Oznacz jako nierozwiązane + no_one_assigned: Nikt nie notes: create: Utwórz notatkę create_and_resolve: Rozwiąż i pozostaw notatkę create_and_unresolve: Cofnij rozwiązanie i pozostaw notatkę delete: Usuń 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 reopen: Otwórz ponownie report: 'Zgłoszenie #%{id}' reported_account: Zgłoszone konto @@ -599,11 +618,14 @@ pl: resolved: Rozwiązane resolved_msg: Pomyślnie rozwiązano zgłoszenie. status: Stan + statuses: Zgłoszona treść + statuses_description_html: Obraźliwe treści będą cytowane w komunikacji ze zgłoszonym kontem target_origin: Pochodzenie zgłaszanego konta title: Zgłoszenia unassign: Cofnij przypisanie unresolved: Nierozwiązane updated_at: Zaktualizowano + view_profile: Wyświetl profil rules: add_new: Dodaj zasadę delete: Usuń @@ -705,15 +727,13 @@ pl: destroyed_msg: Pomyślnie usunięto przesłany plik! statuses: back_to_account: Wróć na konto + back_to_report: Wróć do strony zgłoszenia batch: - delete: Usuń - nsfw_off: Cofnij NSFW - nsfw_on: Oznacz jako NSFW + remove_from_report: Usuń ze zgłoszenia + report: Zgłoszenie deleted: Usunięto - failed_to_execute: Nie udało się wykonać media: title: Multimedia - no_media: Bez zawartości multimedialnej no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany title: Wpisy konta with_media: Z zawartością multimedialną @@ -726,21 +746,55 @@ pl: sidekiq_process_check: message_html: Brak uruchomionego procesu Sidekiq dla kolejki(-ek) %{value}. Sprawdź konfigurację Sidekiq tags: - accounts_today: Unikalne wykorzystania dzisiaj - accounts_week: Unikalne wykorzystania w tym tygodniu - breakdown: Podział dzisiejszego wykorzystania według źródła - last_active: Ostatnia aktywność - most_popular: Najpopularniejsze - most_recent: Ostatnie - name: Hasztag review: Stan przeglądu - reviewed: Przejrzany - title: Hashtagi - trending_right_now: Obecnie na czasie - unique_uses_today: "%{count} opublikowanych dzisiaj" - unreviewed: Nie przejrzano updated_msg: Pomyślnie uaktualniono ustawienia hashtagów title: Administracja + trends: + allow: Zezwól + approved: Zaakceptowano + disallow: Niedozwolone + links: + allow: Zezwól na link + 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 + preview_card_providers: + allowed: Linki od tego wydawcy mogą podlegać trendom + rejected: Linki od tego wydawcy nie mogą podlegać trendom + title: Wydawcy + rejected: Odrzucono + tags: + current_score: Bieżący wynik %{score} + dashboard: + tag_accounts_measure: unikalne zastosowania + tag_languages_dimension: Najlepsze języki + tag_servers_dimension: Najlepsze serwery + tag_servers_measure: różne serwery + tag_uses_measure: użyć łącznie + listable: Można zasugerować + not_listable: Nie można zasugerować + not_trendable: Nie pojawia się pod trendami + not_usable: Nie mogą zostać użyte + peaked_on_and_decaying: Najwyżej %{date}, teraz idzie w dół + title: Popularne hashtagi + trendable: Może pojawić się pod trendami + 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 delete: Usuń @@ -755,9 +809,16 @@ pl: body: Użytkownik %{reporter} zgłosił(a) %{target} body_remote: Użytkownik instancji %{domain} zgłosił(a) %{target} subject: Nowe zgłoszenie na %{instance} (#%{id}) - new_trending_tag: - body: 'Hashtag #%{name} jest dziś popularny, ale nie został wcześniej zatwierdzony. Nie będzie wyświetlany publicznie zanim na to pozwolisz, możesz też zapisać, że nie chcesz o nim już słyszeć.' - subject: Nowy hashtag do zatwierdzenia na %{instance} (#%{name}) + new_trending_links: + body: Poniższe linki są dziś popularne, ale ich wydawcy nie byli wcześniej sprawdzeni. Nie będą one wyświetlane publicznie dopóki ich nie zatwierdzisz. Kolejne powiadomienia od tych samych wydawców nie zostaną wygenerowane. + no_approved_links: Obecnie nie ma zatwierdzonych linków trendów. + requirements: Najniższy zatwierdzony link trendu to "%{lowest_link_title}" z wynikiem %{lowest_link_score}. + subject: Nowe popularne linki do przeglądu na %{instance} + new_trending_tags: + body: 'Następujące hashtagi są dziś popularne, ale nie zostały wcześniej sprawdzone. Nie będą one wyświetlane publicznie, chyba że je zatwierdzisz:' + no_approved_tags: Obecnie nie ma zatwierdzonych popularnych hashtagów. + requirements: 'Najniższy zatwierdzony popularny hashtag to obecnie #%{lowest_tag_name} z wynikiem %{lowest_tag_score}.' + subject: Nowy popularny hashtag do zatwierdzenia na %{instance} aliases: add_new: Utwórz alias created_msg: Pomyślnie utworzono nowy alias. Możesz teraz rozpocząć przenoszenie ze starego konta. @@ -809,6 +870,7 @@ pl: invalid_reset_password_token: Token do resetowania hasła jest nieprawidłowy lub utracił ważność. Spróbuj uzyskać nowy. link_to_otp: Wprowadź kod dwustopniowego uwierzytelniania z telefonu lub użyj zapasowego kodu link_to_webauth: Użyj swojego urządzenia z kluczem bezpieczeństwa + log_in_with: Zaloguj się za pomocą login: Zaloguj się logout: Wyloguj się migrate_account: Przenieś konto @@ -964,9 +1026,10 @@ pl: changes_saved_msg: Ustawienia zapisane! copy: Kopiuj delete: Usuń - no_batch_actions_available: Brak akcji wsadowych dostępnych na tej stronie + none: Żaden order_by: Uporządkuj według save_changes: Zapisz zmiany + today: dzisiaj validation_errors: few: Coś jest wciąż nie tak! Przejrzyj %{count} poniższe błędy many: Coś jest wciąż nie tak! Przejrzyj %{count} poniższych błędów @@ -974,26 +1037,6 @@ pl: other: Coś jest wciąż nie tak! Przejrzyj poniższe błędy (%{count}) html_validator: invalid_markup: 'zawiera nieprawidłową składnię HTML: %{error}' - identity_proofs: - active: Aktywny - authorize: Tak, autoryzuj - authorize_connection_prompt: Czy chcesz autoryzować to połączenie kryptograficzne? - errors: - failed: Połączenioe kryptograficzne nie powiodło się. Spróbuj ponownie z poziomu %{provider}. - keybase: - invalid_token: Tokeny Keybase są hashami podpisów i musza składać się z 66 znaków heksadecymalnych - verification_failed: Keybase nie rozpoznaje tego tokenu jako podpisu użytkownika Keybase %{kb_username}. Spróbuj ponownie z poziomu Keybase. - wrong_user: Nie można utworzyć dowodu dla %{proving}, gdy jesteś zalogowany(-a) jako %{current}. Zaloguj się jako %{proving} i spróbuj ponownie. - explanation_html: Tutaj możesz połączyć kryptograficznie swoje inne tożsamości, takie jak profil Keybase. To pozwoli innym wysłać Ci szyfrowane wiadomości i zaufać zawartości którą im wysyłasz. - i_am_html: Jestem %{username} na %{service}. - identity: Tożsamość - inactive: Niekatywny - publicize_checkbox: 'I opublikuj to:' - publicize_toot: 'Udowodnione! Jestem %{username} na %{service}: %{url}' - remove: Usuń dowód z konta - removed: Pomyślnie usunięto dowód z konta - status: Stan weryfikacji - view_proof: Wyświetl dowód imports: errors: over_rows_processing_limit: zawiera więcej niż %{count} wierszy @@ -1273,7 +1316,6 @@ pl: edit_profile: Edytuj profil export: Eksportowanie danych featured_tags: Wyróżnione hashtagi - identity_proofs: Dowody tożsamości import: Importowanie danych import_and_export: Import i eksport migrate: Migracja konta @@ -1304,20 +1346,21 @@ pl: other: "%{count} filmów" boosted_from_html: Podbito przez %{acct_link} content_warning: 'Ostrzeżenie o zawartości: %{warning}' + default_language: Taki sam jak język interfejsu użytkownika disallowed_hashtags: few: 'zawiera niedozwolone hashtagi: %{tags}' many: 'zawiera niedozwolone hashtagi: %{tags}' one: 'zawiera niedozwolony hashtag: %{tags}' other: 'zawiera niedozwolone hashtagi: %{tags}' + edited_at: Edytowano %{date} errors: in_reply_not_found: Post, na który próbujesz odpowiedzieć, nie istnieje. - language_detection: Automatycznie wykrywaj język open_in_web: Otwórz w przeglądarce over_character_limit: limit %{max} znaków przekroczony pin_errors: + direct: Nie możesz przypiąć wpisu, który jest widoczny tylko dla wspomnianych użytkowników limit: Przekroczyłeś maksymalną liczbę przypiętych wpisów ownership: Nie możesz przypiąć cudzego wpisu - private: Nie możesz przypiąć niepublicznego wpisu reblog: Nie możesz przypiąć podbicia wpisu poll: total_people: @@ -1476,6 +1519,7 @@ pl: formats: default: "%d. %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Dodaj disable: Wyłącz @@ -1503,24 +1547,31 @@ pl: subject: Potwierdź próbę zalogowania title: Próba logowania warning: + categories: + spam: Spam + violation: Zawartość narusza następujące wytyczne społeczności explanation: - disable: Kiedy Twoje konto jest wyłączone, Twoje dane pozostają na serwerze, ale nie możesz wykonywać żadnych działań, zanim zostanie odblokowane. - sensitive: Wysyłane przez Ciebie pliki multimedialne i media z odnośników będą traktowane jako wrażliwe. - silence: Kiedy Twoje konto jest ograniczone, tylko osoby które je śledzą będą widzieć Twoje wpisy. Może ono też przestać być widoczne na publicznych listach. Inni wciąż mogą zacząć Cię śledzić. - suspend: Twoje konto zostało zawieszone i wszystkie Twoje wpisy wraz z zawartością multimedialną zostały nieodwracalnie usunięte z tego serwera i serwerów, których użytkownicy śledzili Cię. - get_in_touch: Możesz odpowiedzieć na ten e-mail aby pozostać w kontakcie z prowadzącymi %{instance}. + delete_statuses: Stwierdzono, że niektóre z Twoich postów naruszają jedną lub więcej wytycznych dla społeczności i zostały usunięte przez moderatorów %{instance}. Przyszłe naruszenia mogą skutkować ostrzejszymi działaniami karnymi w stosunku do Twojego konta. + disable: Nie możesz już używać swojego konta, ale Twój profil i inne dane pozostają nienaruszone. Możesz poprosić o kopię swoich danych, zmienić ustawienia konta lub usunąć swoje konto. + sensitive: Od teraz wszystkie przesłane pliki multimedialne będą oznaczone jako wrażliwe i ukryte za ostrzeżeniem kliknięcia. + silence: Kiedy Twoje konto jest ograniczone, tylko osoby, które je śledzą, będą widzieć Twoje wpisy. Może ono też przestać być widoczne w funkcjach odkrywania. Inni wciąż mogą zacząć Cię śledzić. + 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: 'Szczególnie dla:' + statuses: 'Wpisy uznane za naruszające wytyczne:' subject: + delete_statuses: Twoje wpisy na %{acct} zostały usunięte disable: Twoje konto %{acct} zostało wyłączone none: Ostrzeżenie dla %{acct} - sensitive: Zawartość multimedialna publikowana przez Twoje konto %{acct} została oznaczona jako wrażliwa + sensitive: Twoje multimedia na %{acct} będą od teraz oznaczane jako wrażliwe silence: Twoje konto %{acct} zostało ograniczone suspend: Twoje konto %{acct} zostało zawieszone title: + delete_statuses: Wpisy usunięte disable: Konto wyłączone none: Ostrzeżenie - sensitive: Twoja zawartość multimedialna została oznaczona jako wrażliwa + sensitive: Media ukryte silence: Konto ograniczone suspend: Konto zawieszone welcome: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 812972867..36f390b0e 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -99,7 +99,6 @@ pt-BR: accounts: add_email_domain_block: Adicionar o domínio de e-mail à lista negra approve: Aprovar - approve_all: Aprovar tudo approved_msg: Aprovado com sucesso o pedido de registro de %{username} are_you_sure: Você tem certeza? avatar: Imagem de perfil @@ -119,6 +118,7 @@ pt-BR: demote: Rebaixar destroyed_msg: Os dados de %{username} estão na fila para serem excluídos em breve disable: Congelar + disable_sign_in_token_auth: Desativar autenticação via token por email disable_two_factor_authentication: Desativar autenticação de dois fatores disabled: Desativada display_name: Nome de exibição @@ -127,6 +127,7 @@ pt-BR: email: E-mail email_status: Status do e-mail enable: Descongelar + enable_sign_in_token_auth: Ativar autenticação via token por email enabled: Ativada enabled_msg: Descongelada com sucesso a conta de %{username} followers: Seguidores @@ -139,6 +140,7 @@ pt-BR: joined: Entrou location: all: Todos + local: Local remote: Remoto title: Localização login_status: Situação da conta @@ -150,7 +152,6 @@ pt-BR: active: Ativo all: Todos pending: Pendente - silenced: Silenciados suspended: Banidos title: Moderação moderation_notes: Notas de moderação @@ -168,7 +169,6 @@ pt-BR: redownload: Atualizar perfil redownloaded_msg: Atualizado com sucesso o perfil de %{username} a partir da origem reject: Vetar - reject_all: Vetar tudo rejected_msg: Rejeitado com sucesso o pedido de registro de %{username} remove_avatar: Remover imagem de perfil remove_header: Remover capa @@ -190,6 +190,10 @@ pt-BR: search: Pesquisar search_same_email_domain: Outros usuários com o mesmo domínio de e-mail search_same_ip: Outros usuários com o mesmo IP + security_measures: + only_password: Somente senha + password_and_2fa: Senha e 2FA + password_and_sign_in_token: Token de senha e e-mail sensitive: Sensíveis sensitized: marcadas como sensíveis shared_inbox_url: Link da caixa de entrada compartilhada @@ -203,8 +207,9 @@ pt-BR: 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. - time_in_queue: Esperando na fila por %{time} title: Contas + unblock_email: Desbloquear endereço de e-mail + unblocked_email_msg: Endereço de e-mail de %{username} desbloqueado com sucesso unconfirmed_email: E-mail não confirmado undo_sensitized: Desfazer sensível undo_silenced: Desfazer silêncio @@ -219,6 +224,7 @@ pt-BR: whitelisted: Permitido action_logs: action_types: + approve_user: Aprovar Usuário assigned_to_self_report: Adicionar relatório change_email_user: Editar e-mail do usuário confirm_user: Confirmar Usuário @@ -229,6 +235,7 @@ pt-BR: create_domain_block: Criar Bloqueio de Domínio create_email_domain_block: Criar Bloqueio de Domínio de E-mail create_ip_block: Criar regra de IP + create_unavailable_domain: Criar domínio indisponível demote_user: Rebaixar usuário destroy_announcement: Excluir anúncio destroy_custom_emoji: Excluir emoji personalizado @@ -237,13 +244,17 @@ pt-BR: destroy_email_domain_block: Excluir bloqueio de domínio de e-mail destroy_ip_block: Excluir regra de IP destroy_status: Excluir Status + destroy_unavailable_domain: Deletar domínio indisponível disable_2fa_user: Desativar autenticação de dois fatores disable_custom_emoji: Desativar Emoji Personalizado + disable_sign_in_token_auth_user: Desativar autenticação via token por email para Usuário disable_user: Desativar usuário enable_custom_emoji: Ativar Emoji Personalizado + enable_sign_in_token_auth_user: Ativar autenticação via token por email para Usuário enable_user: Ativar usuário memorialize_account: Converter conta em memorial promote_user: Promover usuário + reject_user: Rejeitar Usuário remove_avatar_user: Remover Avatar reopen_report: Reabrir Relatório reset_password_user: Redefinir a senha @@ -252,6 +263,7 @@ pt-BR: silence_account: Silenciar conta suspend_account: Suspender Conta unassigned_report: Remover relatório + unblock_email_account: Desbloquear endereço de e-mail unsensitive_account: Desmarcar a mídia na sua conta como sensível unsilence_account: Desfazer silenciar conta unsuspend_account: Remover suspensão de conta @@ -260,9 +272,52 @@ pt-BR: update_domain_block: Atualizar bloqueio de domínio update_status: Editar Status actions: + assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} para si" + change_email_user_html: "%{name} alterou o endereço de e-mail do usuário %{target}" + confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" + create_announcement_html: "%{name} criou o novo anúncio %{target}" + create_custom_emoji_html: "%{name} enviou o novo emoji %{target}" + create_domain_allow_html: "%{name} permitiu federação com domínio %{target}" create_domain_block_html: "%{name} bloqueou o domínio %{target}" create_email_domain_block_html: "%{name} bloqueou do domínio de e-mail %{target}" + create_ip_block_html: "%{name} criou regra para o IP %{target}" + create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}" + demote_user_html: "%{name} rebaixou o usuário %{target}" + destroy_announcement_html: "%{name} excluiu o anúncio %{target}" + destroy_custom_emoji_html: "%{name} excluiu emoji %{target}" + destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}" + destroy_domain_block_html: "%{name} deixou de bloquear domínio %{target}" + destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca" + destroy_ip_block_html: "%{name} excluiu regra para o IP %{target}" + destroy_status_html: "%{name} excluiu post de %{target}" + destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" + disable_2fa_user_html: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}" + disable_custom_emoji_html: "%{name} desativou o emoji %{target}" + disable_sign_in_token_auth_user_html: "%{name} desativou a autenticação via token por email para %{target}" + disable_user_html: "%{name} desativou o login para %{target}" + enable_custom_emoji_html: "%{name} desativou o emoji %{target}" + enable_sign_in_token_auth_user_html: "%{name} ativou a autenticação via token por email para %{target}" + enable_user_html: "%{name} ativou o login para %{target}" + memorialize_account_html: "%{name} transformou a conta de %{target} em um memorial" + promote_user_html: "%{name} promoveu o usuário %{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}" + reset_password_user_html: "%{name} redefiniu a senha de %{target}" + resolve_report_html: "%{name} fechou a denúncia %{target}" + sensitive_account_html: "%{name} marcou a mídia de %{target} como sensível" + silence_account_html: "%{name} limitou a conta de %{target}" + suspend_account_html: "%{name} suspendeu a conta de %{target}" + unassigned_report_html: "%{name} desvinculou a denúncia %{target}" + unblock_email_account_html: "%{name} desbloqueou o endereço de e-mail de %{target}" + unsensitive_account_html: "%{name} desmarcou a mídia de %{target} como sensível" + unsilence_account_html: "%{name} removeu a limitação da conta de %{target}" + unsuspend_account_html: "%{name} removeu a suspenção da conta de %{target}" + update_announcement_html: "%{name} atualizou o comunicado %{target}" + update_custom_emoji_html: "%{name} atualizou o emoji %{target}" + update_domain_block_html: "%{name} atualizou o bloqueio de domínio de %{target}" + update_status_html: "%{name} atualizou a publicação de %{target}" deleted_status: "(status excluído)" empty: Nenhum registro encontrado. filter_by_action: Filtrar por ação @@ -298,6 +353,7 @@ pt-BR: disable: Desativar disabled: Desativado disabled_msg: Emoji desativado com sucesso + emoji: Emoji enable: Ativar enabled: Ativado enabled_msg: Emoji ativado com sucesso @@ -318,9 +374,19 @@ pt-BR: updated_msg: Emoji atualizado com sucesso! upload: Enviar dashboard: + active_users: usuários ativos + interactions: interações + media_storage: Armazenamento de mídia + new_users: novos usuários + opened_reports: denúncias abertas + resolved_reports: denúncias solucionadas software: Software + sources: Origem das inscrições space: Uso de espaço em disco title: Painel de controle + top_languages: Línguas mais ativas + top_servers: Servidores mais ativos + website: Site domain_allows: add_new: Permitir domínio created_msg: Domínio foi permitido @@ -343,6 +409,7 @@ pt-BR: suspend: Banir title: Novo bloqueio de domínio obfuscate: Ofuscar nome de domínio + obfuscate_hint: Ofuscar parcialmente o domínio na lista se a exibição da lista de domínios limitados estiver habilitada private_comment: Comentário privado private_comment_hint: Comente sobre essa restrição ao domínio para uso interno dos moderadores. public_comment: Comentário público @@ -379,9 +446,28 @@ pt-BR: create: Adicionar domínio title: Nova entrada de lista negra de e-mail title: Lista de negra de e-mail + follow_recommendations: + description_html: "<strong>A recomendação de contas ajuda os novos usuários a encontrar rapidamente conteúdo interessante</strong>. Quando um usuário ainda não tiver interagido o suficiente para gerar recomendações de contas, essas contas serão recomendadas. Essas recomendações são recalculadas diariamente a partir de uma lista de contas com alto engajamento e maior número de seguidores locais em uma dada língua." + language: Na língua + status: Situação + suppress: Remover recomendação de contas + suppressed: Removida + title: Recomendações de contas + unsuppress: Restaurar recomendação de contas instances: + back_to_all: Todas back_to_warning: Aviso by_domain: Domínio + confirm_purge: Você tem certeza de que deseja excluir permanentemente os dados deste domínio? + delivery: + all: Todos + clear: Limpar erros de entrega + restart: Reiniciar a entrega + stop: Parar entrega + title: Entrega + unavailable: Indisponível + unavailable_message: Envio indisponível + warning: Aviso delivery_available: Envio disponível empty: Nenhum domínio encontrado. known_accounts: @@ -393,6 +479,7 @@ pt-BR: title: Moderação private_comment: Comentário privado public_comment: Comentário público + purge: Limpar title: Federação total_blocked_by_us: Bloqueado por nós total_followed_by_them: Seguidos por eles @@ -422,8 +509,6 @@ pt-BR: title: Criar nova regra de IP no_ip_block_selected: Nenhuma regra de IP foi alterada pois nenhuma foi selecionada title: Regras de IP - pending_accounts: - title: Contas pendentes (%{count}) relationships: title: Relações de %{acct} relays: @@ -440,6 +525,7 @@ pt-BR: save_and_enable: Salvar e ativar setup: Configurar uma conexão de repetidor signatures_not_enabled: Repetidores não funcionarão adequadamente enquanto o modo seguro ou o modo lista de permitidos estiverem ativos + status: Situação title: Repetidores report_notes: created_msg: Nota de denúncia criada com sucesso! @@ -449,37 +535,53 @@ pt-BR: notes: one: "%{count} nota" other: "%{count} notas" - reports: - one: "%{count} denúncia" - other: "%{count} denúncias" + action_log: Logs de auditoria action_taken_by: Atitude tomada por + actions: + 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 assigned: Moderador responsável by_target_domain: Domínio da conta denunciada + category: Categoria + category_description_html: O motivo pelo qual esta conta e/ou conteúdo foi reportado será citado na comunicação com a conta reportada comment: none: Nenhum + comment_description_html: 'Para fornecer mais informações, %{name} escreveu:' created_at: Denunciado + delete_and_resolve: Apagar e resolver forwarded: Encaminhados forwarded_to: Encaminhado para %{domain} mark_as_resolved: Marcar como resolvido mark_as_unresolved: Marcar como não resolvido + no_one_assigned: Ninguém notes: create: Adicionar nota create_and_resolve: Resolver com nota create_and_unresolve: Reabrir com nota delete: Excluir 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 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! + status: Situação + statuses: Conteúdo denunciado + statuses_description_html: Conteúdo Ofensivo será citado em comunicação com a conta relatada + target_origin: Origem da conta relatada title: Denúncias unassign: Largar unresolved: Não resolvido updated_at: Atualizado + view_profile: Ver perfil rules: add_new: Adicionar regra delete: Deletar @@ -581,39 +683,64 @@ pt-BR: destroyed_msg: Upload do site excluído com sucesso! statuses: back_to_account: Voltar para página da conta - batch: - delete: Excluir - nsfw_off: Desmarcar como sensível - nsfw_on: Marcar como sensível deleted: Excluídos - failed_to_execute: Falha ao executar media: title: Mídia - no_media: Sem mídia no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado title: Toots da conta with_media: Com mídia system_checks: + database_schema_check: + message_html: Existem migrações de banco de dados pendentes. Por favor, execute-as para garantir que o aplicativo se comporte como esperado rules_check: + action: Gerenciar regras do servidor message_html: Você não definiu nenhuma regra de servidor. tags: - accounts_today: Usos únicos de hoje - accounts_week: Usos únicos desta semana - breakdown: Descrição do consumo atual por fonte - last_active: Última atividade - most_popular: Mais populares - most_recent: Mais recentes review: Status da revisão - reviewed: Revisado - trending_right_now: Em alta no momento - unique_uses_today: "%{count} tootando hoje" - unreviewed: Não revisadas updated_msg: Configurações de hashtag atualizadas com sucesso title: Administração + trends: + allow: Permitir + approved: Aprovado + disallow: Anular + links: + allow: Permitir link + allow_provider: Permitir editor + disallow: Proibir link + disallow_provider: Anular editor + title: Em alta no momento + usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem + pending_review: Revisão pendente + preview_card_providers: + allowed: Links deste editor podem tender + rejected: Links deste editor não vão tender + title: Editor + rejected: Rejeitado + tags: + current_score: Pontuação atual %{score} + dashboard: + tag_accounts_measure: usos únicos + tag_languages_dimension: Idiomas principais + tag_servers_dimension: Servidores mais populares + tag_servers_measure: servidores diferentes + listable: Pode ser sugerido + not_listable: Não será sugerido + not_trendable: Não aparecerá em alta + not_usable: Não pode ser usado + title: Hashtags em alta + trendable: Aparecerá em alta + 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 delete: Excluir edit_preset: Editar o aviso pré-definido + empty: Você ainda não definiu nenhuma predefinição de alerta. title: Gerenciar os avisos pré-definidos admin_mailer: new_pending_account: @@ -623,9 +750,10 @@ pt-BR: body: "%{reporter} denunciou %{target}" body_remote: Alguém da instância %{domain} reportou %{target} subject: Nova denúncia sobre %{instance} (#%{id}) - new_trending_tag: - body: 'A hashtag #%{name} está em alta hoje, mas não foi previamente revisada. Ela não estará visível publicamente a menos que você aprove, ou salve o formulário do jeito que está para nunca mais ouvir falar dela.' - subject: Nova hashtag disponível para revisão em %{instance} (#%{name}) + new_trending_links: + no_approved_links: Atualmente, não há links de tendência aprovados. + new_trending_tags: + body: 'As seguintes hashtags estão em alta hoje, mas não foram avaliadas anteriormente. Elas não serão exibidas publicamente, a menos que você as aprove:' aliases: add_new: Criar alias created_msg: Um novo alias foi criado com sucesso. Agora você pode iniciar a mudança da conta antiga. @@ -647,6 +775,7 @@ pt-BR: toot_layout: Layout do Toot application_mailer: notification_preferences: Alterar preferências de e-mail + salutation: "%{name}," settings: 'Alterar e-mail de preferência: %{link}' view: 'Ver:' view_profile: Ver perfil @@ -681,6 +810,9 @@ pt-BR: migrate_account: Mudar-se para outra conta migrate_account_html: Se você quer redirecionar essa conta para uma outra você pode <a href="%{path}">configurar isso aqui</a>. or_log_in_with: Ou entre com + providers: + cas: CAS + saml: SAML register: Criar conta registration_closed: "%{instance} não está aceitando novos membros" resend_confirmation: Reenviar instruções de confirmação @@ -727,6 +859,7 @@ pt-BR: with_month_name: "%d de %b de %Y" datetime: distance_in_words: + about_x_hours: "%{count}h" about_x_months: "%{count}m" about_x_years: "%{count}a" almost_x_years: "%{count}a" @@ -787,6 +920,7 @@ pt-BR: size: Tamanho blocks: Você bloqueou bookmarks: Marcadores + csv: CSV domain_blocks: Bloqueios de domínio lists: Listas mutes: Você silenciou @@ -824,35 +958,18 @@ pt-BR: changes_saved_msg: Alterações foram salvas com sucesso! copy: Copiar delete: Excluir - no_batch_actions_available: Nenhuma ação em lote disponível nesta página + none: Nenhum order_by: Ordenar por save_changes: Salvar alterações + today: hoje validation_errors: one: Algo errado não está certo! Por favor, analise o erro abaixo other: Algo errado não está certo! Por favor, analise os %{count} erros abaixo html_validator: invalid_markup: 'contém HTML inválido: %{error}' - identity_proofs: - active: Ativo - authorize: Sim, autorizar - authorize_connection_prompt: Autorizar essa conexão criptográfica? - errors: - failed: Falha na conexão criptográfica. Por favor, tente novamente a partir de %{provider}. - keybase: - invalid_token: Tokens keybase são hashes de assinatura e devem conter 66 caracteres hexa - verification_failed: Keybase não reconhece esse token como uma assinatura do usuário keybase %{kb_username}. Por favor, tente novamente a partir do Keybase. - wrong_user: Não foi possível criar uma prova para %{proving} como %{current}. Entre como %{proving} e tente novamente. - explanation_html: Você pode conectar criptograficamente suas outras identidades, tais quais seu perfil Keybase. Isso permite outras pessoas de lhe enviarem mensagens criptografadas e confiar no conteúdo que você as envia. - i_am_html: Eu sou %{username} em %{service}. - identity: Identidade - inactive: Inativo - publicize_checkbox: 'E toote isso:' - publicize_toot: 'Está provado! Eu sou %{username} no %{service}: %{url}' - remove: Remover prova da conta - removed: Prova removida da conta com sucesso - status: Status da verificação - view_proof: Ver prova imports: + errors: + over_rows_processing_limit: contém mais de %{count} linhas modes: merge: Juntar merge_long: Manter os registros existentes e adicionar novos @@ -893,6 +1010,16 @@ pt-BR: lists: errors: limit: Você atingiu o máximo de listas + login_activities: + authentication_methods: + otp: autenticação de dois fatores + password: senha + webauthn: chaves de segurança + description_html: Se você vir atividades suspeitas ou não reconhecidas, considere alterar sua senha e ativar a autenticação de dois fatores. + empty: Sem histórico de autenticação disponível + failed_sign_in_html: Falha na tentativa de login com %{method} de %{ip} (%{browser}) + successful_sign_in_html: Login bem-sucedido com %{method} de %{ip} (%{browser}) + title: Histórico de autenticação media_attachments: validations: images_and_video: Não foi possível anexar um vídeo a um toot que já contém imagens @@ -965,10 +1092,14 @@ pt-BR: body: "%{name} te mencionou em:" subject: "%{name} te mencionou" title: Nova menção + poll: + subject: Uma enquete por %{name} terminou reblog: body: "%{name} deu boost no seu toot:" subject: "%{name} deu boost no seu toot" title: Novo boost + status: + subject: "%{name} acabou de postar" notifications: email_events: Eventos para notificações por e-mail email_events_hint: 'Selecione os eventos que deseja receber notificações:' @@ -976,6 +1107,7 @@ pt-BR: number: human: decimal_units: + format: "%n%u" units: billion: BI million: MI @@ -995,6 +1127,7 @@ pt-BR: next: Próximo older: Mais antigo prev: Anterior + truncate: "…" polls: errors: already_voted: Enquete votada @@ -1076,15 +1209,24 @@ pt-BR: current_session: Sessão atual description: "%{browser} em %{platform}" explanation: Estes são os navegadores que estão conectados com a sua conta Mastodon. + ip: IP platforms: + adobe_air: Adobe Air + android: Android blackberry: BlackBerry + chrome_os: Chrome OS + firefox_os: Firefox OS + ios: iOS + linux: Linux mac: MacOS other: Plataforma desconhecida + windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone revoke: Fechar revoke_success: Sessão fechada com sucesso title: Sessões + view_authentication_history: Ver histórico de autenticação da sua conta settings: account: Conta account_settings: Configurações da conta @@ -1097,7 +1239,6 @@ pt-BR: edit_profile: Editar perfil export: Exportar dados featured_tags: Hashtags em destaque - identity_proofs: Provas de identidade import: Importar import_and_export: Importar e exportar migrate: Migração de conta @@ -1105,6 +1246,7 @@ pt-BR: preferences: Preferências profile: Perfil relationships: Seguindo e seguidores + statuses_cleanup: Exclusão automatizada de publicações two_factor_authentication: Autenticação de dois fatores webauthn_authentication: Chaves de segurança statuses: @@ -1126,13 +1268,12 @@ pt-BR: other: 'continha hashtags não permitidas: %{tags}' errors: in_reply_not_found: O toot que você quer responder parece não existir. - language_detection: Detectar idioma automaticamente open_in_web: Abrir no navegador over_character_limit: limite de caracteres de %{max} excedido pin_errors: + direct: Posts visíveis apenas para usuários mencionados não podem ser fixados limit: Quantidade máxima de toots excedida ownership: Toots dos outros não podem ser fixados - private: Toots não-públicos não podem ser fixados reblog: Boosts não podem ser fixados poll: total_people: @@ -1147,13 +1288,49 @@ pt-BR: show_older: Mostrar mais antigos show_thread: Mostrar conversa sign_in_to_participate: Entre para participar dessa conversa + title: '%{name}: "%{quote}"' visibilities: + direct: Direto private: Privado private_long: Posta apenas para seguidores public: Público public_long: Posta em linhas públicas unlisted: Não-listado unlisted_long: Não posta em linhas públicas + statuses_cleanup: + enabled: Excluir publicações antigas automaticamente + enabled_hint: Exclui suas publicações automaticamente assim que elas alcançam sua validade, a não ser que se enquadrem em alguma das exceções abaixo + exceptions: Exceções + explanation: Já que a exclusão de publicações é uma operação custosa, ela é feita lentamente quando o servidor não está ocupado. Por isso suas publicações podem ser excluídas algum tempo depois de alcançarem sua validade. + ignore_favs: Ignorar favoritos + ignore_reblogs: Ignorar boosts + interaction_exceptions: Exceções baseadas nas interações + interaction_exceptions_explanation: Note que não há garantia de que as publicações sejam excluídas se ficarem abaixo do limite de favoritos ou boosts depois de tê-lo ultrapassado. + keep_direct: Manter mensagens diretas + keep_direct_hint: Não deleta nenhuma de suas mensagens diretas + keep_media: Manter publicações com mídia + keep_media_hint: Não exclui nenhuma de suas publicações com mídia + keep_pinned: Manter publicações fixadas + keep_pinned_hint: Não exclui nenhuma publicação fixada + keep_polls: Manter enquetes + keep_polls_hint: Não exclui nenhuma de suas enquetes + keep_self_bookmark: Manter publicações que você salvou + keep_self_bookmark_hint: Não exclui suas próprias publicações se você as tiver salvado + keep_self_fav: Manter publicações que você favoritou + keep_self_fav_hint: Não exclui suas próprias publicações se você as tiver favoritado + min_age: + '1209600': 2 semanas + '15778476': 6 meses + '2629746': 1 mês + '31556952': 1 ano + '5259492': 2 meses + '63113904': 2 anos + '7889238': 3 meses + min_age_label: Validade + min_favs: Manter publicações favoritadas por ao menos + min_favs_hint: Não exclui publicações que tiverem sido favoritados ao menos essa quantidade de vezes. Deixe em branco para excluir publicações independente da quantidade de favoritos + min_reblogs: Manter publicações boostadas por ao menos + min_reblogs_hint: Não exclui publicações que tiverem sido boostadas ao menos essa quantidade de vezes. Deixe em branco para excluir publicações independente da quantidade de boosts stream_entries: pinned: Toot fixado reblogged: deu boost @@ -1278,24 +1455,24 @@ pt-BR: subject: Por favor, confirme a tentativa de acesso title: Tentativa de acesso warning: + categories: + spam: Spam + violation: O conteúdo viola as seguintes diretrizes da comunidade explanation: - disable: Enquanto sua conta está congelada, seus dados de conta permanecem intactos, mas você não pode realizar nenhuma ação até que esteja destrancada. - sensitive: Seus arquivos de mídia carregados e mídias vinculadas serão tratados como sensíveis. - silence: Enquanto sua conta está silenciada, somente pessoas que já estão seguindo você poderão ver seus toots nessa instância, e você pode ser excluído de várias listas públicas. No entanto, outros ainda podem te seguir manualmente. - suspend: Sua conta foi banida e todos os seus toots e mídias foram irreversivelmente excluídos desta instância e das instâncias dos seus seguidores. - get_in_touch: Você pode responder a este e-mail para entrar em contato com a equipe de %{instance}. + 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 - statuses: 'Especificamente, para:' subject: disable: Sua conta %{acct} foi bloqueada none: Aviso para %{acct} - sensitive: Sua conta %{acct} de postagem de mídia foi marcada como sensível silence: Sua conta %{acct} foi silenciada suspend: Sua conta %{acct} foi banida title: + delete_statuses: Publicações removidas disable: Conta bloqueada none: Aviso - sensitive: Sua mídia foi marcada como sensível + sensitive: Mídia oculta silence: Conta silenciada suspend: Conta banida welcome: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 93b375c3d..de301e149 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -99,7 +99,6 @@ pt-PT: accounts: add_email_domain_block: Adicionar o domínio de e-mail à lista negra approve: Aprovar - approve_all: Aprovar todos approved_msg: Inscrição de %{username} aprovada com sucesso are_you_sure: Tens a certeza? avatar: Imagem de Perfil @@ -114,6 +113,7 @@ pt-PT: confirm: Confirmar confirmed: Confirmado confirming: A confirmar + custom: Personalizar delete: Eliminar dados deleted: Eliminada demote: Despromoveu @@ -153,7 +153,6 @@ pt-PT: active: Activo all: Todos pending: Pendente - silenced: Silenciados suspended: Supensos title: Moderação moderation_notes: Notas de moderação @@ -171,7 +170,6 @@ pt-PT: redownload: Atualizar perfil redownloaded_msg: Atualizado com sucesso o perfil de %{username} da origem reject: Rejeitar - reject_all: Rejeitar todas rejected_msg: Inscrição de %{username} rejeitada com sucesso remove_avatar: Remover a imagem de perfil remove_header: Remover o cabeçalho @@ -201,17 +199,19 @@ pt-PT: sensitized: marcada como sensível shared_inbox_url: URL da caixa de entrada compartilhada show: - created_reports: Relatórios gerados por esta conta - targeted_reports: Relatórios feitos sobre esta conta + created_reports: Denúncias realizadas + targeted_reports: Denunciada por outros silence: Silêncio silenced: Silenciada statuses: Status + strikes: Punições anteriores subscribe: Inscrever-se 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. - time_in_queue: Aguardando na fila %{time} title: Contas + unblock_email: Desbloquear endereço de e-mail + unblocked_email_msg: Endereço de e-mail de %{username} desbloqueado com sucesso unconfirmed_email: E-mail não confirmado undo_sensitized: Desmarcar como sensível undo_silenced: Desfazer silenciar @@ -226,7 +226,8 @@ pt-PT: whitelisted: Está na lista branca action_logs: action_types: - assigned_to_self_report: Atribuir Relatório + approve_user: Aprovar Utilizador + assigned_to_self_report: Atribuir Denúncia change_email_user: Alterar E-mail do Utilizador confirm_user: Confirmar Utilizador create_account_warning: Criar Aviso @@ -243,6 +244,7 @@ pt-PT: destroy_domain_allow: Eliminar Permissão de Domínio destroy_domain_block: Eliminar Bloqueio de Domínio destroy_email_domain_block: Eliminar Bloqueio de Domínio de E-mail + destroy_instance: Purgar Domínio destroy_ip_block: Eliminar regra de IP destroy_status: Eliminar Publicação destroy_unavailable_domain: Eliminar Domínio Indisponível @@ -255,14 +257,16 @@ pt-PT: enable_user: Ativar Utilizador memorialize_account: Memorizar Conta promote_user: Promover Utilizador + reject_user: Rejeitar Utilizador remove_avatar_user: Remover Imagem de Perfil - reopen_report: Reabrir Relatório + reopen_report: Reabrir Denúncia reset_password_user: Repor Password - resolve_report: Resolver Relatório + resolve_report: Resolver Denúncia sensitive_account: Marcar a media na sua conta como sensível silence_account: Silenciar Conta suspend_account: Suspender Conta - unassigned_report: Desatribuir Relatório + unassigned_report: Desatribuir Denúncia + unblock_email_account: Desbloquear endereço de e-mail unsensitive_account: Desmarcar a media na sua conta como sensível unsilence_account: Deixar de Silenciar Conta unsuspend_account: Retirar Suspensão à Conta @@ -271,7 +275,8 @@ pt-PT: update_domain_block: Atualizar Bloqueio de Domínio update_status: Atualizar Estado actions: - assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} a si próprio" + 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}" confirm_user_html: "%{name} confirmou o endereço de e-mail do utilizador %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" @@ -288,6 +293,7 @@ pt-PT: destroy_domain_allow_html: "%{name} desabilitou a federação com o domínio %{target}" destroy_domain_block_html: "%{name} desbloqueou o domínio %{target}" destroy_email_domain_block_html: "%{name} desbloqueou o domínio de e-mail %{target}" + destroy_instance_html: "%{name} purgou o domínio %{target}" destroy_ip_block_html: "%{name} eliminou regra para o IP %{target}" destroy_status_html: "%{name} removeu a publicação de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" @@ -300,14 +306,16 @@ 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_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 o relatório %{target}" + reopen_report_html: "%{name} reabriu a denúncia %{target}" reset_password_user_html: "%{name} restabeleceu a palavra-passe do utilizador %{target}" - resolve_report_html: "%{name} resolveu o relatório %{target}" + resolve_report_html: "%{name} resolveu a denúncia %{target}" sensitive_account_html: "%{name} marcou a media de %{target} como sensível" silence_account_html: "%{name} silenciou a conta de %{target}" suspend_account_html: "%{name} suspendeu a conta de %{target}" - unassigned_report_html: "%{name} desatribuiu o realtório %{target}" + unassigned_report_html: "%{name} desatribuiu a denúncia %{target}" + unblock_email_account_html: "%{name} desbloqueou o endereço de e-mail de %{target}" unsensitive_account_html: "%{name} desmarcou a media de %{target} como sensível" unsilence_account_html: "%{name} desativou o silêncio de %{target}" unsuspend_account_html: "%{name} desativou a suspensão de %{target}" @@ -375,17 +383,17 @@ pt-PT: interactions: interações media_storage: Armazenamento de media new_users: novos utilizadores - opened_reports: relatórios abertos + opened_reports: denúncias abertas pending_reports_html: - one: "<strong>1</strong> relatório pendente" - other: "<strong>%{count}</strong> relatórios pendentes" + one: "<strong>1</strong> denúncia pendente" + other: "<strong>%{count}</strong> denúncias pendentes" pending_tags_html: one: "<strong>1</strong> hashtag pendente" other: "<strong>%{count}</strong> hashtags pendentes" pending_users_html: one: "<strong>1</strong> utilizador pendente" other: "<strong>%{count}</strong> utilizadores pendentes" - resolved_reports: relatórios resolvidos + resolved_reports: denúncias resolvidas software: Software sources: Origem de inscrições space: Utilização do espaço @@ -422,10 +430,10 @@ pt-PT: public_comment_hint: Comentário sobre essa limitação de domínio para o público geral, se ativada a divulgação da lista de limitações de domínio. reject_media: Rejeitar ficheiros de media reject_media_hint: Remove arquivos de media armazenados localmente e rejeita descarregar novos arquivos no futuro. Irrelevante para suspensões - reject_reports: Rejeitar relatórios - reject_reports_hint: Ignorar todos os relatórios vindos deste domínio. Irrelevantes para efectuar suspensões + reject_reports: Rejeitar denúncia + reject_reports_hint: Ignorar todos as denúncias provenientes deste domínio. Irrelevante para suspensões rejecting_media: a rejeitar ficheiros de media - rejecting_reports: a rejeitar relatórios + rejecting_reports: a rejeitar denúncias severity: silence: silenciado suspend: suspenso @@ -465,6 +473,7 @@ pt-PT: back_to_limited: Limitadas back_to_warning: Aviso by_domain: Domínio + confirm_purge: Tem a certeza que deseja eliminar permanentemente os dados deste domínio? delivery: all: Todas clear: Limpar erros de entrega @@ -480,6 +489,7 @@ pt-PT: delivery_available: Entrega disponível delivery_error_days: Dias de erro de entrega delivery_error_hint: Se a entrega não for possível durante %{count} dias, será automaticamente marcada como não realizável. + destroyed_msg: Dados de %{domain} estão agora na fila para iminente eliminação. empty: Não foram encontrados domínios. known_accounts: one: "%{count} conta conhecida" @@ -490,11 +500,12 @@ pt-PT: title: Moderação private_comment: Comentários privados public_comment: Comentários públicos + purge: Purgar title: Instâncias conhecidas total_blocked_by_us: Bloqueadas por nós total_followed_by_them: Seguidas por eles total_followed_by_us: Seguidas por nós - total_reported: Relatórios sobre eles + total_reported: Denúncias sobre eles total_storage: Anexos de media invites: deactivate_all: Desativar todos @@ -519,8 +530,6 @@ pt-PT: title: Criar nova regra de IP no_ip_block_selected: Nenhuma regra de IP foi alterada pois nenhuma foi selecionada title: Regras de IP - pending_accounts: - title: Contas pendentes (%{count}) relationships: title: Relações de %{acct} relays: @@ -540,46 +549,61 @@ pt-PT: status: Estado title: Retransmissores report_notes: - created_msg: Relatório criado com sucesso! - destroyed_msg: Nota de relatório eliminada com sucesso! + created_msg: Nota de denúncia criada com sucesso! + destroyed_msg: Nota de denúncia eliminada com sucesso! + today_at: Hoje às %{time} reports: account: notes: one: "%{count} nota" other: "%{count} notas" - reports: - one: "%{count} relatório" - other: "%{count} relatórios" + action_log: Registo de auditoria action_taken_by: Ação tomada por - are_you_sure: Tens a certeza? - assign_to_self: Atribuí-me a mim - assigned: Atribuído ao moderador - by_target_domain: Domínio da conta reportada + actions: + other_description_html: Ver mais opções para controlar o comportamento da conta e personalizar a comunicação para a conta denunciada. + 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:' + add_to_report: Adicionar mais à denúncia + are_you_sure: Tem a certeza? + assign_to_self: Atribuída a mim + assigned: Atribuída ao moderador + by_target_domain: Domínio da conta denunciada + category: Categorização + category_description_html: A razão pela qual esta conta e/ou conteúdo foi denunciado será citada na comunicação com a conta denunciada comment: none: Nenhum - created_at: Relatado + comment_description_html: 'Para fornecer mais informações, %{name} escreveu:' + created_at: Denunciado + delete_and_resolve: Apagar e resolver forwarded: Encaminhado forwarded_to: Encaminhado para %{domain} mark_as_resolved: Marcar como resolvido mark_as_unresolved: Marcar como não resolvido + no_one_assigned: Ninguém notes: create: Adicionar nota create_and_resolve: Resolver com nota create_and_unresolve: Reabrir com nota delete: Eliminar placeholder: Descreve as ações que foram tomadas ou quaisquer outras atualizações relacionadas... - reopen: Reabrir relatório + title: Notas + notes_description_html: Visualize e deixe anotações para outros moderadores e para sí no futuro + reopen: Reabrir denúncia report: 'Denúncia #%{id}' reported_account: Conta denunciada - reported_by: Reportado por + reported_by: Denunciado por resolved: Resolvido - resolved_msg: Relatório resolvido com sucesso! + resolved_msg: Denúncia resolvida com sucesso! status: Estado - target_origin: Origem da conta reportada - title: Relatórios + statuses: Conteúdo denunciado + statuses_description_html: O conteúdo ofensivo será citado na comunicação com a conta denunciada + target_origin: Origem da conta denunciada + title: Denúncias unassign: Não atribuir unresolved: Por resolver updated_at: Atualizado + view_profile: Ver perfil rules: add_new: Adicionar regra delete: Eliminar @@ -681,15 +705,13 @@ pt-PT: destroyed_msg: Upload do site eliminado com sucesso! statuses: back_to_account: Voltar para página da conta + back_to_report: Voltar à página da denúncia batch: - delete: Eliminar - nsfw_off: NSFW OFF - nsfw_on: NSFW ON + remove_from_report: Remover da denúncia + report: Denúncia deleted: Eliminado - failed_to_execute: Falhou ao executar media: title: Media - no_media: Não há media no_status_selected: Nenhum estado foi alterado porque nenhum foi selecionado title: Estado das contas with_media: Com media @@ -702,21 +724,51 @@ pt-PT: sidekiq_process_check: message_html: Nenhum processo Sidekiq em execução para a(s) fila(s) %{value}. Reveja a configuração do seu Sidekiq tags: - accounts_today: Usos únicos hoje - accounts_week: Usos únicos desta semana - breakdown: Descrição do consumo atual por fonte - last_active: Última actividade - most_popular: Mais popular - most_recent: Mais recente - name: Hashtag review: Estado da revisão - reviewed: Revista - title: Hashtags - trending_right_now: Tendências agora - unique_uses_today: "%{count} publicando hoje" - unreviewed: Não revista updated_msg: Definições de hashtags actualizadas com sucesso title: Administração + trends: + allow: Permitir + approved: Aprovado + disallow: Não permitir + links: + allow: Permitir link + allow_provider: Permitir editor + disallow: Não permitir link + disallow_provider: Não permitir editor + shared_by_over_week: + one: Partilhado por uma pessoa na última semana + other: Partilhado por %{count} pessoas 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 + preview_card_providers: + allowed: Links deste editor poderão ser incluídos nos destaques + rejected: Links deste editor não serão incluídos nos destaques + title: Editores + rejected: Rejeitado + tags: + current_score: Pontuação atual %{score} + dashboard: + tag_accounts_measure: utilizadores únicos + tag_languages_dimension: Idiomas mais populares + tag_servers_dimension: Servidores mais populares + tag_servers_measure: servidores diferentes + tag_uses_measure: utilizações totais + listable: Pode ser sugerida + not_listable: Não será sugerida + not_trendable: Não aparecerá nas tendências + not_usable: Não pode ser utilizada + peaked_on_and_decaying: Máximo em %{date}, agora a decair + title: Hashtags em destaque + trendable: Pode aparecer nas tendências + trending_rank: 'Tendência #%{rank}' + usable: Pode ser utilizada + usage_comparison: Utilizada %{today} vezes hoje, em comparação com %{yesterday} ontem + used_by_over_week: + one: Utilizada por uma pessoa na última semana + other: Utilizada por %{count} pessoas na última semana + title: Tendências warning_presets: add_new: Adicionar novo delete: Eliminar @@ -728,12 +780,19 @@ pt-PT: 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}) new_report: - body: "%{reporter} relatou %{target}" - body_remote: Alguém de %{domain} relatou %{target} - subject: Novo relatório sobre %{instance} (#%{id}) - new_trending_tag: - body: 'A hashtag #%{name} está hoje a destacar-se, mas não foi anteriormente revista. Ela não será exibida publicamente a menos que você o permita, ou limite-se a salvar o formulário tal como está, para nunca mais ouvir falar dela.' - subject: Nova hashtag para revisão em %{instance} (#%{name}) + body: "%{reporter} denunciou %{target}" + body_remote: Alguém de %{domain} denunciou %{target} + subject: Nova denúncia para %{instance} (#%{id}) + new_trending_links: + body: Os seguintes links estão hoje em destaque, mas os seus editores não foram previamente revistos. Eles não serão exibidos publicamente a menos que você os aprove. Outras notificações dos mesmos editores não serão geradas. + no_approved_links: Não existem, atualmente, links aprovados em destaque. + requirements: O link em destaque, com pontuação mais baixa, aprovado atualmente é "%{lowest_link_title}" com uma pontuação de %{lowest_link_score}. + subject: Novos links em destaque para revisão em %{instance} + new_trending_tags: + body: 'As seguintes hashtags estão hoje em tendência, mas não foram revistas anteriormente. Elas não serão exibidas publicamente, a menos que você as aprove:' + no_approved_tags: Não existem, atualmente, hashtags aprovados em tendência. + requirements: 'A hashtag em tendência, com pontuação mais baixa, aprovado atualmente é #%{lowest_tag_name} com uma pontuação de %{lowest_tag_score}.' + subject: Novas hashtags em tendência para revisão em %{instance} aliases: add_new: Criar pseudónimo created_msg: Criou com sucesso um novo pseudónimo. Pode agora iniciar a migração da conta antiga. @@ -785,6 +844,7 @@ pt-PT: invalid_reset_password_token: Token de modificação da palavra-passe é inválido ou expirou. Por favor, solicita um novo. link_to_otp: Insira um código de autenticação em duas etapas do seu telemóvel ou um código de recuperação link_to_webauth: Usa o teu dispositivo de chave de segurança + log_in_with: Iniciar sessão com login: Entrar logout: Sair migrate_account: Mudar para uma conta diferente @@ -940,34 +1000,15 @@ pt-PT: changes_saved_msg: Alterações guardadas! copy: Copiar delete: Eliminar - no_batch_actions_available: Nenhuma ação em lote disponível nesta página + none: Nenhum order_by: Ordenar por save_changes: Guardar alterações + today: hoje validation_errors: one: Algo não está correcto. Por favor vê o erro abaixo other: Algo não está correto. Por favor vê os %{count} erros abaixo html_validator: invalid_markup: 'contém marcação HTML inválida: %{error}' - identity_proofs: - active: Ativo - authorize: Sim, autorizar - authorize_connection_prompt: Autorizar esta conexão criptográfica? - errors: - failed: A conexão criptográfica falhou. Por favor, tente novamente a partir de %{provider}. - keybase: - invalid_token: Os tokens Keybase são hashes de assinaturas e devem conter 66 caracteres hexadecimais - verification_failed: O Keybase não reconhece este token como uma assinatura do utilizador do Keybase %{kb_username}. Por favor, tente novamente a partir do Keybase. - wrong_user: Não é possível criar um comprovativo para %{proving} enquanto estiver conetado como %{current}. Inicie sessão como %{proving} e tente novamente. - explanation_html: Aqui pode conetar criptograficamente as suas outras identidades, tais como um perfil Keybase. Isto permite que outras pessoas lhe enviem mensagens encriptadas e confiar em conteúdo que você lhes envia. - i_am_html: Sou %{username} em %{service}. - identity: Identidade - inactive: Inativo - publicize_checkbox: 'E publique isso:' - publicize_toot: 'Está comprovado! Eu sou %{username} em %{service}: %{url}' - remove: Remover comprovatido da conta - removed: Comprovativo removido da conta com sucesso - status: Estado da verificação - view_proof: Ver prova imports: errors: over_rows_processing_limit: contém mais de %{count} linhas @@ -1241,7 +1282,6 @@ pt-PT: edit_profile: Editar perfil export: Exportar dados featured_tags: Hashtags destacadas - identity_proofs: Provas de identidade import: Importar import_and_export: Importar e exportar migrate: Migração de conta @@ -1269,15 +1309,15 @@ pt-PT: disallowed_hashtags: one: 'continha uma hashtag proibida: %{tags}' other: 'continha as hashtags proibidas: %{tags}' + edited_at: Editado em %{date} errors: in_reply_not_found: A publicação a que está a tentar responder parece não existir. - language_detection: Detectar automaticamente a língua open_in_web: Abrir no browser over_character_limit: limite de caracter excedeu %{max} pin_errors: + direct: Publicações visíveis apenas para utilizadores mencionados não podem ser fixados limit: Já fixaste a quantidade máxima de publicações ownership: Posts de outras pessoas não podem ser fixados - private: Post não-público não pode ser fixado reblog: Não podes fixar uma partilha poll: total_people: @@ -1432,6 +1472,7 @@ pt-PT: formats: default: "%H:%M em %d de %b de %Y" month: "%b de %Y" + time: "%H:%M" two_factor_authentication: add: Adicionar disable: Desativar @@ -1459,24 +1500,31 @@ pt-PT: subject: Por favor, confirme a tentativa de acesso title: Tentativa de acesso warning: + categories: + spam: Spam + violation: O conteúdo infringe as seguintes diretrizes da comunidade explanation: - disable: Enquanto a tua conta está congelada, os seus dados permanecem intactos, mas tu não podes executar quaisquer acções até que ela seja desbloqueada. - sensitive: Os seus ficheiros de media carregados e os media ligados serão tratados como sensíveis. - silence: Enquanto a sua conta estiver limitada, só pessoas que já estiver a seguir irão ver as suas publicações nesta instância e poderá ser excluído de várias listagens públicas. No entanto, outros ainda o poderão seguir de forma manual. - suspend: A sua conta foi suspensa e todas as suas publicações e os seus ficheiros de media foram irreversivelmente removidos desta instância e das instâncias onde tinhas seguidores. - get_in_touch: Pode responder a este e-mail para entrar em contacto com a equipa de %{instance}. + delete_statuses: Algumas das suas publicações foram consideradas como a infringir uma ou mais diretrizes da comunidade e foram subsequentemente removidas pelos moderadores de %{instance}. Futuras infrações podem resultar em acções punitivas mais severas contra a sua conta. + disable: Não pode mais utilizar a sua conta, mas o seu perfil e outros dados permanecem intactos. Pode solicitar uma cópia dos seus dados, alterar as definições da conta ou apagá-la. + sensitive: A partir de agora, todos os ficheiros de media que carregue serão marcados como sensíveis e escondidos atrás de um aviso de "clicar-para-continuar". + silence: Pode ainda utilizar a sua conta mas apenas as pessoas que já o seguem poderão ver as suas mensagens neste servidor, e poderá ser excluído de várias funcionalidades de divulgação. No entanto, outros poderão ainda segui-lo manualmente. + 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: 'Especificamente, para:' + statuses: 'Publicações que foram consideradas em infracção:' subject: + delete_statuses: As suas publicações em %{acct} foram removidas disable: A tua conta %{acct} foi congelada none: Aviso para %{acct} - sensitive: As publicações de media da sua conta %{acct} foram marcadas como sensíveis + sensitive: Os seus ficheiros de media em %{acct} serão marcados como sensiveis de agora em diante silence: A tua conta %{acct} foi limitada suspend: A tua conta %{acct} foi suspensa title: + delete_statuses: Publicações removidas disable: Conta congelada none: Aviso - sensitive: A sua media foi marcada como sensível + sensitive: Media escondida silence: Conta limitada suspend: Conta suspensa welcome: diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 0e2dc57af..a3d25c9b9 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -7,12 +7,15 @@ ro: active_count_after: activi active_footnote: Utilizatori activi lunar (UAL) administered_by: 'Administrat de:' + api: API apps: Aplicații mobile apps_platforms: Folosește Mastodon de pe iOS, Android și alte platforme browse_directory: Răsfoiți directorul de profil și filtrați după interese browse_local_posts: Răsfoiți un flux live al postărilor publice de pe acest server browse_public_posts: Răsfoiește un flux live de postări publice pe Mastodon + contact: Contact contact_missing: Nesetat + contact_unavailable: Indisponibil discover_users: Descoperă utilizatori documentation: Documentație federation_hint_html: Cu un cont pe %{instance} vei putea urmări oameni pe orice server de Mastodon sau mai departe. @@ -23,6 +26,8 @@ ro: Acesta este folosit în scopuri de federație și nu ar trebui blocat decât dacă doriți să blocați întreaga instanță, în ce caz trebuie să utilizaţi un bloc de domeniu. learn_more: Află mai multe privacy_policy: Politica de confidenţialitate + rules: Regulile serverului + rules_html: 'Mai jos este un rezumat al regulilor pe care trebuie să le urmezi dacă vrei să ai un cont pe acest server de Mastodon:' see_whats_happening: Vezi ce se întâmplă server_stats: 'Statistici server:' source_code: Cod sursă @@ -35,10 +40,12 @@ ro: terms: Termeni de serviciu unavailable_content: Conținut indisponibil unavailable_content_description: + domain: Server reason: Motiv rejecting_media: 'Fişierele media de pe aceste servere nu vor fi procesate sau stocate şi nici o miniatură nu va fi afişată, necesitând click manual la fişierul original:' rejecting_media_title: Fișiere media filtrate silenced: 'Postările de pe aceste servere vor fi ascunse în cronologii și conversații publice, și nici o notificare nu va fi generată de interacțiunile utilizatorilor lor decât dacă le urmărești:' + silenced_title: Servere limitate suspended: 'Nici o informație de pe aceste servere nu va fi procesată, stocată sau schimbată, ceea ce face imposibilă orice interacțiune sau comunicare cu utilizatorii de pe aceste servere:' suspended_title: Servere suspendate unavailable_content_html: Mastodon vă permite în general să vedeți conținutul din orice alt server și să interacționați cu utilizatorii din rețea. Acestea sunt excepţiile care au fost făcute pe acest server. @@ -58,9 +65,11 @@ ro: one: Urmăritor other: De Urmăritori following: Urmăriți + instance_actor_flash: Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. Acesta este utilizat în scopuri federative şi nu trebuie suspendat. joined: Înscris %{date} last_active: ultima activitate link_verified_on: Proprietatea acestui link a fost verificată la %{date} + media: Media moved_html: "%{name} s-a mutat la %{new_profile_link}:" network_hidden: Aceste informaţii nu sunt disponibile never_active: Niciodată @@ -76,8 +85,10 @@ ro: posts_tab_heading: Postări posts_with_replies: Postări și răspunsuri roles: + admin: Admin bot: Robot group: Grup + moderator: Moderator unavailable: Profil indisponibil unfollow: Nu mai urmării admin: @@ -92,8 +103,9 @@ ro: accounts: add_email_domain_block: Domeniu de e-mail în lista neagră approve: Aprobă - approve_all: Aprobă toate + approved_msg: Cererea de înregistrare de către %{username} a fost aprobată cu succes are_you_sure: Ești sigur? + avatar: Poză de profil by_domain: Domeniu change_email: changed_msg: E-mail de cont schimbat cu succes! @@ -105,9 +117,13 @@ ro: confirm: Confirmă confirmed: Confirmat confirming: Confirmare + custom: Personalizat + delete: Ștergere datele deleted: Șters demote: Retrogradează + destroyed_msg: Datele utilizatorului %{username} sunt acum în așteptare pentru a fi șterse iminent disable: Dezactivează + disable_sign_in_token_auth: Dezactivează autentificarea prin token e-mail disable_two_factor_authentication: Dezactivează 2FA disabled: Dezactivat display_name: Nume afișat @@ -116,25 +132,31 @@ ro: email: E-mail email_status: Stare e-mail enable: Activează + enable_sign_in_token_auth: Activează autentificarea prin token e-mail enabled: Activat + enabled_msg: Am dezghețat cu succes contul %{username} followers: Urmăritori follows: Urmăriri header: Antet inbox_url: URL mesaje primite + invite_request_text: Motive pentru alăturare invited_by: Invitat de + ip: IP joined: Înscris location: all: Toate + local: Local remote: La distanţă title: Locaţie login_status: Stare conectare media_attachments: Atașamente media memorialize: Transformă în memorie + memorialized: Comemorat + memorialized_msg: S-a transforma cu succes %{username} într-un cont comemorat moderation: active: Activ all: Toate pending: În așteptare - silenced: Ignorate suspended: Suspendate title: Moderare moderation_notes: Note de moderare @@ -146,12 +168,17 @@ ro: pending: În așteptare perform_full_suspension: Suspendate promote: Promovează + protocol: Protocol + public: Public push_subscription_expires: Abonamentul PuSH expiră redownload: Reîmprospătează profilul + redownloaded_msg: S-a reîmprospătat cu succes profilul %{username} de la origine reject: Respinge - reject_all: Respinge toate + rejected_msg: S-a respins cu succes cererea de înregistrare a utilizatorului %{username} remove_avatar: Elimină avatar remove_header: Elimină antet + removed_avatar_msg: S-a îndepărtat cu succes poza de profil a utilizatorului %{username} + removed_header_msg: S-a îndepărtat cu succes coperta utilizatorului %{username} resend_confirmation: already_confirmed: Acest utilizator este deja confirmat send: Retrimite e-mail de confirmare @@ -161,11 +188,19 @@ ro: resubscribe: Resubscrie-te role: Permisiuni roles: + admin: Administrator + moderator: Moderator staff: Personal user: Utilizator search: Caută search_same_email_domain: Alţi utilizatori cu acelaşi domeniu de e-mail search_same_ip: Alţi utilizatori cu acelaşi IP + security_measures: + only_password: Doar parola + password_and_2fa: Parolă și Conectarea în 2 pași + password_and_sign_in_token: Parola și token-ul e-mail + sensitive: Sensibil + sensitized: Marcat ca sensibil shared_inbox_url: URL inbox distribuit show: created_reports: Rapoarte realizate @@ -173,19 +208,29 @@ ro: silence: Ignoră silenced: Ignorate statuses: Stări + strikes: Atenționări anterioare subscribe: Subscrie suspended: Suspendate - time_in_queue: Așteptare în coadă %{time} + suspension_irreversible: Datele acestui cont au fost șterse în mod ireversibil. Poți să renunți la suspnedarea contului pentru a-l face utilizabil, dar acesta nu va recupera nicio informație pe care a avut-o anterior. + suspension_reversible_hint_html: Contul a fost suspendat și datele vor fi șterse complet pe %{date}. Până atunci, contul poate fi restabilit fără efecte adverse. Dacă dorești să ştergi imediat toate datele contului, poți face acest lucru mai jos. title: Conturi + unblock_email: Deblochează adresa de e-mail + unblocked_email_msg: S-a deblocat cu succes adresa de email a utilizatorului %{username} unconfirmed_email: E-mail neconfirmat + undo_sensitized: Anulează ca sensibil undo_silenced: Anulează ignorarea undo_suspension: Anulați suspendarea + unsilenced_msg: S-a refăcut cu succes limita contului %{username} unsubscribe: Dezabonare + unsuspended_msg: S-a anulat cu succes suspendarea contului %{username} username: Nume + view_domain: Vezi sumarul pentru domeniul warn: Avertizează + web: Web whitelisted: Excluse la blocare action_logs: action_types: + approve_user: Aprobă Utilizatorul assigned_to_self_report: Atribuie raportul change_email_user: Schimbă e-mailul pentru utilizator confirm_user: Confirmare Utilizator @@ -195,22 +240,33 @@ ro: create_domain_allow: Creează permis domeniu create_domain_block: Crează blocare de domenii create_email_domain_block: Creați blocare de domeniu e-mail + create_ip_block: Creează regulă IP + create_unavailable_domain: Crează domeniu indisponibil demote_user: Retrogradare Utilizatorul destroy_announcement: Ștergere anunț destroy_custom_emoji: Ștergere Zâmbet Personalizat destroy_domain_allow: Ștergere Permitere Domeniu destroy_domain_block: Ștergere Blocare Domeniu + destroy_email_domain_block: Șterge Blocarea Domeniului de Email + destroy_instance: Curăță Domeniul + destroy_ip_block: Șterge regula IP destroy_status: Șterge starea + destroy_unavailable_domain: Șterge Domeniul Indisponibil disable_2fa_user: Dezactivează 2FA disable_custom_emoji: Dezactivează Emoji-urile Personalizate + disable_sign_in_token_auth_user: Dezactivează Autentificarea prin Token E-mail pentru Utilizator disable_user: Dezactivează Utilizator enable_custom_emoji: Activează Emoji Personalizat + enable_sign_in_token_auth_user: Activează Autentificarea prin Token e-mail pentru Utilizator enable_user: Activează Utilizator + memorialize_account: Comemoreză Contul promote_user: Promovează utilizator + reject_user: Respinge Utilizatorul remove_avatar_user: Elimină avatar reopen_report: Redeschide Raport reset_password_user: Resetează Parola resolve_report: Rezolvă Raport + sensitive_account: Cont Sensibil suspend_account: Suspendă Cont unassigned_report: Raport Neasignat unsuspend_account: Anulează Suspendarea Contului @@ -521,13 +577,11 @@ ro: other: 'conținea aceste hashtag-uri nepermise: %{tags}' errors: in_reply_not_found: Postarea la care încercați să răspundeți nu pare să existe. - language_detection: Detectează automat limba open_in_web: Deschide pe web over_character_limit: s-a depășit limita de caracter %{max} pin_errors: limit: Deja ai fixat numărul maxim de postări ownership: Postarea altcuiva nu poate fi fixată - private: Postarea non-publică nu poate fi fixată reblog: Un impuls nu poate fi fixat poll: total_people: @@ -658,13 +712,7 @@ ro: subject: Arhiva ta este gata pentru descărcare title: Preluare arhivă warning: - explanation: - disable: În timp ce contul tău este înghețat, datele contului tău rămân intacte, dar nu poți efectua nicio acțiune până când acesta este deblocat. - silence: În timp ce contul tău este limitat, doar persoanele care deja te urmăresc îți vor vedea postările pe acest server, și puteți fi exclus de la diverse liste publice. Cu toate acestea, este posibil ca alte persoane să vă urmărească manual. - suspend: Contul tău a fost suspendat și toate postările tale și fișierele media încărcate au fost șterse ireversibil de pe acest server, și servere unde ai avut urmăritori. - get_in_touch: Puteți răspunde la acest e-mail pentru a lua legătura cu personalul din %{instance}. review_server_policies: Revizuiește politicile serverului - statuses: 'Mai precis, pentru:' 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 a5f71ae10..bdcab4f83 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -107,7 +107,6 @@ ru: accounts: add_email_domain_block: Заблокировать e-mail домен approve: Подтвердить - approve_all: Подтвердить все approved_msg: Успешно одобрена заявка на регистрацию %{username} are_you_sure: Вы уверены? avatar: Аватар @@ -122,6 +121,7 @@ ru: confirm: Подтвердить confirmed: Подтверждено confirming: Подтверждение + custom: Другое delete: Удалить данные deleted: Удалён demote: Разжаловать @@ -161,7 +161,6 @@ ru: active: Действующие all: Все pending: В ожидании - silenced: Скрытые suspended: Заблокированные title: Модерация moderation_notes: Заметки модератора @@ -179,7 +178,6 @@ ru: redownload: Обновить аватар redownloaded_msg: Профиль %{username} успешно обновлен из оригинала reject: Отклонить - reject_all: Отклонить все rejected_msg: Успешно отклонено приложение для регистрации %{username} remove_avatar: Удалить аватар remove_header: Убрать шапку @@ -214,12 +212,14 @@ ru: silence: Скрытие silenced: Заглушен statuses: Посты + strikes: Предыдущие предупреждения subscribe: Подписаться suspended: Заморожен suspension_irreversible: Данные этой учётной записи были необратимо удалены. Вы можете разблокировать учетную запись, чтобы сделать её доступной, но это не восстановит ранее имевшиеся в ней данные. suspension_reversible_hint_html: Учётная запись была заблокирована, и данные будут полностью удалены %{date}. До этого момента её можно восстановить без каких-либо неприятных последствий. Если вы хотите немедленно удалить все данные учётной записи, вы можете сделать это ниже. - time_in_queue: Ожидание в очереди %{time} title: Учётные записи + unblock_email: Разблокировать e-mail адрес + unblocked_email_msg: E-mail адрес %{username} разблокирован unconfirmed_email: Неподтверждённый e-mail undo_sensitized: Убрать отметку «деликатного содержания» undo_silenced: Отменить скрытие @@ -234,6 +234,7 @@ ru: whitelisted: В белом списке action_logs: action_types: + approve_user: Утвердить assigned_to_self_report: Присвоение жалоб change_email_user: Изменение e-mail пользователей confirm_user: Подтверждение пользователей @@ -263,6 +264,7 @@ ru: enable_user: Разморозка пользователей memorialize_account: Присвоение пользователям статуса «мемориала» promote_user: Повышение пользователей + reject_user: Отклонить remove_avatar_user: Удаление аватаров reopen_report: Возобновление жалоб reset_password_user: Сброс пароля пользователей @@ -271,6 +273,7 @@ ru: silence_account: Скрытие пользователей suspend_account: Блокировка пользователей unassigned_report: Снятие жалоб + unblock_email_account: Разблокировать e-mail адрес unsensitive_account: Снятие с пользователей отметки «деликатного содержания» unsilence_account: Отмена скрытия пользователей unsuspend_account: Разблокировка пользователей @@ -279,6 +282,7 @@ ru: update_domain_block: Изменение блокировки домена update_status: Изменение постов actions: + approve_user_html: "%{name} утвердил(а) регистрацию %{target}" assigned_to_self_report_html: "%{name} назначил(а) себя для решения жалобы %{target}" change_email_user_html: "%{name} сменил(а) e-mail пользователя %{target}" confirm_user_html: "%{name} подтвердил(а) e-mail адрес пользователя %{target}" @@ -296,6 +300,7 @@ ru: destroy_domain_allow_html: "%{name} запретил(а) федерацию с доменом %{target}" destroy_domain_block_html: "%{name} снял(а) блокировку с домена %{target}" destroy_email_domain_block_html: "%{name} снял(а) блокировку с e-mail домена %{target}" + destroy_instance_html: "%{name} очистил(а) данные для домена %{target}" destroy_ip_block_html: "%{name} удалил(а) правило для IP %{target}" destroy_status_html: "%{name} удалил(а) пост пользователя %{target}" destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}" @@ -308,6 +313,7 @@ ru: enable_user_html: "%{name} разморозил(а) пользователя %{target}" memorialize_account_html: "%{name} перевел(а) учётную запись пользователя %{target} в статус памятника" promote_user_html: "%{name} повысил(а) пользователя %{target}" + reject_user_html: "%{name} отклонил(а) регистрацию %{target}" remove_avatar_user_html: "%{name} убрал(а) аватарку пользователя %{target}" reopen_report_html: "%{name} повторно открыл(а) жалобу %{target}" reset_password_user_html: "%{name} сбросил(а) пароль пользователя %{target}" @@ -316,6 +322,7 @@ ru: silence_account_html: "%{name} наложил(а) ограничения на видимость постов пользователя %{target}" suspend_account_html: "%{name} заблокировал(а) учётную запись %{target}" unassigned_report_html: "%{name} снял(а) назначение жалобы %{target}" + unblock_email_account_html: "%{name} разблокировал(а) e-mail адрес %{target}" unsensitive_account_html: "%{name} снял(а) отметку файлов %{target} как «деликатного характера»" unsilence_account_html: "%{name} снял(а) ограничения видимости постов пользователя %{target}" unsuspend_account_html: "%{name} снял(а) блокировку с пользователя %{target}" @@ -486,6 +493,7 @@ ru: back_to_limited: Все ограниченные узлы back_to_warning: Все узлы требующие внимания by_domain: Домен + confirm_purge: Вы уверены, что хотите навсегда удалить данные с этого домена? delivery: all: Все clear: Очистить ошибки доставки @@ -503,6 +511,7 @@ ru: delivery_available: Доставка возможна delivery_error_days: Дней ошибок доставки delivery_error_hint: Если доставка доставка не удастся в течение %{count} дней, он будет автоматически отмечен недоступным для доставки. + destroyed_msg: Данные для домена %{domain} поставлены в очередь на удаление. empty: Домены не найдены. known_accounts: few: "%{count} известные учётные записи" @@ -515,6 +524,7 @@ ru: title: Модерация private_comment: Приватный комментарий public_comment: Публичный комментарий + purge: Удалить данные title: Федерация total_blocked_by_us: Заблокировано нами total_followed_by_them: Их подписчиков @@ -544,8 +554,6 @@ ru: title: Создать новое IP правило no_ip_block_selected: Не было изменено ни одного IP правила, так как не было выбрано ни одного title: IP правила - pending_accounts: - title: Ожидающие учетные записи (%{count}) relationships: title: Связи %{acct} relays: @@ -567,6 +575,7 @@ ru: report_notes: created_msg: Примечание жалобы создано! destroyed_msg: Примечание жалобы удалено! + today_at: Сегодня в %{time} reports: account: notes: @@ -574,29 +583,37 @@ ru: many: "%{count} заметок" one: "%{count} заметка" other: "%{count} заметок" - reports: - few: "%{count} жалобы" - many: "%{count} жалоб" - one: "%{count} жалоба" - other: "%{count} жалоб" + action_log: Журнал событий action_taken_by: 'Действие предпринято:' + actions: + silence_description_html: Профиль будет просматриваем только пользователями, которые уже подписаны на него, либо открыли его вручную. Это действие можно отменить в любой момент. + suspend_description_html: Профиль и всё опубликованное в нём содержимое станут недоступны, пока в конечном итоге учётная запись не будет удалена. Пользователи не смогут взаимодействовать с этой учётной записью. Это действие можно отменить в течение 30 дней. + actions_description_html: 'Если удаления вышеуказанного содержимого недостаточно:' + add_to_report: Прикрепить ещё are_you_sure: Вы уверены? assign_to_self: Назначить себе assigned: Назначенный модератор by_target_domain: Домен объекта жалобы + category: Категория + category_description_html: Причина, по которой были доложены этот пользователь или содержимое, будет указана при коммуникации с фигурирующим в жалобе пользователем comment: none: Нет + comment_description_html: 'В дополнение, %{name} добавил(а) следующий комментарий:' created_at: Создана + delete_and_resolve: Отметить решённой и удалить forwarded: Переслано forwarded_to: Переслано на %{domain} mark_as_resolved: Отметить как решённую mark_as_unresolved: Отметить как нерешённую + no_one_assigned: Никто notes: create: Добавить заметку create_and_resolve: Разрешить с примечанием create_and_unresolve: Переоткрыть с примечанием delete: Удалить placeholder: Опишите, какие действия были приняты, или любые другие подробности… + title: Примечания + notes_description_html: Просмотрите или оставьте примечания для остальных модераторов и себя в будущем reopen: Переоткрыть жалобу report: Жалоба №%{id} reported_account: Учётная запись нарушителя @@ -604,11 +621,14 @@ ru: resolved: Решённые resolved_msg: Жалоба обработана, спасибо! status: Статус + statuses: Содержимое относящееся к жалобе + statuses_description_html: Нарушающее правила содержимое будет процитировано при коммуникации с фигурирующим в жалобе аккаунтом target_origin: Происхождение объекта жалобы title: Жалобы unassign: Снять назначение unresolved: Нерешённые updated_at: Обновлена + view_profile: Открыть профиль rules: add_new: Добавить правило delete: Удалить @@ -710,15 +730,13 @@ ru: destroyed_msg: Файл успешно удалён. statuses: back_to_account: Назад к учётной записи + back_to_report: Вернуться к жалобе batch: - delete: Удалить - nsfw_off: Снять отметку «деликатного характера» - nsfw_on: Отметить как «деликатного характера» + remove_from_report: Убрать из жалобы + report: Пожаловаться deleted: Удалено - failed_to_execute: Не удалось выполнить media: title: Файлы мультимедиа - no_media: Без файлов no_status_selected: Ничего не изменилось, так как ни один пост не был выделен title: Посты пользователя with_media: С файлами @@ -731,21 +749,41 @@ ru: sidekiq_process_check: message_html: Ни один Sidekiq не запущен для %{value} очереди(-ей). Пожалуйста, просмотрите настройки Sidekiq tags: - accounts_today: Уникальных использований за сегодня - accounts_week: Уникальных использований за эту неделю - breakdown: Разбивка сегодняшнего использования по источникам - last_active: Последняя активность - most_popular: Самые популярные - most_recent: Последние - name: Хэштег review: Состояние проверки - reviewed: Проверенные - title: Хэштеги - trending_right_now: Популярно сейчас - unique_uses_today: "%{count} чел. пишут об этом" - unreviewed: Непроверенные updated_msg: Настройки хэштега обновлены title: Администрирование + trends: + allow: Разрешить + approved: Принятые + disallow: Отклонить + links: + allow: Разрешить ссылку + allow_provider: Разрешить издание + disallow_provider: Отклонить издание + shared_by_over_week: + few: "%{count} человека поделились за последнюю неделю" + many: "%{count} человек поделились за последнюю неделю" + one: "%{count} человек поделился за последнюю неделю" + other: "%{count} человека поделилось за последнюю неделю" + title: Актуальные ссылки + pending_review: Ожидает рассмотрения + preview_card_providers: + allowed: Ссылки этого издания могут отображаться в «актуальном» + rejected: Ссылки этого издания не будут отображаться в «актуальном» + title: Издатели + rejected: Отклонённые + tags: + dashboard: + tag_accounts_measure: уникальных использований + tag_uses_measure: всего использований + listable: Может предлагаться + not_listable: Не будет предлагаться + not_trendable: Не будет появляться в списке «актуального» + not_usable: Не может использоваться + peaked_on_and_decaying: Последний пик — %{date}, сейчас идёт на спад + title: Актуальные хэштеги + trendable: Может появляться в списке «актуального» + usable: Может использоваться warning_presets: add_new: Добавить delete: Удалить @@ -760,9 +798,8 @@ ru: body: "%{reporter} подал(а) жалобу на %{target}" body_remote: Кто-то с узла %{domain} пожаловался на %{target} subject: Новая жалоба, узел %{instance} (№%{id}) - new_trending_tag: - body: 'Хэштег #%{name} актуален сегодня, но не был проверен. Он не будет отображаться публично, если вы не одобрите его, или просто сохраните эту форму как есть, чтоб никогда больше о нём не слышать.' - subject: Новый хэштег для проверки на %{instance} (#%{name}) + new_trending_links: + body: Следующие ссылки на неподтверждённых издателей сегодня актуальны. Они не будут отображаться пока вы их не подтвердите. Дальнейшие уведомления для тех же издателей не будут созданы. aliases: add_new: Создать псевдоним created_msg: Новый псевдоним установлен. Теперь мы можете начать миграцию со старой учётной записи. @@ -814,6 +851,7 @@ ru: invalid_reset_password_token: Токен сброса пароля неверен или устарел. Пожалуйста, запросите новый. link_to_otp: Введите двухфакторный код с телефона или код восстановления link_to_webauth: Используйте устройство с ключом безопасности + log_in_with: Войти используя login: Войти logout: Выйти migrate_account: Перенос учётной записи @@ -969,9 +1007,9 @@ ru: changes_saved_msg: Изменения успешно сохранены! copy: Копировать delete: Удалить - no_batch_actions_available: На этой странице нет запланированных действий order_by: Сортировка save_changes: Сохранить изменения + today: сегодня validation_errors: few: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже many: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже @@ -979,26 +1017,6 @@ ru: other: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже html_validator: invalid_markup: 'невалидная разметка HTML: %{error}' - identity_proofs: - active: Активно - authorize: Да, авторизовать - authorize_connection_prompt: Авторизовать эту криптографическую связь? - errors: - failed: Криптографическое соединение не установлено. Попробуйте ещё раз на %{provider}. - keybase: - invalid_token: Токены Keybase — это хэши от подписей и должны быть по длине в 66 hex-символов - verification_failed: Keybase не распознаёт этот токен как подпись пользователя %{kb_username}. Пожалуйста, повторите на Keybase. - wrong_user: Невозможно подтвердить пользователя %{proving}, будучи залогиненным как %{current}. Выполните вход как %{proving} и попробуйте ещё раз. - explanation_html: На этой странице отображаются криптографически подтверждённые идентификаторы — например, привязанный профиль Keybase. Это позволяет людям отправлять вам зашифрованные сообщения, а также доверять вашим постам. - i_am_html: Я %{username} на %{service}. - identity: Идентификатор - inactive: Неактивно - publicize_checkbox: 'И опубликуйте текст:' - publicize_toot: 'Подтверждено! Я %{username} на %{service}: %{url}' - remove: Удалить идентификатор - removed: Идентификатор учётной записи удалён - status: Статус - view_proof: Посмотреть подтверждение imports: errors: over_rows_processing_limit: содержит более %{count} строк @@ -1031,10 +1049,10 @@ ru: generate: Сгенерировать invited_by: 'Вас пригласил(а):' max_uses: - few: "%{count} исп." - many: "%{count} исп." - one: 1 исп - other: "%{count} исп" + few: "%{count} раза" + many: "%{count} раз" + one: "%{count} раз" + other: "%{count} раза" max_uses_prompt: Без ограничения prompt: Создавайте и делитесь ссылками с другими, чтобы предоставить им доступом к этому узлу. table: @@ -1220,6 +1238,9 @@ ru: reply: proceed: Ответить prompt: 'Вы собираетесь ответить на этот пост:' + reports: + errors: + invalid_rules: не ссылается на действительные правила scheduled_statuses: over_daily_limit: Вы превысили лимит в %{limit} запланированных постов на указанный день over_total_limit: Вы превысили лимит на %{limit} запланированных постов @@ -1278,7 +1299,6 @@ ru: edit_profile: Изменить профиль export: Экспорт данных featured_tags: Особенные хэштеги - identity_proofs: Идентификация import: Импорт import_and_export: Импорт и экспорт migrate: Миграция учётной записи @@ -1309,20 +1329,21 @@ ru: other: "%{count} видео" boosted_from_html: Продвижение польз. %{acct_link} content_warning: 'Спойлер: %{warning}' + default_language: Тот же, что язык интерфейса disallowed_hashtags: few: 'содержались запрещённые хэштеги: %{tags}' many: 'содержались запрещённые хэштеги: %{tags}' one: 'содержался запрещённый хэштег: %{tags}' other: 'содержались запрещённые хэштеги: %{tags}' + edited_at: 'Последнее изменение: %{date}' errors: in_reply_not_found: Пост, на который вы пытаетесь ответить, не существует или удалён. - language_detection: Определять язык автоматически open_in_web: Открыть в веб-версии over_character_limit: превышен лимит символов (%{max}) pin_errors: + direct: Сообщения, видимые только упомянутым пользователям, не могут быть закреплены limit: Вы закрепили максимально возможное число постов ownership: Нельзя закрепить чужой пост - private: Нельзя закрепить непубличный пост reblog: Нельзя закрепить продвинутый пост poll: total_people: @@ -1381,9 +1402,9 @@ ru: '7889238': 3 месяца min_age_label: Возрастной порог min_favs: Порог отметок «избранного» - min_favs_hint: Не удаляет ваши посты, которые получили отметок «избранного» больше, чем указано выше. Оставьте поле пустым, чтобы удалять посты независимо от количества отметок. + min_favs_hint: Не удаляет ваши посты, у которых количество отметок «избранного» достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества отметок. min_reblogs: Порог продвижений - min_reblogs_hint: Не удаляет ваши посты, количество продвижений которых больше, чем указано выше. Оставьте поле пустым, чтобы удалять посты независимо от количества продвижений. + min_reblogs_hint: Не удаляет ваши посты, количество продвижений которых достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества продвижений. stream_entries: pinned: Закреплённый пост reblogged: продвинул(а) @@ -1477,6 +1498,7 @@ ru: formats: default: "%d %b %Y, %H:%M" month: "%m.%Y" + time: "%H:%M" two_factor_authentication: add: Добавить disable: Отключить @@ -1504,24 +1526,31 @@ ru: subject: Пожалуйста, подтвердите попытку входа title: Попытка входа warning: + categories: + spam: Спам + violation: Содержимое нарушает следующие правила сообщества explanation: - disable: Пока ваша учётная запись заморожена, ваши данные остаются нетронутыми, но вы не можете производить никаких действий до разблокировки. - sensitive: Все загружаемые и прикреплённые вами медиафайлы будут расцениваться как «деликатного характера». - silence: Пока действуют данные ограничения, публикуемые вами посты будут видеть исключительно люди, которые на вас уже подписаны на этом узле, вы также можете быть исключены из различных публичных лент. Несмотря на это, остальные пользователи по-прежнему могут подписаться на вас, чтобы читать новые посты. - suspend: Ваша учётная запись заблокирована и все ваши посты и загруженные медиафайлы безвозвратно удалены с этого сервера и других серверов, где у вас были подписчики. - get_in_touch: Вы можете ответить на это письмо, чтобы связаться с сотрудниками %{instance}. + delete_statuses: Некоторые из ваших постов нарушают одно или несколько правил сообщества, и, как следствие, были удалены модераторами %{instance}. Повторные нарушения могут привести к более суровым санкциям относительно вашей учётной записи. + disable: Вы не можете использовать свою учётную запись, однако ваш профиль и данные остаются нетронутыми. Вы можете запросить выгрузку своих данных, менять настройки, либо полностью удалить свою учётную запись. + sensitive: С этого момента, все прикрепляемые вами файлы будут отмечаться как «деликатного характера» и скрыты за предупреждением, требующими клика. + silence: Вы по-прежнему можете использовать свою учётную запись, но только пользователи, которые подписаны на вас, смогут видеть ваши публикации на данном узле. Вы также будете исключены из различных поисковых функций, однако пользователи всё ещё могут вручную подписаться на вас. + suspend: Вы больше не сможете использовать эту учётную запись и ваш профиль более недоступен к просмотру. Вы по-прежнему можете войти в учётную запись, чтобы запросить выгрузку своих данных, до тех пор, пока они не будут удалены спустя 30 дней (за исключением информации, которая не позволит вам обойти эту блокировку). + get_in_touch: Если вы считаете, что это ошибка, вы можете ответить на это сообщение или связаться с руководством %{instance}. + reason: 'Причина:' review_server_policies: Посмотреть правила сервера - statuses: 'В частности, для:' + statuses: 'Следующие публикации были отмечены как нарушающие правила:' subject: + delete_statuses: Опубликованные вами с учётной записи %{acct} посты были удалены disable: Ваша учётная запись %{acct} заморожена none: "%{acct} вынесено предупреждение" - sensitive: Ваша учётная запись %{acct} была отмечена как «деликатного содержания» + sensitive: Публикуемое с учётной записи %{acct} медиа-содержимое с этого момента будет помечаться как «деликатного характера» silence: На учётную запись %{acct} наложены ограничения suspend: Ваша учётная запись %{acct} была заблокирована title: + delete_statuses: Ваши посты удалены disable: Учётная запись заморожена none: Предупреждение - sensitive: Ваши медиафайлы отмечены как «деликатного характера» + sensitive: Ваши медиафайлы скрыты silence: На учётную запись наложены ограничения suspend: Учётная запись заблокирована welcome: diff --git a/config/locales/sc.yml b/config/locales/sc.yml index eeea2793d..221943217 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -21,7 +21,9 @@ sc: federation_hint_html: Cun unu contu in %{instance} as a pòdere sighire persones in cale si siat serbidore de Mastodon o de su fediversu. get_apps: Proa un'aplicatzione mòbile hosted_on: Mastodon allogiadu in %{domain} - instance_actor_flash: Custu contu est un'atore virtuale impreadu pro rapresentare su pròpiu serbidore, no est un'utente individuale. Benit impreadu pro punnas de federatzione e no ddu dias dèpere blocare si non boles blocare su domìniu intreu, e in cussu casu dias dèpere impreare unu blocu de domìniu. + instance_actor_flash: 'Custu contu est un''atore virtuale impreadu pro rapresentare su pròpiu serbidore, no est un''utente individuale. Benit impreadu pro punnas de federatzione e no ddu dias dèpere blocare si non boles blocare su domìniu intreu, e in cussu casu dias dèpere impreare unu blocu de domìniu. + + ' learn_more: Àteras informatziones privacy_policy: Polìtica de riservadesa rules: Règulas de su serbidore @@ -97,7 +99,6 @@ sc: accounts: add_email_domain_block: Bloca domìniu de posta eletrònica approve: Aprova - approve_all: Aprova totus approved_msg: Sa dimanda de registru de %{username} est istada aprovada are_you_sure: Seguru? avatar: Immàgine de profilu @@ -149,7 +150,6 @@ sc: active: Ativu all: Totus pending: De imbiare - silenced: A sa muda suspended: Suspèndidu title: Moderatzione moderation_notes: Notas de moderatzione @@ -167,7 +167,6 @@ sc: redownload: Atualiza su profilu redownloaded_msg: Su profilu de %{username} est istadu atualizadu dae s'orìgine reject: Refuda - reject_all: Refuda totu rejected_msg: Sa dimanda de registru de %{username} est istada refudada remove_avatar: Boga immàgine de profilu remove_header: Boga s'intestatzione @@ -202,7 +201,6 @@ sc: suspended: Suspèndidu suspension_irreversible: Is datos de custu contu sunt istados cantzellados in manera irreversìbile. Podes bogare sa suspensione a su contu pro chi si potzat impreare, ma no at a recuperare datu perunu de is chi teniat in antis. suspension_reversible_hint_html: Su contu est istadu suspèndidu, e is datos ant a èssere cantzelladu de su totu su %{date}. Finas a tando, su contu si podet ripristinare sena efetu malu perunu. Si boles cantzellare totu is datos de su contu immediatamente ddu podes fàghere inoghe in bassu. - time_in_queue: Isetende in coa %{time} title: Contos unconfirmed_email: Posta eletrònica sena cunfirmare undo_sensitized: Boga sa marcadura comente "sensìbile" @@ -467,8 +465,6 @@ sc: title: Crea una règula IP noa no_ip_block_selected: Peruna règula IP est istada mudada dae chi non nd'as seletzionadu title: Règulas IP - pending_accounts: - title: Contos in ispera (%{count}) relationships: title: relatziones de %{acct} relays: @@ -495,9 +491,6 @@ sc: notes: one: "%{count} nota" other: "%{count} notas" - reports: - one: "%{count} informe" - other: "%{count} informes" action_taken_by: Mesuras adotadas dae are_you_sure: Seguru? assign_to_self: Assigna a mie @@ -628,15 +621,9 @@ sc: destroyed_msg: Càrriga de su situ cantzellada. statuses: back_to_account: Torra a sa pàgina de su contu - batch: - delete: Cantzella - nsfw_off: Signala comente a non sensìbile - nsfw_on: Signala comente a sensìbile deleted: Cantzelladu - failed_to_execute: Faddina in s'esecutzione media: title: Elementos multimediales - no_media: Perunu elementu multimediale no_status_selected: Perunu istadu est istadu mudadu dae chi non nd'as seletzionadu title: Istados de su contu with_media: Cun elementos multimediales @@ -649,19 +636,7 @@ sc: sidekiq_process_check: message_html: Perunu protzessu Sidekiq est in esecutzione pro sa coa(s) %{value}. Revisiona is cunfiguratziones de Sidekiq tags: - accounts_today: Impreos ùnicos atuales - accounts_week: Impreos ùnicos de custa chida - breakdown: Detàllios de s'impreu atuale pro orìgine - last_active: Ùrtima atividade - most_popular: Prus populares - most_recent: Prus reghentes - name: Eticheta review: Revisiona s'istadu - reviewed: Revisionadas - title: Etichetas - trending_right_now: In tendèntzia immoe - unique_uses_today: "%{count} publicatziones de oe" - unreviewed: Sena revisionare updated_msg: Cunfiguratzione de etichetas atualizada title: Amministratzione warning_presets: @@ -678,9 +653,6 @@ sc: body: "%{reporter} at sinnaladu %{target}" body_remote: Una persone de su domìniu %{domain} at sinnaladu %{target} subject: Informe nou pro %{instance} (#%{id}) - new_trending_tag: - body: 'S''eticheta #%{name} est in tendèntzia oe, ma no est istada revisionada in passadu. No at a èssere ammustrada in pùblicu francu chi ddu permitas; si sarvas su formulàriu sena ddu modificare, no ddu as a bìdere mai prus.' - subject: Eticheta noa de revisionare in %{instance} (#%{name}) aliases: add_new: Crea unu nomìngiu created_msg: Nomìngiu creadu. Immoe podes cumintzare a tramudare dae su contu betzu. @@ -887,7 +859,6 @@ sc: changes_saved_msg: Modìficas sarvadas. copy: Còpia delete: Cantzella - no_batch_actions_available: Peruna atzione in blocu a disponimentu dae custa pàgina order_by: Òrdina pro save_changes: Sarva is modìficas validation_errors: @@ -895,26 +866,6 @@ sc: other: Calicuna cosa ancora no est andende. Bide is %{count} faddinas in bàsciu html_validator: invalid_markup: 'cuntenet etichetas HTML non vàlidas: %{error}' - identity_proofs: - active: Ativu - authorize: Eja, autoriza - authorize_connection_prompt: Boles autorizare custa connessione critografada? - errors: - failed: Faddina in sa connessione critografada. Torra·bi a proare dae %{provider}. - keybase: - invalid_token: Is còdighes de autorizatzione de Keybase sunt hash de firmas e depent tènnere 66 caràteres esadetzimales - verification_failed: Keybase non reconnoschet custu còdighe de autorizatzione che a firma de s'utente de Keybase %{kb_username}. Torra·bi a proare dae Keybase. - wrong_user: Impossìbile creare una proa pro %{proving} cando as fatu s'atzessu che a %{current}. Intra che a %{proving} e torra·bi a proare. - explanation_html: Inoghe podes collegare critograficamente is àteras identidades tuas dae àteras prataformas, che a Keybase. Custu permitit a àteras persones de t'imbiare messàgios tzifrados in cussas prataformas e de tènnere sa seguresa chi is cuntenutos chi ddis ses imbiende benint dae tene. - i_am_html: So %{username} in %{service}. - identity: Identidade - inactive: Inativu - publicize_checkbox: 'E imbia custu tut:' - publicize_toot: 'Verificadu! So %{username} in %{service}: %{url}' - remove: Boga sa proa dae su contu - removed: Proa bogada dae su contu - status: Istadu de verìfica - view_proof: Ammustra sa proa imports: errors: over_rows_processing_limit: cuntenet prus de %{count} filas @@ -1176,7 +1127,6 @@ sc: edit_profile: Modìfica profilu export: Esportatzione de datos featured_tags: Etichetas in evidèntzia - identity_proofs: Proas de identidade import: Importatzione import_and_export: Importatzione e esportatzione migrate: Tràmuda de contu @@ -1205,13 +1155,11 @@ sc: other: 'cuntenet is etichetas non permìtidas: %{tags}' errors: in_reply_not_found: Ses chirchende de rispòndere a unu tut chi no esistit prus. - language_detection: Rileva s'idioma in automàticu open_in_web: Aberi in sa web over_character_limit: lìmite de caràteres de %{max} superadu pin_errors: limit: As giai apicadu su nùmeru màssimu de tuts ownership: Is tuts de àtere non podent èssere apicados - private: Is tuts non pùblicos non podent èssere apicados reblog: Is cumpartziduras non podent èssere apicadas poll: total_people: @@ -1368,24 +1316,15 @@ sc: subject: Cunfirma su tentativu de identificatzione title: Tentativu de identificatzione warning: - explanation: - disable: Non podes prus intrare in su contu tuo o dd'impreare in cale si siat àtera manera, ma su profilu e is àteros datos tuos abarrant intatos. - sensitive: Is elementos e documentos multimediales carrigados e ligados tuos ant a èssere tratados che a sensìbiles. - silence: Podes ancora impreare su contu tuo, ma isceti is persones chi ti sunt giai sighende ant a bìdere is tuts tuos in custu serbidore, e dias pòdere èssere esclùdidu dae unas cantas listas pùblicas. Nointames custu, is àteros ti diant pòdere galu sighire in manera manuale. - suspend: Non podes prus impreare su contu tuo, e su profilu e àteros datos non sunt prus atzessìbiles. Bi podes ancora intrare pro pedire una còpia de seguresa de is datos tuos finas a cando no ant a èssere cantzellados de su totu, ma nd'amus a mantènnere unos cantos pro non ti permìtere de evàdere sa suspensione. - get_in_touch: Podes rispòndere a custu indiritzu de posta eletrònica pro cuntatare cun su personale de %{instance}. review_server_policies: Revisiona sas polìticas de su serbidore - statuses: 'In manera cuncreta, pro:' subject: disable: Su contu tuo %{acct} est istadu cungeladu none: Avisu pro %{acct} - sensitive: Is elementos multimediales de publicatzione de su contu tuo %{acct} sunt istados marcados comente sensìbiles silence: Su contu tuo %{acct} est istadu limitadu suspend: Su contu tuo %{acct} est istadu suspèndidu title: disable: Contu congeladu none: Atentzione - sensitive: S'elementu multimediale tuo est istadu marcadu comente sensìbile silence: Contu limitadu suspend: Contu suspèndidu welcome: diff --git a/config/locales/si.yml b/config/locales/si.yml index 6fa12abec..3ebd25341 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -42,7 +42,6 @@ si: accounts: add_email_domain_block: වි-තැපැල් වසම අවහිර කරන්න approve: අනුමත කරන්න - approve_all: සියල්ල අනුමත කරන්න are_you_sure: ඔබට විශ්වාසද? by_domain: වසම change_email: @@ -74,7 +73,6 @@ si: moderation: active: සක්රීයයි all: සියල්ල - silenced: සීමාසහිත suspended: අත්හිටුවන ලදි most_recent_ip: වඩා මෑත අ.ජා.කෙ.(IP) perform_full_suspension: අත්හිටුවන්න @@ -228,7 +226,6 @@ si: back_to_account: ගිණුම් පිටුවට ආපසු යන්න media: title: මාධ්යය - no_media: මාධ්ය නැත with_media: මාධ්ය සමඟ title: පරිපාලනය appearance: @@ -298,9 +295,6 @@ si: all: සියල්ල copy: පිටපත් save_changes: වෙනස්කම් සුරකින්න - identity_proofs: - active: ක්රියාත්මකයි - identity: අනන්යතාව imports: types: bookmarks: පොත් යොමු diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 2b960fb31..4f6626bfb 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -21,6 +21,8 @@ ast: data: El ficheru CSV esportáu dende otra instancia de Mastodon invite_request: text: Esto va ayudanos a revisar la to aplicación + ip_block: + comment: Opcional. Acuérdate por qué amestesti esta regla. sessions: otp: 'Introduz el códigu de dos pasos xeneráu pola aplicación autenticadora o usa unu de los códigos de recuperación:' labels: @@ -51,7 +53,6 @@ ast: header: Testera irreversible: Escartar en cuentes d'anubrir locale: Llingua de la interfaz - locked: Bloquiar la cuenta max_uses: Númberu máximu d'usos new_password: Contraseña nueva note: Biografía @@ -72,6 +73,7 @@ ast: setting_unfollow_modal: Amosar el diálogu de confirmación enantes de dexar de siguir a daquién setting_use_pending_items: Mou lentu severity: Severidá + sign_in_token_attempt: Códigu de seguranza type: Triba de la importación username: Nome d'usuariu username_or_email: Nome d'usuariu o corréu @@ -90,9 +92,11 @@ 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 required: + mark: "*" text: ríquese 'yes': Sí diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index e82ac2f73..f0cb47995 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -42,21 +42,21 @@ ca: header: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px inbox_url: Copia l'URL des de la pàgina principal del relay que vols utilitzar irreversible: Els tuts filtrats desapareixeran de manera irreversible, fins i tot si el filtre es retira més tard - locale: El llenguatge de l’interfície d’usuari, els correus i les notificacions push + locale: L'idioma de la interfície d’usuari, els correus i les notificacions push locked: Requereix que aprovis manualment els seguidors password: Utilitza com a mínim 8 caràcters phrase: Es combinarà independentment del format en el text o l'avís de contingut del tut scopes: A quines API es permetrà a l'aplicació accedir. Si selecciones un àmbit d'alt nivell, no cal que seleccionis un d'individual. - setting_aggregate_reblogs: No mostra els nous impulsos dels tuts que ja s'han impulsat recentment (només afecta als impulsos nous rebuts) - setting_default_sensitive: Els mèdia sensibles estan ocults per defecte i es poden revelar amb un clic - setting_display_media_default: Amaga els multimèdia marcats com a sensibles + setting_aggregate_reblogs: No mostrar els nous impulsos de les publicacions que ja s'han impulsat recentment (només afecta els impulsos nous rebuts) + setting_default_sensitive: El contingut gràfic sensible està ocult per defecte i es pot revelar amb un clic + setting_display_media_default: Ocultar el contigut gràfic marcat com a sensible setting_display_media_hide_all: Oculta sempre tot el contingut multimèdia - setting_display_media_show_all: Mostra sempre els elements multimèdia marcats com a sensibles + setting_display_media_show_all: Mostrar sempre el contingut gràfic marcat com a sensible setting_hide_network: Qui tu segueixes i els que et segueixen a tu no es mostraran en el teu perfil setting_noindex: Afecta el teu perfil públic i les pàgines d'estat - setting_show_application: L'aplicació que fas servir per a publicar es mostrarà a la vista detallada dels teus tuts + setting_show_application: L'aplicació que fas servir per a publicar es mostrarà a la vista detallada de les publicacions setting_use_blurhash: Els degradats es basen en els colors de les imatges ocultes, però enfosqueixen els detalls - setting_use_pending_items: Amaga les actualitzacions de la línia de temps després d'un clic en comptes de desplaçar-se automàticament + setting_use_pending_items: Amagar les actualitzacions de la línia de temps després d'un clic en comptes de desplaçar-se automàticament username: El teu nom d'usuari serà únic a %{domain} whole_word: Quan la paraula clau o la frase sigui només alfanumèrica, s'aplicarà si coincideix amb la paraula sencera domain_allow: @@ -65,7 +65,7 @@ ca: domain: Això pot ser el nom del domini que es veu en l’adreça de correu electrònic, el registre MX al que resol el domini o l’IP del servidor al que resol el registre MX. Es comprovaran amb el registre d’usuari i es rebutjarà la inscripció. with_dns_records: Es procurarà resoldre els registres DNS del domini determinat i els resultats també es llistaran a la llista negra featured_tag: - name: 'És possible que vulguis utilitzar un d''aquests:' + name: 'És possible que vulguis utilitzar una d''aquestes:' form_challenge: current_password: Estàs entrant en una àrea segura imports: @@ -121,6 +121,7 @@ ca: text: Anunci defaults: autofollow: Convida a seguir el teu compte + avatar: Avatar bot: Aquest compte és un bot chosen_languages: Filtrar llengües confirm_new_password: Confirma la contrasenya nova @@ -128,7 +129,7 @@ ca: context: Filtre els contextos current_password: Contrasenya actual data: Informació - discoverable: Mostra aquest compte en el directori + discoverable: Mostra aquest compte en el directori de perfils display_name: Nom visible email: Adreça de correu electrònic expires_in: Expira després @@ -137,8 +138,8 @@ ca: honeypot: "%{label} (no omplir)" inbox_url: URL de la safata d'entrada del relay irreversible: Cau en lloc d'ocultar - locale: Llengua de la interfície - locked: Fes aquest compte privat + locale: Idioma de la interfície + locked: Torna aquest compte privat max_uses: Nombre màxim d'usos new_password: Contrasenya nova note: Biografia @@ -146,29 +147,29 @@ ca: password: Contrasenya phrase: Paraula clau o frase setting_advanced_layout: Activar l’interfície web avançada - setting_aggregate_reblogs: Agrupa impulsos en les línies de temps - setting_auto_play_gif: Reproducció automàtica de GIFs animats - setting_boost_modal: Mostra la finestra de confirmació abans d'impulsar + setting_aggregate_reblogs: Agrupar impulsos en les línies de temps + setting_auto_play_gif: Reproduir automàticament els GIFs animats + setting_boost_modal: Mostrar la finestra de confirmació abans d'impulsar setting_crop_images: Retalla les imatges en tuts no ampliats a 16x9 - setting_default_language: Llengua de les publicacions + setting_default_language: Idioma de les publicacions setting_default_privacy: Privacitat de les publicacions - setting_default_sensitive: Marca sempre els elements multimèdia com a sensibles - setting_delete_modal: Mostra la finestra de confirmació abans d'esborrar un tut + setting_default_sensitive: Marcar sempre el contingut gràfic com a sensible + setting_delete_modal: Mostrar la finestra de confirmació abans d'esborrar un tut setting_disable_swiping: Desactivar les animacions setting_display_media: Visualització multimèdia setting_display_media_default: Per defecte setting_display_media_hide_all: Amaga-ho tot setting_display_media_show_all: Mostra-ho tot - setting_expand_spoilers: Sempre amplia els tuts marcats amb advertències de contingut - setting_hide_network: Amaga la teva xarxa - setting_noindex: Desactivació de la indexació del motor de cerca - setting_reduce_motion: Redueix el moviment en animacions - setting_show_application: Revela l'aplicació utilitzada per enviar tuts - setting_system_font_ui: Utilitza el tipus de lletra predeterminat del sistema + setting_expand_spoilers: Sempre ampliar els tuts marcats amb advertències de contingut + setting_hide_network: Amagar la teva xarxa + setting_noindex: Desactivar la indexació dels motors de cerca + setting_reduce_motion: Reduir el moviment de les animacions + setting_show_application: Revelar l'aplicació utilitzada per fer les publicacions + setting_system_font_ui: Utilitzar el tipus de lletra predeterminat del sistema setting_theme: Tema del lloc setting_trends: Mostra les tendències d'avui - setting_unfollow_modal: Mostra el diàleg de confirmació abans de deixar de seguir a algú - setting_use_blurhash: Mostra degradats de colors per als Mèdia amagats + setting_unfollow_modal: Mostrar el diàleg de confirmació abans de deixar de seguir a algú + setting_use_blurhash: Mostrar degradats de colors per al contigut gràfic ocult setting_use_pending_items: Mode lent severity: Severitat sign_in_token_attempt: Codi de seguretat @@ -182,28 +183,29 @@ ca: name: Etiqueta interactions: must_be_follower: Blocar les notificacions de persones que no et segueixen - must_be_following: Bloca les notificacions de persones que no segueixes - must_be_following_dm: Bloca els missatges directes de persones que no segueixes + must_be_following: Blocar les notificacions de persones que no segueixes + must_be_following_dm: Blocar els missatges directes de persones que no segueixes invite: comment: Comenta invite_request: text: Per què vols unir-te? ip_block: comment: Comentari + ip: IP severities: no_access: Bloquejar l’accés sign_up_requires_approval: Limitar els registres severity: Regla notification_emails: - digest: Envia un resum per correu electrònic - favourite: Envia un correu electrònic si algú marca com a preferit el teu estat - follow: Envia un correu electrònic si algú et segueix + digest: Enviar un resum per correu electrònic + favourite: Algú marca com a preferit el teu estat + follow: Algú t'ha seguit follow_request: Envia un correu electrònic si algú sol·licita seguir-te - mention: Envia un correu electrònic si algú et menciona - pending_account: Envia un correu electrònic quan es necessiti revisar un compte nou - reblog: Envia un correu electrònic si algú comparteix el teu estat - report: Envia un correu electrònic quan s'enviï un nou informe - trending_tag: Envia un correu quan una etiqueta sense revisar està en tendència + 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 rule: text: Norma tag: @@ -211,8 +213,10 @@ ca: name: Etiqueta trendable: Permet que aquesta etiqueta aparegui en les tendències usable: Permet als tuts emprar aquesta etiqueta + 'no': 'No' recommended: Recomanat required: + mark: "*" text: necessari title: sessions: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 7b06912e8..7c4912eec 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -167,7 +167,7 @@ cs: setting_show_application: Odhalit aplikaci použitou k odeslání příspěvků setting_system_font_ui: Použít výchozí písmo systému setting_theme: Vzhled stránky - setting_trends: Zobrazit dnes populární hashtagy + setting_trends: Zobrazit dnešní trendy setting_unfollow_modal: Před zrušením sledování zobrazovat potvrzovací okno setting_use_blurhash: Zobrazit pro skrytá média barevné gradienty setting_use_pending_items: Pomalý režim @@ -205,7 +205,7 @@ cs: 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: Neposouzený hashtag je populární + trending_tag: Nový trend vyžaduje schválení rule: text: Pravidlo tag: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index cdb08d960..02ac9ce0c 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -54,7 +54,7 @@ de: setting_display_media_show_all: Alle Medien immer anzeigen setting_hide_network: Wem du folgst und wer dir folgt, wird in deinem Profil nicht angezeigt setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge - setting_show_application: Die Anwendung die du nutzst wird in der detaillierten Ansicht deiner Beiträge angezeigt + setting_show_application: Die Anwendung die du nutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken jegliche Details setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken anstatt automatisch zu scrollen username: Dein Benutzername wird auf %{domain} einzigartig sein diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 75378552e..773df52e3 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -2,16 +2,31 @@ eo: simple_form: hints: + account_alias: + acct: Specifu la uzantnomon@domajnon de la konto el kiu vi volas translokiĝi + account_migration: + acct: Specifu la uzantnomon@domajnon de la konto al kiu vi volas translokiĝi account_warning_preset: text: Vi povas uzi skribmanierojn de mesaĝoj, kiel URL-ojn, kradvortojn kaj menciojn + title: Laŭvola. Ne videbla por la ricevanto admin_account_action: + include_statuses: La uzanto vidos, kiujn afiŝojn estas kaŭzintaj la moderigan agon aŭ averton send_email_notification: La uzanto ricevos klarigon pri tio, kio okazis al ties konto text_html: Malnepra. Vi povas uzi skribmanierojn de mesaĝoj. Vi povas <a href="%{path}">aldoni avertajn antaŭagordojn</a> por ŝpari tempon type_html: Elektu kion fari kun <strong>%{acct}</strong> types: + disable: Malhelpi la uzanton uzi sian konton, sed ne forigi aŭ kaŝi ties enhavojn. none: Uzu ĉi tion por sendi averton al la uzanto, sen ekigi alian agon. + sensitive: Devigi ĉiujn da plurmediaj aldonaĵoj esti markitaj kiel sentemaj. + silence: Malhelpi la uzanton povu afiŝi per publika videbleco, kaŝi ties afiŝojn kaj sciigojn de homoj kiuj ne sekvas rin. suspend: Malhelpu ajnan interagon de aŭ al ĉi tiu konto kaj forigu ĝian enhavon. Returnebla ene de 30 tagoj. warning_preset_id: Malnepra. Vi povas ankoraŭ aldoni propran tekston al la fino de la antaŭagordo + announcement: + all_day: Kiam markita, nur la datoj de la tempointervalo estos montrataj + ends_at: Laŭvola. La anonco estos aŭtomate maleldonita ĉi tiam + scheduled_at: Lasi malplena por eldoni la anoncon tuj + starts_at: Laŭvola. Se via anonco estas ligita al specifa tempo + text: Vi povas uzi afiŝo-sintakson. Bonvolu mensemi pri la spaco, kiun la anonco okupos sur la ekrano de la uzanto defaults: autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin avatar: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px @@ -21,6 +36,7 @@ eo: current_username: Por konfirmi, bonvolu enigi la uzantnomon de la nuna konto digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto discoverable: Montru ĉi tiun profilon en la profilujon por ke la konto estos pli-vaste vidata + discoverable_no_directory: Permesi vian konton esti malkovrita de fremduloj per rekomendoj kaj aliaj funkcioj email: Vi ricevos konfirman retmesaĝon fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px @@ -40,8 +56,11 @@ eo: setting_noindex: Influas vian publikan profilon kaj mesaĝajn paĝojn setting_show_application: La aplikaĵo, kiun vi uzas por afiŝi, estos montrita en la detala vido de viaj mesaĝoj setting_use_blurhash: Transirojn estas bazita sur la koloroj de la kaŝitaj aŭdovidaĵoj sed ne montri iun ajn detalon + setting_use_pending_items: Kaŝi tempoliniajn ĝisdatigojn malantaŭ klako anstataŭ aŭtomate rulumi la fluon username: Via uzantnomo estos unika ĉe %{domain} whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto + domain_allow: + domain: Ĉi tiu domajno povos akiri datumon de ĉi tiu servilo kaj envenanta datumo estos prilaborita kaj konservita featured_tag: name: 'Vi povus uzi iun el la jenaj:' form_challenge: @@ -51,10 +70,18 @@ eo: invite_request: text: Ĉi tio helpos nin revizii vian kandidatiĝon ip_block: + comment: Laŭvola. Memoru, kial vi aldonis ĉi tiun regulon. severities: + no_access: Bloki aliron al ĉiuj rimedoj sign_up_requires_approval: Novaj registriĝoj devigos vian aprobon + severity: Elektu, kio okazos pri petoj de ĉi tiu IP + rule: + text: Priskribu regulon aŭ neceson por uzantoj en ĉi tiu servilo. Provu fari ĝin mallonga kaj simpla sessions: otp: 'Enmetu la kodon de dufaktora aŭtentigo el via telefono aŭ uzu unu el viaj realiraj kodoj:' + webauthn: Se ĝi estas USB-ŝlosilo, certu enmeti ĝin kaj, se necese, frapi ĝin. + tag: + name: Vi povas ŝanĝi nur la majuskladon de la literoj, ekzemple, por igi ĝin pli legebla user: chosen_languages: Kiam estas elekto, nur mesaĝoj en elektitaj lingvoj aperos en publikaj templinioj labels: @@ -70,6 +97,7 @@ eo: text: Antaŭagordita teksto title: Titolo admin_account_action: + include_statuses: Inkluzivi raportitajn afiŝojn en la retpoŝtmesaĝo send_email_notification: Sciigi la uzanton retpoŝte text: Propra averto type: Ago @@ -122,6 +150,7 @@ eo: setting_default_privacy: Mesaĝa videbleco setting_default_sensitive: Ĉiam marki aŭdovidaĵojn tiklaj setting_delete_modal: Montri konfirman fenestron antaŭ ol forigi mesaĝon + setting_disable_swiping: Malebligi svingajn movojn setting_display_media: Aŭdovidaĵa montrado setting_display_media_default: Dekomenca setting_display_media_hide_all: Kaŝi ĉiujn diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index cf3c56fe1..2378def50 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -205,7 +205,7 @@ es-AR: 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 etiqueta no revisada está en tendencia + trending_tag: Una nueva tendencia requiere aprobación rule: text: Regla tag: diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index dc1bf65e6..11d3ed5f4 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -36,6 +36,7 @@ es-MX: current_username: Para confirmar, por favor ingrese el nombre de usuario de la cuenta actual digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia discoverable: El directorio del perfil es otra forma en la que su cuenta puede llegar a un público más amplio + discoverable_no_directory: Permite que tu cuenta sea encontrada por desconocidos por medio de recomendaciones y otras herramientas email: Se le enviará un correo de confirmación fields: Puedes tener hasta 4 elementos mostrándose como una tabla en tu perfil header: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 286558854..d2c64ce2b 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -137,7 +137,7 @@ es: header: Img. cabecera honeypot: "%{label} (no rellenar)" inbox_url: URL de la entrada de relés - irreversible: Dejar en lugar de ocultar + irreversible: Rechazar en lugar de ocultar locale: Idioma locked: Hacer privada esta cuenta max_uses: Máx. número de usos diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index d1301c66f..4de0fdee9 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -36,6 +36,7 @@ eu: current_username: Berresteko sartu uneko kontuaren erabiltzaile-izena digest: Jarduerarik gabeko epe luze bat eta gero mezu pertsonalen bat jaso baduzu, besterik ez discoverable: Profilen direktorioa zure kontua jende gehiagok irakurtzeko modu bat da + discoverable_no_directory: Baimendu zure kontua ezezagunek aurkitu ahal izatea gomendio eta beste ezaugarrien bidez email: Baieztapen e-mail bat bidaliko zaizu fields: 4 elementu bistaratu ditzakezu taula batean zure profilean header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 8fa04ac53..82f2ad492 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -42,7 +42,7 @@ fa: header: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد inbox_url: نشانی صفحهٔ اصلی رلهای را که میخواهید به کار ببرید کپی کنید irreversible: بوقهای پالوده به طور برگشتناپذیری ناپدید میشوند، حتا اگر بعدها پالایه برداشته شود - locale: زبان محیط کاربری، ایمیلها، و اعلانها + locale: زبان واسط کاربری، رایانامهها و آگاهیهای ارسالی locked: باید پیگیران تازه را خودتان تأیید کنید password: دستکم باید ۸ نویسه داشته باشد phrase: مستقل از کوچکی و بزرگی حروف، با متن اصلی یا هشدار محتوای بوقها مقایسه میشود @@ -129,7 +129,7 @@ fa: context: زمینههای پالایش current_password: رمز فعلی data: دادهها - discoverable: این حساب را در فهرست گزیدهٔ کاربران نشان بده + discoverable: پیشنهاد حساب به دیگران display_name: نمایش به نام email: نشانی ایمیل expires_in: تاریخ انقضا @@ -182,8 +182,8 @@ fa: featured_tag: name: برچسب interactions: - must_be_follower: مسدودکردن اعلانهای همه به جز پیگیران - must_be_following: مسدودکردن اعلانهای کسانی که شما پی نمیگیرید + must_be_follower: انسداد آگاهیها از ناپیگیران + must_be_following: انسداد آگاهیها از افرادی که پی نمیگیرید must_be_following_dm: مسدودکردن پیغامهای خصوصی کسانی که شما پی نمیگیرید invite: comment: توضیح @@ -197,7 +197,7 @@ fa: sign_up_requires_approval: محدود کردن ثبت نامها severity: قانون notification_emails: - digest: خلاصهکردن چند اعلان در یک ایمیل + digest: فرستادن رایانامههای خلاصه favourite: وقتی کسی نوشتهٔ شما را پسندید ایمیل بفرست follow: وقتی کسی پیگیر شما شد ایمیل بفرست follow_request: وقتی کسی درخواست پیگیری کرد ایمیل بفرست @@ -209,7 +209,7 @@ fa: rule: text: قانون tag: - listable: بگذارید که این برچسب در جستجوها و در فهرست گزیدهٔ کاربران نمایش داده شود + listable: اجازه به این برچسب برای ظاهر شدن در جستوجوها و پیشنهادها name: برچسب trendable: بگذارید که این برچسب در موضوعات پرطرفدار دیده شود usable: بگذارید که این برچسب در بوقها به کار بروند diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 6170f36e6..c0e9fa2ec 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -22,6 +22,7 @@ fi: warning_preset_id: Valinnainen. Voit silti lisätä mukautetun tekstin esiasetuksen loppuun announcement: 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 defaults: avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px @@ -32,6 +33,7 @@ fi: fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px locked: Sinun täytyy hyväksyä seuraajat manuaalisesti + password: Käytä vähintään 8 merkkiä 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 @@ -55,10 +57,14 @@ fi: types: disable: Poista kirjautuminen käytöstä none: Älä tee mitään + sensitive: Arkaluontoinen silence: Hiljennä suspend: Poista käytöstä ja tuhoa käyttäjätunnuksen tiedot peruuttamattomasti + warning_preset_id: Käytä varoitusmallia announcement: all_day: Koko päivän kestävä tapahtuma + ends_at: Tapahtuman loppu + starts_at: Tapahtuman alku text: Ilmoitus defaults: autofollow: Kutsu seuraamaan tiliäsi @@ -124,6 +130,12 @@ fi: comment: Kommentoi invite_request: text: Miksi haluat liittyä? + ip_block: + ip: IP + severities: + no_access: Estä pääsy + sign_up_requires_approval: Rajoita rekisteröitymisiä + severity: Sääntö notification_emails: digest: Lähetä koosteviestejä sähköpostitse favourite: Lähetä sähköposti, kun joku tykkää tilastasi @@ -132,6 +144,8 @@ 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 + rule: + text: Sääntö tag: name: Aihetunniste trendable: Salli tämän aihetunnisteen näkyä trendeissä diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 0f2a20996..01ee10f44 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -10,15 +10,15 @@ fr: text: Vous pouvez utiliser la syntaxe des messages, comme les URL, les hashtags et les mentions title: Facultatif. Invisible pour le destinataire admin_account_action: - include_statuses: L’utilisateur verra quels messages sont la source de l’action de modération ou de l’avertissement + include_statuses: L’utilisateur·rice verra quels messages sont la source de l’action de modération ou de l’avertissement send_email_notification: L’utilisateur recevra une explication de ce qu’il s’est passé avec son compte text_html: Optionnel. Vous pouvez utilisez la syntaxe des messages. Vous pouvez <a href="%{path}">ajouter des modèles d’avertissement</a> pour économiser du temps type_html: Choisir que faire avec <strong>%{acct}</strong> types: - disable: Empêcher l’utilisateur d’utiliser son compte, mais ne pas supprimer ou masquer son contenu. - none: Utilisez ceci pour envoyer un avertissement à l’utilisateur, sans déclencher aucune autre action. - sensitive: Forcer toutes les pièces jointes de cet utilisateur à être signalées comme sensibles. - silence: Empêcher l’utilisateur de poster avec une visibilité publique, cacher ses messages et ses notifications aux personnes qui ne les suivent pas. + disable: Empêcher l’utilisateur·rice d’utiliser son compte, mais ne pas supprimer ou masquer son contenu. + none: Utilisez ceci pour envoyer un avertissement à l’utilisateur·rice, sans déclencher aucune autre action. + sensitive: Forcer toutes les pièces jointes de cet·te utilisateur·rice à être signalées comme sensibles. + silence: Empêcher l’utilisateur·rice de poster avec une visibilité publique, cacher ses messages et ses notifications aux personnes qui ne les suivent pas. suspend: Empêcher toute interaction depuis ou vers ce compte et supprimer son contenu. Réversible dans les 30 jours. warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection announcement: @@ -26,7 +26,7 @@ fr: ends_at: Optionnel. L’annonce sera automatiquement dépubliée à ce moment 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 + 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 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 @@ -43,7 +43,7 @@ fr: inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser irreversible: Les messages filtrés disparaîtront pour toujours, même si le filtre est supprimé plus tard locale: La langue de l’interface, des courriels et des notifications - locked: Nécessite que vous approuviez manuellement chaque abonné + locked: Nécessite que vous approuviez manuellement chaque abonné·e password: Utilisez au moins 8 caractères phrase: Sera filtré peu importe la casse ou l’avertissement de contenu du message scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez une permission générale, vous n’avez pas besoin de sélectionner les permissions plus précises. @@ -75,7 +75,7 @@ fr: ip_block: comment: Optionnel. Pour ne pas oublier pourquoi vous avez ajouté cette règle. expires_in: Les adresses IP sont une ressource finie, elles sont parfois partagées et changent souvent de mains. Pour cette raison, les blocages d’IP indéfiniment ne sont pas recommandés. - ip: Entrez une adresse IPv4 ou IPv6. Vous pouvez bloquer des plages entières en utilisant la syntaxe CIDR. Faites attention à ne pas vous bloquer vous-même! + ip: Entrez une adresse IPv4 ou IPv6. Vous pouvez bloquer des plages entières en utilisant la syntaxe CIDR. Faites attention à ne pas vous bloquer vous-même ! severities: no_access: Bloquer l’accès à toutes les ressources sign_up_requires_approval: Les nouvelles inscriptions nécessiteront votre approbation @@ -129,8 +129,8 @@ fr: context: Contextes du filtre current_password: Mot de passe actuel data: Données - discoverable: Proposer ce compte aux autres - display_name: Afficher le nom + discoverable: Suggérer ce compte aux autres + display_name: Nom public email: Adresse courriel expires_in: Expire après fields: Métadonnées du profil diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index cf124c967..d8f30e871 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -35,7 +35,7 @@ gd: current_password: A chùm tèarainteachd, cuir a-steach facal-faire a’ chunntais làithrich current_username: Airson seo a dhearbhadh, cuir a-steach ainm-cleachdaiche a’ chunntais làithrich digest: Cha dèid seo a chur ach nuair a bhios tu air ùine mhòr gun ghnìomh a ghabhail agus ma fhuair thu teachdaireachd phearsanta fhad ’s a bha thu air falbh - discoverable: Ceadaich gun lorg coigrich an cunntas agad le taic o mholaidhean is gleusan eile + discoverable: Ceadaich gun lorg coigrich an cunntas agad le taic o mholaidhean, eòlaire nam pròifil is gleusan eile discoverable_no_directory: Ceadaich gun lorg coigrich an cunntas agad le taic o mholaidhean is gleusan eile email: Thèid post-d dearbhaidh a chur thugad fields: Faodaidh tu suas ri 4 nithean a shealltainn mar chlàr air a’ phròifil agad @@ -110,7 +110,7 @@ gd: disable: Reòth none: Cuir rabhadh sensitive: Frionasach - silence: Crìoch + silence: Cuingich suspend: Cuir à rèim warning_preset_id: Cleachd rabhadh ro-shuidhichte announcement: @@ -182,8 +182,8 @@ gd: featured_tag: name: Taga hais interactions: - must_be_follower: Mùch na brathan nach eil o luchd-leantainn - must_be_following: Mùch na brathan o dhaoine air nach lean thu + must_be_follower: Bac na brathan nach eil o luchd-leantainn + must_be_following: Bac na brathan o dhaoine air nach lean thu must_be_following_dm: Bac teachdaireachdan dìreach o dhaoine air nach lean thu invite: comment: Beachd @@ -205,7 +205,7 @@ gd: 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 taga hais gun lèirmheas a’ treandadh + 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 7f9c5f3ee..7c3d5a9b2 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -35,8 +35,8 @@ gl: current_password: Por razóns de seguridade, introduce o contrasinal da conta actual current_username: Para confirmar, introduce o nome de usuaria da conta actual digest: Enviar só tras un longo período de inactividade e só se recibiches algunha mensaxe directa na tua ausencia - discoverable: Permite que a túa conta poida ser descuberta por persoas descoñecidas a través de recomendacións e outras ferramentas - discoverable_no_directory: Permitir que a túa conta poida ser descuberta por extrañas a través das recomendacións e outras ferramentas + discoverable: Permite que a túa conta poida ser descuberta por persoas descoñecidas a través de recomendacións, directorio de perfil e outras ferramentas + discoverable_no_directory: Permitir que a túa conta poida ser descuberta por persoas descoñecidas a través das recomendacións e outras ferramentas email: Ímosche enviar un correo de confirmación fields: Podes ter ate 4 elementos no teu perfil mostrados como unha táboa header: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px @@ -53,7 +53,7 @@ gl: setting_display_media_hide_all: Ocultar sempre os medios setting_display_media_show_all: Mostrar sempre os medios marcados como sensibles setting_hide_network: Non se mostrará no teu perfil quen te segue e a quen estás a seguir - setting_noindex: Afecta ao teu perfil público e páxinas de estado + setting_noindex: Afecta ao teu perfil público e páxinas de publicación setting_show_application: A aplicación que estás a utilizar para enviar publicacións mostrarase na vista detallada da publicación setting_use_blurhash: Os gradientes toman as cores da imaxe oculta pero esborranchando todos os detalles setting_use_pending_items: Agochar actualizacións da cronoloxía tras un click no lugar de desprazar automáticamente os comentarios @@ -71,7 +71,7 @@ gl: imports: data: Ficheiro CSV exportado desde outro servidor Mastodon invite_request: - text: Esto axudaranos a revisar a tua aplicación + text: Esto axudaranos a revisar a tua solicitude ip_block: comment: Opcional. Lembrar a razón para engadir esta regra. expires_in: Os enderezos IP son un recurso finito, a veces son compartidos e cambian de mans con frecuencia. Por esta razón, non se recomendan os bloqueos indefinidos de IPs. @@ -83,7 +83,7 @@ gl: rule: text: Describe unha regra ou requerimento para as usuarias deste servidor. Intenta que sexa curta e simple sessions: - otp: 'Introduce o código do segundo factor creado pola aplicación do teu móbil ou usa un dos códigos de recuperación:' + otp: 'Escribe o código do segundo factor creado pola aplicación do teu móbil ou usa un dos códigos de recuperación:' webauthn: Se é unha chave USB asegúrate de que está conectada e preme o botón. tag: name: Só podes cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade @@ -205,7 +205,7 @@ gl: 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: Un cancelo ser revisar está sendo tendencia + trending_tag: Unha nova tendencia require aprobación rule: text: Regra tag: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 3bccc625d..e80704cee 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -20,7 +20,7 @@ hu: sensitive: Ennek a felhasználónak minden médiatartalmát jelöljük meg kényesként. silence: Megakadályozzuk, hogy ez a felhasználó nyilvános láthatóságú bejegyzést tegyen közzé, elrejtjük a bejegyzéseit és a róla szóló értesítéseket azok elől, akik nem közvetlen követői. suspend: Minden interakciót megakadályozunk ezzel a fiókkal és töröljük a tartalmát. 30 napon belül még visszacsinálható. - warning_preset_id: Opcionális. A figyelmeztetés végére saját szöveget is írhatsz + warning_preset_id: Nem kötelező. A figyelmeztetés végére saját szöveget is írhatsz. announcement: all_day: Bejelölve csak a dátumok számítanak majd a megadott intervallumból ends_at: Opcionális. A közleményt ekkor automatikusan levesszük @@ -104,7 +104,7 @@ hu: admin_account_action: include_statuses: Tedd az e-mailbe a bejelentett bejegyzéseket send_email_notification: Figyelmeztessük a felhasználót e-mailben - text: Egyedi figyelmeztetés + text: Egyéni figyelmeztetés type: Művelet types: disable: Letiltás @@ -133,7 +133,7 @@ hu: display_name: Megjelenített név email: E-mail cím expires_in: Elévül - fields: Profil metaadatok + fields: Profil metaadatai header: Fejléc honeypot: "%{label} (ne töltsd ki)" inbox_url: Relé inbox-hoz tartozó URL @@ -205,13 +205,13 @@ hu: 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: E-mail küldése, ha egy még nem látott hashtag trendi lett + trending_tag: Új felkapott hashtag jóváhagyásra vár rule: text: Szabály tag: listable: A hashtag megjelenhet a profiladatbázisban name: Hashtag - trendable: A hashtag megjelenhet a trendek között + trendable: A hashtag megjelenhet a felkapottak között usable: Bejegyzések használhatják ezt a hashtaget 'no': Nem required: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 79eefef0d..7a1017796 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -7,12 +7,12 @@ it: account_migration: acct: Indica il nomeutente@dominio dell'account al quale vuoi trasferirti account_warning_preset: - text: Puoi usare la sintassi dei toot, come URL, hashtag e menzioni + text: Puoi usare la sintassi dei post, come URL, hashtag e menzioni title: Opzionale. Non visibile al destinatario admin_account_action: - include_statuses: L'utente vedrà quali toot hanno causato l'azione di moderazione o l'avviso + include_statuses: L'utente vedrà quali post hanno causato l'azione di moderazione o l'avviso send_email_notification: L'utente riceverà una spiegazione di ciò che è successo con suo account - text_html: Opzionale. Puoi usare la sintassi dei toot. Puoi <a href="%{path}">aggiungere avvisi preimpostati</a> per risparmiare tempo + text_html: Opzionale. Puoi usare la sintassi dei post. Puoi <a href="%{path}">aggiungere avvisi preimpostati</a> per risparmiare tempo type_html: Decidi cosa fare con <strong>%{acct}</strong> types: disable: Impedisce all'utente di utilizzare il suo account, ma non elimina o nasconde i suoi contenuti. @@ -26,7 +26,7 @@ it: ends_at: Opzionale. L'annuncio verrà automaticamente ritirato in questo momento 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 toot. Tieni presente lo spazio che l'annuncio occuperà nello schermo dell'utente + text: Puoi usare la sintassi dei post. Tieni presente lo spazio che l'annuncio occuperà nello schermo dell'utente 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 @@ -41,7 +41,7 @@ it: fields: Puoi avere fino a 4 voci visualizzate come una tabella sul tuo profilo header: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px inbox_url: Copia la URL dalla pagina iniziale del ripetitore che vuoi usare - irreversible: I toot filtrati scompariranno in modo irreversibile, anche se il filtro viene eliminato + irreversible: I post filtrati scompariranno in modo irreversibile, anche se il filtro viene eliminato locale: La lingua dell'interfaccia utente, di email e notifiche push locked: Richiede che approvi i follower manualmente password: Usa almeno 8 caratteri @@ -150,21 +150,21 @@ it: setting_aggregate_reblogs: Raggruppa condivisioni in timeline setting_auto_play_gif: Play automatico GIF animate setting_boost_modal: Mostra dialogo di conferma prima del boost - setting_crop_images: Ritaglia immagini in toot non espansi a 16x9 + setting_crop_images: Ritaglia immagini in post non espansi a 16x9 setting_default_language: Lingua dei post setting_default_privacy: Privacy dei post setting_default_sensitive: Segna sempre i media come sensibili - setting_delete_modal: Mostra dialogo di conferma prima di eliminare un toot + setting_delete_modal: Mostra dialogo di conferma prima di eliminare un post setting_disable_swiping: Disabilita i movimenti di scorrimento setting_display_media: Visualizzazione dei media setting_display_media_default: Predefinita setting_display_media_hide_all: Nascondi tutti setting_display_media_show_all: Mostra tutti - setting_expand_spoilers: Espandi sempre toot con content warning + setting_expand_spoilers: Espandi sempre post con content warning setting_hide_network: Nascondi la tua rete setting_noindex: Non farti indicizzare dai motori di ricerca setting_reduce_motion: Riduci movimento nelle animazioni - setting_show_application: Rendi pubblica l'applicazione usata per inviare i toot + setting_show_application: Rendi pubblica l'applicazione usata per inviare i post setting_system_font_ui: Usa il carattere predefinito del sistema setting_theme: Tema sito setting_trends: Mostra tendenze di oggi @@ -198,12 +198,12 @@ it: severity: Regola notification_emails: digest: Invia email riassuntive - favourite: Invia email quando segna come preferito al tuo stato + favourite: Qualcuno ha apprezzato il tuo post follow: Invia email quando qualcuno ti segue follow_request: Invia email quando qualcuno chiede di seguirti mention: Invia email quando qualcuno ti menziona pending_account: Invia e-mail quando un nuovo account richiede l'approvazione - reblog: Invia email quando qualcuno condivide un tuo toot + 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 rule: @@ -212,7 +212,7 @@ it: listable: Permetti a questo hashtag di apparire nella directory dei profili name: Hashtag trendable: Permetti a questo hashtag di apparire nelle tendenze - usable: Permetti ai toot di utilizzare questo hashtag + usable: Permetti ai post di usare questo hashtag 'no': 'No' required: mark: "*" diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index e83313d43..4071bc5c8 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -36,6 +36,7 @@ ja: current_username: 確認のため、現在のアカウントのユーザー名を入力してください digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます discoverable: ディレクトリはあなたのアカウントをより多くの人に見つけてもらうためのひとつの手段です + discoverable_no_directory: ディレクトリ機能を使用して、あなたのアカウントを他の人から見つけられるようにします email: 確認のメールが送信されます fields: プロフィールに表として4つまでの項目を表示することができます header: "%{size}までのPNG、GIF、JPGが利用可能です。 %{dimensions}pxまで縮小されます" diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index 2a90356ff..478170fbe 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -95,6 +95,7 @@ kab: no_access: Sewḥel anekcum severity: Alugen notification_emails: + follow: Yeḍfer-ik·im-id walbɛaḍ mention: Yuder-ik·em-id walbɛaḍ reblog: Yella win yesselhan adda-dik·im rule: @@ -103,5 +104,6 @@ kab: name: Ahacṭag 'no': Ala required: + mark: "*" text: ilaq 'yes': Ih diff --git a/config/locales/simple_form.kmr.yml b/config/locales/simple_form.kmr.yml index 015dfcbf4..2702b14dc 100644 --- a/config/locales/simple_form.kmr.yml +++ b/config/locales/simple_form.kmr.yml @@ -149,7 +149,7 @@ kmr: password: Pêborîn phrase: Peyvkilîd an jî hevok setting_advanced_layout: Navrûya tevnê yê pêşketî çalak bike - setting_aggregate_reblogs: Di demnameyê de tootên bilindkirî kom bike + setting_aggregate_reblogs: Di demnameyê de şandiyên bilindkirî kom bike setting_auto_play_gif: GIF ên livok bi xweber bilîzine setting_boost_modal: Gotûbêja pejirandinê nîşan bide berî ku şandî werê bilindkirin setting_crop_images: Wêneyên di nav şandiyên ku nehatine berfireh kirin wek 16×9 jê bike diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 811b58db4..408c4dfe2 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -15,7 +15,7 @@ ko: text_html: 선택사항. 게시물 문법을 사용할 수 있습니다. <a href="%{path}">경고 틀을 추가</a>하여 시간을 절약할 수 있습니다 type_html: "<strong>%{acct}</strong>에 대해 취할 행동 선택" types: - disable: 사용자가 계정을 사용하는 것을 막지만, 그들의 게시물을 삭제하거나 숨기지는 않습니다. + disable: 사용자가 계정을 사용하는 것을 막지만, 그의 게시물을 삭제하거나 숨기지는 않습니다. none: 이것을 사용해서 어떤 동작도 하지 않고, 사용자에게 경고를 보냅니다. sensitive: 이 사용자의 모든 미디어 첨부를 민감함으로 강제 설정합니다. silence: 이 사용자가 공개 설정으로 게시물을 작성할 수 없도록 하고, 그를 팔로우 하지 않는 사람에게는 이 사용자의 게시물과 알림을 숨깁니다. @@ -201,7 +201,7 @@ ko: favourite: 누군가 내 상태를 즐겨찾기로 등록했을 때 이메일 보내기 follow: 누군가 나를 팔로우 했을 때 이메일 보내기 follow_request: 누군가 나를 팔로우 하길 원할 때 이메일 보내기 - mention: 누군가 나에게 답장했을 때 이메일 보내기 + mention: 누군가 나를 언급했을 때 이메일 보내기 pending_account: 새 계정이 심사가 필요할 때 이메일 보내기 reblog: 누군가 내 툿을 부스트 했을 때 이메일 보내기 report: 새 신고 등록시 이메일로 알리기 diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index d1b32cd2f..21880ec2b 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -49,9 +49,9 @@ pl: scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów. setting_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić) setting_default_sensitive: Wrażliwe multimedia są domyślnie schowane i mogą być odkryte kliknięciem - setting_display_media_default: Ukrywaj zawartość oznaczoną jako wrażliwa - setting_display_media_hide_all: Zawsze oznaczaj zawartość multimedialną jako wrażliwą - setting_display_media_show_all: Nie ukrywaj zawartości multimedialnej oznaczonej jako wrażliwa + setting_display_media_default: Ukrywaj zawartość multimedialną oznaczoną jako wrażliwa + setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną + setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów setting_show_application: W informacjach o wpisie będzie widoczna informacja o aplikacji, z której został wysłany diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index c34b5f6b0..2fd300842 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -36,6 +36,7 @@ pt-BR: current_username: Para confirmar, por favor, digite o nome de usuário da conta atual digest: Enviado apenas após um longo período de inatividade com um resumo das menções recebidas durante ausência discoverable: O diretório de perfis é outra maneira de sua conta alcançar um público maior + discoverable_no_directory: Permitir que sua conta seja visível para desconhecidos através de recomendações e outras funcionalidades email: Você receberá um e-mail de confirmação fields: Você pode ter até 4 itens mostrados em forma de tabela no seu perfil header: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 07f208e2c..4d22a9648 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -102,7 +102,7 @@ pt-PT: text: Texto pré-definido title: Título admin_account_action: - include_statuses: Incluir no e-mail os toots reportados + include_statuses: Incluir no e-mail as publicações denunciadas send_email_notification: Notificar o utilizador por e-mail text: Aviso personalizado type: Acção diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 1385e1d3e..0b5da707c 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -140,7 +140,7 @@ ru: irreversible: Удалять, а не скрывать locale: Язык интерфейса locked: Сделать учётную запись закрытой - max_uses: Максимальное число использований + max_uses: Максимальное кол-во использований new_password: Новый пароль note: О себе otp_attempt: Код из приложения-аутентификатора diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index f0bf1e6c9..91bf681f3 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -45,6 +45,9 @@ sl: data: Izvožena CSV datoteka iz drugega Mastodon vozlišča invite_request: text: To nam bo pomagalo pregledati vašo prijavo + ip_block: + severities: + no_access: Blokiraj dostop do vseh virov sessions: otp: 'Vnesite dvomestno kodo, ki je ustvarjena z aplikacijo na telefonu, ali uporabite eno od vaših obnovitvenih kod:' user: @@ -54,8 +57,13 @@ sl: fields: name: Oznaka value: Vsebina + account_alias: + acct: Ročica starega računa + account_migration: + acct: Ročica novega računa account_warning_preset: text: Prednastavljeno besedilo + title: Naslov admin_account_action: send_email_notification: Obvesti uporabnika po e-pošti text: Opozorilo po meri @@ -63,9 +71,15 @@ sl: types: disable: Onemogoči none: Ne naredi ničesar + sensitive: Občutljivo silence: Utišaj suspend: Suspendiraj in nepovratno izbriši podatke računa warning_preset_id: Uporabi prednastavljeno opozorilo + announcement: + all_day: Celodnevni dogodek + ends_at: Konec dogodka + starts_at: Začetek dogodka + text: Objava defaults: autofollow: Povabite, da sledi vašemu računu avatar: Podoba @@ -82,12 +96,14 @@ sl: expires_in: Preteče po fields: Metapodatki profila header: Glava + honeypot: "%{label} (ne izpolnjujte)" inbox_url: URL mape "Prejeto" irreversible: Opusti namesto skrij locale: Jezik vmesnika locked: Zaklenjen račun max_uses: Največje število uporabnikov new_password: Novo geslo + note: Biografija otp_attempt: Dvofaktorska koda password: Geslo phrase: Ključna beseda ali fraza @@ -95,6 +111,7 @@ sl: setting_aggregate_reblogs: Skupinske spodbude na časovnicah setting_auto_play_gif: Samodejno predvajanje animiranih GIF-ov setting_boost_modal: Pred sunkom pokaži potrditveno okno + setting_crop_images: Obreži slike v nerazširjenih objavah v razmerju 16:9 setting_default_language: Jezik objavljanja setting_default_privacy: Zasebnost objave setting_default_sensitive: Vedno označi medije kot občutljive @@ -110,22 +127,35 @@ sl: setting_show_application: Razkrij aplikacijo za pošiljanje tutov setting_system_font_ui: Uporabi privzeto pisavo sistema setting_theme: Tema strani + setting_trends: Pokaži današnje trende setting_unfollow_modal: Pokaži potrditveno okno, preden nekoga prenehamo slediti setting_use_blurhash: Pokaži barvite gradiente za skrite medije setting_use_pending_items: Počasen način severity: Strogost + sign_in_token_attempt: Varnostna koda type: Vrsta uvoza username: Uporabniško ime username_or_email: Uporabniško ime ali E-pošta whole_word: Celotna beseda + email_domain_block: + with_dns_records: Vključi zapise MX in IP-številke domene featured_tag: name: Ključnik interactions: must_be_follower: Blokiraj obvestila nesledilcev must_be_following: Blokiraj obvestila oseb, ki jim ne sledite must_be_following_dm: Blokiraj neposredna sporočila oseb, ki jim ne sledite + invite: + comment: Komentar invite_request: text: Zakaj se želite pridružiti? + ip_block: + comment: Komentar + ip: IP + severities: + no_access: Blokiraj dostop + sign_up_requires_approval: Omeji število prijav + severity: Pravilo notification_emails: digest: Pošlji izvlečke e-pošt favourite: Pošlji e-pošto, ko nekdo doda vaše stanje med priljubljene @@ -135,7 +165,19 @@ sl: 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 + rule: + text: Pravilo + tag: + listable: Dovoli, da se ta ključnik pojavi v iskanjih in predlogih + name: Ključnik + trendable: Dovoli, da se ta ključnik pojavi med trendi + usable: Dovoli, da objave uporabljajo ta ključnik 'no': Ne required: + mark: "*" text: zahtevano + title: + sessions: + webauthn: Za prijavo uporabite eno od svojih varnostnih kod 'yes': Da diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 3d073e99c..87aaeb92b 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -3,7 +3,7 @@ sv: simple_form: hints: account_alias: - acct: Ange användarnamn@domän för kontot du flyttar från + acct: Ange användarnamn@domän för kontot som du vill flytta från account_migration: acct: Ange användarnamn@domän för kontot du flyttar till account_warning_preset: @@ -16,6 +16,8 @@ sv: type_html: Välj vad du vill göra med <strong>%{acct}</strong> types: disable: Förhindra användaren från att använda sitt konto, men ta inte bort eller dölj innehållet. + none: Använd det här för att skicka en varning till användaren, utan att trigga någon annan åtgärd. + sensitive: Tvinga denna användares alla mediebilagor att flaggas som känsliga. warning_preset_id: Extra. Du kan lägga till valfri text i slutet av förinställningen announcement: all_day: När det är markerat visas endast datum för tidsintervallet @@ -41,14 +43,31 @@ sv: setting_hide_network: Vem du följer och vilka som följer dig kommer inte att visas på din profilsida setting_noindex: Påverkar din offentliga profil och statussidor username: Ditt användarnamn måste vara unikt på %{domain} + email_domain_block: + with_dns_records: Ett försök att lösa den givna domänens DNS-poster kommer att göras och resultaten kommer också att blockeras featured_tag: name: 'Du kan vilja använda en av dessa:' + form_challenge: + current_password: Du går in i ett säkert område imports: data: CSV-fil som exporteras från en annan Mastodon-instans + invite_request: + text: Det här kommer att hjälpa oss att granska din ansökan + ip_block: + comment: Valfritt. Kom ihåg varför du lade till denna regel. + expires_in: IP-adresser är en ändlig resurs, de delas ibland och byter ofta händer. Av den här anledningen så rekommenderas inte IP-blockeringar på obestämd tid. + ip: Ange en IPv4 eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ut dig själv! + severities: + no_access: Blockera åtkomst till alla resurser + sign_up_requires_approval: Nya registreringar kräver ditt godkännande + severity: Välj vad som ska hända med förfrågningar från denna IP rule: text: Beskriv en kort och enkel regel för användare på denna server sessions: otp: 'Ange tvåfaktorkoden genererad från din telefonapp eller använd någon av dina återställningskoder:' + webauthn: Om det är en USB-nyckel se till att sätta in den och, om nödvändigt, knacka på den. + tag: + name: Du kan bara ändra bokstävernas typ av variant, till exempel för att göra det mer läsbart user: chosen_languages: När aktiverat så visas bara inlägg i dina valda språk i den offentliga tidslinjen labels: @@ -61,8 +80,10 @@ sv: account_migration: acct: Namnet på det nya kontot account_warning_preset: + text: Förinställd text title: Rubrik admin_account_action: + include_statuses: Inkludera rapporterade inlägg i e-postmeddelandet send_email_notification: Meddela användaren via e-post text: Anpassad varning type: Åtgärd @@ -72,6 +93,7 @@ sv: sensitive: Känslig silence: Tysta suspend: Stäng av + warning_preset_id: Använd en förinställd varning announcement: all_day: Heldagsevenemang ends_at: Evenemangets slut diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index d2ea37a03..12aedd328 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -25,7 +25,7 @@ th: all_day: เมื่อกาเครื่องหมาย จะแสดงเฉพาะวันที่ของช่วงเวลาเท่านั้น ends_at: ไม่จำเป็น จะเลิกเผยแพร่ประกาศที่เวลานี้โดยอัตโนมัติ scheduled_at: เว้นว่างไว้เพื่อเผยแพร่ประกาศทันที - starts_at: ไม่จำเป็น ในกรณีที่ประกาศของคุณผูกไว้กับช่วงเวลาที่เจาะจง + starts_at: ไม่จำเป็น ในกรณีที่ประกาศของคุณผูกไว้กับช่วงเวลาที่เฉพาะเจาะจง text: คุณสามารถใช้ไวยากรณ์โพสต์ โปรดระวังพื้นที่ที่ประกาศจะใช้ในหน้าจอของผู้ใช้ defaults: autofollow: ผู้คนที่ลงทะเบียนผ่านคำเชิญจะติดตามคุณโดยอัตโนมัติ @@ -35,7 +35,7 @@ th: current_password: เพื่อวัตถุประสงค์ด้านความปลอดภัย โปรดป้อนรหัสผ่านของบัญชีปัจจุบัน current_username: เพื่อยืนยัน โปรดป้อนชื่อผู้ใช้ของบัญชีปัจจุบัน digest: ส่งเฉพาะหลังจากไม่มีการใช้งานเป็นเวลานานและในกรณีที่คุณได้รับข้อความส่วนบุคคลใด ๆ เมื่อคุณไม่อยู่เท่านั้น - discoverable: อนุญาตให้คนแปลกหน้าค้นพบบัญชีของคุณได้ผ่านคำแนะนำและคุณลักษณะอื่น ๆ + discoverable: อนุญาตให้คนแปลกหน้าค้นพบบัญชีของคุณได้ผ่านคำแนะนำ, ไดเรกทอรีโปรไฟล์ และคุณลักษณะอื่น ๆ discoverable_no_directory: อนุญาตให้คนแปลกหน้าค้นพบบัญชีของคุณได้ผ่านคำแนะนำและคุณลักษณะอื่น ๆ email: คุณจะได้รับอีเมลยืนยัน fields: คุณสามารถมีได้มากถึง 4 รายการแสดงเป็นตารางในโปรไฟล์ของคุณ @@ -73,10 +73,13 @@ th: text: นี่จะช่วยให้เราตรวจทานใบสมัครของคุณ ip_block: comment: ไม่จำเป็น จดจำเหตุผลที่คุณเพิ่มกฎนี้ + ip: ป้อนที่อยู่ IPv4 หรือ IPv6 คุณสามารถปิดกั้นทั้งช่วงได้โดยใช้ไวยากรณ์ CIDR ระวังอย่าล็อคตัวเองออก! severities: no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด sign_up_requires_approval: การลงทะเบียนใหม่จะต้องมีการอนุมัติของคุณ severity: เลือกสิ่งที่จะเกิดขึ้นกับคำขอจาก IP นี้ + rule: + text: อธิบายกฎหรือข้อกำหนดสำหรับผู้ใช้ในเซิร์ฟเวอร์นี้ พยายามทำให้กฎหรือข้อกำหนดสั้นและเรียบง่าย sessions: otp: 'ป้อนรหัสสองปัจจัยที่สร้างโดยแอปในโทรศัพท์ของคุณหรือใช้หนึ่งในรหัสกู้คืนของคุณ:' tag: @@ -198,7 +201,7 @@ th: pending_account: บัญชีใหม่ต้องมีการตรวจทาน reblog: ใครสักคนได้ดันโพสต์ของคุณ report: มีการส่งรายงานใหม่ - trending_tag: แฮชแท็กที่ยังไม่ได้ตรวจทานกำลังนิยม + trending_tag: แนวโน้มใหม่ต้องการการอนุมัติ rule: text: กฎ tag: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 1adba8c2f..1823e1fe9 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -15,11 +15,11 @@ vi: text_html: Tùy chọn. Bạn nên dùng <a href="%{path}">cảnh cáo cài sẵn</a> để tiết kiệm thời gian type_html: Chọn làm gì với <strong>%{acct}</strong> types: - disable: Cấm người này tiếp tục đăng nhập, nhưng không xóa hoặc ẩn tút của họ. - none: Sử dụng để gửi cảnh cáo tới tài khoản này, không áp đặt trừng phạt. + disable: Tạm khóa đăng nhập tài khoản, nhưng không xóa hoặc ẩn tút. + none: Cảnh cáo tài khoản này, không áp đặt trừng phạt. sensitive: Mọi tập tin của tài khoản này tải lên đều sẽ bị gắn nhãn nhạy cảm. silence: Cấm tài khoản này đăng tút công khai, ẩn tút của họ hiện ra với những người chưa theo dõi họ. - suspend: Vô hiệu hóa mọi hoạt động của tài khoản này và xóa sạch dữ liệu. Có thể mở lại trong vòng 30 ngày. + suspend: Vô hiệu hóa và xóa sạch dữ liệu của tài khoản này. Có thể khôi phục trước 30 ngày. warning_preset_id: Tùy chọn. Bạn vẫn có thể thêm ghi chú riêng announcement: all_day: Chỉ có khoảng thời gian được đánh dấu mới hiển thị @@ -107,10 +107,10 @@ vi: text: Ghi chú riêng type: Hành động types: - disable: Tạm khóa + disable: Khóa none: Cảnh cáo sensitive: Nhạy cảm - silence: Tạm ẩn + silence: Hạn chế suspend: Vô hiệu hóa warning_preset_id: Dùng mẫu có sẵn announcement: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index ac8cbc298..61161fc62 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -178,7 +178,7 @@ zh-CN: username_or_email: 用户名或电子邮件地址 whole_word: 整个词条 email_domain_block: - with_dns_records: 包括改域名的 MX 记录和 IP 地址 + with_dns_records: 包括该域名的 MX 记录和 IP 地址 featured_tag: name: 话题标签 interactions: @@ -204,7 +204,7 @@ zh-CN: mention: 当有用户在嘟文中提及我时,发送电子邮件提醒我 pending_account: 在有帐号需要审核时,发送电子邮件提醒我 reblog: 当有用户转嘟了我的嘟文时,发送电子邮件提醒我 - report: 在提交新举报时,发送电子邮件提醒我 + report: 在提交新报告时,发送电子邮件提醒我 trending_tag: 当未经审核的话题成为当前热门时发邮件提醒 rule: text: 规则 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index f94ff0a9b..c9e95e694 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -36,7 +36,7 @@ zh-TW: current_username: 請輸入目前帳戶的使用者名稱以確認 digest: 僅在你長時間未登入且在未登入期間收到私訊時傳送 discoverable: 加入個人資料目錄能接觸更多閱聽眾 - discoverable_no_directory: 允許陌生人透過推薦與其他功能探索您的帳號 + discoverable_no_directory: 允許陌生人透過推薦與其他功能發現您的帳號 email: 您將收到一封確認電子郵件 fields: 您可在個人資料上有至多 4 個以表格形式顯示的項目 header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會按比例縮小成 %{dimensions} 像素 diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 0be6d3bfa..4bf56464e 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -102,7 +102,6 @@ sk: accounts: add_email_domain_block: Pridaj e-mailovú doménu na zoznam zakázaných approve: Schváľ - approve_all: Schváľ všetky are_you_sure: Si si istý/á? avatar: Maskot by_domain: Doména @@ -116,6 +115,7 @@ sk: confirm: Potvrď confirmed: Potvrdený confirming: Potvrdzujúci + custom: Vlastné delete: Vymaž dáta deleted: Vymazané demote: Degraduj @@ -148,7 +148,6 @@ sk: active: Aktívny/a all: Všetko pending: Čakajúci - silenced: Umlčané suspended: Vylúčený/á title: Moderácia moderation_notes: Moderátorské poznámky @@ -165,7 +164,6 @@ sk: push_subscription_expires: PuSH odoberanie expiruje redownload: Obnov profil reject: Zamietni - reject_all: Zamietni všetky remove_avatar: Vymaž avatar remove_header: Vymaž záhlavie resend_confirmation: @@ -194,11 +192,11 @@ sk: targeted_reports: Nahlásenia od ostatných silence: Stíš silenced: Stíšený/é - statuses: Príspevky + statuses: Príspevkov subscribe: Odoberaj suspended: Vylúčený/á - time_in_queue: Čakajúci %{time} v poradí title: Účty + unblock_email: Odblokuj emailovú adresu unconfirmed_email: Nepotvrdený email undo_silenced: Zruš stíšenie undo_suspension: Zruš blokovanie @@ -209,19 +207,24 @@ sk: whitelisted: Na bielej listine action_logs: action_types: + approve_user: Odobri užívateľa assigned_to_self_report: Priraď hlásenie change_email_user: Zmeň email pre užívateľa confirm_user: Potvrď užívateľa create_account_warning: Vytvor výstrahu create_announcement: Vytvor oboznámenie + create_custom_emoji: Vytvor vlastné emotikony create_domain_allow: Vytvor povolenie pre doménu create_domain_block: Vytvor zákaz domény create_email_domain_block: Vytvor zákaz emailovej domény create_ip_block: Vytvor IP pravidlo demote_user: Zniž užívateľskú rolu destroy_announcement: Vymaž oboznámenie + destroy_custom_emoji: Vymaž vlastné emotikony destroy_domain_allow: Zmaž povolenie pre doménu destroy_domain_block: Zruš blokovanie domény + destroy_email_domain_block: Zmazať zákaz emailovej domény + destroy_instance: Vyčistiť doménu destroy_ip_block: Vymaž IP pravidlo destroy_status: Vymaž príspevok destroy_unavailable_domain: Vymaž nedostupnú doménu @@ -231,6 +234,7 @@ sk: enable_custom_emoji: Povoľ vlastné emotikony enable_user: Povoľ užívateľa promote_user: Povýš užívateľskú rolu + reject_user: Zamietni užívateľa remove_avatar_user: Vymaž avatar reopen_report: Znovu otvor hlásenie reset_password_user: Obnov heslo @@ -238,6 +242,8 @@ sk: sensitive_account: Vynúť všetky médiá na účte ako chúlostivé silence_account: Utíš účet suspend_account: Vylúč účet + unassigned_report: Odober priradenie nahlásenia + unblock_email_account: Odblokuj emailovú adresu unsilence_account: Zvráť obmedzenie účtu unsuspend_account: Odblokuj účet update_announcement: Aktualizuj oboznámenie @@ -266,6 +272,7 @@ sk: scheduled_for: Načasované na %{time} scheduled_msg: Oboznámenie bolo naplánované na zverejnenie! title: Oboznámenia + unpublish: Zruš zverejnenie custom_emojis: assign_category: Priraď kategóriu by_domain: Doména @@ -299,9 +306,17 @@ sk: updated_msg: Emoji bolo úspešne aktualizované! upload: Nahraj dashboard: + active_users: aktívni užívatelia + media_storage: Úložisko médií + new_users: noví užívatelia + opened_reports: otvorené hlásenia + resolved_reports: vyriešené hlásenia software: Softvér space: Využitie miesta title: Spravovacie rozhranie + top_languages: Hlavne aktívne jazyky + top_servers: Hlavne aktívne servery + website: Webová stránka domain_allows: add_new: Povolená doména created_msg: Doména bola úspešne povolená @@ -376,6 +391,7 @@ sk: by_domain: Doména delivery: all: Všetko + unavailable: Nedostupné warning: Upozornenie delivery_available: Je v dosahu doručovania known_accounts: @@ -405,6 +421,7 @@ sk: title: Pozvánky ip_blocks: add_new: Vytvor pravidlo + created_msg: Nové IP pravidlo úspešne pridané delete: Vymaž expires_in: '1209600': 2 týždne @@ -415,8 +432,8 @@ sk: '94670856': 3 roky new: title: Vytvor nové IP pravidlo - pending_accounts: - title: Čakajúcich účtov (%{count}) + no_ip_block_selected: Žiadne IP pravidlá neboli zmenené, keďže si žiadne nemal/a zvolené + title: pravidlá pre IP adresy relationships: title: Vzťahy užívateľa %{acct} relays: @@ -438,29 +455,29 @@ sk: report_notes: created_msg: Poznámka o nahlásení úspešne vytvorená! destroyed_msg: Poznámka o nahlásení úspešne vymazaná! + today_at: Dnes o %{time} reports: - account: - reports: - few: "%{count} hlásení" - many: "%{count} hlásenia" - one: "%{count} hlásenie" - other: "%{count} hlásení" action_taken_by: Zákrok vykonal/a are_you_sure: Si si istý/á? assign_to_self: Priraď sebe assigned: Priradený moderátor by_target_domain: Doména nahláseného účtu + category: Kategória comment: none: Žiadne created_at: Nahlásené + forwarded: Preposlané + forwarded_to: Preposlané na %{domain} mark_as_resolved: Označiť ako vyriešené mark_as_unresolved: Označ ako nevyriešené + no_one_assigned: Nikoho notes: create: Pridaj poznámku create_and_resolve: Vyrieš s poznámkou create_and_unresolve: Otvor znovu, s poznámkou delete: Vymaž placeholder: Opíš aké opatrenia boli urobené, alebo akékoľvek iné súvisiace aktualizácie… + title: Poznámky reopen: Znovu otvor report report: 'Nahlásiť #%{id}' reported_account: Nahlásený účet @@ -468,6 +485,7 @@ sk: resolved: Vyriešené resolved_msg: Hlásenie úspešne vyriešené! status: Stav + statuses: Nahlásený obsah title: Hlásenia unassign: Odober unresolved: Nevyriešené @@ -563,15 +581,9 @@ sk: destroyed_msg: Nahratie bolo zo stránky úspešne vymazané! statuses: back_to_account: Späť na účet - batch: - delete: Vymaž - nsfw_off: Označ ako nechúlostivé - nsfw_on: Označ ako chúlostivé deleted: Vymazané - failed_to_execute: Nepodarilo sa vykonať media: title: Médiá - no_media: Žiadné médiá no_status_selected: Žiadne príspevky neboli zmenené, keďže si žiadne nemal/a zvolené title: Príspevky na účte with_media: S médiami @@ -580,21 +592,27 @@ sk: action: Spravuj serverové pravidlá message_html: Neurčil/a si žiadne serverové pravidlá. tags: - accounts_today: Jedinečných užívateľov za dnešok - accounts_week: Jedinečných užívateľov tento týždeň - breakdown: Rozpis dnešného využitia podľa zdroja - last_active: Naposledy aktívny - most_popular: Najpopulárnejšie - most_recent: Najnovšie - name: Haštag review: Prehodnoť stav - reviewed: Zhodnotené - title: Haštagy - trending_right_now: Práve populárne - unique_uses_today: "%{count} dnes prispievajú" - unreviewed: Neposúdené updated_msg: Nastavenia haštagov boli úspešne aktualizované title: Spravovanie + trends: + allow: Povoľ + approved: Povolené + disallow: Zakáž + links: + allow: Povoľ odkaz + allow_provider: Povoľ zverejňovateľa + disallow: Zakáž odkaz + disallow_provider: Zákaž zverejňovateľa + title: Populárne odkazy + preview_card_providers: + title: Zverejňovatelia + rejected: Odmietnuté + tags: + title: Populárne štítky + trending_rank: 'Populárne #%{rank}' + usable: Môže byť použitý + title: Trendy warning_presets: add_new: Pridaj nové delete: Vymaž @@ -608,8 +626,6 @@ sk: body: "%{reporter} nahlásil/a %{target}" body_remote: Niekto z %{domain} nahlásil/a %{target} subject: Nové hlásenie pre %{instance} (#%{id}) - new_trending_tag: - subject: Nový haštag očakáva preverenie na %{instance} (#%{name}) aliases: add_new: Vytvor alias created_msg: Nový alias úspešne vytvorený. Teraz môžeš začať presun zo starého účtu. @@ -794,7 +810,6 @@ sk: changes_saved_msg: Zmeny boli úspešne uložené! copy: Kopíruj delete: Vymaž - no_batch_actions_available: Na tejto stránke niesú k dispozícii žiadne hromadné akcie order_by: Zoraď podľa save_changes: Ulož zmeny validation_errors: @@ -804,28 +819,6 @@ sk: other: Niečo ešte nieje celkom v poriadku! Prosím skontroluj %{count} chyby uvedené nižšie html_validator: invalid_markup: 'obsahuje neplatný HTML kód: %{error}' - identity_proofs: - active: Aktívne - authorize: Áno, povoľ - authorize_connection_prompt: Povoliť toto kryptografické prepojenie? - errors: - failed: Kryptografické prepojenie sa nepodarilo. Prosím skús to znova z %{provider}. - keybase: - invalid_token: Keybase tokeny sú hašovaniami podpisov a musia mať 66 znakov - verification_failed: Keybase nerozpoznáva tento token ako podpis od Keybase užívateľa menom %{kb_username}. Prosím skús to znova cez Keybase. - wrong_user: Nemožno vytvoriť overenie pre %{proving}, pokiaľ si prihlásený/á ako %{current}. Prihlás sa za %{proving} a skús to znova. - explanation_html: |- - Tu si môžeš kryptograficky prepojiť svoje iné identity, ako napríklad tvoj profil na Keybase. - Umožňuje to ostatním ľudom posielať ti enkryptované správy a veriť obsahu ktorý im pošleš ty. - i_am_html: Na %{service} som %{username}. - identity: Identita - inactive: Neaktívne - publicize_checkbox: 'A poslať toto:' - publicize_toot: 'Je to dokázané! Na %{service} som %{username}: %{url}' - remove: Odstrániť z účtu dôkaz - removed: Dôkaz z účtu úspešne odstránený - status: Stav overenia - view_proof: Ukáž overenie imports: errors: over_rows_processing_limit: obsahuje viac než %{count} riadkov @@ -1064,7 +1057,6 @@ sk: edit_profile: Uprav profil export: Exportuj dáta featured_tags: Zvýraznené haštagy - identity_proofs: Overenia identity import: Importuj import_and_export: Import a export migrate: Presuň účet @@ -1090,13 +1082,11 @@ sk: other: 'obsahoval nepovolené haštagy: %{tags}' errors: in_reply_not_found: Príspevok, na ktorý sa snažíš odpovedať, už pravdepodobne neexistuje. - language_detection: Zisti automaticky open_in_web: Otvor v okne na webe over_character_limit: limit %{max} znakov bol presiahnutý pin_errors: limit: Už si si pripol ten najvyšší možný počet hlášok ownership: Nieje možné pripnúť hlášku od niekoho iného - private: Neverejný príspevok nemôže byť pripnutý reblog: Vyzdvihnutie sa nedá pripnúť poll: total_people: @@ -1121,6 +1111,10 @@ sk: public_long: Všetci môžu vidieť unlisted: Nezaradené unlisted_long: Všetci môžu vidieť, ale nieje zaradené do verejnej osi + statuses_cleanup: + keep_pinned: Ponechaj pripnuté príspevky + keep_pinned_hint: Nevymaže žiadne s tvojich pripnutých príspevkov + keep_self_bookmark: Ponechaj príspevky, ktoré sú záložkami stream_entries: pinned: Pripnutý príspevok reblogged: vyzdvihli @@ -1180,13 +1174,7 @@ sk: subject: Prosím potvrď pokus o prihlásenie title: Pokus o prihlásenie warning: - explanation: - disable: Pokiaľ je tvoj účet zamrazený, tvoje dáta zostávajú nedoknuté, ale nemôžeš v rámci neho nič robiť, až kým nebude odomknutý. - silence: Kým máš účet obmedzený, tvoje príspevky na tomto serveri uvidia iba tí ľudia, ktorí ťa už následujú, a môžeš byť vylúčený/á z rôznych verejných záznamov. Ostatní ťa však stále budú môcť následovať manuálne. - suspend: Tvoj účet bol vylúčený, a všetky tvoje príspevky a nahraté médiálné súbory boli nenávratne zmazané z tohto serveru, a zo serverov na ktorých si mal následovateľov. - get_in_touch: Môžeš na tento email odpovedať, pre skontaktovanie sa s tímom %{instance}. review_server_policies: Prehodnoť pravidlá servera - statuses: 'Konkrétne kvôli:' subject: disable: Tvoj účet %{acct} bol zamrazený none: Varovanie pre %{acct} diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 05420b18c..6b03de475 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -7,9 +7,11 @@ sl: active_count_after: dejaven active_footnote: Aktivni mesečni uporabniki (AMU) administered_by: 'Upravlja:' + api: API (programerski vmesnik aplikacije) apps: Mobilne aplikacije apps_platforms: Uporabljajte Mastodon iz iOS, Android ali iz drugih platform browse_directory: Brskajte po imeniku profilov in filtriranje po interesih + browse_local_posts: Prebrskaj živi tok javnih objav s tega strežnika browse_public_posts: Brskajte javnih objav v živo na Mastodonu contact: Kontakt contact_missing: Ni nastavljeno @@ -24,6 +26,8 @@ sl: Uporablja se za namene federacije in se ne blokira, če ne želite blokirati celotne instance. V tem primeru blokirajte domeno. learn_more: Nauči se več privacy_policy: Pravilnik o zasebnosti + rules: Pravila strežnika + rules_html: 'Spodaj je povzetek pravil, ki jim morate slediti, če želite imeti račun na tem strežniku Mastodon:' see_whats_happening: Poglejte, kaj se dogaja server_stats: 'Statistika strežnika:' source_code: Izvorna koda @@ -35,6 +39,11 @@ sl: status_count_before: Ki so avtorji tagline: Sledite prijateljem in odkrijte nove terms: Pogoji storitve + unavailable_content: Moderirani strežniki + unavailable_content_description: + domain: Strežnik + reason: Razlog + silenced_title: Omejeni strežniki user_count_after: few: uporabniki one: uporabnik @@ -86,7 +95,6 @@ sl: destroyed_msg: Moderirana opomba je uspešno uničena! accounts: approve: Odobri - approve_all: Odobri vse are_you_sure: Ali ste prepričani? avatar: Podoba by_domain: Domena @@ -100,6 +108,8 @@ sl: confirm: Potrdi confirmed: Potrjeno confirming: Potrjujem + custom: Po meri + delete: Izbriši podatke deleted: Izbrisano demote: Degradiraj disable: Onemogoči @@ -116,7 +126,9 @@ sl: follows: Sledi header: Glava inbox_url: URL mape "Prejeto" + invite_request_text: Razlogi za pridružitev invited_by: Povabljen od + ip: IP joined: Pridružil location: all: Vse @@ -130,7 +142,6 @@ sl: active: Dejaven all: Vse pending: Na čakanju - silenced: Utišan suspended: Suspendiran title: Moderiranje moderation_notes: Opombe moderiranja @@ -147,7 +158,6 @@ sl: push_subscription_expires: Naročnina PuSH preteče redownload: Osveži profil reject: Zavrni - reject_all: Zavrni vse remove_avatar: Odstrani podobo remove_header: Odstrani glavo resend_confirmation: @@ -160,9 +170,14 @@ sl: role: Dovoljenja roles: admin: Skrbnik + moderator: Moderator staff: Osebje user: Uporabnik search: Iskanje + search_same_email_domain: Drugi uporabniki z isto domeno e-pošte + search_same_ip: Drugi uporabniki z istim IP + security_measures: + only_password: Samo geslo shared_inbox_url: URL mape "Prejeto v skupni rabi" show: created_reports: Narejene prijave @@ -172,33 +187,65 @@ sl: statuses: Stanja subscribe: Naroči suspended: Suspendiran - time_in_queue: Čakanje v vrsti %{time} title: Računi unconfirmed_email: Nepotrjena e-pošta undo_silenced: Razveljavi utišanje undo_suspension: Razveljavi suspendiranje unsubscribe: Odjavi se od naročnine username: Uporabniško ime + view_domain: Pokaži povzetek za domeno warn: Opozori web: Splet whitelisted: Na belem seznamu action_logs: + action_types: + approve_user: Odobri uporabnika + assigned_to_self_report: Dodeli poročilo + change_email_user: Spremeni e-poštni naslov uporabnika + confirm_user: Potrdi uporabnika + create_account_warning: Ustvari opozorilo + create_announcement: Ustvari obvestilo + create_ip_block: Ustvari pravilo IP + create_unavailable_domain: Ustvari domeno, ki ni na voljo + destroy_announcement: Izbriši obvestilo + destroy_ip_block: Izbriši pravilo IP + destroy_status: Izbriši objavo + disable_user: Onemogoči uporabnika + enable_user: Omogoči uporabnika + reject_user: Zavrni uporabnika + remove_avatar_user: Odstrani avatar + reopen_report: Ponovno odpri prijavo + reset_password_user: Ponastavi geslo + silence_account: Omeji račun + update_status: Posodobi objavo deleted_status: "(izbrisano stanje)" title: Dnevnik revizije + announcements: + new: + title: Novo obvestilo + publish: Objavi + published_msg: Obvestilo je bilo uspešno objavljeno! + title: Obvestila + unpublish: Umakni iz objave custom_emojis: + assign_category: Dodeli kategorijo by_domain: Domena copied_msg: Lokalna kopija emotikonov je bila uspešno ustvarjena copy: Kopiraj copy_failed_msg: Lokalne kopije emotikonov ni bilo mogoče ustvariti + create_new_category: Ustvari novo kategorijo created_msg: Emotikon je uspešno ustvarjen! delete: Izbriši destroyed_msg: Emotikon je uspešno uničen! disable: Onemogoči + disabled: Onemogočeno disabled_msg: Ta emotikon je uspešno onemogočen emoji: Emotikon enable: Omogoči + enabled: Omogočeno enabled_msg: Ta emotikon je uspešno omogočen image_hint: PNG do 50KB + list: Seznam listed: Navedeno new: title: Dodaj nove emotikone @@ -206,6 +253,7 @@ sl: shortcode: Kratka koda shortcode_hint: Najmanj 2 znaka, samo alfanumerični znaki in podčrtaji title: Emotikoni po meri + uncategorized: Brez kategorije unlisted: Neuvrščeni update_failed_msg: Tega emotikona ni bilo mogoče posodobiti updated_msg: Emotikon je uspešno posodobljen! @@ -214,6 +262,7 @@ sl: software: Programska oprema space: Uporaba prostora title: Nadzorna plošča + website: Spletišče domain_allows: add_new: Dodaj domeno na beli seznam created_msg: Domena je bila uspešno dodana na beli seznam @@ -224,6 +273,7 @@ sl: created_msg: Domenski blok se sedaj obdeluje destroyed_msg: Domenski blok je bil razveljavljen domain: Domena + edit: Uredi domenski blok existing_domain_block_html: Uvedli ste strožje omejitve za %{name}, sedaj ga morate najprej <a href="%{unblock_url}">odblokirati</a>. new: create: Ustvari blok @@ -234,6 +284,8 @@ sl: silence: Utišaj suspend: Suspendiraj title: Nov domenski blok + private_comment: Zasebni komentar + public_comment: Javni komentar reject_media: Zavrni predstavnostne datoteke reject_media_hint: Odstrani lokalno shranjene predstavnostne datoteke in zavrača prenašanje le-teh v prihodnosti. Za suspenzije ni pomembno reject_reports: Zavrnjene prijave @@ -265,8 +317,18 @@ sl: create: Dodaj domeno title: Nov vnos e-pošte na črni seznam title: Črni seznam e-pošt + follow_recommendations: + language: Za jezik + status: Stanje instances: + back_to_all: Vse + back_to_limited: Omejeno + back_to_warning: Opozorilo by_domain: Domena + delivery: + all: Vse + unavailable: Ni na voljo + warning: Opozorilo delivery_available: Na voljo je dostava known_accounts: few: "%{count} znani računi" @@ -277,6 +339,8 @@ sl: all: Vse limited: Omejeno title: Moderiranje + private_comment: Zasebni komentar + public_comment: Javni komentar title: Federacija total_blocked_by_us: Blokirano iz naše strani total_followed_by_them: Oni ti sledijo @@ -290,8 +354,18 @@ sl: available: Razpoložljivo expired: Potekel title: Povabila - pending_accounts: - title: "(%{count}) računov na čakanju" + ip_blocks: + add_new: Ustvari pravilo + delete: Izbriši + expires_in: + '1209600': 2 tedna + '15778476': 6 mesecev + '2629746': 1 mesec + '31556952': 1 leto + '86400': 1 dan + '94670856': 3 leta + new: + title: Ustvari novo pravilo IP relays: add_new: Dodaj nov rele delete: Izbriši @@ -315,17 +389,20 @@ sl: are_you_sure: Ali ste prepričani? assign_to_self: Dodeli meni assigned: Dodeljen moderator + category: Kategorija comment: none: Brez created_at: Prijavljeno mark_as_resolved: Označi kot rešeno mark_as_unresolved: Označi kot nerešeno + no_one_assigned: Nihče notes: create: Dodaj opombo create_and_resolve: Razreši z opombo create_and_unresolve: Ponovo odpri z opombo delete: Izbriši placeholder: Opišite dejanja, ki ste jih izvedli, ali katere koli druge posodobitve... + title: Zapiski reopen: Ponovno odpri prijavo report: 'Prijavi #%{id}' reported_account: Prijavljeni račun @@ -337,6 +414,13 @@ sl: unassign: Odstopljeni unresolved: Nerešeni updated_at: Posodobljeni + view_profile: Pokaži profil + rules: + add_new: Dodaj pravilo + delete: Izbriši + edit: Uredi pravilo + empty: Zaenkrat še ni opredeljenih pravil. + title: Pravila strežnika settings: activity_api_enabled: desc_html: Številke lokalno objavljenih stanj, aktivnih uporabnikov in novih registracij na tedenskih seznamih @@ -407,22 +491,26 @@ sl: desc_html: Prikaži javno časovnico na ciljni strani title: Predogled časovnice title: Nastavitve strani + trends: + title: Trendi statuses: back_to_account: Nazaj na stran računa - batch: - delete: Izbriši - nsfw_off: Označi, da ni občutljivo - nsfw_on: Označi, kot občutljivo - failed_to_execute: Ni bilo mogoče izvesti + deleted: Izbrisano media: title: Mediji - no_media: Ni medijev no_status_selected: Nobeno stanje ni bilo spremenjeno, ker ni bilo izbrano nobeno title: Stanja računa with_media: Z mediji - tags: - title: Ključniki title: Upravljanje + trends: + allow: Dovoli + approved: Odobren + disallow: Ne dovoli + tags: + dashboard: + tag_languages_dimension: Naj jeziki + tag_servers_dimension: Naj strežniki + title: Trendi warning_presets: add_new: Dodaj novo delete: Izbriši @@ -441,6 +529,10 @@ sl: advanced_web_interface_hint: 'Če želite uporabiti celotno širino zaslona, vam napredni spletni vmesnik omogoča, da si nastavite več različnih stolpcev in da si hkrati ogledate toliko informacij, kot želite: domačo stran, obvestila, združeno časovnico, poljubno število seznamov in ključnikov.' animations_and_accessibility: Animacije in dostopnost confirmation_dialogs: Potrditvena okna + localization: + body: Mastodon prevajamo prostovoljci. + guide_link: https://crowdin.com/project/mastodon + guide_link_text: Vsakdo lahko prispeva. sensitive_content: Občutljiva vsebina application_mailer: notification_preferences: Spremenite e-poštne nastavitve @@ -466,11 +558,15 @@ sl: didnt_get_confirmation: Niste prejeli navodil za potrditev? forgot_password: Ste pozabili svoje geslo? invalid_reset_password_token: Žeton za ponastavitev gesla je neveljaven ali je potekel. Zahtevajte novo. + log_in_with: Prijavi se s login: Prijava logout: Odjava migrate_account: Premakni se na drug račun migrate_account_html: Če želite ta račun preusmeriti na drugega, ga lahko <a href="%{path}">nastavite tukaj</a>. or_log_in_with: Ali se prijavite z + providers: + cas: CAS + saml: SAML register: Vpis registration_closed: "%{instance} ne sprejema novih članov" resend_confirmation: Ponovno pošlji navodila za potrditev @@ -486,6 +582,7 @@ sl: confirming: Čakanje na potrditev e-pošte. pending: Naše osebje preverja vašo prijavo. To lahko traja nekaj časa. Če bo vaša prijava odobrena, boste prejeli e-pošto. trouble_logging_in: Težave pri prijavi? + use_security_key: Uporabi varnostni ključ authorize_follow: already_following: Temu računu že sledite error: Na žalost je prišlo do napake pri iskanju oddaljenega računa @@ -536,6 +633,7 @@ sl: request: Zahtevajte svoj arhiv size: Velikost blocks: Blokirate + bookmarks: Zaznamki domain_blocks: Bloki domene lists: Seznami mutes: Utišate @@ -546,6 +644,7 @@ sl: limit: Ste že dodali največje število ključnikov filters: contexts: + account: Profili home: Domača časovnica notifications: Obvestila public: Javne časovnice @@ -564,12 +663,16 @@ sl: developers: Razvijalci more: Več… resources: Viri + trending_now: Zdaj v trendu generic: all: Vse changes_saved_msg: Spremembe so uspešno shranjene! copy: Kopiraj + delete: Izbriši + none: Brez order_by: Razvrsti po save_changes: Shrani spremembe + today: danes validation_errors: few: Nekaj še ni čisto v redu! Spodaj si oglejte %{count} napake one: Nekaj še ni čisto v redu! Spodaj si oglejte napako @@ -577,24 +680,6 @@ sl: two: Nekaj še ni čisto v redu! Spodaj si oglejte %{count} napaki html_validator: invalid_markup: 'vsebuje neveljavno oznako HTML: %{error}' - identity_proofs: - active: Dejaven - authorize: Da, odobri - authorize_connection_prompt: Odobrite to kriptografsko povezavo? - errors: - failed: Kriptografska povezava ni uspela. Poskusite znova od %{provider}. - keybase: - invalid_token: Žetoni Keybase so algoritem podpisov in morajo biti sestavljeni iz 66 heksadecimalnih znakov - verification_failed: Keybase ne prepozna tega žetona kot podpis uporabnika %{kb_username}. Poskusite znova s Keybase-om. - wrong_user: Dokler se prijavite kot %{current}, ni mogoče ustvariti dokazila za %{proving}. Prijavite se kot %{proving} in poskusite znova. - explanation_html: Tukaj lahko kriptografsko povežete druge identitete, na primer profil Keybase. To omogoča drugim, da vam pošljejo šifrirana sporočila in zaupate vsebino, ki ste jo poslali. - i_am_html: Jaz sem %{username} na %{service}. - identity: Identiteta - inactive: Neaktiven - publicize_checkbox: 'In to tutnite:' - publicize_toot: 'Dokazano je! Jaz sem %{username} na %{service}: %{url}' - status: Stanje preverjanja - view_proof: Oglejte si dokaz imports: modes: merge: Združi @@ -605,6 +690,7 @@ sl: success: Vaši podatki so bili uspešno naloženi in bodo zdaj pravočasno obdelani types: blocking: Seznam blokiranih + bookmarks: Zaznamki domain_blocking: Seznam blokiranih domen following: Seznam uporabnikov, katerim sledite muting: Seznam utišanih @@ -637,6 +723,10 @@ sl: lists: errors: limit: Dosegli ste največje število seznamov + login_activities: + authentication_methods: + password: geslo + webauthn: varnostni ključi media_attachments: validations: images_and_video: Videoposnetka ni mogoče priložiti stanju, ki že vsebuje slike @@ -732,6 +822,9 @@ sl: reply: proceed: Nadaljuj z odgovorom prompt: 'Ali želite odgovoriti na ta tut:' + reports: + errors: + invalid_rules: se ne sklicuje na veljavna pravila scheduled_statuses: over_daily_limit: Za ta dan ste presegli omejitev %{limit} načrtovanih tutov over_total_limit: Presegli ste omejitev %{limit} načrtovanih tutov @@ -740,16 +833,40 @@ sl: activity: Zadnja dejavnost browser: Brskalnik browsers: + alipay: Alipay blackberry: BlackBerry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox generic: Neznan brskalnik + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Brskalnik Nokia S40 Ovi + opera: Opera + otter: Otter + phantom_js: PhantomJS + qq: QQ Browser + safari: Safari uc_browser: UC Browser + weibo: Weibo current_session: Trenutna seja description: "%{browser} na %{platform}" explanation: To so spletni brskalniki, ki so trenutno prijavljeni v vaš Mastodon račun. + ip: IP platforms: + adobe_air: Adobe Air + android: Android blackberry: BlackBerry + chrome_os: Chrome OS + firefox_os: Firefox OS + ios: iOS + linux: Linux mac: Mac other: neznana platforma + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone revoke: Prekliči revoke_success: Seja je bila uspešno preklicana title: Seje @@ -764,7 +881,6 @@ sl: edit_profile: Uredi profil export: Izvoz podatkov featured_tags: Vključeni ključniki - identity_proofs: Dokazi o identiteti import: Uvozi import_and_export: Uvoz in izvoz migrate: Selitev računa @@ -773,6 +889,7 @@ sl: profile: Profil relationships: Sledenja in sledilci two_factor_authentication: Dvofaktorsko overjanje + webauthn_authentication: Varnostni ključi statuses: attached: description: 'Priloženo: %{attached}' @@ -793,13 +910,12 @@ sl: one: 'vsebuje nedovoljeni ključnik: %{tags}' other: 'vsebuje nedovoljenih ključnikov: %{tags}' two: 'vsebuje nedovoljena ključnika: %{tags}' - language_detection: Samodejno zaznaj jezik + edited_at: Urejeno %{date} open_in_web: Odpri na spletu over_character_limit: omejitev %{max} znakov je presežena pin_errors: limit: Pripeli ste največje število tutov ownership: Trob nekoga drugega ne more biti pripet - private: Nejavnega troba ni mogoče pripeti reblog: Spodbuda ne more biti pripeta poll: total_votes: @@ -817,6 +933,18 @@ sl: public_long: Vsi lahko vidijo unlisted: Ni prikazano unlisted_long: Vsi lahko vidijo, vendar ni objavljeno na javnih časovnicah + statuses_cleanup: + keep_polls: Ohrani ankete + keep_polls_hint: Ne izbriše vaših anket + min_age: + '1209600': 2 tedna + '15778476': 6 mesecev + '2629746': 1 mesec + '31556952': 1 leto + '5259492': 2 meseca + '63113904': 2 leti + '7889238': 3 mesece + min_age_label: Starostna meja stream_entries: pinned: Pripet trob reblogged: spodbujen @@ -909,7 +1037,9 @@ sl: default: Mastodon (Temna) mastodon-light: Mastodon (Svetla) two_factor_authentication: + add: Dodaj disable: Onemogoči + edit: Uredi enabled: Dvofaktorsko preverjanje pristnosti je omogočeno enabled_success: Dvofaktorsko preverjanje pristnosti je uspešno omogočeno generate_recovery_codes: Ustvari kode za obnovitev @@ -917,16 +1047,16 @@ sl: recovery_codes: Varnostna kopija obnovitvenih kod recovery_codes_regenerated: Obnovitvene kode so bile uspešno regenerirane recovery_instructions_html: Če kdaj izgubite dostop do telefona, lahko uporabite eno od spodnjih obnovitvenih kod, da ponovno pridobite dostop do svojega računa. <strong>Shranite obnovitvene kode</strong>. Lahko jih natisnete in shranite z drugimi pomembnimi dokumenti. + webauthn: Varnostni ključi user_mailer: backup_ready: explanation: Zahtevali ste popolno varnostno kopijo računa Mastodon. Zdaj je pripravljen za prenos! subject: Vaš arhiv je pripravljen za prenos title: Prevzem arhiva + sign_in_token: + title: Poskus prijave warning: - explanation: - disable: Medtem ko je vaš račun zamrznjen, podatki vašega računa ostanejo nedotaknjeni, vendar ne morete izvajati nobenih dejanj, dokler ga ne odklenete. - silence: Medtem ko je vaš račun omejen, bodo na tem strežniku videli vaše tute samo osebe, ki vam že sledijo in morda boste izključeni iz različnih javnih seznamov. Vendar vam lahko še vedno ročno sledijo drugi. - suspend: Vaš račun je bil začasno ukinjen, vsi vaši tuti in naložene predstavnostne datoteke so bili nepovratno odstranjeni s tega strežnika in strežnikov, kjer ste imeli sledilce. + reason: 'Razlog:' review_server_policies: Preglejte pravilnike strežnika subject: disable: Vaš račun %{acct} je zamrznjen @@ -934,8 +1064,10 @@ sl: silence: Vaš račun %{acct} je omejen suspend: Vaš račun %{acct} je suspendiran title: + delete_statuses: Objave odstranjene disable: Račun je zamrznjen none: Opozorilo + sensitive: Mediji so skriti silence: Račun je omejen suspend: Račun je suspendiran welcome: @@ -958,9 +1090,16 @@ sl: users: follow_limit_reached: Ne morete spremljati več kot %{limit} ljudi invalid_otp_token: Neveljavna dvofaktorska koda + invalid_sign_in_token: Neveljavna varnostna koda otp_lost_help_html: Če ste izgubili dostop do obeh, stopite v stik z %{email} seamless_external_login: Prijavljeni ste prek zunanje storitve, tako da nastavitve gesla in e-pošte niso na voljo. signed_in_as: 'Vpisani kot:' verification: explanation_html: '<strong>V metapodatkih svojega profila se lahko potrdite kot lastnik povezav</strong>. Za to mora povezano spletno mesto vsebovati povezavo do vašega Mastodon profila. Povezava <strong>mora</strong> imeti atribut <code>el="me"</code>. Vsebina besedila povezave ni pomembna. Tukaj je primer:' verification: Potrditev + webauthn_credentials: + add: Dodaj nov varnostni ključ + delete: Izbriši + delete_confirmation: Ali ste prepričani, da želite izbrisati ta varnostni ključ? + 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 5c7e9c3fe..5ff75afee 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -99,7 +99,6 @@ sq: accounts: add_email_domain_block: Blloko përkatësi email approve: Miratojeni - approve_all: Miratojini krejt approved_msg: U miratua me sukses aplikimi për regjistrim të %{username} are_you_sure: Jeni i sigurt? avatar: Avatar @@ -114,6 +113,7 @@ sq: confirm: Ripohojeni confirmed: U ripohua confirming: Po ripohohet + custom: Vetjake delete: Fshiji të dhënat deleted: U fshi demote: Zhgradoje @@ -153,7 +153,6 @@ sq: active: Aktiv all: Krejt pending: Pezull - silenced: Të heshtuara suspended: Të pezulluara title: Moderim moderation_notes: Shënime moderimesh @@ -171,7 +170,6 @@ sq: redownload: Rifresko profilin redownloaded_msg: Profili i %{username} u rifreskua me sukses prej origjinës reject: Hidhe tej - reject_all: Hidhi krejt tej rejected_msg: Aplikimi për regjistrim i %{username} u hodh poshtë me sukses remove_avatar: Hiqe avatarin remove_header: Hiqe kryen @@ -206,12 +204,14 @@ sq: silence: Heshtoje silenced: E heshtuar statuses: Gjendje + strikes: Ndëshkime të mëparshme subscribe: Pajtomë 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ë. - time_in_queue: Pritje në radhë %{time} title: Llogari + unblock_email: Zhbllokoje adresën email + unblocked_email_msg: U zhbllokua me sukses adresa email e %{username} unconfirmed_email: Email i paripohuar undo_sensitized: Hiqja shenjën si rezervat undo_silenced: Zhbëje heshtjen @@ -226,6 +226,7 @@ sq: whitelisted: Lejuar për federim action_logs: action_types: + approve_user: Miratoje Përdoruesin assigned_to_self_report: Caktoji Raportim change_email_user: Ndrysho Email për Përdoruesin confirm_user: Ripohoje Përdoruesin @@ -243,6 +244,7 @@ sq: destroy_domain_allow: Fshi Lejim Përkatësie destroy_domain_block: Fshi Bllokim Përkatësie destroy_email_domain_block: Fshi bllokim përkatësie email-esh + destroy_instance: Spastroje Përkatësinë destroy_ip_block: Fshini Rregull IP destroy_status: Fshi Gjendje destroy_unavailable_domain: Fshi Përkatësi të Papërdorshme @@ -255,6 +257,7 @@ sq: enable_user: Aktivizo Përdorues memorialize_account: Bëje Llogari Përkujtimore promote_user: Promovojeni Përdoruesin + reject_user: Hidhe Poshtë Përdoruesin remove_avatar_user: Hiqe Avatarin reopen_report: Rihape Raportimin reset_password_user: Ricaktoni Fjalëkalimin @@ -263,6 +266,7 @@ sq: silence_account: Heshtoje Llogarinë suspend_account: Pezulloje Llogarinë unassigned_report: Hiqe Caktimin e Raportimit + unblock_email_account: Zhbllokoje adresën email unsensitive_account: Hiqjani shenjën si rezervat medias në llogarinë tuaj unsilence_account: Hiqe Heshtimin e Llogarisë unsuspend_account: Hiqe Pezullimin e Llogarisë @@ -271,6 +275,7 @@ sq: update_domain_block: Përditëso Bllok Përkatësish update_status: Përditëso Gjendjen actions: + 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}" confirm_user_html: "%{name} ripohoi adresën email të përdoruesit %{target}" @@ -288,6 +293,7 @@ sq: destroy_domain_allow_html: "%{name} hoqi lejimin për federim me %{target}" destroy_domain_block_html: "%{name} zhbllokoi përkatësinë %{target}" destroy_email_domain_block_html: "%{name} hoqi bllokimin për përkatësinë email %{target}" + destroy_instance_html: "%{name} spastroi përkatësinë %{target}" destroy_ip_block_html: "%{name} fshiu rregull për IP-në %{target}" destroy_status_html: "%{name} hoqi gjendje nga %{target}" destroy_unavailable_domain_html: "%{name} rinisi dërgimin drejt përkatësisë %{target}" @@ -300,6 +306,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_user_html: "%{name} hodhi poshtë regjistrimin nga %{target}" remove_avatar_user_html: "%{name} hoqi avatarin e %{target}" reopen_report_html: "%{name} rihapi raportimin %{target}" reset_password_user_html: "%{name} ricaktoi fjalëkalimi për përdoruesin %{target}" @@ -308,6 +315,7 @@ sq: silence_account_html: "%{name} heshtoi llogarinë e %{target}" suspend_account_html: "%{name} pezulloi llogarinë e %{target}" unassigned_report_html: "%{name} rihapi raportimin %{target}" + unblock_email_account_html: "%{name} zhbllokoi adresën email të %{target}" unsensitive_account_html: "%{name} ia hoqi shenjën si rezervat medias në %{target}" unsilence_account_html: "%{name} hoqi heshtimin për llogarinë %{target}" unsuspend_account_html: "%{name} hoqi pezullimin për llogarinë e %{target}" @@ -376,6 +384,15 @@ sq: media_storage: Depozitë media new_users: përdorues të rinj opened_reports: raportime të hapur + pending_reports_html: + one: "<strong>1</strong> raportim pezull" + other: "<strong>%{count}</strong> raportime pezull" + pending_tags_html: + one: "<strong>1</strong> hashtag pezull" + other: "<strong>%{count}</strong> hashtag-ë pezull" + pending_users_html: + one: "<strong>1</strong> përdorues pezull" + other: "<strong>%{count}</strong> përdorues pezull" resolved_reports: raportime të zgjidhur software: Software sources: Burime regjistrimi @@ -456,6 +473,7 @@ sq: back_to_limited: E kufizuar back_to_warning: Kujdes by_domain: Përkatësi + confirm_purge: Jeni i sigurt se doni të fshihen përgjithmonë të dhënat prej kësaj përkatësie? delivery: all: Krejt clear: Spastro gabime dërgimi @@ -471,6 +489,7 @@ sq: delivery_available: Ka shpërndarje të mundshme delivery_error_days: Ditë gabimi dështimi delivery_error_hint: Nëse dërgimi s’është i mundshëm për %{count} ditë, do t’i vihet shenjë automatikisht si i padërgueshëm. + destroyed_msg: Të dhënat prej %{domain} tani janë vënë në radhë për fshirje të menjëhershme. empty: S’u gjetën përkatësi. known_accounts: one: "%{count} llogari e njohur" @@ -481,6 +500,7 @@ sq: title: Moderim private_comment: Koment privat public_comment: Koment publik + purge: Spastroje title: Federim total_blocked_by_us: Bllokuar nga ne total_followed_by_them: Ndjekur prej tyre @@ -510,8 +530,6 @@ sq: title: Krijoni rregull IP të ri no_ip_block_selected: S’u ndryshua ndonjë rregull IP, ngaqë s’u përzgjodh ndonjë i tillë title: Rregulla IP - pending_accounts: - title: Llogari pezull (%{count}) relationships: title: Marrëdhënie të %{acct} relays: @@ -533,32 +551,44 @@ sq: report_notes: created_msg: Shënimi i raportimit u krijua me sukses! destroyed_msg: Shënimi i raportimit u fshi me sukses! + today_at: Sot më %{time} reports: account: notes: one: "%{count} shënim" other: "%{count} shënime" - reports: - one: "%{count} raportim" - other: "%{count} raportime" + action_log: Auditim regjistri action_taken_by: Veprimi i ndërmarrë nga + actions: + 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. + 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:' + add_to_report: Shtoni më tepër te raportimi are_you_sure: A jeni i sigurt? assign_to_self: Caktojani vetes assigned: Iu caktua moderator by_target_domain: Përkatësi e llogarisë së raportuar + category: Kategori + category_description_html: Arsyeja pse kjo llogari dhe/ose lëndë raportohet do të citohet te komunikimi me llogarinë e raportuar comment: 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 forwarded: U përcoll forwarded_to: U përcoll te %{domain} mark_as_resolved: Vëri shenjë si i zgjidhur mark_as_unresolved: Vëri shenjë si të pazgjidhur + no_one_assigned: Askush notes: create: Shtoni shënim create_and_resolve: Zgjidhe me shënim create_and_unresolve: Rihape me shënim delete: Fshije 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 reopen: Rihape raportimin report: 'Raportim #%{id}' reported_account: Llogari e raportuar @@ -566,11 +596,14 @@ sq: resolved: I zgjidhur resolved_msg: Raportimi u zgjidh me sukses! status: Gjendje + statuses: Lëndë e raportuar + statuses_description_html: Lënda problematike do të citohet në komunikimin me llogarinë e raportuar target_origin: Origjinë e llogarisë së raportuar title: Raportime unassign: Hiqja unresolved: Të pazgjidhur updated_at: U përditësua më + view_profile: Shihni profilin rules: add_new: Shtoni rregull delete: Fshije @@ -672,15 +705,12 @@ sq: destroyed_msg: Ngarkimi në sajt u fshi me sukses! statuses: back_to_account: Mbrapsht te faqja e llogarisë + back_to_report: Mbrapsht te faqja e raportimit batch: - delete: Fshije - nsfw_off: Vëri shenjë si jo rezervat - nsfw_on: Vëri shenjë si rezervat + remove_from_report: Hiqe prej raportimit deleted: E fshirë - failed_to_execute: S’u arrit të përmbushej media: title: Media - no_media: S’ka media no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë title: Gjendje llogarish with_media: Me media @@ -693,21 +723,49 @@ sq: sidekiq_process_check: message_html: S’ka proces Sidekiq në punë për %{value} radhë. Ju lutemi, shqyrtoni formësimin tuaj për Sidekiq-un tags: - accounts_today: Përdorime unike sot - accounts_week: Përdorime unike këtë javë - breakdown: Përdorimi sot, analizuar sipas burimesh - last_active: Aktive së fundi më - most_popular: Më populloret - most_recent: Më të rejat - name: Hashtag review: Gjendje rishikimi - reviewed: E shqyrtuar - title: Hashtag-ë - trending_right_now: Popullore mu tani - unique_uses_today: "%{count} postime sot" - unreviewed: E pashqyrtuar updated_msg: Rregullimet për hashtag-ët u përditësuan me sukses title: Administrim + trends: + allow: Lejojeni + approved: Miratuar + disallow: Mos e lejo + links: + allow: Lejoje lidhjen + allow_provider: Lejoje botuesin + disallow: Hiq lejimin e lidhjes + disallow_provider: Mos e lejo botuesin + shared_by_over_week: + one: Ndarë nga një person javën e kaluar + other: Ndarë nga %{count} persona javën e kaluar + title: Lidhje në modë + usage_comparison: Ndarë %{today} herë sot, kundrejt %{yesterday} dje + pending_review: Në pritje të shqyrtimit + preview_card_providers: + allowed: Lidhje prej këtij botuesi mund të përdoren + rejected: Lidhje prej këtij botuesi s’do të përdoren + title: Botues + rejected: Hedhur poshtë + tags: + dashboard: + tag_accounts_measure: përdorime unike + tag_languages_dimension: Gjuhë kryesuese + tag_servers_dimension: Shërbyes kryesues + tag_servers_measure: shërbyes të ndryshëm + tag_uses_measure: përdorime gjithsej + listable: Mund të sugjerohet + not_listable: S’do të sugjerohet + not_trendable: S’do të shfaqet nën të modës + not_usable: S’mund të përdoret + peaked_on_and_decaying: Kulmoi më %{date}, tani në rënie + title: Hashtag-ë në modë + trendable: Mund të shfaqet nën të modës + usable: Mund të përdoret + usage_comparison: Përdorur %{today} herë sot, krahasuar me %{yesterday} dje + 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 + title: Në modë warning_presets: add_new: Shtoni të ri delete: Fshije @@ -722,9 +780,13 @@ sq: body: "%{reporter} ka raportuar %{target}" body_remote: Dikush nga %{domain} ka raportuar %{target} subject: Raportim i ri për %{instance} (#%{id}) - new_trending_tag: - body: 'Hashtag-u #%{name} është popullor sot, por s’është shqyrtuar më parë. S’do të shfaqet publikisht pa e lejuar ju, ose thjesht ruani formularin siç është, që të mos dëgjoni më për të.' - subject: Hashtag i ri për shqyrtim te %{instance} (#%{name}) + new_trending_links: + body: Lidhjet vijuese janë në modë sot, por botuesit e tyre nuk janë shqyrtuar më herët. Nuk do të shfaqen publikisht, veç në i miratofshi. S’do të prodhohen njoftime të mëtejshme për të njëjtë botues. + no_approved_links: Aktualisht nuk ka lidhje në modë të miratuara. + subject: Lidhje të reja në modë për shqyrtim te %{instance} + 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. 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. @@ -776,6 +838,7 @@ sq: invalid_reset_password_token: Token-i i ricaktimit të fjalëkalimit është i pavlefshëm ose ka skaduar. Ju lutemi, kërkoni një të ri. link_to_otp: Jepni një kod mirëfilltësimi dyfaktorësh prej telefonit tuaj ose një kod rimarrjeje link_to_webauth: Përdorni pajisjen tuaj të kyçeve të sigurisë + log_in_with: Hyni me login: Hyni logout: Dalje migrate_account: Kaloni në një tjetër llogari @@ -931,34 +994,15 @@ sq: changes_saved_msg: Ndryshimet u ruajtën me sukses! copy: Kopjoje delete: Fshije - no_batch_actions_available: Në këtë faqe s’ka veprime masive gati + none: Asnjë order_by: Renditi sipas save_changes: Ruaji ndryshimet + today: sot validation_errors: one: Diçka s’është ende si duhet! Ju lutemi, shqyrtoni gabimin më poshtë other: Diçka s’është ende si duhet! Ju lutemi, shqyrtoni %{count} gabimet më poshtë html_validator: invalid_markup: 'përmban elementë HTML të pavlefshëm: %{error}' - identity_proofs: - active: Aktive - authorize: Po, autorizoje - authorize_connection_prompt: Të autorizohet kjo lidhje kriptografike? - errors: - failed: Lidhja kriptografike dështoi. Ju lutemi, riprovoni prej %{provider}. - keybase: - invalid_token: Token-ët Keybase janë hashe nënshkrimesh dhe duhet të jenë 66 shenja gjashtëmbëdhjetëshe - verification_failed: Keybase-i s’e njeh këtë token si një nënshkrim nga përdoruesi %{kb_username} i Keybase-it. Ju lutemi, riprovoni që prej Keybase-it. - wrong_user: S’mund të krijohet provë për %{proving} teksa është i futur si %{current}. Hyni si %{proving} dhe riprovoni. - explanation_html: Këtu mund të lidhni në mënyrë kriptografike identitetet tuaja të tjera prej platformash të tjera, bie fjala Keybase. Kjo u lejon të tjerëve t’ju dërgojnë mesazhe të fshehtëzuar në këto platforma dhe u lejon atyre të besojnë se lënda që u dërgoni vjen prej jush. - i_am_html: Jam %{username} në %{service}. - identity: Identitet - inactive: Jo aktiv - publicize_checkbox: 'Dhe cicëro këtë:' - publicize_toot: 'Është i provuar! Jam %{username} te %{service}: %{url}' - remove: Hiq provën prej llogarie - removed: Prova u hoq me sukses nga llogaria - status: Gjendje verifikimi - view_proof: Shihni provën imports: errors: over_rows_processing_limit: përmban më shumë se %{count} rreshta @@ -1232,7 +1276,6 @@ sq: edit_profile: Përpunoni profilin export: Eksportim të dhënash featured_tags: Hashtag-ë të zgjedhur - identity_proofs: Prova identiteti import: Importo import_and_export: Importim dhe eksportim migrate: Migrim llogarie @@ -1257,18 +1300,19 @@ sq: other: "%{count} video" boosted_from_html: Përforcuar nga %{acct_link} content_warning: 'Sinjalizim lënde: %{warning}' + default_language: Njësoj me gjuhën e ndërfaqes disallowed_hashtags: one: 'përmbante një hashtag të palejuar: %{tags}' other: 'përmbante hashtag-ë të palejuar: %{tags}' + edited_at: Përpunuar më %{date} errors: in_reply_not_found: Gjendja të cilës po provoni t’i përgjigjeni s’duket se ekziston. - language_detection: Pikase gjuhën vetvetiu open_in_web: Hape në internet over_character_limit: u tejkalua kufi shenjash prej %{max} pin_errors: + direct: Postimet që janë të dukshme vetëm për përdoruesit e përmendur s’mund të fiksohen limit: Keni fiksuar tashmë numrin maksimum të mesazheve ownership: S’mund të fiksohen mesazhet e të tjerëve - private: S’mund të fiksohet mesazh jopublik reblog: S’mund të fiksohet një përforcim poll: total_people: @@ -1423,6 +1467,7 @@ sq: formats: default: "%d %b, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Shtoje disable: Çaktivizoje @@ -1450,24 +1495,31 @@ sq: subject: Ju lutemi, ripohoni përpjekje hyrjeje title: Përpjekje hyrjeje warning: + categories: + spam: I padëshiruar + violation: Lënda cenon udhëzimet vijuese të bashkësisë explanation: - disable: Kur llogaria juaj është e ngrirë, të dhënat në llogarinë tuaj mbeten të paprekura, por s’mund të kryeni ndonjë veprim, para se të shkyçet. - sensitive: Kartelat tuaja media të ngarkuara dhe media e lidhur prej jush do të trajtohet si rezervat. - silence: Kur llogaria juaj është e kufizuar, mesazhet tuaj në këtë shërbyes do t’i shohin vetëm personat që ju ndjekin tashmë. dhe mund të liheni jashtë nga lista të ndryshme publike. Megjithatë, të tjerët prapë mund t’ju ndjekin dorazi. - suspend: Llogaria juaj është pezulluar, dhe krejt mesazhet tuaja dhe kartelat media të ngarkuara janë hequr në mënyrë të pakthyeshme nga ky shërbyes, dhe nga shërbyesit te të cilët kishit ndjekës. - get_in_touch: Që të lidheni me ekipin e %{instance}, mund t’i përgjigjeni këtij email-i. + delete_statuses: Për disa nga postimet tuaja është parë se cenojnë një ose më tepër udhëzime të bashkësisë dhe për pasojë janë hequr nga moderatorët e %{instance}. Cenime të ardhshme mund të sjellin veprime ndëshkimore më të ashpra kundër llogarisë tuaj. + disable: S’mund të përdorni më llogarinë tuaj, por profili juaj dhe të dhëna të tjera mbeten të paprekura. Mund të kërkoni një kopjeruajtje të të dhënave tuaja, të ndryshoni rregullime llogarie, ose të fshini llogarinë tuaj. + sensitive: Nga sot e tutje, krejt kartelave media të ngarkuara do t’u vihet shenjë si me spec dhe do të fshihen pas një sinjalizimi “klikojeni”. + silence: Mundeni ende të përdorni llogarinë tuaj, por vetëm personat që tashmë ju ndjekin do të shohin postimet tuaja në këtë shërbyes dhe mund të përjashtoheni nga veçori të ndryshme për zbulim lënde. Sidoqoftë, të tjerët mund t’ju ndjekin dorazi. + 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: 'Posaçërisht, për:' + statuses: 'Postime që janë gjetur me cenime:' subject: + delete_statuses: Postimet tuaja në %{acct} janë hequr disable: Llogaria juaj %{acct} është ngrirë none: Sinjalizim për %{acct} - sensitive: Medias postuar nga llogaria juaj %{acct} i është vënë shenjë si rezervat + sensitive: Nga sot e tutje, kartelave tuaja media në %{acct} do t’u vihet shenjë si me spec silence: Llogaria juaj %{acct} është kufizuar suspend: Llogaria juaj %{acct} është pezulluar title: + delete_statuses: Postime të hequra disable: Llogari e ngrirë none: Sinjalizim - sensitive: Medias tuaj i është vënë shenjë si rezervat + sensitive: Me media të fshehur silence: Llogari e kufizuar suspend: Llogari e pezulluar welcome: diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index e762126ad..261311b2a 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -59,7 +59,6 @@ sr-Latn: memorialize: Prebaci u in memoriam moderation: all: Svi - silenced: Ućutkani suspended: Suspendovani title: Moderacija moderation_notes: Moderatorske beleške @@ -219,14 +218,8 @@ sr-Latn: title: Postavke sajta statuses: back_to_account: Nazad na stranu naloga - batch: - delete: Obriši - nsfw_off: NSFW isključen - nsfw_on: NSFW uključen - failed_to_execute: Neuspelo izvršavanje media: title: Multimedija - no_media: Bez multimedije title: Statusi naloga with_media: Sa multimedijom title: Administracija @@ -428,7 +421,6 @@ sr-Latn: pin_errors: limit: Već imate prikačen najveći broj tutova ownership: Tuđi tutovi ne mogu da se prikače - private: Tutovi koji nisu javni ne mogu da se prikače reblog: Podrška ne može da se prikači show_more: Prikaži još visibilities: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index b6c92976a..2fdcd6854 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -109,7 +109,6 @@ sr: moderation: active: Активан all: Сви - silenced: Ућуткани suspended: Суспендовани title: Модерација moderation_notes: Модераторске белешке @@ -366,19 +365,11 @@ sr: title: Поставке сајта statuses: back_to_account: Назад на страну налога - batch: - delete: Обриши - nsfw_off: NSFW искључен - nsfw_on: NSFW укључен - failed_to_execute: Неуспело извршавање media: title: Мултимедија - no_media: Без мултимедије no_status_selected: Ниједан статус није промењен јер ниједан није изабран title: Статуси налога with_media: Са мултимедијом - tags: - title: Тараба title: Администрација warning_presets: add_new: Додај нови @@ -685,13 +676,11 @@ sr: few: 'садржи забрањене хештегове: %{tags}' one: 'садржи забрањени хештег: %{tags}' other: 'садржи забрањене хештегове: %{tags}' - language_detection: Аутоматскo откривање језика open_in_web: Отвори у вебу over_character_limit: ограничење од %{max} карактера прекорачено pin_errors: limit: Већ имате прикачен највећи број труба ownership: Туђе трубе не могу да се прикаче - private: Трубе које нису јавне не могу бити прикачене reblog: Подршка не може да се прикачи show_more: Прикажи још sign_in_to_participate: Пријавите се да учествујете у разговору @@ -727,10 +716,6 @@ sr: subject: Ваша архива је спремна за преузимање title: Извоз архиве warning: - explanation: - disable: Док је ваш рачун замрзнут, подаци о вашем рачуну остају нетакнути, али не можете вршити никакве радње док се не откључа. - silence: Иако је ваш налог ограничен, само људи који вас већ прате ће видети ваше трубе на овом серверу, и можда ћете бити искључени из различитих јавних листа. Међутим, други вас могу и даље ручно пратити. - suspend: Ваш налог је суспендован, а све ваше трубе и учитане медијске датотеке неповратно су уклоњени са овог сервера и сервера на којима сте имали следбенике. review_server_policies: Прегледај политику сервера subject: disable: Ваш налог %{acct} је замрзнут diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 44c794833..e103d535b 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -60,6 +60,7 @@ sv: one: Följare other: Följare following: Följer + instance_actor_flash: Detta konto är en virtuell aktör som används för att representera servern själv och inte någon enskild användare. Den används för federationsändamål och bör inte upphävas. joined: Gick med %{date} last_active: senast aktiv link_verified_on: Ägarskap för denna länk kontrollerades den %{date} @@ -96,7 +97,6 @@ sv: accounts: add_email_domain_block: Blockera e-postdomän approve: Godkänn - approve_all: Godkänn alla are_you_sure: Är du säker? avatar: Profilbild by_domain: Domän @@ -110,9 +110,11 @@ sv: confirm: Bekräfta confirmed: Bekräftad confirming: Bekräftande + custom: Anpassade delete: Radera data deleted: Raderad demote: Degradera + destroyed_msg: "%{username}'s data har nu lagts till kön för att raderas omedelbart" disable: inaktivera disable_two_factor_authentication: Inaktivera 2FA disabled: inaktiverad @@ -123,6 +125,7 @@ sv: email_status: E-poststatus enable: Aktivera enabled: Aktiverad + enabled_msg: Uppfrysningen av %{username}'s konto lyckades followers: Följare follows: Följs header: Rubrik @@ -139,11 +142,12 @@ sv: login_status: Inloggningsstatus media_attachments: Media bifogade filer memorialize: Förvandla till ett memoriam + memorialized: Memorialiserad + memorialized_msg: Omvandlingen av %{username} till ett minneskonto lyckades moderation: active: Aktiv all: Alla pending: Väntande - silenced: Tystas suspended: Avstängd title: Moderering moderation_notes: Moderation anteckning @@ -160,7 +164,6 @@ sv: push_subscription_expires: PuSH-prenumerationen löper ut redownload: Uppdatera profil reject: Förkasta - reject_all: Förkasta allt / Avvisa alla remove_avatar: Ta bort avatar remove_header: Ta bort rubrik resend_confirmation: @@ -191,10 +194,12 @@ sv: silence: Tystnad silenced: Tystad / Tystat statuses: Status + strikes: Föregående varningar subscribe: Prenumerera suspended: Avstängd / Avstängt - time_in_queue: Väntar i kö %{time} title: Konton + unblock_email: Avblockera e-postadress + unblocked_email_msg: "%{username}s e-postadress avblockerad" unconfirmed_email: Obekräftad E-postadress undo_silenced: Ångra tystnad undo_suspension: Ångra avstängning @@ -206,6 +211,7 @@ sv: whitelisted: Vitlistad action_logs: action_types: + approve_user: Godkänn användare assigned_to_self_report: Tilldela anmälan change_email_user: Ändra e-post för användare confirm_user: Bekräfta användare @@ -221,6 +227,7 @@ sv: destroy_custom_emoji: Radera egen emoji destroy_domain_allow: Ta bort tillåten domän destroy_domain_block: Ta bort blockerad domän + destroy_instance: Rensa domänen destroy_ip_block: Radera IP-regel destroy_status: Ta bort status destroy_unavailable_domain: Ta bort otillgänglig domän @@ -231,6 +238,7 @@ sv: enable_user: Aktivera användare memorialize_account: Minnesmärk konto promote_user: Befordra användare + reject_user: Avvisa användare remove_avatar_user: Ta bort avatar reopen_report: Öppna rapporten igen reset_password_user: Återställ lösenord @@ -238,6 +246,8 @@ sv: sensitive_account: Markera mediet i ditt konto som känsligt silence_account: Tysta konto suspend_account: Stäng av konto + unassigned_report: Återkalla rapport + unblock_email_account: Avblockera e-postadress unsuspend_account: Återaktivera konto update_announcement: Uppdatera meddelande update_custom_emoji: Uppdatera egna emojis @@ -247,6 +257,7 @@ sv: create_account_warning_html: "%{name} skickade en varning till %{target}" create_announcement_html: "%{name} skapade tillkännagivande %{target}" create_custom_emoji_html: "%{name} laddade upp ny emoji %{target}" + create_domain_block_html: "%{name} blockerade domänen %{target}" destroy_custom_emoji_html: "%{name} förstörde emoji %{target}" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" destroy_email_domain_block_html: "%{name} avblockerade e-postdomän %{target}" @@ -326,9 +337,20 @@ sv: updated_msg: Emoji uppdaterades utan problem! upload: Ladda upp dashboard: + active_users: aktiva användare + 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 domain_allows: add_new: Vitlistedomän created_msg: Domänen har vitlistats @@ -445,8 +467,6 @@ sv: title: Skapa ny IP-regel no_ip_block_selected: Inga IP-regler ändrades då inga var valda title: IP-regler - pending_accounts: - title: Väntande konton (%{count}) relationships: title: "%{acct}'s relationer" relays: @@ -469,14 +489,12 @@ sv: notes: one: "%{count} anteckning" other: "%{count} anteckningar" - reports: - one: "%{count} rapport" - other: "%{count} rapporter" action_taken_by: Åtgärder vidtagna av are_you_sure: Är du säker? assign_to_self: Tilldela till mig assigned: Tilldelad moderator by_target_domain: Domän för rapporterat konto + category: Kategori comment: none: Ingen created_at: Anmäld @@ -484,12 +502,14 @@ sv: forwarded_to: Vidarebefordrad till %{domain} mark_as_resolved: Markera som löst mark_as_unresolved: Markera som olöst + no_one_assigned: Ingen notes: create: Lägg till anteckning create_and_resolve: Lös med anteckning create_and_unresolve: Återuppta med anteckning delete: Radera 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}' reported_account: Anmält konto @@ -502,6 +522,7 @@ sv: unassign: Otilldela unresolved: Olösta updated_at: Uppdaterad + view_profile: Visa profil rules: add_new: Lägg till regel delete: Radera @@ -593,32 +614,15 @@ sv: delete: Radera uppladdad fil statuses: back_to_account: Tillbaka till kontosidan - batch: - delete: Radera - nsfw_off: Markera som ej känslig - nsfw_on: Markera som känslig deleted: Raderad - failed_to_execute: Misslyckades att utföra media: title: Media - no_media: Ingen media title: Kontostatus with_media: med media system_checks: rules_check: action: Hantera serverregler message_html: Du har inte definierat några serverregler. - tags: - accounts_today: Unika användare idag - accounts_week: Unika användare den här veckan - last_active: Senast aktiv - most_popular: Mest populära - most_recent: Nyligen skapade - name: Hashtag - reviewed: Granskad - title: Hashtaggar - trending_right_now: Trenderar just nu - unreviewed: Ej granskad title: Administration warning_presets: add_new: Lägg till ny @@ -634,6 +638,7 @@ sv: appearance: advanced_web_interface: Avancerat webbgränssnitt animations_and_accessibility: Animationer och tillgänglighet + confirmation_dialogs: Bekräftelsedialoger discovery: Upptäck localization: body: Mastodon översätts av volontärer. @@ -669,6 +674,7 @@ sv: forgot_password: Glömt ditt lösenord? invalid_reset_password_token: Lösenordsåterställningstoken är ogiltig eller utgått. Vänligen be om en ny. link_to_otp: Ange en tvåfaktor-kod från din telefon eller en återställningskod + log_in_with: Logga in med login: Logga in logout: Logga ut migrate_account: Flytta till ett annat konto @@ -685,8 +691,11 @@ sv: set_new_password: Skriv in nytt lösenord setup: email_settings_hint_html: Bekräftelsemeddelandet skickades till %{email}. Om den e-postadressen inte stämmer så kan du ändra den i kontoinställningarna. + title: Ställ in 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? @@ -748,7 +757,7 @@ sv: domain_validator: invalid_domain: är inte ett giltigt domännamn errors: - '400': The request you submitted was invalid or malformed. + '400': Förfrågningen som du skickade in var ogiltig eller felaktigt utformad. '403': Du har inte behörighet att visa den här sidan. '404': Sidan du letade efter existerar inte. '406': Den här sidan är inte tillgänglig i det förfrågade formatet. @@ -811,25 +820,14 @@ sv: validation_errors: one: Något är inte riktigt rätt ännu! Kontrollera felet nedan other: Något är inte riktigt rätt ännu! Kontrollera dom %{count} felen nedan - identity_proofs: - active: Aktiv - authorize: Ja, autentisera - authorize_connection_prompt: Autentisera den här kryptografiska anslutningen? - errors: - failed: Den kryptografiska anslutningen misslyckades. Vänligen försök igen från %{provider}. - i_am_html: Jag är %{username} på %{service}. - identity: Identitet - inactive: Inaktiv - publicize_checkbox: 'Och tuta det här:' - publicize_toot: 'Det är bevisat! Jag är %{username} på %{service}: %{url}' - remove: Ta bort bevis från konto - status: Bekräftelse-status - view_proof: Visa bevis imports: errors: over_rows_processing_limit: innehåller fler än %{count} rader modes: + merge: Slå ihop + merge_long: Behåll befintliga uppgifter och lägg till nya overwrite: Skriv över + overwrite_long: Ersätt de nuvarande uppgifterna med de nya preface: Du kan importera data som du exporterat från en annan instans, till exempel en lista över personer du följer eller blockerar. success: Dina uppgifter har laddats upp och kommer nu att behandlas snarast types: @@ -867,6 +865,7 @@ sv: login_activities: authentication_methods: password: lösenord + sign_in_token: säkerhetskod för e-post webauthn: säkerhetsnycklar description_html: Om du ser aktivitet som du inte känner igen, överväg att byta ditt lösenord och aktivera tvåfaktor-autentisering. media_attachments: @@ -883,6 +882,7 @@ sv: move_to_self: kan inte vara nuvarande konto not_found: kunde inte hittas on_cooldown: Du är på nerkylning + followers_count: Följare vid tidpunkten för flytten incoming_migrations: Flyttar från ett annat konto incoming_migrations_html: För att flytta från ett annat konto till det här så behöver du först <a href="%{path}">skapa ett konto-alias</a>. moved_msg: Ditt konto omdirigerar nu till %{acct} och dina följare flyttas över. @@ -894,6 +894,7 @@ sv: redirecting_to: Ditt konto omdirigerar till %{acct}. set_redirect: Konfigurera omdirigering warning: + backreference_required: Det nya kontot måste först vara konfigurerat till att bakåt-referera till det här before: 'Vänligen läs dessa anteckningar noggrant innan du fortsätter:' followers: Den här åtgärden kommer att flytta alla följare från det nuvarande kontot till det nya kontot other_data: Ingen annan data kommer att flyttas automatiskt @@ -957,7 +958,9 @@ sv: trillion: T otp_authentication: enable: Aktivera + instructions_html: "<strong>Skanna den här QR-koden i Google Authenticator eller en liknande TOTP-app i din telefon</strong>. Från och med nu så kommer den appen att generera symboler som du måste skriva in när du ska logga in." setup: Konfigurera + wrong_code: Den ifyllda koden är ogiltig! Är server-tiden och enhetens tid korrekt? pagination: newer: Nyare next: Nästa @@ -967,6 +970,7 @@ sv: polls: errors: already_voted: Du har redan röstat på den här undersökningen + duplicate_options: innehåller dublett-objekt duration_too_long: är för långt in i framtiden duration_too_short: är för tidigt expired: Undersökningen har redan avslutats @@ -1060,7 +1064,6 @@ sv: development: Utveckling edit_profile: Redigera profil export: Exportera data - identity_proofs: Identifiera bevisen import: Importera import_and_export: Import och export migrate: Kontoflytt @@ -1085,18 +1088,19 @@ sv: other: "%{count} videor" boosted_from_html: Boosted från %{acct_link} content_warning: 'Innehållsvarning: %{warning}' + default_language: Samma som användargränssnittet disallowed_hashtags: one: 'innehöll en otillåten hashtag: %{tags}' other: 'innehöll de otillåtna hashtagarna: %{tags}' + edited_at: 'Ändrad: %{date}' errors: in_reply_not_found: Statusen du försöker svara på existerar inte. - language_detection: Lista ut språk automatiskt open_in_web: Öppna på webben over_character_limit: teckengräns på %{max} har överskridits pin_errors: + direct: Inlägg som endast är synliga för nämnda användare kan inte fästas limit: Du har redan fäst det maximala antalet toots ownership: Någon annans toot kan inte fästas - private: Icke-offentliga toot kan inte fästas reblog: Knuffar kan inte fästas poll: total_people: @@ -1124,6 +1128,7 @@ sv: enabled: Ta automatiskt bort gamla inlägg exceptions: Undantag ignore_favs: Bortse från favoriter + interaction_exceptions: Undantag baserat på interaktioner keep_direct: Behåll direktmeddelanden keep_direct_hint: Tar inte bort någon av dina direktmeddelanden keep_media: Behåll inlägg med media-bilagor @@ -1241,6 +1246,7 @@ sv: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Lägg till disable: Inaktivera @@ -1265,7 +1271,7 @@ sv: further_actions: 'Om det inte var du, vänligen ändra ditt lösenord och aktivera tvåfaktor-autentisering i ditt konto. Du kan göra det här:' title: Inloggningsförsök warning: - statuses: 'Specifikt för:' + reason: 'Anledning:' subject: disable: Ditt konto %{acct} har blivit fruset none: Varning för %{acct} @@ -1274,7 +1280,6 @@ sv: title: disable: Kontot fruset none: Varning - sensitive: Ditt media har blivit markerat som känsligt silence: Kontot begränsat suspend: Kontot avstängt welcome: diff --git a/config/locales/ta.yml b/config/locales/ta.yml index b6c407388..40a915728 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -82,7 +82,6 @@ ta: accounts: add_email_domain_block: இம்மின்னஞ்சல் களத்தைத் தடுப்புப்பட்டியலில் சேர் approve: அங்கீகரி - approve_all: அனைத்தும் அங்கீகரி are_you_sure: நிச்சயமா? avatar: அவதாரம் by_domain: தளம் @@ -126,7 +125,6 @@ ta: active: அனுமதிக்கப்பட்டுள்ளது all: அனைத்தும் pending: நிலுவையில் உள்ளது - silenced: தடுக்கப்பட்டுள்ளது suspended: இடைநீக்கப்பட்டது title: மிதமானர் moderation_notes: நடுவர் கருத்து @@ -139,7 +137,6 @@ ta: protocol: நெறிமுறை public: பொது reject: விலக்கு - reject_all: அனைத்தையும் மறு remove_avatar: அவதாரத்தை நீக்குக resend_confirmation: already_confirmed: இப்பயனர் ஏற்கனவே உறுதி படுத்திவிட்டார் @@ -161,7 +158,6 @@ ta: silenced: அணைக்கப்பட்டது statuses: பதிவுகள் suspended: இடைநீக்கப்பட்டது - time_in_queue: வரிசையில் காத்திருக்கிறது %{time} title: கணக்குகள் username: பயனர் பெயர் warn: எச்சரி @@ -249,9 +245,6 @@ ta: notes: one: "%{count} குறிப்பு" other: "%{count} குறிப்புகள்" - reports: - one: "%{count} புகார்" - other: "%{count} புகார்கள்" comment: none: எதுவுமில்லை site_uploads: @@ -284,9 +277,6 @@ ta: empty: தடுப்புகள் ஏதும் இல்லை. generic: delete: நீக்கு - identity_proofs: - remove: ஆதாரத்தைக் கணக்கிலிருந்து நீக்கு - removed: ஆதாரம் கணக்கிலிருந்து வெற்றிகரமாக நீக்கப்பட்டது media_attachments: validations: not_ready: பதிவேற்றம் முடிவடையாத கோப்புகளை இணைக்க முடியாது. சிறிது நேரம் கழித்து மீண்டும் முயற்சி செய்யவும்! diff --git a/config/locales/te.yml b/config/locales/te.yml index 2030f02b7..08284b027 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -99,7 +99,6 @@ te: moderation: active: యాక్టివ్ all: అన్నీ - silenced: నిశ్శబ్ధం చేయబడింది suspended: నిషేధించబడింది title: మోడరేషన్ moderation_notes: మోడరేషన్ నోట్స్ diff --git a/config/locales/th.yml b/config/locales/th.yml index 8ef8cfda4..6745e015a 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1,7 +1,7 @@ --- th: about: - about_hashtag_html: มีการแท็กโพสต์สาธารณะเหล่านี้ด้วย <strong>#%{hashtag}</strong> คุณสามารถโต้ตอบกับโพสต์ได้หากคุณมีบัญชีที่ใดก็ตามในเฟดิเวิร์ส + about_hashtag_html: มีการแท็กโพสต์สาธารณะเหล่านี้ด้วย <strong>#%{hashtag}</strong> คุณสามารถโต้ตอบกับโพสต์ได้หากคุณมีบัญชีที่ใดก็ตามในจักรวาลสหพันธ์ about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!' about_this: เกี่ยวกับ active_count_after: ใช้งานอยู่ @@ -24,6 +24,7 @@ th: learn_more: เรียนรู้เพิ่มเติม privacy_policy: นโยบายความเป็นส่วนตัว rules: กฎของเซิร์ฟเวอร์ + rules_html: 'ด้านล่างคือข้อมูลสรุปของกฎที่คุณจำเป็นต้องปฏิบัติตามหากคุณต้องการมีบัญชีในเซิร์ฟเวอร์ Mastodon นี้:' see_whats_happening: ดูสิ่งที่กำลังเกิดขึ้น server_stats: 'สถิติเซิร์ฟเวอร์:' source_code: โค้ดต้นฉบับ @@ -48,6 +49,7 @@ th: what_is_mastodon: Mastodon คืออะไร? accounts: choices_html: 'ตัวเลือกของ %{name}:' + featured_tags_hint: คุณสามารถแนะนำแฮชแท็กที่เฉพาะเจาะจงที่จะแสดงที่นี่ follow: ติดตาม followers: other: ผู้ติดตาม @@ -85,7 +87,6 @@ th: accounts: add_email_domain_block: ปิดกั้นโดเมนอีเมล approve: อนุมัติ - approve_all: อนุมัติทั้งหมด approved_msg: อนุมัติใบสมัครลงทะเบียนของ %{username} สำเร็จ are_you_sure: คุณแน่ใจหรือไม่? avatar: ภาพประจำตัว @@ -100,9 +101,11 @@ th: confirm: ยืนยัน confirmed: ยืนยันแล้ว confirming: กำลังยืนยัน + custom: กำหนดเอง delete: ลบข้อมูล deleted: ลบแล้ว demote: ลดขั้น + destroyed_msg: ตอนนี้จัดคิวเพื่อลบข้อมูลของ %{username} ในเร็ว ๆ นี้แล้ว disable: อายัด disable_sign_in_token_auth: ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมล disable_two_factor_authentication: ปิดใช้งาน 2FA @@ -138,13 +141,13 @@ th: active: ใช้งานอยู่ all: ทั้งหมด pending: รอดำเนินการ - silenced: จำกัดอยู่ suspended: ระงับอยู่ title: การควบคุม moderation_notes: หมายเหตุการควบคุม most_recent_activity: กิจกรรมล่าสุด most_recent_ip: IP ล่าสุด - no_limits_imposed: ไม่ได้กำหนดขีดจำกัด + no_account_selected: ไม่มีการเปลี่ยนแปลงบัญชีเนื่องจากไม่มีการเลือก + no_limits_imposed: ไม่มีการกำหนดขีดจำกัด not_subscribed: ไม่ได้บอกรับ pending: การตรวจทานที่รอดำเนินการ perform_full_suspension: ระงับ @@ -155,7 +158,6 @@ th: redownload: รีเฟรชโปรไฟล์ redownloaded_msg: รีเฟรชโปรไฟล์ของ %{username} จากจุดเริ่มต้นสำเร็จ reject: ปฏิเสธ - reject_all: ปฏิเสธทั้งหมด rejected_msg: ปฏิเสธใบสมัครลงทะเบียนของ %{username} สำเร็จ remove_avatar: เอาภาพประจำตัวออก remove_header: เอาส่วนหัวออก @@ -191,8 +193,9 @@ th: statuses: โพสต์ subscribe: บอกรับ suspended: ระงับอยู่ - time_in_queue: กำลังรออยู่ในคิว %{time} title: บัญชี + unblock_email: เลิกปิดกั้นที่อยู่อีเมล + unblocked_email_msg: เลิกปิดกั้นที่อยู่อีเมลของ %{username} สำเร็จ unconfirmed_email: อีเมลที่ยังไม่ได้ยืนยัน undo_sensitized: เลิกทำการบังคับให้ละเอียดอ่อน undo_silenced: เลิกทำการจำกัด @@ -207,6 +210,7 @@ th: whitelisted: อนุญาตการติดต่อกับภายนอกแล้ว action_logs: action_types: + approve_user: อนุมัติผู้ใช้ assigned_to_self_report: มอบหมายรายงาน change_email_user: เปลี่ยนอีเมลสำหรับผู้ใช้ confirm_user: ยืนยันผู้ใช้ @@ -224,6 +228,7 @@ th: destroy_domain_allow: ลบการอนุญาตโดเมน destroy_domain_block: ลบการปิดกั้นโดเมน destroy_email_domain_block: ลบการปิดกั้นโดเมนอีเมล + destroy_instance: ล้างข้อมูลโดเมน destroy_ip_block: ลบกฎ IP destroy_status: ลบโพสต์ destroy_unavailable_domain: ลบโดเมนที่ไม่พร้อมใช้งาน @@ -236,6 +241,7 @@ th: enable_user: เปิดใช้งานผู้ใช้ memorialize_account: ทำให้บัญชีเป็นอนุสรณ์ promote_user: เลื่อนขั้นผู้ใช้ + reject_user: ปฏิเสธผู้ใช้ remove_avatar_user: เอาภาพประจำตัวออก reopen_report: เปิดรายงานใหม่ reset_password_user: ตั้งรหัสผ่านใหม่ @@ -244,6 +250,7 @@ th: silence_account: จำกัดบัญชี suspend_account: ระงับบัญชี unassigned_report: เลิกมอบหมายรายงาน + unblock_email_account: เลิกปิดกั้นที่อยู่อีเมล unsensitive_account: เลิกทำการบังคับให้บัญชีละเอียดอ่อน unsilence_account: เลิกทำการจำกัดบัญชี unsuspend_account: เลิกระงับบัญชี @@ -252,6 +259,7 @@ th: update_domain_block: อัปเดตการปิดกั้นโดเมน update_status: อัปเดตโพสต์ actions: + approve_user_html: "%{name} ได้อนุมัติการลงทะเบียนจาก %{target}" assigned_to_self_report_html: "%{name} ได้มอบหมายรายงาน %{target} ให้กับตนเอง" change_email_user_html: "%{name} ได้เปลี่ยนที่อยู่อีเมลของผู้ใช้ %{target}" confirm_user_html: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}" @@ -269,6 +277,7 @@ th: destroy_domain_allow_html: "%{name} ได้ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}" destroy_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมน %{target}" destroy_email_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมนอีเมล %{target}" + destroy_instance_html: "%{name} ได้ล้างข้อมูลโดเมน %{target}" destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}" destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก" disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}" @@ -280,6 +289,7 @@ th: enable_user_html: "%{name} ได้เปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}" memorialize_account_html: "%{name} ได้เปลี่ยนบัญชีของ %{target} เป็นหน้าอนุสรณ์" promote_user_html: "%{name} ได้เลื่อนขั้นผู้ใช้ %{target}" + reject_user_html: "%{name} ได้ปฏิเสธการลงทะเบียนจาก %{target}" remove_avatar_user_html: "%{name} ได้เอาภาพประจำตัวของ %{target} ออก" reopen_report_html: "%{name} ได้เปิดรายงาน %{target} ใหม่" reset_password_user_html: "%{name} ได้ตั้งรหัสผ่านของผู้ใช้ %{target} ใหม่" @@ -288,6 +298,7 @@ th: silence_account_html: "%{name} ได้จำกัดบัญชีของ %{target}" suspend_account_html: "%{name} ได้ระงับบัญชีของ %{target}" unassigned_report_html: "%{name} ได้เลิกมอบหมายรายงาน %{target}" + unblock_email_account_html: "%{name} ได้เลิกปิดกั้นที่อยู่อีเมลของ %{target}" unsensitive_account_html: "%{name} ได้เลิกทำเครื่องหมายสื่อของ %{target} ว่าละเอียดอ่อน" unsilence_account_html: "%{name} ได้เลิกจำกัดบัญชีของ %{target}" unsuspend_account_html: "%{name} ได้เลิกระงับบัญชีของ %{target}" @@ -351,9 +362,25 @@ th: updated_msg: อัปเดตอีโมจิสำเร็จ! upload: อัปโหลด dashboard: + active_users: ผู้ใช้ที่ใช้งานอยู่ + interactions: การโต้ตอบ + media_storage: ที่เก็บข้อมูลสื่อ + new_users: ผู้ใช้ใหม่ + opened_reports: รายงานที่เปิด + pending_reports_html: + other: "<strong>%{count}</strong> รายงานที่รอดำเนินการ" + pending_tags_html: + other: "<strong>%{count}</strong> แฮชแท็กที่รอดำเนินการ" + pending_users_html: + other: "<strong>%{count}</strong> ผู้ใช้ที่รอดำเนินการ" + resolved_reports: รายงานที่แก้ปัญหาแล้ว software: ซอฟต์แวร์ + sources: แหล่งที่มาการลงทะเบียน space: การใช้พื้นที่ title: แดชบอร์ด + top_languages: ภาษาที่ใช้งานอยู่สูงสุด + top_servers: เซิร์ฟเวอร์ที่ใช้งานอยู่สูงสุด + website: เว็บไซต์ domain_allows: add_new: อนุญาตการติดต่อกับภายนอกกับโดเมน created_msg: อนุญาตการติดต่อกับภายนอกกับโดเมนสำเร็จ @@ -367,7 +394,7 @@ th: edit: แก้ไขการปิดกั้นโดเมน new: create: สร้างการปิดกั้น - hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมเฉพาะกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ + hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมที่เฉพาะเจาะจงกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ severity: desc_html: "<strong>ทำให้เงียบ</strong> จะทำให้โพสต์ของบัญชีไม่ปรากฏแก่ใครก็ตามที่ไม่ได้กำลังติดตามบัญชี <strong>ระงับ</strong> จะเอาเนื้อหา, สื่อ และข้อมูลโปรไฟล์ทั้งหมดของบัญชีออก ใช้ <strong>ไม่มี</strong> หากคุณเพียงแค่ต้องการปฏิเสธไฟล์สื่อ" noop: ไม่มี @@ -419,6 +446,7 @@ th: back_to_limited: จำกัดอยู่ back_to_warning: คำเตือน by_domain: โดเมน + confirm_purge: คุณแน่ใจหรือไม่ว่าต้องการลบข้อมูลจากโดเมนนี้อย่างถาวร? delivery: all: ทั้งหมด clear: ล้างข้อผิดพลาดการจัดส่ง @@ -439,6 +467,7 @@ th: title: การควบคุม private_comment: ความคิดเห็นส่วนตัว public_comment: ความคิดเห็นสาธารณะ + purge: ล้างข้อมูล title: การติดต่อกับภายนอก total_blocked_by_us: ปิดกั้นโดยเรา total_followed_by_them: ติดตามโดยเขา @@ -466,9 +495,8 @@ th: '94670856': 3 ปี new: title: สร้างกฎ IP ใหม่ + no_ip_block_selected: ไม่มีการเปลี่ยนแปลงกฎ IP เนื่องจากไม่มีการเลือก title: กฎ IP - pending_accounts: - title: บัญชีที่รอดำเนินการ (%{count}) relationships: title: ความสัมพันธ์ของ %{acct} relays: @@ -488,28 +516,32 @@ th: report_notes: created_msg: สร้างหมายเหตุรายงานสำเร็จ! destroyed_msg: ลบหมายเหตุรายงานสำเร็จ! + today_at: วันนี้เวลา %{time} reports: account: notes: other: "%{count} หมายเหตุ" - reports: - other: "%{count} รายงาน" + action_log: รายการบันทึกการตรวจสอบ are_you_sure: คุณแน่ใจหรือไม่? assign_to_self: มอบหมายให้ฉัน assigned: ผู้ควบคุมที่ได้รับมอบหมาย by_target_domain: โดเมนของบัญชีที่ได้รับการรายงาน + category: หมวดหมู่ 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: แก้ปัญหาโดยมีหมายเหตุ create_and_unresolve: เปิดใหม่โดยมีหมายเหตุ delete: ลบ + title: หมายเหตุ reopen: เปิดรายงานใหม่ report: 'รายงาน #%{id}' reported_account: บัญชีที่ได้รับการรายงาน @@ -517,11 +549,13 @@ th: resolved: แก้ปัญหาแล้ว resolved_msg: แก้ปัญหารายงานสำเร็จ! status: สถานะ + statuses: เนื้อหาที่รายงาน target_origin: จุดเริ่มต้นของบัญชีที่ได้รับการรายงาน title: รายงาน unassign: เลิกมอบหมาย unresolved: ยังไม่ได้แก้ปัญหา updated_at: อัปเดตเมื่อ + view_profile: ดูโปรไฟล์ rules: add_new: เพิ่มกฎ delete: ลบ @@ -557,7 +591,7 @@ th: desc_html: แสดงในหลายหน้า อย่างน้อย 293×205px ที่แนะนำ เมื่อไม่ได้ตั้ง กลับไปใช้มาสคอตเริ่มต้น title: ภาพมาสคอต peers_api_enabled: - desc_html: ชื่อโดเมนที่เซิร์ฟเวอร์นี้ได้พบในเฟดิเวิร์ส + desc_html: ชื่อโดเมนที่เซิร์ฟเวอร์นี้ได้พบในจักรวาลสหพันธ์ title: เผยแพร่รายการเซิร์ฟเวอร์ที่ค้นพบใน API preview_sensitive_media: desc_html: การแสดงตัวอย่างลิงก์ในเว็บไซต์อื่น ๆ จะแสดงภาพขนาดย่อแม้ว่าจะมีการทำเครื่องหมายสื่อว่าละเอียดอ่อน @@ -613,22 +647,21 @@ th: desc_html: มีผลต่อแฮชแท็กที่ไม่ได้ไม่อนุญาตก่อนหน้านี้ title: อนุญาตให้แฮชแท็กขึ้นแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า trends: - desc_html: แสดงแฮชแท็กที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมเป็นสาธารณะ - title: แฮชแท็กที่กำลังนิยม + desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมเป็นสาธารณะ + title: แนวโน้ม site_uploads: delete: ลบไฟล์ที่อัปโหลด destroyed_msg: ลบการอัปโหลดไซต์สำเร็จ! statuses: back_to_account: กลับไปที่หน้าบัญชี + back_to_report: กลับไปที่หน้ารายงาน batch: - delete: ลบ - nsfw_off: ทำเครื่องหมายว่าไม่ละเอียดอ่อน - nsfw_on: ทำเครื่องหมายว่าละเอียดอ่อน + remove_from_report: เอาออกจากรายงาน + report: รายงาน deleted: ลบแล้ว - failed_to_execute: ไม่สามารถปฏิบัติการ media: title: สื่อ - no_media: ไม่มีสื่อ + no_status_selected: ไม่มีการเปลี่ยนแปลงโพสต์เนื่องจากไม่มีการเลือก title: โพสต์ของบัญชี with_media: มีสื่อ system_checks: @@ -638,21 +671,48 @@ th: sidekiq_process_check: message_html: ไม่มีกระบวนการ Sidekiq ที่กำลังทำงานสำหรับคิว %{value} โปรดตรวจทานการกำหนดค่า Sidekiq ของคุณ tags: - accounts_today: การใช้งานที่ไม่ซ้ำกันในวันนี้ - accounts_week: การใช้งานที่ไม่ซ้ำกันในสัปดาห์นี้ - breakdown: การแบ่งการใช้งานของวันนี้ตามแหล่งที่มา - last_active: ใช้งานล่าสุด - most_popular: ยอดนิยม - most_recent: สร้างล่าสุด - name: แฮชแท็ก review: สถานะการตรวจทาน - reviewed: ตรวจทานแล้ว - title: แฮชแท็ก - trending_right_now: กำลังนิยม - unique_uses_today: "%{count} การโพสต์วันนี้" - unreviewed: ยังไม่ได้ตรวจทาน updated_msg: อัปเดตการตั้งค่าแฮชแท็กสำเร็จ title: การดูแล + trends: + allow: อนุญาต + approved: อนุมัติแล้ว + disallow: ไม่อนุญาต + links: + allow: อนุญาตลิงก์ + allow_provider: อนุญาตผู้เผยแพร่ + disallow: ไม่อนุญาตลิงก์ + disallow_provider: ไม่อนุญาตผู้เผยแพร่ + shared_by_over_week: + other: แบ่งปันโดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา + title: ลิงก์ที่กำลังนิยม + usage_comparison: แบ่งปัน %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้ + pending_review: การตรวจทานที่รอดำเนินการ + preview_card_providers: + allowed: ลิงก์จากผู้เผยแพร่นี้สามารถขึ้นแนวโน้ม + rejected: ลิงก์จากผู้เผยแพร่นี้จะไม่ขึ้นแนวโน้ม + title: ผู้เผยแพร่ + rejected: ปฏิเสธแล้ว + tags: + current_score: คะแนนปัจจุบัน %{score} + dashboard: + tag_accounts_measure: การใช้งานที่ไม่ซ้ำกัน + tag_languages_dimension: ภาษายอดนิยม + tag_servers_dimension: เซิร์ฟเวอร์ยอดนิยม + tag_servers_measure: เซิร์ฟเวอร์อื่น + tag_uses_measure: การใช้งานทั้งหมด + listable: สามารถแนะนำ + not_listable: จะไม่แนะนำ + not_trendable: จะไม่ปรากฏภายใต้แนวโน้ม + not_usable: ไม่สามารถใช้ + title: แฮชแท็กที่กำลังนิยม + trendable: สามารถปรากฏภายใต้แนวโน้ม + trending_rank: 'กำลังนิยม #%{rank}' + usable: สามารถใช้ + usage_comparison: ใช้ %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้ + used_by_over_week: + other: ใช้โดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา + title: แนวโน้ม warning_presets: add_new: เพิ่มใหม่ delete: ลบ @@ -666,8 +726,15 @@ th: body: "%{reporter} ได้รายงาน %{target}" body_remote: ใครสักคนจาก %{domain} ได้รายงาน %{target} subject: รายงานใหม่สำหรับ %{instance} (#%{id}) + new_trending_links: + no_approved_links: ไม่มีลิงก์ที่กำลังนิยมที่ได้รับอนุมัติ + subject: ลิงก์ที่กำลังนิยมใหม่สำหรับตรวจทานใน %{instance} + new_trending_tags: + no_approved_tags: ไม่มีแฮชแท็กที่กำลังนิยมที่ได้รับอนุมัติ + subject: แฮชแท็กที่กำลังนิยมใหม่สำหรับตรวจทานใน %{instance} aliases: add_new: สร้างนามแฝง + created_msg: สร้างนามแฝงใหม่สำเร็จ ตอนนี้คุณสามารถทำการย้ายจากบัญชีเก่า deleted_msg: เอานามแฝงออกสำเร็จ จะไม่สามารถย้ายจากบัญชีนั้นไปยังบัญชีนี้ได้อีกต่อไป empty: คุณไม่มีนามแฝง remove: เลิกเชื่อมโยงนามแฝง @@ -695,6 +762,7 @@ th: invalid_url: URL ที่ระบุไม่ถูกต้อง regenerate_token: สร้างโทเคนการเข้าถึงใหม่ token_regenerated: สร้างโทเคนการเข้าถึงใหม่สำเร็จ + warning: ระวังเป็นอย่างสูงกับข้อมูลนี้ อย่าแบ่งปันข้อมูลกับใครก็ตาม! your_token: โทเคนการเข้าถึงของคุณ auth: apply_for_account: ขอคำเชิญ @@ -713,6 +781,7 @@ th: invalid_reset_password_token: โทเคนการตั้งรหัสผ่านใหม่ไม่ถูกต้องหรือหมดอายุแล้ว โปรดขอโทเคนใหม่ link_to_otp: ป้อนรหัสสองปัจจัยจากโทรศัพท์ของคุณหรือรหัสกู้คืน link_to_webauth: ใช้อุปกรณ์กุญแจความปลอดภัยของคุณ + log_in_with: เข้าสู่ระบบด้วย login: เข้าสู่ระบบ logout: ออกจากระบบ migrate_account: ย้ายไปยังบัญชีอื่น @@ -734,12 +803,14 @@ th: account_status: สถานะบัญชี confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ functional: บัญชีของคุณทำงานได้อย่างเต็มที่ + pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากใบสมัครของคุณได้รับการอนุมัติ too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ? use_security_key: ใช้กุญแจความปลอดภัย authorize_follow: already_following: คุณกำลังติดตามบัญชีนี้อยู่แล้ว already_requested: คุณได้ส่งคำขอติดตามไปยังบัญชีนั้นไปแล้ว + error: น่าเสียดาย มีข้อผิดพลาดในการค้นหาบัญชีระยะไกล follow: ติดตาม follow_request: 'คุณได้ส่งคำขอติดตามไปยัง:' following: 'สำเร็จ! คุณกำลังติดตาม:' @@ -781,6 +852,7 @@ th: proceed: ลบบัญชี success_msg: ลบบัญชีของคุณสำเร็จ warning: + before: 'ก่อนดำเนินการต่อ โปรดอ่านหมายเหตุเหล่านี้อย่างระมัดระวัง:' caches: เนื้อหาที่ได้รับการแคชโดยเซิร์ฟเวอร์อื่น ๆ อาจยังคงอยู่ data_removal: จะเอาโพสต์และข้อมูลอื่น ๆ ของคุณออกโดยถาวร email_change_html: คุณสามารถ <a href="%{path}">เปลี่ยนที่อยู่อีเมลของคุณ</a> ได้โดยไม่ต้องลบบัญชีของคุณ @@ -799,7 +871,7 @@ th: '400': คำขอที่คุณได้ส่งไม่ถูกต้องหรือผิดรูปแบบ '403': คุณไม่มีสิทธิอนุญาตเพื่อดูหน้านี้ '404': หน้าที่คุณกำลังมองหาไม่ได้อยู่ที่นี่ - '406': This page is not available in the requested format. + '406': หน้านี้ไม่พร้อมใช้งานในรูปแบบที่ขอ '410': ไม่มีหน้าที่คุณกำลังมองหาอยู่ที่นี่อีกต่อไป '422': content: การตรวจสอบความปลอดภัยล้มเหลว คุณกำลังปิดกั้นคุกกี้หรือไม่? @@ -808,7 +880,7 @@ th: '500': content: เราขออภัย แต่มีบางอย่างผิดพลาดในส่วนของเรา title: หน้านี้ไม่ถูกต้อง - '503': The page could not be served due to a temporary server failure. + '503': ไม่สามารถให้บริการหน้าได้เนื่องจากเซิร์ฟเวอร์ล้มเหลวชั่วคราว existing_username_validator: not_found: ไม่พบผู้ใช้ในเซิร์ฟเวอร์ที่มีชื่อผู้ใช้นั้น not_found_multiple: ไม่พบ %{usernames} @@ -854,25 +926,14 @@ th: changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ! copy: คัดลอก delete: ลบ + none: ไม่มี order_by: เรียงลำดับตาม save_changes: บันทึกการเปลี่ยนแปลง + today: วันนี้ + validation_errors: + other: ยังมีบางอย่างไม่ถูกต้อง! โปรดตรวจทาน %{count} ข้อผิดพลาดด้านล่าง html_validator: invalid_markup: 'มีมาร์กอัป HTML ที่ไม่ถูกต้อง: %{error}' - identity_proofs: - active: ใช้งานอยู่ - authorize: ใช่ อนุญาต - authorize_connection_prompt: อนุญาตการเชื่อมต่อการเข้ารหัสนี้? - errors: - failed: การเชื่อมต่อการเข้ารหัสล้มเหลว โปรดลองอีกครั้งจาก %{provider} - i_am_html: ฉันคือ %{username} ใน %{service} - identity: ตัวตน - inactive: ไม่ได้ใช้งาน - publicize_checkbox: 'และโพสต์สิ่งนี้:' - publicize_toot: 'พิสูจน์ตัวตนแล้ว! ฉันคือ %{username} ใน %{service}: %{url}' - remove: เอาการพิสูจน์ออกจากบัญชี - removed: เอาการพิสูจน์ออกจากบัญชีสำเร็จ - status: สถานะการตรวจสอบ - view_proof: ดูการพิสูจน์ imports: errors: over_rows_processing_limit: มีมากกว่า %{count} แถว @@ -904,12 +965,12 @@ th: generate: สร้างลิงก์เชิญ invited_by: 'คุณได้รับเชิญโดย:' max_uses: - other: "%{count} การใช้" + other: "%{count} การใช้งาน" max_uses_prompt: ไม่มีขีดจำกัด prompt: สร้างและแบ่งปันลิงก์กับผู้อื่นเพื่ออนุญาตให้เข้าถึงเซิร์ฟเวอร์นี้ table: expires_at: หมดอายุเมื่อ - uses: การใช้ + uses: การใช้งาน title: เชิญผู้คน login_activities: authentication_methods: @@ -946,6 +1007,7 @@ th: redirecting_to: บัญชีของคุณกำลังเปลี่ยนเส้นทางไปยัง %{acct} set_redirect: ตั้งการเปลี่ยนเส้นทาง warning: + before: 'ก่อนดำเนินการต่อ โปรดอ่านหมายเหตุเหล่านี้อย่างระมัดระวัง:' followers: การกระทำนี้จะย้ายผู้ติดตามทั้งหมดจากบัญชีปัจจุบันไปยังบัญชีใหม่ moderation: title: การควบคุม @@ -980,6 +1042,8 @@ th: body: 'คุณได้รับการกล่าวถึงโดย %{name} ใน:' subject: คุณได้รับการกล่าวถึงโดย %{name} title: การกล่าวถึงใหม่ + poll: + subject: การสำรวจความคิดเห็นโดย %{name} ได้สิ้นสุดแล้ว reblog: body: 'โพสต์ของคุณได้รับการดันโดย %{name}:' subject: "%{name} ได้ดันโพสต์ของคุณ" @@ -1003,6 +1067,7 @@ th: otp_authentication: code_hint: ป้อนรหัสที่สร้างโดยแอปตัวรับรองความถูกต้องของคุณเพื่อยืนยัน enable: เปิดใช้งาน + instructions_html: "<strong>สแกนรหัส QR นี้ลงใน Google Authenticator หรือแอป TOTP ที่คล้ายกันในโทรศัพท์ของคุณ</strong> จากนี้ไป แอปนั้นจะสร้างโทเคนที่คุณจะต้องป้อนเมื่อเข้าสู่ระบบ" manual_instructions: 'หากคุณไม่สามารถสแกนรหัส QR และจำเป็นต้องป้อนรหัสด้วยตนเอง นี่คือรหัสลับแบบข้อความธรรมดา:' setup: ตั้งค่า wrong_code: รหัสที่ป้อนไม่ถูกต้อง! เวลาเซิร์ฟเวอร์และเวลาอุปกรณ์ถูกต้องหรือไม่? @@ -1113,7 +1178,6 @@ th: edit_profile: แก้ไขโปรไฟล์ export: การส่งออกข้อมูล featured_tags: แฮชแท็กที่แนะนำ - identity_proofs: การพิสูจน์ตัวตน import: การนำเข้า import_and_export: การนำเข้าและการส่งออก migrate: การโยกย้ายบัญชี @@ -1135,13 +1199,14 @@ th: other: "%{count} วิดีโอ" boosted_from_html: ดันจาก %{acct_link} content_warning: 'คำเตือนเนื้อหา: %{warning}' + default_language: เหมือนกับภาษาส่วนติดต่อ disallowed_hashtags: other: 'มีแฮชแท็กที่ไม่อนุญาต: %{tags}' - language_detection: ตรวจหาภาษาโดยอัตโนมัติ + edited_at: แก้ไขเมื่อ %{date} open_in_web: เปิดในเว็บ pin_errors: + direct: ไม่สามารถปักหมุดโพสต์ที่ปรากฏแก่ผู้ใช้ที่กล่าวถึงเท่านั้น ownership: ไม่สามารถปักหมุดโพสต์ของคนอื่น - private: ไม่สามารถปักหมุดโพสต์ที่ไม่เป็นสาธารณะ reblog: ไม่สามารถปักหมุดการดัน poll: total_people: @@ -1165,6 +1230,7 @@ th: unlisted_long: ทุกคนสามารถเห็น แต่ไม่แสดงรายการในเส้นเวลาสาธารณะ statuses_cleanup: enabled: ลบโพสต์เก่าโดยอัตโนมัติ + enabled_hint: ลบโพสต์ของคุณโดยอัตโนมัติเมื่อโพสต์ถึงค่าเกณฑ์อายุที่ระบุ เว้นแต่โพสต์ตรงกับหนึ่งในข้อยกเว้นด้านล่าง exceptions: ข้อยกเว้น ignore_favs: เพิกเฉยรายการโปรด ignore_reblogs: เพิกเฉยการดัน @@ -1189,6 +1255,11 @@ th: '5259492': 2 เดือน '63113904': 2 ปี '7889238': 3 เดือน + min_age_label: ค่าเกณฑ์อายุ + min_favs: เก็บโพสต์ที่ได้รับการชื่นชอบอย่างน้อย + min_favs_hint: ไม่ลบโพสต์ใดก็ตามของคุณที่ได้รับจำนวนการชื่นชอบอย่างน้อยเท่านี้ เว้นว่างไว้เพื่อลบโพสต์โดยไม่คำนึงถึงจำนวนการชื่นชอบของโพสต์ + min_reblogs: เก็บโพสต์ที่ได้รับการดันอย่างน้อย + min_reblogs_hint: ไม่ลบโพสต์ใดก็ตามของคุณที่ได้รับจำนวนครั้งการดันอย่างน้อยเท่านี้ เว้นว่างไว้เพื่อลบโพสต์โดยไม่คำนึงถึงจำนวนการดันของโพสต์ stream_entries: pinned: โพสต์ที่ปักหมุด reblogged: ดันแล้ว @@ -1205,6 +1276,7 @@ th: formats: default: "%d %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: เพิ่ม disable: ปิดใช้งาน 2FA @@ -1220,7 +1292,9 @@ th: webauthn: กุญแจความปลอดภัย user_mailer: backup_ready: + explanation: คุณได้ขอข้อมูลสำรองแบบเต็มของบัญชี Mastodon ของคุณ ตอนนี้ข้อมูลสำรองพร้อมสำหรับการดาวน์โหลดแล้ว! subject: การเก็บถาวรของคุณพร้อมสำหรับการดาวน์โหลดแล้ว + title: การส่งออกการเก็บถาวร sign_in_token: details: 'นี่คือรายละเอียดของความพยายาม:' explanation: 'เราตรวจพบความพยายามลงชื่อเข้าบัญชีของคุณจากที่อยู่ IP ที่ไม่รู้จัก หากนี่คือคุณ โปรดป้อนรหัสความปลอดภัยด้านล่างในหน้าตรวจสอบการลงชื่อเข้า:' @@ -1228,18 +1302,22 @@ th: subject: โปรดยืนยันการลงชื่อเข้าที่พยายาม title: ความพยายามลงชื่อเข้า warning: - get_in_touch: คุณสามารถตอบกลับอีเมลนี้เพื่อติดต่อกับพนักงานของ %{instance} + categories: + spam: สแปม + violation: เนื้อหาละเมิดหลักเกณฑ์ชุมชนดังต่อไปนี้ + reason: 'เหตุผล:' review_server_policies: ตรวจทานนโยบายของเซิร์ฟเวอร์ - statuses: 'โดยเฉพาะสำหรับ:' + statuses: 'โพสต์ที่พบว่ามีการละเมิด:' subject: disable: บัญชีของคุณ %{acct} ถูกอายัด none: คำเตือนสำหรับ %{acct} silence: บัญชีของคุณ %{acct} ถูกจำกัด suspend: บัญชีของคุณ %{acct} ถูกระงับ title: + delete_statuses: เอาโพสต์ออกแล้ว disable: อายัดบัญชีอยู่ none: คำเตือน - sensitive: มีการทำเครื่องหมายสื่อของคุณว่าละเอียดอ่อน + sensitive: ซ่อนสื่ออยู่ silence: จำกัดบัญชีอยู่ suspend: ระงับบัญชีอยู่ welcome: @@ -1250,7 +1328,9 @@ th: full_handle_hint: นี่คือสิ่งที่คุณจะบอกเพื่อน ๆ ของคุณ เพื่อให้เขาสามารถส่งข้อความหรือติดตามคุณจากเซิร์ฟเวอร์อื่น review_preferences_action: เปลี่ยนการกำหนดลักษณะ subject: ยินดีต้อนรับสู่ Mastodon + tip_federated_timeline: เส้นเวลาที่ติดต่อกับภายนอกคือมุมมองสายน้ำของเครือข่าย Mastodon แต่เส้นเวลารวมเฉพาะผู้คนที่เพื่อนบ้านของคุณบอกรับเท่านั้น ดังนั้นเส้นเวลาจึงไม่ครบถ้วน tip_following: คุณติดตามผู้ดูแลเซิร์ฟเวอร์ของคุณเป็นค่าเริ่มต้น เพื่อค้นหาผู้คนที่น่าสนใจเพิ่มเติม ตรวจสอบเส้นเวลาในเซิร์ฟเวอร์และที่ติดต่อกับภายนอก + tip_local_timeline: เส้นเวลาในเซิร์ฟเวอร์คือมุมมองสายน้ำของผู้คนใน %{instance} นี่คือเพื่อนบ้านใกล้เคียงของคุณ! tips: เคล็ดลับ title: ยินดีต้อนรับ %{name}! users: @@ -1261,6 +1341,7 @@ th: otp_lost_help_html: หากคุณสูญเสียการเข้าถึงทั้งสองอย่าง คุณสามารถติดต่อ %{email} seamless_external_login: คุณได้เข้าสู่ระบบผ่านบริการภายนอก ดังนั้นจึงไม่มีการตั้งค่ารหัสผ่านและอีเมล signed_in_as: 'ลงชื่อเข้าเป็น:' + suspicious_sign_in_confirmation: ดูเหมือนว่าคุณไม่เคยเข้าสู่ระบบจากอุปกรณ์นี้มาก่อน ดังนั้นเราจึงส่งรหัสความปลอดภัยไปยังที่อยู่อีเมลของคุณเพื่อยืนยันว่าเป็นคุณ verification: verification: การตรวจสอบ webauthn_credentials: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index f78550a19..9fdcf8a7f 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -99,7 +99,6 @@ tr: accounts: add_email_domain_block: E-posta alan adını engelle approve: Onayla - approve_all: Tümünü onayla approved_msg: "%{username} adlı kullanıcının kayıt başvurusu başarıyla onaylandı" are_you_sure: Emin misiniz? avatar: Profil resmi @@ -114,6 +113,7 @@ tr: confirm: Onayla confirmed: Onaylandı confirming: Onaylanıyor + custom: Özel delete: Veriyi sil deleted: Silindi demote: Düşür @@ -153,7 +153,6 @@ tr: active: Etkin all: Hepsi pending: Bekliyor - silenced: Susturulanlar suspended: Uzaklaştırılanlar title: Denetim moderation_notes: Denetleme notları @@ -171,7 +170,6 @@ tr: redownload: Profili yenile redownloaded_msg: "%{username} kullanıcısının profili kökenden başarıyla yenilendi" reject: Reddet - reject_all: Tümünü reddet rejected_msg: "%{username} adlı kullanıcının kayıt başvurusu başarıyla reddedildi" remove_avatar: Profil resmini kaldır remove_header: Üstbilgiyi kaldır @@ -206,12 +204,14 @@ tr: silence: Sustur silenced: Susturulmuş statuses: Durumlar + strikes: Önceki eylemler subscribe: Abone ol 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. - time_in_queue: "%{time} kuyruğunda bekliyor" title: Hesaplar + unblock_email: E-posta adresinin engelini kaldır + unblocked_email_msg: "%{username} kişisinin e-posta adresinin engeli başarıyla kaldırıldı" unconfirmed_email: Onaylanmamış e-posta undo_sensitized: Hassaslığı geri al undo_silenced: Susturmayı geri al @@ -226,6 +226,7 @@ tr: whitelisted: Beyaz listede action_logs: action_types: + approve_user: Kullanıcıyı Onayla assigned_to_self_report: Raporu Ata change_email_user: Kullanıcı E-postasını Değiştir confirm_user: Kullanıcıyı Onayla @@ -243,6 +244,7 @@ tr: destroy_domain_allow: İzin Verilen Alan Adını Sil destroy_domain_block: Engellenen Alan Adını Sil destroy_email_domain_block: E-posta alan adı engelini sil + destroy_instance: Alan adını temizle destroy_ip_block: IP kuralını sil destroy_status: Durumu Sil destroy_unavailable_domain: Mevcut Olmayan Alan Adı Sil @@ -255,6 +257,7 @@ tr: enable_user: Kullanıcıyı Etkinleştir memorialize_account: Hesabı Anıtlaştır promote_user: Kullanıcıyı Yükselt + reject_user: Kullanıcıyı Reddet remove_avatar_user: Profil Resmini Kaldır reopen_report: Şikayeti Tekrar Aç reset_password_user: Parolayı Sıfırla @@ -263,6 +266,7 @@ tr: silence_account: Hesabı Sustur suspend_account: Hesabı Askıya Al unassigned_report: Rapor Atamasını Kaldır + unblock_email_account: E-posta adresinin engelini kaldır unsensitive_account: Hesabınızdaki medyayı hassas olarak işaretlemeyin unsilence_account: Hesabın Sesini Aç unsuspend_account: Hesabı Askıdan Kaldır @@ -271,6 +275,7 @@ tr: update_domain_block: Engellenen Alan Adını Güncelle update_status: Durumu Güncelle actions: + 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" confirm_user_html: "%{name} %{target} kullanıcısının e-posta adresini onayladı" @@ -288,6 +293,7 @@ tr: destroy_domain_allow_html: "%{name}, %{target} alan adıyla birlik iznini kaldırdı" destroy_domain_block_html: "%{name}, %{target} alan adı engelini kaldırdı" destroy_email_domain_block_html: "%{name}, %{target} e-posta alan adı engelini kaldırdı" + destroy_instance_html: "%{name}, %{target} alan adını temizledi" destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi" destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı" destroy_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı sürdürdü" @@ -300,6 +306,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_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ı" reset_password_user_html: "%{name}, %{target} kullanıcısının parolasını sıfırladı" @@ -308,6 +315,7 @@ tr: silence_account_html: "%{name}, %{target} kullanıcısının hesabını sessize aldı" suspend_account_html: "%{name}, %{target} kullanıcısının hesabını askıya aldı" unassigned_report_html: "%{name}, %{target} şikayetinin atamasını kaldırdı" + unblock_email_account_html: "%{name}, %{target} kişisinin e-posta adresinin engelini kaldırdı" unsensitive_account_html: "%{name}, %{target} kullanıcısının medyasının hassas işaretini kaldırdı" unsilence_account_html: "%{name}, %{target} kullanıcısının hesabının sessizliğini kaldırdı" unsuspend_account_html: "%{name}, %{target} kullanıcısının hesabının askı durumunu kaldırdı" @@ -465,6 +473,7 @@ tr: back_to_limited: Sınırlı back_to_warning: Uyarı by_domain: Alan adı + confirm_purge: Bu alan adından verileri kalıcı olarak silmek istediğinizden emin misin? delivery: all: Tümü clear: Teslimat hatalarını temizle @@ -480,6 +489,7 @@ tr: delivery_available: Teslimat mevcut delivery_error_days: Teslimat hatası günleri delivery_error_hint: Eğer teslimat %{count} gün boyunca mümkün olmazsa, otomatik olarak teslim edilemiyor olarak işaretlenecek. + destroyed_msg: "%{domain} alan adından veriler hemen silinmek üzere kuyruğa alındı." empty: Alan adı bulunamadı. known_accounts: one: "%{count} bilinen hesap" @@ -490,6 +500,7 @@ tr: title: Denetim private_comment: Özel yorum public_comment: Genel yorum + purge: Temizle title: Bilinen Sunucular total_blocked_by_us: Tarafımızca engellenen total_followed_by_them: Onlar tarafından takip edilen @@ -519,8 +530,6 @@ tr: title: Yeni IP kuralı oluştur no_ip_block_selected: Hiçbiri seçilmediğinden hiçbir IP kuralı değiştirilmedi title: IP kuralları - pending_accounts: - title: Bekleyen hesaplar (%{count}) relationships: title: "%{acct} kişisinin ilişkileri" relays: @@ -542,32 +551,44 @@ tr: report_notes: created_msg: Şikayet notu başarıyla oluşturuldu! destroyed_msg: Şikayet notu başarıyla silindi! + today_at: 'Bugün şu saatte: %{time}' reports: account: notes: one: "%{count} not" other: "%{count} not" - reports: - one: "%{count} şikayet" - other: "%{count} şikayet" + action_log: Denetim günlüğü action_taken_by: tarafından gerçekleştirilen eylem + actions: + 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. + 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:' + add_to_report: Bildirime daha fazlasını ekle are_you_sure: Emin misiniz? assign_to_self: Bana ata assigned: Denetleyici atandı by_target_domain: Şikayet edilen hesabın alan adı + category: Kategori + category_description_html: Bu hesap ve/veya içeriğin bildirilme gerekçesi, bildirilen hesapla iletişimde alıntılanacaktır comment: none: Yok + comment_description_html: 'Daha fazla bilgi vermek için %{name} şunu yazdı:' created_at: Şikayet edildi + delete_and_resolve: Çöz ve sil forwarded: İletildi forwarded_to: "%{domain}'e iletildi" mark_as_resolved: Giderildi olarak işaretle mark_as_unresolved: Çözümlenmemiş olarak işaretle + no_one_assigned: Hiç kimse notes: create: Not Ekle create_and_resolve: Not ile çözümle create_and_unresolve: Not ile tekrar aç delete: Sil 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 reopen: Şikayeti tekrar aç report: 'Şikayet #%{id}' reported_account: Şikayet edilen hesap @@ -575,11 +596,14 @@ tr: resolved: Giderildi resolved_msg: Şikayet başarıyla çözümlendi! status: Durum + statuses: Bildirilen içerik + statuses_description_html: İncitici içerik, bildirilen hesapla iletişimde alıntılanacaktır target_origin: Şikayet edilen hesabın kökeni title: Şikayetler unassign: Atamayı geri al unresolved: Giderilmedi updated_at: Güncellendi + view_profile: Profili görüntüle rules: add_new: Kural ekle delete: Sil @@ -681,15 +705,13 @@ tr: destroyed_msg: Site yüklemesi başarıyla silindi! statuses: back_to_account: Hesap sayfasına geri dön + back_to_report: Bildirim sayfasına geri dön batch: - delete: Sil - nsfw_off: Hassas değil olarak işaretle - nsfw_on: Hassas olarak işaretle + remove_from_report: Bildirimden kaldır + report: Bildirim deleted: Silindi - failed_to_execute: Çalıştırılamadı media: title: Medya - no_media: Medya yok no_status_selected: Hiçbiri seçilmediğinden hiçbir durum değiştirilmedi title: Hesap durumları with_media: Medya ile @@ -702,21 +724,51 @@ tr: sidekiq_process_check: message_html: "%{value} kuyruk(lar)ı için herhangi bir Sidekiq süreci çalışmıyor. Lütfen Sidekiq yapılandırmanızı gözden geçirin" tags: - accounts_today: Bugünkü eşsiz kullanımlar - accounts_week: Bu haftaki eşsiz kullanımlar - breakdown: Bugünkü kullanımın kaynağa göre dağılımı - last_active: Son etkinlik - most_popular: En popüler - most_recent: En yeni - name: Etiket review: Durumu gözden geçir - reviewed: Gözden geçirildi - title: Etiketler - trending_right_now: Şu anda trend - unique_uses_today: bugün %{count} gönderi - unreviewed: Gözden geçirilmedi updated_msg: Etiket ayarları başarıyla güncellendi title: Yönetim + trends: + allow: İzin ver + approved: Onaylandı + disallow: İzin verme + links: + allow: Bağlantıya izin ver + allow_provider: Yayıncıya izin ver + disallow: Bağlantıya izin verme + disallow_provider: Yayıncıya izin verme + shared_by_over_week: + one: Geçen hafta bir kişi paylaştı + other: Geçen hafta %{count} kişi paylaştı + 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 + preview_card_providers: + allowed: Bu yayıncının bağlantıları öne çıkabilir + rejected: Bu yayıncının bağlantıları öne çıkmayacak + title: Yayıncılar + rejected: Reddedildi + tags: + current_score: Mevcut puan %{score} + dashboard: + tag_accounts_measure: tekil kullanımlar + tag_languages_dimension: En gözde diller + tag_servers_dimension: En gözde sunucular + tag_servers_measure: farklı sunucular + tag_uses_measure: toplam kullanım + listable: Önerilebilir + not_listable: Önerilmeyecek + not_trendable: Öne çıkanlar altında görünmeyecek + not_usable: Kullanılamaz + peaked_on_and_decaying: "%{date} tarihinde zirvedeydi, şimdi azalıyor" + title: Öne çıkan etiketler + trendable: Öne çıkanlar altında görünebilir + trending_rank: 'Öne çıkanlar #%{rank}' + 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ı + title: Öne çıkanlar warning_presets: add_new: Yeni ekle delete: Sil @@ -731,9 +783,16 @@ tr: body: "%{reporter}, %{target} kişisini bildirdi" body_remote: "%{domain} alan adından birisi %{target} kişisini bildirdi" subject: "%{instance} için yeni şikayet (#%{id})" - new_trending_tag: - body: "#%{name} etiketi bugün trend, ancak daha önce incelenmedi. Siz izin vermediğiniz sürece herkese açık olarak gösterilmeyecek, ya da bir daha asla hakkında bir şey duymamak için olduğu şekliyle formu kaydedin." - subject: "%{instance} üzerinde gözden geçirmek için yeni etiket (#%{name})" + new_trending_links: + body: Aşağıdaki bağlantılar bugün öne çıkıyorlar, ancak yayıncıları daha önce incelenmedi. Siz onaylamadığınız sürece herkese açık olarak görüntülenmeyecekler. Aynı yayıncılar için benzer bildirimler üretilmeyecek. + no_approved_links: Şu anda onaylanmış öne çıkan bağlantı yok. + requirements: Şu anda en düşük onaylanmış öne çıkan bağlantı %{lowest_link_score} puana sahip olan "%{lowest_link_title}". + subject: "%{instance}, inceleme bekleyen yeni öne çıkan bağlantılara sahip" + new_trending_tags: + body: 'Aşağıdaki etiketler bugün öne çıkıyorlar, ancak daha önce incelenmediler. Siz onaylamadığınız sürece herkese açık olarak görüntülenmeyecekler:' + no_approved_tags: Şu anda onaylanmış öne çıkan etiket yok. + requirements: 'Şu anda en düşük onaylanmış öne çıkan etiket %{lowest_tag_score} puana sahip olan #%{lowest_tag_name}.' + subject: "%{instance}, inceleme bekleyen yeni öne çıkan etiketlere sahip" aliases: add_new: Takma ad oluştur created_msg: Yeni takma ad başarıyla oluşturuldu. Artık eski hesaptan taşınmayı başlatabilirsiniz. @@ -785,6 +844,7 @@ tr: invalid_reset_password_token: Parola sıfırlama belirteci geçersiz veya süresi dolmuş. Lütfen yeni bir tane talep edin. link_to_otp: Telefonunuzdan iki adımlı bir kod veya bir kurtarma kodu girin link_to_webauth: Güvenlik anahtarı cihazınızı kullanın + log_in_with: Şununla giriş yap login: Oturum aç logout: Oturumu kapat migrate_account: Farklı bir hesaba taşıyın @@ -940,34 +1000,15 @@ tr: changes_saved_msg: Değişiklikler başarıyla kaydedildi! copy: Kopyala delete: Sil - no_batch_actions_available: Bu sayfada toplu işlem yok + none: Hiçbiri order_by: Sıralama ölçütü save_changes: Değişiklikleri kaydet + today: bugün validation_errors: one: Bir şeyler ters gitti! Lütfen aşağıdaki hatayı gözden geçiriniz other: Bir şeyler ters gitti! Lütfen aşağıdaki %{count} hatayı gözden geçiriniz html_validator: invalid_markup: 'geçersiz HTML markup içermektedir: %{error}' - identity_proofs: - active: Etkin - authorize: Evet, izin ver - authorize_connection_prompt: Bu kriptolu bağlantıyı yetkilendir? - errors: - failed: Kriptolu bağlantı başarısız oldu. Lütfen %{provider} üzerinden tekrar deneyin. - keybase: - invalid_token: Keybase belirteçleri imza hash'leridir ve 66 hex karakter içermelidir - verification_failed: Keybase, bu belirteci, %{kb_username} Keybase kullanıcısının imzası olarak tanımıyor. Lütfen Keybase'den tekrar deneyin. - wrong_user: "%{current} olarak giriş yaparken %{proving} için bir kanıt oluşturulamıyor. %{proving} olarak giriş yapın ve tekrar deneyin." - explanation_html: Burada, Keybase profili gibi diğer kimliklerinizi şifreli olarak bağlayabilirsiniz. Bu, diğer kişilerin size şifreli mesajlar göndermesini ve gönderdiğiniz içeriğe güvenmelerini sağlar. - i_am_html: Ben %{service} üzerinde %{username}. - identity: Kimlik - inactive: Pasif - publicize_checkbox: 'Ve bunu tootla:' - publicize_toot: 'İspatlandı! Ben %{service} üzerinde %{username}: %{url}' - remove: Hesaptan kanıtı kaldır - removed: Kanıt hesaptan başarıyla kaldırıldı - status: Doğrulama durumu - view_proof: Kanıtı görüntüle imports: errors: over_rows_processing_limit: "%{count} satırdan fazlasını içeriyor" @@ -1183,6 +1224,9 @@ tr: reply: proceed: Yanıtlamak için devam edin prompt: 'Bu tootu yanıtlamak istiyorsunuz:' + reports: + errors: + invalid_rules: geçerli kurallara işaret etmez scheduled_statuses: over_daily_limit: O gün için %{limit} zamanlanmış toot sınırını aştınız over_total_limit: "%{limit} zamanlanmış toot sınırını aştınız" @@ -1241,7 +1285,6 @@ tr: edit_profile: Profili düzenle export: Veriyi dışa aktar featured_tags: Öne çıkan etiketler - identity_proofs: Kimlik kanıtları import: İçe aktar import_and_export: İçe ve dışa aktar migrate: Hesap taşıma @@ -1266,18 +1309,19 @@ tr: other: "%{count} video" boosted_from_html: "%{acct_link} kişisinden boostladı" content_warning: 'İçerik uyarısı: %{warning}' + default_language: Arayüz diliyle aynı disallowed_hashtags: one: 'izin verilmeyen bir etiket içeriyordu: %{tags}' other: 'izin verilmeyen hashtag''leri içeriyordu: %{tags}' + edited_at: "%{date} tarihinde düzenlenmiş" errors: in_reply_not_found: Yanıtlamaya çalıştığınız durum yok gibi görünüyor. - language_detection: Dili otomatik olarak algıla open_in_web: Web sayfasında aç over_character_limit: "%{max} karakter limiti aşıldı" pin_errors: + direct: Sadece değinilen kullanıcıların görebileceği gönderiler üstte tutulamaz limit: Hali hazırda maksimum sayıda tootu sabitlediniz ownership: Başkasının tootu sabitlenemez - private: Halka açık olmayan toot sabitlenemez reblog: Bir boost sabitlenemez poll: total_people: @@ -1432,6 +1476,7 @@ tr: formats: default: "%d %b %Y %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Ekle disable: 2FA'yı devre dışı bırak @@ -1459,24 +1504,31 @@ tr: subject: Lütfen oturum açma girişimini onaylayın title: Oturum açma girişimi warning: + categories: + spam: İstenmeyen + violation: İçerik aşağıdaki topluluk ilkelerini ihlal ediyor explanation: - disable: Hesabınız donmuşken, hesap verileriniz bozulmadan kalır, ancak kilidi açılıncaya kadar herhangi bir işlem gerçekleştiremezsiniz. - sensitive: Yüklediğiniz medya dosyalarınız ve bağlantılı medyanız hassas olarak değerlendirilecektir. - silence: Hesabınız sınırlı iken, yalnızca sizi takip eden kişiler bu sunucuda tootlarınızı görecek ve çeşitli halka açık listelerin dışında tutulabilirsiniz. Ancak, diğerleri hala sizi manuel olarak takip edebilir. - suspend: Hesabınız askıya alındı ve tüm tootlarınız ve yüklediğiniz medya dosyalarınız bu sunucudan ve takipçilerinizin bulunduğu sunuculardan geri alınamaz şekilde kaldırıldı. - get_in_touch: "%{instance} çalışanlarıyla iletişim kurmak için bu e-postayı yanıtlayabilirsiniz." + delete_statuses: Bazı gönderilerinizin bir veya daha topluluk ilkemizi ihlal ettiği bulundu ve dolayısıyla %{instance} sunucusu moderatörleri tarafından kaldırıldı. Gelecekteki ihlaller hesabınıza karşı daha sert cezalandırmayla sonuçlanabilir. + disable: Artık hesabınızı kullanamazsınız, ancak profil ve diğer veri sağlam. Verinizin bir yedeğini isteyebilir, hesap ayarlarınızı değiştirebilir veya hesabınızı silebilirsiniz. + sensitive: Artık tüm yüklenmiş ortam dosyalarınız hassas olarak işaretlenecek ve üzerine tıklanarak açılacak şekilde bir uyarının ardına gizlenecektir. + silence: Hesabınız sınırlı iken, yalnızca sizi takip eden kişiler bu sunucudaki gönderilenizi görecek ve çeşitli keşif özelliklerinin dışında bırakılabilirsiniz. Ancak, başkaları sizi manuel olarak hala takip edebilir. + 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: 'Özellikle, şunun için:' + statuses: 'İhlal içeren gönderiler:' subject: + delete_statuses: "%{acct} hesabınızdaki gönderiler kaldırıldı" disable: "%{acct} hesabınız donduruldu" none: "%{acct} için uyarı" - sensitive: Hesabınızdan yayınlanan %{acct} medyanız hassas olarak işaretlendi + sensitive: "%{acct} hesabınızdaki ortam dosyaları artık hassas olarak işaretlenecek" silence: "%{acct} hesabınız sınırlandırıldı" suspend: "%{acct} hesabınız askıya alındı" title: + delete_statuses: Kaldırılan gönderiler disable: Hesap donduruldu none: Uyarı - sensitive: Medyanız hassas olarak işaretlendi + sensitive: Gizlenmiş ortam dosyaları silence: Hesap sınırlandırıldı suspend: Hesap askıya alındı welcome: diff --git a/config/locales/tt.yml b/config/locales/tt.yml index b9fc1b868..ab51124fd 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -103,8 +103,6 @@ tt: status: Халәт updated_at: Яңартылды statuses: - batch: - delete: Бетерү deleted: Бетерелде media: title: Медиа diff --git a/config/locales/uk.yml b/config/locales/uk.yml index f4e60f921..7fe318a8e 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -105,7 +105,6 @@ uk: accounts: add_email_domain_block: Додати поштовий домен до чорного списку approve: Схвалити - approve_all: Схвалити всіх approved_msg: Заявку на реєстрацію %{username} затверджено are_you_sure: Ви впевнені? avatar: Аватар @@ -120,6 +119,7 @@ uk: confirm: Зберегти confirmed: Збережено confirming: Зберігається + custom: Власне delete: Видалити дані deleted: Видалено demote: Усунути @@ -159,7 +159,6 @@ uk: active: Активний all: Усі pending: Очікують - silenced: Заглушені suspended: Призупинені title: Модерація moderation_notes: Нотатки модераторів @@ -177,7 +176,6 @@ uk: redownload: Оновити аватар redownloaded_msg: Профіль %{username} оновлено з джерела походження reject: Відхилити - reject_all: Відхилити усе rejected_msg: Заявку на реєстрацію %{username} відхилено remove_avatar: Видалити аватар remove_header: Видалити заголовок @@ -212,12 +210,14 @@ uk: silence: Глушення silenced: Заглушені statuses: Статуси + strikes: Попередні наліпки subscribe: Підписатися suspended: Призупинені suspension_irreversible: Дані цього облікового запису безповоротно видалено. Ви можете розблокувати обліковий запис, щоб могти ним користуватися, але будь-які його дані не відновляться. suspension_reversible_hint_html: Обліковий запис заблоковано, а дані буде повністю вилучено %{date}. До цього часу обліковий запис можна відновити без будь-яких негативних наслідків. Якщо ви бажаєте вилучити всі дані облікового запису негайно, ви можете зробити це внизу. - time_in_queue: Очікує в черзі %{time} title: Облікові записи + unblock_email: Розблокувати адресу е-пошти + unblocked_email_msg: Адреса електронної пошти %{username} успішно розблокована unconfirmed_email: Непідтверджена адреса електронної пошти undo_sensitized: Скасувати позначення делікатним undo_silenced: Зняти глушення @@ -232,6 +232,7 @@ uk: whitelisted: У білому списку action_logs: action_types: + approve_user: Затвердити користувачів assigned_to_self_report: Призначити звіт change_email_user: Змінити електронну пошту для користувача confirm_user: Підтвердити користувача @@ -249,6 +250,7 @@ uk: destroy_domain_allow: Видалити дозвіл на домен destroy_domain_block: Видалити блокування домену destroy_email_domain_block: Видалити блокування поштового домену + destroy_instance: Очистити домен destroy_ip_block: Видалити правило IP destroy_status: Видалити пост destroy_unavailable_domain: Видалити недоступний домен @@ -261,6 +263,7 @@ uk: enable_user: Активувати користувача memorialize_account: Зробити обліковий запис меморіалом promote_user: Підвищити користувача + reject_user: Відхилити користувача remove_avatar_user: Видалити аватар reopen_report: Перевідкрити скаргу reset_password_user: Скинути пароль @@ -269,6 +272,7 @@ uk: silence_account: Заглушити обліковий запис suspend_account: Призупинити обліковий запис unassigned_report: Видалити скаргу + unblock_email_account: Розблокувати адресу е-пошти unsensitive_account: Прибрати позначку "делікатне" з медіа вашого облікового запису unsilence_account: Розглушити обліковий запис unsuspend_account: Розморозити обліковий запис @@ -277,6 +281,7 @@ uk: update_domain_block: Оновити блокування домену update_status: Оновити статус actions: + approve_user_html: "%{name} схвалює реєстрацію від %{target}" assigned_to_self_report_html: "%{name} створює скаргу %{target} на себе" change_email_user_html: "%{name} змінює поштову адресу користувача %{target}" confirm_user_html: "%{name} підтверджує стан поштової адреси користувача %{target}" @@ -294,6 +299,7 @@ uk: destroy_domain_allow_html: "%{name} скасовує федерацію з доменом %{target}" destroy_domain_block_html: "%{name} розблокує домен %{target}" destroy_email_domain_block_html: "%{name} розблоковує домен електронної пошти %{target}" + destroy_instance_html: "%{name} очищує домен %{target}" destroy_ip_block_html: "%{name} видаляє правило для IP %{target}" destroy_status_html: "%{name} видаляє статус %{target}" destroy_unavailable_domain_html: "%{name} відновлює доставляння на домен %{target}" @@ -306,6 +312,7 @@ uk: enable_user_html: "%{name} вмикає вхід для користувача %{target}" memorialize_account_html: "%{name} перетворює обліковий запис %{target} на сторінку пам'яті" promote_user_html: "%{name} підвищує користувача %{target}" + reject_user_html: "%{name} відхиляє реєстрацію від %{target}" remove_avatar_user_html: "%{name} прибирає аватар %{target}" reopen_report_html: "%{name} знову відкриває звіт %{target}" reset_password_user_html: "%{name} скидає пароль користувача %{target}" @@ -314,6 +321,7 @@ uk: silence_account_html: "%{name} приглушує обліковий запис %{target}" suspend_account_html: "%{name} заморожує обліковий запис %{target}" unassigned_report_html: "%{name} прибирає призначення скарги %{target}" + unblock_email_account_html: "%{name} розблоковує електронну пошту %{target}" unsensitive_account_html: '%{name} прибирає позначку "делікатне" з медіа від %{target}' unsilence_account_html: "%{name} розглушує обліковий запис %{target}" unsuspend_account_html: "%{name} розморожує обліковий запис %{target}" @@ -393,7 +401,7 @@ uk: one: "<strong>1</strong> хештеґ у черзі" other: "<strong>%{count}</strong> хештеґи у черзі" pending_users_html: - few: "<strong>%{count}</strong> користувачі у черзі" + few: "<strong>%{count}</strong> користувача у черзі" many: "<strong>%{count}</strong> користувачів у черзі" one: "<strong>1</strong> користувач у черзі" other: "<strong>%{count}</strong> користувача у черзі" @@ -479,6 +487,7 @@ uk: back_to_limited: Обмежені back_to_warning: Попередження by_domain: Домен + confirm_purge: Ви впевнені, що хочете видалити ці дані з цього домену? delivery: all: Усі clear: Очистити помилки доставляння @@ -496,6 +505,7 @@ uk: delivery_available: Доставлення доступне delivery_error_days: Днів помилок доставляння delivery_error_hint: Якщо доставляння неможливе впродовж %{count} днів, воно автоматично позначиться недоставленим. + destroyed_msg: Дані з %{domain} тепер у черзі на видалення. empty: Доменів не знайдено. known_accounts: few: "%{count} відомих облікових записів" @@ -508,6 +518,7 @@ uk: title: Модерація private_comment: Приватний коментар public_comment: Публічний коментар + purge: Очисти title: Відомі інстанції total_blocked_by_us: Заблокованих нами total_followed_by_them: Вони стежать за @@ -537,8 +548,6 @@ uk: title: Створити нове правило IP no_ip_block_selected: Жодних правил IP не було змінено, оскільки жодного не було вибрано title: Правила IP - pending_accounts: - title: Облікові записи у черзі (%{count}) relationships: title: "%{acct} відносини" relays: @@ -560,6 +569,7 @@ uk: report_notes: created_msg: Скарга успішно створена! destroyed_msg: Скарга успішно видалена! + today_at: Сьогодні о %{time} reports: account: notes: @@ -567,29 +577,38 @@ uk: many: "%{count} приміток" one: "%{count} примітка" other: "%{count} приміток" - reports: - few: "%{count} скарги" - many: "%{count} скарг" - one: "%{count} скарга" - other: "%{count} скарг" + action_log: Журнал подій action_taken_by: Дія виконана + actions: + other_description_html: Більше опцій керування поведінкою облікового запису і налаштування комунікації з обліковим записом, на який поскаржилися. + silence_description_html: Профіль буде видимий лише тим, хто вже стежить за ним або знайде його самостійно, сильно обмежуючи його знаходження. Можна потім скасувати. + suspend_description_html: Профіль і весь його вміст буде недоступним, поки його не буде видалено. Взаємодія з обліковим записом буде неможливою. + actions_description_html: 'Якщо вилучення зазначеного образливого вмісту недостатньо:' + add_to_report: Додати ще подробиць до скарги are_you_sure: Ви впевнені? assign_to_self: Призначити мені assigned: Призначений модератор by_target_domain: Домен облікового запису, на який скаржаться + category: Категорія + category_description_html: Причина скарги на цей обліковий запис та/або вміст, яку буде вказано у звіті comment: none: Немає + comment_description_html: 'Щоб надати більше відомостей, %{name} пише:' created_at: Створено + delete_and_resolve: Видалити й розв'язати forwarded: Переслано forwarded_to: Переслано до %{domain} mark_as_resolved: Відмітити як вирішену mark_as_unresolved: Відмітити як невирішену + no_one_assigned: Ніхто notes: create: Додати примітку create_and_resolve: Розв'язати з приміткою create_and_unresolve: Перевідкрити з приміткою delete: Видалити placeholder: Опишіть, які дії були виконані, або інші зміни, що стосуються справи... + title: Примітки + notes_description_html: Переглядайте та залишайте примітки для інших модераторів та для себе на майбутнє reopen: Перевідкрити скаргу report: 'Скарга #%{id}' reported_account: Обліковий запис порушника @@ -597,11 +616,14 @@ uk: resolved: Вирішено resolved_msg: Скаргу успішно вирішено! status: Статус + statuses: Вміст, на який поскаржилися + statuses_description_html: Замінений вміст буде цитований у спілкуванні з обліковим записом, на який поскаржилися target_origin: Походження облікового запису, на який скаржаться title: Скарги unassign: Зняти призначення unresolved: Невирішені updated_at: Оновлені + view_profile: Переглянути профіль rules: add_new: Додати правило delete: Видалити @@ -705,15 +727,13 @@ uk: destroyed_msg: Завантаження сайту успішно видалено! statuses: back_to_account: Назад до сторінки облікового запису + back_to_report: Повернутися до сторінки скарги batch: - delete: Видалити - nsfw_off: Відмітити прийнятним - nsfw_on: Відмітити неприйнятним + remove_from_report: Вилучити зі скарги + report: Скарга deleted: Видалено - failed_to_execute: Не вийшло media: title: Медіа - no_media: Немає медіа no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано title: Статуси облікових записів with_media: З медіа @@ -726,21 +746,55 @@ uk: sidekiq_process_check: message_html: Не працює процес Sidekiq для %{value} черги. Перегляньте конфігурації вашого Sidekiq tags: - accounts_today: Унікальних використань за сьогодні - accounts_week: Унікальних використань за тиждень - breakdown: Аналіз використання за сьогодні за джерелом - last_active: За активністю - most_popular: За популярністю - most_recent: За часом створення - name: Хештеґ review: Переглянути статус - reviewed: Переглянуто - title: Хештеґи - trending_right_now: Популярні саме зараз - unique_uses_today: "%{count} постять сьогодні" - unreviewed: Не переглянуто updated_msg: Параметри хештеґів успішно оновлені title: Адміністрування + trends: + allow: Дозволити + approved: Схвалено + disallow: Заборонити + links: + allow: Дозволити посилання + allow_provider: Дозволити публікатора + disallow: Заборонити посилання + disallow_provider: Заборонити публікатора + shared_by_over_week: + few: Поширили %{count} людини за останній тиждень + many: Поширили %{count} людей за останній тиждень + one: Поширила одна людина за останній тиждень + other: Поширили %{count} людини за останній тиждень + title: Популярні посилання + usage_comparison: Сьогодні поширено %{today} разів, у порівнянні з %{yesterday} вчора + pending_review: Очікує перевірки + preview_card_providers: + allowed: Посилання цього публікатора можуть бути популярними + rejected: Посилання цього публікатора можуть не будуть популярними + title: Публікатори + rejected: Відхилено + tags: + current_score: Поточний результат %{score} + dashboard: + tag_accounts_measure: унікальних використань + tag_languages_dimension: Найуживаніші мови + tag_servers_dimension: Найуживаніші сервери + tag_servers_measure: різні сервери + tag_uses_measure: всього використань + listable: Може бути запропоновано + 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: + few: Використали %{count} людини за минулий тиждень + many: Використали %{count} людей за минулий тиждень + one: Використала одна людина за минулий тиждень + other: Використали %{count} людини за минулий тиждень + title: Популярні warning_presets: add_new: Додати новий delete: Видалити @@ -755,9 +809,16 @@ uk: body: "%{reporter} поскаржився(-лася) на %{target}" body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target} subject: Нова скарга до %{instance} (#%{id}) - new_trending_tag: - body: 'Хештег #%{name} сьогодні є в тренді, але раніше не переглядався. Він не відображатиметься публічно, якщо ви не дозволите це чи просто збережете форму, щоб ніколи більше про нього не чути.' - subject: Новий хештеґ надіслано на розгляд до %{instance} (#%{name}) + new_trending_links: + body: Ці посилання сьогодні популярні, але їх публікатори не були попередньо перевірені. Їх не буде показано публічно, якщо ви їх не затвердите. Подальші сповіщення від тих самих публікаторів не будуть згенеровані. + no_approved_links: На цей час немає схвалених популярних посилань. + requirements: Найнижче затверджене популярне посилання на цю хвилю "%{lowest_link_title}" з результатом %{lowest_link_score}. + subject: Нові популярні посилання до розгляду на %{instance} + new_trending_tags: + body: 'Ці хештеги популярні сьогодні, але їх попередньо не розглядали. Їх не буде показано публічно, якщо ви не затвердите їх:' + no_approved_tags: На цей час немає схвалених популярних хештегів. + requirements: 'Найнижчий затверджений популярний хештег на цю хвилю #%{lowest_tag_name} з результатом %{lowest_tag_score}.' + subject: Нові популярні хештеги до розгляду на %{instance} aliases: add_new: Створити псевдонім created_msg: Новий псевдонім успішно створено. Тепер ви можете починати переміщення зі старого облікового запису. @@ -809,6 +870,7 @@ uk: invalid_reset_password_token: Токен скидання паролю неправильний або просрочений. Спробуйте попросити новий. link_to_otp: Введіть двофакторний код з вашого телефону або код відновлення link_to_webauth: Використовувати пристрій ключа безпеки + log_in_with: Увійти через login: Увійти logout: Вийти migrate_account: Переїхати на інший обліковий запис @@ -964,9 +1026,10 @@ uk: changes_saved_msg: Зміни успішно збережені! copy: Копіювати delete: Видалити - no_batch_actions_available: На цій сторінці немає запланованих дій + none: Немає order_by: Сортувати за save_changes: Зберегти зміни + today: сьогодні validation_errors: few: Щось досі не гаразд! Перегляньте %{count} повідомлень про помилки many: Щось досі не гаразд! Перегляньте %{count} повідомлень про помилки @@ -974,26 +1037,6 @@ uk: other: Щось досі не гаразд! Перегляньте %{count} повідомлень про помилки html_validator: invalid_markup: 'містить неприпустиму HTML розмітку: %{error}' - identity_proofs: - active: Активне - authorize: Так, авторизувати - authorize_connection_prompt: Авторизувати це зашифроване з'єднання? - errors: - failed: Не вдалося встановити це зашифроване з'єднання. Спробуйте ще раз за допомогою %{provider}. - keybase: - invalid_token: Токени Keybase - це хеші від підписів і повинні бути по довжині в 66 hex-символів - verification_failed: Keybase не розпізнає цей токен як підпис користувача Keybase %{kb_username}. Будь-ласка, спробуйте з Keybase. - wrong_user: Неможливо підтвердити користувача%{proving}, під час входу в систему як %{current}. Виконайте вхід як %{proving} і спробуйте ще раз. - explanation_html: На цій сторінці відображаються криптографічні підтверджені ідентифікатори - наприклад, прив'язаний профіль Keybase. Це дозволяє людям відправляти вам зашифровані повідомлення, а також довіряти вашим постам. - i_am_html: Я %{username} з %{service}. - identity: Ідентичність - inactive: Неактивний - publicize_checkbox: 'Та дмухнути це:' - publicize_toot: 'Це доведено! Я таки %{username} з %{service}: %{url}' - remove: Видалення підтвердження з облікового запису - removed: Підтвердження видалено з облікового запису - status: Стан перевірки - view_proof: Переглянути доказ imports: errors: over_rows_processing_limit: містить більше ніж %{count} рядків @@ -1215,6 +1258,9 @@ uk: reply: proceed: Перейти до відповіді prompt: 'Ви хочете відповісти на цей дмух:' + reports: + errors: + invalid_rules: не посилається на чинні правила scheduled_statuses: over_daily_limit: Ви перевищили ліміт в %{limit} запланованих дмухів на сьогодні over_total_limit: Ви перевищили ліміт в %{limit} запланованих дмухів @@ -1273,7 +1319,6 @@ uk: edit_profile: Редагувати профіль export: Експорт даних featured_tags: Рекомендовані хештеґи - identity_proofs: Докази ідентичності import: Імпорт import_and_export: Імпорт та експорт migrate: Міграція облікового запису @@ -1304,20 +1349,21 @@ uk: other: "%{count} відео" boosted_from_html: Просунуто від %{acct_link} content_warning: 'Попередження про контент: %{warning}' + default_language: Така ж як і мова інтерфейсу disallowed_hashtags: few: 'заборонених хештеґа: %{tags}' many: 'заборонених хештеґів: %{tags}' one: 'заборонений хештеґ: %{tags}' other: 'заборонених хештеґів: %{tags}' + edited_at: Відредаговано %{date} errors: in_reply_not_found: Статуса, на який ви намагаєтеся відповісти, не існує. - language_detection: Автоматично визначати мову open_in_web: Відкрити у вебі over_character_limit: перевищено ліміт символів (%{max}) pin_errors: + direct: Не можливо прикріпити дописи, які видимі лише згаданим користувачам limit: Ви вже закріпили максимальну кількість постів ownership: Не можна закріпити чужий пост - private: Не можна закріпити непублічний пост reblog: Не можна закріпити просунутий пост poll: total_people: @@ -1396,6 +1442,7 @@ uk: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Додати disable: Вимкнути @@ -1423,24 +1470,31 @@ uk: subject: Будь ласка, підтвердіть спробу входу title: Спроба входу warning: + categories: + spam: Спам + violation: Вміст порушує такі правила спільноти explanation: - disable: Поки ваш обліковий запис заморожений, його дані залишаються незмінними. Проте ви не зможете виконувати будь-які дії над обліковим записом, доки його не буде розблоковано. - sensitive: Ваші завантажені медіа-файли та пов'язані медіа вважатимуться делікатними. - silence: Поки ваш обліковий запис обмежено, ваші дмухи на цьому сервері бачитимуть лише ті люди, які вже слідкують за вами, а вас може бути виключено з різних публічних списків. Тим не менш, інші можуть слідкувати за вами вручну. - suspend: Ваш обліковий запис було призупинено, а всі ваші дмухи і вивантажені медіафайли - безповоротно видалено з цього сервера та серверів, де ви мали послідовників. - get_in_touch: Ви можете відповісти на цей електронний лист, щоб зконтактувати з працівниками %{instance}. + delete_statuses: Деякі з ваших дописів порушили одне або кілька правил спільноти, і модератори %{instance} видалили їх. Майбутні порушення можуть призвести до жорсткіших дій щодо вашого облікового запису. + disable: Ви можете більше не використовувати свій обліковий запис, але ваш профіль та інші дані залишаються недоторканими. Ви можете надіслати запит на створення резервної копії ваших даних, змінити налаштування облікового запису або видалити свій обліковий запис. + sensitive: Відтепер усі ваші завантажені медіафайли будуть позначені делікатними й приховані за попередженням. + silence: Ви й надалі можете користуватися своїм обліковим записом, але ваші дописи на цьому сервері бачитимуть лише ті люди, які вже стежать за вами, а вас може бути виключено з різних можливостей виявлення. Проте, інші можуть почати стежити за вами вручну. + suspend: Ви більше не можете користуватися своїм обліковим записом, а ваші інші дані більше недоступні. Ви досі можете увійти, щоб надіслати запит на отримання резервної копії своїх даних до повного видалення впродовж приблизно 30 днів, але ми збережемо деякі основні дані, щоб унеможливити ухилення вами від призупинення. + get_in_touch: Якщо ви вважаєте, що це помилка, ви можете відповісти на цей електронний лист, щоб зв'язатися з персоналом %{instance}. + reason: 'Причина:' review_server_policies: Переглянути політики сервера - statuses: 'Зокрема, для:' + statuses: 'Дописи, які порушили правила:' subject: + delete_statuses: Ваші дописи на %{acct} були вилучені disable: Ваш обліковий запис %{acct} було заморожено none: Попередження для %{acct} - sensitive: Ваш обліковий запис %{acct} надсилав медіа позначені делікатними + sensitive: Ваші медіафайли на %{acct} відтепер будуть позначені делікатними silence: Ваш обліковий запис %{acct} було обмежено suspend: Ваш обліковий запис %{acct} було призупинено title: + delete_statuses: Дописи вилучено disable: Обліковий запис заморожено none: Попередження - sensitive: Ваші медіа позначено делікатними + sensitive: Медіа приховано silence: Ообліковий запис обмежено suspend: Обліковий запис призупинено welcome: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 01caf1ab0..2464bbaa8 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -2,7 +2,7 @@ vi: about: about_hashtag_html: Đây là các tút <strong>#%{hashtag}</strong> trên mạng liên hợp. Bạn có thể tương tác với chúng sau khi đăng nhập. - about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không theo dõi người dùng và phi tập quyền! Làm chủ quyền riêng tư của bạn với Mastodon!' + about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' about_this: Giới thiệu active_count_after: hoạt động active_footnote: Người dùng hoạt động hàng tháng (MAU) @@ -21,7 +21,7 @@ vi: federation_hint_html: Đăng ký tài khoản %{instance} là bạn có thể giao tiếp với bất cứ ai trên bất kỳ máy chủ Mastodon nào và còn hơn thế nữa. get_apps: Ứng dụng di động hosted_on: "%{domain} vận hành nhờ Mastodon" - instance_actor_flash: Đây là một tài khoản ảo được sử dụng để đại diện cho máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên chặn trừ khi bạn muốn chặn toàn bộ máy chủ. + instance_actor_flash: "Đây là một tài khoản ảo được sử dụng để đại diện cho máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên chặn trừ khi bạn muốn chặn toàn bộ máy chủ. \n" learn_more: Tìm hiểu privacy_policy: Chính sách bảo mật rules: Quy tắc máy chủ @@ -48,7 +48,7 @@ vi: user_count_after: other: người dùng user_count_before: Nhà của - what_is_mastodon: Mastodon là gì? + what_is_mastodon: Tham gia Mastodon accounts: choices_html: "%{name} tôn vinh:" endorsements_hint: Bạn có thể tôn vinh những người bạn theo dõi và họ sẽ hiển thị ở giao diện web. @@ -93,7 +93,6 @@ vi: accounts: add_email_domain_block: Chặn tên miền email approve: Phê duyệt - approve_all: Phê duyệt tất cả approved_msg: Đã phê duyệt %{username} đăng ký thành công are_you_sure: Bạn có chắc không? avatar: Ảnh đại diện @@ -108,11 +107,12 @@ vi: confirm: Phê duyệt confirmed: Đã xác thực confirming: Chờ xác nhận + custom: Tùy chỉnh delete: Xóa dữ liệu deleted: Đã xóa - demote: Xóa chức vụ + demote: Xóa vai trò destroyed_msg: Dữ liệu %{username} sẽ được lên lịch xóa ngay bây giờ - disable: Tạm khóa + disable: Khóa disable_sign_in_token_auth: Tắt xác thực bằng email disable_two_factor_authentication: Vô hiệu hóa xác thực hai bước disabled: Đã vô hiệu hóa @@ -147,7 +147,6 @@ vi: active: Hoạt động all: Toàn bộ pending: Chờ xử lý - silenced: Hạn chế suspended: Vô hiệu hóa title: Trạng thái moderation_notes: Nhật ký kiểm duyệt @@ -158,14 +157,13 @@ vi: not_subscribed: Chưa đăng ký pending: Chờ duyệt perform_full_suspension: Vô hiệu hóa - promote: Chỉ định chức vụ + promote: Chỉ định vai trò protocol: Giao thức public: Công khai push_subscription_expires: Đăng ký PuSH hết hạn redownload: Làm mới trang cá nhân redownloaded_msg: Đã tiếp nhận tài khoản %{username} thành công reject: Từ chối - reject_all: Từ chối tất cả rejected_msg: Đã từ chối đăng ký tài khoản %{username} remove_avatar: Xóa ảnh đại diện remove_header: Xóa ảnh bìa @@ -178,7 +176,7 @@ vi: reset: Làm tươi reset_password: Đặt lại mật khẩu resubscribe: Đăng ký lại - role: Chức vụ + role: Vai trò roles: admin: Quản trị viên moderator: Kiểm duyệt viên @@ -200,12 +198,14 @@ vi: silence: Ẩn silenced: Hạn chế statuses: Tút + strikes: Những lần trước subscribe: Đăng ký 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. - time_in_queue: Đang chờ cách đây %{time} title: Tài khoản + unblock_email: Mở khóa địa chỉ email + unblocked_email_msg: Mở khóa thành công địa chỉ email của %{username} unconfirmed_email: Email chưa được xác thực undo_sensitized: Đánh dấu bình thường undo_silenced: Bỏ hạn chế @@ -220,6 +220,7 @@ vi: whitelisted: Danh sách trắng action_logs: action_types: + 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 confirm_user: Xác thực @@ -231,24 +232,26 @@ vi: create_email_domain_block: Tạo chặn tên miền email mới create_ip_block: Tạo chặn IP mới create_unavailable_domain: Tạo máy chủ không khả dụng - demote_user: Xóa chức vụ + demote_user: Xóa vai trò destroy_announcement: Xóa thông báo destroy_custom_emoji: Xóa emoji destroy_domain_allow: Xóa máy chủ cho phép destroy_domain_block: Xóa máy chủ đã chặn destroy_email_domain_block: Xóa tên miền email đã chặn + destroy_instance: Thanh trừng máy chủ destroy_ip_block: Xóa IP đã chặn destroy_status: Xóa tút destroy_unavailable_domain: Xóa máy chủ không khả dụng disable_2fa_user: Vô hiệu hóa 2FA disable_custom_emoji: Vô hiệu hóa emoji disable_sign_in_token_auth_user: Tắt xác thực bằng email cho người dùng - disable_user: Tạm khóa người dùng + disable_user: Khóa người dùng enable_custom_emoji: Kích hoạt Emoji enable_sign_in_token_auth_user: Bật xác thực bằng email cho người dùng 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 chức vụ + promote_user: Chỉ định vai trò + 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 reset_password_user: Đặt lại mật khẩu @@ -257,6 +260,7 @@ vi: silence_account: Đánh dấu hạn chế suspend_account: Đánh dấu vô hiệu hóa unassigned_report: Báo cáo chưa xử lý + unblock_email_account: Mở khóa địa chỉ email unsensitive_account: Bỏ nhạy cảm unsilence_account: Bỏ hạn chế unsuspend_account: Bỏ vô hiệu hóa @@ -265,6 +269,7 @@ vi: update_domain_block: Cập nhật máy chủ chặn update_status: Cập nhật tút actions: + 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}" confirm_user_html: "%{name} xác nhận địa chỉ email của người dùng %{target}" @@ -276,12 +281,13 @@ vi: create_email_domain_block_html: "%{name} chặn tên miền email %{target}" create_ip_block_html: "%{name} đã chặn IP %{target}" create_unavailable_domain_html: "%{name} ngưng phân phối với máy chủ %{target}" - demote_user_html: "%{name} đã xóa chức vụ %{target}" + demote_user_html: "%{name} đã xóa vai trò của %{target}" destroy_announcement_html: "%{name} xóa thông báo %{target}" destroy_custom_emoji_html: "%{name} đã xóa emoji %{target}" destroy_domain_allow_html: "%{name} đã ngừng liên hợp với %{target}" destroy_domain_block_html: "%{name} bỏ chặn tên miền email %{target}" destroy_email_domain_block_html: "%{name} bỏ chặn tên miền email %{target}" + destroy_instance_html: "%{name} thanh trừng máy chủ %{target}" destroy_ip_block_html: "%{name} bỏ chặn IP %{target}" destroy_status_html: "%{name} đã xóa tút của %{target}" destroy_unavailable_domain_html: "%{name} tiếp tục phân phối với máy chủ %{target}" @@ -293,7 +299,8 @@ vi: enable_sign_in_token_auth_user_html: "%{name} bật xác thực email của %{target}" 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 chức vụ cho %{target}" + promote_user_html: "%{name} chỉ định vai trò cho %{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}" reset_password_user_html: "%{name} đặt lại mật khẩu của người dùng %{target}" @@ -302,6 +309,7 @@ vi: silence_account_html: "%{name} đã ẩn %{target}" suspend_account_html: "%{name} đã vô hiệu hóa %{target}" unassigned_report_html: "%{name} đã xử lý báo cáo %{target} chưa xử lí" + unblock_email_account_html: "%{name} mở khóa địa chỉ email của %{target}" unsensitive_account_html: "%{name} đánh dấu nội dung của %{target} là bình thường" unsilence_account_html: "%{name} đã bỏ ẩn %{target}" unsuspend_account_html: "%{name} đã ngừng vô hiệu hóa %{target}" @@ -365,9 +373,25 @@ vi: updated_msg: Cập nhật thành công Emoji! upload: Tải lên dashboard: + active_users: người dùng hoạt động + interactions: tương tác + 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_reports_html: + other: "<strong>%{count}</strong> báo cáo đang chờ" + pending_tags_html: + other: "<strong>%{count}</strong> hashtag đang chờ" + pending_users_html: + other: "<strong>%{count}</strong> người dùng đang chờ" + resolved_reports: báo cáo đã xử lí software: Phần mềm + sources: Nguồn đăng ký space: Dung lượng lưu trữ title: Thống kê + top_languages: Ngôn ngữ phổ biến + top_servers: Máy chủ phổ biến + website: Website 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 @@ -439,6 +463,7 @@ vi: back_to_limited: Hạn chế back_to_warning: Cảnh báo by_domain: Máy chủ + confirm_purge: Bạn có chắc chắn muốn xóa dữ liệu từ máy chủ này vĩnh viễn? delivery: all: Toàn bộ clear: Xóa phân phối lỗi @@ -453,6 +478,7 @@ vi: delivery_available: Cho phép liên kết delivery_error_days: Ngày lỗi phân phối delivery_error_hint: Nếu không thể phân phối sau %{count} ngày, nó sẽ tự dộng đánh dấu là không thể phân phối. + 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" @@ -462,6 +488,7 @@ vi: title: Kiểm duyệt private_comment: Bình luận riêng public_comment: Bình luận công khai + purge: Thanh trừng title: Mạng liên hợp total_blocked_by_us: Bị chặn bởi chúng ta total_followed_by_them: Được họ theo dõi @@ -491,8 +518,6 @@ vi: title: Chặn một IP mới no_ip_block_selected: Bạn chưa chọn bất kỳ IP nào title: Những IP bị chặn - pending_accounts: - title: Tài khoản đang chờ xem xét (%{count}) relationships: title: Mối quan hệ của %{acct} relays: @@ -514,30 +539,43 @@ vi: report_notes: created_msg: Đã thêm ghi chú kiểm duyệt! destroyed_msg: Đã xóa ghi chú kiểm duyệt! + today_at: Hôm nay lúc %{time} reports: account: notes: other: "%{count} kiểm duyệt" - reports: - other: "%{count} báo cáo" + action_log: Nhật ký kiểm duyệt action_taken_by: Hành động được thực hiện bởi + actions: + 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. + 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 đủ:' + 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 assigned: Người xử lý by_target_domain: Tên tài khoản bị báo cáo + category: Phân loại + category_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 comment: 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 forwarded: Chuyển tiếp forwarded_to: Chuyển tiếp tới %{domain} mark_as_resolved: Đã xử lý xong! mark_as_unresolved: Mở lại + no_one_assigned: Chưa có notes: create: Ghi chú create_and_resolve: Xử lý create_and_unresolve: Mở lại kèm ghi chú mới delete: Xóa bỏ 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 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 @@ -545,11 +583,14 @@ vi: resolved: Đã xử lý xong resolved_msg: Đã xử lý báo cáo xong! 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 target_origin: Nguồn đã báo cáo người dùng title: Báo cáo unassign: Bỏ qua unresolved: Chờ xử lý updated_at: Cập nhật lúc + view_profile: Xem trang cá nhân rules: add_new: Thêm quy tắc delete: Xóa bỏ @@ -584,7 +625,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 × 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 x 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 @@ -651,15 +692,13 @@ vi: destroyed_msg: Đã xóa tập tin tải lên thành công! statuses: back_to_account: Quay lại trang tài khoản + back_to_report: Quay lại trang báo cáo batch: - delete: Xóa bỏ - nsfw_off: Đánh dấu là bình thường - nsfw_on: Đánh dấu là nhạy cảm + remove_from_report: Xóa khỏi báo cáo + report: Báo cáo deleted: Đã xóa - failed_to_execute: Không thể thực thi media: title: Media - no_media: Toàn bộ 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 @@ -672,21 +711,49 @@ vi: sidekiq_process_check: message_html: Sidekiq không hoạt động khi truy vấn %{value}. Hãy kiểm tra lại cấu hình Sidekiq tags: - accounts_today: Sử dụng hôm nay - accounts_week: Sử dụng trong tuần - breakdown: Thống kê số lượt dùng hôm nay - last_active: Hôm nay - most_popular: Phổ biến nhất - most_recent: Gần đây - name: Hashtag review: Phê duyệt - reviewed: Đã phê duyệt - title: Hashtag - trending_right_now: Xu hướng - unique_uses_today: "%{count} tút dùng hôm nay" - unreviewed: Chưa phê duyệt updated_msg: Hashtag đã được cập nhật thành công title: Quản trị + trends: + allow: Cho phép + approved: Đã cho phép + disallow: Cấm + links: + allow: Liên kết cho phép + allow_provider: Nguồn đăng cho phép + 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 + 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ờ + preview_card_providers: + allowed: Liên kết từ nguồn đăng này có thể thành xu hướng + rejected: Liên kết từ nguồn đăng không thể thành xu hướng + title: Nguồn đăng + rejected: Đã cấm + tags: + current_score: Chỉ số gần đây %{score} + dashboard: + tag_accounts_measure: lần dùng + tag_languages_dimension: Top ngôn ngữ + tag_servers_dimension: Top máy chủ + tag_servers_measure: máy chủ khác + tag_uses_measure: tổng người dùng + listable: Có thể đề xuất + not_listable: Không thể đề xuất + not_trendable: Không xuất hiện xu hướng + not_usable: Không được phép dùng + peaked_on_and_decaying: Đỉnh điểm %{date}, giờ đang giảm + title: Hashtag xu hướng + trendable: Có thể xuất hiện thành xu hướng + trending_rank: 'Xu hướng #%{rank}' + 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 + title: Xu hướng warning_presets: add_new: Thêm mới delete: Xóa bỏ @@ -701,9 +768,16 @@ vi: body: "%{reporter} vừa báo cáo %{target}" body_remote: Ai đó từ %{domain} đã báo cáo %{target} subject: "(%{instance}) Báo cáo #%{id}" - new_trending_tag: - body: 'Hashtag # %{name} đang là xu hướng nhưng chưa được kiểm duyệt. Nó sẽ không được hiển thị công khai trừ khi bạn cho phép. Bỏ qua nếu bạn không bao giờ muốn thấy nó xuất hiện.' - subject: Hashtag mới được xem xét trên %{instance} (# %{name}) + new_trending_links: + body: Các liên kết này đang là xu hướng hôm nay, nhưng các nguồn đăng của chúng chưa được xem xét trước đây. Chúng sẽ không được hiển thị công khai trừ khi bạn cho phép chúng. Các thông báo khác từ cùng một nguồn đăng sẽ không được tạo. + no_approved_links: Hiện tại không có liên kết xu hướng nào được cho phép. + requirements: Liên kết xu hướng được cho phép thấp nhất hiện tại là "%{lowest_link_title}" với chỉ số %{lowest_link_score}. + subject: Liên kết xu hướng mới chờ duyệt trên %{instance} + new_trending_tags: + body: 'Các hashtag này đang là xu hướng hôm nay, nhưng chúng chưa được xem xét trước đó. Chúng sẽ không được hiển thị công khai trừ khi bạn cho phép chúng:' + no_approved_tags: Hiện tại không có hashtag xu hướng nào được cho phép. + requirements: 'Hashtag xu hướng được cho phép thấp nhất hiện tại là #%{lowest_tag_name} với chỉ số %{lowest_tag_score}.' + subject: Hashtag xu hướng mới chờ duyệt trên %{instance} aliases: add_new: Kết nối tài khoản created_msg: Tạo thành công một tên hiển thị mới. Bây giờ bạn có thể bắt đầu di chuyển từ tài khoản cũ. @@ -755,6 +829,7 @@ vi: invalid_reset_password_token: Mã đặt lại mật khẩu không hợp lệ hoặc hết hạn. Vui lòng yêu cầu một cái mới. link_to_otp: Nhập mã xác thực từ điện thoại hoặc mã phục hồi link_to_webauth: Nhập khóa bảo mật từ thiết bị + log_in_with: Đăng nhập bằng login: Đăng nhập logout: Đăng xuất migrate_account: Chuyển sang tài khoản khác @@ -910,33 +985,14 @@ vi: changes_saved_msg: Đã cập nhật thay đổi xong! copy: Sao chép delete: Xóa - no_batch_actions_available: Không có sẵn hành động hàng loạt trên trang này + none: Trống order_by: Sắp xếp save_changes: Lưu thay đổi + today: hôm nay validation_errors: other: Đã có %{count} lỗi xảy ra! Xem chi tiết bên dưới html_validator: invalid_markup: 'chứa đánh dấu HTML không hợp lệ: %{error}' - identity_proofs: - active: Hoạt động - authorize: OK, cho phép - authorize_connection_prompt: Cho phép kết nối mã hóa này? - errors: - failed: Kết nối mã hóa không thành công. Vui lòng thử lại từ %{provider}. - keybase: - invalid_token: Mã đăng nhập Keybase giống như chữ ký số và phải đảm bảo 66 ký tự hex - verification_failed: Keybase không nhận ra mã đăng nhập này là chữ ký của người dùng Keybase %{kb_username}. Vui lòng thử lại từ Keybase. - wrong_user: Không thể tạo bằng chứng cho %{proving} trong khi đăng nhập là %{current}. Đăng nhập bằng %{proving} và thử lại. - explanation_html: Tại đây, bạn có thể kết nối mã hóa tài khoản của bạn trên các nền tảng khác, chẳng hạn như Keybase. Điều này cho phép người khác gửi cho bạn tin nhắn được mã hóa và tin tưởng nội dung bạn gửi cho họ. - i_am_html: Tôi là %{username} trên %{service}. - identity: Danh tính - inactive: Không hoạt động - publicize_checkbox: 'Và tút này:' - publicize_toot: 'Đã chứng minh! Tôi là %{username} trên %{service}: %{url}' - remove: Xóa bằng chứng của tài khoản - removed: Hoàn tất xóa bằng chứng của tài khoản - status: Tình trạng xác minh - view_proof: Xem bằng chứng imports: errors: over_rows_processing_limit: chứa nhiều hơn %{count} hàng @@ -1149,6 +1205,9 @@ vi: reply: proceed: Tiếp tục trả lời prompt: Bạn có muốn trả lời tút này? + reports: + errors: + invalid_rules: không đúng với quy tắc scheduled_statuses: over_daily_limit: Bạn đã vượt qua giới hạn được lên lịch đăng tút %{limit} hôm nay over_total_limit: Bạn đã vượt quá giới hạn %{limit} của các tút được lên lịch @@ -1207,7 +1266,6 @@ vi: edit_profile: Trang cá nhân export: Xuất dữ liệu featured_tags: Hashtag thường dùng - identity_proofs: Bằng chứng nhận dạng import: Nhập dữ liệu import_and_export: Dữ liệu migrate: Chuyển tài khoản sang máy chủ khác @@ -1229,17 +1287,18 @@ vi: other: "%{count} video" boosted_from_html: Đã chia sẻ từ %{acct_link} content_warning: 'Cảnh báo nội dung: %{warning}' + default_language: Giống ngôn ngữ giao diện disallowed_hashtags: other: 'chứa các hashtag bị cấm: %{tags}' + edited_at: Đã sửa %{date} errors: in_reply_not_found: Bạn đang trả lời một tút không còn tồn tại. - language_detection: Tự động phát hiện ngôn ngữ open_in_web: Xem trong web over_character_limit: vượt quá giới hạn %{max} ký tự pin_errors: + direct: Không thể ghim những tút nhắn riêng limit: Bạn đã ghim quá số lượng tút cho phép ownership: Không thể ghim tút của người khác - private: Tút riêng tư nên không thể ghim reblog: Không thể ghim chia sẻ poll: total_people: @@ -1254,7 +1313,7 @@ vi: sign_in_to_participate: Đăng nhập để trả lời tút này title: '%{name}: "%{quote}"' visibilities: - direct: Nhắn tin + direct: Nhắn riêng private: Riêng tư private_long: Chỉ người theo dõi mới được xem public: Công khai @@ -1359,6 +1418,7 @@ vi: formats: default: "%d.%m.%Y %H:%M" month: "%B %Y" + time: "%H:%M" two_factor_authentication: add: Thêm disable: Vô hiệu hóa @@ -1386,24 +1446,31 @@ vi: subject: Xác nhận đăng nhập title: Đăng nhập warning: + categories: + spam: Spam + violation: Nội dung vi phạm quy tắc cộng đồng explanation: - disable: Bạn bị cấm đăng nhập tài khoản. Tuy nhiên, trang cá nhân và dữ liệu của bạn vẫn sẽ được giữ nguyên. - sensitive: Ảnh và video tải lên của bạn sẽ bị đánh dấu là nhạy cảm. - silence: Bạn vẫn có thể dùng tài khoản của bạn. Tuy nhiên, chỉ có những người đang theo dõi bạn mới có thể thấy tút của bạn. Bạn sẽ bị loại khỏi danh sách của một số người. Những người mới khác vẫn có thể theo dõi bạn bình thường. - suspend: Tài khoản của bạn đã bị vô hiệu hóa. Tất cả tút và tập tin mà bạn đã tải lên sẽ không thể truy cập được nữa. Bạn vẫn có thể đăng nhập để yêu cầu tải về bản sao dữ liệu của bạn. Tuy nhiên, chúng tôi sẽ giữ lại một vài dữ liệu để ngăn ngừa bạn trốn tránh trách nhiệm. - get_in_touch: Bạn có thể trả lời e-mail này để liên hệ với đội ngũ của %{instance}. + delete_statuses: Một số bài đăng của bạn đã vi phạm một hoặc nhiều quy tắc cộng đồng và bị gỡ bỏ bởi kiểm duyệt viên %{instance}. Các vi phạm trong tương lai có thể dẫn đến các hành động trừng phạt khắc nghiệt hơn so với tài khoản của bạn. + disable: Bạn không còn có thể sử dụng tài khoản của mình, nhưng hồ sơ của bạn và dữ liệu khác vẫn còn nguyên. Bạn có thể yêu cầu sao lưu dữ liệu của mình, thay đổi cài đặt tài khoản hoặc xóa tài khoản của bạn. + sensitive: Từ giờ trở đi, tất cả các media của bạn bạn tải lên sẽ được đánh dấu là nhạy cảm và ẩn đằng sau cảnh báo nhấp chuột. + silence: Bạn vẫn có thể sử dụng tài khoản của mình, nhưng chỉ những người đang theo dõi bạn mới thấy bài đăng của bạn. Bạn cũng bị loại khỏi các tính năng khám phá khác. Tuy nhiên, những người khác vẫn có thể theo dõi bạn. + 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: 'Cụ thể, cho:' + 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ỏ disable: Tài khoản %{acct} của bạn đã bị vô hiệu hóa none: Cảnh báo cho %{acct} - sensitive: Ảnh và video tải lên của %{acct} sẽ bị đánh dấu là nhạy cảm + sensitive: Những tập tin media %{acct} sẽ bị đánh dấu nhạy cảm kể từ bây giờ silence: Tài khoản %{acct} của bạn đã bị hạn chế suspend: Tài khoản %{acct} của bạn đã bị vô hiệu hóa title: + delete_statuses: Tút đã bị xóa disable: Tài khoản bị đóng băng none: Cảnh báo - sensitive: Ảnh và video của bạn sẽ bị đánh dấu nhạy cảm + sensitive: Media đã bị ẩn silence: Tài khoản bị hạn chế suspend: Toài khoản bị vô hiệu hóa welcome: diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 5893d0c8a..898dd8da5 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -85,14 +85,9 @@ zgh: site_title: ⵉⵙⵎ ⵏ ⵓⵎⴰⴽⴽⴰⵢ title: ⵜⵉⵙⵖⴰⵍ ⵏ ⵡⴰⵙⵉⵜ statuses: - batch: - delete: ⴽⴽⵙ media: title: ⵉⵙⵏⵖⵎⵉⵙⵏ with_media: ⵙ ⵉⵙⵏⵖⵎⵉⵙⵏ - tags: - name: ⵀⴰⵛⵟⴰⴳ - title: ⵉⵀⴰⵛⵟⴰⴳⵏ warning_presets: delete: ⴽⴽⵙ application_mailer: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 5fefb96f9..33a15c126 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -5,7 +5,7 @@ zh-CN: about_mastodon_html: Mastodon 是一个建立在开放式网络协议和自由、开源软件之上的社交网络,有着类似于电子邮件的分布式设计。 about_this: 关于本站 active_count_after: 活跃用户 - active_footnote: 每月活跃用户 + active_footnote: 每月活跃用户(MAU) administered_by: 本站管理员: api: API apps: 移动应用 @@ -20,13 +20,13 @@ zh-CN: documentation: 文档 federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容Mastodon的服务器上的人。 get_apps: 尝试移动应用 - hosted_on: 一个在 %{domain} 上运行的 Mastodon 实例 + hosted_on: 运行在 %{domain} 上的 Mastodon 实例 instance_actor_flash: "这个账号是个虚拟帐号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。 \n" learn_more: 了解详情 privacy_policy: 隐私政策 rules: 服务器规则 rules_html: 如果你想要在此Mastodon服务器上拥有一个账户,你必须遵守相应的规则,摘要如下: - see_whats_happening: 看一看现在在发生什么 + see_whats_happening: 看看有什么新鲜事 server_stats: 服务器统计数据: source_code: 源码 status_count_after: @@ -44,14 +44,14 @@ zh-CN: silenced_title: 已隐藏的服务器 suspended: 这些服务器的数据将不会被处理、存储或者交换,本站也将无法和来自这些服务器的用户互动或者交流。 suspended_title: 已封禁的服务器 - unavailable_content_html: 通常来说,在Mastodon上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但是某些站点上不排除会有例外。 + unavailable_content_html: 通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但是某些站点上不排除会有例外。 user_count_after: other: 位用户 user_count_before: 这里共注册有 what_is_mastodon: Mastodon 是什么? accounts: choices_html: "%{name} 的推荐:" - endorsements_hint: 你可以在web界面上推荐你关注的人,他们会显示在这里。 + endorsements_hint: 你可以在 web 界面上推荐你关注的人,他们会显示在这里。 featured_tags_hint: 你可以精选一些话题标签展示在这里。 follow: 关注 followers: @@ -86,15 +86,14 @@ zh-CN: action: 执行操作 title: 在 %{acct} 上执行管理操作 account_moderation_notes: - create: 新建 - created_msg: 管理备忘建立成功! + create: 新增记录 + created_msg: 管理记录已创建! delete: 删除 - destroyed_msg: 管理备忘删除成功! + destroyed_msg: 管理记录删除成功! accounts: add_email_domain_block: 封禁电子邮箱域名 approve: 批准 - approve_all: 全部批准 - approved_msg: 成功批准 %{username} 的注册申请 + approved_msg: 已批准 %{username} 的注册申请 are_you_sure: 你确定吗? avatar: 头像 by_domain: 域名 @@ -107,14 +106,15 @@ zh-CN: title: 为 %{username} 更改电子邮箱 confirm: 确认 confirmed: 已确认 - confirming: 确认中 + confirming: 等待确认 + custom: 自定义 delete: 删除数据 deleted: 已删除 demote: 降任 - destroyed_msg: "%{username} 的数据已进入等待队列,即将被删除" + destroyed_msg: "%{username} 的数据已被安排至删除队列" disable: 冻结 disable_sign_in_token_auth: 禁用电子邮件令牌认证 - disable_two_factor_authentication: 停用双重认证 + disable_two_factor_authentication: 停用两步认证 disabled: 已冻结 display_name: 昵称 domain: 域名 @@ -136,7 +136,7 @@ zh-CN: location: all: 全部 local: 本站 - remote: 远程 + remote: 远端实例 title: 位置 login_status: 登录状态 media_attachments: 媒体文件 @@ -147,7 +147,6 @@ zh-CN: active: 活跃 all: 全部 pending: 待审核 - silenced: 已隐藏 suspended: 已封禁 title: 管理 moderation_notes: 管理员备注 @@ -165,8 +164,7 @@ zh-CN: redownload: 刷新个人资料 redownloaded_msg: 成功从来源处刷新 %{username} 的用户资料 reject: 拒绝 - reject_all: 拒绝全部 - rejected_msg: 成功拒绝 %{username} 的注册申请 + rejected_msg: 已拒绝 %{username} 的注册申请 remove_avatar: 删除头像 remove_header: 删除横幅图片 removed_avatar_msg: 成功删除 %{username} 的头像 @@ -200,12 +198,14 @@ zh-CN: silence: 隐藏 silenced: 已隐藏 statuses: 嘟文 + strikes: 既往处罚 subscribe: 订阅 suspended: 已封禁 suspension_irreversible: 该帐号的数据已被不可逆转地删除。你可以取消暂停该帐号以使其可用,但它不会恢复以前拥有的任何数据。 suspension_reversible_hint_html: 帐号已封禁,数据将在 %{date} 完全删除。 在此之前,帐号仍可恢复,并且没有任何不良影响。 如果你想立即移除该帐号的所有数据,可以在下面进行。 - time_in_queue: 已经等待了 %{time} title: 用户 + unblock_email: 取消屏蔽邮件地址 + unblocked_email_msg: 成功取消屏蔽了 %{username} 的邮件地址 unconfirmed_email: 待验证的电子邮件地址 undo_sensitized: 去除敏感内容标记 undo_silenced: 解除隐藏 @@ -220,6 +220,7 @@ zh-CN: whitelisted: 允许跨站交互 action_logs: action_types: + approve_user: 批准用户 assigned_to_self_report: 指派举报 change_email_user: 为用户修改邮箱地址 confirm_user: 确认用户 @@ -237,6 +238,7 @@ zh-CN: destroy_domain_allow: 解除域名允许 destroy_domain_block: 解除域名封禁 destroy_email_domain_block: 解除电子邮箱域名封禁 + destroy_instance: 删除实例 destroy_ip_block: 删除 IP 规则 destroy_status: 删除嘟文 destroy_unavailable_domain: 删除不可用域名 @@ -249,6 +251,7 @@ zh-CN: enable_user: 启用用户 memorialize_account: 将账户设为追悼模式 promote_user: 给用户升任 + reject_user: 拒绝用户 remove_avatar_user: 移除头像 reopen_report: 重开举报 reset_password_user: 重置密码 @@ -257,6 +260,7 @@ zh-CN: silence_account: 隐藏用户 suspend_account: 封禁用户 unassigned_report: 取消举报的指派 + unblock_email_account: 取消屏蔽邮件地址 unsensitive_account: 去除你帐号中媒体的敏感内容标记 unsilence_account: 解除账号隐藏 unsuspend_account: 解除账号封禁 @@ -265,6 +269,7 @@ zh-CN: update_domain_block: 更新域名屏蔽 update_status: 更新嘟文 actions: + approve_user_html: "%{name} 批准了用户 %{target} 的注册" assigned_to_self_report_html: "%{name} 接管了举报 %{target}" change_email_user_html: "%{name} 更改了用户 %{target} 的电子邮件地址" confirm_user_html: "%{name} 确认了用户 %{target} 的电子邮件地址" @@ -282,6 +287,7 @@ zh-CN: destroy_domain_allow_html: "%{name} 拒绝了和 %{target} 跨站交互" destroy_domain_block_html: "%{name} 解除了对域名 %{target} 的屏蔽" destroy_email_domain_block_html: "%{name} 解除了对电子邮件域名 %{target} 的屏蔽" + destroy_instance_html: "%{name} 删除了实例 %{target}" destroy_ip_block_html: "%{name} 删除了 IP %{target} 的规则" destroy_status_html: "%{name} 删除了 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 恢复了向域名 %{target} 的投递" @@ -294,6 +300,7 @@ zh-CN: enable_user_html: "%{name} 将用户 %{target} 设置为允许登录" memorialize_account_html: "%{name} 将 %{target} 设置为追悼帐户" promote_user_html: "%{name} 对用户 %{target} 进行了升任操作" + reject_user_html: "%{name} 拒绝了用户 %{target} 的注册" remove_avatar_user_html: "%{name} 删除了 %{target} 的头像" reopen_report_html: "%{name} 重开了举报 %{target}" reset_password_user_html: "%{name} 重置了用户 %{target} 的密码" @@ -302,6 +309,7 @@ zh-CN: silence_account_html: "%{name} 隐藏了用户 %{target}" suspend_account_html: "%{name} 封禁了用户 %{target}" unassigned_report_html: "%{name} 放弃接管举报 %{target}" + unblock_email_account_html: "%{name} 取消屏蔽了 %{target} 的邮件地址" unsensitive_account_html: "%{name} 去除了 %{target} 的媒体的敏感内容标记" unsilence_account_html: "%{name} 解除了用户 %{target} 的隐藏状态" unsuspend_account_html: "%{name} 解除了用户 %{target} 的封禁状态" @@ -365,9 +373,25 @@ zh-CN: updated_msg: 表情更新成功! upload: 上传新表情 dashboard: + active_users: 活跃用户 + interactions: 互动数 + media_storage: 媒体存储 + new_users: 新用户 + opened_reports: 被发起的举报 + pending_reports_html: + other: "<strong>%{count}</strong> 个待处理请求" + pending_tags_html: + other: "<strong>%{count}</strong> 个待处理标签" + pending_users_html: + other: "<strong>%{count}</strong> 个待处理用户" + resolved_reports: 已解决的举报 software: 软件 + sources: 注册来源 space: 存储使用情况 title: 信息面板 + top_languages: 最活跃的语言 + top_servers: 最活跃的服务器 + website: 网页端 domain_allows: add_new: 允许和域名跨站交互 created_msg: 域名已被允许跨站交互 @@ -439,6 +463,7 @@ zh-CN: back_to_limited: 受限 back_to_warning: 警告 by_domain: 域名 + confirm_purge: 你确认要从这个实例中永久地删除数据吗? delivery: all: 全部 clear: 清理投递错误 @@ -453,6 +478,7 @@ zh-CN: delivery_available: 可投递 delivery_error_days: 投递错误天数 delivery_error_hint: 如果投递已不可用 %{count} 天,它将被自动标记为无法投递。 + destroyed_msg: "%{domain} 中的数据现在正在排队等待被立刻删除。" empty: 暂无域名。 known_accounts: other: "%{count} 个已知帐户" @@ -462,6 +488,7 @@ zh-CN: title: 运营 private_comment: 私密评论 public_comment: 公开评论 + purge: 删除 title: 已知实例 total_blocked_by_us: 被我站屏蔽的 total_followed_by_them: 被对方关注的 @@ -491,8 +518,6 @@ zh-CN: title: 创建新 IP 规则 no_ip_block_selected: 因为没有 IP 规则被选中,所以没有更改 title: IP 规则 - pending_accounts: - title: 待处理的帐户 (%{count}) relationships: title: "%{acct} 的关系" relays: @@ -514,30 +539,43 @@ zh-CN: report_notes: created_msg: 举报记录建立成功! destroyed_msg: 举报记录删除成功! + today_at: 今天 %{time} reports: account: notes: other: "%{count} 条笔记" - reports: - other: "%{count} 个报告" + action_log: 审计日志 action_taken_by: 操作执行者 + actions: + other_description_html: 查看控制该被举报帐号行为以及与其通信范围的更多选项。 + silence_description_html: 只有关注或手工搜索此帐号才能查看其资料,将严重限制其触达范围。可随时撤销。 + suspend_description_html: 此帐号及其内容将无法访问,并最终被删除。也无法与该帐号交互。可在30天内撤销。 + actions_description_html: 若移除上述违规内容仍力度不足: + add_to_report: 添加到报告 are_you_sure: 你确定吗? assign_to_self: 接管 assigned: 已接管的监察员 by_target_domain: 被举报账户的域名 + category: 类别 + category_description_html: 此帐号和/或内容被举报的原因将在与该帐号的通信中被引用。 comment: none: 没有 + comment_description_html: "%{name} 补充道:" created_at: 举报时间 + delete_and_resolve: 删除并解决 forwarded: 已转发 forwarded_to: 转发举报至 %{domain} mark_as_resolved: 标记为“已处理” mark_as_unresolved: 标记为“未处理” + no_one_assigned: 未分派 notes: create: 添加记录 create_and_resolve: 添加记录并标记为“已处理” create_and_unresolve: 添加记录并重开 delete: 删除 placeholder: 描述已经执行的操作,或其他任何相关的跟进情况… + title: 备注 + notes_description_html: 查看备注或向其他监察员留言 reopen: 重开举报 report: '举报 #%{id}' reported_account: 举报用户 @@ -545,11 +583,14 @@ zh-CN: resolved: 已处理 resolved_msg: 举报处理成功! status: 状态 + statuses: 被举报内容 + statuses_description_html: 违规内容将在与该帐号的通信中被引用 target_origin: 被举报账号的来源 title: 举报 unassign: 取消接管 unresolved: 未处理 updated_at: 更新时间 + view_profile: 查看资料 rules: add_new: 添加规则 delete: 删除 @@ -651,15 +692,13 @@ zh-CN: destroyed_msg: 站点上传的文件已经成功删除! statuses: back_to_account: 返回帐户信息页 + back_to_report: 返回举报页 batch: - delete: 删除 - nsfw_off: 标记为非敏感内容 - nsfw_on: 标记为敏感内容 + remove_from_report: 从报告中移除 + report: 举报 deleted: 已删除 - failed_to_execute: 执行失败 media: title: 媒体文件 - no_media: 不含媒体文件 no_status_selected: 因为没有嘟文被选中,所以没有更改 title: 帐户嘟文 with_media: 含有媒体文件 @@ -672,21 +711,49 @@ zh-CN: sidekiq_process_check: message_html: "%{value} 队列未运行任何 Sidekiq 进程。请检查你的 Sidekiq 配置" tags: - accounts_today: 今日活跃用户 - accounts_week: 本周活跃用户 - breakdown: 按来源分类今天的使用情况 - last_active: 最近活动 - most_popular: 最热门的 - most_recent: 最近的 - name: 话题标签 review: 审核状态 - reviewed: 已审核 - title: 话题标签 - trending_right_now: 当前热门 - unique_uses_today: 今天发布了 %{count} 条 - unreviewed: 未审核 updated_msg: 话题标签设置更新成功 title: 管理 + trends: + allow: 允许 + approved: 已批准 + disallow: 不允许 + links: + allow: 允许链接 + allow_provider: 允许发布者 + disallow: 不允许链接 + disallow_provider: 不允许发布者 + shared_by_over_week: + other: "%{count} 人在过去一周内分享" + title: 热门链接 + usage_comparison: 今日被分享 %{today} 次,前一日为 %{yesterday} 次 + pending_review: 待审核 + preview_card_providers: + allowed: 来自此发布者的链接可进入流行列表 + rejected: 来自此发布者的链接不会进入流行列表 + title: 发布者 + rejected: 已拒绝 + tags: + current_score: 当前 %{score} 分 + dashboard: + tag_accounts_measure: 独立使用 + tag_languages_dimension: 语言排行 + tag_servers_dimension: 服务器排行 + tag_servers_measure: 不同服务器 + tag_uses_measure: 总使用 + listable: 可被推荐 + 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: + other: "%{count} 人在过去一周内使用过" + title: 流行趋势 warning_presets: add_new: 添加新条目 delete: 删除 @@ -701,9 +768,16 @@ zh-CN: body: "%{reporter} 举报了用户 %{target}" body_remote: 来自 %{domain} 的用户举报了用户 %{target} subject: 来自 %{instance} 的用户举报(#%{id}) - new_trending_tag: - body: '今日的热门话题 #%{name} 之前未经审核。直到你允许之前这个话题将不会公开显示,或者就保持原样让它石沉大海。' - subject: 在 %{instance} 有新话题 (#%{name}) 待审核 + new_trending_links: + body: 以下为今日流行的链接,但它们的发布者尚未经过审核。在您批准前它们不会被公开显示。来自相同发布者的更多通知不会被生成。 + no_approved_links: 当前没有经过批准的流行链接。 + requirements: 已批准流行链接中最低的是 %{lowest_link_title} (%{lowest_link_score} 分)。 + subject: "%{instance} 上待审核的新流行链接" + new_trending_tags: + body: 以下为今日流行的标签,但它们尚未经过审核。在您批准前它们不会被公开显示。 + no_approved_tags: 当前没有经过批准的流行标签。 + requirements: '已批准流行链接中最低的是 #%{lowest_tag_name} (%{lowest_tag_score} 分)。' + subject: "%{instance} 上待审核的新流行标签" aliases: add_new: 创建别名 created_msg: 成功创建了一个新别名。你现在可以从旧账户开始迁移了。 @@ -755,11 +829,12 @@ zh-CN: invalid_reset_password_token: 密码重置令牌无效或已过期。请重新发起重置密码请求。 link_to_otp: 输入从手机中获得的两步验证代码或恢复代码 link_to_webauth: 使用你的安全密钥设备 + log_in_with: 通过外部服务登录 login: 登录 logout: 登出 migrate_account: 迁移到另一个帐户 migrate_account_html: 如果你希望引导别人关注另一个帐户,请<a href="%{path}">点击这里进行设置</a>。 - or_log_in_with: 或通过其他方式登录 + or_log_in_with: 或通过外部服务登录 providers: cas: CAS saml: SAML @@ -910,33 +985,14 @@ zh-CN: changes_saved_msg: 更改保存成功! copy: 复制 delete: 删除 - no_batch_actions_available: 本页面无可用批量操作 + none: 无 order_by: 排序方式 save_changes: 保存更改 + today: 今天 validation_errors: other: 出错啦!检查一下下面 %{count} 处出错的地方吧 html_validator: invalid_markup: '包含无效的 HTML 标记: %{error}' - identity_proofs: - active: 有效 - authorize: 是,授权 - authorize_connection_prompt: 授权这一密码学连接? - errors: - failed: 密码关联失败。请在 %{provider} 上重新尝试。 - keybase: - invalid_token: Keybase 令牌是签名的哈希并且必须是 66 个十六进制字符 - verification_failed: Keybase 无法将此令牌识别为 Keybase 用户 %{kb_username} 的签名。请在 Keybase 再试一次。 - wrong_user: 无法以 %{current} 的身份创建 %{proving} 的证明。请以 %{proving} 的身份登录并再次尝试。 - explanation_html: 在这里,你可以和你的其他身份建立密码学关联,例如 Keybase 个人资料。这样,别人就可以给你发送加密信息,也能够信任你发给他们的内容。 - i_am_html: 我是 %{service} 上的 %{username} 。 - identity: 身份 - inactive: 失效 - publicize_checkbox: 并发一条这样的嘟文: - publicize_toot: '证明完毕!我是 %{service} 上的 %{username}: %{url}' - remove: 从帐户中移除凭据 - removed: 成功从帐户中删除凭据 - status: 验证状态 - view_proof: 查看证明 imports: errors: over_rows_processing_limit: 包含行数超过了 %{count} @@ -1149,6 +1205,9 @@ zh-CN: reply: proceed: 确认回复 prompt: 你想要回复此嘟文: + reports: + errors: + invalid_rules: 没有引用有效的规则 scheduled_statuses: over_daily_limit: 你已超出每日定时嘟文的上限(%{limit} 条) over_total_limit: 你已超出定时嘟文的上限(%{limit} 条) @@ -1207,7 +1266,6 @@ zh-CN: edit_profile: 更改个人资料 export: 导出 featured_tags: 精选的话题标签 - identity_proofs: 身份证明 import: 导入 import_and_export: 导入和导出 migrate: 帐户迁移 @@ -1229,17 +1287,18 @@ zh-CN: other: "%{count} 段视频" boosted_from_html: 转嘟自 %{acct_link} content_warning: 内容警告:%{warning} + default_language: 与界面显示语言相同 disallowed_hashtags: other: 包含了这些禁止的话题标签:%{tags} + edited_at: 编辑于 %{date} errors: in_reply_not_found: 你回复的嘟文似乎不存在 - language_detection: 自动检测语言 open_in_web: 在站内打开 over_character_limit: 超过了 %{max} 字的限制 pin_errors: + direct: 仅对被提及的用户可见的帖子不能被置顶 limit: 你所置顶的嘟文数量已经达到上限 ownership: 不能置顶别人的嘟文 - private: 不能置顶非公开的嘟文 reblog: 不能置顶转嘟 poll: total_people: @@ -1392,6 +1451,7 @@ zh-CN: formats: default: "%Y年%m月%d日 %H:%M" month: "%Y年%m月" + time: "%H:%M" two_factor_authentication: add: 添加 disable: 停用双重认证 @@ -1419,24 +1479,31 @@ zh-CN: subject: 请确认登录请求: title: 登录请求 warning: + categories: + spam: 垃圾信息 + violation: 内容违反了以下社区准则 explanation: - disable: 虽然你的帐户被冻结,你的帐户数据仍然完整;但是你无法在解锁前执行任何操作。 - sensitive: 你上传的媒体文件和媒体链接将被视作敏感内容。 - silence: 当你的帐户被隐藏时,只有已经关注你的人才会这台服务器上看到你的嘟文,并且你会被排除在各种公共列表之外。但是,其他人仍然可以手动关注你。 - suspend: 你的帐户已被封禁,所有的嘟文和你上传的媒体文件都已经从该服务器和你的关注者的服务器上删除并且不可恢复。 - get_in_touch: 你可回复该邮件以联系 %{instance} 的工作人员。 + delete_statuses: 你的某些嘟文被发现违反了一项或多项社区准则,随后被 %{instance} 的监察员删除。继续违规将可能导致你的帐号受到更严厉的惩罚。 + disable: 你不能再使用你的帐户,但你的个人资料和其他数据保持不变。你可以请求数据备份,更改账户设置或删除账户。 + sensitive: 即刻起,你上传的所有媒体文件都将被标记为敏感内容并隐藏,在点击警告后才能查看。 + silence: 你可以继续使用你的帐号,但只有已关注你的人才能在看到你在此服务器上的嘟文,并且你会被排除在各类公共列表之外。其他用户仍可以手动关注你。 + suspend: 你不能再使用你的帐户,并且你的个人资料和其他数据都将无法访问。在大约30天内,你仍可以登录并请求数据备份,之后相关数据将被完全删除。我们会保留一些基础数据以避免封禁失效。 + get_in_touch: 如果你认为此操作有误,可回复此邮件以与 %{instance} 的工作人员取得联系。 + reason: 理由: review_server_policies: 查看服务器政策 - statuses: 具体来说,适用于: + statuses: 被发现有违规行为的嘟文: subject: + delete_statuses: 你在 %{acct} 的嘟文已被删除 disable: 你的帐户 %{acct} 已被冻结 none: 对 %{acct} 的警告 - sensitive: 你的帐号 %{acct} 所发布的媒体已被标记为敏感内容 + sensitive: 你在 %{acct} 的媒体文件将被标记为敏感内容 silence: 你的帐户 %{acct} 已被隐藏 suspend: 你的帐户 %{acct} 已被封禁。 title: + delete_statuses: 嘟文已删除 disable: 账号已冻结 none: 警示 - sensitive: 你的媒体被标记为敏感内容 + sensitive: 已隐藏的媒体内容 silence: 帐户被隐藏 suspend: 账号被封禁 welcome: diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 185b88b51..b437c9b10 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -95,7 +95,6 @@ zh-HK: accounts: add_email_domain_block: 封鎖電郵網域 approve: 核准 - approve_all: 全部批准 approved_msg: 成功審核了%{username} 的新帳號申請 are_you_sure: 你確定嗎? avatar: 頭像 @@ -149,7 +148,6 @@ zh-HK: active: 活躍 all: 全部 pending: 處理中 - silenced: 被靜音的 suspended: 已停權 title: 管理操作 moderation_notes: 管理備註 @@ -167,7 +165,6 @@ zh-HK: redownload: 更新頁面 redownloaded_msg: 成功重新載入 %{username} 的個人資料頁面 reject: 拒絕 - reject_all: 全部拒絕 rejected_msg: 成功拒絕了 %{username} 的新帳號申請 remove_avatar: 刪除頭像 remove_header: 移除頁面頂端 @@ -206,7 +203,6 @@ zh-HK: suspended: 已停權 suspension_irreversible: 已永久刪除此帳號的數據。你可以取消此帳號的停權狀態,但帳號的資料已被永久刪除。 suspension_reversible_hint_html: 此帳戶已被停權及所有數據將會於 %{date} 被刪除。在此之前,你仍可以完全回復帳號。如果你想即時刪除此帳戶的資料,可以在下面進行操作。 - time_in_queue: 排隊中 %{time} title: 帳號 unconfirmed_email: 未確認的電郵 undo_sensitized: 取消敏感狀態 @@ -493,8 +489,6 @@ zh-HK: title: 新增 IP 規則 no_ip_block_selected: 因未選擇 IP 規則而未有任何變更。 title: IP 規則 - pending_accounts: - title: 待處理帳戶(%{count}) relationships: title: "%{acct} 的關係" relays: @@ -520,8 +514,6 @@ zh-HK: account: notes: other: "%{count} 則備註" - reports: - other: "%{count} 則舉報" action_taken_by: 操作執行者 are_you_sure: 你確認嗎? assign_to_self: 指派給自己 @@ -653,15 +645,9 @@ zh-HK: destroyed_msg: 成功刪除站台的上傳項目! statuses: back_to_account: 返回帳戶信息頁 - batch: - delete: 刪除 - nsfw_off: 取消 NSFW 標記 - nsfw_on: 添加 NSFW 標記 deleted: 已刪除 - failed_to_execute: 執行失敗 media: title: 媒體檔案 - no_media: 不含媒體檔案 no_status_selected: 因未選擇嘟文而未變更。 title: 帳戶文章 with_media: 含有媒體檔案 @@ -674,19 +660,7 @@ zh-HK: sidekiq_process_check: message_html: 沒有 %{value} 佇列的 Sidekiq 處理程序。請檢查 Sidekiq 設定檔案 tags: - accounts_today: 今日特殊使用 - accounts_week: 今週特殊使用 - breakdown: 根據來源剖析是日用量 - last_active: 上次活躍 - most_popular: 最熱門 - most_recent: 最近 - name: 主題標籤 review: 審核文章 - reviewed: 已審核 - title: 主題標籤 - trending_right_now: 最新趨勢 - unique_uses_today: 今天嘟了 %{count} 則 - unreviewed: 未審核 updated_msg: 成功更新主題標籤設定 title: 管理 warning_presets: @@ -703,9 +677,6 @@ zh-HK: body: "%{reporter} 舉報了 %{target}" body_remote: 來自 %{domain} 的人舉報了 %{target} subject: 針對 %{instance} 的舉報(#%{id}) - new_trending_tag: - body: '今天流行使用未被審核的 #%{name} 主題標籤。在你允許之前,它不會被公開地顯示,你亦可以無視它使它不再污染你的眼睛。' - subject: 在 %{instance} 上未審核的主題標籤 (%{name}) aliases: add_new: 建立別名 (Alias) created_msg: 成功建立別名 (alias)。你可以從舊帳號開始轉移。 @@ -912,33 +883,12 @@ zh-HK: changes_saved_msg: 已成功儲存修改。 copy: 複製 delete: 刪除 - no_batch_actions_available: 此頁目沒有可用的批次操作 order_by: 排序 save_changes: 儲存修改 validation_errors: other: 提交的資料有 %{count} 項問題 html_validator: invalid_markup: 含有無效的HTML標記:%{error} - identity_proofs: - active: 活躍 - authorize: 是的,請授權 - authorize_connection_prompt: 授權此加密通訊? - errors: - failed: 加密通訊失敗。請在%{provider} 重試。 - keybase: - invalid_token: Keybase tokens必定為66個16位元字符的簽名檔散列。 - verification_failed: Keybase不能識別此令牌為Keybase用戶%{kb_username} 的簽名。請在Keybase再試一次。 - wrong_user: 未能以%{current} 為 %{proving} 建立身份驗證。請登入為%{proving} 再試一次。 - explanation_html: 在此你連結其他網路平台(如 Keybase)上的加密身份。讓其他人可以在那些平台上,傳送加密信息給你,並驗證你的身份。 - i_am_html: 我是 %{service} 上的 %{username} - identity: 身份 - inactive: 停用 - publicize_checkbox: 發表文章: - publicize_toot: 驗證成功!我在%{service} 是%{username} :%{url} - remove: 刪除帳號的驗證 - removed: 成功刪除身份驗證 - status: 確認狀態 - view_proof: 查看證明 imports: errors: over_rows_processing_limit: 包含超過 %{count} 行 @@ -1209,7 +1159,6 @@ zh-HK: edit_profile: 修改個人資料 export: 匯出 featured_tags: 推薦的標籤 - identity_proofs: 身份驗證 import: 匯入 import_and_export: 匯入及匯出 migrate: 帳戶遷移 @@ -1235,13 +1184,11 @@ zh-HK: other: 包含不允許的標籤: %{tags} errors: in_reply_not_found: 你所回覆的嘟文並不存在。 - language_detection: 自動偵測語言 open_in_web: 開啟網頁 over_character_limit: 超過了 %{max} 字的限制 pin_errors: limit: 你所置頂的文章數量已經達到上限 ownership: 不能置頂他人的文章 - private: 不能置頂非公開的文章 reblog: 不能置頂轉推 poll: total_people: @@ -1421,24 +1368,15 @@ zh-HK: subject: 請確認登入請求 title: 登入請求 warning: - explanation: - disable: 你不能以任何方式登入或使用你的帳號,但你的個人資料頁面和其他資料仍保持完整。 - sensitive: 你上載的媒體檔案和連結媒體將被標記為敏感項目。 - silence: 你仍然可以使用你的帳號,但只有你現時的追隨者會看見你在此伺服器的嘟文。你或從公開名冊中被剔除。但是其他人仍然可以主動關注你。 - suspend: 你將不能使用您的帳號,你的個人資料頁面及其他資料將不能再被取得。你仍可在資料被完全刪除前請求下載你的數據,但我們仍會保留一部份資料,以防止有人規避停權處罰。 - get_in_touch: 你可以回覆此電郵來跟我們(%{instance})聯絡 review_server_policies: 審視伺服器政策 - statuses: 特別是: subject: disable: 你的帳號 %{acct} 已經被涷結 none: 警告帳號%{acct} - sensitive: 你的帳號 %{acct} 的媒體已被標記為敏感內容 silence: 你的帳號 %{acct} 已經被限制 suspend: 你的帳號 %{acct} 已經被停權 title: disable: 帳號涷結 none: 警告 - sensitive: 你的媒體已被標記為敏感內容 silence: 賬戶已被限制 suspend: 帳號已停用 welcome: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index b2cfeafac..07eb97071 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -93,7 +93,6 @@ zh-TW: accounts: add_email_domain_block: 將電子郵件網域加入黑名單 approve: 核准 - approve_all: 全部批准 approved_msg: 成功審核了%{username} 的新帳戶申請 are_you_sure: 您確定嗎? avatar: 頭像 @@ -108,6 +107,7 @@ zh-TW: confirm: 確定 confirmed: 已確定 confirming: 確定 + custom: 自訂 delete: 刪除資料 deleted: 已刪除 demote: 降級 @@ -147,7 +147,6 @@ zh-TW: active: 活躍 all: 全部 pending: 等待中 - silenced: 已靜音 suspended: 已停權 title: 版務 moderation_notes: 管理備忘 @@ -165,7 +164,6 @@ zh-TW: redownload: 重新整理個人資料 redownloaded_msg: 成功重新載入%{username} 的個人資料頁面 reject: 拒絕 - reject_all: 全部拒絕 rejected_msg: 成功拒絕了%{username} 的新帳戶申請 remove_avatar: 取消頭像 remove_header: 移除開頭 @@ -200,12 +198,14 @@ zh-TW: silence: 靜音 silenced: 已靜音 statuses: 嘟文 + strikes: 先前連續嘟文紀錄 subscribe: 訂閱 suspended: 已停權 suspension_irreversible: 已永久刪除這個帳戶的數據。雖然這個帳戶的數據已被永久刪除,但是您仍然可以取消暫停這個帳戶。 suspension_reversible_hint_html: 這個帳戶已被暫停,所有數據將會在 %{date} 被刪除。在此之前,您可以完全回復您的帳戶。如果您想即時刪除這個帳戶的數據,您可以在下面進行操作。 - time_in_queue: 正在佇列等待 %{time} title: 帳戶 + unblock_email: 解除封鎖電子郵件地址 + unblocked_email_msg: 成功解除封鎖 %{username} 的電子郵件地址 unconfirmed_email: 未確認的電子信箱地址 undo_sensitized: 取消敏感狀態 undo_silenced: 取消靜音 @@ -220,6 +220,7 @@ zh-TW: whitelisted: 已加入白名單 action_logs: action_types: + approve_user: 批准使用者 assigned_to_self_report: 指派回報 change_email_user: 變更使用者的電子信箱地址 confirm_user: 確認使用者 @@ -237,6 +238,7 @@ zh-TW: destroy_domain_allow: 刪除允許網域 destroy_domain_block: 刪除阻擋網域 destroy_email_domain_block: 刪除阻擋電郵網域 + destroy_instance: 清除網域 destroy_ip_block: 刪除 IP 規則 destroy_status: 刪除狀態 destroy_unavailable_domain: 刪除無法存取的網域 @@ -249,6 +251,7 @@ zh-TW: enable_user: 啓用帳戶 memorialize_account: 設定成紀念帳戶 promote_user: 把用戶升級 + reject_user: 回絕使用者 remove_avatar_user: 刪除大頭貼 reopen_report: 重開舉報 reset_password_user: 重設密碼 @@ -257,6 +260,7 @@ zh-TW: silence_account: 靜音用戶 suspend_account: 暫停用戶 unassigned_report: 取消指派舉報 + unblock_email_account: 解除封鎖電子郵件地址 unsensitive_account: 取消把您的帳戶的媒體設定為敏感內容 unsilence_account: 取消用戶的靜音狀態 unsuspend_account: 取消用戶的暫停狀態 @@ -265,6 +269,7 @@ zh-TW: update_domain_block: 更新封鎖網域 update_status: 更新狀態 actions: + approve_user_html: "%{name} 批准了從 %{target} 而來的註冊" assigned_to_self_report_html: "%{name} 將報告 %{target} 指派給自己" change_email_user_html: "%{name} 變更了使用者 %{target} 的電子信箱地址" confirm_user_html: "%{name} 確認了使用者 %{target} 的電子信箱位址" @@ -282,6 +287,7 @@ zh-TW: destroy_domain_allow_html: "%{name} 不允許與網域 %{target} 加入站點聯盟" destroy_domain_block_html: "%{name} 取消了對網域 %{target} 的封鎖" destroy_email_domain_block_html: "%{name} 取消了對電子信箱網域 %{target} 的封鎖" + destroy_instance_html: "%{name} 清除了網域 %{target}" destroy_ip_block_html: "%{name} 刪除了 IP %{target} 的規則" destroy_status_html: "%{name} 刪除了 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 恢復了對網域 %{target} 的發送" @@ -294,6 +300,7 @@ zh-TW: enable_user_html: "%{name} 將使用者 %{target} 設定為允許登入" memorialize_account_html: "%{name} 將 %{target} 設定為追悼帳戶" promote_user_html: "%{name} 對使用者 %{target} 進行了晉級操作" + reject_user_html: "%{name} 回絕了從 %{target} 而來的註冊" remove_avatar_user_html: "%{name} 移除了 %{target} 的大頭貼" reopen_report_html: "%{name} 重新開啟 %{target} 的檢舉" reset_password_user_html: "%{name} 重新設定了使用者 %{target} 的密碼" @@ -302,6 +309,7 @@ zh-TW: silence_account_html: "%{name} 靜音了使用者 %{target}" suspend_account_html: "%{name} 停權了使用者 %{target}" unassigned_report_html: "%{name} 取消指派 %{target} 的檢舉" + unblock_email_account_html: "%{name} 解除封鎖了 %{target} 的電子郵件地址" unsensitive_account_html: "%{name} 將 %{target} 的媒體檔案的敏感狀態取消" unsilence_account_html: "%{name} 取消了使用者 %{target} 的靜音狀態" unsuspend_account_html: "%{name} 取消了使用者 %{target} 的停權狀態" @@ -369,14 +377,14 @@ zh-TW: interactions: 互動 media_storage: 媒體儲存空間 new_users: 新使用者 - opened_reports: 開啟的報告 + opened_reports: 已開啟的報告 pending_reports_html: 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: 儲存空間用量 @@ -457,6 +465,7 @@ zh-TW: back_to_limited: 受限制的 back_to_warning: 警告 by_domain: 站台 + confirm_purge: 您確定要永久刪除來自此網域的資料嗎? delivery: all: 所有 clear: 清除遞送錯誤 @@ -471,6 +480,7 @@ zh-TW: delivery_available: 可傳送 delivery_error_days: 遞送失敗天數 delivery_error_hint: 若 %{count} 日皆無法遞送 ,則會自動標記無法遞送。 + destroyed_msg: 來自 %{domain} 的資料現在正在佇列中等待刪除。 empty: 找不到網域 known_accounts: other: "%{count} 已知的帳戶" @@ -480,6 +490,7 @@ zh-TW: title: 版主 private_comment: 私人留言 public_comment: 公開留言 + purge: 清除 title: 聯邦 total_blocked_by_us: 被我們封鎖 total_followed_by_them: 被他們關注 @@ -509,8 +520,6 @@ zh-TW: title: 建立新的 IP 規則 no_ip_block_selected: 因為沒有選擇任何 IP 規則,所以什麼事都沒發生 title: IP 規則 - pending_accounts: - title: 待處理帳戶(%{count}) relationships: title: "%{acct} 的關係" relays: @@ -532,30 +541,43 @@ zh-TW: report_notes: created_msg: 檢舉記錄建立成功! destroyed_msg: 檢舉記錄刪除成功! + today_at: 今日為 %{time} reports: account: notes: other: "%{count} 則備註" - reports: - other: "%{count} 則檢舉" + action_log: 審計日誌 action_taken_by: 操作執行者 + actions: + other_description_html: 檢視更多控制帳號行為以及自訂檢舉帳號通知之選項。 + silence_description_html: 個人頁面僅會對已跟隨帳號之使用者或手動查詢可見,將大幅度限制觸及範圍。此設定可隨時被還原。 + suspend_description_html: 個人頁面及其內容將無法被存取,直到其最終被刪除。將無法與此帳號互動。此設定 30 日內可被還原。 + actions_description_html: 若移除以上侵犯性違規內容不足成效: + add_to_report: 加入更多至報告 are_you_sure: 你確定嗎? assign_to_self: 指派給自己 assigned: 指派負責人 by_target_domain: 檢舉帳戶之網域 + category: 分類 + category_description_html: 此帳號及/或被檢舉內容之原因會被引用在檢舉帳號通知中 comment: none: 無 + comment_description_html: 提供更多資訊,%{name} 寫道: created_at: 日期 + delete_and_resolve: 刪除與解決 forwarded: 已轉寄 forwarded_to: 轉寄到 %{domain} mark_as_resolved: 標記為「已解決」 mark_as_unresolved: 標記為「未解決」 + no_one_assigned: 沒有人 notes: create: 建立記錄 create_and_resolve: 建立記錄並標記為「已解決」 create_and_unresolve: 建立記錄並標記「未解決」 delete: 刪除 placeholder: 記錄已執行的動作,或其他相關的更新... + title: 註記 + notes_description_html: 檢視及留下些給其他管理員和未來的自己的註記 reopen: 重開檢舉 report: '檢舉 #%{id}' reported_account: 被檢舉使用者 @@ -563,11 +585,14 @@ zh-TW: resolved: 已解決 resolved_msg: 檢舉已處理! status: 嘟文 + statuses: 被檢舉的內容 + statuses_description_html: 侵犯性違規內容會被引用在檢舉帳號通知中 target_origin: 檢舉帳戶之來源 title: 檢舉 unassign: 取消指派 unresolved: 未解決 updated_at: 更新 + view_profile: 檢視個人資料頁 rules: add_new: 新增規則 delete: 刪除 @@ -669,15 +694,13 @@ zh-TW: destroyed_msg: 成功刪除站台的上傳項目! statuses: back_to_account: 返回帳戶訊息頁 + back_to_report: 回到檢舉報告頁面 batch: - delete: 刪除 - nsfw_off: 標記為非敏感內容 - nsfw_on: 標記為敏感內容 + remove_from_report: 從檢舉報告中移除 + report: 檢舉報告 deleted: 已刪除 - failed_to_execute: 執行失敗 media: title: 媒體檔案 - no_media: 不含媒體檔案 no_status_selected: 因未選擇嘟文而未變更。 title: 帳戶嘟文 with_media: 含有媒體檔案 @@ -690,21 +713,49 @@ zh-TW: sidekiq_process_check: message_html: 没有队列 %{value} 的Sidekiq进程,请检查你的Sidekiq配置 tags: - accounts_today: 本日不重複使用者數 - accounts_week: 本週不重複使用者數 - breakdown: 根據來源分類本日使用情況 - last_active: 上次活躍 - most_popular: 最熱門 - most_recent: 最近 - name: 主題標籤 review: 審核嘟文 - reviewed: 已審核 - title: 主題標籤 - trending_right_now: 最新趨勢 - unique_uses_today: 今天嘟了 %{count} 則 - unreviewed: 未審核 updated_msg: 成功更新主題標籤設定 title: 管理介面 + trends: + allow: 允許 + approved: 已通過審核 + disallow: 不允許 + links: + allow: 允許連結 + allow_provider: 允許發行者 + disallow: 不允許連結 + disallow_provider: 不允許發行者 + shared_by_over_week: + other: 於過去一週被 %{count} 人分享 + title: 熱門連結 + usage_comparison: 於今日被 %{today} 人分享,相較於昨日 %{yesterday} 人 + pending_review: 等待審核中 + preview_card_providers: + allowed: 此發行者之連結能登上熱門 + rejected: 此發行者之連結不會登上熱門 + title: 發行者 + rejected: 被拒絕 + tags: + current_score: 目前分數 %{score} 分 + dashboard: + tag_accounts_measure: 獨特使用次數 + tag_languages_dimension: 熱門語言 + tag_servers_dimension: 熱門伺服器 + tag_servers_measure: 不同伺服器 + tag_uses_measure: 總使用次數 + listable: 能被建議 + 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: + other: 於過去一週被 %{count} 人使用 + title: 熱門榜 warning_presets: add_new: 新增 delete: 刪除 @@ -719,9 +770,16 @@ zh-TW: body: "%{reporter} 檢舉了使用者 %{target}" body_remote: 來自 %{domain} 的使用者檢舉了使用者 %{target} subject: 來自 %{instance} 的使用者檢舉(#%{id}) - new_trending_tag: - body: '尚未通過審核的主題標籤 #%{name} 今天有炎上趨勢。這個標籤在你開綠燈之前不會公開顯示,你也可以選擇無視它以遭蒙蔽雙眼。' - subject: "%{instance} 上有待審核的主題標籤 (#%{name})" + new_trending_links: + body: 以下連結於今日登上熱門榜,然而他們的發行者之前仍未被審核過。除非您核准,這些連結將不會被公開顯示。來自這些發行者的通知往後將不會被產生。 + no_approved_links: 這些是目前仍未被審核之熱門連結。 + requirements: 已核准熱門連結中最低分者目前是「%{lowest_link_title}」為 %{lowest_link_score} 分。 + subject: 於 %{instance} 待審核的新熱門連結 + new_trending_tags: + body: 以下主題標籤於今日登上熱門榜,然而他們之前仍未被審核過。除非您核准,這些連結將不會被公開顯示: + no_approved_tags: 這些是目前仍未被審核之熱門主題標籤。 + requirements: 已核准熱門標籤中最低分者目前是「#%{lowest_tag_name}」為 %{lowest_tag_score} 分。 + subject: 於 %{instance} 待審核的新熱門主題標籤 aliases: add_new: 建立別名 created_msg: 成功建立別名。您可以自舊帳戶開始轉移。 @@ -773,6 +831,7 @@ zh-TW: invalid_reset_password_token: 密碼重設 token 無效或已過期。請重新設定密碼。 link_to_otp: 請從您手機輸入雙重驗證 (2FA) 或還原碼 link_to_webauth: 使用您的安全金鑰 + log_in_with: 登入,使用 login: 登入 logout: 登出 migrate_account: 轉移到另一個帳戶 @@ -928,33 +987,14 @@ zh-TW: changes_saved_msg: 已成功儲存修改! copy: 複製 delete: 刪除 - no_batch_actions_available: 此頁面目前沒有可用的批次作業 + none: 無 order_by: 排序 save_changes: 儲存修改 + today: 今天 validation_errors: other: 唔…這是什麼鳥?請檢查以下 %{count} 項錯誤 html_validator: invalid_markup: 含有無效的 HTML 語法:%{error} - identity_proofs: - active: 有效 - authorize: 是的,請授權 - authorize_connection_prompt: 授權此加密連接? - errors: - failed: 加密連接失敗。請於 %{provider} 重試。 - keybase: - invalid_token: Keybase 標記必須為雜湊加密簽章並且由66個十六進位字符組成。 - verification_failed: Keybase 無法確認此標記為 Keybase 使用者 %{kb_username} 的簽章。請在 Keybase 再試一次。 - wrong_user: 未能為%{current} 以 %{proving} 建立身分驗證。請登入為 %{proving} 再試一次。 - explanation_html: 在此你連結其他網路平台(如 Keybase)上的加密身分。讓其他人可以在那些平台上,傳送加密訊息給你,並驗證你的身分。 - i_am_html: 我是 %{service} 上的 %{username} - identity: 身份 - inactive: 非活躍 - publicize_checkbox: 並發嘟: - publicize_toot: 驗證成功!我在是住在 %{service} 的 %{username} : %{url} - remove: 移除帳戶證明 - removed: 成功移除帳戶證明 - status: 驗證狀態 - view_proof: 檢視證明 imports: errors: over_rows_processing_limit: 含有超過 %{count} 行 @@ -1167,6 +1207,9 @@ zh-TW: reply: proceed: 確認回覆 prompt: 您想回覆此嘟文 + reports: + errors: + invalid_rules: 未引用有效規則 scheduled_statuses: over_daily_limit: 您已經超過了本日排定發嘟的限額 (%{limit}) over_total_limit: 您已經超過了排定發嘟的限額 (%{limit}) @@ -1225,7 +1268,6 @@ zh-TW: edit_profile: 編輯使用者資訊 export: 匯出 featured_tags: 推薦標籤 - identity_proofs: 身分驗證 import: 匯入 import_and_export: 匯入及匯出 migrate: 帳戶搬遷 @@ -1247,17 +1289,18 @@ zh-TW: other: "%{count} 段影片" boosted_from_html: 轉嘟自 %{acct_link} content_warning: 內容警告: %{warning} + default_language: 與介面語言相同 disallowed_hashtags: other: 含有不得使用的標籤: %{tags} + edited_at: 已編輯:%{date} errors: in_reply_not_found: 您嘗試回覆的嘟文看起來不存在。 - language_detection: 自動偵測語言 open_in_web: 以網頁開啟 over_character_limit: 超過了 %{max} 字的限制 pin_errors: + direct: 無法釘選只有僅提及使用者可見之嘟文 limit: 你所置頂的嘟文數量已經達到上限 ownership: 不能置頂他人的嘟文 - private: 不能置頂非公開的嘟文 reblog: 不能置頂轉嘟 poll: total_people: @@ -1408,6 +1451,7 @@ zh-TW: formats: default: "%Y年%-m月%d日 %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: 新增 disable: 停用 @@ -1435,24 +1479,31 @@ zh-TW: subject: 請確認登入嘗試 title: 登入嘗試 warning: + categories: + spam: 垃圾訊息 + violation: 該內容違反以下社群規章 explanation: - disable: 您將無法以任何方式登入或使用您的帳號,但您的個人資料頁面和其他資料仍保持完整。 - sensitive: 您上傳的媒體檔案或連結的媒體將會被標記為敏感。 - silence: 您仍然可以使用您的帳號,但僅有已追蹤您的人才能看到您在此伺服器的貼文,您也可能會從公開清單中被排除。但其他人仍可手動追蹤您。 - suspend: 您將不能使用您的帳號,您的個人資料頁面及其他資料將不再能被取得。您仍可在資料被完全刪除前要求下載你的資料,但我們仍會保留一部份資料,以防止有人規避停權處罰。 - get_in_touch: 您可以回覆此電子郵件並與 %{instance} 的工作人員們聯絡。 + delete_statuses: 您部份的貼文被認定違反一項或多項社群規章,並且已被 %{instance} 的管理員依規定移除。往後更多的違規可能導致對您帳號更嚴重的處罰。 + disable: 您無法繼續使用您的帳號,但您的個人頁面及其他資料內容保持不變。您可以要求一份您的資料備份,帳號異動設定,或是刪除帳號。 + sensitive: 由此刻起,您所有上傳的媒體檔案將被標記為敏感內容,並且隱藏於點擊警告之後。 + silence: 您仍然可以使用您的帳號,但僅有已追蹤您的人才能看到您在此伺服器的貼文,您也可能會從各式探索功能中被排除。但其他人仍可手動追蹤您。 + suspend: 您將不能使用您的帳號,您的個人資料頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載你的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。 + get_in_touch: 如果您認為這是個錯誤,您可回復這封 e-mail 來連繫 %{instance} 的管理員。 + reason: 原因: review_server_policies: 檢視伺服器政策 - statuses: 特別是: + statuses: 被判定違規之嘟文: subject: + delete_statuses: 您於 %{acct} 之嘟文已被移除 disable: 您的帳號 %{acct} 已被凍結 none: 對 %{acct} 的警告 - sensitive: 您帳號 %{acct} 張貼的媒體已被標記為敏感內容 + sensitive: 您於 %{acct} 之媒體檔案即刻起已被標記為敏感內容 silence: 您的帳號 %{acct} 已被限制 suspend: 您的帳號 %{acct} 已被停權 title: + delete_statuses: 嘟文已移除 disable: 帳號已被涷結 none: 警告 - sensitive: 您的媒體已被標記為敏感內容 + sensitive: 隱藏媒體內容 silence: 帳號已被限制 suspend: 帳號己被停用 welcome: diff --git a/config/routes.rb b/config/routes.rb index d0eeda1e8..0eb7f1b0f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -228,6 +228,8 @@ Rails.application.routes.draw do resources :rules resources :reports, only: [:index, :show] do + resources :actions, only: [:create], controller: 'reports/actions' + member do post :assign_to_self post :unassign @@ -335,7 +337,7 @@ Rails.application.routes.draw do # JSON / REST API namespace :v1 do - resources :statuses, only: [:create, :show, :destroy] do + resources :statuses, only: [:create, :show, :update, :destroy] do scope module: :statuses do resources :reblogged_by, controller: :reblogged_by_accounts, only: :index resources :favourited_by, controller: :favourited_by_accounts, only: :index diff --git a/config/webpack/configuration.js b/config/webpack/configuration.js index f05c888d5..55ee06c0c 100644 --- a/config/webpack/configuration.js +++ b/config/webpack/configuration.js @@ -21,8 +21,7 @@ const core = function () { return data.pack ? data : {}; }(); -for (let i = 0; i < flavourFiles.length; i++) { - const flavourFile = flavourFiles[i]; +flavourFiles.forEach((flavourFile) => { const data = load(readFileSync(flavourFile), 'utf8'); data.name = basename(dirname(flavourFile)); data.skin = {}; @@ -35,27 +34,25 @@ for (let i = 0; i < flavourFiles.length; i++) { if (data.pack && typeof data.pack === 'object') { flavours[data.name] = data; } -} +}); -for (let i = 0; i < skinFiles.length; i++) { - const skinFile = skinFiles[i]; +skinFiles.forEach((skinFile) => { let skin = basename(skinFile); const name = basename(dirname(skinFile)); if (!flavours[name]) { - continue; + return; } const data = flavours[name].skin; if (lstatSync(skinFile).isDirectory()) { data[skin] = {}; const skinPacks = glob.sync(join(skinFile, '*.{css,scss}')); - for (let j = 0; j < skinPacks.length; j++) { - const pack = skinPacks[j]; + skinPacks.forEach((pack) => { data[skin][basename(pack, extname(pack))] = pack; - } + }); } else if ((skin = skin.match(/^(.*)\.s?css$/i))) { data[skin[1]] = { common: skinFile }; } -} +}); const output = { path: resolve('public', settings.public_output_path), diff --git a/config/webpack/shared.js b/config/webpack/shared.js index ce08ac206..c2a108a89 100644 --- a/config/webpack/shared.js +++ b/config/webpack/shared.js @@ -10,38 +10,39 @@ const rules = require('./rules'); const localePacks = require('./generateLocalePacks'); function reducePacks (data, into = {}) { - if (!data.pack) { - return into; - } - Object.keys(data.pack).reduce((map, entry) => { + if (!data.pack) return into; + + for (const entry in data.pack) { const pack = data.pack[entry]; - if (!pack) { - return map; + if (!pack) continue; + + let packFiles = []; + if (typeof pack === 'string') + packFiles = [pack]; + else if (Array.isArray(pack)) + packFiles = pack; + else + packFiles = [pack.filename]; + + if (packFiles) { + into[data.name ? `flavours/${data.name}/${entry}` : `core/${entry}`] = packFiles.map(packFile => resolve(data.pack_directory, packFile)); } - const packFile = typeof pack === 'string' ? pack : pack.filename; - if (packFile) { - map[data.name ? `flavours/${data.name}/${entry}` : `core/${entry}`] = resolve(data.pack_directory, packFile); + } + + if (!data.name) return into; + + for (const skinName in data.skin) { + const skin = data.skin[skinName]; + if (!skin) continue; + + for (const entry in skin) { + const packFile = skin[entry]; + if (!packFile) continue; + + into[`skins/${data.name}/${skinName}/${entry}`] = resolve(packFile); } - return map; - }, into); - if (data.name) { - Object.keys(data.skin).reduce((map, entry) => { - const skin = data.skin[entry]; - const skinName = entry; - if (!skin) { - return map; - } - Object.keys(skin).reduce((map, entry) => { - const packFile = skin[entry]; - if (!packFile) { - return map; - } - map[`skins/${data.name}/${skinName}/${entry}`] = resolve(packFile); - return map; - }, into); - return map; - }, into); } + return into; } @@ -49,7 +50,7 @@ const entries = Object.assign( { locales: resolve('app', 'javascript', 'locales') }, localePacks, reducePacks(core), - Object.keys(flavours).reduce((map, entry) => reducePacks(flavours[entry], map), {}) + Object.values(flavours).reduce((map, data) => reducePacks(data, map), {}) ); diff --git a/db/migrate/20220209175231_add_content_type_to_status_edits.rb b/db/migrate/20220209175231_add_content_type_to_status_edits.rb new file mode 100644 index 000000000..0e4e52fcb --- /dev/null +++ b/db/migrate/20220209175231_add_content_type_to_status_edits.rb @@ -0,0 +1,5 @@ +class AddContentTypeToStatusEdits < ActiveRecord::Migration[6.1] + def change + add_column :status_edits, :content_type, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index ff28f7a7f..252373a7c 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_01_18_183123) do +ActiveRecord::Schema.define(version: 2022_02_09_175231) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -824,6 +824,7 @@ ActiveRecord::Schema.define(version: 2022_01_18_183123) do t.boolean "media_attachments_changed", default: false, null: false t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.string "content_type" t.index ["account_id"], name: "index_status_edits_on_account_id" t.index ["status_id"], name: "index_status_edits_on_status_id" end diff --git a/lib/tasks/repo.rake b/lib/tasks/repo.rake index bbf7f20ee..795b54c59 100644 --- a/lib/tasks/repo.rake +++ b/lib/tasks/repo.rake @@ -96,7 +96,8 @@ namespace :repo do end.uniq.compact missing_available_locales = locales_in_files - I18n.available_locales - missing_locale_names = I18n.available_locales.reject { |locale| LanguagesHelper::HUMAN_LOCALES.key?(locale) } + supported_locale_codes = Set.new(LanguagesHelper::SUPPORTED_LOCALES.keys + LanguagesHelper::REGIONAL_LOCALE_NAMES.keys) + missing_locale_names = I18n.available_locales.reject { |locale| supported_locale_codes.include?(locale) } critical = false @@ -123,7 +124,7 @@ namespace :repo do unless missing_locale_names.empty? puts pastel.yellow("You are missing human-readable names for these locales: #{pastel.bold(missing_locale_names.join(', '))}") - puts pastel.yellow("Add them to #{pastel.bold('HUMAN_LOCALES')} in app/helpers/settings_helper.rb or remove the locales from #{pastel.bold('I18n.available_locales')} in config/application.rb") + puts pastel.yellow("Add them to app/helpers/languages_helper.rb or remove the locales from #{pastel.bold('I18n.available_locales')} in config/application.rb") end if critical diff --git a/package.json b/package.json index 36a9f3553..4cb08e5d9 100644 --- a/package.json +++ b/package.json @@ -61,13 +61,13 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.16.12", - "@babel/plugin-proposal-decorators": "^7.16.7", + "@babel/core": "^7.17.2", + "@babel/plugin-proposal-decorators": "^7.17.0", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.16.10", + "@babel/plugin-transform-runtime": "^7.17.0", "@babel/preset-env": "^7.16.11", "@babel/preset-react": "^7.16.7", - "@babel/runtime": "^7.16.7", + "@babel/runtime": "^7.17.0", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.4", @@ -78,7 +78,7 @@ "axios": "^0.25.0", "babel-loader": "^8.2.3", "babel-plugin-lodash": "^3.3.4", - "babel-plugin-preval": "^5.0.0", + "babel-plugin-preval": "^5.1.0", "babel-plugin-react-intl": "^6.2.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "babel-runtime": "^6.26.0", @@ -155,7 +155,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.5", "rimraf": "^3.0.2", - "sass": "^1.49.0", + "sass": "^1.49.7", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", @@ -172,20 +172,19 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.1", - "ws": "^8.4.2", - "yarn": "^1.22.17" + "ws": "^8.5.0" }, "devDependencies": { - "@testing-library/jest-dom": "^5.16.1", + "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.2", "babel-eslint": "^10.1.0", - "babel-jest": "^27.4.6", + "babel-jest": "^27.5.0", "eslint": "^7.32.0", "eslint-plugin-import": "~2.25.4", "eslint-plugin-jsx-a11y": "~6.5.1", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.28.0", - "jest": "^27.4.7", + "jest": "^27.5.1", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb index 3a382ff27..e233bd560 100644 --- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb +++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb @@ -47,7 +47,7 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll it 'returns orderedItems with followers from example.com' do expect(body[:orderedItems]).to be_an Array - expect(body[:orderedItems].sort).to eq [follower_4.uri, follower_1.uri, follower_2.uri] + expect(body[:orderedItems]).to match_array([follower_4.uri, follower_1.uri, follower_2.uri]) end it 'returns private Cache-Control header' do diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb index bf82fd020..a2c7f336f 100644 --- a/spec/controllers/activitypub/replies_controller_spec.rb +++ b/spec/controllers/activitypub/replies_controller_spec.rb @@ -4,8 +4,9 @@ require 'rails_helper' RSpec.describe ActivityPub::RepliesController, type: :controller do let(:status) { Fabricate(:status, visibility: parent_visibility) } - let(:remote_reply_id) { nil } - let(:remote_account) { nil } + let(:remote_account) { Fabricate(:account, domain: 'foobar.com') } + let(:remote_reply_id) { 'https://foobar.com/statuses/1234' } + let(:remote_querier) { nil } shared_examples 'cachable response' do it 'does not set cookies' do @@ -23,224 +24,188 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do end end - before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + shared_examples 'common behavior' do + context 'when status is private' do + let(:parent_visibility) { :private } - Fabricate(:status, thread: status, visibility: :public) - Fabricate(:status, thread: status, visibility: :public) - Fabricate(:status, thread: status, visibility: :private) - Fabricate(:status, account: status.account, thread: status, visibility: :public) - Fabricate(:status, account: status.account, thread: status, visibility: :private) - - Fabricate(:status, account: remote_account, thread: status, visibility: :public, uri: remote_reply_id) if remote_reply_id - end + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end - describe 'GET #index' do - context 'with no signature' do - subject(:response) { get :index, params: { account_username: status.account.username, status_id: status.id } } - subject(:body) { body_as_json } + context 'when status is direct' do + let(:parent_visibility) { :direct } - context 'when account is permanently suspended' do - let(:parent_visibility) { :public } + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end - before do - status.account.suspend! - status.account.deletion_request.destroy - end + shared_examples 'disallowed access' do + context 'when status is public' do + let(:parent_visibility) { :public } - it 'returns http gone' do - expect(response).to have_http_status(410) - end + it 'returns http not found' do + expect(response).to have_http_status(404) end + end - context 'when account is temporarily suspended' do - let(:parent_visibility) { :public } + it_behaves_like 'common behavior' + end - before do - status.account.suspend! - end + shared_examples 'allowed access' do + context 'when account is permanently suspended' do + let(:parent_visibility) { :public } - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end + before do + status.account.suspend! + status.account.deletion_request.destroy end - context 'when status is public' do - let(:parent_visibility) { :public } - - it 'returns http success' do - expect(response).to have_http_status(200) - end + it 'returns http gone' do + expect(response).to have_http_status(410) + end + end - it 'returns application/activity+json' do - expect(response.media_type).to eq 'application/activity+json' - end + context 'when account is temporarily suspended' do + let(:parent_visibility) { :public } - it_behaves_like 'cachable response' + before do + status.account.suspend! + end - it 'returns items with account\'s own replies' do - expect(body[:first]).to be_a Hash - expect(body[:first][:items]).to be_an Array - expect(body[:first][:items].size).to eq 1 - expect(body[:first][:items].all? { |item| item[:to].include?(ActivityPub::TagManager::COLLECTIONS[:public]) || item[:cc].include?(ActivityPub::TagManager::COLLECTIONS[:public]) }).to be true - end + it 'returns http forbidden' do + expect(response).to have_http_status(403) end + end - context 'when status is private' do - let(:parent_visibility) { :private } + context 'when status is public' do + let(:parent_visibility) { :public } + let(:json) { body_as_json } + let(:page_json) { json[:first] } - it 'returns http not found' do - expect(response).to have_http_status(404) - end + it 'returns http success' do + expect(response).to have_http_status(200) end - context 'when status is direct' do - let(:parent_visibility) { :direct } - - it 'returns http not found' do - expect(response).to have_http_status(404) - end + it 'returns application/activity+json' do + expect(response.media_type).to eq 'application/activity+json' end - end - context 'with signature' do - let(:remote_account) { Fabricate(:account, domain: 'example.com') } - let(:only_other_accounts) { nil } + it_behaves_like 'cachable response' - context do - before do - get :index, params: { account_username: status.account.username, status_id: status.id, only_other_accounts: only_other_accounts } + context 'without only_other_accounts' do + it "returns items with thread author's replies" do + expect(page_json).to be_a Hash + expect(page_json[:items]).to be_an Array + expect(page_json[:items].size).to eq 1 + expect(page_json[:items].all? { |item| item[:to].include?(ActivityPub::TagManager::COLLECTIONS[:public]) || item[:cc].include?(ActivityPub::TagManager::COLLECTIONS[:public]) }).to be true end - context 'when status is public' do - let(:parent_visibility) { :public } - - it 'returns http success' do - expect(response).to have_http_status(200) + context 'when there are few self-replies' do + it 'points next to replies from other people' do + expect(page_json).to be_a Hash + expect(Addressable::URI.parse(page_json[:next]).query.split('&')).to include('only_other_accounts=true', 'page=true') end + end - it 'returns application/activity+json' do - expect(response.media_type).to eq 'application/activity+json' + context 'when there are many self-replies' do + before do + 10.times { Fabricate(:status, account: status.account, thread: status, visibility: :public) } end - it_behaves_like 'cachable response' - - context 'without only_other_accounts' do - it 'returns items with account\'s own replies' do - json = body_as_json - - expect(json[:first]).to be_a Hash - expect(json[:first][:items]).to be_an Array - expect(json[:first][:items].size).to eq 1 - expect(json[:first][:items].all? { |item| item[:to].include?(ActivityPub::TagManager::COLLECTIONS[:public]) || item[:cc].include?(ActivityPub::TagManager::COLLECTIONS[:public]) }).to be true - end + it 'points next to other self-replies' do + expect(page_json).to be_a Hash + expect(Addressable::URI.parse(page_json[:next]).query.split('&')).to include('only_other_accounts=false', 'page=true') end + end + end - context 'with only_other_accounts' do - let(:only_other_accounts) { 'true' } - - it 'returns items with other public or unlisted replies' do - json = body_as_json - - expect(json[:first]).to be_a Hash - expect(json[:first][:items]).to be_an Array - expect(json[:first][:items].size).to eq 2 - expect(json[:first][:items].all? { |item| item[:to].include?(ActivityPub::TagManager::COLLECTIONS[:public]) || item[:cc].include?(ActivityPub::TagManager::COLLECTIONS[:public]) }).to be true - end - - context 'with remote responses' do - let(:remote_reply_id) { 'foo' } + context 'with only_other_accounts' do + let(:only_other_accounts) { 'true' } - it 'returned items are all inlined local toots or are ids' do - json = body_as_json + it 'returns items with other public or unlisted replies' do + expect(page_json).to be_a Hash + expect(page_json[:items]).to be_an Array + expect(page_json[:items].size).to eq 3 + end - expect(json[:first]).to be_a Hash - expect(json[:first][:items]).to be_an Array - expect(json[:first][:items].size).to eq 3 - expect(json[:first][:items].all? { |item| item.is_a?(Hash) ? ActivityPub::TagManager.instance.local_uri?(item[:id]) : item.is_a?(String) }).to be true - expect(json[:first][:items]).to include remote_reply_id - end - end - end + it 'only inlines items that are local and public or unlisted replies' do + inlined_replies = page_json[:items].select { |x| x.is_a?(Hash) } + public_collection = ActivityPub::TagManager::COLLECTIONS[:public] + expect(inlined_replies.all? { |item| item[:to].include?(public_collection) || item[:cc].include?(public_collection) }).to be true + expect(inlined_replies.all? { |item| ActivityPub::TagManager.instance.local_uri?(item[:id]) }).to be true end - context 'when status is private' do - let(:parent_visibility) { :private } + it 'uses ids for remote toots' do + remote_replies = page_json[:items].select { |x| !x.is_a?(Hash) } + expect(remote_replies.all? { |item| item.is_a?(String) && !ActivityPub::TagManager.instance.local_uri?(item) }).to be true + end - it 'returns http not found' do - expect(response).to have_http_status(404) + context 'when there are few replies' do + it 'does not have a next page' do + expect(page_json).to be_a Hash + expect(page_json[:next]).to be_nil end end - context 'when status is direct' do - let(:parent_visibility) { :direct } + context 'when there are many replies' do + before do + 10.times { Fabricate(:status, thread: status, visibility: :public) } + end - it 'returns http not found' do - expect(response).to have_http_status(404) + it 'points next to other replies' do + expect(page_json).to be_a Hash + expect(Addressable::URI.parse(page_json[:next]).query.split('&')).to include('only_other_accounts=true', 'page=true') end end end + end - context 'when signed request account is blocked' do - before do - status.account.block!(remote_account) - get :index, params: { account_username: status.account.username, status_id: status.id } - end - - context 'when status is public' do - let(:parent_visibility) { :public } + it_behaves_like 'common behavior' + end - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end + before do + stub_const 'ActivityPub::RepliesController::DESCENDANTS_LIMIT', 5 + allow(controller).to receive(:signed_request_account).and_return(remote_querier) - context 'when status is private' do - let(:parent_visibility) { :private } + Fabricate(:status, thread: status, visibility: :public) + Fabricate(:status, thread: status, visibility: :public) + Fabricate(:status, thread: status, visibility: :private) + Fabricate(:status, account: status.account, thread: status, visibility: :public) + Fabricate(:status, account: status.account, thread: status, visibility: :private) - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end + Fabricate(:status, account: remote_account, thread: status, visibility: :public, uri: remote_reply_id) + end - context 'when status is direct' do - let(:parent_visibility) { :direct } + describe 'GET #index' do + subject(:response) { get :index, params: { account_username: status.account.username, status_id: status.id, only_other_accounts: only_other_accounts } } + let(:only_other_accounts) { nil } - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end - end + context 'with no signature' do + it_behaves_like 'allowed access' + end - context 'when signed request account is domain blocked' do - before do - status.account.block_domain!(remote_account.domain) - get :index, params: { account_username: status.account.username, status_id: status.id } - end + context 'with signature' do + let(:remote_querier) { Fabricate(:account, domain: 'example.com') } - context 'when status is public' do - let(:parent_visibility) { :public } + it_behaves_like 'allowed access' - it 'returns http not found' do - expect(response).to have_http_status(404) - end + context 'when signed request account is blocked' do + before do + status.account.block!(remote_querier) end - context 'when status is private' do - let(:parent_visibility) { :private } + it_behaves_like 'disallowed access' + end - it 'returns http not found' do - expect(response).to have_http_status(404) - end + context 'when signed request account is domain blocked' do + before do + status.account.block_domain!(remote_querier.domain) end - context 'when status is direct' do - let(:parent_visibility) { :direct } - - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end + it_behaves_like 'disallowed access' end end end diff --git a/spec/controllers/api/v1/accounts/statuses_controller_spec.rb b/spec/controllers/api/v1/accounts/statuses_controller_spec.rb index 348de08c2..b962b3398 100644 --- a/spec/controllers/api/v1/accounts/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/statuses_controller_spec.rb @@ -79,7 +79,7 @@ describe Api::V1::Accounts::StatusesController do it 'lists both the public and the private statuses' do get :index, params: { account_id: account.id, pinned: true } json = body_as_json - expect(json.map { |item| item[:id].to_i }.sort).to eq [status.id, private_status.id].sort + expect(json.map { |item| item[:id].to_i }).to match_array([status.id, private_status.id]) end end end diff --git a/spec/controllers/api/v1/media_controller_spec.rb b/spec/controllers/api/v1/media_controller_spec.rb index d8d732630..a1f6ddb24 100644 --- a/spec/controllers/api/v1/media_controller_spec.rb +++ b/spec/controllers/api/v1/media_controller_spec.rb @@ -110,21 +110,24 @@ RSpec.describe Api::V1::MediaController, type: :controller do end end - context 'when not attached to a status' do - let(:media) { Fabricate(:media_attachment, status: nil, account: user.account) } + context 'when the author \'s' do + let(:status) { nil } + let(:media) { Fabricate(:media_attachment, status: status, account: user.account) } - it 'updates the description' do + before do put :update, params: { id: media.id, description: 'Lorem ipsum!!!' } + end + + it 'updates the description' do expect(media.reload.description).to eq 'Lorem ipsum!!!' end - end - context 'when attached to a status' do - let(:media) { Fabricate(:media_attachment, status: Fabricate(:status), account: user.account) } + context 'when already attached to a status' do + let(:status) { Fabricate(:status, account: user.account) } - it 'returns http not found' do - put :update, params: { id: media.id, description: 'Lorem ipsum!!!' } - expect(response).to have_http_status(:not_found) + it 'returns http not found' do + expect(response).to have_http_status(:not_found) + end end end end diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb index 2679ab017..190dfad11 100644 --- a/spec/controllers/api/v1/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -102,6 +102,23 @@ RSpec.describe Api::V1::StatusesController, type: :controller do expect(Status.find_by(id: status.id)).to be nil end end + + describe 'PUT #update' do + let(:scopes) { 'write:statuses' } + let(:status) { Fabricate(:status, account: user.account) } + + before do + put :update, params: { id: status.id, status: 'I am updated' } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'updates the status' do + expect(status.reload.text).to eq 'I am updated' + end + end end context 'without an oauth token' do diff --git a/spec/helpers/languages_helper_spec.rb b/spec/helpers/languages_helper_spec.rb index 6db617824..5587fc261 100644 --- a/spec/helpers/languages_helper_spec.rb +++ b/spec/helpers/languages_helper_spec.rb @@ -3,15 +3,21 @@ require 'rails_helper' describe LanguagesHelper do - describe 'the HUMAN_LOCALES constant' do - it 'includes all I18n locales' do - expect(described_class::HUMAN_LOCALES.keys).to include(*I18n.available_locales) + describe 'the SUPPORTED_LOCALES constant' do + it 'includes all i18n locales' do + expect(Set.new(described_class::SUPPORTED_LOCALES.keys + described_class::REGIONAL_LOCALE_NAMES.keys)).to include(*I18n.available_locales) end end - describe 'human_locale' do - it 'finds the human readable local description from a key' do - expect(helper.human_locale(:en)).to eq('English') + describe 'native_locale_name' do + it 'finds the human readable native name from a key' do + expect(helper.native_locale_name(:en)).to eq('English') + end + end + + describe 'standard_locale_name' do + it 'finds the human readable standard name from a key' do + expect(helper.standard_locale_name(:de)).to eq('German') end end end diff --git a/spec/lib/language_detector_spec.rb b/spec/lib/language_detector_spec.rb deleted file mode 100644 index b7ba0f6c4..000000000 --- a/spec/lib/language_detector_spec.rb +++ /dev/null @@ -1,134 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe LanguageDetector do - describe 'prepare_text' do - it 'returns unmodified string without special cases' do - string = 'just a regular string' - result = described_class.instance.send(:prepare_text, string) - - expect(result).to eq string - end - - it 'collapses spacing in strings' do - string = 'The formatting in this is very odd' - - result = described_class.instance.send(:prepare_text, string) - expect(result).to eq 'The formatting in this is very odd' - end - - it 'strips usernames from strings before detection' do - string = '@username Yeah, very surreal...! also @friend' - - result = described_class.instance.send(:prepare_text, string) - expect(result).to eq 'Yeah, very surreal...! also' - end - - it 'strips URLs from strings before detection' do - string = 'Our website is https://example.com and also http://localhost.dev' - - result = described_class.instance.send(:prepare_text, string) - expect(result).to eq 'Our website is and also' - end - - it 'converts #hashtags back to normal text before detection' do - string = 'Hey look at all the #animals and #FishAndChips' - - result = described_class.instance.send(:prepare_text, string) - expect(result).to eq 'Hey look at all the animals and fish and chips' - end - end - - describe 'detect' do - let(:account_without_user_locale) { Fabricate(:user, locale: nil).account } - let(:account_remote) { Fabricate(:account, domain: 'joinmastodon.org') } - - it 'detects english language for basic strings' do - strings = [ - "Hello and welcome to mastodon how are you today?", - "I'd rather not!", - "a lot of people just want to feel righteous all the time and that's all that matters", - ] - strings.each do |string| - result = described_class.instance.detect(string, account_without_user_locale) - - expect(result).to eq(:en), string - end - end - - it 'detects spanish language' do - string = 'Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon' - result = described_class.instance.detect(string, account_without_user_locale) - - expect(result).to eq :es - end - - describe 'when language can\'t be detected' do - it 'uses nil when sent an empty document' do - result = described_class.instance.detect('', account_without_user_locale) - expect(result).to eq nil - end - - describe 'because of a URL' do - it 'uses nil when sent just a URL' do - string = 'http://example.com/media/2kFTgOJLXhQf0g2nKB4' - cld_result = CLD3::NNetLanguageIdentifier.new(0, 2048).find_language(string) - expect(cld_result).not_to eq :en - - result = described_class.instance.detect(string, account_without_user_locale) - - expect(result).to eq nil - end - end - - describe 'with an account' do - it 'uses the account locale when present' do - account = double(user_locale: 'fr') - result = described_class.instance.detect('', account) - - expect(result).to eq nil - end - - it 'uses nil when account is present but has no locale' do - result = described_class.instance.detect('', account_without_user_locale) - - expect(result).to eq nil - end - end - - describe 'with an `en` default locale' do - it 'uses nil for undetectable string' do - result = described_class.instance.detect('', account_without_user_locale) - - expect(result).to eq nil - end - end - - describe 'remote user' do - it 'detects Korean language' do - string = '안녕하세요' - result = described_class.instance.detect(string, account_remote) - - expect(result).to eq :ko - end - end - - describe 'with a non-`en` default locale' do - around(:each) do |example| - before = I18n.default_locale - I18n.default_locale = :ja - example.run - I18n.default_locale = before - end - - it 'uses nil for undetectable string' do - string = '' - result = described_class.instance.detect(string, account_without_user_locale) - - expect(result).to eq nil - end - end - end - end -end diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb index 850857b2d..84bb4579c 100644 --- a/spec/lib/link_details_extractor_spec.rb +++ b/spec/lib/link_details_extractor_spec.rb @@ -26,4 +26,126 @@ RSpec.describe LinkDetailsExtractor do end end end + + context 'when structured data is present' do + let(:original_url) { 'https://example.com/page.html' } + + context 'and is wrapped in CDATA tags' do + let(:html) { <<-HTML } +<!doctype html> +<html> +<head> + <script type="application/ld+json"> + //<![CDATA[ + {"@context":"http://schema.org","@type":"NewsArticle","mainEntityOfPage":"https://example.com/page.html","headline":"Foo","datePublished":"2022-01-31T19:53:00+00:00","url":"https://example.com/page.html","description":"Bar","author":{"@type":"Person","name":"Hoge"},"publisher":{"@type":"Organization","name":"Baz"}} + //]]> + </script> +</head> +</html> + HTML + + describe '#title' do + it 'returns the title from structured data' do + expect(subject.title).to eq 'Foo' + end + end + + describe '#description' do + it 'returns the description from structured data' do + expect(subject.description).to eq 'Bar' + end + end + + describe '#provider_name' do + it 'returns the provider name from structured data' do + expect(subject.provider_name).to eq 'Baz' + end + end + + describe '#author_name' do + it 'returns the author name from structured data' do + expect(subject.author_name).to eq 'Hoge' + end + end + end + + context 'but the first tag is invalid JSON' do + let(:html) { <<-HTML } +<!doctype html> +<html> +<body> + <script type="application/ld+json"> + { + "@context":"https://schema.org", + "@type":"ItemList", + "url":"https://example.com/page.html", + "name":"Foo", + "description":"Bar" + }, + { + "@context": "https://schema.org", + "@type": "BreadcrumbList", + "itemListElement":[ + { + "@type":"ListItem", + "position":1, + "item":{ + "@id":"https://www.example.com", + "name":"Baz" + } + } + ] + } + </script> + <script type="application/ld+json"> + { + "@context":"https://schema.org", + "@type":"NewsArticle", + "mainEntityOfPage": { + "@type":"WebPage", + "@id": "http://example.com/page.html" + }, + "headline": "Foo", + "description": "Bar", + "datePublished": "2022-01-31T19:46:00+00:00", + "author": { + "@type": "Organization", + "name": "Hoge" + }, + "publisher": { + "@type": "NewsMediaOrganization", + "name":"Baz", + "url":"https://example.com/" + } + } + </script> +</body> +</html> + HTML + + describe '#title' do + it 'returns the title from structured data' do + expect(subject.title).to eq 'Foo' + end + end + + describe '#description' do + it 'returns the description from structured data' do + expect(subject.description).to eq 'Bar' + end + end + + describe '#provider_name' do + it 'returns the provider name from structured data' do + expect(subject.provider_name).to eq 'Baz' + end + end + + describe '#author_name' do + it 'returns the author name from structured data' do + expect(subject.author_name).to eq 'Hoge' + end + end + end + end end diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb index 4732ad625..b01321a20 100644 --- a/spec/models/account_statuses_cleanup_policy_spec.rb +++ b/spec/models/account_statuses_cleanup_policy_spec.rb @@ -495,7 +495,7 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do end it 'returns only normal statuses for deletion' do - expect(subject.pluck(:id).sort).to eq [very_old_status.id, faved4.id, faved5.id, reblogged4.id, reblogged5.id].sort + expect(subject.pluck(:id)).to match_array([very_old_status.id, faved4.id, faved5.id, reblogged4.id, reblogged5.id]) end end diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 25c98d508..029789a11 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -366,17 +366,17 @@ RSpec.describe Status, type: :model do context 'when given one tag' do it 'returns the expected statuses' do - expect(Status.tagged_with([tag1.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status5.id] - expect(Status.tagged_with([tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status5.id] - expect(Status.tagged_with([tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status3.id, status5.id] + expect(Status.tagged_with([tag1.id]).reorder(:id).pluck(:id).uniq).to match_array([status1.id, status5.id]) + expect(Status.tagged_with([tag2.id]).reorder(:id).pluck(:id).uniq).to match_array([status2.id, status5.id]) + expect(Status.tagged_with([tag3.id]).reorder(:id).pluck(:id).uniq).to match_array([status3.id, status5.id]) end end context 'when given multiple tags' do it 'returns the expected statuses' do - expect(Status.tagged_with([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status2.id, status5.id] - expect(Status.tagged_with([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status3.id, status5.id] - expect(Status.tagged_with([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status3.id, status5.id] + expect(Status.tagged_with([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to match_array([status1.id, status2.id, status5.id]) + expect(Status.tagged_with([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to match_array([status1.id, status3.id, status5.id]) + expect(Status.tagged_with([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to match_array([status2.id, status3.id, status5.id]) end end end @@ -393,15 +393,15 @@ RSpec.describe Status, type: :model do context 'when given one tag' do it 'returns the expected statuses' do - expect(Status.tagged_with_all([tag1.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status5.id] - expect(Status.tagged_with_all([tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status5.id] - expect(Status.tagged_with_all([tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status3.id] + expect(Status.tagged_with_all([tag1.id]).reorder(:id).pluck(:id).uniq).to match_array([status1.id, status5.id]) + expect(Status.tagged_with_all([tag2.id]).reorder(:id).pluck(:id).uniq).to match_array([status2.id, status5.id]) + expect(Status.tagged_with_all([tag3.id]).reorder(:id).pluck(:id).uniq).to match_array([status3.id]) end end context 'when given multiple tags' do it 'returns the expected statuses' do - expect(Status.tagged_with_all([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status5.id] + expect(Status.tagged_with_all([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to match_array([status5.id]) expect(Status.tagged_with_all([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [] expect(Status.tagged_with_all([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [] end @@ -420,17 +420,17 @@ RSpec.describe Status, type: :model do context 'when given one tag' do it 'returns the expected statuses' do - expect(Status.tagged_with_none([tag1.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status3.id, status4.id] - expect(Status.tagged_with_none([tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status3.id, status4.id] - expect(Status.tagged_with_none([tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status2.id, status4.id] + expect(Status.tagged_with_none([tag1.id]).reorder(:id).pluck(:id).uniq).to match_array([status2.id, status3.id, status4.id]) + expect(Status.tagged_with_none([tag2.id]).reorder(:id).pluck(:id).uniq).to match_array([status1.id, status3.id, status4.id]) + expect(Status.tagged_with_none([tag3.id]).reorder(:id).pluck(:id).uniq).to match_array([status1.id, status2.id, status4.id]) end end context 'when given multiple tags' do it 'returns the expected statuses' do - expect(Status.tagged_with_none([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to eq [status3.id, status4.id] - expect(Status.tagged_with_none([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status2.id, status4.id] - expect(Status.tagged_with_none([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to eq [status1.id, status4.id] + expect(Status.tagged_with_none([tag1.id, tag2.id]).reorder(:id).pluck(:id).uniq).to match_array([status3.id, status4.id]) + expect(Status.tagged_with_none([tag1.id, tag3.id]).reorder(:id).pluck(:id).uniq).to match_array([status2.id, status4.id]) + expect(Status.tagged_with_none([tag2.id, tag3.id]).reorder(:id).pluck(:id).uniq).to match_array([status1.id, status4.id]) end end end diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index 8bce29cad..865c693aa 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -137,7 +137,7 @@ RSpec.describe StatusPolicy, type: :model do end end - permissions :index?, :update? do + permissions :index? do it 'grants access if staff' do expect(subject).to permit(admin.account) end @@ -146,4 +146,18 @@ RSpec.describe StatusPolicy, type: :model do expect(subject).to_not permit(alice) end end + + permissions :update? do + it 'grants access if staff' do + expect(subject).to permit(admin.account, status) + end + + it 'grants access if owner' do + expect(subject).to permit(status.account, status) + end + + it 'denies access unless staff' do + expect(subject).to_not permit(bob, status) + end + end end diff --git a/spec/services/activitypub/fetch_replies_service_spec.rb b/spec/services/activitypub/fetch_replies_service_spec.rb index 65c453341..fe49b18c1 100644 --- a/spec/services/activitypub/fetch_replies_service_spec.rb +++ b/spec/services/activitypub/fetch_replies_service_spec.rb @@ -34,9 +34,8 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do context 'when the payload is a Collection with inlined replies' do context 'when passing the collection itself' do it 'spawns workers for up to 5 replies on the same server' do - allow(FetchReplyWorker).to receive(:push_bulk) + expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) subject.call(status, payload) - expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) end end @@ -46,9 +45,8 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do end it 'spawns workers for up to 5 replies on the same server' do - allow(FetchReplyWorker).to receive(:push_bulk) + expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) subject.call(status, collection_uri) - expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) end end end @@ -65,9 +63,8 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do context 'when passing the collection itself' do it 'spawns workers for up to 5 replies on the same server' do - allow(FetchReplyWorker).to receive(:push_bulk) + expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) subject.call(status, payload) - expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) end end @@ -77,9 +74,8 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do end it 'spawns workers for up to 5 replies on the same server' do - allow(FetchReplyWorker).to receive(:push_bulk) + expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) subject.call(status, collection_uri) - expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) end end end @@ -100,9 +96,8 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do context 'when passing the collection itself' do it 'spawns workers for up to 5 replies on the same server' do - allow(FetchReplyWorker).to receive(:push_bulk) + expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) subject.call(status, payload) - expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) end end @@ -112,9 +107,8 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do end it 'spawns workers for up to 5 replies on the same server' do - allow(FetchReplyWorker).to receive(:push_bulk) + expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) subject.call(status, collection_uri) - expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5']) end end end diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb new file mode 100644 index 000000000..6ee1dcb43 --- /dev/null +++ b/spec/services/activitypub/process_status_update_service_spec.rb @@ -0,0 +1,248 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do + let!(:status) { Fabricate(:status, text: 'Hello world', account: Fabricate(:account, domain: 'example.com')) } + + let(:alice) { Fabricate(:account) } + let(:bob) { Fabricate(:account) } + + let(:mentions) { [] } + let(:tags) { [] } + let(:media_attachments) { [] } + + before do + mentions.each { |a| Fabricate(:mention, status: status, account: a) } + tags.each { |t| status.tags << t } + media_attachments.each { |m| status.media_attachments << m } + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + tag: [ + { type: 'Hashtag', name: 'hoge' }, + { type: 'Mention', href: ActivityPub::TagManager.instance.uri_for(alice) }, + ], + } + end + + let(:json) { Oj.load(Oj.dump(payload)) } + + subject { described_class.new } + + describe '#call' do + it 'updates text' do + subject.call(status, json) + expect(status.reload.text).to eq 'Hello universe' + end + + it 'updates content warning' do + subject.call(status, json) + expect(status.reload.spoiler_text).to eq 'Show more' + end + + context 'originally without tags' do + before do + subject.call(status, json) + end + + it 'updates tags' do + expect(status.tags.reload.map(&:name)).to eq %w(hoge) + end + end + + context 'originally with tags' do + let(:tags) { [Fabricate(:tag, name: 'test'), Fabricate(:tag, name: 'foo')] } + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + tag: [ + { type: 'Hashtag', name: 'foo' }, + ], + } + end + + before do + subject.call(status, json) + end + + it 'updates tags' do + expect(status.tags.reload.map(&:name)).to eq %w(foo) + end + end + + context 'originally without mentions' do + before do + subject.call(status, json) + end + + it 'updates mentions' do + expect(status.active_mentions.reload.map(&:account_id)).to eq [alice.id] + end + end + + context 'originally with mentions' do + let(:mentions) { [alice, bob] } + + before do + subject.call(status, json) + end + + it 'updates mentions' do + expect(status.active_mentions.reload.map(&:account_id)).to eq [alice.id] + end + end + + context 'originally without media attachments' do + before do + allow(RedownloadMediaWorker).to receive(:perform_async) + subject.call(status, json) + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + attachment: [ + { type: 'Image', mediaType: 'image/png', url: 'https://example.com/foo.png' }, + ] + } + end + + it 'updates media attachments' do + media_attachment = status.media_attachments.reload.first + + expect(media_attachment).to_not be_nil + expect(media_attachment.remote_url).to eq 'https://example.com/foo.png' + end + + it 'queues download of media attachments' do + expect(RedownloadMediaWorker).to have_received(:perform_async) + end + + it 'records media change in edit' do + expect(status.edits.reload.last.media_attachments_changed).to be true + end + end + + context 'originally with media attachments' do + let(:media_attachments) { [Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png'), Fabricate(:media_attachment, remote_url: 'https://example.com/unused.png')] } + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + attachment: [ + { type: 'Image', mediaType: 'image/png', url: 'https://example.com/foo.png', name: 'A picture' }, + ] + } + end + + before do + allow(RedownloadMediaWorker).to receive(:perform_async) + subject.call(status, json) + end + + it 'updates the existing media attachment in-place' do + media_attachment = status.media_attachments.reload.first + + expect(media_attachment).to_not be_nil + expect(media_attachment.remote_url).to eq 'https://example.com/foo.png' + expect(media_attachment.description).to eq 'A picture' + end + + it 'does not queue redownload for the existing media attachment' do + expect(RedownloadMediaWorker).to_not have_received(:perform_async) + end + + it 'updates media attachments' do + expect(status.media_attachments.reload.map(&:remote_url)).to eq %w(https://example.com/foo.png) + end + + it 'records media change in edit' do + expect(status.edits.reload.last.media_attachments_changed).to be true + end + end + + context 'originally with a poll' do + before do + poll = Fabricate(:poll, status: status) + status.update(preloadable_poll: poll) + subject.call(status, json) + end + + it 'removes poll' do + expect(status.reload.poll).to eq nil + end + + it 'records media change in edit' do + expect(status.edits.reload.last.media_attachments_changed).to be true + end + end + + context 'originally without a poll' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Question', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + closed: true, + oneOf: [ + { type: 'Note', name: 'Foo' }, + { type: 'Note', name: 'Bar' }, + { type: 'Note', name: 'Baz' }, + ], + } + end + + before do + subject.call(status, json) + end + + it 'creates a poll' do + poll = status.reload.poll + + expect(poll).to_not be_nil + expect(poll.options).to eq %w(Foo Bar Baz) + end + + it 'records media change in edit' do + expect(status.edits.reload.last.media_attachments_changed).to be true + end + end + + it 'creates edit history' do + subject.call(status, json) + expect(status.edits.reload.map(&:text)).to eq ['Hello world', 'Hello universe'] + end + + it 'sets edited timestamp' do + subject.call(status, json) + expect(status.reload.edited_at.to_s).to eq '2021-09-08 22:39:25 UTC' + end + + it 'records that no media has been changed in edit' do + subject.call(status, json) + expect(status.edits.reload.last.media_attachments_changed).to be false + end + end +end diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb index fb7c6b462..482068d58 100644 --- a/spec/services/remove_status_service_spec.rb +++ b/spec/services/remove_status_service_spec.rb @@ -15,35 +15,97 @@ RSpec.describe RemoveStatusService, type: :service do jeff.follow!(alice) hank.follow!(alice) - - @status = PostStatusService.new.call(alice, text: 'Hello @bob@example.com') - FavouriteService.new.call(jeff, @status) - Fabricate(:status, account: bill, reblog: @status, uri: 'hoge') end - it 'removes status from author\'s home feed' do - subject.call(@status) - expect(HomeFeed.new(alice).get(10)).to_not include(@status.id) - end + context 'when removed status is not a reblog' do + before do + @status = PostStatusService.new.call(alice, text: 'Hello @bob@example.com ThisIsASecret') + FavouriteService.new.call(jeff, @status) + Fabricate(:status, account: bill, reblog: @status, uri: 'hoge') + end - it 'removes status from local follower\'s home feed' do - subject.call(@status) - expect(HomeFeed.new(jeff).get(10)).to_not include(@status.id) - end + it 'removes status from author\'s home feed' do + subject.call(@status) + expect(HomeFeed.new(alice).get(10)).to_not include(@status.id) + end + + it 'removes status from local follower\'s home feed' do + subject.call(@status) + expect(HomeFeed.new(jeff).get(10)).to_not include(@status.id) + end - it 'sends delete activity to followers' do - subject.call(@status) - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.twice + it 'sends Delete activity to followers' do + subject.call(@status) + expect(a_request(:post, 'http://example.com/inbox').with( + body: hash_including({ + 'type' => 'Delete', + 'object' => { + 'type' => 'Tombstone', + 'id' => ActivityPub::TagManager.instance.uri_for(@status), + 'atomUri' => OStatus::TagManager.instance.uri_for(@status), + }, + }) + )).to have_been_made.once + end + + it 'sends Delete activity to rebloggers' do + subject.call(@status) + expect(a_request(:post, 'http://example2.com/inbox').with( + body: hash_including({ + 'type' => 'Delete', + 'object' => { + 'type' => 'Tombstone', + 'id' => ActivityPub::TagManager.instance.uri_for(@status), + 'atomUri' => OStatus::TagManager.instance.uri_for(@status), + }, + }) + )).to have_been_made.once + end + + it 'remove status from notifications' do + expect { subject.call(@status) }.to change { + Notification.where(activity_type: 'Favourite', from_account: jeff, account: alice).count + }.from(1).to(0) + end end - it 'sends delete activity to rebloggers' do - subject.call(@status) - expect(a_request(:post, 'http://example2.com/inbox')).to have_been_made + context 'when removed status is a private self-reblog' do + before do + @original_status = Fabricate(:status, account: alice, text: 'Hello ThisIsASecret', visibility: :private) + @status = ReblogService.new.call(alice, @original_status) + end + + it 'sends Undo activity to followers' do + subject.call(@status) + expect(a_request(:post, 'http://example.com/inbox').with( + body: hash_including({ + 'type' => 'Undo', + 'object' => hash_including({ + 'type' => 'Announce', + 'object' => ActivityPub::TagManager.instance.uri_for(@original_status), + }), + }) + )).to have_been_made.once + end end - it 'remove status from notifications' do - expect { subject.call(@status) }.to change { - Notification.where(activity_type: 'Favourite', from_account: jeff, account: alice).count - }.from(1).to(0) + context 'when removed status is public self-reblog' do + before do + @original_status = Fabricate(:status, account: alice, text: 'Hello ThisIsASecret', visibility: :public) + @status = ReblogService.new.call(alice, @original_status) + end + + it 'sends Undo activity to followers' do + subject.call(@status) + expect(a_request(:post, 'http://example.com/inbox').with( + body: hash_including({ + 'type' => 'Undo', + 'object' => hash_including({ + 'type' => 'Announce', + 'object' => ActivityPub::TagManager.instance.uri_for(@original_status), + }), + }) + )).to have_been_made.once + end end end diff --git a/spec/services/update_status_service_spec.rb b/spec/services/update_status_service_spec.rb new file mode 100644 index 000000000..4fd4837c6 --- /dev/null +++ b/spec/services/update_status_service_spec.rb @@ -0,0 +1,140 @@ +require 'rails_helper' + +RSpec.describe UpdateStatusService, type: :service do + subject { described_class.new } + + context 'when text changes' do + let!(:status) { Fabricate(:status, text: 'Foo') } + let(:preview_card) { Fabricate(:preview_card) } + + before do + status.preview_cards << preview_card + subject.call(status, status.account_id, text: 'Bar') + end + + it 'updates text' do + expect(status.reload.text).to eq 'Bar' + end + + it 'resets preview card' do + expect(status.reload.preview_card).to be_nil + end + + it 'saves edit history' do + expect(status.edits.pluck(:text, :media_attachments_changed)).to eq [['Foo', false], ['Bar', false]] + end + end + + context 'when content warning changes' do + let!(:status) { Fabricate(:status, text: 'Foo', spoiler_text: '') } + let(:preview_card) { Fabricate(:preview_card) } + + before do + status.preview_cards << preview_card + subject.call(status, status.account_id, text: 'Foo', spoiler_text: 'Bar') + end + + it 'updates content warning' do + expect(status.reload.spoiler_text).to eq 'Bar' + end + + it 'saves edit history' do + expect(status.edits.pluck(:text, :spoiler_text, :media_attachments_changed)).to eq [['Foo', '', false], ['Foo', 'Bar', false]] + end + end + + context 'when media attachments change' do + let!(:status) { Fabricate(:status, text: 'Foo') } + let!(:detached_media_attachment) { Fabricate(:media_attachment, account: status.account) } + let!(:attached_media_attachment) { Fabricate(:media_attachment, account: status.account) } + + before do + status.media_attachments << detached_media_attachment + subject.call(status, status.account_id, text: 'Foo', media_ids: [attached_media_attachment.id]) + end + + it 'updates media attachments' do + expect(status.media_attachments.to_a).to eq [attached_media_attachment] + end + + it 'detaches detached media attachments' do + expect(detached_media_attachment.reload.status_id).to be_nil + end + + it 'attaches attached media attachments' do + expect(attached_media_attachment.reload.status_id).to eq status.id + end + + it 'saves edit history' do + expect(status.edits.pluck(:text, :media_attachments_changed)).to eq [['Foo', false], ['Foo', true]] + end + end + + context 'when poll changes' do + let(:account) { Fabricate(:account) } + let!(:status) { Fabricate(:status, text: 'Foo', account: account, poll_attributes: {options: %w(Foo Bar), account: account, multiple: false, hide_totals: false, expires_at: 7.days.from_now }) } + let!(:poll) { status.poll } + let!(:voter) { Fabricate(:account) } + + before do + status.update(poll: poll) + VoteService.new.call(voter, poll, [0]) + subject.call(status, status.account_id, text: 'Foo', poll: { options: %w(Bar Baz Foo), expires_in: 5.days.to_i }) + end + + it 'updates poll' do + poll = status.poll.reload + expect(poll.options).to eq %w(Bar Baz Foo) + end + + it 'resets votes' do + poll = status.poll.reload + expect(poll.votes_count).to eq 0 + expect(poll.votes.count).to eq 0 + expect(poll.cached_tallies).to eq [0, 0, 0] + end + + it 'saves edit history' do + expect(status.edits.pluck(:text, :media_attachments_changed)).to eq [['Foo', false], ['Foo', true]] + end + end + + context 'when mentions in text change' do + let!(:account) { Fabricate(:account) } + let!(:alice) { Fabricate(:account, username: 'alice') } + let!(:bob) { Fabricate(:account, username: 'bob') } + let!(:status) { PostStatusService.new.call(account, text: 'Hello @alice') } + + before do + subject.call(status, status.account_id, text: 'Hello @bob') + end + + it 'changes mentions' do + expect(status.active_mentions.pluck(:account_id)).to eq [bob.id] + end + + it 'keeps old mentions as silent mentions' do + expect(status.mentions.pluck(:account_id)).to match_array([alice.id, bob.id]) + end + end + + context 'when hashtags in text change' do + let!(:account) { Fabricate(:account) } + let!(:status) { PostStatusService.new.call(account, text: 'Hello #foo') } + + before do + subject.call(status, status.account_id, text: 'Hello #bar') + end + + it 'changes tags' do + expect(status.tags.pluck(:name)).to eq %w(bar) + end + end + + it 'notifies ActivityPub about the update' do + status = Fabricate(:status, text: 'Foo') + allow(ActivityPub::DistributionWorker).to receive(:perform_async) + subject.call(status, status.account_id, text: 'Bar') + expect(ActivityPub::DistributionWorker).to have_received(:perform_async) + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b6d127a08..0414ba9ed 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -57,3 +57,10 @@ end def json_str_to_hash(str) JSON.parse(str, symbolize_names: true) end + +def expect_push_bulk_to_match(klass, matcher) + expect(Sidekiq::Client).to receive(:push_bulk).with(hash_including({ + "class" => klass, + "args" => matcher + })) +end diff --git a/spec/workers/activitypub/distribute_poll_update_worker_spec.rb b/spec/workers/activitypub/distribute_poll_update_worker_spec.rb index 7eb6119fd..d68a695b7 100644 --- a/spec/workers/activitypub/distribute_poll_update_worker_spec.rb +++ b/spec/workers/activitypub/distribute_poll_update_worker_spec.rb @@ -10,13 +10,12 @@ describe ActivityPub::DistributePollUpdateWorker do describe '#perform' do before do - allow(ActivityPub::DeliveryWorker).to receive(:push_bulk) follower.follow!(account) end it 'delivers to followers' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), account.id, 'http://example.com']]) subject.perform(status.id) - expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com']) end end end diff --git a/spec/workers/activitypub/distribution_worker_spec.rb b/spec/workers/activitypub/distribution_worker_spec.rb index c017b4da1..3a5900d9b 100644 --- a/spec/workers/activitypub/distribution_worker_spec.rb +++ b/spec/workers/activitypub/distribution_worker_spec.rb @@ -8,7 +8,6 @@ describe ActivityPub::DistributionWorker do describe '#perform' do before do - allow(ActivityPub::DeliveryWorker).to receive(:push_bulk) follower.follow!(status.account) end @@ -18,8 +17,8 @@ describe ActivityPub::DistributionWorker do end it 'delivers to followers' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]]) subject.perform(status.id) - expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com']) end end @@ -29,8 +28,8 @@ describe ActivityPub::DistributionWorker do end it 'delivers to followers' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]]) subject.perform(status.id) - expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com']) end end @@ -43,8 +42,8 @@ describe ActivityPub::DistributionWorker do end it 'delivers to mentioned accounts' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'https://foo.bar/inbox', anything]]) subject.perform(status.id) - expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['https://foo.bar/inbox']) end end end diff --git a/spec/workers/activitypub/move_distribution_worker_spec.rb b/spec/workers/activitypub/move_distribution_worker_spec.rb index b52788e54..af8c44cc0 100644 --- a/spec/workers/activitypub/move_distribution_worker_spec.rb +++ b/spec/workers/activitypub/move_distribution_worker_spec.rb @@ -9,14 +9,16 @@ describe ActivityPub::MoveDistributionWorker do describe '#perform' do before do - allow(ActivityPub::DeliveryWorker).to receive(:push_bulk) follower.follow!(migration.account) blocker.block!(migration.account) end it 'delivers to followers and known blockers' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [ + [kind_of(String), migration.account.id, 'http://example.com'], + [kind_of(String), migration.account.id, 'http://example2.com'] + ]) subject.perform(migration.id) - expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com', 'http://example2.com']) end end end diff --git a/spec/workers/activitypub/status_update_distribution_worker_spec.rb b/spec/workers/activitypub/status_update_distribution_worker_spec.rb new file mode 100644 index 000000000..c014c6790 --- /dev/null +++ b/spec/workers/activitypub/status_update_distribution_worker_spec.rb @@ -0,0 +1,44 @@ +require 'rails_helper' + +describe ActivityPub::StatusUpdateDistributionWorker do + subject { described_class.new } + + let(:status) { Fabricate(:status, text: 'foo') } + let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com') } + + describe '#perform' do + before do + follower.follow!(status.account) + + status.snapshot! + status.text = 'bar' + status.edited_at = Time.now.utc + status.snapshot! + status.save! + end + + context 'with public status' do + before do + status.update(visibility: :public) + end + + it 'delivers to followers' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]]) + + subject.perform(status.id) + end + end + + context 'with private status' do + before do + status.update(visibility: :private) + end + + it 'delivers to followers' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]]) + + subject.perform(status.id) + end + end + end +end diff --git a/spec/workers/activitypub/update_distribution_worker_spec.rb b/spec/workers/activitypub/update_distribution_worker_spec.rb index 688a424d5..0e057fd0b 100644 --- a/spec/workers/activitypub/update_distribution_worker_spec.rb +++ b/spec/workers/activitypub/update_distribution_worker_spec.rb @@ -8,13 +8,12 @@ describe ActivityPub::UpdateDistributionWorker do describe '#perform' do before do - allow(ActivityPub::DeliveryWorker).to receive(:push_bulk) follower.follow!(account) end it 'delivers to followers' do + expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), account.id, 'http://example.com', anything]]) subject.perform(account.id) - expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com']) end end end diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb index 4db5810f1..be02d3192 100644 --- a/spec/workers/move_worker_spec.rb +++ b/spec/workers/move_worker_spec.rb @@ -21,7 +21,6 @@ describe MoveWorker do blocking_account.block!(source_account) muting_account.mute!(source_account) - allow(UnfollowFollowWorker).to receive(:push_bulk) allow(BlockService).to receive(:new).and_return(block_service) allow(block_service).to receive(:call) end @@ -78,8 +77,8 @@ describe MoveWorker do context 'both accounts are distant' do describe 'perform' do it 'calls UnfollowFollowWorker' do + expect_push_bulk_to_match(UnfollowFollowWorker, [[local_follower.id, source_account.id, target_account.id, false]]) subject.perform(source_account.id, target_account.id) - expect(UnfollowFollowWorker).to have_received(:push_bulk).with([local_follower.id]) end include_examples 'user note handling' @@ -92,8 +91,8 @@ describe MoveWorker do describe 'perform' do it 'calls UnfollowFollowWorker' do + expect_push_bulk_to_match(UnfollowFollowWorker, [[local_follower.id, source_account.id, target_account.id, true]]) subject.perform(source_account.id, target_account.id) - expect(UnfollowFollowWorker).to have_received(:push_bulk).with([local_follower.id]) end include_examples 'user note handling' diff --git a/yarn.lock b/yarn.lock index 2edeb6e39..41d6ec76e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.0.tgz#72becdf17ee44b2d1ac5651fb12f1952c336fe23" + integrity sha512-d5RysTlJ7hmw5Tw4UxgxcY3lkMe92n8sXCcuLPAyIAHK6j8DefDwtGnVVDgOnv+RnEosulDJ9NPKQL27bDId0g== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" @@ -21,33 +28,33 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.12", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.16.12" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz" - integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.2", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337" + integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw== dependencies: + "@ampproject/remapping" "^2.0.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.0" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.12" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.0" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" -"@babel/generator@^7.16.8", "@babel/generator@^7.7.2": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz" - integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== +"@babel/generator@^7.17.0", "@babel/generator@^7.7.2": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" + integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== dependencies: - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.0" jsesc "^2.5.1" source-map "^0.5.0" @@ -84,10 +91,10 @@ 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": - version "7.16.10" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz" - integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== +"@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": + 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== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -257,14 +264,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz" - integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== +"@babel/helpers@^7.17.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": version "7.16.7" @@ -275,10 +282,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7", "@babel/parser@^7.7.0": - version "7.16.12" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz" - integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0", "@babel/parser@^7.7.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -322,14 +329,16 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz" - integrity sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ== +"@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== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.0" "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-decorators" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/plugin-syntax-decorators" "^7.17.0" + charcodes "^0.2.0" "@babel/plugin-proposal-dynamic-import@^7.16.7": version "7.16.7" @@ -461,10 +470,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz" - integrity sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw== +"@babel/plugin-syntax-decorators@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" + integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -806,10 +815,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.16.10": - version "7.16.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz" - integrity sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w== +"@babel/plugin-transform-runtime@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" + integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -987,7 +996,14 @@ 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.16.7", "@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.8.7", "@babel/runtime@^7.9.2": +"@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== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.8.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz" integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== @@ -1003,26 +1019,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.16.10" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz" - integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.0" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz" - integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1164,158 +1180,179 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz" - integrity sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA== +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.4.6" - jest-util "^27.4.2" + jest-message-util "^27.5.1" + jest-util "^27.5.1" slash "^3.0.0" -"@jest/core@^27.4.7": - version "27.4.7" - resolved "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz" - integrity sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg== +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: - "@jest/console" "^27.4.6" - "@jest/reporters" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.8.1" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.4.2" - jest-config "^27.4.7" - jest-haste-map "^27.4.6" - jest-message-util "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-resolve-dependencies "^27.4.6" - jest-runner "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - jest-validate "^27.4.6" - jest-watcher "^27.4.6" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" micromatch "^4.0.4" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz" - integrity sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg== +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.4.6" + jest-mock "^27.5.1" -"@jest/fake-timers@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz" - integrity sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A== +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^27.4.6" - jest-mock "^27.4.6" - jest-util "^27.4.2" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" -"@jest/globals@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz" - integrity sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw== +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: - "@jest/environment" "^27.4.6" - "@jest/types" "^27.4.2" - expect "^27.4.6" + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" -"@jest/reporters@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz" - integrity sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ== +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.4.6" - jest-resolve "^27.4.6" - jest-util "^27.4.2" - jest-worker "^27.4.6" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" -"@jest/source-map@^27.4.0": - version "27.4.0" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz" - integrity sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ== +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" source-map "^0.6.0" -"@jest/test-result@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz" - integrity sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ== +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: - "@jest/console" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz" - integrity sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw== +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + 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: - "@jest/test-result" "^27.4.6" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" - jest-runtime "^27.4.6" + "@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.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz" - integrity sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw== +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" 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.4" - jest-haste-map "^27.4.6" - jest-regex-util "^27.4.0" - jest-util "^27.4.2" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1332,10 +1369,21 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jest/types@^27.4.2": - version "27.4.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz" - integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg== +"@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": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" @@ -1343,6 +1391,24 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" + integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.10" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186" + integrity sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@node-redis/bloom@1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@node-redis/bloom/-/bloom-1.0.1.tgz" @@ -1423,10 +1489,10 @@ lz-string "^1.4.4" pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.16.1": - version "5.16.1" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.1.tgz" - integrity sha512-ajUJdfDIuTCadB79ukO+0l8O+QwN0LiSxDaYUTI4LndbbUsGi6rWU1SCexXzBA2NSjlVB9/vbkasQIL3tmPBjw== +"@testing-library/jest-dom@^5.16.2": + version "5.16.2" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" + integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" @@ -1456,10 +1522,10 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.3": - version "7.1.14" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz" - integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.3": + version "7.1.18" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2265,18 +2331,32 @@ babel-eslint@^10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz" - integrity sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg== +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.4.6" - "@jest/types" "^27.4.2" + "@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.4.0" + babel-preset-jest "^27.5.0" chalk "^4.0.0" - graceful-fs "^4.2.4" + 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" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" slash "^3.0.0" babel-loader@^8.2.3: @@ -2307,10 +2387,20 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz" - integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw== +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" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2328,14 +2418,14 @@ babel-plugin-lodash@^3.3.4: lodash "^4.17.10" require-package-name "^2.0.1" -babel-plugin-macros@^2.8.0: - version "2.8.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== +babel-plugin-macros@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" babel-plugin-polyfill-corejs2@^0.3.0: version "0.3.0" @@ -2361,13 +2451,14 @@ babel-plugin-polyfill-regenerator@^0.3.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.0" -babel-plugin-preval@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/babel-plugin-preval/-/babel-plugin-preval-5.0.0.tgz" - integrity sha512-8DqJq6/LPUjSZ0Qq6bVIFpsj2flCEE0Cbnbut9TvGU6jP9g3dOWEXtQ/sdvsA9d6souza8eNGh04WRXpuH9ThA== +babel-plugin-preval@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-5.1.0.tgz#6efb89bf6b97af592cd1400c6df49c0e9e6ab027" + integrity sha512-G5R+xmo5LS41A4UyZjOjV0mp9AvkuCyUOAJ6TOv/jTZS+VKh7L7HUDRcCSOb0YCM/u0fFarh7Diz0wjY8rFNFg== dependencies: - "@babel/runtime" "^7.9.2" - babel-plugin-macros "^2.8.0" + "@babel/runtime" "^7.12.5" + "@types/babel__core" "^7.1.12" + babel-plugin-macros "^3.0.1" require-from-string "^2.0.2" babel-plugin-react-intl@^6.2.0: @@ -2406,12 +2497,20 @@ 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.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz" - integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg== +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.4.0" + 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" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.26.0: @@ -2842,9 +2941,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001286: - version "1.0.30001304" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz" - integrity sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ== + version "1.0.30001310" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz" + integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" @@ -2887,6 +2986,11 @@ char-regex@^1.0.2: resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +charcodes@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" + integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== + "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" @@ -3282,16 +3386,16 @@ cosmiconfig@^5.0.0: js-yaml "^3.13.1" parse-json "^4.0.0" -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" + import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" - yaml "^1.7.2" + yaml "^1.10.0" create-ecdh@^4.0.0: version "4.0.4" @@ -3791,10 +3895,10 @@ diff-sequences@^25.2.6: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz" - integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww== +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== diffie-hellman@^5.0.0: version "5.0.3" @@ -4550,15 +4654,15 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz" - integrity sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag== +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: - "@jest/types" "^27.4.2" - jest-get-type "^27.4.0" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" express@^4.17.1: version "4.17.2" @@ -4824,9 +4928,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0, follow-redirects@^1.14.7: - version "1.14.7" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz" - integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== + 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== font-awesome@^4.7.0: version "4.7.0" @@ -5144,9 +5248,9 @@ gonzales-pe-sl@^4.2.3: dependencies: minimist "1.1.x" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: version "4.2.9" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== gzip-size@^6.0.0: @@ -5481,10 +5585,10 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -5769,7 +5873,7 @@ is-color-stop@^1.0.0: is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.8.1: version "2.8.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: has "^1.0.3" @@ -6103,85 +6207,87 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.4.2: - version "27.4.2" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz" - integrity sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A== +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz" - integrity sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ== +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: - "@jest/environment" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.4.6" + expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - pretty-format "^27.4.6" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.4.7: - version "27.4.7" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz" - integrity sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw== +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: - "@jest/core" "^27.4.7" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.4.7" - jest-util "^27.4.2" - jest-validate "^27.4.6" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" prompts "^2.0.1" yargs "^16.2.0" -jest-config@^27.4.7: - version "27.4.7" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz" - integrity sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw== +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.4.6" - "@jest/types" "^27.4.2" - babel-jest "^27.4.6" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" - graceful-fs "^4.2.4" - jest-circus "^27.4.6" - jest-environment-jsdom "^27.4.6" - jest-environment-node "^27.4.6" - jest-get-type "^27.4.0" - jest-jasmine2 "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-runner "^27.4.6" - jest-util "^27.4.2" - jest-validate "^27.4.6" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" micromatch "^4.0.4" - pretty-format "^27.4.6" + parse-json "^5.2.0" + pretty-format "^27.5.1" slash "^3.0.0" + strip-json-comments "^3.1.1" jest-diff@^25.2.1: version "25.5.0" @@ -6193,151 +6299,171 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz" - integrity sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w== +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" - diff-sequences "^27.4.0" - jest-get-type "^27.4.0" - pretty-format "^27.4.6" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -jest-docblock@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz" - integrity sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg== +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: detect-newline "^3.0.0" -jest-each@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz" - integrity sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA== +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - jest-get-type "^27.4.0" - jest-util "^27.4.2" - pretty-format "^27.4.6" - -jest-environment-jsdom@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz" - integrity sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA== - dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.4.6" - jest-util "^27.4.2" + jest-mock "^27.5.1" + jest-util "^27.5.1" jsdom "^16.6.0" -jest-environment-node@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz" - integrity sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ== +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.4.6" - jest-util "^27.4.2" + jest-mock "^27.5.1" + jest-util "^27.5.1" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz" - integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== +jest-get-type@^27.5.1: + version "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.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz" - integrity sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ== +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.4.2" + "@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.4" - jest-regex-util "^27.4.0" - jest-serializer "^27.4.0" - jest-util "^27.4.2" - jest-worker "^27.4.6" + 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-jasmine2@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz" - integrity sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw== +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" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: - "@jest/environment" "^27.4.6" - "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" + "@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.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.4.6" + expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - pretty-format "^27.4.6" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" throat "^6.0.1" -jest-leak-detector@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz" - integrity sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA== +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: - jest-get-type "^27.4.0" - pretty-format "^27.4.6" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -jest-matcher-utils@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz" - integrity sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA== +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" - jest-diff "^27.4.6" - jest-get-type "^27.4.0" - pretty-format "^27.4.6" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -jest-message-util@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz" - integrity sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA== +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.4.6" + pretty-format "^27.5.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz" - integrity sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw== +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6345,163 +6471,187 @@ 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.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz" - integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== +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" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== -jest-resolve-dependencies@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz" - integrity sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw== +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: - "@jest/types" "^27.4.2" - jest-regex-util "^27.4.0" - jest-snapshot "^27.4.6" + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" -jest-resolve@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz" - integrity sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw== +jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" jest-pnp-resolver "^1.2.2" - jest-util "^27.4.2" - jest-validate "^27.4.6" + jest-util "^27.5.1" + jest-validate "^27.5.1" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz" - integrity sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg== +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: - "@jest/console" "^27.4.6" - "@jest/environment" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.4.0" - jest-environment-jsdom "^27.4.6" - jest-environment-node "^27.4.6" - jest-haste-map "^27.4.6" - jest-leak-detector "^27.4.6" - jest-message-util "^27.4.6" - jest-resolve "^27.4.6" - jest-runtime "^27.4.6" - jest-util "^27.4.2" - jest-worker "^27.4.6" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz" - integrity sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ== - dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/globals" "^27.4.6" - "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" - jest-message-util "^27.4.6" - jest-mock "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz" - integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ== +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.4" + graceful-fs "^4.2.9" -jest-snapshot@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz" - integrity sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ== +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.4.6" - graceful-fs "^4.2.4" - jest-diff "^27.4.6" - jest-get-type "^27.4.0" - jest-haste-map "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-util "^27.4.2" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" natural-compare "^1.4.0" - pretty-format "^27.4.6" + pretty-format "^27.5.1" semver "^7.3.2" -jest-util@^27.4.2: - version "27.4.2" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz" - integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA== +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" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz" - integrity sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ== +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.4.0" + jest-get-type "^27.5.1" leven "^3.1.0" - pretty-format "^27.4.6" + pretty-format "^27.5.1" -jest-watcher@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz" - integrity sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw== +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== dependencies: - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.4.2" + jest-util "^27.5.1" string-length "^4.0.1" jest-worker@^26.5.0: @@ -6513,23 +6663,32 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz" - integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== +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@^27.4.7: - version "27.4.7" - resolved "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz" - integrity sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg== +jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: - "@jest/core" "^27.4.7" + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" import-local "^3.0.2" - jest-cli "^27.4.7" + jest-cli "^27.5.1" jpeg-autorotate@^7.1.1: version "7.1.1" @@ -6622,7 +6781,7 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: @@ -7801,7 +7960,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -8447,10 +8606,20 @@ pretty-format@^25.2.1, pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^27.0.2, pretty-format@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz" - integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g== +pretty-format@^27.0.2: + version "27.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.2.tgz#9283ff8c4f581b186b2d4da461617143dca478a4" + integrity sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig== + dependencies: + "@jest/types" "^27.0.2" + ansi-regex "^5.0.0" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" ansi-styles "^5.0.0" @@ -9228,7 +9397,7 @@ resolve.exports@^1.1.0: resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0: +resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0: version "1.22.0" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -9374,10 +9543,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.49.0: - version "1.49.0" - resolved "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz" - integrity sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw== +sass@^1.49.7: + version "1.49.7" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.7.tgz#22a86a50552b9b11f71404dfad1b9ff44c6b0c49" + integrity sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -10152,7 +10321,7 @@ supports-hyperlinks@^2.0.0: supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svgo@^1.0.0: @@ -11165,10 +11334,10 @@ ws@^7.3.1, ws@^7.4.6: resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz" integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== -ws@^8.4.2: - version "8.4.2" - resolved "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz" - integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== +ws@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== xml-name-validator@^3.0.0: version "3.0.0" @@ -11205,9 +11374,9 @@ yallist@^3.0.2: resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yaml@^1.7.2: +yaml@^1.10.0: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@^13.1.2: @@ -11270,11 +11439,6 @@ yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.0.0" -yarn@^1.22.17: - version "1.22.17" - resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.17.tgz" - integrity sha512-H0p241BXaH0UN9IeH//RT82tl5PfNraVpSpEoW+ET7lmopNC61eZ+A+IDvU8FM6Go5vx162SncDL8J1ZjRBriQ== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" |