From 69b8a0b9bfef54d73be39527335ce6a0863f9f30 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 16 Jan 2025 09:58:59 -0500 Subject: [PATCH 01/29] Collect errors in setup rake task (#33603) --- lib/tasks/mastodon.rake | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 692fe0a5071d90..2338b4393f2ba6 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -17,7 +17,7 @@ namespace :mastodon do ENV.delete('SIDEKIQ_REDIS_URL') begin - errors = false + errors = [] prompt.say('Your instance is identified by its domain name. Changing it afterward will break things.') env['LOCAL_DOMAIN'] = prompt.ask('Domain name:') do |q| @@ -109,7 +109,7 @@ namespace :mastodon do unless prompt.yes?('Try again?') return prompt.warn 'Nothing saved. Bye!' unless prompt.yes?('Continue anyway?') - errors = true + errors << 'Database connection could not be established.' break end end @@ -155,7 +155,7 @@ namespace :mastodon do unless prompt.yes?('Try again?') return prompt.warn 'Nothing saved. Bye!' unless prompt.yes?('Continue anyway?') - errors = true + errors << 'Redis connection could not be established.' break end end @@ -450,7 +450,7 @@ namespace :mastodon do unless prompt.yes?('Try again?') return prompt.warn 'Nothing saved. Bye!' unless prompt.yes?('Continue anyway?') - errors = true + errors << 'E-email was not sent successfully.' break end end @@ -498,7 +498,7 @@ namespace :mastodon do prompt.ok 'Done!' else prompt.error 'That failed! Perhaps your configuration is not right' - errors = true + errors << 'Preparing the database failed' end end @@ -515,14 +515,15 @@ namespace :mastodon do prompt.say 'Done!' else prompt.error 'That failed! Maybe you need swap space?' - errors = true + errors << 'Compiling assets failed.' end end end prompt.say "\n" - if errors - prompt.warn 'Your Mastodon server is set up, but there were some errors along the way, you may have to fix them.' + if errors.any? + prompt.warn 'Your Mastodon server is set up, but there were some errors along the way, you may have to fix them:' + errors.each { |error| prompt.warn "- #{error}" } else prompt.ok 'All done! You can now power on the Mastodon server 🐘' end From da208771b9377c210065570ab6dfc387153f058d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:23:32 +0100 Subject: [PATCH 02/29] Update opentelemetry-ruby (non-major) (#33613) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 26 ++++++------ Gemfile.lock | 116 +++++++++++++++++++++++++-------------------------- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/Gemfile b/Gemfile index 0efcc6562c4897..5becc118d30bfa 100644 --- a/Gemfile +++ b/Gemfile @@ -104,19 +104,19 @@ gem 'opentelemetry-api', '~> 1.4.0' group :opentelemetry do gem 'opentelemetry-exporter-otlp', '~> 0.29.0', require: false - gem 'opentelemetry-instrumentation-active_job', '~> 0.7.1', require: false - gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.21.0', require: false - gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.21.2', require: false - gem 'opentelemetry-instrumentation-excon', '~> 0.22.0', require: false - gem 'opentelemetry-instrumentation-faraday', '~> 0.25.0', require: false - gem 'opentelemetry-instrumentation-http', '~> 0.23.2', require: false - gem 'opentelemetry-instrumentation-http_client', '~> 0.22.3', require: false - gem 'opentelemetry-instrumentation-net_http', '~> 0.22.4', require: false - gem 'opentelemetry-instrumentation-pg', '~> 0.29.0', require: false - gem 'opentelemetry-instrumentation-rack', '~> 0.25.0', require: false - gem 'opentelemetry-instrumentation-rails', '~> 0.34.0', require: false - gem 'opentelemetry-instrumentation-redis', '~> 0.25.3', require: false - gem 'opentelemetry-instrumentation-sidekiq', '~> 0.25.2', require: false + gem 'opentelemetry-instrumentation-active_job', '~> 0.8.0', require: false + gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.22.0', require: false + gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.22.0', require: false + gem 'opentelemetry-instrumentation-excon', '~> 0.23.0', require: false + gem 'opentelemetry-instrumentation-faraday', '~> 0.26.0', require: false + gem 'opentelemetry-instrumentation-http', '~> 0.24.0', require: false + gem 'opentelemetry-instrumentation-http_client', '~> 0.23.0', require: false + gem 'opentelemetry-instrumentation-net_http', '~> 0.23.0', require: false + gem 'opentelemetry-instrumentation-pg', '~> 0.30.0', require: false + gem 'opentelemetry-instrumentation-rack', '~> 0.26.0', require: false + gem 'opentelemetry-instrumentation-rails', '~> 0.35.0', require: false + gem 'opentelemetry-instrumentation-redis', '~> 0.26.0', require: false + gem 'opentelemetry-instrumentation-sidekiq', '~> 0.26.0', require: false gem 'opentelemetry-sdk', '~> 1.4', require: false end diff --git a/Gemfile.lock b/Gemfile.lock index a4c5f8ad9827e3..f5e3ac23a1565e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -473,78 +473,78 @@ GEM opentelemetry-common (~> 0.20) opentelemetry-sdk (~> 1.2) opentelemetry-semantic_conventions - opentelemetry-helpers-sql-obfuscation (0.2.1) + opentelemetry-helpers-sql-obfuscation (0.3.0) opentelemetry-common (~> 0.21) - opentelemetry-instrumentation-action_mailer (0.3.0) + opentelemetry-instrumentation-action_mailer (0.4.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.7) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-action_pack (0.10.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-action_pack (0.11.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-base (~> 0.23.0) opentelemetry-instrumentation-rack (~> 0.21) - opentelemetry-instrumentation-action_view (0.8.0) + opentelemetry-instrumentation-action_view (0.9.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.7) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_job (0.7.8) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_job (0.8.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_model_serializers (0.21.1) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_model_serializers (0.22.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (>= 0.7.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_record (0.8.1) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_record (0.9.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_support (0.7.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-active_support (0.8.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-base (0.22.6) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-base (0.23.0) opentelemetry-api (~> 1.0) opentelemetry-common (~> 0.21) opentelemetry-registry (~> 0.1) - opentelemetry-instrumentation-concurrent_ruby (0.21.4) + opentelemetry-instrumentation-concurrent_ruby (0.22.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-excon (0.22.5) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-excon (0.23.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-faraday (0.25.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-faraday (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http (0.23.5) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-http (0.24.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http_client (0.22.8) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-http_client (0.23.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-net_http (0.22.8) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-net_http (0.23.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-pg (0.29.2) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-pg (0.30.0) opentelemetry-api (~> 1.0) opentelemetry-helpers-sql-obfuscation - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (0.25.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-rack (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rails (0.34.1) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-rails (0.35.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-action_mailer (~> 0.3.0) - opentelemetry-instrumentation-action_pack (~> 0.10.0) - opentelemetry-instrumentation-action_view (~> 0.8.0) - opentelemetry-instrumentation-active_job (~> 0.7.0) - opentelemetry-instrumentation-active_record (~> 0.8.0) - opentelemetry-instrumentation-active_support (~> 0.7.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-concurrent_ruby (~> 0.21.4) - opentelemetry-instrumentation-redis (0.25.7) + opentelemetry-instrumentation-action_mailer (~> 0.4.0) + opentelemetry-instrumentation-action_pack (~> 0.11.0) + opentelemetry-instrumentation-action_view (~> 0.9.0) + opentelemetry-instrumentation-active_job (~> 0.8.0) + opentelemetry-instrumentation-active_record (~> 0.9.0) + opentelemetry-instrumentation-active_support (~> 0.8.0) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0) + opentelemetry-instrumentation-redis (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-sidekiq (0.25.7) + opentelemetry-instrumentation-base (~> 0.23.0) + opentelemetry-instrumentation-sidekiq (0.26.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-base (~> 0.23.0) opentelemetry-registry (0.3.1) opentelemetry-api (~> 1.1) opentelemetry-sdk (1.6.0) @@ -960,19 +960,19 @@ DEPENDENCIES omniauth_openid_connect (~> 0.6.1) opentelemetry-api (~> 1.4.0) opentelemetry-exporter-otlp (~> 0.29.0) - opentelemetry-instrumentation-active_job (~> 0.7.1) - opentelemetry-instrumentation-active_model_serializers (~> 0.21.0) - opentelemetry-instrumentation-concurrent_ruby (~> 0.21.2) - opentelemetry-instrumentation-excon (~> 0.22.0) - opentelemetry-instrumentation-faraday (~> 0.25.0) - opentelemetry-instrumentation-http (~> 0.23.2) - opentelemetry-instrumentation-http_client (~> 0.22.3) - opentelemetry-instrumentation-net_http (~> 0.22.4) - opentelemetry-instrumentation-pg (~> 0.29.0) - opentelemetry-instrumentation-rack (~> 0.25.0) - opentelemetry-instrumentation-rails (~> 0.34.0) - opentelemetry-instrumentation-redis (~> 0.25.3) - opentelemetry-instrumentation-sidekiq (~> 0.25.2) + opentelemetry-instrumentation-active_job (~> 0.8.0) + opentelemetry-instrumentation-active_model_serializers (~> 0.22.0) + opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0) + opentelemetry-instrumentation-excon (~> 0.23.0) + opentelemetry-instrumentation-faraday (~> 0.26.0) + opentelemetry-instrumentation-http (~> 0.24.0) + opentelemetry-instrumentation-http_client (~> 0.23.0) + opentelemetry-instrumentation-net_http (~> 0.23.0) + opentelemetry-instrumentation-pg (~> 0.30.0) + opentelemetry-instrumentation-rack (~> 0.26.0) + opentelemetry-instrumentation-rails (~> 0.35.0) + opentelemetry-instrumentation-redis (~> 0.26.0) + opentelemetry-instrumentation-sidekiq (~> 0.26.0) opentelemetry-sdk (~> 1.4) ox (~> 2.14) parslet From 9e2f930eed8ac4653f795dd0c74e6ac2f11396cf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:23:37 +0100 Subject: [PATCH 03/29] Update dependency aws-sdk-s3 to v1.178.0 (#33611) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f5e3ac23a1565e..29f410bdec0838 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -94,20 +94,20 @@ GEM ast (2.4.2) attr_required (1.0.2) aws-eventstream (1.3.0) - aws-partitions (1.1032.0) - aws-sdk-core (3.214.1) + aws-partitions (1.1038.0) + aws-sdk-core (3.216.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.96.0) - aws-sdk-core (~> 3, >= 3.210.0) + aws-sdk-kms (1.97.0) + aws-sdk-core (~> 3, >= 3.216.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.177.0) - aws-sdk-core (~> 3, >= 3.210.0) + aws-sdk-s3 (1.178.0) + aws-sdk-core (~> 3, >= 3.216.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.10.1) + aws-sigv4 (1.11.0) aws-eventstream (~> 1, >= 1.0.2) azure-blob (0.5.4) rexml From 29b355b6997a7c8f2ab37763fb90dbdb34e337f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 15:24:31 +0000 Subject: [PATCH 04/29] Update dependency concurrent-ruby to v1.3.5 (#33610) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 29f410bdec0838..80c733d2021f23 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -159,7 +159,7 @@ GEM climate_control (1.2.0) cocoon (1.2.15) color_diff (0.1) - concurrent-ruby (1.3.4) + concurrent-ruby (1.3.5) connection_pool (2.5.0) cose (1.3.1) cbor (~> 0.5.9) From a19141441d462638fc1d994c9e845492164532f1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 16 Jan 2025 10:45:02 -0500 Subject: [PATCH 05/29] Move clear environment portion of `mastodon:setup` to private method (#33616) --- lib/tasks/mastodon.rake | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 2338b4393f2ba6..0081b4a8f604c1 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -8,13 +8,7 @@ namespace :mastodon do prompt = TTY::Prompt.new env = {} - # When the application code gets loaded, it runs `lib/mastodon/redis_configuration.rb`. - # This happens before application environment configuration and sets REDIS_URL etc. - # These variables are then used even when REDIS_HOST etc. are changed, so clear them - # out so they don't interfere with our new configuration. - ENV.delete('REDIS_URL') - ENV.delete('CACHE_REDIS_URL') - ENV.delete('SIDEKIQ_REDIS_URL') + clear_environment! begin errors = [] @@ -580,6 +574,17 @@ namespace :mastodon do private + def clear_environment! + # When the application code gets loaded, it runs `lib/mastodon/redis_configuration.rb`. + # This happens before application environment configuration and sets REDIS_URL etc. + # These variables are then used even when REDIS_HOST etc. are changed, so clear them + # out so they don't interfere with our new configuration. + + ENV.delete('REDIS_URL') + ENV.delete('CACHE_REDIS_URL') + ENV.delete('SIDEKIQ_REDIS_URL') + end + def generate_header(include_warning) default_message = "# Generated with mastodon:setup on #{Time.now.utc}\n\n" From 3af6739f21f5a479d1dd4d2816775c4278722b08 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 16 Jan 2025 10:45:48 -0500 Subject: [PATCH 06/29] Add coverage for `AnnualReport.prepare` method (#33618) --- spec/lib/annual_report_spec.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/lib/annual_report_spec.rb b/spec/lib/annual_report_spec.rb index bd4d0f33876a06..fa898d3ac551bd 100644 --- a/spec/lib/annual_report_spec.rb +++ b/spec/lib/annual_report_spec.rb @@ -13,4 +13,13 @@ .to change(GeneratedAnnualReport, :count).by(1) end end + + describe '.prepare' do + before { Fabricate :status } + + it 'generates records from source class which prepare data' do + expect { described_class.prepare(Time.current.year) } + .to change(AnnualReport::StatusesPerAccountCount, :count).by(1) + end + end end From a3baae0b99618e4fc0dbfaca6fd99d504d874f92 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Fri, 17 Jan 2025 09:18:55 +0100 Subject: [PATCH 07/29] API for updating attribution domains (#32730) --- .../api/v1/accounts/credentials_controller.rb | 1 + .../settings/verifications_controller.rb | 4 +- .../concerns/account/attribution_domains.rb | 16 +------ .../rest/credential_account_serializer.rb | 1 + app/validators/domain_validator.rb | 13 ++++-- app/validators/lines_validator.rb | 9 ---- .../settings/verifications/show.html.haml | 2 +- config/locales/activerecord.be.yml | 1 - config/locales/activerecord.bg.yml | 1 - config/locales/activerecord.ca.yml | 1 - config/locales/activerecord.cy.yml | 1 - config/locales/activerecord.da.yml | 1 - config/locales/activerecord.de.yml | 1 - config/locales/activerecord.el.yml | 1 - config/locales/activerecord.en-GB.yml | 1 - config/locales/activerecord.en.yml | 1 - config/locales/activerecord.eo.yml | 1 - config/locales/activerecord.es-AR.yml | 1 - config/locales/activerecord.es-MX.yml | 1 - config/locales/activerecord.es.yml | 1 - config/locales/activerecord.et.yml | 1 - config/locales/activerecord.fa.yml | 1 - config/locales/activerecord.fi.yml | 1 - config/locales/activerecord.fo.yml | 1 - config/locales/activerecord.fr-CA.yml | 1 - config/locales/activerecord.fr.yml | 1 - config/locales/activerecord.fy.yml | 1 - config/locales/activerecord.ga.yml | 1 - config/locales/activerecord.gd.yml | 1 - config/locales/activerecord.gl.yml | 1 - config/locales/activerecord.he.yml | 1 - config/locales/activerecord.hu.yml | 1 - config/locales/activerecord.ia.yml | 1 - config/locales/activerecord.io.yml | 1 - config/locales/activerecord.is.yml | 1 - config/locales/activerecord.it.yml | 1 - config/locales/activerecord.ja.yml | 1 - config/locales/activerecord.ko.yml | 1 - config/locales/activerecord.lt.yml | 1 - config/locales/activerecord.lv.yml | 1 - config/locales/activerecord.ml.yml | 1 - config/locales/activerecord.nl.yml | 1 - config/locales/activerecord.nn.yml | 1 - config/locales/activerecord.pl.yml | 1 - config/locales/activerecord.pt-BR.yml | 1 - config/locales/activerecord.ro.yml | 1 - config/locales/activerecord.ru.yml | 1 - config/locales/activerecord.sq.yml | 1 - config/locales/activerecord.sv.yml | 1 - config/locales/activerecord.th.yml | 1 - config/locales/activerecord.tr.yml | 1 - config/locales/activerecord.uk.yml | 1 - config/locales/activerecord.vi.yml | 1 - config/locales/activerecord.zh-CN.yml | 1 - config/locales/activerecord.zh-TW.yml | 1 - config/locales/simple_form.bg.yml | 4 +- config/locales/simple_form.ca.yml | 4 +- config/locales/simple_form.cs.yml | 4 +- config/locales/simple_form.cy.yml | 4 +- config/locales/simple_form.da.yml | 4 +- config/locales/simple_form.de.yml | 4 +- config/locales/simple_form.el.yml | 4 +- config/locales/simple_form.en-GB.yml | 4 +- config/locales/simple_form.en.yml | 4 +- config/locales/simple_form.eo.yml | 4 +- config/locales/simple_form.es-AR.yml | 4 +- config/locales/simple_form.es-MX.yml | 4 +- config/locales/simple_form.es.yml | 4 +- config/locales/simple_form.et.yml | 4 +- config/locales/simple_form.fa.yml | 4 +- config/locales/simple_form.fi.yml | 4 +- config/locales/simple_form.fo.yml | 4 +- config/locales/simple_form.fr-CA.yml | 4 +- config/locales/simple_form.fr.yml | 4 +- config/locales/simple_form.fy.yml | 4 +- config/locales/simple_form.ga.yml | 4 +- config/locales/simple_form.gd.yml | 4 +- config/locales/simple_form.gl.yml | 4 +- config/locales/simple_form.he.yml | 4 +- config/locales/simple_form.hu.yml | 4 +- config/locales/simple_form.ia.yml | 4 +- config/locales/simple_form.is.yml | 4 +- config/locales/simple_form.it.yml | 4 +- config/locales/simple_form.ja.yml | 4 +- config/locales/simple_form.ko.yml | 4 +- config/locales/simple_form.lt.yml | 4 +- config/locales/simple_form.lv.yml | 4 +- config/locales/simple_form.nl.yml | 4 +- config/locales/simple_form.nn.yml | 4 +- config/locales/simple_form.pl.yml | 4 +- config/locales/simple_form.pt-BR.yml | 4 +- config/locales/simple_form.pt-PT.yml | 4 +- config/locales/simple_form.ro.yml | 2 +- config/locales/simple_form.ru.yml | 4 +- config/locales/simple_form.sq.yml | 4 +- config/locales/simple_form.sv.yml | 4 +- config/locales/simple_form.th.yml | 4 +- config/locales/simple_form.tok.yml | 2 +- config/locales/simple_form.tr.yml | 4 +- config/locales/simple_form.uk.yml | 4 +- config/locales/simple_form.vi.yml | 4 +- config/locales/simple_form.zh-CN.yml | 4 +- config/locales/simple_form.zh-TW.yml | 4 +- lib/mastodon/version.rb | 2 +- spec/models/account_spec.rb | 37 ++++----------- .../api/v1/accounts/credentials_spec.rb | 4 +- spec/system/settings/verifications_spec.rb | 21 +++++++-- spec/validators/lines_validator_spec.rb | 46 ------------------- 108 files changed, 141 insertions(+), 251 deletions(-) delete mode 100644 app/validators/lines_validator.rb delete mode 100644 spec/validators/lines_validator_spec.rb diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb index a378425183b49d..1b64eb4ef2efcb 100644 --- a/app/controllers/api/v1/accounts/credentials_controller.rb +++ b/app/controllers/api/v1/accounts/credentials_controller.rb @@ -33,6 +33,7 @@ def account_params :discoverable, :hide_collections, :indexable, + attribution_domains: [], fields_attributes: [:name, :value] ) end diff --git a/app/controllers/settings/verifications_controller.rb b/app/controllers/settings/verifications_controller.rb index 4e0663253cc82e..9cc60ba2e88b13 100644 --- a/app/controllers/settings/verifications_controller.rb +++ b/app/controllers/settings/verifications_controller.rb @@ -18,7 +18,9 @@ def update private def account_params - params.require(:account).permit(:attribution_domains_as_text) + params.require(:account).permit(:attribution_domains).tap do |params| + params[:attribution_domains] = params[:attribution_domains].split if params[:attribution_domains] + end end def set_account diff --git a/app/models/concerns/account/attribution_domains.rb b/app/models/concerns/account/attribution_domains.rb index 163c2291fea770..5f4d9afabfcf94 100644 --- a/app/models/concerns/account/attribution_domains.rb +++ b/app/models/concerns/account/attribution_domains.rb @@ -4,21 +4,9 @@ module Account::AttributionDomains extend ActiveSupport::Concern included do - validates :attribution_domains_as_text, domain: { multiline: true }, lines: { maximum: 100 }, if: -> { local? && will_save_change_to_attribution_domains? } - end - - def attribution_domains_as_text - self[:attribution_domains].join("\n") - end + normalizes :attribution_domains, with: ->(arr) { arr.filter_map { |str| str.to_s.strip.delete_prefix('http://').delete_prefix('https://').delete_prefix('*.').presence }.uniq } - def attribution_domains_as_text=(str) - self[:attribution_domains] = str.split.filter_map do |line| - line - .strip - .delete_prefix('http://') - .delete_prefix('https://') - .delete_prefix('*.') - end + validates :attribution_domains, domain: true, length: { maximum: 100 }, if: -> { local? && will_save_change_to_attribution_domains? } end def can_be_attributed_from?(domain) diff --git a/app/serializers/rest/credential_account_serializer.rb b/app/serializers/rest/credential_account_serializer.rb index 77ccf8c8691925..ff6ef7ac49f705 100644 --- a/app/serializers/rest/credential_account_serializer.rb +++ b/app/serializers/rest/credential_account_serializer.rb @@ -18,6 +18,7 @@ def source hide_collections: object.hide_collections, discoverable: object.discoverable, indexable: object.indexable, + attribution_domains: object.attribution_domains, } end diff --git a/app/validators/domain_validator.rb b/app/validators/domain_validator.rb index f975dc8ff2e2c3..4b2ae8209956f7 100644 --- a/app/validators/domain_validator.rb +++ b/app/validators/domain_validator.rb @@ -9,18 +9,21 @@ class DomainValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) return if value.blank? - (options[:multiline] ? value.split : [value]).each do |domain| - _, domain = domain.split('@') if options[:acct] + Array.wrap(value).each do |domain| + if options[:acct] + _, domain = domain.split('@') + next if domain.blank? + end - next if domain.blank? - - record.errors.add(attribute, options[:multiline] ? :invalid_domain_on_line : :invalid, value: domain) unless compliant?(domain) + record.errors.add(attribute, value.is_a?(Enumerable) ? :invalid_domain_on_line : :invalid, value: domain) unless compliant?(domain) end end private def compliant?(value) + return false if value.blank? + uri = Addressable::URI.new uri.host = value uri.normalized_host.size < MAX_DOMAIN_LENGTH && uri.normalized_host.split('.').all? { |label| label.size.between?(MIN_LABEL_LENGTH, MAX_LABEL_LENGTH) && label =~ ALLOWED_CHARACTERS_RE } diff --git a/app/validators/lines_validator.rb b/app/validators/lines_validator.rb deleted file mode 100644 index 27a108bb2c7e78..00000000000000 --- a/app/validators/lines_validator.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -class LinesValidator < ActiveModel::EachValidator - def validate_each(record, attribute, value) - return if value.blank? - - record.errors.add(attribute, :too_many_lines, limit: options[:maximum]) if options[:maximum].present? && value.split.size > options[:maximum] - end -end diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index a93ffcebed7e5c..c5698437935f59 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -65,7 +65,7 @@ %p.lead= t('author_attribution.then_instructions') .fields-group - = f.input :attribution_domains_as_text, as: :text, wrapper: :with_block_label, input_html: { placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4, autocapitalize: 'none', autocorrect: 'off' } + = f.input :attribution_domains, as: :text, wrapper: :with_block_label, input_html: { value: @account.attribution_domains.join("\n"), placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4, autocapitalize: 'none', autocorrect: 'off' } .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/config/locales/activerecord.be.yml b/config/locales/activerecord.be.yml index c235ae088d3575..0c77b78b0d5e1b 100644 --- a/config/locales/activerecord.be.yml +++ b/config/locales/activerecord.be.yml @@ -16,7 +16,6 @@ be: text: Прычына errors: messages: - too_many_lines: перавышана абмежаванне ў %{limit} радкоў models: account: attributes: diff --git a/config/locales/activerecord.bg.yml b/config/locales/activerecord.bg.yml index 68c7369033dfcc..1a3f71a9cd3b29 100644 --- a/config/locales/activerecord.bg.yml +++ b/config/locales/activerecord.bg.yml @@ -20,7 +20,6 @@ bg: invalid: не е действително име на домейн messages: invalid_domain_on_line: "%{value} не е действително име на домейн" - too_many_lines: е над ограничение от %{limit} реда models: account: attributes: diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index 09b6366b555d38..23b1d4354441cc 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -20,7 +20,6 @@ ca: invalid: no és un nom de domini vàlid messages: invalid_domain_on_line: "%{value} no és un nom de domini vàlid" - too_many_lines: sobrepassa el límit de %{limit} línies models: account: attributes: diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml index 9bc9b3b2bce986..526d3f646f7c2d 100644 --- a/config/locales/activerecord.cy.yml +++ b/config/locales/activerecord.cy.yml @@ -20,7 +20,6 @@ cy: invalid: "- nid yw'n enw parth dilys" messages: invalid_domain_on_line: Nid yw %{value} yn enw parth dilys - too_many_lines: "- dros y terfyn o %{limit} llinell" models: account: attributes: diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index e611442a1bc886..0c1eb5e6ddd2c8 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -20,7 +20,6 @@ da: invalid: er ikke et gyldigt domænenavn messages: invalid_domain_on_line: "%{value} er ikke et gyldigt domænenavn" - too_many_lines: overstiger grænsen på %{limit} linjer models: account: attributes: diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index 99d50d49e44171..b20e6a65f8eaec 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -20,7 +20,6 @@ de: invalid: ist kein gültiger Domain-Name messages: invalid_domain_on_line: "%{value} ist kein gültiger Domain-Name" - too_many_lines: übersteigt das Limit von %{limit} Zeilen models: account: attributes: diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 2b1210e3373d2b..a6108ec0ca8c22 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -20,7 +20,6 @@ el: invalid: δεν είναι έγκυρο όνομα τομέα messages: invalid_domain_on_line: το %{value} δεν είναι έγκυρο όνομα τομέα - too_many_lines: υπερβαίνει το όριο των %{limit} γραμμών models: account: attributes: diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml index 72edf5e02f4d4b..23bf90e4c827ae 100644 --- a/config/locales/activerecord.en-GB.yml +++ b/config/locales/activerecord.en-GB.yml @@ -20,7 +20,6 @@ en-GB: invalid: is not a valid domain name messages: invalid_domain_on_line: "%{value} is not a valid domain name" - too_many_lines: is over the limit of %{limit} lines models: account: attributes: diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index 57404d26483d4e..f10a9011b3fe1f 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -20,7 +20,6 @@ en: invalid: is not a valid domain name messages: invalid_domain_on_line: "%{value} is not a valid domain name" - too_many_lines: is over the limit of %{limit} lines models: account: attributes: diff --git a/config/locales/activerecord.eo.yml b/config/locales/activerecord.eo.yml index f5e291be8f6846..fcf5bb3160f7f2 100644 --- a/config/locales/activerecord.eo.yml +++ b/config/locales/activerecord.eo.yml @@ -20,7 +20,6 @@ eo: invalid: ne estas valida domajna nomo messages: invalid_domain_on_line: "%{value} ne estas valida domajna nomo" - too_many_lines: superas la limon de %{limit} linioj models: account: attributes: diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index bc889337341f39..5a740924581082 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -20,7 +20,6 @@ es-AR: invalid: no es un nombre de dominio válido messages: invalid_domain_on_line: "%{value} no es un nombre de dominio válido" - too_many_lines: está por encima del límite de %{limit} líneas models: account: attributes: diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index c2d27a65b852a8..4f080eca8cb892 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -20,7 +20,6 @@ es-MX: invalid: no es un nombre de dominio válido messages: invalid_domain_on_line: "%{value} no es un nombre de dominio válido" - too_many_lines: excede el límite de %{limit} líneas models: account: attributes: diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index d7b25a9042e7e5..60d52ad8f23fbc 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -20,7 +20,6 @@ es: invalid: no es un nombre de dominio válido messages: invalid_domain_on_line: "%{value} no es un nombre de dominio válido" - too_many_lines: excede el límite de %{limit} líneas models: account: attributes: diff --git a/config/locales/activerecord.et.yml b/config/locales/activerecord.et.yml index 520e97ffb4a149..308a97cb3e5c46 100644 --- a/config/locales/activerecord.et.yml +++ b/config/locales/activerecord.et.yml @@ -20,7 +20,6 @@ et: invalid: pole kehtiv domeeninimi messages: invalid_domain_on_line: "%{value} ei ole kehtiv domeeninimi" - too_many_lines: on üle limiidi %{limit} rida models: account: attributes: diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml index eb1033d75cc773..c59890da9ddba5 100644 --- a/config/locales/activerecord.fa.yml +++ b/config/locales/activerecord.fa.yml @@ -20,7 +20,6 @@ fa: invalid: نام دامنهٔ معتبری نیست messages: invalid_domain_on_line: "%{value} نام دامنهٔ معتبری نیست" - too_many_lines: بیش از کران %{limit} خط است models: account: attributes: diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index bf98beb6a37018..619f2cd584e461 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -20,7 +20,6 @@ fi: invalid: ei ole kelvollinen verkkotunnus messages: invalid_domain_on_line: "%{value} ei ole kelvollinen verkkotunnus" - too_many_lines: ylittää %{limit} rivin rajan models: account: attributes: diff --git a/config/locales/activerecord.fo.yml b/config/locales/activerecord.fo.yml index c419173ef07aa6..054a82875557dc 100644 --- a/config/locales/activerecord.fo.yml +++ b/config/locales/activerecord.fo.yml @@ -20,7 +20,6 @@ fo: invalid: er ikki eitt virkið økisnavn messages: invalid_domain_on_line: "%{value} er ikki eitt virkið økisnavn" - too_many_lines: er longri enn markið á %{limit} reglur models: account: attributes: diff --git a/config/locales/activerecord.fr-CA.yml b/config/locales/activerecord.fr-CA.yml index 41ac187b9469b4..97aee2304cd81d 100644 --- a/config/locales/activerecord.fr-CA.yml +++ b/config/locales/activerecord.fr-CA.yml @@ -20,7 +20,6 @@ fr-CA: invalid: n'est pas un nom de domaine valide messages: invalid_domain_on_line: "%{value} n'est pas un nom de domaine valide" - too_many_lines: dépasse la limite de %{limit} lignes models: account: attributes: diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index e6d5bc1addfea8..85dbaf293b286f 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -20,7 +20,6 @@ fr: invalid: n'est pas un nom de domaine valide messages: invalid_domain_on_line: "%{value} n'est pas un nom de domaine valide" - too_many_lines: dépasse la limite de %{limit} lignes models: account: attributes: diff --git a/config/locales/activerecord.fy.yml b/config/locales/activerecord.fy.yml index fb95d408680dff..80727feef83d22 100644 --- a/config/locales/activerecord.fy.yml +++ b/config/locales/activerecord.fy.yml @@ -20,7 +20,6 @@ fy: invalid: is in ûnjildige domeinnamme messages: invalid_domain_on_line: "%{value} is in ûnjildige domeinnamme" - too_many_lines: giet oer de limyt fan %{limit} rigels models: account: attributes: diff --git a/config/locales/activerecord.ga.yml b/config/locales/activerecord.ga.yml index c02c5370762aca..c0b86482ce62a7 100644 --- a/config/locales/activerecord.ga.yml +++ b/config/locales/activerecord.ga.yml @@ -20,7 +20,6 @@ ga: invalid: nach ainm fearainn bailí é messages: invalid_domain_on_line: Ní ainm fearainn bailí é %{value} - too_many_lines: thar an teorainn de %{limit} línte models: account: attributes: diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml index 26848e25844910..bcda4a6a316380 100644 --- a/config/locales/activerecord.gd.yml +++ b/config/locales/activerecord.gd.yml @@ -20,7 +20,6 @@ gd: invalid: "– chan eil seo ’na ainm àrainne dligheach" messages: invalid_domain_on_line: Chan eil %{value} ’na ainm àrainne dligheach - too_many_lines: "– tha seo thar crìoch de %{limit} nan loidhnichean" models: account: attributes: diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index 8fdff402826d2b..92cbcc5fb431e1 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -20,7 +20,6 @@ gl: invalid: non é un nome de dominio válido messages: invalid_domain_on_line: "%{value} non é un nome de dominio válido" - too_many_lines: superou o límite de %{limit} liñas models: account: attributes: diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index b63b41c74e9418..57f5e4bcbb39fe 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -20,7 +20,6 @@ he: invalid: אינו שם מתחם קביל messages: invalid_domain_on_line: "%{value} אינו שם מתחם קביל" - too_many_lines: מעבר למגבלה של %{limit} שורות models: account: attributes: diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index b26d1afbe375db..b0ac003e9d75a6 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -20,7 +20,6 @@ hu: invalid: nem egy érvényes domain név messages: invalid_domain_on_line: "%{value} nem egy érvényes domain név" - too_many_lines: túllépi a(z) %{limit} soros korlátot models: account: attributes: diff --git a/config/locales/activerecord.ia.yml b/config/locales/activerecord.ia.yml index 35b28a19aaa97f..b4cc349c08b0bb 100644 --- a/config/locales/activerecord.ia.yml +++ b/config/locales/activerecord.ia.yml @@ -20,7 +20,6 @@ ia: invalid: non es un nomine de dominio valide messages: invalid_domain_on_line: "%{value} non es un nomine de dominio valide" - too_many_lines: il es ultra le limite de %{limit} lineas models: account: attributes: diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index 2b0d5091985242..8663c672180c37 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -20,7 +20,6 @@ io: invalid: ne esas valida domennomo messages: invalid_domain_on_line: "%{value} ne esas valida domennomo" - too_many_lines: esas plu kam la limito qua esas %{limit} linei models: account: attributes: diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 966d8fa9e89fb5..2f4801ac9c0b3f 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -20,7 +20,6 @@ is: invalid: er ekki leyfilegt nafn á léni messages: invalid_domain_on_line: "%{value} er ekki leyfilegt nafn á léni" - too_many_lines: er yfir takmörkum á %{limit} línum models: account: attributes: diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index 6db643408c20c7..2b408f548e46ca 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -20,7 +20,6 @@ it: invalid: non è un nome di dominio valido messages: invalid_domain_on_line: "%{value} non è un nome di dominio valido" - too_many_lines: è oltre il limite di %{limit} righe models: account: attributes: diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 90bbd795a14c09..42a107a31c7aa7 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -20,7 +20,6 @@ ja: invalid: 有効なドメイン名ではありません messages: invalid_domain_on_line: "%{value} は有効なドメイン名ではありません" - too_many_lines: "%{limit} 行の制限を超えています。" models: account: attributes: diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 80bc19f7ad2571..5dbd2e3d78e41d 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -20,7 +20,6 @@ ko: invalid: 올바른 도메인 네임이 아닙니다 messages: invalid_domain_on_line: "%{value}는 올바른 도메인 네임이 아닙니다" - too_many_lines: "%{limit}줄 제한을 초과합니다" models: account: attributes: diff --git a/config/locales/activerecord.lt.yml b/config/locales/activerecord.lt.yml index 5171249d575454..4f94a380826209 100644 --- a/config/locales/activerecord.lt.yml +++ b/config/locales/activerecord.lt.yml @@ -20,7 +20,6 @@ lt: invalid: nėra tinkamas domeno vardas. messages: invalid_domain_on_line: "%{value} nėra tinkamas domeno vardas." - too_many_lines: yra daugiau nei %{limit} eilučių ribojimą. models: account: attributes: diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index 3fb928c89c5c61..6d912bd628eb2a 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -20,7 +20,6 @@ lv: invalid: nav derīgs domēna nosaukums messages: invalid_domain_on_line: "%{value} nav derīgs domēna nosaukums" - too_many_lines: pārsniedz %{limit} līniju ierobežojumu models: account: attributes: diff --git a/config/locales/activerecord.ml.yml b/config/locales/activerecord.ml.yml index 90c5b38ad5ab86..3c8cf67695a2f3 100644 --- a/config/locales/activerecord.ml.yml +++ b/config/locales/activerecord.ml.yml @@ -20,7 +20,6 @@ ml: invalid: ഇതൊരു തെറ്റിയ മേഖലപേരാണു് messages: invalid_domain_on_line: "%{value} ഒരു തെറ്റിയ മേഖലപേരാണു്" - too_many_lines: ഇതു് %{limit} വരിയതിരിന്റെ മേലെയാണു് models: account: attributes: diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml index 530e7187d48609..447601f0c68191 100644 --- a/config/locales/activerecord.nl.yml +++ b/config/locales/activerecord.nl.yml @@ -20,7 +20,6 @@ nl: invalid: is een ongeldige domeinnaam messages: invalid_domain_on_line: "%{value} is een ongeldige domeinnaam" - too_many_lines: overschrijdt de limiet van %{limit} regels models: account: attributes: diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml index 2b5b6dd581b81a..f47bafe0b7c574 100644 --- a/config/locales/activerecord.nn.yml +++ b/config/locales/activerecord.nn.yml @@ -20,7 +20,6 @@ nn: invalid: er ikkje eit gyldig domenenamn messages: invalid_domain_on_line: "%{value} er ikkje gyldig i eit domenenamn" - too_many_lines: er over grensa på %{limit} liner models: account: attributes: diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 58f2b9ac14c55b..06b358700836dc 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -20,7 +20,6 @@ pl: invalid: nie jest prawidłową nazwą domeny messages: invalid_domain_on_line: "%{value} nie jest prawidłową nazwą domeny" - too_many_lines: przekracza limit %{limit} linii models: account: attributes: diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index 9e6ef963647dc4..fde744bed60a32 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -20,7 +20,6 @@ pt-BR: invalid: não é um nome de domínio válido messages: invalid_domain_on_line: "%{value} não é um nome de domínio válido" - too_many_lines: está acima do limite de %{limit} linhas models: account: attributes: diff --git a/config/locales/activerecord.ro.yml b/config/locales/activerecord.ro.yml index fa8b206448a83b..9f21282ca6aebd 100644 --- a/config/locales/activerecord.ro.yml +++ b/config/locales/activerecord.ro.yml @@ -20,7 +20,6 @@ ro: invalid: nu este un nume de domeniu valid messages: invalid_domain_on_line: "%{value} nu este un nume de domeniu valid" - too_many_lines: este peste limita de %{limit} linii models: account: attributes: diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index b49a13561804cb..8769212d525e11 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -20,7 +20,6 @@ ru: invalid: не является действующим доменным именем messages: invalid_domain_on_line: "%{value} Не является действительным доменным именем" - too_many_lines: Превышает предел %{limit} строк models: account: attributes: diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index 7e53b36b87ffd3..8c22f2e0fb9573 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -20,7 +20,6 @@ sq: invalid: s’është emër i vlefshëm përkatësie messages: invalid_domain_on_line: "%{value} s’është emër i vlefshëm përkatësie" - too_many_lines: është tej kufirit prej %{limit} rreshta models: account: attributes: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index bf1ef22f3d1b9f..db488200dfed03 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -20,7 +20,6 @@ sv: invalid: är inte ett giltigt domännamn messages: invalid_domain_on_line: "%{value} Är inte ett giltigt domännamn" - too_many_lines: överskrider gränsen på %{limit} rader models: account: attributes: diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 6575d30a22a791..e8a0a37cffdcea 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -20,7 +20,6 @@ th: invalid: ไม่ใช่ชื่อโดเมนที่ถูกต้อง messages: invalid_domain_on_line: "%{value} ไม่ใช่ชื่อโดเมนที่ถูกต้อง" - too_many_lines: เกินขีดจำกัด %{limit} บรรทัด models: account: attributes: diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index 4795e629fb8357..0b0c34fb825b3d 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -20,7 +20,6 @@ tr: invalid: geçerli bir alan adı değil messages: invalid_domain_on_line: "%{value} geçerli bir alan adı değil" - too_many_lines: "%{limit} satır sınırının üzerinde" models: account: attributes: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 3e82b5ac3d8e5a..1ee426ae45b0bd 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -20,7 +20,6 @@ uk: invalid: не є дійсним іменем домену messages: invalid_domain_on_line: "%{value} не є дійсним іменем домену" - too_many_lines: перевищує ліміт %{limit} рядків models: account: attributes: diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index 16f106a8bbde6d..8e9e6679c4b7e5 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -20,7 +20,6 @@ vi: invalid: không phải là một tên miền hợp lệ messages: invalid_domain_on_line: "%{value} không phải là một tên miền hợp lệ" - too_many_lines: vượt quá giới hạn %{limit} dòng models: account: attributes: diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 262b8c5e77d3c5..74cb299b3b8e06 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -20,7 +20,6 @@ zh-CN: invalid: 不是有效的域名 messages: invalid_domain_on_line: "%{value} 不是有效的域名" - too_many_lines: 超出 %{limit} 行的长度限制 models: account: attributes: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 29c2c86af00182..58b703b5319d37 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -20,7 +20,6 @@ zh-TW: invalid: 並非一個有效網域 messages: invalid_domain_on_line: "%{value} 並非一個有效網域" - too_many_lines: 已超過行數限制 (%{limit} 行) models: account: attributes: diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 68386eded69f74..fee710113b194f 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -3,7 +3,7 @@ bg: simple_form: hints: account: - attribution_domains_as_text: Едно на ред. Защитава от фалшиви атрибути. + attribution_domains: Едно на ред. Защитава от фалшиви атрибути. discoverable: Вашите публични публикации и профил може да се представят или препоръчват в различни области на Mastodon и вашия профил може да се предлага на други потребители. display_name: Вашето пълно име или псевдоним. fields: Вашата начална страница, местоимения, години, всичко що искате. @@ -150,7 +150,7 @@ bg: url: До къде ще се изпращат събитията labels: account: - attribution_domains_as_text: Уебсайтове, на които е позволено да приписват авторството ви + attribution_domains: Уебсайтове, на които е позволено да приписват авторството ви discoverable: Включване на профил и публикации в алгоритмите за откриване fields: name: Етикет diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 58cc0a034c1321..4e70a46d71a14f 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,7 +3,7 @@ ca: simple_form: hints: account: - attribution_domains_as_text: Un per línia. Protegeix de falses atribucions. + attribution_domains: Un per línia. Protegeix de falses atribucions. discoverable: El teu perfil i els teus tuts públics poden aparèixer o ser recomanats en diverses àreas de Mastodon i el teu perfil pot ser suggerit a altres usuaris. display_name: El teu nom complet o el teu nom divertit. fields: La teva pàgina d'inici, pronoms, edat, el que vulguis. @@ -148,7 +148,7 @@ ca: url: On els esdeveniments seran enviats labels: account: - attribution_domains_as_text: Webs que us poden donar crèdit + attribution_domains: Webs que us poden donar crèdit discoverable: Permet el perfil i el tuts en els algorismes de descobriment fields: name: Etiqueta diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 22b92a44346d96..37ad72a7e47230 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -3,7 +3,7 @@ cs: simple_form: hints: account: - attribution_domains_as_text: Jeden na řádek. Chrání před falešným připisování autorství. + attribution_domains: Jeden na řádek. Chrání před falešným připisování autorství. discoverable: Vaše veřejné příspěvky a profil mohou být zobrazeny nebo doporučeny v různých oblastech Mastodonu a váš profil může být navrhován ostatním uživatelům. display_name: Vaše celé jméno nebo přezdívka. fields: Vaše domovská stránka, zájmena, věk, cokoliv chcete. @@ -156,7 +156,7 @@ cs: url: Kam budou události odesílány labels: account: - attribution_domains_as_text: Webové stránky s povolením Vám připsat autorství + attribution_domains: Webové stránky s povolením Vám připsat autorství discoverable: Zobrazovat profil a příspěvky ve vyhledávacích algoritmech fields: name: Označení diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index d5a785e3877aca..b1adc7cbbee032 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -3,7 +3,7 @@ cy: simple_form: hints: account: - attribution_domains_as_text: Un i bob llinell. Yn amddiffyn rhag priodoli ffug. + attribution_domains: Un i bob llinell. Yn amddiffyn rhag priodoli ffug. discoverable: Mae'n bosibl y bydd eich postiadau cyhoeddus a'ch proffil yn cael sylw neu'n cael eu hargymell mewn gwahanol feysydd o Mastodon ac efallai y bydd eich proffil yn cael ei awgrymu i ddefnyddwyr eraill. display_name: Eich enw llawn neu'ch enw hwyl. fields: Eich tudalen cartref, rhagenwau, oed, neu unrhyw beth. @@ -156,7 +156,7 @@ cy: url: I ble bydd digwyddiadau'n cael eu hanfon labels: account: - attribution_domains_as_text: Gwefannau sy'n cael caniatâd i'ch cydnabod chi + attribution_domains: Gwefannau sy'n cael caniatâd i'ch cydnabod chi discoverable: Proffil nodwedd a phostiadau mewn algorithmau darganfod fields: name: Label diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 0ef8232dda472c..676f184f98a883 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -3,7 +3,7 @@ da: simple_form: hints: account: - attribution_domains_as_text: Ét pr. linje. Beskytter mod falske tilskrivninger. + attribution_domains: Ét pr. linje. Beskytter mod falske tilskrivninger. discoverable: Dine offentlige indlæg og profil kan blive fremhævet eller anbefalet i forskellige områder af Mastodon, og profilen kan blive foreslået til andre brugere. display_name: Dit fulde navn eller dit sjove navn. fields: Din hjemmeside, dine pronominer, din alder, eller hvad du har lyst til. @@ -156,7 +156,7 @@ da: url: Hvor begivenheder sendes til labels: account: - attribution_domains_as_text: Websteder, man må krediteres af + attribution_domains: Websteder, man må krediteres af discoverable: Fremhæv profil og indlæg i opdagelsesalgoritmer fields: name: Etiket diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index ea0681e1af9eff..2becfb36dc6479 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -3,7 +3,7 @@ de: simple_form: hints: account: - attribution_domains_as_text: Eine Domain pro Zeile. Dadurch können falsche Zuschreibungen unterbunden werden. + attribution_domains: Eine Domain pro Zeile. Dadurch können falsche Zuschreibungen unterbunden werden. discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon angezeigt oder empfohlen werden und dein Profil kann anderen vorgeschlagen werden. display_name: Dein richtiger Name oder dein Fantasiename. fields: Deine Website, Pronomen, dein Alter – alles, was du möchtest. @@ -156,7 +156,7 @@ de: url: Wohin Ereignisse gesendet werden labels: account: - attribution_domains_as_text: Websites, die auf dich verweisen dürfen + attribution_domains: Websites, die auf dich verweisen dürfen discoverable: Profil und Beiträge in Suchalgorithmen berücksichtigen fields: name: Beschriftung diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index c729bef20b304a..37ec3593777e6e 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -3,7 +3,7 @@ el: simple_form: hints: account: - attribution_domains_as_text: Μία ανά γραμμή. Προστατεύει από ψευδείς ιδιότητες. + attribution_domains: Μία ανά γραμμή. Προστατεύει από ψευδείς ιδιότητες. discoverable: Οι δημόσιες δημοσιεύσεις και το προφίλ σου μπορεί να εμφανίζονται ή να συνιστώνται σε διάφορους τομείς του Mastodon και το προφίλ σου μπορεί να προτείνεται σε άλλους χρήστες. display_name: Το πλήρες ή το αστείο σου όνομα. fields: Η αρχική σου σελίδα, αντωνυμίες, ηλικία, ό,τι θες. @@ -155,7 +155,7 @@ el: url: Πού θα σταλούν τα γεγονότα labels: account: - attribution_domains_as_text: Ιστοσελίδες που επιτρέπεται να σου δώσουν εύσημα + attribution_domains: Ιστοσελίδες που επιτρέπεται να σου δώσουν εύσημα discoverable: Παροχή προφίλ και αναρτήσεων σε αλγορίθμους ανακάλυψης fields: name: Περιγραφή diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index aa1184a02f7ac2..d8bfd1122f5002 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -3,7 +3,7 @@ en-GB: simple_form: hints: account: - attribution_domains_as_text: One per line. Protects from false attributions. + attribution_domains: One per line. Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -144,7 +144,7 @@ en-GB: url: Where events will be sent to labels: account: - attribution_domains_as_text: Websites allowed to credit you + attribution_domains: Websites allowed to credit you discoverable: Feature profile and posts in discovery algorithms fields: name: Label diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 3a052ad62602d9..696ccd35dcbdb7 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -3,7 +3,7 @@ en: simple_form: hints: account: - attribution_domains_as_text: One per line. Protects from false attributions. + attribution_domains: One per line. Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -156,7 +156,7 @@ en: url: Where events will be sent to labels: account: - attribution_domains_as_text: Websites allowed to credit you + attribution_domains: Websites allowed to credit you discoverable: Feature profile and posts in discovery algorithms fields: name: Label diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 59fad146d4cfd5..4688fe614ac006 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -3,7 +3,7 @@ eo: simple_form: hints: account: - attribution_domains_as_text: Unu por linio. Protektas kontraŭ falsaj atribuoj. + attribution_domains: Unu por linio. Protektas kontraŭ falsaj atribuoj. discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj. display_name: Via plena nomo aŭ via kromnomo. fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. @@ -156,7 +156,7 @@ eo: url: Kien eventoj sendotas labels: account: - attribution_domains_as_text: Retejoj permesitaj krediti vin + attribution_domains: Retejoj permesitaj krediti vin discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 74fcce823937bc..0959ac0d7b5ee1 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -3,7 +3,7 @@ es-AR: simple_form: hints: account: - attribution_domains_as_text: Una por línea. Protege de falsas atribuciones. + attribution_domains: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones pueden ser destacadas o recomendadas en varias áreas de Mastodon, y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu pseudónimo. fields: Tu sitio web, pronombres, edad, o lo que quieras. @@ -156,7 +156,7 @@ es-AR: url: Adónde serán enviados los eventos labels: account: - attribution_domains_as_text: Sitios web autorizados a acreditarte + attribution_domains: Sitios web autorizados a acreditarte discoverable: Destacar perfil y mensajes en algoritmos de descubrimiento fields: name: Nombre de campo diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 8dc1c4a3a6d85c..4ed442ae19b349 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -3,7 +3,7 @@ es-MX: simple_form: hints: account: - attribution_domains_as_text: Uno por línea. Protege contra atribuciones falsas. + attribution_domains: Uno por línea. Protege contra atribuciones falsas. discoverable: Tu perfil y las publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu página de inicio, pronombres, edad, lo que quieras. @@ -156,7 +156,7 @@ es-MX: url: Donde los eventos serán enviados labels: account: - attribution_domains_as_text: Sitios web autorizados para acreditarte + attribution_domains: Sitios web autorizados para acreditarte discoverable: Destacar el perfil y las publicaciones en el algoritmo de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 77cd04cfd02d5d..dd62884d68ef9d 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -3,7 +3,7 @@ es: simple_form: hints: account: - attribution_domains_as_text: Una por línea. Protege de falsas atribuciones. + attribution_domains: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu carta de presentación, pronombres, edad, lo que quieras. @@ -156,7 +156,7 @@ es: url: Donde los eventos serán enviados labels: account: - attribution_domains_as_text: Sitios web autorizados a acreditarte + attribution_domains: Sitios web autorizados a acreditarte discoverable: Destacar perfil y publicaciones en algoritmos de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index 2f421b97b57426..e8df5dda472a10 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -3,7 +3,7 @@ et: simple_form: hints: account: - attribution_domains_as_text: Üks rea peal. See kaitseb pahatahtlike viidete eest. + attribution_domains: Üks rea peal. See kaitseb pahatahtlike viidete eest. discoverable: Su profiili ja avalikke postitusi võidakse Mastodoni erinevates piirkondades esile tõsta või soovitada ning su profiili soovitada teistele kasutajatele. display_name: Su täisnimi või naljanimi. fields: Su koduleht, sugu, vanus. Mistahes, mida soovid. @@ -146,7 +146,7 @@ et: url: Kuhu sündmused saadetakse labels: account: - attribution_domains_as_text: Sinule viidata lubatud veebilehed + attribution_domains: Sinule viidata lubatud veebilehed discoverable: Tõsta postitused ja profiil avastamise algoritmides esile fields: name: Nimetus diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 4e37be05d0f94f..493f7972bd1145 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -3,7 +3,7 @@ fa: simple_form: hints: account: - attribution_domains_as_text: یکی در هر خط. محافظت از اعتباردهی‌های اشتباه. + attribution_domains: یکی در هر خط. محافظت از اعتباردهی‌های اشتباه. discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود. display_name: نام کامل یا باحالتان. fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید. @@ -156,7 +156,7 @@ fa: url: جایی که رویدادها فرستاده می‌شوند labels: account: - attribution_domains_as_text: پابگاه‌های وبی که اجازهٔ اعتبار دهی به شما را دارند + attribution_domains: پابگاه‌های وبی که اجازهٔ اعتبار دهی به شما را دارند discoverable: مشخص کردن مشخصات و فرسته‌ها در الگوریتم‌های اکتشاف fields: name: برچسب diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index acd1eefca63815..a21781f772a86a 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -3,7 +3,7 @@ fi: simple_form: hints: account: - attribution_domains_as_text: Yksi riviä kohti. Suojaa vääriltä tunnustuksilta. + attribution_domains: Yksi riviä kohti. Suojaa vääriltä tunnustuksilta. discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille. display_name: Koko nimesi tai lempinimesi. fields: Verkkosivustosi, pronominisi, ikäsi ja mitä ikinä haluatkaan ilmoittaa. @@ -156,7 +156,7 @@ fi: url: Mihin tapahtumat lähetetään labels: account: - attribution_domains_as_text: Verkkosivustot, jotka voivat antaa sinulle tunnustusta + attribution_domains: Verkkosivustot, jotka voivat antaa sinulle tunnustusta discoverable: Pidä profiiliasi ja julkaisujasi esillä löytämisalgoritmeissa fields: name: Nimike diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml index 99bb1ccaa00665..69d41285dc1dc9 100644 --- a/config/locales/simple_form.fo.yml +++ b/config/locales/simple_form.fo.yml @@ -3,7 +3,7 @@ fo: simple_form: hints: account: - attribution_domains_as_text: Eitt á hvørja reglu. Tað verjir fyri skeivum tilsipingum. + attribution_domains: Eitt á hvørja reglu. Tað verjir fyri skeivum tilsipingum. discoverable: Tínir almennu postar og tín vangi kunnu vera drigin fram og viðmæld ymsa staðni í Mastodon og vangin hjá tær kann vera viðmæltur øðrum brúkarum. display_name: Títt fulla navn og títt stuttliga navn. fields: Heimasíðan hjá tær, fornøvn, aldur ella hvat tú vil. @@ -156,7 +156,7 @@ fo: url: Hvar hendingar verða sendar til labels: account: - attribution_domains_as_text: Heimasíður, sum hava loyvi at sipa til tín + attribution_domains: Heimasíður, sum hava loyvi at sipa til tín discoverable: Framheva vanga og postar í uppdagingar-algoritmum fields: name: Spjaldur diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index 4f89eec5e69d65..d229808eae8066 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -3,7 +3,7 @@ fr-CA: simple_form: hints: account: - attribution_domains_as_text: Un par ligne. Protège contre les fausses attributions. + attribution_domains: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom cool. fields: Votre page d'accueil, pronoms, âge, tout ce que vous voulez. @@ -156,7 +156,7 @@ fr-CA: url: Là où les événements seront envoyés labels: account: - attribution_domains_as_text: Sites web autorisés à vous citer + attribution_domains: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 62dd23f9300d96..4fa202847b57bb 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,7 +3,7 @@ fr: simple_form: hints: account: - attribution_domains_as_text: Un par ligne. Protège contre les fausses attributions. + attribution_domains: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom rigolo. fields: Votre page personnelle, vos pronoms, votre âge, ce que vous voulez. @@ -156,7 +156,7 @@ fr: url: Là où les événements seront envoyés labels: account: - attribution_domains_as_text: Sites web autorisés à vous citer + attribution_domains: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index 3c8fef4e05552b..ffe2f49ef4d6f2 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -3,7 +3,7 @@ fy: simple_form: hints: account: - attribution_domains_as_text: Ien per rigel. Beskermet tsjin falske attribúsjes. + attribution_domains: Ien per rigel. Beskermet tsjin falske attribúsjes. discoverable: Jo iepenbiere berjochten kinne útljochte wurde op ferskate plakken binnen Mastodon en jo account kin oanrekommandearre wurde oan oare brûkers. display_name: Jo folsleine namme of in aardige bynamme. fields: Jo website, persoanlike foarnammewurden, leeftiid, alles wat jo mar kwyt wolle. @@ -156,7 +156,7 @@ fy: url: Wêr’t eveneminten nei ta stjoerd wurde labels: account: - attribution_domains_as_text: Websites dy’t jo wurdearring jaan meie + attribution_domains: Websites dy’t jo wurdearring jaan meie discoverable: Profyl en bydragen yn sykalgoritmen opnimme litte fields: name: Label diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 02b2942b5d563f..877f909ffd54f1 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -3,7 +3,7 @@ ga: simple_form: hints: account: - attribution_domains_as_text: Ceann in aghaidh an líne. Cosnaíonn sé ó sannadh bréagach. + attribution_domains: Ceann in aghaidh an líne. Cosnaíonn sé ó sannadh bréagach. discoverable: Seans go mbeidh do phostálacha poiblí agus do phróifíl le feiceáil nó molta i réimsí éagsúla de Mastodon agus is féidir do phróifíl a mholadh d’úsáideoirí eile. display_name: D'ainm iomlán nó d'ainm spraoi. fields: Do leathanach baile, forainmneacha, aois, rud ar bith is mian leat. @@ -156,7 +156,7 @@ ga: url: An áit a seolfar imeachtaí chuig labels: account: - attribution_domains_as_text: Tá cead ag suíomhanna Gréasáin creidmheas a thabhairt duit + attribution_domains: Tá cead ag suíomhanna Gréasáin creidmheas a thabhairt duit discoverable: Próifíl gné agus postálacha in halgartaim fionnachtana fields: name: Lipéad diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 4c3a297738891e..6558462c351c88 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -3,7 +3,7 @@ gd: simple_form: hints: account: - attribution_domains_as_text: Loidhne fa leth do gach fear. Dìonaidh seo o iomraidhean meallta. + attribution_domains: Loidhne fa leth do gach fear. Dìonaidh seo o iomraidhean meallta. discoverable: Dh’fhaoidte gun dèid na postaichean poblach ’s a’ phròifil agad a bhrosnachadh no a mholadh ann an caochladh roinnean de Mhastodon agus gun dèid a’ phròifil agad a mholadh do chàch. display_name: D’ ainm slàn no spòrsail. fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu. @@ -144,7 +144,7 @@ gd: url: Far an dèid na tachartasan a chur labels: account: - attribution_domains_as_text: Na làraichean-lìn a dh’fhaodas iomradh a thoirt ort + attribution_domains: Na làraichean-lìn a dh’fhaodas iomradh a thoirt ort discoverable: Brosnaich a’ phròifil is postaichean agad sna h-algairimean rùrachaidh fields: name: Leubail diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 6fdbe06d0668d1..9b81d1082294e0 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -3,7 +3,7 @@ gl: simple_form: hints: account: - attribution_domains_as_text: Un por liña. Protéxete das atribucións falsas. + attribution_domains: Un por liña. Protéxete das atribucións falsas. discoverable: As túas publicacións públicas e perfil poden mostrarse ou recomendarse en varias zonas de Mastodon e o teu perfil ser suxerido a outras usuarias. display_name: O teu nome completo ou un nome divertido. fields: Páxina web, pronome, idade, o que ti queiras. @@ -156,7 +156,7 @@ gl: url: A onde se enviarán os eventos labels: account: - attribution_domains_as_text: Sitios web que poden acreditarte + attribution_domains: Sitios web que poden acreditarte discoverable: Perfil destacado e publicacións nos algoritmos de descubrimento fields: name: Etiqueta diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 85e8cbc53e3f56..0ce10c86170f81 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -3,7 +3,7 @@ he: simple_form: hints: account: - attribution_domains_as_text: אחד בכל שורה. יגן מפני יחוס מטעה. + attribution_domains: אחד בכל שורה. יגן מפני יחוס מטעה. discoverable: הפוסטים והפרופיל שלך עשויים להיות מוצגים או מומלצים באזורים שונים באתר וייתכן שהפרופיל שלך יוצע למשתמשים אחרים. display_name: שמך המלא או שם הכיף שלך. fields: עמוד הבית שלך, לשון הפנייה, גיל, וכל מידע אחר לפי העדפתך האישית. @@ -156,7 +156,7 @@ he: url: היעד שאליו יישלחו אירועים labels: account: - attribution_domains_as_text: אתרים המורשים לייחס אליך מאמרים + attribution_domains: אתרים המורשים לייחס אליך מאמרים discoverable: הצג משתמש ופוסטים בעמוד התגליות fields: name: תווית diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 8a0f867f147ddd..df81f43fd90928 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -3,7 +3,7 @@ hu: simple_form: hints: account: - attribution_domains_as_text: Megvéd a hamis forrásmegjelölésektől. + attribution_domains: Megvéd a hamis forrásmegjelölésektől. discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható. display_name: Teljes neved vagy vicces neved. fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél. @@ -153,7 +153,7 @@ hu: url: Ahová az eseményket küldjük labels: account: - attribution_domains_as_text: Weboldalak, melyek szerzőként tüntethetnek fel + attribution_domains: Weboldalak, melyek szerzőként tüntethetnek fel discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban fields: name: Címke diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index 585e84f490950f..47b81ed1a6082d 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -3,7 +3,7 @@ ia: simple_form: hints: account: - attribution_domains_as_text: Un per linea. Protege contra false attributiones. + attribution_domains: Un per linea. Protege contra false attributiones. discoverable: Tu messages public e tu profilo pote esser mittite in evidentia o recommendate in varie areas de Mastodon e tu profilo pote esser suggerite a altere usatores. display_name: Tu prenomine e nomine de familia o tu pseudonymo. fields: Tu pagina principal, pronomines, etate, tote lo que tu vole. @@ -156,7 +156,7 @@ ia: url: Ubi le eventos essera inviate labels: account: - attribution_domains_as_text: Sitos web autorisate a accreditar te + attribution_domains: Sitos web autorisate a accreditar te discoverable: Evidentiar le profilo e messages in le algorithmos de discoperta fields: name: Etiquetta diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 1348fa4e9f2283..106d2017d29649 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -3,7 +3,7 @@ is: simple_form: hints: account: - attribution_domains_as_text: Eitt á hverja línu. Ver fyrir röngum tilvísunum. + attribution_domains: Eitt á hverja línu. Ver fyrir röngum tilvísunum. discoverable: Opinberar færslur og notandasnið þitt geta birst eða verið mælt með á hinum ýmsu svæðum í Mastodon auk þess sem hægt er að mæla með þér við aðra notendur. display_name: Fullt nafn þitt eða eitthvað til gamans. fields: Heimasíðan þín, fornöfn, aldur eða eitthvað sem þú vilt koma á framfæri. @@ -156,7 +156,7 @@ is: url: Hvert atburðir verða sendir labels: account: - attribution_domains_as_text: Vefsvæði sem mega vitna í þig + attribution_domains: Vefsvæði sem mega vitna í þig discoverable: Hafa notandasnið og færslur með í reikniritum leitar fields: name: Skýring diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 97565f4b1a68b2..62fe75e838384f 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -3,7 +3,7 @@ it: simple_form: hints: account: - attribution_domains_as_text: Uno per riga. Protegge da false attribuzioni. + attribution_domains: Uno per riga. Protegge da false attribuzioni. discoverable: I tuoi post pubblici e il tuo profilo potrebbero essere presenti o consigliati in varie aree di Mastodon e il tuo profilo potrebbe essere suggerito ad altri utenti. display_name: Il tuo nome completo o il tuo soprannome. fields: La tua homepage, i pronomi, l'età, tutto quello che vuoi. @@ -156,7 +156,7 @@ it: url: Dove gli eventi saranno inviati labels: account: - attribution_domains_as_text: Siti web autorizzati ad accreditarti + attribution_domains: Siti web autorizzati ad accreditarti discoverable: Include il profilo e i post negli algoritmi di scoperta fields: name: Etichetta diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index ba619dd37bd670..7e93de6e32cb02 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -3,7 +3,7 @@ ja: simple_form: hints: account: - attribution_domains_as_text: 1行につき1つずつ入力してください。この設定は関わりのないwebサイトに対して虚偽の帰属表示が行われることを防止する役割があります。 + attribution_domains: 1行につき1つずつ入力してください。この設定は関わりのないwebサイトに対して虚偽の帰属表示が行われることを防止する役割があります。 discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。 display_name: フルネーム、ハンドルネームなど fields: ホームページ、代名詞、年齢など何でも構いません。 @@ -156,7 +156,7 @@ ja: url: イベントの送信先 labels: account: - attribution_domains_as_text: あなたの著者表示を許可するwebサイト + attribution_domains: あなたの著者表示を許可するwebサイト discoverable: アカウントを見つけやすくする fields: name: ラベル diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 71af0b42fd44de..a8017950c0372e 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -3,7 +3,7 @@ ko: simple_form: hints: account: - attribution_domains_as_text: 한 줄에 하나씩. 가짜 기여로부터 보호합니다. + attribution_domains: 한 줄에 하나씩. 가짜 기여로부터 보호합니다. discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다 display_name: 진짜 이름 또는 재미난 이름. fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들. @@ -151,7 +151,7 @@ ko: url: 이벤트가 어디로 전송될 지 labels: account: - attribution_domains_as_text: 나를 기여자로 올릴 수 있도록 허용된 웹사이트들 + attribution_domains: 나를 기여자로 올릴 수 있도록 허용된 웹사이트들 discoverable: 발견하기 알고리즘에 프로필과 게시물을 추천하기 fields: name: 라벨 diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index 865272c60ea92c..2ceb262c5a533a 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -3,7 +3,7 @@ lt: simple_form: hints: account: - attribution_domains_as_text: Po vieną eilutėje. Apsaugo nuo klaidingų atributų. + attribution_domains: Po vieną eilutėje. Apsaugo nuo klaidingų atributų. discoverable: Tavo vieši įrašai ir profilis gali būti rodomi arba rekomenduojami įvairiose Mastodon vietose, o profilis gali būti siūlomas kitiems naudotojams. display_name: Tavo pilnas vardas arba smagus vardas. fields: Tavo pagrindinis puslapis, įvardžiai, amžius, bet kas, ko tik nori. @@ -119,7 +119,7 @@ lt: role: Vaidmuo valdo, kokius leidimus naudotojas turi. labels: account: - attribution_domains_as_text: Svetainės, kuriuose leidžiama jus nurodyti + attribution_domains: Svetainės, kuriuose leidžiama jus nurodyti discoverable: Rekomenduoti profilį ir įrašus į atradimo algoritmus indexable: Įtraukti viešus įrašus į paieškos rezultatus show_collections: Rodyti sekimus ir sekėjus profilyje diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 7c7b11c1b3d12b..c5a3da8429f424 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -3,7 +3,7 @@ lv: simple_form: hints: account: - attribution_domains_as_text: Viens katrā līnijā. Aizsargā no nepatiesa attiecinājuma. + attribution_domains: Viens katrā līnijā. Aizsargā no nepatiesa attiecinājuma. discoverable: Tavas publiskās ziņas un profils var tikt piedāvāti vai ieteikti dažādās Mastodon vietās, un tavs profils var tikt ieteikts citiem lietotājiem. display_name: Tavs pilnais vārds vai tavs joku vārds. fields: Tava mājas lapa, vietniekvārdi, vecums, viss, ko vēlies. @@ -144,7 +144,7 @@ lv: url: Kur notikumi tiks nosūtīti labels: account: - attribution_domains_as_text: Tīmekļvietnes, kurām ir tiesības uzskaitīt Tevi + attribution_domains: Tīmekļvietnes, kurām ir tiesības uzskaitīt Tevi discoverable: Funkcijas profils un ziņas atklāšanas algoritmos fields: name: Marķējums diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index d5aa5855ecb402..771dc3d6edb148 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -3,7 +3,7 @@ nl: simple_form: hints: account: - attribution_domains_as_text: Eén per regel. Beschermt tegen ongeldige attributies. + attribution_domains: Eén per regel. Beschermt tegen ongeldige attributies. discoverable: Jouw openbare berichten kunnen worden uitgelicht op verschillende plekken binnen Mastodon en jouw account kan worden aanbevolen aan andere gebruikers. display_name: Jouw volledige naam of een leuke bijnaam. fields: Jouw website, persoonlijke voornaamwoorden, leeftijd, alles wat je maar kwijt wilt. @@ -156,7 +156,7 @@ nl: url: Waar gebeurtenissen naartoe worden verzonden labels: account: - attribution_domains_as_text: Websites die jou credit mogen geven + attribution_domains: Websites die jou credit mogen geven discoverable: Jouw account en berichten laten uitlichten door Mastodon fields: name: Label diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 297404e153c1fd..30f0822973785c 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -3,7 +3,7 @@ nn: simple_form: hints: account: - attribution_domains_as_text: Ein per line. Vernar mot falske krediteringar. + attribution_domains: Ein per line. Vernar mot falske krediteringar. discoverable: Dei offentlege innlegga dine og profilen din kan dukka opp i tilrådingar på ulike stader på Mastodon, og profilen din kan bli føreslegen for andre folk. display_name: Ditt fulle namn eller ditt tøysenamn. fields: Heimesida di, pronomen, alder, eller kva du måtte ynskje. @@ -156,7 +156,7 @@ nn: url: Kvar hendingar skal sendast labels: account: - attribution_domains_as_text: Nettstader som har lov å kreditera deg + attribution_domains: Nettstader som har lov å kreditera deg discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar fields: name: Merkelapp diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 6061ff44dcba58..553c0bb7a24f6c 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -3,7 +3,7 @@ pl: simple_form: hints: account: - attribution_domains_as_text: Jedna na linię. Chroni przed fałszywym przypisaniem wpisów. + attribution_domains: Jedna na linię. Chroni przed fałszywym przypisaniem wpisów. discoverable: Twój profil i publiczne wpisy mogą być promowane lub polecane na Mastodonie i twój profil może być sugerowany innym użytkownikom. display_name: Twoje imię lub pseudonim. fields: Co ci się tylko podoba – twoja strona domowa, zaimki, wiek… @@ -145,7 +145,7 @@ pl: url: Dokąd będą wysłane zdarzenia labels: account: - attribution_domains_as_text: Strony które mogą ci przypisywać autorstwo. + attribution_domains: Strony które mogą ci przypisywać autorstwo. discoverable: Udostępniaj profil i wpisy funkcjom odkrywania fields: name: Nazwa diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 417d69d88edcd8..90b1db7d9bb106 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -3,7 +3,7 @@ pt-BR: simple_form: hints: account: - attribution_domains_as_text: Um por linha. Protege de falsas atribuições. + attribution_domains: Um por linha. Protege de falsas atribuições. discoverable: Suas publicações e perfil públicos podem ser destaques ou recomendados em várias áreas de Mastodon, e seu perfil pode ser sugerido a outros usuários. display_name: Seu nome completo ou apelido. fields: Sua página inicial, pronomes, idade ou qualquer coisa que quiser. @@ -147,7 +147,7 @@ pt-BR: url: Aonde os eventos serão enviados labels: account: - attribution_domains_as_text: Sites permitidos para credenciar você + attribution_domains: Sites permitidos para credenciar você discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 207d77f38b9f4a..b2823c135923dc 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -3,7 +3,7 @@ pt-PT: simple_form: hints: account: - attribution_domains_as_text: Um por linha. Protege contra falsas atribuições. + attribution_domains: Um por linha. Protege contra falsas atribuições. discoverable: As suas publicações e perfil públicos podem ser destacados ou recomendados em várias áreas do Mastodon e o seu perfil pode ser sugerido a outros utilizadores. display_name: O seu nome completo ou o seu nome divertido. fields: A sua página inicial, os seus pronomes, idade e tudo o que quiser. @@ -156,7 +156,7 @@ pt-PT: url: Para onde os eventos serão enviados labels: account: - attribution_domains_as_text: Sites autorizados a atribuir-lhe crédito + attribution_domains: Sites autorizados a atribuir-lhe crédito discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 63dcf91343b598..5774d6562ca018 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -3,7 +3,7 @@ ro: simple_form: hints: account: - attribution_domains_as_text: Una pe linie. Protejează împotriva atribuirilor false. + attribution_domains: Una pe linie. Protejează împotriva atribuirilor false. discoverable: Este posibil ca postările și profilul tău să fie recomandate în diferite zone ale Mastodon, iar profilul tău ar poate fi sugerat altor utilizatori. display_name: Numele dvs. complet sau numele dvs. amuzant. fields: Pagina ta principală, pronumele tale, vârsta, sau orice îți dorești. diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index b81d20704bb654..e24dac64b2bdaa 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -3,7 +3,7 @@ ru: simple_form: hints: account: - attribution_domains_as_text: По одному на строку. Защищает от ложных атрибуций. + attribution_domains: По одному на строку. Защищает от ложных атрибуций. discoverable: Ваши публичные сообщения и профиль могут быть показаны или рекомендованы в различных разделах Mastodon, и ваш профиль может быть предложен другим пользователям. display_name: Ваше полное имя или псевдоним. fields: Ваша домашняя страница, местоимения, возраст - все, что угодно. @@ -156,7 +156,7 @@ ru: url: Куда события будут отправляться labels: account: - attribution_domains_as_text: Веб-сайты, которым разрешено ссылаться на вас + attribution_domains: Веб-сайты, которым разрешено ссылаться на вас discoverable: Профиль и сообщения в алгоритмах обнаружения fields: name: Пункт diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 8e01c6264dc718..daaa5cdf2bcd6f 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -3,7 +3,7 @@ sq: simple_form: hints: account: - attribution_domains_as_text: Një për rresht. Kjo mbron nga atribuime të rreme. + attribution_domains: Një për rresht. Kjo mbron nga atribuime të rreme. discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë. display_name: Emri juaj i plotë, ose emri juaj lojcak. fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf. @@ -155,7 +155,7 @@ sq: url: Ku do të dërgohen aktet labels: account: - attribution_domains_as_text: Sajte të lejuar t’ju japin hakë + attribution_domains: Sajte të lejuar t’ju japin hakë discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit fields: name: Etiketë diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 2d2c1c006038a1..2a15cf3e1a8895 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -3,7 +3,7 @@ sv: simple_form: hints: account: - attribution_domains_as_text: En per rad. Skyddar mot falska attributioner. + attribution_domains: En per rad. Skyddar mot falska attributioner. discoverable: Dina offentliga inlägg och din profil kan komma att presenteras eller rekommenderas inom olika områden av Mastodon och din profil kan komma att föreslås till andra användare. display_name: Ditt fullständiga namn eller ditt roliga namn. fields: Din hemsida, ditt pronomen, din ålder, vadhelst du vill. @@ -153,7 +153,7 @@ sv: url: Dit händelser kommer skickas labels: account: - attribution_domains_as_text: Webbplatser som får kreditera dig + attribution_domains: Webbplatser som får kreditera dig discoverable: Presentera profil och inlägg med upptäcktsalgoritmer fields: name: Etikett diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index f64429409237d7..e5b6399d0616d1 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -3,7 +3,7 @@ th: simple_form: hints: account: - attribution_domains_as_text: หนึ่งรายการต่อบรรทัด ปกป้องจากการระบุแหล่งที่มาที่ผิด + attribution_domains: หนึ่งรายการต่อบรรทัด ปกป้องจากการระบุแหล่งที่มาที่ผิด discoverable: อาจแสดงหรือแนะนำโพสต์และโปรไฟล์สาธารณะของคุณในพื้นที่ต่าง ๆ ของ Mastodon และอาจเสนอแนะโปรไฟล์ของคุณให้กับผู้ใช้อื่น ๆ display_name: ชื่อเต็มของคุณหรือชื่อแบบสนุกสนานของคุณ fields: หน้าแรก, สรรพนาม, อายุของคุณ สิ่งใดก็ตามที่คุณต้องการ @@ -144,7 +144,7 @@ th: url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง labels: account: - attribution_domains_as_text: เว็บไซต์ที่ได้รับอนุญาตให้ให้เครดิตคุณ + attribution_domains: เว็บไซต์ที่ได้รับอนุญาตให้ให้เครดิตคุณ discoverable: แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ fields: name: ป้ายชื่อ diff --git a/config/locales/simple_form.tok.yml b/config/locales/simple_form.tok.yml index 8d9aa9585a0e18..9eadefd055c083 100644 --- a/config/locales/simple_form.tok.yml +++ b/config/locales/simple_form.tok.yml @@ -3,7 +3,7 @@ tok: simple_form: hints: account: - attribution_domains_as_text: linja sitelen wan la wan taso o lon. ni la, sona pona pi jan pali li lon. + attribution_domains: linja sitelen wan la wan taso o lon. ni la, sona pona pi jan pali li lon. display_name: nimi sina ale anu nimi sina musi. fields: lipu open sina, en nimi pi kon sina, en suli tenpo sina, en ijo ante ale pi wile sina. note: 'sina ken @mu e jan ante, li ken lon e #kulupu toki suli.' diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 26cade806e61b1..74f508d0a52642 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -3,7 +3,7 @@ tr: simple_form: hints: account: - attribution_domains_as_text: Her satırda bir tanesi. Sahte atıflardan korur. + attribution_domains: Her satırda bir tanesi. Sahte atıflardan korur. discoverable: Herkese açık gönderileriniz ve profiliniz Mastodon'un çeşitli kısımlarında öne çıkarılabilir veya önerilebilir ve profiliniz başka kullanıcılara önerilebilir. display_name: Tam adınız veya kullanıcı adınız. fields: Ana sayfanız, zamirleriniz, yaşınız, istediğiniz herhangi bir şey. @@ -156,7 +156,7 @@ tr: url: Olayların gönderileceği yer labels: account: - attribution_domains_as_text: Size atıf verebilecek websiteleri + attribution_domains: Size atıf verebilecek websiteleri discoverable: Profil ve gönderileri keşif algoritmalarında kullan fields: name: Etiket diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 9ecd12517b8949..78474f53d5574e 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,7 +3,7 @@ uk: simple_form: hints: account: - attribution_domains_as_text: Один на рядок. Захищає від фальшивих атрибутів. + attribution_domains: Один на рядок. Захищає від фальшивих атрибутів. discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам. display_name: Ваше повне ім'я або ваш псевдонім. fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться. @@ -156,7 +156,7 @@ uk: url: Куди надсилатимуться події labels: account: - attribution_domains_as_text: Сайти дозволяють вам вказувати ваше авторство + attribution_domains: Сайти дозволяють вам вказувати ваше авторство discoverable: Функції профілю та дописів у алгоритмах виявлення fields: name: Мітка diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 6d9a8c749ecef9..3292211780777b 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -3,7 +3,7 @@ vi: simple_form: hints: account: - attribution_domains_as_text: Mỗi cái một dòng. Bảo vệ khỏi những sự gán ghép sai. + attribution_domains: Mỗi cái một dòng. Bảo vệ khỏi những sự gán ghép sai. discoverable: Hồ sơ và tút công khai của bạn được đề xuất cho những người dùng Mastodon khác. display_name: Tên đầy đủ hoặc biệt danh đều được. fields: Trang blog của bạn, nghề nghiệp, tuổi hoặc bất cứ thứ gì. @@ -156,7 +156,7 @@ vi: url: Nơi những sự kiện được gửi đến labels: account: - attribution_domains_as_text: Các trang web được ghi nhận cho bạn + attribution_domains: Các trang web được ghi nhận cho bạn discoverable: Cho phép khám phá hồ sơ fields: name: Nhãn diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 226ebfd0b88093..d0becfb0689219 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -3,7 +3,7 @@ zh-CN: simple_form: hints: account: - attribution_domains_as_text: 每行一个域名。这样就可以保护作品免受虚假署名。 + attribution_domains: 每行一个域名。这样就可以保护作品免受虚假署名。 discoverable: 你的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,你的个人资料可能会被推荐给其他用户。 display_name: 你的全名或昵称。 fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。 @@ -156,7 +156,7 @@ zh-CN: url: 事件将被发往的目的地 labels: account: - attribution_domains_as_text: 授权展示你的署名的网站 + attribution_domains: 授权展示你的署名的网站 discoverable: 在发现算法中展示你的账户与嘟文 fields: name: 标签 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 48a7941f762ce0..1243807d77d0f0 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -3,7 +3,7 @@ zh-TW: simple_form: hints: account: - attribution_domains_as_text: 每行一個。以保護偽造署名。 + attribution_domains: 每行一個。以保護偽造署名。 discoverable: 公開嘟文及個人檔案可能於各 Mastodon 功能中被推薦,並且您的個人檔案可能被推薦至其他使用者。 display_name: 完整名稱或暱稱。 fields: 烘培雞、自我認同代稱、年齡,及任何您想分享的。 @@ -156,7 +156,7 @@ zh-TW: url: 事件會被傳送至何處 labels: account: - attribution_domains_as_text: 允許對您予與信譽之網站 + attribution_domains: 允許對您予與信譽之網站 discoverable: 於探索演算法中推薦個人檔案及嘟文 fields: name: 標籤 diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 3aa93bbba6a29d..ad8fb0a3456141 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -45,7 +45,7 @@ def gem_version def api_versions { - mastodon: 2, + mastodon: 3, } end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index a0187b62114c7e..2baf1fd3db120b 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -516,38 +516,16 @@ end end - describe '#attribution_domains_as_text=' do - subject { Fabricate(:account) } - - it 'sets attribution_domains accordingly' do - subject.attribution_domains_as_text = "hoge.com\nexample.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - - it 'strips leading "*."' do - subject.attribution_domains_as_text = "hoge.com\n*.example.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - - it 'strips the protocol if present' do - subject.attribution_domains_as_text = "http://hoge.com\nhttps://example.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - - it 'strips a combination of leading "*." and protocol' do - subject.attribution_domains_as_text = "http://*.hoge.com\nhttps://*.example.com" - - expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') - end - end - describe 'Normalizations' do describe 'username' do it { is_expected.to normalize(:username).from(" \u3000bob \t \u00a0 \n ").to('bob') } end + + describe 'attribution_domains' do + it { is_expected.to normalize(:attribution_domains).from(['example.com', ' example.com ', ' example.net ']).to(['example.com', 'example.net']) } + it { is_expected.to normalize(:attribution_domains).from(['https://example.com', 'http://example.net', '*.example.org']).to(['example.com', 'example.net', 'example.org']) } + it { is_expected.to normalize(:attribution_domains).from(['', ' ', nil]).to([]) } + end end describe 'Validations' do @@ -598,6 +576,9 @@ it { is_expected.to validate_absence_of(:inbox_url).on(:create) } it { is_expected.to validate_absence_of(:shared_inbox_url).on(:create) } it { is_expected.to validate_absence_of(:uri).on(:create) } + + it { is_expected.to allow_values([], ['example.com'], (1..100).to_a).for(:attribution_domains) } + it { is_expected.to_not allow_values(['example com'], ['@'], (1..101).to_a).for(:attribution_domains) } end context 'when account is remote' do diff --git a/spec/requests/api/v1/accounts/credentials_spec.rb b/spec/requests/api/v1/accounts/credentials_spec.rb index 0badc17e1bc15d..c92f4c797370d6 100644 --- a/spec/requests/api/v1/accounts/credentials_spec.rb +++ b/spec/requests/api/v1/accounts/credentials_spec.rb @@ -64,6 +64,7 @@ indexable: true, locked: false, note: 'Hello!', + attribution_domains: ['example.com'], source: { privacy: 'unlisted', sensitive: true, @@ -121,7 +122,8 @@ def expect_account_updates display_name: eq("Alice Isn't Dead"), note: 'Hello!', avatar: exist, - header: exist + header: exist, + attribution_domains: ['example.com'] ) end diff --git a/spec/system/settings/verifications_spec.rb b/spec/system/settings/verifications_spec.rb index 75be191c831829..26197f06f0ce4c 100644 --- a/spec/system/settings/verifications_spec.rb +++ b/spec/system/settings/verifications_spec.rb @@ -15,12 +15,27 @@ .to have_content(verification_summary) .and have_private_cache_control - fill_in attribution_field, with: 'host.example' + fill_in attribution_field, with: " example.com\n\n https://example.net" expect { click_on submit_button } - .to(change { user.account.reload.attribution_domains_as_text }) + .to(change { user.account.reload.attribution_domains }.to(['example.com', 'example.net'])) expect(page) .to have_content(success_message) + expect(find_field(attribution_field).value) + .to have_content("example.com\nexample.net") + end + + it 'rejects invalid attribution domains' do + visit settings_verification_path + + fill_in attribution_field, with: "example.com \n invalid_com" + + expect { click_on submit_button } + .to_not(change { user.account.reload.attribution_domains }) + expect(page) + .to have_content(I18n.t('activerecord.errors.messages.invalid_domain_on_line', value: 'invalid_com')) + expect(find_field(attribution_field).value) + .to have_content("example.com\ninvalid_com") end end @@ -29,6 +44,6 @@ def verification_summary end def attribution_field - I18n.t('simple_form.labels.account.attribution_domains_as_text') + I18n.t('simple_form.labels.account.attribution_domains') end end diff --git a/spec/validators/lines_validator_spec.rb b/spec/validators/lines_validator_spec.rb deleted file mode 100644 index a80dbbaf3eaae0..00000000000000 --- a/spec/validators/lines_validator_spec.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe LinesValidator do - let(:record_class) do - Class.new do - include ActiveModel::Validations - - attr_accessor :text - - validates :text, lines: { maximum: 5 } - end - end - - let(:record) { record_class.new } - - describe '#validate_each' do - context 'with a nil value' do - it 'does not add errors' do - record.text = nil - - expect(record).to be_valid - expect(record.errors).to be_empty - end - end - - context 'with lines below the limit' do - it 'does not add errors' do - record.text = "hoge\n" * 5 - - expect(record).to be_valid - expect(record.errors).to be_empty - end - end - - context 'with more lines than limit' do - it 'adds an error' do - record.text = "hoge\n" * 6 - - expect(record).to_not be_valid - expect(record.errors.where(:text)).to_not be_empty - end - end - end -end From febdfefafe05c66fd4740321665f8c76e6744fa9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 09:57:11 +0100 Subject: [PATCH 08/29] Update formatjs monorepo (#33627) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 76 +++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/yarn.lock b/yarn.lock index a99c1e23c9766b..9293af2f24a102 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2310,6 +2310,17 @@ __metadata: languageName: node linkType: hard +"@formatjs/icu-messageformat-parser@npm:2.10.0": + version: 2.10.0 + resolution: "@formatjs/icu-messageformat-parser@npm:2.10.0" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.3.2" + "@formatjs/icu-skeleton-parser": "npm:1.8.12" + tslib: "npm:2" + checksum: 10c0/261d386b19b5031ac097450ebbb51518ec447c191a51616c2a3335d2d675cb37b48898b600753b45dbce92517ad842695a18aed702099243bfc132a7f800dff7 + languageName: node + linkType: hard + "@formatjs/icu-messageformat-parser@npm:2.7.10": version: 2.7.10 resolution: "@formatjs/icu-messageformat-parser@npm:2.7.10" @@ -2321,17 +2332,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.9.8": - version: 2.9.8 - resolution: "@formatjs/icu-messageformat-parser@npm:2.9.8" - dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.2" - "@formatjs/icu-skeleton-parser": "npm:1.8.12" - tslib: "npm:2" - checksum: 10c0/df97c7f24fbeb8ef49ae1371f9498ad90f231f88211bf1effb7b2e8ac3531bec67c5d9147ddcb1add0ba697e8d089729add44a9a9c5015e0e8d61e7a43f062d9 - languageName: node - linkType: hard - "@formatjs/icu-skeleton-parser@npm:1.8.12": version: 1.8.12 resolution: "@formatjs/icu-skeleton-parser@npm:1.8.12" @@ -2382,21 +2382,21 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl@npm:3.1.0": - version: 3.1.0 - resolution: "@formatjs/intl@npm:3.1.0" +"@formatjs/intl@npm:3.1.1": + version: 3.1.1 + resolution: "@formatjs/intl@npm:3.1.1" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" "@formatjs/fast-memoize": "npm:2.2.6" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" - intl-messageformat: "npm:10.7.11" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" + intl-messageformat: "npm:10.7.12" tslib: "npm:2" peerDependencies: typescript: 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/a073768fffc51696eb7bd25fe1f0afdda1a0e38db3e2dd9b2fc3138ea799f00ef522f3d3083626ad3acbf913593254cfd728a6c6b08ef4f167dd132626a7e9fc + checksum: 10c0/409ba1893635348e3045089fe5dd6f489a5084ce7116798284c5879eb61c5ae3221a3f2a6d47b5d169177d6f482e632f1378d97a6e7821679a19550ccda83b13 languageName: node linkType: hard @@ -2420,11 +2420,11 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.27": - version: 3.13.27 - resolution: "@formatjs/ts-transformer@npm:3.13.27" +"@formatjs/ts-transformer@npm:3.13.28": + version: 3.13.28 + resolution: "@formatjs/ts-transformer@npm:3.13.28" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.9.8" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" "@types/json-stable-stringify": "npm:1" "@types/node": "npm:14 || 16 || 17 || 18 || 20 || 22" chalk: "npm:4" @@ -2436,7 +2436,7 @@ __metadata: peerDependenciesMeta: ts-jest: optional: true - checksum: 10c0/ab26ce081835ce2a1384172a6e24db42d48bc9f8b9b941c646fba2f01ce8370123480623d1fbc1e75f6ec90a232f8ff67b5243c5e9ad18311dc03d7061a4892b + checksum: 10c0/3ee015082c6cad4b3c33dc86cc40b69a5544cea1dc62b164d8e0d5710835bd72ea757b7a071fc9848c7b9e25073ea085c38125ba69460cb3e0cb5592b79f231a languageName: node linkType: hard @@ -5330,21 +5330,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.30 - resolution: "babel-plugin-formatjs@npm:10.5.30" + version: 10.5.31 + resolution: "babel-plugin-formatjs@npm:10.5.31" dependencies: "@babel/core": "npm:^7.25.0" "@babel/helper-plugin-utils": "npm:^7.25.0" "@babel/plugin-syntax-jsx": "npm:^7.25.0" "@babel/traverse": "npm:^7.25.0" "@babel/types": "npm:^7.25.0" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" - "@formatjs/ts-transformer": "npm:3.13.27" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" + "@formatjs/ts-transformer": "npm:3.13.28" "@types/babel__core": "npm:^7.20.5" "@types/babel__helper-plugin-utils": "npm:^7.10.3" "@types/babel__traverse": "npm:^7.20.6" tslib: "npm:2" - checksum: 10c0/cf9f17b71da9e95a402e0722cfbf4a549c984a8bb536f6b46dc187fa4b69dd2e248e6a825ea95d5ddfa2a9b09b3eb399cefa2dce1dcf52fd6e661adb99a9d3fa + checksum: 10c0/b73a0250efd97b1a76e62b63e6ca6a1962eec4c46b832ca94241ef28299c2118bea93a5c765fc2b3e95520815d91bde31450b4793b34f5ca95faf61ea2f04f77 languageName: node linkType: hard @@ -9908,15 +9908,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.11, intl-messageformat@npm:^10.3.5": - version: 10.7.11 - resolution: "intl-messageformat@npm:10.7.11" +"intl-messageformat@npm:10.7.12, intl-messageformat@npm:^10.3.5": + version: 10.7.12 + resolution: "intl-messageformat@npm:10.7.12" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" "@formatjs/fast-memoize": "npm:2.2.6" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" tslib: "npm:2" - checksum: 10c0/7ccd972277cc6798038af876c830203084db6552becfa99c3706541fd67838552013f57f8ed0ed3aed03d4fba436591a83a25f913365d66ad04ee9332eee7b73 + checksum: 10c0/c91917edf14a31bd76419cc9d9d1d4c1a044bf64bc1b5db8d359940b26455d0fd6cec49ede7593b8f631aa1af749db29d719d5b2e4ceb08939f88cd0ed886b03 languageName: node linkType: hard @@ -14659,16 +14659,16 @@ __metadata: linkType: hard "react-intl@npm:^7.0.0": - version: 7.1.0 - resolution: "react-intl@npm:7.1.0" + version: 7.1.1 + resolution: "react-intl@npm:7.1.1" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" - "@formatjs/icu-messageformat-parser": "npm:2.9.8" - "@formatjs/intl": "npm:3.1.0" + "@formatjs/icu-messageformat-parser": "npm:2.10.0" + "@formatjs/intl": "npm:3.1.1" "@types/hoist-non-react-statics": "npm:3" "@types/react": "npm:16 || 17 || 18" hoist-non-react-statics: "npm:3" - intl-messageformat: "npm:10.7.11" + intl-messageformat: "npm:10.7.12" tslib: "npm:2" peerDependencies: react: ^16.6.0 || 17 || 18 @@ -14676,7 +14676,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/9d69e316a5f5c6d31fa77f136b595079db2f75f63398cf8253d407878246dd5bcf0cc2eb4d7d4aa0646530ee58b16ce9a8c3876a5c2f0dc38fdda7e4f8c07615 + checksum: 10c0/a03dfbfd98210b176d02c54d670550a15209d08a1d43dbb5facd79705f3b38f79ae9dcc54e8645b4326fc1b215245262e84f210103df561e928113c1e2a7791c languageName: node linkType: hard From 092e60eb7d1d1b020a83fe5ce41ed554a52d73a4 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 17 Jan 2025 10:12:59 +0100 Subject: [PATCH 09/29] Change activity distribution error handling to skip retrying for deleted accounts (#33617) --- app/workers/activitypub/delivery_worker.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb index 0c6ca026bba071..7a1440ed15f3d3 100644 --- a/app/workers/activitypub/delivery_worker.rb +++ b/app/workers/activitypub/delivery_worker.rb @@ -62,7 +62,7 @@ def perform_request stoplight_wrapper.run do request_pool.with(@host) do |http_client| build_request(http_client).perform do |response| - raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) + raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) || unsalvageable_authorization_failure?(response) @performed = true end @@ -70,6 +70,10 @@ def perform_request end end + def unsalvageable_authorization_failure?(response) + @source_account.permanently_unavailable? && response.code == 401 + end + def stoplight_wrapper Stoplight(@inbox_url) .with_threshold(STOPLIGHT_FAILURE_THRESHOLD) From 531ca4b968d5a09720805cd69982434af0f887e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 10:35:34 +0100 Subject: [PATCH 10/29] Update dependency tzinfo-data to v1.2025.1 (#33625) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 80c733d2021f23..2da96ca48637f5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -833,7 +833,7 @@ GEM unf (~> 0.1.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2024.2) + tzinfo-data (1.2025.1) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext From 1c23ebd62f1fe29c51d536684b6b27026b30dd82 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:05:41 +0100 Subject: [PATCH 11/29] New Crowdin Translations (automated) (#33626) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/sco.json | 15 +- app/javascript/mastodon/locales/zh-CN.json | 156 ++++++++-------- app/javascript/mastodon/locales/zh-TW.json | 2 +- config/locales/activerecord.be.yml | 1 - config/locales/activerecord.cs.yml | 1 - config/locales/activerecord.pt-PT.yml | 1 - config/locales/activerecord.tok.yml | 1 - config/locales/activerecord.zh-CN.yml | 6 +- config/locales/devise.zh-CN.yml | 38 ++-- config/locales/doorkeeper.zh-CN.yml | 14 +- config/locales/ia.yml | 6 +- config/locales/simple_form.bg.yml | 2 - config/locales/simple_form.ca.yml | 2 - config/locales/simple_form.cs.yml | 2 - config/locales/simple_form.cy.yml | 2 - config/locales/simple_form.da.yml | 2 - config/locales/simple_form.de.yml | 2 - config/locales/simple_form.el.yml | 2 - config/locales/simple_form.en-GB.yml | 2 - config/locales/simple_form.eo.yml | 2 - config/locales/simple_form.es-AR.yml | 2 - config/locales/simple_form.es-MX.yml | 2 - config/locales/simple_form.es.yml | 2 - config/locales/simple_form.et.yml | 2 - config/locales/simple_form.fa.yml | 2 - config/locales/simple_form.fi.yml | 2 - config/locales/simple_form.fo.yml | 2 - config/locales/simple_form.fr-CA.yml | 2 - config/locales/simple_form.fr.yml | 2 - config/locales/simple_form.fy.yml | 2 - config/locales/simple_form.ga.yml | 2 - config/locales/simple_form.gd.yml | 2 - config/locales/simple_form.gl.yml | 2 - config/locales/simple_form.he.yml | 2 - config/locales/simple_form.hu.yml | 2 - config/locales/simple_form.ia.yml | 2 - config/locales/simple_form.is.yml | 2 - config/locales/simple_form.it.yml | 2 - config/locales/simple_form.ja.yml | 2 - config/locales/simple_form.ko.yml | 2 - config/locales/simple_form.lt.yml | 2 - config/locales/simple_form.lv.yml | 2 - config/locales/simple_form.nn.yml | 2 - config/locales/simple_form.pl.yml | 2 - config/locales/simple_form.pt-BR.yml | 2 - config/locales/simple_form.pt-PT.yml | 2 - config/locales/simple_form.ro.yml | 1 - config/locales/simple_form.ru.yml | 2 - config/locales/simple_form.sq.yml | 2 - config/locales/simple_form.sv.yml | 2 - config/locales/simple_form.th.yml | 2 - config/locales/simple_form.tok.yml | 1 - config/locales/simple_form.tr.yml | 2 +- config/locales/simple_form.uk.yml | 2 - config/locales/simple_form.vi.yml | 2 - config/locales/simple_form.zh-CN.yml | 32 ++-- config/locales/simple_form.zh-TW.yml | 2 - config/locales/zh-CN.yml | 206 ++++++++++----------- 58 files changed, 243 insertions(+), 324 deletions(-) diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index 8a0efb6a3128a9..b82634ca7c509a 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -69,6 +69,11 @@ "announcement.announcement": "Annooncement", "attachments_list.unprocessed": "(No processed)", "audio.hide": "Stow audio", + "block_modal.remote_users_caveat": "We will ask the server {domain} tae respect yer decision. Awtho mind compliance isnae a guarantee, sin some servers may haundle blocks differently. Public posts may yet be visible tae non-loggit-in uisers.", + "block_modal.they_cant_mention": "Thay cannae mention or follae you.", + "block_modal.they_cant_see_posts": "Thay cannae see yer posts and you willnae see thairs.", + "block_modal.they_will_know": "Thay can see that they're blockit.", + "block_modal.title": "Block uiser?", "boost_modal.combo": "Ye kin chap {combo} tae dingie this neist tim", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requestit page cuidnae be rennert. Hit cuid be doon tae a bug in wir code, or a brooser compatability issue.", @@ -112,9 +117,11 @@ "community.column_settings.remote_only": "Remote ainly", "compose.language.change": "Chynge Leid", "compose.language.search": "Seirch leids...", + "compose.published.body": "Post published.", + "compose.saved.body": "Post saved.", "compose_form.direct_message_warning_learn_more": "Lairn mair", "compose_form.encryption_warning": "Posts on Mastodon isnae en-tae-en encryptit. Dinnae share onie sensitive information ower Mastodon.", - "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", + "compose_form.hashtag_warning": "This post willnae be listit under ony hashtag fir it is unlistit. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Yer accoont isnae {locked}. Awbody kin follae ye for tae luik at yer follaer-ainly posts.", "compose_form.lock_disclaimer.lock": "lockit", "compose_form.placeholder": "Whit's on yer mind?", @@ -124,6 +131,7 @@ "compose_form.publish_form": "Publish", "compose_form.spoiler.marked": "Tak aff the content warnin", "compose_form.spoiler.unmarked": "Pit on a content warnin", + "compose_form.spoiler_placeholder": "Content warnin (optional)", "confirmation_modal.cancel": "Stap", "confirmations.block.confirm": "Dingie", "confirmations.delete.confirm": "Delete", @@ -132,6 +140,7 @@ "confirmations.delete_list.message": "Ye shair thit ye'r wantin fir tae delete this post fir ever?", "confirmations.discard_edit_media.confirm": "Fling awa", "confirmations.discard_edit_media.message": "Ye'v chynges tae the media description or preview thit ye'v no saved, fling them awa onie weys?", + "confirmations.edit.message": "Editin the noo will owerwrit the message yer componin. Are ye suir yer wantin tae proceed?", "confirmations.logout.confirm": "Log oot", "confirmations.logout.message": "Ye shair thit ye'r wantin tae log oot?", "confirmations.mute.confirm": "Wheesht", @@ -180,7 +189,7 @@ "empty_column.explore_statuses": "Naethin is trendin the noo. Check back efter!", "empty_column.follow_requests": "Ye dinnae hae onie follaer requests yit. Whan ye get ane, it'll shaw up here.", "empty_column.hashtag": "There naethin in this hashtag yit.", - "empty_column.home": "Yer hame timeline is toum! Follae mair fowk fir tae full it up. {suggestions}", + "empty_column.home": "Yer hame timeline is toum! Follae mair fowk fir tae full it up.", "empty_column.list": "There naethin in this list yit. Whan memmers o this list publish new posts, ye'll see them here.", "empty_column.mutes": "Ye'v no wheesht onie uisers yit.", "empty_column.notifications": "Ye dinnae hae onie notes yit. Whan ither fowk interacks wi ye, ye'll see it here.", @@ -466,7 +475,7 @@ "status.show_less_all": "Shaw less fir aw", "status.show_more_all": "Shaw mair fir aw", "status.show_original": "Shaw original", - "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", + "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}", "status.translate": "Owerset", "status.translated_from_with": "Owerset fae {lang} uisin {provider}", "status.unmute_conversation": "Unwheesht conversation", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 558df23eb05339..55cb2313d40fd2 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -11,7 +11,7 @@ "about.not_available": "此信息在当前服务器尚不可用。", "about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体", "about.rules": "站点规则", - "account.account_note_header": "备注", + "account.account_note_header": "个人备注", "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", "account.badges.group": "群组", @@ -26,7 +26,7 @@ "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发布嘟文时通知我", - "account.endorse": "在账户页推荐此用户", + "account.endorse": "在个人资料中推荐此用户", "account.featured_tags.last_status_at": "上次发言于 {date}", "account.featured_tags.last_status_never": "暂无嘟文", "account.featured_tags.title": "{name} 的精选标签", @@ -43,8 +43,8 @@ "account.in_memoriam": "谨此悼念。", "account.joined_short": "加入于", "account.languages": "更改订阅语言", - "account.link_verified_on": "已于 {date} 验证此链接的所有权", - "account.locked_info": "此账户已锁嘟。账户所有人会手动审核新关注者。", + "account.link_verified_on": "此链接的所有权已在 {date} 检查", + "account.locked_info": "此账号已锁嘟。账号所有人会手动审核新关注者。", "account.media": "媒体", "account.mention": "提及 @{name}", "account.moved_to": "{name} 的新账号是:", @@ -60,9 +60,9 @@ "account.report": "举报 @{name}", "account.requested": "正在等待对方同意。点击取消发送关注请求", "account.requested_follow": "{name} 向你发送了关注请求", - "account.share": "分享 @{name} 的账户页", + "account.share": "分享 @{name} 的个人资料", "account.show_reblogs": "显示来自 @{name} 的转嘟", - "account.statuses_counter": "{count, plural, other {{counter} 嘟文}}", + "account.statuses_counter": "{count, plural, other {{counter} 条嘟文}}", "account.unblock": "取消屏蔽 @{name}", "account.unblock_domain": "取消屏蔽 {domain} 域名", "account.unblock_short": "取消屏蔽", @@ -77,9 +77,9 @@ "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "注册月份", "admin.dashboard.retention.cohort_size": "新用户", - "admin.impact_report.instance_accounts": "将被删除的账户", - "admin.impact_report.instance_followers": "本站用户即将丢失的关注者", - "admin.impact_report.instance_follows": "对方站点用户即将丢失的关注者", + "admin.impact_report.instance_accounts": "将被删除的账号", + "admin.impact_report.instance_followers": "本实例用户即将丢失的关注者", + "admin.impact_report.instance_follows": "对方实例用户将会丢失的关注者", "admin.impact_report.title": "影响摘要", "alert.rate_limited.message": "请在 {retry_time, time, medium} 后重试。", "alert.rate_limited.title": "频率受限", @@ -89,23 +89,23 @@ "announcement.announcement": "公告", "annual_report.summary.archetype.booster": "潮流捕手", "annual_report.summary.archetype.lurker": "吃瓜群众", - "annual_report.summary.archetype.oracle": "无所不在", - "annual_report.summary.archetype.pollster": "投票狂魔", - "annual_report.summary.archetype.replier": "评论区原住民", + "annual_report.summary.archetype.oracle": "未卜先知", + "annual_report.summary.archetype.pollster": "民调专家", + "annual_report.summary.archetype.replier": "社交蝴蝶", "annual_report.summary.followers.followers": "关注者", "annual_report.summary.followers.total": "共 {count} 人", - "annual_report.summary.here_it_is": "你的 {year} 年度回顾在此:", - "annual_report.summary.highlighted_post.by_favourites": "最受欢迎嘟嘟", - "annual_report.summary.highlighted_post.by_reblogs": "传播最广嘟嘟", - "annual_report.summary.highlighted_post.by_replies": "最热闹嘟嘟", + "annual_report.summary.here_it_is": "您的 {year} 年度回顾在此:", + "annual_report.summary.highlighted_post.by_favourites": "最受欢迎的嘟文", + "annual_report.summary.highlighted_post.by_reblogs": "传播最广的嘟文", + "annual_report.summary.highlighted_post.by_replies": "评论最多的嘟文", "annual_report.summary.highlighted_post.possessive": "{name} 的", "annual_report.summary.most_used_app.most_used_app": "最常用的应用", "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常用的话题", "annual_report.summary.most_used_hashtag.none": "无", - "annual_report.summary.new_posts.new_posts": "新嘟嘟", + "annual_report.summary.new_posts.new_posts": "新嘟文", "annual_report.summary.percentile.text": "这使你跻身 {domain} 用户的前", "annual_report.summary.percentile.we_wont_tell_bernie": " ", - "annual_report.summary.thanks": "谢谢你这一年和 Mastodon 上的大家一起嘟嘟!", + "annual_report.summary.thanks": "感谢您成为 Mastodon 的一员!", "attachments_list.unprocessed": "(未处理)", "audio.hide": "隐藏音频", "block_modal.remote_users_caveat": "我们将要求站点 {domain} 尊重你的决定。然而,我们无法保证对方一定遵从,因为某些站点可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录用户可见。", @@ -114,11 +114,11 @@ "block_modal.they_cant_mention": "他们不能提及或关注你。", "block_modal.they_cant_see_posts": "他们看不到你的嘟文,你也看不到他们的嘟文。", "block_modal.they_will_know": "对方将能看到自己被屏蔽。", - "block_modal.title": "屏蔽该用户?", + "block_modal.title": "确定要屏蔽此用户?", "block_modal.you_wont_see_mentions": "你将不会看到提及他们的嘟文。", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", - "boost_modal.reblog": "是否转嘟?", - "boost_modal.undo_reblog": "是否取消转嘟?", + "boost_modal.reblog": "是否要转嘟?", + "boost_modal.undo_reblog": "是否要取消转嘟?", "bundle_column_error.copy_stacktrace": "复制错误报告", "bundle_column_error.error.body": "请求的页面无法渲染,可能是代码出现错误或浏览器存在兼容性问题。", "bundle_column_error.error.title": "糟糕!", @@ -131,14 +131,14 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入此页面时发生了错误。", "bundle_modal_error.retry": "重试", - "closed_registrations.other_server_instructions": "基于 Mastodon 的去中心化特性,你可以在其它服务器上创建账号,并与本站用户保持互动。", - "closed_registrations_modal.description": "你目前无法在 {domain} 上创建账户,但请注意,使用 Mastodon 并非需要专门在 {domain} 上注册账户。", + "closed_registrations.other_server_instructions": "基于 Mastodon 去中心化的特性,你可以其他服务器上创建账号,并继续与此服务器互动。", + "closed_registrations_modal.description": "你目前无法在 {domain} 上创建账号,但请注意,使用 Mastodon 并非需要专门在 {domain} 上注册账号。", "closed_registrations_modal.find_another_server": "查找其他服务器", "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以无论在哪个实例创建账号,都可以关注本服务器上的账号并与之交流。 或者你还可以自己搭建实例!", "closed_registrations_modal.title": "注册 Mastodon 账号", "column.about": "关于", "column.blocks": "屏蔽的用户", - "column.bookmarks": "收藏夹", + "column.bookmarks": "书签", "column.community": "本站时间线", "column.create_list": "创建列表", "column.direct": "私下提及", @@ -175,7 +175,7 @@ "compose_form.direct_message_warning_learn_more": "详细了解", "compose_form.encryption_warning": "Mastodon 上的嘟文未经端到端加密。请勿在 Mastodon 上分享敏感信息。", "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题的列表下。只有公开的嘟文才能通过话题进行搜索。", - "compose_form.lock_disclaimer": "你的账户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", + "compose_form.lock_disclaimer": "你的账号没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", "compose_form.lock_disclaimer.lock": "锁嘟", "compose_form.placeholder": "想写什么?", "compose_form.poll.duration": "投票期限", @@ -186,7 +186,7 @@ "compose_form.poll.switch_to_single": "将投票改为单选", "compose_form.poll.type": "类型", "compose_form.publish": "发布", - "compose_form.publish_form": "新建嘟文", + "compose_form.publish_form": "发嘟", "compose_form.reply": "回复", "compose_form.save_changes": "更改", "compose_form.spoiler.marked": "移除内容警告", @@ -196,21 +196,21 @@ "confirmations.block.confirm": "屏蔽", "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", - "confirmations.delete.title": "是否删除嘟文?", + "confirmations.delete.title": "确定要删除嘟文?", "confirmations.delete_list.confirm": "删除", - "confirmations.delete_list.message": "你确定要永久删除此列表吗?", - "confirmations.delete_list.title": "是否删除列表?", + "confirmations.delete_list.message": "确定要永久删除此列表吗?", + "confirmations.delete_list.title": "确定要删除列表?", "confirmations.discard_edit_media.confirm": "丢弃", "confirmations.discard_edit_media.message": "你还有未保存的媒体描述或预览修改,仍要丢弃吗?", "confirmations.edit.confirm": "编辑", "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?", - "confirmations.edit.title": "是否重写嘟文?", + "confirmations.edit.title": "确定要重写嘟文?", "confirmations.follow_to_list.confirm": "关注并添加到列表", "confirmations.follow_to_list.message": "你需要先关注 {name},才能将其添加到列表。", - "confirmations.follow_to_list.title": "是否关注用户?", + "confirmations.follow_to_list.title": "确定要关注此用户?", "confirmations.logout.confirm": "退出登录", "confirmations.logout.message": "确定要退出登录吗?", - "confirmations.logout.title": "是否退出登录?", + "confirmations.logout.title": "确定要退出登录?", "confirmations.mute.confirm": "隐藏", "confirmations.redraft.confirm": "删除并重新编辑", "confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。", @@ -220,7 +220,7 @@ "confirmations.reply.title": "是否重写嘟文?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", - "confirmations.unfollow.title": "是否取消关注用户?", + "confirmations.unfollow.title": "确定要取消关注用户?", "content_warning.hide": "隐藏", "content_warning.show": "展开", "content_warning.show_more": "展开", @@ -248,10 +248,10 @@ "domain_block_modal.they_can_interact_with_old_posts": "该站点的用户可以与你之前的嘟文交互。", "domain_block_modal.they_cant_follow": "该站点上将没有人可以关注你。", "domain_block_modal.they_wont_know": "对方不会知道自己被屏蔽。", - "domain_block_modal.title": "是否屏蔽该域名?", + "domain_block_modal.title": "确定要屏蔽此域名?", "domain_block_modal.you_will_lose_num_followers": "你将失去 {followersCount, plural, other {{followersCountDisplay} 名关注者}}和 {followingCount, plural, other {{followingCountDisplay} 名关注}}。", "domain_block_modal.you_will_lose_relationships": "你将丢失该站点上的所有关注与关注者。", - "domain_block_modal.you_wont_see_posts": "你将不会看到该站点用户的嘟文或通知。", + "domain_block_modal.you_wont_see_posts": "你将不会看到此服务器上用户的嘟文或通知。", "domain_pill.activitypub_lets_connect": "它可以让你与不同社交应用上的人交流互动,而不仅限于 Mastodon。", "domain_pill.activitypub_like_language": "ActivityPub 好比 Mastodon 与其它社交网络交流时使用的语言。", "domain_pill.server": "服务器", @@ -283,7 +283,7 @@ "emoji_button.symbols": "符号", "emoji_button.travel": "旅行与地点", "empty_column.account_hides_collections": "该用户选择不公开此信息", - "empty_column.account_suspended": "账户已被停用", + "empty_column.account_suspended": "账号已被停用", "empty_column.account_timeline": "这里没有嘟文!", "empty_column.account_unavailable": "个人资料不可用", "empty_column.blocks": "你还未屏蔽任何用户。", @@ -300,7 +300,7 @@ "empty_column.home": "你的主页时间线还没有内容!快去关注更多人吧。", "empty_column.list": "列表中还没有任何内容。当列表成员发布新嘟文时,它们将出现在这里。", "empty_column.mutes": "你没有隐藏任何用户。", - "empty_column.notification_requests": "都看完了!这里没有任何未读通知。当收到新的通知时,它们将根据你的设置显示在这里。", + "empty_column.notification_requests": "一扫而空!这里没有任何未读通知。当收到新的通知时,将根据你的设置显示在这里。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了", "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。", @@ -318,16 +318,16 @@ "filter_modal.added.context_mismatch_title": "场景不匹配!", "filter_modal.added.expired_explanation": "此过滤规则类别已过期,你需要修改到期日期才能应用。", "filter_modal.added.expired_title": "过滤规则已过期!", - "filter_modal.added.review_and_configure": "要检查并进一步配置此过滤规则分类,请前往{settings_link}。", + "filter_modal.added.review_and_configure": "要检查并进一步配置这条过滤规则,请前往{settings_link}。", "filter_modal.added.review_and_configure_title": "过滤规则设置", "filter_modal.added.settings_link": "设置页面", "filter_modal.added.short_explanation": "此嘟文已被添加到以下过滤规则:{title}。", "filter_modal.added.title": "已添加过滤规则 !", "filter_modal.select_filter.context_mismatch": "不适用于此场景", "filter_modal.select_filter.expired": "已过期", - "filter_modal.select_filter.prompt_new": "新条目:{name}", + "filter_modal.select_filter.prompt_new": "新类别:{name}", "filter_modal.select_filter.search": "搜索或创建", - "filter_modal.select_filter.subtitle": "使用一个已存在条目,或创建新条目", + "filter_modal.select_filter.subtitle": "使用已存在类别,或创建新类别", "filter_modal.select_filter.title": "过滤此嘟文", "filter_modal.title.status": "过滤一条嘟文", "filter_warning.matches_filter": "命中过滤规则 “{title}”", @@ -343,8 +343,8 @@ "follow_suggestions.dismiss": "不再显示", "follow_suggestions.featured_longer": "由 {domain} 管理团队精选", "follow_suggestions.friends_of_friends_longer": "在你关注的人中很受欢迎", - "follow_suggestions.hints.featured": "该用户已被 {domain} 管理团队精选。", - "follow_suggestions.hints.friends_of_friends": "该用户在你关注的人中很受欢迎。", + "follow_suggestions.hints.featured": "该账号已被 {domain} 管理团队精选。", + "follow_suggestions.hints.friends_of_friends": "该账号在你关注的人中很受欢迎。", "follow_suggestions.hints.most_followed": "该用户是 {domain} 上关注度最高的用户之一。", "follow_suggestions.hints.most_interactions": "该用户最近在 {domain} 获得了很多关注。", "follow_suggestions.hints.similar_to_recently_followed": "该用户与你最近关注的人类似。", @@ -381,9 +381,9 @@ "hashtag.follow": "关注话题", "hashtag.unfollow": "取消关注话题", "hashtags.and_other": "… 和另外 {count, plural, other {# 个话题}}", - "hints.profiles.followers_may_be_missing": "该账户的关注者列表可能没有完全显示。", - "hints.profiles.follows_may_be_missing": "该账户的关注列表可能没有完全显示。", - "hints.profiles.posts_may_be_missing": "该账户的嘟文可能没有完全显示。", + "hints.profiles.followers_may_be_missing": "该账号的关注者列表可能没有完全显示。", + "hints.profiles.follows_may_be_missing": "该账号的关注列表可能没有完全显示。", + "hints.profiles.posts_may_be_missing": "该账号的嘟文可能没有完全显示。", "hints.profiles.see_more_followers": "在 {domain} 查看更多关注者", "hints.profiles.see_more_follows": "在 {domain} 查看更多关注", "hints.profiles.see_more_posts": "在 {domain} 查看更多嘟文", @@ -399,19 +399,19 @@ "ignore_notifications_modal.disclaimer": "Mastodon无法通知对方用户你忽略了他们的通知。忽略通知不会阻止消息本身的发送。", "ignore_notifications_modal.filter_instead": "改为过滤", "ignore_notifications_modal.filter_to_act_users": "你仍然可以接受、拒绝或举报用户", - "ignore_notifications_modal.filter_to_avoid_confusion": "过滤有助于避免潜在的混淆", + "ignore_notifications_modal.filter_to_avoid_confusion": "选择过滤有助于避免潜在的混淆", "ignore_notifications_modal.filter_to_review_separately": "你可以单独查看被过滤的通知", "ignore_notifications_modal.ignore": "忽略通知", "ignore_notifications_modal.limited_accounts_title": "是否忽略来自受限账号的通知?", - "ignore_notifications_modal.new_accounts_title": "是否忽略来自新账户的通知?", + "ignore_notifications_modal.new_accounts_title": "是否忽略来自新账号的通知?", "ignore_notifications_modal.not_followers_title": "是否忽略未关注你的人的通知?", "ignore_notifications_modal.not_following_title": "是否忽略你未关注的人的通知?", "ignore_notifications_modal.private_mentions_title": "是否忽略不请自来的私下提及?", - "interaction_modal.action.favourite": "你需要切换到自己的账户,再发送喜欢。", - "interaction_modal.action.follow": "你需要切换到自己的账户,再进行关注。", - "interaction_modal.action.reblog": "你需要切换到自己的账户,再进行转嘟。", - "interaction_modal.action.reply": "你需要切换到自己的账户,再发送回复。", - "interaction_modal.action.vote": "你需要切换到自己的账户,再发送投票。", + "interaction_modal.action.favourite": "你需要切换到自己的账号,再发送喜欢。", + "interaction_modal.action.follow": "你需要切换到自己的账号,再进行关注。", + "interaction_modal.action.reblog": "你需要切换到自己的账号,再进行转嘟。", + "interaction_modal.action.reply": "你需要切换到自己的账号,再发送回复。", + "interaction_modal.action.vote": "你需要切换到自己的账号,再发送投票。", "interaction_modal.go": "跳转", "interaction_modal.no_account_yet": "还没有账号?", "interaction_modal.on_another_server": "在另一服务器", @@ -429,7 +429,7 @@ "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", "keyboard_shortcuts.boost": "转嘟", "keyboard_shortcuts.column": "选中某栏", - "keyboard_shortcuts.compose": "选中输入框", + "keyboard_shortcuts.compose": "选择输入框", "keyboard_shortcuts.description": "说明", "keyboard_shortcuts.direct": "打开私下提及栏", "keyboard_shortcuts.down": "在列表中让光标下移", @@ -444,11 +444,11 @@ "keyboard_shortcuts.local": "打开本站时间线", "keyboard_shortcuts.mention": "提及嘟文作者", "keyboard_shortcuts.muted": "打开隐藏用户列表", - "keyboard_shortcuts.my_profile": "打开你的账户页", + "keyboard_shortcuts.my_profile": "打开你的个人资料", "keyboard_shortcuts.notifications": "打开通知栏", "keyboard_shortcuts.open_media": "打开媒体", "keyboard_shortcuts.pinned": "打开置顶嘟文列表", - "keyboard_shortcuts.profile": "打开作者的账户页", + "keyboard_shortcuts.profile": "打开作者的个人资料", "keyboard_shortcuts.reply": "回复嘟文", "keyboard_shortcuts.requests": "打开关注请求列表", "keyboard_shortcuts.search": "选中搜索框", @@ -513,7 +513,7 @@ "navigation_bar.administration": "管理", "navigation_bar.advanced_interface": "在高级网页界面中打开", "navigation_bar.blocks": "已屏蔽的用户", - "navigation_bar.bookmarks": "收藏夹", + "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间线", "navigation_bar.compose": "撰写新嘟文", "navigation_bar.direct": "私下提及", @@ -529,7 +529,7 @@ "navigation_bar.logout": "退出登录", "navigation_bar.moderation": "审核", "navigation_bar.mutes": "已隐藏的用户", - "navigation_bar.opened_in_classic_interface": "嘟文页、账户页与其他某些页面默认在经典网页界面中打开。", + "navigation_bar.opened_in_classic_interface": "嘟文页、个人资料与其他某些页面默认在经典网页界面中打开。", "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "偏好设置", @@ -592,16 +592,16 @@ "notification_requests.dismiss_multiple": "{count, plural, other {拒绝 # 个请求…}}", "notification_requests.edit_selection": "编辑", "notification_requests.exit_selection": "完成", - "notification_requests.explainer_for_limited_account": "来自此账户的通知已被过滤,因为此账户已被管理员限制。", - "notification_requests.explainer_for_limited_remote_account": "来自此账户的通知已被过滤,因为此账户或其所在的服务器已被管理员限制。", + "notification_requests.explainer_for_limited_account": "来自该账号的通知已被过滤,因为该账号已被管理员限制。", + "notification_requests.explainer_for_limited_remote_account": "来自该账号的通知已被过滤,因为该账号或其所在的实例已被管理员限制。", "notification_requests.maximize": "最大化", "notification_requests.minimize_banner": "最小化被过滤通知横幅", "notification_requests.notifications_from": "来自 {name} 的通知", "notification_requests.title": "被过滤的通知", "notification_requests.view": "查看通知", "notifications.clear": "清空通知列表", - "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", - "notifications.clear_title": "是否清空通知?", + "notifications.clear_confirmation": "确定要永久清空通知列表吗?", + "notifications.clear_title": "确定要清空通知?", "notifications.column_settings.admin.report": "新举报:", "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", @@ -616,7 +616,7 @@ "notifications.column_settings.push": "推送通知", "notifications.column_settings.reblog": "转嘟:", "notifications.column_settings.show": "在通知栏显示", - "notifications.column_settings.sound": "播放提示音", + "notifications.column_settings.sound": "播放音效", "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", @@ -643,11 +643,11 @@ "notifications.policy.filter_limited_accounts_hint": "被服务器管理员限制的账号", "notifications.policy.filter_limited_accounts_title": "受限账号", "notifications.policy.filter_new_accounts.hint": "注册未满 {days, plural, other {# 天}} 的账号", - "notifications.policy.filter_new_accounts_title": "新账户", + "notifications.policy.filter_new_accounts_title": "新账号", "notifications.policy.filter_not_followers_hint": "包括关注你未满 {days, plural, other {# 天}}的人", "notifications.policy.filter_not_followers_title": "没有关注你的人", "notifications.policy.filter_not_following_hint": "需要你手动批准", - "notifications.policy.filter_not_following_title": "你没有关注的人", + "notifications.policy.filter_not_following_title": "需要你手动批准", "notifications.policy.filter_private_mentions_hint": "过滤通知,除非对应嘟文是在回复你的私下提及,或来自你关注的人。", "notifications.policy.filter_private_mentions_title": "不请自来的私下提及", "notifications.policy.title": "管理来自 … 的通知", @@ -659,8 +659,8 @@ "onboarding.follows.empty": "很抱歉,现在无法显示任何结果。你可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。", "onboarding.follows.search": "搜索", "onboarding.follows.title": "关注用户,玩转 Mastodon", - "onboarding.profile.discoverable": "让我的账户可被他人发现", - "onboarding.profile.discoverable_hint": "当你在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果与热门中,你的账户可能会被推荐给与你兴趣相似的人。", + "onboarding.profile.discoverable": "让我的账号可被他人发现", + "onboarding.profile.discoverable_hint": "当你在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果与热门中,你的账号可能会被推荐给与你兴趣相似的人。", "onboarding.profile.display_name": "昵称", "onboarding.profile.display_name_hint": "你的全名或昵称…", "onboarding.profile.note": "简介", @@ -668,7 +668,7 @@ "onboarding.profile.save_and_continue": "保存并继续", "onboarding.profile.title": "设置个人资料", "onboarding.profile.upload_avatar": "上传头像", - "onboarding.profile.upload_header": "上传账户页封面图", + "onboarding.profile.upload_header": "上传账号封面图", "password_confirmation.exceeds_maxlength": "密码确认超过最大密码长度", "password_confirmation.mismatching": "确认密码与密码不一致。", "picture_in_picture.restore": "恢复", @@ -687,7 +687,7 @@ "privacy.direct.short": "特定的人", "privacy.private.long": "仅限你的关注者", "privacy.private.short": "关注者", - "privacy.public.long": "所有 Mastodon 内外的人", + "privacy.public.long": "", "privacy.public.short": "公开", "privacy.unlisted.additional": "此模式的行为与“公开”类似,只是嘟文不会出现在实时动态、话题、探索或 Mastodon 搜索页面中,即使您已全局开启了对应的发现设置。", "privacy.unlisted.long": "减少算法影响", @@ -720,7 +720,7 @@ "report.categories.violation": "内容违反一条或多条服务器规则", "report.category.subtitle": "选择最佳匹配", "report.category.title": "告诉我们此 {type} 存在的问题", - "report.category.title_account": "账户", + "report.category.title_account": "账号", "report.category.title_status": "嘟文", "report.close": "完成", "report.comment.title": "还有什么你认为我们应该知道的吗?", @@ -743,7 +743,7 @@ "report.rules.subtitle": "选择所有适用选项", "report.rules.title": "违反了哪些规则?", "report.statuses.subtitle": "选择所有适用选项", - "report.statuses.title": "是否有可以证实此举报的嘟文?", + "report.statuses.title": "是否有任何嘟文可以支持这一报告?", "report.submit": "提交", "report.target": "举报 {target}", "report.thanks.take_action": "以下是你控制你在 Mastodon 上能看到哪些内容的选项:", @@ -751,7 +751,7 @@ "report.thanks.title": "不想看到这个内容?", "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", "report.unfollow": "取消关注 @{name}", - "report.unfollow_explanation": "你正在关注此账户。如果不想继续在主页看到他们的嘟文,取消对他们的关注即可。", + "report.unfollow_explanation": "你正在关注此账号。如果不想继续在主页看到他们的嘟文,取消对他们的关注即可。", "report_notification.attached_statuses": "附上 {count} 条嘟文", "report_notification.categories.legal": "法律义务", "report_notification.categories.legal_sentence": "非法内容", @@ -764,8 +764,8 @@ "report_notification.open": "打开举报", "search.no_recent_searches": "无最近搜索", "search.placeholder": "搜索", - "search.quick_action.account_search": "包含 {x} 的账户", - "search.quick_action.go_to_account": "打开 {x} 的账户页", + "search.quick_action.account_search": "包含 {x} 的账号", + "search.quick_action.go_to_account": "打开 {x} 的个人资料", "search.quick_action.go_to_hashtag": "打开话题 {x}", "search.quick_action.open_url": "在 Mastodon 中打开此链接", "search.quick_action.status_search": "包含 {x} 的嘟文", @@ -782,7 +782,7 @@ "search_results.all": "全部", "search_results.hashtags": "话题", "search_results.no_results": "未找到结果。", - "search_results.no_search_yet": "可以尝试搜索嘟文、账户或话题。", + "search_results.no_search_yet": "不妨试下搜索嘟文、账号或话题。", "search_results.see_all": "查看全部", "search_results.statuses": "嘟文", "search_results.title": "搜索 “{q}”", @@ -791,7 +791,7 @@ "server_banner.administered_by": "本站管理员:", "server_banner.is_one_of_many": "{domain} 是可用于参与联邦宇宙的众多独立 Mastodon 站点之一。", "server_banner.server_stats": "服务器统计数据:", - "sign_in_banner.create_account": "创建账户", + "sign_in_banner.create_account": "创建账号", "sign_in_banner.follow_anyone": "关注联邦宇宙中的任何人,并按时间顺序查看所有内容。没有算法、广告或诱导链接。", "sign_in_banner.mastodon_is": "Mastodon 是了解最新动态的最佳途径。", "sign_in_banner.sign_in": "登录", @@ -827,14 +827,14 @@ "status.mute": "隐藏 @{name}", "status.mute_conversation": "关闭此对话的通知", "status.open": "展开嘟文", - "status.pin": "在账户页置顶", + "status.pin": "在个人资料页面置顶", "status.pinned": "置顶嘟文", "status.read_more": "查看更多", "status.reblog": "转嘟", "status.reblog_private": "以相同可见性转嘟", "status.reblogged_by": "{name} 转嘟了", "status.reblogs": "{count, plural, other {次转嘟}}", - "status.reblogs.empty": "还没有人转嘟过此条嘟文。转嘟此嘟文的人会显示在这里。", + "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "取消收藏", "status.remove_favourite": "从喜欢列表中移除", @@ -853,7 +853,7 @@ "status.translated_from_with": "由 {provider} 翻译自 {lang}", "status.uncached_media_warning": "预览不可用", "status.unmute_conversation": "恢复此对话的通知提醒", - "status.unpin": "在账户页取消置顶", + "status.unpin": "在个人资料页面取消置顶", "subscribed_languages.lead": "更改此选择后,只有选定语言的嘟文才会出现在你的主页和列表时间线上。选择「无」将显示所有语言的嘟文。", "subscribed_languages.save": "保存更改", "subscribed_languages.target": "更改 {target} 的订阅语言", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 0010c687c0e137..a06b566d01d59d 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -53,7 +53,7 @@ "account.mute_short": "靜音", "account.muted": "已靜音", "account.mutual": "互相跟隨", - "account.no_bio": "無個人檔案描述", + "account.no_bio": "無個人檔案描述。", "account.open_original_page": "檢視原始頁面", "account.posts": "嘟文", "account.posts_with_replies": "嘟文與回覆", diff --git a/config/locales/activerecord.be.yml b/config/locales/activerecord.be.yml index 0c77b78b0d5e1b..e0c7b14622af01 100644 --- a/config/locales/activerecord.be.yml +++ b/config/locales/activerecord.be.yml @@ -15,7 +15,6 @@ be: user/invite_request: text: Прычына errors: - messages: models: account: attributes: diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index e62c4264ddbf25..8aa1848ca1eab5 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -20,7 +20,6 @@ cs: invalid: není platný název domény messages: invalid_domain_on_line: "%{value} není platný název domény" - too_many_lines: překročil limit %{limit} řádků models: account: attributes: diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index ecbfab3dc40140..274a2bf01f1cc9 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -20,7 +20,6 @@ pt-PT: invalid: não é um nome de domínio válido messages: invalid_domain_on_line: "%{value} não é um nome de domínio válido" - too_many_lines: está acima do limite de %{limit} linhas models: account: attributes: diff --git a/config/locales/activerecord.tok.yml b/config/locales/activerecord.tok.yml index c0004f12ac95c5..9a6f9e5875a117 100644 --- a/config/locales/activerecord.tok.yml +++ b/config/locales/activerecord.tok.yml @@ -20,7 +20,6 @@ tok: invalid: li nimi ilo ike messages: invalid_domain_on_line: nimi "%{value}" li nimi ilo ike - too_many_lines: la %{limit} o mute nanpa wan pi linja sitelen models: account: attributes: diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 74cb299b3b8e06..7be8621f1f8fe1 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -23,6 +23,8 @@ zh-CN: models: account: attributes: + fields: + fields_with_values_missing_labels: 包含缺失标签的值 username: invalid: 只能使用字母、数字和下划线 reserved: 是保留关键字 @@ -42,7 +44,7 @@ zh-CN: attributes: account_id: taken: 已经被加入到列表了 - must_be_following: 需要是你关注的账户 + must_be_following: 需要是你关注的账号 status: attributes: reblog: @@ -57,7 +59,7 @@ zh-CN: user_role: attributes: permissions_as_keys: - dangerous: 包含对基本角色而言不安全的权限 + dangerous: 包含对基本角色不安全的权限 elevated: 不能包含你当前身份未有的权限 own_role: 你当前的角色无权执行此更改 position: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 77d8a404dc78fa..c96c4afdcccf98 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -7,12 +7,12 @@ zh-CN: send_paranoid_instructions: 如果你的邮箱地址存在于我们的数据库中,你将在几分钟内收到一封邮件,内含如何验证邮箱地址的指引。如果你没有收到这封邮件,请检查你的垃圾邮件文件夹。 failure: already_authenticated: 你已登录。 - inactive: 你还没有激活账户。 + inactive: 你还没有激活账号。 invalid: "%{authentication_keys} 无效或密码错误。" last_attempt: 你只有最后一次尝试机会,若未通过,账号将被锁定。 - locked: 你的账户已被锁定。 + locked: 你的账号已被锁定。 not_found_in_database: "%{authentication_keys}或密码错误。" - omniauth_user_creation_failure: 为此身份创建账户时出错。 + omniauth_user_creation_failure: 为此身份创建账号时出错。 pending: 你的账号仍在审核中。 timeout: 你的会话已过期。请重新登录再继续操作。 unauthenticated: 继续操作前请注册或者登录。 @@ -28,34 +28,34 @@ zh-CN: title: 验证邮箱地址 email_changed: explanation: 你的账号的邮箱地址将变更为: - extra: 如果你并没有请求更改你的邮箱地址,则他人很有可能已经入侵你的账户。请立即更改你的密码,或者,如果你已经无法访问你的账户,请联系服务器管理员请求协助。 + extra: 如果你并没有请求更改你的邮箱地址,则他人很有可能已经入侵你的账号。请立即更改你的密码,或者,如果你已经无法访问你的账号,请联系服务器管理员请求协助。 subject: Mastodon:邮箱地址已被更改 title: 新邮箱地址 password_change: - explanation: 你的账户密码已更改。 - extra: 如果你并没有申请更改密码,那似乎有人已经入侵你的账户。请立即更改你的密码;如果你已经无法访问你的账户,请联系服务器的管理员获取帮助。 + explanation: 你的账号密码已更改。 + extra: 如果你并没有申请更改密码,那似乎有人已经入侵你的账号。请立即更改你的密码;如果你已经无法访问你的账号,请联系服务器的管理员获取帮助。 subject: Mastodon:密码已被更改 title: 密码已被重置 reconfirmation_instructions: explanation: 点击下面的链接来确认你的新邮箱地址。 - extra: 如果你并没有请求本次更改,请忽略此邮件。Mastodon 账户的邮箱地址只有在你点击上面的链接后才会更改。 + extra: 如果你并没有请求本次更改,请忽略此邮件。Mastodon 账号的邮箱地址只有在你点击上面的链接后才会更改。 subject: Mastodon:确认 %{instance} 电子邮箱地址 title: 验证邮箱地址 reset_password_instructions: action: 更改密码 - explanation: 点击下面的链接来更改账户的密码。 + explanation: 点击下面的链接来更改账号的密码。 extra: 如果你并没有请求本次变更,请忽略此邮件。你的密码只有在你点击上面的链接并输入新密码后才会更改。 subject: Mastodon:重置密码说明 title: 重置密码 two_factor_disabled: explanation: 目前只能通过邮箱地址和密码登录。 subject: Mastodon:双因素认证已禁用 - subtitle: 你账户的双因素认证已被停用。 + subtitle: 你账号的双因素认证已被停用。 title: 双因素认证已停用 two_factor_enabled: explanation: 登录时需要输入先前配对好的TOTP应用生成的令牌。 subject: Mastodon:双因素认证已启用 - subtitle: 你账户的双因素认证已被启用。 + subtitle: 你账号的双因素认证已被启用。 title: 双因素认证已启用 two_factor_recovery_codes_changed: explanation: 新恢复码已生成,同时旧恢复码已失效。 @@ -63,23 +63,23 @@ zh-CN: subtitle: 新恢复码已生成,同时旧恢复码已失效。 title: 双因素认证恢复码已更改 unlock_instructions: - subject: Mastodon:账户解锁信息 + subject: Mastodon:账号解锁信息 webauthn_credential: added: - explanation: 以下安全密钥已添加到你的账户 + explanation: 以下安全密钥已添加到你的账号 subject: Mastodon:新的安全密钥 title: 已添加一个新的安全密钥 deleted: - explanation: 以下安全密钥已从你的账户中删除 + explanation: 以下安全密钥已从你的账号中删除 subject: Mastodon:安全密钥已删除 title: 你的安全密钥之一已被删除 webauthn_disabled: - explanation: 你账户的安全密钥身份认证已被停用。 + explanation: 你账号的安全密钥身份认证已被停用。 extra: 目前只能用先前配对的TOTP应用生成的令牌登录。 subject: Mastodon:安全密钥认证已禁用 title: 安全密钥已禁用 webauthn_enabled: - explanation: 你账户的安全密钥身份认证已被启用。 + explanation: 你账号的安全密钥身份认证已被启用。 extra: 你的安全密钥现在可用于登录。 subject: Mastodon:安全密钥认证已启用 title: 已启用安全密钥 @@ -93,17 +93,17 @@ zh-CN: updated: 你的密码已成功修改,现在你已登录。 updated_not_active: 你的密码已修改成功。 registrations: - destroyed: 再见!你的账户已成功注销。我们希望很快可以再见到你。 + destroyed: 再见!你的账号已成功注销。我们希望很快可以再见到你。 update_needs_confirmation: 账号信息更新成功,但我们需要验证你的新邮箱地址,请点击邮件中的链接以确认。如果没有收到邮件,请检查你的垃圾邮件文件夹。 - updated: 账户资料更新成功。 + updated: 账号资料更新成功。 sessions: already_signed_out: 已成功退出登录。 signed_in: 已成功登录。 signed_out: 已成功退出登录。 unlocks: - send_instructions: 几分钟后,你将收到一封解锁账户的邮件。如果没有,请检查你的垃圾邮箱。 + send_instructions: 几分钟后,你将收到一封解锁账号的邮件。如果没有,请检查你的垃圾邮箱。 send_paranoid_instructions: 如果你的账号存在,你将会在几分钟内收到一封指引你如何解锁账号的邮件。如果你没有收到这封邮件,请检查你邮箱的垃圾箱。 - unlocked: 你的账户已成功解锁。登录以继续。 + unlocked: 你的账号已成功解锁。登录以继续。 errors: messages: already_confirmed: 已经成功确认,请尝试登录 diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index bccb26d5bf77a3..256ecbb776d78f 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -60,7 +60,7 @@ zh-CN: error: title: 发生错误 new: - prompt_html: "%{client_name} 请求获得访问你账户的权限。 请在确保自己了解并信任此来源后再批准该请求。" + prompt_html: "%{client_name} 请求获得访问你账号的权限。 请在确保自己了解并信任此来源后再批准该请求。" review_permissions: 检查权限 title: 需要授权 show: @@ -123,7 +123,7 @@ zh-CN: admin/accounts: 账号管理 admin/all: 所有管理功能 admin/reports: 举报管理 - all: 完全访问你的Mastodon账户 + all: 完全访问你的Mastodon账号 blocks: 屏蔽 bookmarks: 收藏 conversations: 会话 @@ -167,12 +167,12 @@ zh-CN: admin:write:reports: 对举报执行管理操作 crypto: 使用端到端加密 follow: 关注或屏蔽用户 - profile: 仅读取你账户的个人资料信息 - push: 接收你的账户的推送通知 - read: 读取你的账户数据 + profile: 仅读取你账号的个人资料信息 + push: 接收你的账号的推送通知 + read: 读取你的账号数据 read:accounts: 查看账号信息 read:blocks: 查看你的屏蔽列表 - read:bookmarks: 查看你的收藏夹 + read:bookmarks: 查看你的书签 read:favourites: 查看喜欢的嘟文 read:filters: 查看你的过滤规则 read:follows: 查看你的关注 @@ -184,7 +184,7 @@ zh-CN: read:statuses: 查看所有嘟文 write: 修改你的账号数据 write:accounts: 修改你的个人资料 - write:blocks: 屏蔽账户与站点 + write:blocks: 屏蔽账号与站点 write:bookmarks: 收藏嘟文 write:conversations: 静音并删除会话 write:favourites: 喜欢嘟文 diff --git a/config/locales/ia.yml b/config/locales/ia.yml index e5343621827862..f42271d16ca194 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -164,7 +164,7 @@ ia: undo_silenced: Disfacer le limite undo_suspension: Disfacer le suspension unsilenced_msg: Le limite del conto de %{username} ha essite cancellate - unsubscribe: Desubscriber + unsubscribe: Cancellar subscription unsuspended_msg: Le suspension del conto %{username} ha essite annullate username: Nomine de usator view_domain: Vider summario de dominio @@ -1117,7 +1117,7 @@ ia: notification_preferences: Cambiar preferentias de e-mail salutation: "%{name}," settings: 'Cambiar preferentias de e-mail: %{link}' - unsubscribe: Desubscriber + unsubscribe: Cancellar subscription view: 'Visita:' view_profile: Vider profilo view_status: Vider message @@ -1519,7 +1519,7 @@ ia: title: Historia de authentication mail_subscriptions: unsubscribe: - action: Si, desubscriber + action: Si, cancellar subscription complete: Desubscribite confirmation_html: Es tu secur de voler cancellar le subscription al %{type} de Mastodon sur %{domain} pro tu adresse de e-mail %{email}? Tu pote sempre resubscriber te a partir del parametros de notification in e-mail. emails: diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index fee710113b194f..a903a3be06da87 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -3,7 +3,6 @@ bg: simple_form: hints: account: - attribution_domains: Едно на ред. Защитава от фалшиви атрибути. discoverable: Вашите публични публикации и профил може да се представят или препоръчват в различни области на Mastodon и вашия профил може да се предлага на други потребители. display_name: Вашето пълно име или псевдоним. fields: Вашата начална страница, местоимения, години, всичко що искате. @@ -150,7 +149,6 @@ bg: url: До къде ще се изпращат събитията labels: account: - attribution_domains: Уебсайтове, на които е позволено да приписват авторството ви discoverable: Включване на профил и публикации в алгоритмите за откриване fields: name: Етикет diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 4e70a46d71a14f..c908d07479e667 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,7 +3,6 @@ ca: simple_form: hints: account: - attribution_domains: Un per línia. Protegeix de falses atribucions. discoverable: El teu perfil i els teus tuts públics poden aparèixer o ser recomanats en diverses àreas de Mastodon i el teu perfil pot ser suggerit a altres usuaris. display_name: El teu nom complet o el teu nom divertit. fields: La teva pàgina d'inici, pronoms, edat, el que vulguis. @@ -148,7 +147,6 @@ ca: url: On els esdeveniments seran enviats labels: account: - attribution_domains: Webs que us poden donar crèdit discoverable: Permet el perfil i el tuts en els algorismes de descobriment fields: name: Etiqueta diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 37ad72a7e47230..515c7fb9e82c78 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -3,7 +3,6 @@ cs: simple_form: hints: account: - attribution_domains: Jeden na řádek. Chrání před falešným připisování autorství. discoverable: Vaše veřejné příspěvky a profil mohou být zobrazeny nebo doporučeny v různých oblastech Mastodonu a váš profil může být navrhován ostatním uživatelům. display_name: Vaše celé jméno nebo přezdívka. fields: Vaše domovská stránka, zájmena, věk, cokoliv chcete. @@ -156,7 +155,6 @@ cs: url: Kam budou události odesílány labels: account: - attribution_domains: Webové stránky s povolením Vám připsat autorství discoverable: Zobrazovat profil a příspěvky ve vyhledávacích algoritmech fields: name: Označení diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index b1adc7cbbee032..1220ceabf3aca9 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -3,7 +3,6 @@ cy: simple_form: hints: account: - attribution_domains: Un i bob llinell. Yn amddiffyn rhag priodoli ffug. discoverable: Mae'n bosibl y bydd eich postiadau cyhoeddus a'ch proffil yn cael sylw neu'n cael eu hargymell mewn gwahanol feysydd o Mastodon ac efallai y bydd eich proffil yn cael ei awgrymu i ddefnyddwyr eraill. display_name: Eich enw llawn neu'ch enw hwyl. fields: Eich tudalen cartref, rhagenwau, oed, neu unrhyw beth. @@ -156,7 +155,6 @@ cy: url: I ble bydd digwyddiadau'n cael eu hanfon labels: account: - attribution_domains: Gwefannau sy'n cael caniatâd i'ch cydnabod chi discoverable: Proffil nodwedd a phostiadau mewn algorithmau darganfod fields: name: Label diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 676f184f98a883..cc51bb76036d44 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -3,7 +3,6 @@ da: simple_form: hints: account: - attribution_domains: Ét pr. linje. Beskytter mod falske tilskrivninger. discoverable: Dine offentlige indlæg og profil kan blive fremhævet eller anbefalet i forskellige områder af Mastodon, og profilen kan blive foreslået til andre brugere. display_name: Dit fulde navn eller dit sjove navn. fields: Din hjemmeside, dine pronominer, din alder, eller hvad du har lyst til. @@ -156,7 +155,6 @@ da: url: Hvor begivenheder sendes til labels: account: - attribution_domains: Websteder, man må krediteres af discoverable: Fremhæv profil og indlæg i opdagelsesalgoritmer fields: name: Etiket diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 2becfb36dc6479..3a66001da58f53 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -3,7 +3,6 @@ de: simple_form: hints: account: - attribution_domains: Eine Domain pro Zeile. Dadurch können falsche Zuschreibungen unterbunden werden. discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon angezeigt oder empfohlen werden und dein Profil kann anderen vorgeschlagen werden. display_name: Dein richtiger Name oder dein Fantasiename. fields: Deine Website, Pronomen, dein Alter – alles, was du möchtest. @@ -156,7 +155,6 @@ de: url: Wohin Ereignisse gesendet werden labels: account: - attribution_domains: Websites, die auf dich verweisen dürfen discoverable: Profil und Beiträge in Suchalgorithmen berücksichtigen fields: name: Beschriftung diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 37ec3593777e6e..e06cf7069dd640 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -3,7 +3,6 @@ el: simple_form: hints: account: - attribution_domains: Μία ανά γραμμή. Προστατεύει από ψευδείς ιδιότητες. discoverable: Οι δημόσιες δημοσιεύσεις και το προφίλ σου μπορεί να εμφανίζονται ή να συνιστώνται σε διάφορους τομείς του Mastodon και το προφίλ σου μπορεί να προτείνεται σε άλλους χρήστες. display_name: Το πλήρες ή το αστείο σου όνομα. fields: Η αρχική σου σελίδα, αντωνυμίες, ηλικία, ό,τι θες. @@ -155,7 +154,6 @@ el: url: Πού θα σταλούν τα γεγονότα labels: account: - attribution_domains: Ιστοσελίδες που επιτρέπεται να σου δώσουν εύσημα discoverable: Παροχή προφίλ και αναρτήσεων σε αλγορίθμους ανακάλυψης fields: name: Περιγραφή diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index d8bfd1122f5002..6539cacb80aedb 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -3,7 +3,6 @@ en-GB: simple_form: hints: account: - attribution_domains: One per line. Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -144,7 +143,6 @@ en-GB: url: Where events will be sent to labels: account: - attribution_domains: Websites allowed to credit you discoverable: Feature profile and posts in discovery algorithms fields: name: Label diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 4688fe614ac006..5de006231aa49f 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -3,7 +3,6 @@ eo: simple_form: hints: account: - attribution_domains: Unu por linio. Protektas kontraŭ falsaj atribuoj. discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj. display_name: Via plena nomo aŭ via kromnomo. fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. @@ -156,7 +155,6 @@ eo: url: Kien eventoj sendotas labels: account: - attribution_domains: Retejoj permesitaj krediti vin discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 0959ac0d7b5ee1..2abefdcab63155 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -3,7 +3,6 @@ es-AR: simple_form: hints: account: - attribution_domains: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones pueden ser destacadas o recomendadas en varias áreas de Mastodon, y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu pseudónimo. fields: Tu sitio web, pronombres, edad, o lo que quieras. @@ -156,7 +155,6 @@ es-AR: url: Adónde serán enviados los eventos labels: account: - attribution_domains: Sitios web autorizados a acreditarte discoverable: Destacar perfil y mensajes en algoritmos de descubrimiento fields: name: Nombre de campo diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 4ed442ae19b349..e2f6627c96ee44 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -3,7 +3,6 @@ es-MX: simple_form: hints: account: - attribution_domains: Uno por línea. Protege contra atribuciones falsas. discoverable: Tu perfil y las publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu página de inicio, pronombres, edad, lo que quieras. @@ -156,7 +155,6 @@ es-MX: url: Donde los eventos serán enviados labels: account: - attribution_domains: Sitios web autorizados para acreditarte discoverable: Destacar el perfil y las publicaciones en el algoritmo de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index dd62884d68ef9d..7cdbea902fa4b2 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -3,7 +3,6 @@ es: simple_form: hints: account: - attribution_domains: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu carta de presentación, pronombres, edad, lo que quieras. @@ -156,7 +155,6 @@ es: url: Donde los eventos serán enviados labels: account: - attribution_domains: Sitios web autorizados a acreditarte discoverable: Destacar perfil y publicaciones en algoritmos de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index e8df5dda472a10..1eda0ec67b0956 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -3,7 +3,6 @@ et: simple_form: hints: account: - attribution_domains: Üks rea peal. See kaitseb pahatahtlike viidete eest. discoverable: Su profiili ja avalikke postitusi võidakse Mastodoni erinevates piirkondades esile tõsta või soovitada ning su profiili soovitada teistele kasutajatele. display_name: Su täisnimi või naljanimi. fields: Su koduleht, sugu, vanus. Mistahes, mida soovid. @@ -146,7 +145,6 @@ et: url: Kuhu sündmused saadetakse labels: account: - attribution_domains: Sinule viidata lubatud veebilehed discoverable: Tõsta postitused ja profiil avastamise algoritmides esile fields: name: Nimetus diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 493f7972bd1145..7aaa146f31af27 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -3,7 +3,6 @@ fa: simple_form: hints: account: - attribution_domains: یکی در هر خط. محافظت از اعتباردهی‌های اشتباه. discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود. display_name: نام کامل یا باحالتان. fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید. @@ -156,7 +155,6 @@ fa: url: جایی که رویدادها فرستاده می‌شوند labels: account: - attribution_domains: پابگاه‌های وبی که اجازهٔ اعتبار دهی به شما را دارند discoverable: مشخص کردن مشخصات و فرسته‌ها در الگوریتم‌های اکتشاف fields: name: برچسب diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index a21781f772a86a..1103232f4e7f1c 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -3,7 +3,6 @@ fi: simple_form: hints: account: - attribution_domains: Yksi riviä kohti. Suojaa vääriltä tunnustuksilta. discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille. display_name: Koko nimesi tai lempinimesi. fields: Verkkosivustosi, pronominisi, ikäsi ja mitä ikinä haluatkaan ilmoittaa. @@ -156,7 +155,6 @@ fi: url: Mihin tapahtumat lähetetään labels: account: - attribution_domains: Verkkosivustot, jotka voivat antaa sinulle tunnustusta discoverable: Pidä profiiliasi ja julkaisujasi esillä löytämisalgoritmeissa fields: name: Nimike diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml index 69d41285dc1dc9..a3b7a56729330a 100644 --- a/config/locales/simple_form.fo.yml +++ b/config/locales/simple_form.fo.yml @@ -3,7 +3,6 @@ fo: simple_form: hints: account: - attribution_domains: Eitt á hvørja reglu. Tað verjir fyri skeivum tilsipingum. discoverable: Tínir almennu postar og tín vangi kunnu vera drigin fram og viðmæld ymsa staðni í Mastodon og vangin hjá tær kann vera viðmæltur øðrum brúkarum. display_name: Títt fulla navn og títt stuttliga navn. fields: Heimasíðan hjá tær, fornøvn, aldur ella hvat tú vil. @@ -156,7 +155,6 @@ fo: url: Hvar hendingar verða sendar til labels: account: - attribution_domains: Heimasíður, sum hava loyvi at sipa til tín discoverable: Framheva vanga og postar í uppdagingar-algoritmum fields: name: Spjaldur diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index d229808eae8066..01893eefc9338e 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -3,7 +3,6 @@ fr-CA: simple_form: hints: account: - attribution_domains: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom cool. fields: Votre page d'accueil, pronoms, âge, tout ce que vous voulez. @@ -156,7 +155,6 @@ fr-CA: url: Là où les événements seront envoyés labels: account: - attribution_domains: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 4fa202847b57bb..9332c5d606eba5 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,7 +3,6 @@ fr: simple_form: hints: account: - attribution_domains: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom rigolo. fields: Votre page personnelle, vos pronoms, votre âge, ce que vous voulez. @@ -156,7 +155,6 @@ fr: url: Là où les événements seront envoyés labels: account: - attribution_domains: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index ffe2f49ef4d6f2..52ef178aec4729 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -3,7 +3,6 @@ fy: simple_form: hints: account: - attribution_domains: Ien per rigel. Beskermet tsjin falske attribúsjes. discoverable: Jo iepenbiere berjochten kinne útljochte wurde op ferskate plakken binnen Mastodon en jo account kin oanrekommandearre wurde oan oare brûkers. display_name: Jo folsleine namme of in aardige bynamme. fields: Jo website, persoanlike foarnammewurden, leeftiid, alles wat jo mar kwyt wolle. @@ -156,7 +155,6 @@ fy: url: Wêr’t eveneminten nei ta stjoerd wurde labels: account: - attribution_domains: Websites dy’t jo wurdearring jaan meie discoverable: Profyl en bydragen yn sykalgoritmen opnimme litte fields: name: Label diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 877f909ffd54f1..93eff4a89ddee8 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -3,7 +3,6 @@ ga: simple_form: hints: account: - attribution_domains: Ceann in aghaidh an líne. Cosnaíonn sé ó sannadh bréagach. discoverable: Seans go mbeidh do phostálacha poiblí agus do phróifíl le feiceáil nó molta i réimsí éagsúla de Mastodon agus is féidir do phróifíl a mholadh d’úsáideoirí eile. display_name: D'ainm iomlán nó d'ainm spraoi. fields: Do leathanach baile, forainmneacha, aois, rud ar bith is mian leat. @@ -156,7 +155,6 @@ ga: url: An áit a seolfar imeachtaí chuig labels: account: - attribution_domains: Tá cead ag suíomhanna Gréasáin creidmheas a thabhairt duit discoverable: Próifíl gné agus postálacha in halgartaim fionnachtana fields: name: Lipéad diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 6558462c351c88..bb05294cfb7054 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -3,7 +3,6 @@ gd: simple_form: hints: account: - attribution_domains: Loidhne fa leth do gach fear. Dìonaidh seo o iomraidhean meallta. discoverable: Dh’fhaoidte gun dèid na postaichean poblach ’s a’ phròifil agad a bhrosnachadh no a mholadh ann an caochladh roinnean de Mhastodon agus gun dèid a’ phròifil agad a mholadh do chàch. display_name: D’ ainm slàn no spòrsail. fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu. @@ -144,7 +143,6 @@ gd: url: Far an dèid na tachartasan a chur labels: account: - attribution_domains: Na làraichean-lìn a dh’fhaodas iomradh a thoirt ort discoverable: Brosnaich a’ phròifil is postaichean agad sna h-algairimean rùrachaidh fields: name: Leubail diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 9b81d1082294e0..ec7786f509eec6 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -3,7 +3,6 @@ gl: simple_form: hints: account: - attribution_domains: Un por liña. Protéxete das atribucións falsas. discoverable: As túas publicacións públicas e perfil poden mostrarse ou recomendarse en varias zonas de Mastodon e o teu perfil ser suxerido a outras usuarias. display_name: O teu nome completo ou un nome divertido. fields: Páxina web, pronome, idade, o que ti queiras. @@ -156,7 +155,6 @@ gl: url: A onde se enviarán os eventos labels: account: - attribution_domains: Sitios web que poden acreditarte discoverable: Perfil destacado e publicacións nos algoritmos de descubrimento fields: name: Etiqueta diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 0ce10c86170f81..2699f5e962fa5d 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -3,7 +3,6 @@ he: simple_form: hints: account: - attribution_domains: אחד בכל שורה. יגן מפני יחוס מטעה. discoverable: הפוסטים והפרופיל שלך עשויים להיות מוצגים או מומלצים באזורים שונים באתר וייתכן שהפרופיל שלך יוצע למשתמשים אחרים. display_name: שמך המלא או שם הכיף שלך. fields: עמוד הבית שלך, לשון הפנייה, גיל, וכל מידע אחר לפי העדפתך האישית. @@ -156,7 +155,6 @@ he: url: היעד שאליו יישלחו אירועים labels: account: - attribution_domains: אתרים המורשים לייחס אליך מאמרים discoverable: הצג משתמש ופוסטים בעמוד התגליות fields: name: תווית diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index df81f43fd90928..cc9fa61abfee83 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -3,7 +3,6 @@ hu: simple_form: hints: account: - attribution_domains: Megvéd a hamis forrásmegjelölésektől. discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható. display_name: Teljes neved vagy vicces neved. fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél. @@ -153,7 +152,6 @@ hu: url: Ahová az eseményket küldjük labels: account: - attribution_domains: Weboldalak, melyek szerzőként tüntethetnek fel discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban fields: name: Címke diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index 47b81ed1a6082d..bcab4f9d80c200 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -3,7 +3,6 @@ ia: simple_form: hints: account: - attribution_domains: Un per linea. Protege contra false attributiones. discoverable: Tu messages public e tu profilo pote esser mittite in evidentia o recommendate in varie areas de Mastodon e tu profilo pote esser suggerite a altere usatores. display_name: Tu prenomine e nomine de familia o tu pseudonymo. fields: Tu pagina principal, pronomines, etate, tote lo que tu vole. @@ -156,7 +155,6 @@ ia: url: Ubi le eventos essera inviate labels: account: - attribution_domains: Sitos web autorisate a accreditar te discoverable: Evidentiar le profilo e messages in le algorithmos de discoperta fields: name: Etiquetta diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 106d2017d29649..f0232602bb8891 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -3,7 +3,6 @@ is: simple_form: hints: account: - attribution_domains: Eitt á hverja línu. Ver fyrir röngum tilvísunum. discoverable: Opinberar færslur og notandasnið þitt geta birst eða verið mælt með á hinum ýmsu svæðum í Mastodon auk þess sem hægt er að mæla með þér við aðra notendur. display_name: Fullt nafn þitt eða eitthvað til gamans. fields: Heimasíðan þín, fornöfn, aldur eða eitthvað sem þú vilt koma á framfæri. @@ -156,7 +155,6 @@ is: url: Hvert atburðir verða sendir labels: account: - attribution_domains: Vefsvæði sem mega vitna í þig discoverable: Hafa notandasnið og færslur með í reikniritum leitar fields: name: Skýring diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 62fe75e838384f..f0448bba4b60d8 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -3,7 +3,6 @@ it: simple_form: hints: account: - attribution_domains: Uno per riga. Protegge da false attribuzioni. discoverable: I tuoi post pubblici e il tuo profilo potrebbero essere presenti o consigliati in varie aree di Mastodon e il tuo profilo potrebbe essere suggerito ad altri utenti. display_name: Il tuo nome completo o il tuo soprannome. fields: La tua homepage, i pronomi, l'età, tutto quello che vuoi. @@ -156,7 +155,6 @@ it: url: Dove gli eventi saranno inviati labels: account: - attribution_domains: Siti web autorizzati ad accreditarti discoverable: Include il profilo e i post negli algoritmi di scoperta fields: name: Etichetta diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 7e93de6e32cb02..d827d7b393b284 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -3,7 +3,6 @@ ja: simple_form: hints: account: - attribution_domains: 1行につき1つずつ入力してください。この設定は関わりのないwebサイトに対して虚偽の帰属表示が行われることを防止する役割があります。 discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。 display_name: フルネーム、ハンドルネームなど fields: ホームページ、代名詞、年齢など何でも構いません。 @@ -156,7 +155,6 @@ ja: url: イベントの送信先 labels: account: - attribution_domains: あなたの著者表示を許可するwebサイト discoverable: アカウントを見つけやすくする fields: name: ラベル diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index a8017950c0372e..d40ca7ebf8fb09 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -3,7 +3,6 @@ ko: simple_form: hints: account: - attribution_domains: 한 줄에 하나씩. 가짜 기여로부터 보호합니다. discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다 display_name: 진짜 이름 또는 재미난 이름. fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들. @@ -151,7 +150,6 @@ ko: url: 이벤트가 어디로 전송될 지 labels: account: - attribution_domains: 나를 기여자로 올릴 수 있도록 허용된 웹사이트들 discoverable: 발견하기 알고리즘에 프로필과 게시물을 추천하기 fields: name: 라벨 diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index 2ceb262c5a533a..c7aaeab9066a65 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -3,7 +3,6 @@ lt: simple_form: hints: account: - attribution_domains: Po vieną eilutėje. Apsaugo nuo klaidingų atributų. discoverable: Tavo vieši įrašai ir profilis gali būti rodomi arba rekomenduojami įvairiose Mastodon vietose, o profilis gali būti siūlomas kitiems naudotojams. display_name: Tavo pilnas vardas arba smagus vardas. fields: Tavo pagrindinis puslapis, įvardžiai, amžius, bet kas, ko tik nori. @@ -119,7 +118,6 @@ lt: role: Vaidmuo valdo, kokius leidimus naudotojas turi. labels: account: - attribution_domains: Svetainės, kuriuose leidžiama jus nurodyti discoverable: Rekomenduoti profilį ir įrašus į atradimo algoritmus indexable: Įtraukti viešus įrašus į paieškos rezultatus show_collections: Rodyti sekimus ir sekėjus profilyje diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index c5a3da8429f424..85cc38fa9e3bf2 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -3,7 +3,6 @@ lv: simple_form: hints: account: - attribution_domains: Viens katrā līnijā. Aizsargā no nepatiesa attiecinājuma. discoverable: Tavas publiskās ziņas un profils var tikt piedāvāti vai ieteikti dažādās Mastodon vietās, un tavs profils var tikt ieteikts citiem lietotājiem. display_name: Tavs pilnais vārds vai tavs joku vārds. fields: Tava mājas lapa, vietniekvārdi, vecums, viss, ko vēlies. @@ -144,7 +143,6 @@ lv: url: Kur notikumi tiks nosūtīti labels: account: - attribution_domains: Tīmekļvietnes, kurām ir tiesības uzskaitīt Tevi discoverable: Funkcijas profils un ziņas atklāšanas algoritmos fields: name: Marķējums diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 30f0822973785c..b9e30c565d2f2a 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -3,7 +3,6 @@ nn: simple_form: hints: account: - attribution_domains: Ein per line. Vernar mot falske krediteringar. discoverable: Dei offentlege innlegga dine og profilen din kan dukka opp i tilrådingar på ulike stader på Mastodon, og profilen din kan bli føreslegen for andre folk. display_name: Ditt fulle namn eller ditt tøysenamn. fields: Heimesida di, pronomen, alder, eller kva du måtte ynskje. @@ -156,7 +155,6 @@ nn: url: Kvar hendingar skal sendast labels: account: - attribution_domains: Nettstader som har lov å kreditera deg discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar fields: name: Merkelapp diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 553c0bb7a24f6c..d7f3829af2f2e9 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -3,7 +3,6 @@ pl: simple_form: hints: account: - attribution_domains: Jedna na linię. Chroni przed fałszywym przypisaniem wpisów. discoverable: Twój profil i publiczne wpisy mogą być promowane lub polecane na Mastodonie i twój profil może być sugerowany innym użytkownikom. display_name: Twoje imię lub pseudonim. fields: Co ci się tylko podoba – twoja strona domowa, zaimki, wiek… @@ -145,7 +144,6 @@ pl: url: Dokąd będą wysłane zdarzenia labels: account: - attribution_domains: Strony które mogą ci przypisywać autorstwo. discoverable: Udostępniaj profil i wpisy funkcjom odkrywania fields: name: Nazwa diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 90b1db7d9bb106..500fb4c30e0292 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -3,7 +3,6 @@ pt-BR: simple_form: hints: account: - attribution_domains: Um por linha. Protege de falsas atribuições. discoverable: Suas publicações e perfil públicos podem ser destaques ou recomendados em várias áreas de Mastodon, e seu perfil pode ser sugerido a outros usuários. display_name: Seu nome completo ou apelido. fields: Sua página inicial, pronomes, idade ou qualquer coisa que quiser. @@ -147,7 +146,6 @@ pt-BR: url: Aonde os eventos serão enviados labels: account: - attribution_domains: Sites permitidos para credenciar você discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index b2823c135923dc..ba416120426a11 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -3,7 +3,6 @@ pt-PT: simple_form: hints: account: - attribution_domains: Um por linha. Protege contra falsas atribuições. discoverable: As suas publicações e perfil públicos podem ser destacados ou recomendados em várias áreas do Mastodon e o seu perfil pode ser sugerido a outros utilizadores. display_name: O seu nome completo ou o seu nome divertido. fields: A sua página inicial, os seus pronomes, idade e tudo o que quiser. @@ -156,7 +155,6 @@ pt-PT: url: Para onde os eventos serão enviados labels: account: - attribution_domains: Sites autorizados a atribuir-lhe crédito discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 5774d6562ca018..978f1e4fd47ff1 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -3,7 +3,6 @@ ro: simple_form: hints: account: - attribution_domains: Una pe linie. Protejează împotriva atribuirilor false. discoverable: Este posibil ca postările și profilul tău să fie recomandate în diferite zone ale Mastodon, iar profilul tău ar poate fi sugerat altor utilizatori. display_name: Numele dvs. complet sau numele dvs. amuzant. fields: Pagina ta principală, pronumele tale, vârsta, sau orice îți dorești. diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index e24dac64b2bdaa..64db162ea6ca24 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -3,7 +3,6 @@ ru: simple_form: hints: account: - attribution_domains: По одному на строку. Защищает от ложных атрибуций. discoverable: Ваши публичные сообщения и профиль могут быть показаны или рекомендованы в различных разделах Mastodon, и ваш профиль может быть предложен другим пользователям. display_name: Ваше полное имя или псевдоним. fields: Ваша домашняя страница, местоимения, возраст - все, что угодно. @@ -156,7 +155,6 @@ ru: url: Куда события будут отправляться labels: account: - attribution_domains: Веб-сайты, которым разрешено ссылаться на вас discoverable: Профиль и сообщения в алгоритмах обнаружения fields: name: Пункт diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index daaa5cdf2bcd6f..7389512896ee4a 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -3,7 +3,6 @@ sq: simple_form: hints: account: - attribution_domains: Një për rresht. Kjo mbron nga atribuime të rreme. discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë. display_name: Emri juaj i plotë, ose emri juaj lojcak. fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf. @@ -155,7 +154,6 @@ sq: url: Ku do të dërgohen aktet labels: account: - attribution_domains: Sajte të lejuar t’ju japin hakë discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit fields: name: Etiketë diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 2a15cf3e1a8895..e35eba36c94209 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -3,7 +3,6 @@ sv: simple_form: hints: account: - attribution_domains: En per rad. Skyddar mot falska attributioner. discoverable: Dina offentliga inlägg och din profil kan komma att presenteras eller rekommenderas inom olika områden av Mastodon och din profil kan komma att föreslås till andra användare. display_name: Ditt fullständiga namn eller ditt roliga namn. fields: Din hemsida, ditt pronomen, din ålder, vadhelst du vill. @@ -153,7 +152,6 @@ sv: url: Dit händelser kommer skickas labels: account: - attribution_domains: Webbplatser som får kreditera dig discoverable: Presentera profil och inlägg med upptäcktsalgoritmer fields: name: Etikett diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index e5b6399d0616d1..db9518759a3c66 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -3,7 +3,6 @@ th: simple_form: hints: account: - attribution_domains: หนึ่งรายการต่อบรรทัด ปกป้องจากการระบุแหล่งที่มาที่ผิด discoverable: อาจแสดงหรือแนะนำโพสต์และโปรไฟล์สาธารณะของคุณในพื้นที่ต่าง ๆ ของ Mastodon และอาจเสนอแนะโปรไฟล์ของคุณให้กับผู้ใช้อื่น ๆ display_name: ชื่อเต็มของคุณหรือชื่อแบบสนุกสนานของคุณ fields: หน้าแรก, สรรพนาม, อายุของคุณ สิ่งใดก็ตามที่คุณต้องการ @@ -144,7 +143,6 @@ th: url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง labels: account: - attribution_domains: เว็บไซต์ที่ได้รับอนุญาตให้ให้เครดิตคุณ discoverable: แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ fields: name: ป้ายชื่อ diff --git a/config/locales/simple_form.tok.yml b/config/locales/simple_form.tok.yml index 9eadefd055c083..81c3121f24b1a2 100644 --- a/config/locales/simple_form.tok.yml +++ b/config/locales/simple_form.tok.yml @@ -3,7 +3,6 @@ tok: simple_form: hints: account: - attribution_domains: linja sitelen wan la wan taso o lon. ni la, sona pona pi jan pali li lon. display_name: nimi sina ale anu nimi sina musi. fields: lipu open sina, en nimi pi kon sina, en suli tenpo sina, en ijo ante ale pi wile sina. note: 'sina ken @mu e jan ante, li ken lon e #kulupu toki suli.' diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 74f508d0a52642..7c7c08380bef05 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -3,7 +3,7 @@ tr: simple_form: hints: account: - attribution_domains: Her satırda bir tanesi. Sahte atıflardan korur. + attribution_domains: Her satırda bir tane. Sahte atıflardan korur. discoverable: Herkese açık gönderileriniz ve profiliniz Mastodon'un çeşitli kısımlarında öne çıkarılabilir veya önerilebilir ve profiliniz başka kullanıcılara önerilebilir. display_name: Tam adınız veya kullanıcı adınız. fields: Ana sayfanız, zamirleriniz, yaşınız, istediğiniz herhangi bir şey. diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 78474f53d5574e..4fc8665b91c57b 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,7 +3,6 @@ uk: simple_form: hints: account: - attribution_domains: Один на рядок. Захищає від фальшивих атрибутів. discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам. display_name: Ваше повне ім'я або ваш псевдонім. fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться. @@ -156,7 +155,6 @@ uk: url: Куди надсилатимуться події labels: account: - attribution_domains: Сайти дозволяють вам вказувати ваше авторство discoverable: Функції профілю та дописів у алгоритмах виявлення fields: name: Мітка diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 3292211780777b..84cc4af8173881 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -3,7 +3,6 @@ vi: simple_form: hints: account: - attribution_domains: Mỗi cái một dòng. Bảo vệ khỏi những sự gán ghép sai. discoverable: Hồ sơ và tút công khai của bạn được đề xuất cho những người dùng Mastodon khác. display_name: Tên đầy đủ hoặc biệt danh đều được. fields: Trang blog của bạn, nghề nghiệp, tuổi hoặc bất cứ thứ gì. @@ -156,7 +155,6 @@ vi: url: Nơi những sự kiện được gửi đến labels: account: - attribution_domains: Các trang web được ghi nhận cho bạn discoverable: Cho phép khám phá hồ sơ fields: name: Nhãn diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index d0becfb0689219..0c6be357ced32b 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -3,7 +3,6 @@ zh-CN: simple_form: hints: account: - attribution_domains: 每行一个域名。这样就可以保护作品免受虚假署名。 discoverable: 你的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,你的个人资料可能会被推荐给其他用户。 display_name: 你的全名或昵称。 fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。 @@ -24,11 +23,11 @@ zh-CN: text_html: 可选。你可以使用嘟文格式。你可以预置警告以节省时间 type_html: 用%{acct}选择做什么 types: - disable: 禁止用户使用账户,但不会删除或隐藏账户内容。 + disable: 禁止用户使用账号,但不会删除或隐藏账号内容。 none: 用它来向用户发送警告,不会触发其他操作。 sensitive: 强制将此用户的所有媒体文件标记为敏感内容。 - silence: 阻止用户发送公开嘟文,除了关注者以外,其他人都无法看到他的嘟文和通知。关闭针对此账户的所有举报。 - suspend: 阻止此账户的任何交互并删除其内容。30天内可以撤销操作。关闭针对此账户的所有举报。 + silence: 阻止用户发送公开嘟文,除了关注者以外,其他人都无法看到他的嘟文和通知。关闭针对此账号的所有举报。 + suspend: 阻止此账号的任何交互并删除其内容。30天内可以撤销操作。关闭针对此账号的所有举报。 warning_preset_id: 可选。你可以在预置文本末尾添加自定义文本 announcement: all_day: 如果选中,只有该时间段内的日期会显示。 @@ -41,7 +40,7 @@ zh-CN: defaults: autofollow: 通过邀请链接注册的用户将会自动关注你 avatar: 支持WEBP、PNG、GIF 或 JPG。最大 %{size}。将缩小到 %{dimensions}px - bot: 来自这个账户的绝大多数操作都是自动进行的,并且可能无人监控 + bot: 来自这个账号的绝大多数操作都是自动进行的,并且可能无人监控 context: 过滤规则将被应用到的一个或多个场景 current_password: 为了安全起见,请输入当前账号的密码 current_username: 请输入当前账号的用户名以确认 @@ -75,7 +74,7 @@ zh-CN: filters: action: 选择在嘟文命中过滤规则时要执行的操作 actions: - hide: 彻底隐藏过滤内容,就像它从未存在过一样 + hide: 选择在嘟文命中过滤规则时要执行的操作 warn: 显示带有过滤规则标题的警告,并隐藏过滤内容 form_admin_settings: activity_api_enabled: 本站每周的嘟文数、活跃用户数和新注册用户数 @@ -126,7 +125,7 @@ zh-CN: otp: 输入你手机应用上生成的双因素认证代码,或者任意一个恢复代码: webauthn: 如果是 USB 密钥,请确保将其插入,如有必要,请点击它。 settings: - indexable: 你的账户页可能会出现在Google、Bing等的搜索结果中。 + indexable: 你的个人资料可能会出现在Google、Bing等的搜索结果中。 show_application: 无论如何,你始终可以看到是哪个应用发布了你的嘟文。 tag: name: 你只能改变字母的大小写,让它更易读 @@ -156,13 +155,12 @@ zh-CN: url: 事件将被发往的目的地 labels: account: - attribution_domains: 授权展示你的署名的网站 - discoverable: 在发现算法中展示你的账户与嘟文 + discoverable: 在发现算法中展示你的账号与嘟文 fields: name: 标签 value: 内容 indexable: 将公开嘟文纳入搜索范围 - show_collections: 在账户页显示关注和关注者 + show_collections: 在个人资料显示关注和关注者 unlocked: 自动接受新关注者 account_alias: acct: 处理旧账号 @@ -192,9 +190,9 @@ zh-CN: appeal: text: 说明此结果应当被推翻的理由 defaults: - autofollow: 让被邀请人关注你的账户 + autofollow: 让被邀请人关注你的账号 avatar: 头像 - bot: 这是一个机器人账户 + bot: 这是一个机器人账号 chosen_languages: 过滤语言 confirm_new_password: 确认新密码 confirm_password: 确认密码 @@ -225,7 +223,7 @@ zh-CN: setting_default_privacy: 嘟文默认可见范围 setting_default_sensitive: 始终标记媒体为敏感内容 setting_delete_modal: 在删除嘟文前询问我 - setting_disable_hover_cards: 禁用悬停资料卡预览 + setting_disable_hover_cards: 禁用悬停资料预览 setting_disable_swiping: 禁用滑动动作 setting_display_media: 媒体显示 setting_display_media_default: 默认 @@ -305,7 +303,7 @@ zh-CN: notification_emails: appeal: 有人对审核结果提出申诉 digest: 发送摘要邮件 - favourite: 有用户喜欢了我的嘟文 + favourite: 当有用户喜欢了我的嘟文时,发送电子邮件提醒我 follow: 有人关注了我 follow_request: 有人向我发送了关注请求 mention: 有人提到了我 @@ -323,8 +321,8 @@ zh-CN: hint: 补充信息 text: 规则 settings: - indexable: 允许搜索引擎索引账户页 - show_application: 显示你发嘟所用的应用 + indexable: 允许搜索引擎索引个人资料 + show_application: 显示你发嘟使用的应用 tag: listable: 允许这个话题在用户目录中显示 name: 话题 @@ -346,7 +344,7 @@ zh-CN: time_zone: 时区 user_role: color: 徽章颜色 - highlighted: 在账户页显示角色徽章 + highlighted: 在用户资料中显示角色徽章 name: 名称 permissions_as_keys: 权限 position: 优先级 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 1243807d77d0f0..1861ee1559e400 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -3,7 +3,6 @@ zh-TW: simple_form: hints: account: - attribution_domains: 每行一個。以保護偽造署名。 discoverable: 公開嘟文及個人檔案可能於各 Mastodon 功能中被推薦,並且您的個人檔案可能被推薦至其他使用者。 display_name: 完整名稱或暱稱。 fields: 烘培雞、自我認同代稱、年齡,及任何您想分享的。 @@ -156,7 +155,6 @@ zh-TW: url: 事件會被傳送至何處 labels: account: - attribution_domains: 允許對您予與信譽之網站 discoverable: 於探索演算法中推薦個人檔案及嘟文 fields: name: 標籤 diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 2249875b6d59f7..e6da2ee8d31290 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -23,8 +23,8 @@ zh-CN: admin: account_actions: action: 执行操作 - already_silenced: 此账户已受限。 - already_suspended: 此账户已被封禁。 + already_silenced: 此账号已受限。 + already_suspended: 此账号已被封禁。 title: 对 %{acct} 执行管理操作 account_moderation_notes: create: 新建记录 @@ -86,9 +86,9 @@ zh-CN: title: 位置 login_status: 登录状态 media_attachments: 媒体文件 - memorialize: 设为追悼账户 - memorialized: 已设为追悼账户 - memorialized_msg: 成功将 %{username} 转换为追悼账户 + memorialize: 设为追悼账号 + memorialized: 已设为追悼账号 + memorialized_msg: 成功将 %{username} 转换为追悼账号 moderation: active: 活跃 all: 全部 @@ -113,11 +113,11 @@ zh-CN: protocol: 协议 public: 公开页面 push_subscription_expires: PuSH 订阅过期时间 - redownload: 刷新账户信息 - redownloaded_msg: 成功从来源站点刷新 %{username} 的账户信息 + redownload: 刷新账号信息 + redownloaded_msg: 成功从来源站点刷新 %{username} 的账号信息 reject: 拒绝 rejected_msg: 已拒绝 %{username} 的注册申请 - remote_suspension_irreversible: 此账户的数据已被不可逆转地删除。 + remote_suspension_irreversible: 此账号的数据已被不可逆转地删除。 remote_suspension_reversible_hint_html: 账号已在他们的服务器上封禁,数据将在 %{date} 完全删除。 在此之前,远程服务器仍可恢复此账号,并且没有任何不良影响。 如果你想立即移除该账号的所有数据,可以在下面进行。 remove_avatar: 删除头像 remove_header: 移除封面图 @@ -142,8 +142,8 @@ zh-CN: sensitized: 已标记为敏感内容 shared_inbox_url: 公用收件箱(Shared Inbox)URL show: - created_reports: 这个账户提交的举报 - targeted_reports: 针对这个账户的举报 + created_reports: 这个账号提交的举报 + targeted_reports: 针对这个账号的举报 silence: 隐藏 silenced: 已隐藏 statuses: 嘟文 @@ -209,7 +209,7 @@ zh-CN: enable_relay: 启用中继站 enable_sign_in_token_auth_user: 为用户启用邮件令牌身份验证 enable_user: 启用用户 - memorialize_account: 设为追悼账户 + memorialize_account: 设为追悼账号 promote_user: 指派管理员 publish_terms_of_service: 发布服务条款 reject_appeal: 驳回申诉 @@ -274,7 +274,7 @@ zh-CN: enable_relay_html: "%{name} 启用了中继站 %{target}" enable_sign_in_token_auth_user_html: "%{name} 为 %{target} 启用了邮件令牌身份验证" enable_user_html: "%{name} 将用户 %{target} 设置为允许登录" - memorialize_account_html: "%{name} 将 %{target} 设置为追悼账户" + memorialize_account_html: "%{name} 将 %{target} 设置为追悼账号" promote_user_html: "%{name} 将用户 %{target} 设为管理员" publish_terms_of_service_html: "%{name} 更新了服务条款" reject_appeal_html: "%{name} 驳回了 %{target} 对审核结果的申诉" @@ -397,10 +397,10 @@ zh-CN: confirm: 封禁 permanent_action: 撤销屏蔽不会恢复任何数据或关系。 preamble_html: 你即将封禁 %{domain} 及其子域名上的站点。 - remove_all_data: 这将从你的站点上删除对方站点的账户的全部内容、媒体与个人资料数据。 + remove_all_data: 这将从你的站点上删除对方站点的账号的全部内容、媒体与个人资料数据。 stop_communication: 你的站点将停止与这些站点的通信。 title: 确认屏蔽 %{domain} - undo_relationships: 这将解除你的站点与对方站点的账户之间的任何关注。 + undo_relationships: 这将解除你的站点与对方站点的账号之间的任何关注。 created_msg: 正在执行站点屏蔽 destroyed_msg: 站点屏蔽已被撤销 domain: 域名 @@ -411,9 +411,9 @@ zh-CN: import: 导入 new: create: 添加屏蔽 - hint: 域名屏蔽不会阻止该域名下的账户进入本站的数据库,但是会对来自这个域名的账户自动进行预先设置的管理操作。 + hint: 域名屏蔽不会阻止该域名下的账号进入本站的数据库,但是会对来自这个域名的账号自动进行预先设置的管理操作。 severity: - desc_html: 选择隐藏会将该域名下账户发送的嘟文设置为仅关注者可见;选择封禁会将该域名下账户发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择。 + desc_html: 选择隐藏会将该域名下账号发送的嘟文设置为仅关注者可见;选择封禁会将该域名下账号发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择。 noop: 无 silence: 隐藏 suspend: 封禁 @@ -449,7 +449,7 @@ zh-CN: title: 封禁新的邮箱域名 no_email_domain_block_selected: 没有任何项目被选中,因此未更改邮箱域名屏蔽列表 not_permitted: 未允许 - resolved_dns_records_hint_html: 该域名解析的 MX 记录所指向的域名如下,这些域名被用于接收电子邮件。 即使电子邮件地址域名与 MX 域名不同,屏蔽一个 MX 域名意味着阻止任何使用相同 MX 域名的邮箱地址注册本站账户。 请谨慎操作,不要误屏蔽主要的邮箱提供商。 + resolved_dns_records_hint_html: 该域名解析的 MX 记录所指向的域名如下,这些域名被用于接收电子邮件。 即使电子邮件地址域名与 MX 域名不同,屏蔽一个 MX 域名意味着阻止任何使用相同 MX 域名的邮箱地址注册本站账号。 请谨慎操作,不要误屏蔽主要的邮箱提供商。 resolved_through_html: 通过 %{domain} 解析 title: 被封禁的邮箱域名 export_domain_allows: @@ -468,7 +468,7 @@ zh-CN: title: 导入域名列表 no_file: 没有选择文件 follow_recommendations: - description_html: "“关注推荐”可帮助新用户快速找到有趣的内容。 当用户与他人的互动不足以形成个性化的建议时,就会推荐关注这些账户。推荐会每日更新,基于选定语言的近期最高互动数和最多本站关注者数综合评估得出。" + description_html: "“关注推荐”可帮助新用户快速找到有趣的内容。 当用户与他人的互动不足以形成个性化的建议时,就会推荐关注这些账号。推荐会每日更新,基于选定语言的近期最高互动数和最多本站关注者数综合评估得出。" language: 选择语言 status: 嘟文 suppress: 禁用推荐关注 @@ -599,10 +599,10 @@ zh-CN: mark_as_sensitive_description_html: 被举报的嘟文将被标记为敏感,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。 other_description_html: 查看更多控制该账号行为的选项,并自定义编写与被举报账号的通信。 resolve_description_html: 不会对被举报账号采取任何动作,举报将被关闭,也不会留下处罚记录。 - silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。关闭针对此账户的所有举报。 - suspend_description_html: 该账户及其所有内容将无法访问并最终被删除,且无法与该账户进行互动。 在 30 天内可随时撤销。关闭针对此账户的所有举报。 + silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。关闭针对此账号的所有举报。 + suspend_description_html: 该账号及其所有内容将无法访问并最终被删除,且无法与该账号进行互动。 在 30 天内可随时撤销。关闭针对此账号的所有举报。 actions_description_html: 决定采取何种措施处理此举报。如果对被举报账号采取惩罚性措施,将向其发送一封电子邮件通知。但若选中垃圾信息类别则不会发送通知。 - actions_description_remote_html: 决定采取何种行动来解决此举报。 这只会影响你的服务器如何与该远程账户的通信并处理其内容。 + actions_description_remote_html: 决定采取何种行动来解决此举报。 这只会影响你的服务器如何与该远程账号的通信并处理其内容。 actions_no_posts: 该举报没有相关嘟文可供删除 add_to_report: 添加更多内容到举报 already_suspended_badges: @@ -611,10 +611,10 @@ zh-CN: are_you_sure: 你确定吗? assign_to_self: 接管 assigned: 已接管的管理员 - by_target_domain: 被举报账户的域名 + by_target_domain: 被举报账号的域名 cancel: 取消 category: 类别 - category_description_html: 在与被举报账户的通信时,将引用该账号和/或内容被举报的原因 + category_description_html: 在与被举报账号的通信时,将引用该账号和/或内容被举报的原因 comment: none: 没有 comment_description_html: "%{name} 补充道:" @@ -655,8 +655,8 @@ zh-CN: action_preambles: delete_html: 你即将删除 @%{acct} 的一些嘟文。 这将: mark_as_sensitive_html: 你即将 标记 @%{acct} 的帖一些子为 敏感。这将: - silence_html: 你即将限制 @%{acct} 的账户。 这将: - suspend_html: 你即将暂停 @%{acct} 的账户。 这将: + silence_html: 你即将限制 @%{acct} 的账号。 这将: + suspend_html: 你即将暂停 @%{acct} 的账号。 这将: actions: delete_html: 删除违规嘟文 mark_as_sensitive_html: 将违规嘟文的媒体标记为敏感 @@ -666,7 +666,7 @@ zh-CN: close_reports_html: 将针对 @%{acct}所有举报标记为已解决 delete_data_html: 从现在起 30 天后删除 @%{acct} 的个人资料和内容,除非他们同时解除暂停。 preview_preamble_html: "@%{acct} 将收到包含以下内容的警告:" - record_strike_html: 记录一次针对 @%{acct} 的警示,以帮助你在这个账户上的未来违规事件中得到重视。 + record_strike_html: 记录一次针对 @%{acct} 的警示,以帮助你在这个账号上的未来违规事件中得到重视。 send_email_html: 向 @%{acct} 发送警告邮件 warning_placeholder: 可选的补充理由,以说明调整的情况。 target_origin: 被举报账号的来源 @@ -675,7 +675,7 @@ zh-CN: unknown_action_msg: 未知操作:%{action} unresolved: 未处理 updated_at: 更新时间 - view_profile: 查看账户 + view_profile: 查看资料 roles: add_new: 添加角色 assigned_users: @@ -756,7 +756,7 @@ zh-CN: title: 招牌 captcha_enabled: desc_html: 这依赖于来自hCaptcha的外部脚本,可能会带来安全和隐私问题。此外,这可能使注册过程对某些人(尤其是残疾人)的注册简易程度大幅下降。出于这些原因,请考虑采取其他措施,如基于批准或邀请的注册方式。 - title: 要求新用户输入验证码以确认他们的账户 + title: 要求新用户输入验证码以确认他们的账号 content_retention: danger_zone: 危险操作区 preamble: 控制用户生成的内容在 Mastodon 中如何存储。 @@ -789,7 +789,7 @@ zh-CN: warning_hint: 我们建议使用“注册必须经过批准”,除非你确信你的管理团队能够及时处理骚扰和恶意注册。 security: authorized_fetch: 与外站联合时要求身份验证 - authorized_fetch_hint: 要求外站请求通过验证能够使用户级别与服务器级别的封锁更为严格。然而,这将带来额外的性能负担、减少回复触达范围、并可能导致与一些联邦宇宙服务的兼容性问题。此外,这并不能阻止他人针对性地获取公开嘟文与账户。 + authorized_fetch_hint: 要求外站请求通过验证能够使用户级别与服务器级别的封锁更为严格。然而,这将带来额外的性能负担、减少回复触达范围、并可能导致与一些联邦宇宙服务的兼容性问题。此外,这并不能阻止他人针对性地获取公开嘟文与账号。 authorized_fetch_overridden_hint: 由于此设置被环境变量覆盖,目前无法更改。 federation_authentication: 联合时强制要求身份验证 title: 服务器设置 @@ -811,7 +811,7 @@ zh-CN: statuses: account: 作者 application: 应用 - back_to_account: 返回账户信息页 + back_to_account: 返回账号信息页 back_to_report: 返回举报页 batch: add_to_report: '添加到举报 #%{id}' @@ -861,10 +861,10 @@ zh-CN: elasticsearch_index_mismatch: message_html: Elasticsearch索引映射已过时。请运行tootctl search deploy --only=%{value}。 elasticsearch_preset: - action: 查看文档 + action: 阅读文档 message_html: 你的Elasticsearch集群有多个节点,但Mastodon未配置好使用它们。 elasticsearch_preset_single_node: - action: 查看文档 + action: 阅读文档 message_html: 你的Elasticsearch集群只有一个节点,ES_PRESET应该设置为single_node_cluster。 elasticsearch_reset_chewy: message_html: 你的Elasticsearch系统索引已过时,可能是由于设置更改导致的。请运行tootctl search deploy --reset-chewy命令来更新它。 @@ -978,9 +978,9 @@ zh-CN: allow: 允许嘟文 allow_account: 允许发布者 confirm_allow: 你确定要允许选中的嘟文吗? - confirm_allow_account: 你确定要允许选中的账户吗? + confirm_allow_account: 你确定要允许选中的账号吗? confirm_disallow: 你确定要禁止选中的嘟文吗? - confirm_disallow_account: 你确定要禁止选中的账户吗? + confirm_disallow_account: 你确定要禁止选中的账号吗? description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝个别嘟文。 disallow: 禁止嘟文 disallow_account: 禁止发布者 @@ -1011,7 +1011,7 @@ zh-CN: usage_comparison: 今日被使用 %{today} 次,前一日为 %{yesterday} 次 used_by_over_week: other: 过去一周内被 %{count} 个人使用过 - title: 建议与热门 + title: 推荐与热门 trending: 当前热门 warning_presets: add_new: 添加新条目 @@ -1058,7 +1058,7 @@ zh-CN: body: 新的紧急更新版本Mastodon已经发布,你可能希望尽快更新! subject: "%{instance} 有 Mastodon 的紧急更新!" new_pending_account: - body: 新账户的详细信息如下。你可以批准或拒绝此申请。 + body: 新账号的详细信息如下。你可以批准或拒绝此申请。 subject: "%{instance} 上有新账号 (%{username}) 需要审核" new_report: body: "%{reporter} 举报了用户 %{target}" @@ -1078,8 +1078,8 @@ zh-CN: subject: "%{instance} 上有新热门等待审核" aliases: add_new: 创建别名 - created_msg: 成功创建了一个新别名。你现在可以从旧账户开始迁移了。 - deleted_msg: 成功移除别名。已经无法从该账户移动到此账户了。 + created_msg: 成功创建了一个新别名。你现在可以从旧账号开始迁移了。 + deleted_msg: 成功移除别名。已经无法从该账号移动到此账号了。 empty: 你没有设置别名。 hint_html: 如果你想从另一个账号迁移到这里,可以先在这里创建一个别名。要把旧账号的关注者迁移过来,这一步是必须的。设置别名的操作是无害且可撤销的账号迁移的操作会从旧账号发起。 remove: 取消关联别名 @@ -1100,7 +1100,7 @@ zh-CN: settings: 更改邮件偏好: %{link} unsubscribe: 取消订阅 view: 点此链接查看详情: - view_profile: 查看账户页 + view_profile: 查看个人资料 view_status: 查看嘟文 applications: created: 应用创建成功 @@ -1117,7 +1117,7 @@ zh-CN: hint_html: 只剩最后一件事了!我们需要确认你是一个人类(这样我们才能阻止恶意访问!)。请输入下面的验证码,然后点击“继续”。 title: 安全检查 confirmations: - awaiting_review: 邮箱确认成功!%{domain} 的工作人员正在审核你的注册信息。如果他们批准了你的账户,你将收到一封邮件通知! + awaiting_review: 邮箱确认成功!%{domain} 的工作人员正在审核你的注册信息。如果他们批准了你的账号,你将收到一封邮件通知! awaiting_review_title: 你的注册申请正在审核中 clicking_this_link: 点击此链接 login_link: 登录 @@ -1125,9 +1125,9 @@ zh-CN: redirect_to_app_html: 你应该已经跳转到 %{app_name}。如果没有,请尝试 %{clicking_this_link} 或手动返回 App。 registration_complete: 你在 %{domain} 上的注册现已完成! welcome_title: 欢迎你,%{name}! - wrong_email_hint: 如果这个邮箱地址不正确,你可以在账户设置中更改。 - delete_account: 删除账户 - delete_account_html: 如果你想删除你的账户,请点击此处继续。你需要确认你的操作。 + wrong_email_hint: 如果这个邮箱地址不正确,你可以在账号设置中更改。 + delete_account: 删除账号 + delete_account_html: 如果你想删除你的账号,请点击此处继续。你需要确认你的操作。 description: prefix_invited_by_user: "@%{name} 邀请你加入这个Mastodon服务器!" prefix_sign_up: 现在就注册 Mastodon 吧! @@ -1141,7 +1141,7 @@ zh-CN: log_in_with: 通过外部服务登录 login: 登录 logout: 退出登录 - migrate_account: 迁移到另一个账户 + migrate_account: 迁移到另一个账号 migrate_account_html: 如果你希望引导他人关注另一个账号,请点击这里进行设置。 or_log_in_with: 或通过外部服务登录 progress: @@ -1164,7 +1164,7 @@ zh-CN: preamble_invited: 在继续操作前,请先阅读并同意 %{domain} 管理员设置的基本规则。 title: 一些基本规则。 title_invited: 通过邀请加入 - security: 账户安全 + security: 账号安全 set_new_password: 设置新密码 setup: email_below_hint_html: 请检查你的垃圾邮件文件夹,或请求重新发送邮件。如果你填写的邮箱地址有误,请更正。 @@ -1173,18 +1173,18 @@ zh-CN: new_confirmation_instructions_sent: 你将在几分钟内收到一封带有确认链接的新邮件! title: 请检查你的收件箱 sign_in: - preamble_html: 使用你在 %{domain} 的账户和密码登录。如果你的账户是在其他站点上注册的,你将无法在此登录。 + preamble_html: 使用你在 %{domain} 的账号和密码登录。如果你的账号是在其他站点上注册的,你将无法在此登录。 title: 登录到 %{domain} sign_up: manual_review: 你在 %{domain} 上的注册需要经由管理人员手动审核。 为了帮助我们处理你的注册,请简要说明你为什么想在 %{domain} 上注册。 - preamble: 在这个 Mastodon 站点上注册一个账户,你就可以关注联邦宇宙中的任何人,无论他们的账户在哪里。 + preamble: 在这个 Mastodon 站点上注册一个账号,你就可以关注联邦宇宙中的任何人,无论他们的账号在哪里。 title: 让我们在 %{domain} 上开始。 status: - account_status: 账户状态 + account_status: 账号状态 confirming: 等待完成邮箱地址确认 functional: 你的账号可以正常使用了。 pending: 站务人员正在审核你的申请。这需要花点时间。在申请被批准后,你将收到一封邮件。 - redirecting_to: 你的账户无效,因为它已被设置为跳转到 %{acct} + redirecting_to: 你的账号无效,因为它已被设置为跳转到 %{acct} self_destruct: "%{domain} 即将关闭,你只能获得对你自己的账号的有限访问权限。" view_strikes: 查看针对你账号的处罚记录 too_fast: 表单提交过快,请重试。 @@ -1228,8 +1228,8 @@ zh-CN: challenge_not_passed: 你输入的信息不正确 confirm_password: 输入你当前的密码来验证身份 confirm_username: 输入你的用户名以继续 - proceed: 删除账户 - success_msg: 你的账户已成功删除 + proceed: 删除账号 + success_msg: 你的账号已成功删除 warning: before: 在删除前,请仔细阅读下列说明: caches: 已被其他服务器缓存的内容可能还会保留 @@ -1237,7 +1237,7 @@ zh-CN: email_change_html: 你可以 更改邮箱地址,而无需删除账号 email_contact_html: 如果它还未送达,你可以发邮件给 %{email} 寻求帮助。 email_reconfirmation_html: 如果你没有收到确认邮件,请点击 重新发送 。 - irreversible: 你将无法恢复或重新激活你的账户 + irreversible: 你将无法恢复或重新激活你的账号 more_details_html: 更多细节,请查看 隐私政策 。 username_available: 你的用户名现在又可以使用了 username_unavailable: 你的用户名仍将无法使用 @@ -1247,14 +1247,14 @@ zh-CN: appeal: 申诉 appeal_approved: 此次处罚已申诉成功并不再生效 appeal_rejected: 此次申诉已被驳回 - appeal_submitted_at: 申诉已提交 + appeal_submitted_at: 已提交申诉 appealed_msg: 你的申诉已经提交。如果申诉通过,你将收到通知。 appeals: submit: 提交申诉 approve_appeal: 批准申诉 associated_report: 相关举报 created_at: 日期 - description_html: 以下是针对你的账户采取的行动和警告,已经由 %{instance} 的工作人员发送给你。 + description_html: 以下是针对你的账号采取的行动和警告,已经由 %{instance} 的工作人员发送给你。 recipient: 发送至 reject_appeal: 驳回申诉 status: '嘟文 #%{id}' @@ -1278,7 +1278,7 @@ zh-CN: errors: '400': 你提交的请求无效或格式不正确。 '403': 你没有访问此页面的权限。 - '404': 无法找到你所要访问的页面。 + '404': 无法找到你访问的页面。 '406': 无法以要求的格式显示此页面。 '410': 你要查看的页面已不存在。 '422': @@ -1297,7 +1297,7 @@ zh-CN: archive_takeout: date: 日期 download: 下载你的存档 - hint_html: 你可以请求一份账户数据存档,其中包含你的嘟文和已上传的媒体文件。导出的数据为 ActivityPub 格式,因而可以被兼容的软件读取。每次允许请求存档的间隔至少为 7 天。 + hint_html: 你可以请求一份账号数据存档,其中包含你的嘟文和已上传的媒体文件。导出的数据为 ActivityPub 格式,因而可以被兼容的软件读取。每次允许请求存档的间隔至少为 7 天。 in_progress: 正在准备你的存档…… request: 请求你的存档 size: 大小 @@ -1315,7 +1315,7 @@ zh-CN: hint_html: "什么是精选话题? 它们被显示在你的公开个人资料中的突出位置,人们可以在这些标签下浏览你的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。" filters: contexts: - account: 账户 + account: 个人资料 home: 主页与列表 notifications: 通知 public: 公共时间线 @@ -1389,17 +1389,17 @@ zh-CN: overwrite_long: 将当前记录替换为新记录 overwrite_preambles: blocking_html: - other: 你即将使用来自 %{filename} 的最多 %{count} 个账户替换你的屏蔽列表。 + other: 你即将使用来自 %{filename} 的最多 %{count} 个账号替换你的屏蔽列表。 bookmarks_html: other: 你即将使用来自 %{filename} 的最多 %{count} 条嘟文替换你的收藏列表。 domain_blocking_html: other: 你即将使用来自 %{filename} 的最多 %{count} 个站点域名替换你的站点屏蔽列表。 following_html: - other: 你即将关注来自 %{filename} 的最多 %{count} 个账户,并停止关注其他所有人。 + other: 你即将关注来自 %{filename} 的最多 %{count} 个账号,并停止关注其他所有人。 lists_html: - other: 你即将使用来自 %{filename} 的内容替换你的列表。最多将会有 %{count} 个账户 被添加到新列表。 + other: 你即将使用来自 %{filename} 的内容替换你的列表。最多将会有 %{count} 个账号 被添加到新列表。 muting_html: - other: 你即将使用来自 %{filename} 的最多 %{count} 个账户替换你的已隐藏账户列表。 + other: 你即将使用来自 %{filename} 的最多 %{count} 个账号替换你的已隐藏账号列表。 preambles: blocking_html: other: 你即将屏蔽来自 %{filename} 的最多 %{count} 个账号。 @@ -1410,7 +1410,7 @@ zh-CN: following_html: other: 你即将关注来自 %{filename} 的最多 %{count} 个账号。 lists_html: - other: 你即将从 %{filename} 中添加最多 %{count} 个账户到你的列表中。如果没有可用列表,将创建新的列表。 + other: 你即将从 %{filename} 中添加最多 %{count} 个账号到你的列表中。如果没有可用列表,将创建新的列表。 muting_html: other: 你即将隐藏来自 %{filename} 的最多 %{count} 个账号。 preface: 你可以在此导入你在其他实例导出的数据,比如你所关注或屏蔽的用户列表。 @@ -1424,12 +1424,12 @@ zh-CN: success: 数据上传成功,正在处理中 time_started: 开始于 titles: - blocking: 正在导入被屏蔽的账户 + blocking: 正在导入被屏蔽的账号 bookmarks: 正在导入收藏 domain_blocking: 正在导入站点屏蔽列表 - following: 正在导入关注的账户 + following: 正在导入关注的账号 lists: 导入列表 - muting: 正在导入隐藏的账户 + muting: 正在导入隐藏的账号 type: 导入类型 type_groups: constructive: 关注与收藏 @@ -1486,9 +1486,9 @@ zh-CN: emails: notification_emails: favourite: 嘟文被喜欢邮件通知 - follow: 账户被关注邮件通知 + follow: 账号被关注邮件通知 follow_request: 关注请求邮件通知 - mention: 账户被提及邮件通知 + mention: 账号被提及邮件通知 reblog: 嘟文被转嘟邮件通知 resubscribe_html: 如果你不小心取消了订阅,可以在你的邮件通知设置中重新订阅。 success_html: 你将不会在你的邮箱 %{email} 中收到 %{domain} 上的 Mastodon的 %{type} @@ -1500,14 +1500,14 @@ zh-CN: not_ready: 不能附加还在处理中的文件。请稍后再试! too_many: 最多只能添加 4 张图片 migrations: - acct: 新账户的 用户名@域名 + acct: 新账号的 用户名@域名 cancel: 取消跳转 cancel_explanation: 取消跳转将会重新激活你当前的账号,但是已经迁移到新账号的关注者不会回来。 cancelled_msg: 成功取消跳转 errors: already_moved: 和你已经迁移过的账号相同 missing_also_known_as: 没有引用此账号 - move_to_self: 不能是当前账户 + move_to_self: 不能是当前账号 not_found: 找不到 on_cooldown: 你正处于冷却状态 followers_count: 迁移时的关注者 @@ -1519,14 +1519,14 @@ zh-CN: past_migrations: 迁移记录 proceed_with_move: 移动关注者 redirected_msg: 你的账号现在会跳转至 %{acct} - redirecting_to: 你的账户正在跳转到 %{acct}。 + redirecting_to: 你的账号正在跳转到 %{acct}。 set_redirect: 设置跳转 warning: backreference_required: 新账号必须先引用当前账号 before: 在继续前,请仔细阅读下列说明: cooldown: 移动后会有一个冷却期,在此期间你将无法再次移动 - disabled_account: 此后,你的当前账户将无法使用。但是,你仍然有权导出数据或者重新激活。 - followers: 这步操作将把所有关注者从当前账户移动到新账户 + disabled_account: 此后,你的当前账号将无法使用。但是,你仍然有权导出数据或者重新激活。 + followers: 这步操作将把所有关注者从当前账号移动到新账号 only_redirect_html: 或者,你可以只在你的账号资料上设置一个跳转。 other_data: 不会自动移动其它数据 redirect: 在收到一个跳转通知后,你当前的账号资料将会更新,并被排除在搜索范围外 @@ -1640,7 +1640,7 @@ zh-CN: confirm_remove_selected_followers: 你确定想要取关所选的关注者吗? confirm_remove_selected_follows: 您确定要删除选定的关注者吗? dormant: 休眠 - follow_failure: 无法关注选中的部分账户。 + follow_failure: 无法关注选中的部分账号。 follow_selected_followers: 关注选中的关注者 followers: 关注者 following: 正在关注 @@ -1654,9 +1654,9 @@ zh-CN: remove_selected_domains: 删除在选定站点中的所有关注者 remove_selected_followers: 移除选中的关注者 remove_selected_follows: 取消关注所选用户 - status: 账户状态 + status: 账号状态 remote_follow: - missing_resource: 无法确定你的账户的跳转 URL + missing_resource: 无法确定你的账号的跳转 URL reports: errors: invalid_rules: 没有引用有效的规则 @@ -1698,7 +1698,7 @@ zh-CN: current_session: 当前会话 date: 日期 description: "%{platform} 上的 %{browser}" - explanation: 你的 Mastodon 账户目前已在这些浏览器上登录。 + explanation: 你的 Mastodon 账号目前已在这些浏览器上登录。 ip: IP 地址 platforms: adobe_air: Adobe Air @@ -1717,22 +1717,22 @@ zh-CN: revoke: 注销 revoke_success: 会话注销成功 title: 会话 - view_authentication_history: 查看账户的认证历史 + view_authentication_history: 查看账号的认证历史 settings: account: 账号 - account_settings: 账户设置 + account_settings: 账号设置 aliases: 账号别名 appearance: 外观 authorized_apps: 已授权的应用 back: 返回 Mastodon - delete: 删除账户 + delete: 删除账号 development: 开发 edit_profile: 更改个人资料 export: 导出 featured_tags: 精选话题 import: 导入 import_and_export: 导入与导出 - migrate: 账户迁移 + migrate: 账号迁移 notifications: 邮件通知 preferences: 偏好设置 profile: 个人资料 @@ -1745,12 +1745,12 @@ zh-CN: severed_relationships: download: 下载 (%{count}) event_type: - account_suspension: 封禁账户 (%{target_name}) + account_suspension: 封禁账号 (%{target_name}) domain_block: 封禁服务器 (%{target_name}) user_domain_block: 你屏蔽了 %{target_name} lost_followers: 失去的关注者 lost_follows: 失去的关注 - preamble: 如果你屏蔽了某个站点,或者管理员封禁了某个站点,你可能会丢失一部分关注和关注者。你可以下载联系被中断的账户列表,进行检查并导入到其他站点。 + preamble: 如果你屏蔽了某个站点,或者管理员封禁了某个站点,你可能会丢失一部分关注和关注者。你可以下载联系被中断的账号列表,进行检查并导入到其他站点。 purged: 关于此服务器的信息已被你所在服务器的管理员清除。 type: 事件 statuses: @@ -1782,7 +1782,7 @@ zh-CN: private: 仅关注者 private_long: 只有关注你的用户能看到 public: 公开 - public_long: 所有人可见 + public_long: 主页与列表 unlisted: 悄悄公开 unlisted_long: 对所有人可见,但不出现在公共时间线上 statuses_cleanup: @@ -1799,11 +1799,11 @@ zh-CN: keep_media: 保留带媒体附件的嘟文 keep_media_hint: 不删除任何包含媒体附件的嘟文 keep_pinned: 保留置顶嘟文 - keep_pinned_hint: 不删除你的任何置顶嘟文 + keep_pinned_hint: 不会删除你的任何置顶嘟文 keep_polls: 保留投票 keep_polls_hint: 不删除你的任何投票 - keep_self_bookmark: 保存你收藏的的嘟文 - keep_self_bookmark_hint: 不删除你收藏的嘟文 + keep_self_bookmark: 保存被你加入书签的嘟文 + keep_self_bookmark_hint: 如果你已将自己的嘟文添加书签,就不会删除这些嘟文 keep_self_fav: 保留你喜欢的嘟文 keep_self_fav_hint: 如果你喜欢了自己的嘟文,则不会删除这些嘟文 min_age: @@ -1852,19 +1852,19 @@ zh-CN: enabled: 已启用双因素认证 enabled_success: 已成功启用双因素认证 generate_recovery_codes: 生成恢复代码 - lost_recovery_codes: 如果你的手机不慎丢失,你可以使用恢复代码来重新获得对账户的访问权。如果你遗失了恢复代码,可以在此处重新生成。之前使用的恢复代码将会失效。 + lost_recovery_codes: 如果你的手机不慎丢失,你可以使用恢复代码来重新获得对账号的访问权。如果你遗失了恢复代码,可以在此处重新生成。之前使用的恢复代码将会失效。 methods: 双因素认证方式 otp: 身份验证应用 recovery_codes: 备份恢复代码 recovery_codes_regenerated: 恢复代码重新生成成功 - recovery_instructions_html: 如果你的手机无法使用,你可以使用下列任意一个恢复代码来重新获得对账户的访问权。请妥善保管好你的恢复代码(例如,你可以将它们打印出来,然后和其他重要的文件放在一起)。 + recovery_instructions_html: 如果你的手机无法使用,你可以使用下列任意一个恢复代码来重新获得对账号的访问权。请妥善保管好你的恢复代码(例如,你可以将它们打印出来,然后和其他重要的文件放在一起)。 webauthn: 安全密钥 user_mailer: appeal_approved: - action: 账户设置 + action: 账号设置 explanation: 你于 %{appeal_date} 对 %{strike_date} 在你账号上做出的处罚提出的申诉已被批准,你的账号已回到正常状态。 subject: 你于 %{date} 提出的申诉已被批准 - subtitle: 你的账户已再次回到良好状态。 + subtitle: 你的账号已再次回到良好状态。 title: 申诉已批准 appeal_rejected: explanation: 你于 %{appeal_date} 对 %{strike_date} 在你账号上做出的处罚提出的申诉已被驳回。 @@ -1872,13 +1872,13 @@ zh-CN: subtitle: 你的申诉已被驳回。 title: 申诉已驳回 backup_ready: - explanation: 你之前请求为你的 Mastodon 账户创建一份完整的备份。 + explanation: 你之前请求为你的 Mastodon 账号创建一份完整的备份。 extra: 现在它可以下载了! subject: 你的存档已经准备完毕 title: 存档导出 failed_2fa: details: 以下是该次登录尝试的详情: - explanation: 有人试图登录到你的账户,但提供了无效的辅助认证因子。 + explanation: 有人试图登录到你的账号,但提供了无效的辅助认证因子。 further_actions_html: 如果这不是你所为,你的密码可能已经泄露,建议你立即 %{action} 。 subject: 辅助认证失败 title: 辅助认证失败 @@ -1890,7 +1890,7 @@ zh-CN: subject: 已有新 IP 地址访问了你的账号 title: 一次新登录 terms_of_service_changed: - agreement: 继续使用你在 %{domain} 的账户即表示您同意这些条款。如果你不同意更新后的条款,你可以随时删除账户以终止与 %{domain} 的协议。 + agreement: 继续使用你在 %{domain} 的账号即表示您同意这些条款。如果你不同意更新后的条款,你可以随时删除账号以终止与 %{domain} 的协议。 changelog: 本次更新的要点如下: description: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看变更后的服务条款: description_html: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看变更后的服务条款。 @@ -1906,28 +1906,28 @@ zh-CN: violation: 内容违反了以下社区准则 explanation: delete_statuses: 你的一些嘟文被发现违反了一条或多条社区准则,并已被 %{instance} 的管理员删除。 - disable: 你不能再使用你的账户,但你的个人资料和其他数据保持不变。你可以请求数据备份,更改账户设置或删除账户。 + disable: 你不能再使用你的账号,但你的个人资料和其他数据保持不变。你可以请求数据备份,更改账号设置或删除账号。 mark_statuses_as_sensitive: 你的一些嘟文已经被 %{instance} 管理员标记为敏感内容。这意味着别人需要在嘟文中点击媒体,才能显示媒体预览。你可以在今后发布嘟文时自行将媒体标记为敏感内容。 sensitive: 即刻起,你上传的所有媒体文件都将被标记为敏感内容并隐藏,在点击警告后才能查看。 silence: 你可以继续使用你的账号,但只有已关注你的人才能在看到你在此服务器上的嘟文,并且你会被排除在各类公共列表之外。其他用户仍可以手动关注你。 - suspend: 你不能再使用你的账户,并且你的个人资料和其他数据都将无法访问。在大约30天内,你仍可以登录并请求数据备份,之后相关数据将被完全删除。我们会保留一些基础数据以避免封禁失效。 + suspend: 你不能再使用你的账号,并且你的个人资料和其他数据都将无法访问。在大约30天内,你仍可以登录并请求数据备份,之后相关数据将被完全删除。我们会保留一些基础数据以避免封禁失效。 reason: 理由: statuses: 被引用的嘟文: subject: delete_statuses: 你在 %{acct} 的嘟文已被删除 - disable: 你的账户 %{acct} 已被冻结 + disable: 你的账号 %{acct} 已被冻结 mark_statuses_as_sensitive: 你在 %{acct} 的嘟文已被标记为敏感内容 none: 对 %{acct} 的警告 sensitive: 你在 %{acct} 的嘟文今后将被标记为敏感内容 - silence: 你的账户 %{acct} 已被隐藏 - suspend: 你的账户 %{acct} 已被封禁 + silence: 你的账号 %{acct} 已被隐藏 + suspend: 你的账号 %{acct} 已被封禁 title: delete_statuses: 嘟文已删除 disable: 账号已冻结 mark_statuses_as_sensitive: 嘟文已被标记为敏感内容 none: 警示 - sensitive: 账户已被标记为敏感内容 - silence: 账户被隐藏 + sensitive: 账号已被标记为敏感内容 + silence: 账号被隐藏 suspend: 账号被封禁 welcome: apps_android_action: 从 Google Play 下载 @@ -1952,7 +1952,7 @@ zh-CN: follow_action: 关注 follow_step: 关注有趣的人,这就是 Mastodon 的意义所在。 follow_title: 个性化你的主页动态 - follows_subtitle: 关注知名账户 + follows_subtitle: 关注知名账号 follows_title: 推荐关注 follows_view_more: 查看更多可关注的人 hashtags_recent_count: @@ -1971,12 +1971,12 @@ zh-CN: title: "%{name},欢迎你的加入!" users: follow_limit_reached: 你不能关注超过 %{limit} 个人 - go_to_sso_account_settings: 转到您的身份提供商进行账户设置 + go_to_sso_account_settings: 转到您的身份提供商进行账号设置 invalid_otp_token: 输入的双因素认证代码无效 otp_lost_help_html: 如果你不慎丢失了所有的代码,请联系 %{email} 寻求帮助 rate_limited: 验证尝试次数过多,请稍后再试。 seamless_external_login: 你通过外部服务登录,因此密码和邮件设置不可用。 - signed_in_as: 当前登录的账户: + signed_in_as: 当前登录的账号: verification: extra_instructions_html: 提示:你网站上的链接可能是不可见的。重要的部分是 rel="me",它可以防止在具有用户生成内容的网站上冒充身份。你甚至可以在页面头部使用 link 标签而不是 a,但 HTML 必须能够在不执行 JavaScript 的情况下访问。 here_is_how: 具体方法如下: From 5be938e6619736018cc2a1f13fced461c2308bec Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 17 Jan 2025 05:06:52 -0500 Subject: [PATCH 12/29] Migrate visibility interaction checks on statuses to request spec (#33622) --- spec/controllers/statuses_controller_spec.rb | 50 --------------- spec/requests/statuses_spec.rb | 67 ++++++++++++++++++++ 2 files changed, 67 insertions(+), 50 deletions(-) create mode 100644 spec/requests/statuses_spec.rb diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb index e14a7f6916d0d8..e589693b17f179 100644 --- a/spec/controllers/statuses_controller_spec.rb +++ b/spec/controllers/statuses_controller_spec.rb @@ -9,45 +9,6 @@ let(:account) { Fabricate(:account) } let(:status) { Fabricate(:status, account: account) } - context 'when account is permanently suspended' do - before do - account.suspend! - account.deletion_request.destroy - - get :show, params: { account_username: account.username, id: status.id } - end - - it 'returns http gone' do - expect(response).to have_http_status(410) - end - end - - context 'when account is temporarily suspended' do - before do - account.suspend! - - get :show, params: { account_username: account.username, id: status.id } - end - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - context 'when status is a reblog' do - let(:original_account) { Fabricate(:account, domain: 'example.com') } - let(:original_status) { Fabricate(:status, account: original_account, url: 'https://example.com/123') } - let(:status) { Fabricate(:status, account: account, reblog: original_status) } - - before do - get :show, params: { account_username: status.account.username, id: status.id } - end - - it 'redirects to the original status' do - expect(response).to redirect_to(original_status.url) - end - end - context 'when status is public' do before do get :show, params: { account_username: status.account.username, id: status.id, format: format } @@ -142,17 +103,6 @@ sign_in(user) end - context 'when account blocks user' do - before do - account.block!(user.account) - get :show, params: { account_username: status.account.username, id: status.id } - end - - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end - context 'when status is public' do before do get :show, params: { account_username: status.account.username, id: status.id, format: format } diff --git a/spec/requests/statuses_spec.rb b/spec/requests/statuses_spec.rb new file mode 100644 index 00000000000000..f86d67d405a19f --- /dev/null +++ b/spec/requests/statuses_spec.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Statuses' do + describe 'GET /@:account_username/:id' do + let(:account) { Fabricate(:account) } + let(:status) { Fabricate(:status, account: account) } + + context 'when signed out' do + context 'when account is permanently suspended' do + before do + account.suspend! + account.deletion_request.destroy + end + + it 'returns http gone' do + get "/@#{account.username}/#{status.id}" + + expect(response) + .to have_http_status(410) + end + end + + context 'when account is temporarily suspended' do + before { account.suspend! } + + it 'returns http forbidden' do + get "/@#{account.username}/#{status.id}" + + expect(response) + .to have_http_status(403) + end + end + + context 'when status is a reblog' do + let(:original_account) { Fabricate(:account, domain: 'example.com') } + let(:original_status) { Fabricate(:status, account: original_account, url: 'https://example.com/123') } + let(:status) { Fabricate(:status, account: account, reblog: original_status) } + + it 'redirects to the original status' do + get "/@#{status.account.username}/#{status.id}" + + expect(response) + .to redirect_to(original_status.url) + end + end + end + + context 'when signed in' do + let(:user) { Fabricate(:user) } + + before { sign_in(user) } + + context 'when account blocks user' do + before { account.block!(user.account) } + + it 'returns http not found' do + get "/@#{status.account.username}/#{status.id}" + + expect(response) + .to have_http_status(404) + end + end + end + end +end From b37e48d5c86e439f83d9316907567ec3d26213a8 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 17 Jan 2025 11:33:03 +0100 Subject: [PATCH 13/29] Revert "Update dependency aws-sdk-s3 to v1.178.0 (#33611)" (#33628) --- Gemfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2da96ca48637f5..54e43482e3d4df 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -94,20 +94,20 @@ GEM ast (2.4.2) attr_required (1.0.2) aws-eventstream (1.3.0) - aws-partitions (1.1038.0) - aws-sdk-core (3.216.0) + aws-partitions (1.1032.0) + aws-sdk-core (3.214.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.97.0) - aws-sdk-core (~> 3, >= 3.216.0) + aws-sdk-kms (1.96.0) + aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.178.0) - aws-sdk-core (~> 3, >= 3.216.0) + aws-sdk-s3 (1.177.0) + aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.11.0) + aws-sigv4 (1.10.1) aws-eventstream (~> 1, >= 1.0.2) azure-blob (0.5.4) rexml From ab4874ff13795cba957ae14a143dcf7fb5311c22 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 17 Jan 2025 11:42:52 +0100 Subject: [PATCH 14/29] Further harden the warnings against changing encryption secrets (#33631) --- .env.production.sample | 2 +- lib/tasks/db.rake | 25 ++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/.env.production.sample b/.env.production.sample index 3dd66abae4fc06..1faaf5b57cac22 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -50,7 +50,7 @@ OTP_SECRET= # Must be available (and set to same values) for all server processes # These are private/secret values, do not share outside hosting environment # Use `bin/rails db:encryption:init` to generate fresh secrets -# Do not change these secrets once in use, as this would cause data loss and other issues +# Do NOT change these secrets once in use, as this would cause data loss and other issues # ------------------ # ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= # ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 3288e72d46c875..f261041901b778 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -11,16 +11,35 @@ namespace :db do ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY - ).any? { |key| ENV.key?(key) } + ).any? { |key| ENV[key].present? } + unless ENV['IGNORE_ALREADY_SET_SECRETS'] == 'true' + puts <<~MSG + Secrets for this server have already been set, this step can likely be ignored! + In the unlikely event you need to generate new secrets, re-run this command with `IGNORE_ALREADY_SET_SECRETS=true`. + MSG + + next + end + pastel = Pastel.new puts pastel.red(<<~MSG) - WARNING: It looks like encryption secrets have already been set. Please ensure you are not changing secrets for a Mastodon installation that already uses them, as this will cause data loss and other issues that are difficult to recover from. + WARNING: It looks like encryption secrets have already been set. + WARNING: Ensure you are not changing secrets for a Mastodon installation that already uses them, as this will cause data loss and other issues that are difficult to recover from. + WARNING: Only proceed if you are absolutely sure of what you are doing! + MSG + + puts <<~MSG + If you are sure of what you are doing, add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} + MSG + else + puts <<~MSG + Add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} MSG end puts <<~MSG - Add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} + # Do NOT change these variables once they are set ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=#{SecureRandom.alphanumeric(32)} ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=#{SecureRandom.alphanumeric(32)} ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=#{SecureRandom.alphanumeric(32)} From bc63f2b908788c880e7d827d219b0ee79f4d8061 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 17 Jan 2025 10:38:06 -0500 Subject: [PATCH 15/29] Update CONTRIBUTING doc with various clarifications (#33517) --- CONTRIBUTING.md | 58 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4a3825484e2ae2..6bdacab4a76b60 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,30 +9,51 @@ You can contribute in the following ways: - Contributing code to Mastodon by fixing bugs or implementing features - Improving the documentation -If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](https://opencollective.com/mastodon). - Please review the org-level [contribution guidelines] for high-level acceptance criteria guidance and the [DEVELOPMENT] guide for environment-specific details. -[contribution guidelines]: https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md - ## API Changes and Additions -Please note that any changes or additions made to the API should have an accompanying pull request on [our documentation repository](https://github.com/mastodon/documentation). +Any changes or additions made to the API should have an accompanying pull +request on our [documentation repository]. -## Bug reports +## Bug Reports -Bug reports and feature suggestions must use descriptive and concise titles and be submitted to [GitHub Issues](https://github.com/mastodon/mastodon/issues). Please use the search function to make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected. +Bug reports and feature suggestions must use descriptive and concise titles and +be submitted to [GitHub Issues]. Please use the search function to make sure +there are not duplicate bug reports or feature requests. ## Translations -You can submit translations via [Crowdin](https://crowdin.com/project/mastodon). They are periodically merged into the codebase. +Translations are community contributed via [Crowdin]. They are periodically +reviewed and merged into the codebase. [![Crowdin](https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg)](https://crowdin.com/project/mastodon) -## Pull requests +## Pull Requests + +### Size and Scope + +Our time is limited and PRs making large, unsolicited changes are unlikely to +get a response. Changes which link to an existing confirmed issue, or which come +from a "help wanted" issue or other request are more likely to be reviewed. -**Please use clean, concise titles for your pull requests.** Unless the pull request is about refactoring code, updating dependencies or other internal tasks, assume that the person reading the pull request title is not a programmer or Mastodon developer, but instead a Mastodon user or server administrator, and **try to describe your change or fix from their perspective**. We use commit squashing, so the final commit in the main branch will carry the title of the pull request, and commits from the main branch are fed into the changelog. The changelog is separated into [keepachangelog.com categories](https://keepachangelog.com/en/1.0.0/), and while that spec does not prescribe how the entries ought to be named, for easier sorting, start your pull request titles using one of the verbs "Add", "Change", "Deprecate", "Remove", or "Fix" (present tense). +The smaller and more narrowly focused the changes in a PR are, the easier they +are to review and potentially merge. If the change only makes sense in some +larger context of future ongoing work, note that in the description, but still +aim to keep each distinct PR to a "smallest viable change" chunk of work. + +### Description of Changes + +Unless the Pull Request is about refactoring code, updating dependencies or +other internal tasks, assume that the audience are not developers, but a +Mastodon user or server admin, and try to describe it from their perspective. + +The final commit in the main branch will carry the title from the PR. The main +branch is then fed into the changelog and ultimately into release notes. We try +to follow the [keepachangelog] spec, and while that does not prescribe how +exactly the entries ought to be named, starting titles using one of the verbs +"Add", "Change", "Deprecate", "Remove", or "Fix" (present tense) is helpful. Example: @@ -40,18 +61,25 @@ Example: | ------------------------------------ | ------------------------------------------------------------- | | Fixed NoMethodError in RemovalWorker | Fix nil error when removing statuses caused by race condition | -It is not always possible to phrase every change in such a manner, but it is desired. +### Technical Requirements -**The smaller the set of changes in the pull request is, the quicker it can be reviewed and merged.** Splitting tasks into multiple smaller pull requests is often preferable. - -**Pull requests that do not pass automated checks may not be reviewed**. In particular, you need to keep in mind: +Pull requests that do not pass automated checks on CI may not be reviewed. In +particular, please keep in mind: - Unit and integration tests (rspec, jest) - Code style rules (rubocop, eslint) - Normalization of locale files (i18n-tasks) +- Relevant accessibility or performance concerns ## Documentation -The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to mastodon/documentation](https://github.com/mastodon/documentation). +The [Mastodon documentation] is a statically generated site that contains guides +and API docs. Improvements are made via PRs to the [documentation repository]. +[contribution guidelines]: https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md +[Crowdin]: https://crowdin.com/project/mastodon [DEVELOPMENT]: docs/DEVELOPMENT.md +[documentation repository]: https://github.com/mastodon/documentation +[GitHub Issues]: https://github.com/mastodon/mastodon/issues +[keepachangelog]: https://keepachangelog.com/en/1.0.0/ +[Mastodon documentation]: https://docs.joinmastodon.org From 4bd969e4bb54297981d385903bf8a4348b394f09 Mon Sep 17 00:00:00 2001 From: Nicholas La Roux Date: Sat, 18 Jan 2025 00:53:32 +0900 Subject: [PATCH 16/29] Fix broken `CONTRIBUTING` link in `DEVELOPMENT` (#33637) --- docs/DEVELOPMENT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 39f57dd40235e0..bbbad6f1e1d51a 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -67,7 +67,7 @@ development environment configured with the software needed for this project. - On the _Ports_ tab "stream" setting change _Port visibility_ → _Public_ [codespace]: https://codespaces.new/mastodon/mastodon?quickstart=1&devcontainer_path=.devcontainer%2Fcodespaces%2Fdevcontainer.json -[CONTRIBUTING]: CONTRIBUTING.md +[CONTRIBUTING]: ../CONTRIBUTING.md [Dev Container extension]: https://containers.dev/supporting#dev-containers [Development Containers]: https://containers.dev/supporting [Docker]: https://docs.docker.com From 329a9e1ac1263059669695df00c9ad4291966308 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 09:59:23 +0100 Subject: [PATCH 17/29] New Crowdin Translations (automated) (#33643) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/en-GB.json | 30 ++++++++++++ app/javascript/mastodon/locales/eu.json | 34 +++++++++++++ app/javascript/mastodon/locales/ia.json | 2 +- app/javascript/mastodon/locales/nan.json | 27 +++++++++++ app/javascript/mastodon/locales/uk.json | 10 ++-- config/locales/activerecord.en-GB.yml | 7 +++ config/locales/activerecord.eu.yml | 2 + config/locales/doorkeeper.eu.yml | 3 ++ config/locales/en-GB.yml | 46 ++++++++++++++++++ config/locales/eu.yml | 14 ++++++ config/locales/fi.yml | 2 +- config/locales/simple_form.ca.yml | 2 + config/locales/simple_form.da.yml | 2 + config/locales/simple_form.de.yml | 2 + config/locales/simple_form.en-GB.yml | 26 ++++++++++ config/locales/simple_form.eo.yml | 2 + config/locales/simple_form.es-AR.yml | 2 + config/locales/simple_form.es-MX.yml | 2 + config/locales/simple_form.es.yml | 2 + config/locales/simple_form.eu.yml | 17 +++++++ config/locales/simple_form.fi.yml | 2 + config/locales/simple_form.fo.yml | 2 + config/locales/simple_form.fr-CA.yml | 2 + config/locales/simple_form.fr.yml | 2 + config/locales/simple_form.gl.yml | 2 + config/locales/simple_form.he.yml | 2 + config/locales/simple_form.hu.yml | 2 + config/locales/simple_form.ia.yml | 56 +++++++++++----------- config/locales/simple_form.is.yml | 2 + config/locales/simple_form.it.yml | 2 + config/locales/simple_form.pt-PT.yml | 2 + config/locales/simple_form.sq.yml | 2 + config/locales/simple_form.uk.yml | 3 +- config/locales/simple_form.vi.yml | 2 + config/locales/simple_form.zh-TW.yml | 2 + config/locales/uk.yml | 2 +- 36 files changed, 285 insertions(+), 36 deletions(-) diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 5ad52a2ed21188..23293271f8b8bb 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -103,6 +103,7 @@ "annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag", "annual_report.summary.most_used_hashtag.none": "None", "annual_report.summary.new_posts.new_posts": "new posts", + "annual_report.summary.percentile.text": "That puts you in the topof {domain} users.", "annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.", "annual_report.summary.thanks": "Thanks for being part of Mastodon!", "attachments_list.unprocessed": "(unprocessed)", @@ -128,6 +129,7 @@ "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", + "bundle_modal_error.message": "Something went wrong while loading this screen.", "bundle_modal_error.retry": "Try again", "closed_registrations.other_server_instructions": "Since Mastodon is decentralised, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", @@ -203,6 +205,9 @@ "confirmations.edit.confirm": "Edit", "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.edit.title": "Overwrite post?", + "confirmations.follow_to_list.confirm": "Follow and add to list", + "confirmations.follow_to_list.message": "You need to be following {name} to add them to a list.", + "confirmations.follow_to_list.title": "Follow user?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.title": "Log out?", @@ -234,6 +239,10 @@ "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being shared the most on the Fediverse today. Newer news stories posted by more different people are ranked higher.", + "dismissable_banner.explore_statuses": "These posts from across the Fediverse are gaining traction today. Newer posts with more boosts and favourites are ranked higher.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction on the Fediverse today. Hashtags that are used by more different people are ranked higher.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on the Fediverse that people on {domain} follow.", "domain_block_modal.block": "Block server", "domain_block_modal.block_account_instead": "Block @{name} instead", "domain_block_modal.they_can_interact_with_old_posts": "People from this server can interact with your old posts.", @@ -353,8 +362,10 @@ "footer.privacy_policy": "Privacy policy", "footer.source_code": "View source code", "footer.status": "Status", + "footer.terms_of_service": "Terms of service", "generic.saved": "Saved", "getting_started.heading": "Getting started", + "hashtag.admin_moderation": "Open moderation interface for #{name}", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -396,6 +407,13 @@ "ignore_notifications_modal.not_followers_title": "Ignore notifications from people not following you?", "ignore_notifications_modal.not_following_title": "Ignore notifications from people you don't follow?", "ignore_notifications_modal.private_mentions_title": "Ignore notifications from unsolicited Private Mentions?", + "interaction_modal.action.favourite": "To continue, you need to favourite from your account.", + "interaction_modal.action.follow": "To continue, you need to follow from your account.", + "interaction_modal.action.reblog": "To continue, you need to reblog from your account.", + "interaction_modal.action.reply": "To continue, you need to reply from your account.", + "interaction_modal.action.vote": "To continue, you need to vote from your account.", + "interaction_modal.go": "Go", + "interaction_modal.no_account_yet": "Don't have an account yet?", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", "interaction_modal.title.favourite": "Favourite {name}'s post", @@ -403,6 +421,7 @@ "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "interaction_modal.title.vote": "Vote in {name}'s poll", + "interaction_modal.username_prompt": "E.g. {example}", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -438,6 +457,7 @@ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", "keyboard_shortcuts.toggle_sensitivity": "Show/hide media", "keyboard_shortcuts.toot": "to start a brand new post", + "keyboard_shortcuts.translate": "to translate a post", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "Move up in the list", "lightbox.close": "Close", @@ -474,6 +494,7 @@ "lists.replies_policy.list": "Members of the list", "lists.replies_policy.none": "No one", "lists.save": "Save", + "lists.search": "Search", "lists.show_replies_to": "Include replies from list members to", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading…", @@ -527,6 +548,8 @@ "notification.annual_report.view": "View #Wrapstodon", "notification.favourite": "{name} favourited your post", "notification.favourite.name_and_others_with_link": "{name} and {count, plural, one {# other} other {# others}} favourited your post", + "notification.favourite_pm": "{name} favourited your private mention", + "notification.favourite_pm.name_and_others_with_link": "{name} and {count, plural, one {# other} other {# others}} favourited your private mention", "notification.follow": "{name} followed you", "notification.follow.name_and_others": "{name} and {count, plural, one {# other} other {# others}} followed you", "notification.follow_request": "{name} has requested to follow you", @@ -673,6 +696,8 @@ "privacy_policy.title": "Privacy Policy", "recommended": "Recommended", "refresh": "Refresh", + "regeneration_indicator.please_stand_by": "Please stand by.", + "regeneration_indicator.preparing_your_home_feed": "Preparing your home feed…", "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", @@ -756,8 +781,11 @@ "search_results.accounts": "Profiles", "search_results.all": "All", "search_results.hashtags": "Hashtags", + "search_results.no_results": "No results.", + "search_results.no_search_yet": "Try searching for posts, profiles or hashtags.", "search_results.see_all": "See all", "search_results.statuses": "Posts", + "search_results.title": "Search for \"{q}\"", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", @@ -809,6 +837,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.remove_favourite": "Remove from favourites", "status.replied_in_thread": "Replied in thread", "status.replied_to": "Replied to {name}", "status.reply": "Reply", @@ -830,6 +859,7 @@ "subscribed_languages.target": "Change subscribed languages for {target}", "tabs_bar.home": "Home", "tabs_bar.notifications": "Notifications", + "terms_of_service.title": "Terms of Service", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 094b33e220bf68..8f6855c377ab86 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -87,6 +87,16 @@ "alert.unexpected.title": "Ene!", "alt_text_badge.title": "Testu alternatiboa", "announcement.announcement": "Iragarpena", + "annual_report.summary.followers.followers": "jarraitzaileak", + "annual_report.summary.followers.total": "{count} guztira", + "annual_report.summary.highlighted_post.by_favourites": "egindako bidalketa gogokoena", + "annual_report.summary.highlighted_post.by_reblogs": "egindako bidalketa zabalduena", + "annual_report.summary.highlighted_post.by_replies": "erantzun gehien izan dituen bidalketa", + "annual_report.summary.most_used_app.most_used_app": "app erabiliena", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "traola erabiliena", + "annual_report.summary.most_used_hashtag.none": "Bat ere ez", + "annual_report.summary.new_posts.new_posts": "bidalketa berriak", + "annual_report.summary.thanks": "Eskerrik asko Mastodonen parte izateagatik!", "attachments_list.unprocessed": "(prozesatu gabe)", "audio.hide": "Ezkutatu audioa", "block_modal.remote_users_caveat": "{domain} zerbitzariari zure erabakia errespeta dezan eskatuko diogu. Halere, araua beteko den ezin da bermatu, zerbitzari batzuk modu desberdinean kudeatzen baitituzte blokeoak. Baliteke argitalpen publikoak saioa hasi ez duten erabiltzaileentzat ikusgai egotea.", @@ -120,13 +130,16 @@ "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", + "column.create_list": "Sortu zerrenda", "column.direct": "Aipamen pribatuak", "column.directory": "Arakatu profilak", "column.domain_blocks": "Ezkutatutako domeinuak", + "column.edit_list": "Editatu zerrenda", "column.favourites": "Gogokoak", "column.firehose": "Zuzeneko jarioak", "column.follow_requests": "Jarraitzeko eskaerak", "column.home": "Hasiera", + "column.list_members": "Kudeatu zerrrendako partaideak", "column.lists": "Zerrendak", "column.mutes": "Mutututako erabiltzaileak", "column.notifications": "Jakinarazpenak", @@ -139,6 +152,7 @@ "column_header.pin": "Finkatu", "column_header.show_settings": "Erakutsi ezarpenak", "column_header.unpin": "Desfinkatu", + "column_search.cancel": "Utzi", "column_subheading.settings": "Ezarpenak", "community.column_settings.local_only": "Lokala soilik", "community.column_settings.media_only": "Edukiak soilik", @@ -157,6 +171,7 @@ "compose_form.poll.duration": "Inkestaren iraupena", "compose_form.poll.multiple": "Aukera aniza", "compose_form.poll.option_placeholder": "{number}. aukera", + "compose_form.poll.single": "Aukera bakarra", "compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko", "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko", "compose_form.poll.type": "Estiloa", @@ -198,6 +213,7 @@ "confirmations.unfollow.title": "Erabiltzailea jarraitzeari utzi?", "content_warning.hide": "Tuta ezkutatu", "content_warning.show": "Erakutsi hala ere", + "content_warning.show_more": "Erakutsi gehiago", "conversation.delete": "Ezabatu elkarrizketa", "conversation.mark_as_read": "Markatu irakurrita bezala", "conversation.open": "Ikusi elkarrizketa", @@ -298,6 +314,7 @@ "filter_modal.select_filter.subtitle": "Hautatu lehendik dagoen kategoria bat edo sortu berria", "filter_modal.select_filter.title": "Iragazi bidalketa hau", "filter_modal.title.status": "Iragazi bidalketa bat", + "filter_warning.matches_filter": "“{title}” iragazkiarekin bat dator", "filtered_notifications_banner.pending_requests": "Ezagutu dezakezun {count, plural, =0 {inoren} one {pertsona baten} other {# pertsonen}}", "filtered_notifications_banner.title": "Iragazitako jakinarazpenak", "firehose.all": "Guztiak", @@ -329,8 +346,10 @@ "footer.privacy_policy": "Pribatutasun politika", "footer.source_code": "Ikusi iturburu kodea", "footer.status": "Egoera", + "footer.terms_of_service": "Erabilera baldintzak", "generic.saved": "Gordea", "getting_started.heading": "Menua", + "hashtag.admin_moderation": "#{name}-(r)en moderazio-interfazea ireki", "hashtag.column_header.tag_mode.all": "eta {osagarria}", "hashtag.column_header.tag_mode.any": "edo {osagarria}", "hashtag.column_header.tag_mode.none": "gabe {osagarria}", @@ -372,12 +391,15 @@ "ignore_notifications_modal.not_followers_title": "Jarraitzen ez zaituzten pertsonen jakinarazpenei ez ikusiarena egin?", "ignore_notifications_modal.not_following_title": "Jarraitzen ez dituzun pertsonen jakinarazpenei ez ikusiarena egin?", "ignore_notifications_modal.private_mentions_title": "Eskatu gabeko aipamen pribatuen jakinarazpenei ez ikusiarena egin?", + "interaction_modal.go": "Joan", + "interaction_modal.no_account_yet": "Ez al duzu konturik oraindik?", "interaction_modal.on_another_server": "Beste zerbitzari batean", "interaction_modal.on_this_server": "Zerbitzari honetan", "interaction_modal.title.favourite": "Egin gogoko {name}(r)en bidalketa", "interaction_modal.title.follow": "Jarraitu {name}(r)i", "interaction_modal.title.reblog": "Bultzatu {name}(r)en bidalketa", "interaction_modal.title.reply": "Erantzun {name}(r)en bidalketari", + "interaction_modal.username_prompt": "Adib. {example}", "intervals.full.days": "{number, plural, one {egun #} other {# egun}}", "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}", "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}", @@ -423,7 +445,13 @@ "link_preview.author": "Egilea: {name}", "link_preview.more_from_author": "{name} erabiltzaileaz gehiago jakin", "link_preview.shares": "{count, plural, one {{counter} bidalketa} other {{counter} bidalketa}}", + "lists.add_member": "Gehitu", + "lists.add_to_list": "Gehitu zerrendara", + "lists.add_to_lists": "Gehitu {name} zerrendetara", + "lists.create": "Sortu", + "lists.create_list": "Sortu zerrenda", "lists.delete": "Ezabatu zerrenda", + "lists.done": "Egina", "lists.edit": "Editatu zerrenda", "lists.replies_policy.followed": "Jarraitutako edozein erabiltzaile", "lists.replies_policy.list": "Zerrendako kideak", @@ -576,7 +604,11 @@ "notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak", "notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.", "notifications_permission_banner.title": "Ez galdu ezer inoiz", + "onboarding.follows.back": "Atzera", + "onboarding.follows.done": "Egina", "onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.", + "onboarding.follows.search": "Bilatu", + "onboarding.follows.title": "Jarraitu jendea hasteko", "onboarding.profile.discoverable": "Profila aurkitzeko moduan jarri", "onboarding.profile.discoverable_hint": "Mastodon zure profila aurkitzeko moduan duzunean, zure mezuak bilaketa-emaitzetan eta jarraipenetan ager daitezke, eta zure profila antzeko interesa duen jendeari iradoki ahal zaio.", "onboarding.profile.display_name": "Bistaratzeko izena", @@ -615,6 +647,7 @@ "recommended": "Gomendatua", "refresh": "Berritu", "regeneration_indicator.please_stand_by": "Itxaron, mesedez.", + "regeneration_indicator.preparing_your_home_feed": "Zure hasierako jarioa prestatzen…", "relative_time.days": "{number}e", "relative_time.full.days": "Duela {number, plural, one {egun #} other {# egun}}", "relative_time.full.hours": "Duela {number, plural, one {ordu #} other {# ordu}}", @@ -698,6 +731,7 @@ "search_results.accounts": "Profilak", "search_results.all": "Guztiak", "search_results.hashtags": "Traolak", + "search_results.no_results": "Emaitzarik ez.", "search_results.see_all": "Ikusi guztiak", "search_results.statuses": "Bidalketak", "server_banner.about_active_users": "Azken 30 egunetan zerbitzari hau erabili duen jendea (hilabeteko erabiltzaile aktiboak)", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 9125ce641bc63f..d9fabd3f3e1151 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -380,7 +380,7 @@ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} message} other {{counter} messages}} hodie", "hashtag.follow": "Sequer hashtag", "hashtag.unfollow": "Non sequer plus le hashtag", - "hashtags.and_other": "…e {count, plural, one {}other {# plus}}", + "hashtags.and_other": "…e {count, plural, one {un altere} other {# alteres}}", "hints.profiles.followers_may_be_missing": "Le sequitores de iste profilo pote mancar.", "hints.profiles.follows_may_be_missing": "Le profilos sequite per iste profilo pote mancar.", "hints.profiles.posts_may_be_missing": "Alcun messages de iste profilo pote mancar.", diff --git a/app/javascript/mastodon/locales/nan.json b/app/javascript/mastodon/locales/nan.json index 22a7c507fca837..110d5a7301a631 100644 --- a/app/javascript/mastodon/locales/nan.json +++ b/app/javascript/mastodon/locales/nan.json @@ -131,6 +131,15 @@ "bundle_modal_error.close": "關", "bundle_modal_error.message": "Tī載入tsit ê畫面ê時起錯誤。", "bundle_modal_error.retry": "Koh試", + "closed_registrations.other_server_instructions": "因為Mastodon非中心化,所以lí ē當tī別ê服侍器建立口座,iáu ē當kap tsit ê服侍器來往。", + "closed_registrations_modal.description": "Tann bē當tī {domain} 建立新ê口座,m̄-koh著記得,lí bô需要 {domain} 服侍器ê帳號,mā ē當用 Mastodon。", + "closed_registrations_modal.find_another_server": "Tshuē別ê服侍器", + "closed_registrations_modal.preamble": "因為Mastodon非中心化,所以bô論tī tá tsi̍t ê服侍器建立口座,lí lóng ē當跟tuè tsi̍t ê服侍器ê逐ê lâng,kap hām in交流。Lí iā ē當ka-tī起tsi̍t ê站!", + "closed_registrations_modal.title": "註冊 Mastodon ê口座", + "column.about": "概要", + "column.blocks": "封鎖ê用者", + "column.bookmarks": "冊籤", + "column.community": "本地ê時間線", "column.create_list": "建立列單", "column.direct": "私人ê提起", "column.directory": "瀏覽個人資料", @@ -140,6 +149,16 @@ "column.firehose": "Tsit-má ê動態", "column.follow_requests": "跟tuè請求", "column.home": "頭頁", + "column.list_members": "管理列單ê成員", + "column.lists": "列單", + "column.mutes": "消音ê用者", + "column.notifications": "通知", + "column.pins": "釘起來ê PO文", + "column.public": "聯邦ê時間線", + "column_back_button.label": "頂頁", + "column_header.hide_settings": "Khàm掉設定", + "column_header.moveLeft_settings": "Kā欄sak khah倒pîng", + "column_header.moveRight_settings": "Kā欄sak khah正pîng", "column_header.pin": "釘", "column_header.show_settings": "顯示設定", "column_header.unpin": "Pak掉", @@ -155,6 +174,14 @@ "compose.saved.body": "PO文儲存ah。", "compose_form.direct_message_warning_learn_more": "詳細資訊", "compose_form.encryption_warning": "Mastodon ê PO文無點tuì點加密。M̄通用Mastodon分享任何敏感ê資訊。", + "compose_form.hashtag_warning": "因為tsit êPO文m̄是公開ê,buē列tī任何ê hashtag。Kan-ta公開ê PO文tsiah ē當用hashtag tshuē。", + "compose_form.lock_disclaimer": "Lí ê口座iáu buē {locked}。逐ê lâng lóng通跟tuè lí,看lí kan-ta hōo跟tuè ê看ê PO文。", + "compose_form.lock_disclaimer.lock": "鎖起來ê", + "compose_form.placeholder": "Lí teh想siánn?", + "compose_form.poll.duration": "投票期間", + "compose_form.poll.multiple": "Tsē選擇", + "compose_form.poll.option_placeholder": "選項 {number}", + "compose_form.poll.single": "單選擇", "confirmations.follow_to_list.confirm": "跟tuè,加入kàu列單", "notification.favourite_pm": "{name} kah意lí ê私人提起", "notification.favourite_pm.name_and_others_with_link": "{name} kap{count, plural, other {另外 # ê lâng}}kah意lí ê私人提起", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index af72998fd94781..fbfd67c673b51e 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -457,7 +457,7 @@ "keyboard_shortcuts.toggle_hidden": "Показати/приховати текст під попередженням про вміст", "keyboard_shortcuts.toggle_sensitivity": "Показати/приховати медіа", "keyboard_shortcuts.toot": "Створити новий допис", - "keyboard_shortcuts.translate": "для перекладу повідомлення", + "keyboard_shortcuts.translate": "перекласти допис", "keyboard_shortcuts.unfocus": "Розфокусуватися з нового допису чи пошуку", "keyboard_shortcuts.up": "Рухатися вгору списком", "lightbox.close": "Закрити", @@ -548,8 +548,8 @@ "notification.annual_report.view": "Переглянути #Wrapstodon", "notification.favourite": "Ваш допис сподобався {name}", "notification.favourite.name_and_others_with_link": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} вподобали ваш допис", - "notification.favourite_pm": "{name} додав вашу особисту згадку до вибраного", - "notification.favourite_pm.name_and_others_with_link": "{name} та {count, plural, one {# other} other {# others}} додали вашу особисту згадку до вибраного", + "notification.favourite_pm": "{name} додає вашу особисту згадку до вибраного", + "notification.favourite_pm.name_and_others_with_link": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} додали вашу особисту згадку до вибраного", "notification.follow": "{name} підписалися на вас", "notification.follow.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} стежать за вами", "notification.follow_request": "{name} відправили запит на підписку", @@ -782,7 +782,7 @@ "search_results.all": "Усі", "search_results.hashtags": "Хештеґи", "search_results.no_results": "Жодних результатів.", - "search_results.no_search_yet": "Спробуйте пошукати записи, профілі або хештеґи.", + "search_results.no_search_yet": "Спробуйте пошукати дописи, профілі або хештеґи.", "search_results.see_all": "Показати все", "search_results.statuses": "Дописів", "search_results.title": "Шукати \"{q}\"", @@ -837,7 +837,7 @@ "status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.", "status.redraft": "Видалити та виправити", "status.remove_bookmark": "Видалити закладку", - "status.remove_favourite": "Видалити з улюблених", + "status.remove_favourite": "Вилучити з улюбленого", "status.replied_in_thread": "Відповідь у потоці", "status.replied_to": "Відповідь для {name}", "status.reply": "Відповісти", diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml index 23bf90e4c827ae..4e7f7b3e203118 100644 --- a/config/locales/activerecord.en-GB.yml +++ b/config/locales/activerecord.en-GB.yml @@ -23,6 +23,8 @@ en-GB: models: account: attributes: + fields: + fields_with_values_missing_labels: contains values with missing labels username: invalid: must contain only letters, numbers and underscores reserved: is reserved @@ -38,6 +40,11 @@ en-GB: attributes: data: malformed: is malformed + list_account: + attributes: + account_id: + taken: is already on the list + must_be_following: must be a followed account status: attributes: reblog: diff --git a/config/locales/activerecord.eu.yml b/config/locales/activerecord.eu.yml index a2458ceb417780..8b4235eb993aa4 100644 --- a/config/locales/activerecord.eu.yml +++ b/config/locales/activerecord.eu.yml @@ -23,6 +23,8 @@ eu: models: account: attributes: + fields: + fields_with_values_missing_labels: falta diren etiketak dituzten balioak ditu username: invalid: letrak, zenbakiak eta azpimarrak soilik izan behar ditu reserved: erreserbatuta dago diff --git a/config/locales/doorkeeper.eu.yml b/config/locales/doorkeeper.eu.yml index a09fe42f40a4dc..7b25004385c061 100644 --- a/config/locales/doorkeeper.eu.yml +++ b/config/locales/doorkeeper.eu.yml @@ -60,6 +60,7 @@ eu: error: title: Errore bat gertatu da new: + prompt_html: "%{client_name}-(e)k zure kontura sartzeko baimena nahi du. Eskaera hau onartu, iturri hori ezagutu eta harengan konfiantza baduzu" review_permissions: Berrikusi baimenak title: Baimena behar da show: @@ -134,6 +135,7 @@ eu: media: Multimedia eranskinak mutes: Mututzeak notifications: Jakinarazpenak + profile: Zure Mastodon profila push: Push jakinarazpenak reports: Salaketak search: Bilaketak @@ -164,6 +166,7 @@ eu: admin:write:reports: salaketetan moderazio ekintzak burutu crypto: erabili muturretik muturrerako zifraketa follow: aldatu kontuaren erlazioak + profile: irakurri soilik zure kontuaren profileko informazioa push: jaso push jakinarazpenak read: irakurri zure kontuko datu guztiak read:accounts: ikusi kontuaren informazioa diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 20f134c9591ba8..7a26de73c0f986 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -214,6 +214,7 @@ en-GB: enable_user: Enable User memorialize_account: Memorialise Account promote_user: Promote User + publish_terms_of_service: Publish Terms of Service reject_appeal: Reject Appeal reject_user: Reject User remove_avatar_user: Remove Avatar @@ -278,6 +279,7 @@ en-GB: enable_user_html: "%{name} enabled login for user %{target}" memorialize_account_html: "%{name} turned %{target}'s account into a memoriam page" promote_user_html: "%{name} promoted user %{target}" + publish_terms_of_service_html: "%{name} published updates to the terms of service" reject_appeal_html: "%{name} rejected moderation decision appeal from %{target}" reject_user_html: "%{name} rejected sign-up from %{target}" remove_avatar_user_html: "%{name} removed %{target}'s avatar" @@ -925,6 +927,35 @@ en-GB: search: Search title: Hashtags updated_msg: Hashtag settings updated successfully + terms_of_service: + back: Back to terms of service + changelog: What's changed + create: Use your own + current: Current + draft: Draft + generate: Use template + generates: + action: Generate + chance_to_review_html: "The generated terms of service will not be published automatically. You will have a chance to review the results. Please fill in the necessary details to proceed." + explanation_html: The terms of service template provided is for informational purposes only, and should not be construed as legal advice on any subject matter. Please consult with your own legal counsel on your situation and specific legal questions you have. + title: Terms of Service Setup + history: History + live: Live + no_history: There are no recorded changes of the terms of service yet. + no_terms_of_service_html: You don't currently have any terms of service configured. Terms of service are meant to provide clarity and protect you from potential liabilities in disputes with your users. + notified_on_html: Users notified on %{date} + notify_users: Notify users + preview: + explanation_html: 'The email will be sent to %{display_count} users who have signed up before %{date}. The following text will be included in the e-mail:' + send_preview: Send preview to %{email} + send_to_all: + one: Send %{display_count} email + other: Send %{display_count} emails + title: Preview terms of service notification + publish: Publish + published_on_html: Published on %{date} + save_draft: Save draft + title: Terms of Service title: Administration trends: allow: Allow @@ -1156,6 +1187,7 @@ en-GB: set_new_password: Set new password setup: email_below_hint_html: Check your spam folder, or request another one. You can correct your email address if it's wrong. + email_settings_hint_html: Click the link we sent to %{email} to begin using Mastodon. We'll wait right here. link_not_received: Didn't get a link? new_confirmation_instructions_sent: You will receive a new email with the confirmation link in a few minutes! title: Check your inbox @@ -1164,6 +1196,7 @@ en-GB: title: Log in to %{domain} sign_up: manual_review: Sign-ups on %{domain} go through manual review by our moderators. To help us process your registration, write a bit about yourself and why you want an account on %{domain}. + preamble: With an account on this Mastodon server, you'll be able to follow any other person on the Fediverse, regardless of where their account is hosted. title: Let's get you set up on %{domain}. status: account_status: Account status @@ -1175,6 +1208,7 @@ en-GB: view_strikes: View past strikes against your account too_fast: Form submitted too fast, try again. use_security_key: Use security key + user_agreement_html: I have read and agree to the terms of service and privacy policy author_attribution: example_title: Sample text hint_html: Are you writing news or blog articles outside of Mastodon? Control how you get credited when they are shared on Mastodon. @@ -1673,6 +1707,7 @@ en-GB: 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 + too_soon: date must be in the future self_destruct: lead_html: Unfortunately, %{domain} is permanently closing down. If you had an account there, you will not be able to continue using it, but you can still request a backup of your data. title: This server is closing down @@ -1835,6 +1870,8 @@ en-GB: too_late: It is too late to appeal this strike tags: does_not_match_previous_name: does not match the previous name + terms_of_service: + title: Terms of Service themes: contrast: Mastodon (High contrast) default: Mastodon (Dark) @@ -1895,6 +1932,15 @@ en-GB: further_actions_html: If this wasn't you, we recommend that you %{action} immediately and enable two-factor authentication to keep your account secure. subject: Your account has been accessed from a new IP address title: A new login + terms_of_service_changed: + agreement: By continuing to use %{domain}, you are agreeing to these terms. If you disagree with the updated terms, you may terminate your agreement with %{domain} at any time by deleting your account. + changelog: 'At a glance, here is what this update means for you:' + description: 'You are receiving this e-mail because we''re making some changes to our terms of service at %{domain}. We encourage you to review the updated terms in full here:' + description_html: You are receiving this e-mail because we're making some changes to our terms of service at %{domain}. We encourage you to review the updated terms in full here. + sign_off: The %{domain} team + subject: Updates to our terms of service + subtitle: The terms of service of %{domain} are changing + title: Important update warning: appeal: Submit an appeal appeal_description: If you believe this is an error, you can submit an appeal to the staff of %{instance}. diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 8ca53d492c0d2d..97a8da3704137e 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -21,15 +21,18 @@ eu: one: Bidalketa other: Bidalketa posts_tab_heading: Bidalketa + self_follow_error: Zure kontua bera jarraitzea ez dago onartuta admin: account_actions: action: Burutu ekintza + already_suspended: Kontu hau dagoeneko kanporatua izan da. title: Burutu moderazio ekintza %{acct} kontuan account_moderation_notes: create: Sortu oharra created_msg: Moderazio oharra ongi sortu da! destroyed_msg: Moderazio ohara ongi suntsitu da! accounts: + add_email_domain_block: Blokeatu email domeinua approve: Onartu approved_msg: "%{username} erabiltzailearen erregistratzeko eskaera behar bezala onartu da" are_you_sure: Ziur zaude? @@ -44,6 +47,7 @@ eu: title: Aldatu %{username}(r)en eposta helbidea change_role: changed_msg: Rola ondo aldatu da! + edit_roles: Kudeatu erabiltzaile rolak label: Aldatu rola no_role: Rolik ez title: Aldatu %{username} erabiltzailearen rola @@ -56,6 +60,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 @@ -64,6 +69,7 @@ eu: email: Eposta email_status: Epostaren 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 @@ -128,6 +134,7 @@ eu: resubscribe: Berriro harpidetu role: Rola search: Bilatu + search_same_email_domain: E-mail domeinu bera duten beste erabiltzaileak search_same_ip: IP bera duten beste erabiltzaileak security: Segurtasuna security_measures: @@ -168,21 +175,26 @@ eu: approve_appeal: Onartu apelazioa approve_user: Onartu erabiltzailea assigned_to_self_report: Esleitu salaketa + change_email_user: Aldatu erabiltzailearen emaila change_role_user: Aldatu erabiltzailearen rola confirm_user: Berretsi erabiltzailea create_account_warning: Sortu abisua create_announcement: Sortu iragarpena + create_canonical_email_block: Sortu email blokeoa create_custom_emoji: Sortu emoji pertsonalizatua create_domain_allow: Sortu domeinu baimena create_domain_block: Sortu domeinu blokeoa + create_email_domain_block: Sortu email domeinu blokeoa create_ip_block: Sortu IP araua create_unavailable_domain: Sortu eskuragarri ez dagoen domeinua create_user_role: Sortu rola demote_user: Jaitsi erabiltzailearen maila destroy_announcement: Ezabatu iragarpena + destroy_canonical_email_block: Ezabatu email blokeoa destroy_custom_emoji: Ezabatu emoji pertsonalizatua destroy_domain_allow: Ezabatu domeinu baimena destroy_domain_block: Ezabatu domeinu blokeoa + destroy_email_domain_block: Ezabatu email domeinu blokeoa destroy_instance: Ezabatu betiko domeinua destroy_ip_block: Ezabatu IP araua destroy_status: Ezabatu bidalketa @@ -190,8 +202,10 @@ eu: destroy_user_role: Ezabatu rola disable_2fa_user: Desgaitu 2FA disable_custom_emoji: Desgaitu emoji pertsonalizatua + disable_sign_in_token_auth_user: Desgaitu email token autentifikazioa erabiltzailearentzat disable_user: Desgaitu erabiltzailea enable_custom_emoji: Gaitu emoji pertsonalizatua + enable_sign_in_token_auth_user: Gaitu email token autentifikazioa erabiltzailearentzat enable_user: Gaitu erabiltzailea memorialize_account: Bihurtu kontua oroigarri promote_user: Igo erabiltzailea mailaz diff --git a/config/locales/fi.yml b/config/locales/fi.yml index c4f9844679ac8a..064ca67cbf430d 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1216,7 +1216,7 @@ fi: more_from_html: Lisää tekijältä %{name} s_blog: Käyttäjän %{name} blogi then_instructions: Lisää sitten julkaisun verkkotunnus seuraavaan tekstikenttään. - title: Tekijän tunnustus + title: Tekijän nimeäminen challenge: confirm: Jatka hint_html: "Vihje: Emme pyydä sinulta salasanaa uudelleen seuraavan tunnin aikana." diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index c908d07479e667..bc7183318b96b3 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,6 +3,7 @@ ca: simple_form: hints: account: + attribution_domains: Un per línia. Protegeix de falses atribucions. discoverable: El teu perfil i els teus tuts públics poden aparèixer o ser recomanats en diverses àreas de Mastodon i el teu perfil pot ser suggerit a altres usuaris. display_name: El teu nom complet o el teu nom divertit. fields: La teva pàgina d'inici, pronoms, edat, el que vulguis. @@ -147,6 +148,7 @@ ca: url: On els esdeveniments seran enviats labels: account: + attribution_domains: Llocs web que us poden donar crèdit discoverable: Permet el perfil i el tuts en els algorismes de descobriment fields: name: Etiqueta diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index cc51bb76036d44..676f184f98a883 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -3,6 +3,7 @@ da: simple_form: hints: account: + attribution_domains: Ét pr. linje. Beskytter mod falske tilskrivninger. discoverable: Dine offentlige indlæg og profil kan blive fremhævet eller anbefalet i forskellige områder af Mastodon, og profilen kan blive foreslået til andre brugere. display_name: Dit fulde navn eller dit sjove navn. fields: Din hjemmeside, dine pronominer, din alder, eller hvad du har lyst til. @@ -155,6 +156,7 @@ da: url: Hvor begivenheder sendes til labels: account: + attribution_domains: Websteder, man må krediteres af discoverable: Fremhæv profil og indlæg i opdagelsesalgoritmer fields: name: Etiket diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 3a66001da58f53..2becfb36dc6479 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -3,6 +3,7 @@ de: simple_form: hints: account: + attribution_domains: Eine Domain pro Zeile. Dadurch können falsche Zuschreibungen unterbunden werden. discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon angezeigt oder empfohlen werden und dein Profil kann anderen vorgeschlagen werden. display_name: Dein richtiger Name oder dein Fantasiename. fields: Deine Website, Pronomen, dein Alter – alles, was du möchtest. @@ -155,6 +156,7 @@ de: url: Wohin Ereignisse gesendet werden labels: account: + attribution_domains: Websites, die auf dich verweisen dürfen discoverable: Profil und Beiträge in Suchalgorithmen berücksichtigen fields: name: Beschriftung diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index 6539cacb80aedb..fa7868cc765fca 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -3,6 +3,7 @@ en-GB: simple_form: hints: account: + attribution_domains: One per line. Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -59,6 +60,7 @@ en-GB: setting_display_media_default: Hide media marked as sensitive setting_display_media_hide_all: Always hide media setting_display_media_show_all: Always show media + setting_system_scrollbars_ui: Applies only to desktop browsers based on Safari and Chrome setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed username: You can use letters, numbers, and underscores @@ -128,6 +130,17 @@ en-GB: show_application: You will always be able to see which app published your post regardless. tag: name: You can only change the casing of the letters, for example, to make it more readable + terms_of_service: + changelog: Can be structured with Markdown syntax. + text: Can be structured with Markdown syntax. + terms_of_service_generator: + admin_email: Legal notices include counternotices, court orders, takedown requests, and law enforcement requests. + arbitration_address: Can be the same as Physical address above, or “N/A” if using email + arbitration_website: Can be a web form, or “N/A” if using email + dmca_address: For US operators, use the address registered in the DMCA Designated Agent Directory. A P.O. Box listing is available upon direct request, use the DMCA Designated Agent Post Office Box Waiver Request to email the Copyright Office and describe that you are a home-based content moderator who fears revenge or retribution for your actions and need to use a P.O. Box to remove your home address from public view. + dmca_email: Can be the same email used for “Email address for legal notices” above + domain: Unique identification of the online service you are providing. + jurisdiction: List the country where whoever pays the bills lives. If it’s a company or other entity, list the country where it’s incorporated, and the city, region, territory or state as appropriate. user: chosen_languages: When checked, only posts in selected languages will be displayed in public timelines role: The role controls which permissions the user has. @@ -143,6 +156,7 @@ en-GB: url: Where events will be sent to labels: account: + attribution_domains: Websites allowed to credit you discoverable: Feature profile and posts in discovery algorithms fields: name: Label @@ -221,6 +235,7 @@ en-GB: setting_hide_network: Hide your social graph setting_reduce_motion: Reduce motion in animations setting_system_font_ui: Use system's default font + setting_system_scrollbars_ui: Use system's default scrollbar setting_theme: Site theme setting_trends: Show today's trends setting_unfollow_modal: Show confirmation dialog before unfollowing someone @@ -315,6 +330,17 @@ en-GB: name: Hashtag trendable: Allow this hashtag to appear under trends usable: Allow posts to use this hashtag locally + terms_of_service: + changelog: What's changed? + text: Terms of Service + terms_of_service_generator: + admin_email: Email address for legal notices + arbitration_address: Physical address for arbitration notices + arbitration_website: Website for submitting arbitration notices + dmca_address: Physical address for DMCA/copyright notices + dmca_email: Email address for DMCA/copyright notices + domain: Domain + jurisdiction: Legal jurisdiction user: role: Role time_zone: Time Zone diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 5de006231aa49f..4688fe614ac006 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -3,6 +3,7 @@ eo: simple_form: hints: account: + attribution_domains: Unu por linio. Protektas kontraŭ falsaj atribuoj. discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj. display_name: Via plena nomo aŭ via kromnomo. fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. @@ -155,6 +156,7 @@ eo: url: Kien eventoj sendotas labels: account: + attribution_domains: Retejoj permesitaj krediti vin discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 2abefdcab63155..bb9176c9ba3bd1 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -3,6 +3,7 @@ es-AR: simple_form: hints: account: + attribution_domains: Uno por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones pueden ser destacadas o recomendadas en varias áreas de Mastodon, y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu pseudónimo. fields: Tu sitio web, pronombres, edad, o lo que quieras. @@ -155,6 +156,7 @@ es-AR: url: Adónde serán enviados los eventos labels: account: + attribution_domains: Sitios web autorizados a acreditarte discoverable: Destacar perfil y mensajes en algoritmos de descubrimiento fields: name: Nombre de campo diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index e2f6627c96ee44..4ed442ae19b349 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -3,6 +3,7 @@ es-MX: simple_form: hints: account: + attribution_domains: Uno por línea. Protege contra atribuciones falsas. discoverable: Tu perfil y las publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu página de inicio, pronombres, edad, lo que quieras. @@ -155,6 +156,7 @@ es-MX: url: Donde los eventos serán enviados labels: account: + attribution_domains: Sitios web autorizados para acreditarte discoverable: Destacar el perfil y las publicaciones en el algoritmo de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 7cdbea902fa4b2..dd62884d68ef9d 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -3,6 +3,7 @@ es: simple_form: hints: account: + attribution_domains: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu carta de presentación, pronombres, edad, lo que quieras. @@ -155,6 +156,7 @@ es: url: Donde los eventos serán enviados labels: account: + attribution_domains: Sitios web autorizados a acreditarte discoverable: Destacar perfil y publicaciones en algoritmos de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index f6c4f149154478..dfe6c0b6d7716e 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -3,12 +3,14 @@ eu: simple_form: hints: account: + attribution_domains: Lerroko bat. Atribuzio faltsuetatik babesten ditu. discoverable: Zure bidalketa publikoak eta profila nabarmendu edo gomendatu egin daitezke Mastodon-go hainbat eremutan eta zure profila beste erabiltzaile batzuei iradoki dakieke. display_name: Zure izena edo ezizena. fields: Zure webgunea, izenordainak, adina, nahi duzun guztia. indexable: Zure argitalpen publikoak bilaketa-emaitzetan ager daitezke Mastodonen. Zure argitalpenekin elkarregin duten jendeak ikusi ahal izango dituzte, hala ere. note: 'Beste pertsona edo #traola batzuk @aipatu ditzakezu.' show_collections: Pertsonek zuk jarraitzen dituzunak eta zure jarraitzaileak arakatu ahal izango dute. Jarraitzen dituzun pertsonak jarraitzen dituzula ikusi ahal izando dute, hala ere. + unlocked: Pertsonek zuri jarraitu ahal izango dizute onarpen-eskaerarik gabe. Desgaitu jarraipen-eskaerak berrikusi nahi badituzu eta hauek onartu edo ez erabaki nahi baduzu. account_alias: acct: Zehaztu migrazioaren jatorri den kontuaren erabiltzailea@domeinua account_migration: @@ -58,6 +60,7 @@ eu: setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia setting_display_media_hide_all: Ezkutatu multimedia guztia beti setting_display_media_show_all: Erakutsi beti hunkigarri gisa markatutako multimedia + setting_system_scrollbars_ui: Safari eta Chrome-n oinarritutako mahaigaineko nabigatzaileei bakarrik aplikatzen zaie setting_use_blurhash: Gradienteak ezkutatutakoaren koloreetan oinarritzen dira, baina xehetasunak ezkutatzen dituzte setting_use_pending_items: Ezkutatu denbora-lerroko eguneraketak klik baten atzean jarioa automatikoki korritu ordez username: Hizkiak, zenbakiak eta azpimarrak erabil ditzakezu @@ -127,6 +130,11 @@ eu: show_application: Dena dela, beti ikusi ahal izango duzu zein aplikaziok argitaratu zuen zure bidalketa. tag: name: Letrak maiuskula/minuskulara aldatu ditzakezu besterik ez, adibidez irakurterrazago egiteko + terms_of_service: + changelog: Markdown-en sintaxiarekin egitura daiteke. + text: Markdown-en sintaxiarekin egitura daiteke. + terms_of_service_generator: + admin_email: Legezko abisuak, kontraindikazioak, agindu judizialak, erretiratzeko eskaerak eta legea betetzeko eskaerak barne. user: chosen_languages: Markatzean, hautatutako hizkuntzetan dauden tutak besterik ez dira erakutsiko. user_role: @@ -141,6 +149,7 @@ eu: url: Nora bidaliko diren gertaerak labels: account: + attribution_domains: Akreditatzeko baimendutako webguneak discoverable: Ezagutarazi profila eta bidalketak bilaketa algoritmoetan fields: name: Etiketa @@ -240,11 +249,13 @@ eu: warn: Ezkutatu ohar batekin form_admin_settings: activity_api_enabled: Argitaratu erabiltzaile-jardueraren guztizko estatistikak APIan + app_icon: Aplikazio ikonoa backups_retention_period: Erabiltzailearen artxiboa gordetzeko epea bootstrap_timeline_accounts: Gomendatu beti kontu hauek erabiltzaile berriei closed_registrations_message: Izen-emateak itxita daudenerako mezu pertsonalizatua content_cache_retention_period: Urruneko edukiaren atxikipen-aldia custom_css: CSS pertsonalizatua + favicon: Gune-ikurra mascot: Maskota pertsonalizatua (zaharkitua) media_cache_retention_period: Multimediaren cachea atxikitzeko epea peers_api_enabled: Argitaratu aurkitutako zerbitzarien zerrenda APIan @@ -309,6 +320,12 @@ eu: listable: Baimendu traola hau bilaketetan agertzea eta profilen direktorioan name: Traola trendable: Baimendu traola hau joeretan agertzea + usable: Baimendu bidalketek traola lokal hau erabiltzea + terms_of_service: + changelog: Zer aldatu da? + text: Zerbitzuaren baldintzak + terms_of_service_generator: + domain: Domeinua user: role: Rola time_zone: Ordu zona diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 1103232f4e7f1c..1c7be461db2108 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -3,6 +3,7 @@ fi: simple_form: hints: account: + attribution_domains: Yksi riviä kohti. Suojaa vääriltä tekijän nimeämisiltä. discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille. display_name: Koko nimesi tai lempinimesi. fields: Verkkosivustosi, pronominisi, ikäsi ja mitä ikinä haluatkaan ilmoittaa. @@ -155,6 +156,7 @@ fi: url: Mihin tapahtumat lähetetään labels: account: + attribution_domains: Verkkosivustot, jotka voivat antaa sinulle tunnustusta discoverable: Pidä profiiliasi ja julkaisujasi esillä löytämisalgoritmeissa fields: name: Nimike diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml index a3b7a56729330a..69d41285dc1dc9 100644 --- a/config/locales/simple_form.fo.yml +++ b/config/locales/simple_form.fo.yml @@ -3,6 +3,7 @@ fo: simple_form: hints: account: + attribution_domains: Eitt á hvørja reglu. Tað verjir fyri skeivum tilsipingum. discoverable: Tínir almennu postar og tín vangi kunnu vera drigin fram og viðmæld ymsa staðni í Mastodon og vangin hjá tær kann vera viðmæltur øðrum brúkarum. display_name: Títt fulla navn og títt stuttliga navn. fields: Heimasíðan hjá tær, fornøvn, aldur ella hvat tú vil. @@ -155,6 +156,7 @@ fo: url: Hvar hendingar verða sendar til labels: account: + attribution_domains: Heimasíður, sum hava loyvi at sipa til tín discoverable: Framheva vanga og postar í uppdagingar-algoritmum fields: name: Spjaldur diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index 01893eefc9338e..d229808eae8066 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -3,6 +3,7 @@ fr-CA: simple_form: hints: account: + attribution_domains: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom cool. fields: Votre page d'accueil, pronoms, âge, tout ce que vous voulez. @@ -155,6 +156,7 @@ fr-CA: url: Là où les événements seront envoyés labels: account: + attribution_domains: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 9332c5d606eba5..4fa202847b57bb 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,6 +3,7 @@ fr: simple_form: hints: account: + attribution_domains: Un par ligne. Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom rigolo. fields: Votre page personnelle, vos pronoms, votre âge, ce que vous voulez. @@ -155,6 +156,7 @@ fr: url: Là où les événements seront envoyés labels: account: + attribution_domains: Sites web autorisés à vous citer discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index ec7786f509eec6..854b5aadccca08 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -3,6 +3,7 @@ gl: simple_form: hints: account: + attribution_domains: Un por liña. Como protección para falsas atribucións. discoverable: As túas publicacións públicas e perfil poden mostrarse ou recomendarse en varias zonas de Mastodon e o teu perfil ser suxerido a outras usuarias. display_name: O teu nome completo ou un nome divertido. fields: Páxina web, pronome, idade, o que ti queiras. @@ -155,6 +156,7 @@ gl: url: A onde se enviarán os eventos labels: account: + attribution_domains: Sitios web que dan fe sobre ti discoverable: Perfil destacado e publicacións nos algoritmos de descubrimento fields: name: Etiqueta diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 2699f5e962fa5d..4503f8aa5b4e85 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -3,6 +3,7 @@ he: simple_form: hints: account: + attribution_domains: אחד בכל שורה. יגן מפני יחוסים מטעים. discoverable: הפוסטים והפרופיל שלך עשויים להיות מוצגים או מומלצים באזורים שונים באתר וייתכן שהפרופיל שלך יוצע למשתמשים אחרים. display_name: שמך המלא או שם הכיף שלך. fields: עמוד הבית שלך, לשון הפנייה, גיל, וכל מידע אחר לפי העדפתך האישית. @@ -155,6 +156,7 @@ he: url: היעד שאליו יישלחו אירועים labels: account: + attribution_domains: אתרים המורשים לייחס אליך מאמרים discoverable: הצג משתמש ופוסטים בעמוד התגליות fields: name: תווית diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index cc9fa61abfee83..90c66b220c4da1 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -3,6 +3,7 @@ hu: simple_form: hints: account: + attribution_domains: Soronként egy. Megvéd a hamis forrásmegjelölésektől. discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható. display_name: Teljes neved vagy vicces neved. fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél. @@ -152,6 +153,7 @@ hu: url: Ahová az eseményket küldjük labels: account: + attribution_domains: Weboldalak, melyek szerzőként tüntethetnek fel discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban fields: name: Címke diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index bcab4f9d80c200..5ede26f9adc027 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -3,6 +3,7 @@ ia: simple_form: hints: account: + attribution_domains: Un per linea. Protege contra false attributiones. discoverable: Tu messages public e tu profilo pote esser mittite in evidentia o recommendate in varie areas de Mastodon e tu profilo pote esser suggerite a altere usatores. display_name: Tu prenomine e nomine de familia o tu pseudonymo. fields: Tu pagina principal, pronomines, etate, tote lo que tu vole. @@ -45,16 +46,16 @@ ia: current_password: Pro propositos de securitate insere le contrasigno del conto actual current_username: Pro confirmar, insere le nomine de usator del conto actual digest: Solo inviate post un longe periodo de inactivitate e solo si tu ha recipite alcun messages personal in tu absentia - email: Te sera inviate un email de confirmation - header: WEBP, PNG, GIF o JPG. Al maximo %{size}. Sera reducite a %{dimensions}px + email: Tu recipera un e-mail de confirmation + header: WEBP, PNG, GIF o JPG. Al maximo %{size}. Essera reducite a %{dimensions}px inbox_url: Copia le URL ab le pagina principal del repetitor que tu vole usar - irreversible: Le messages filtrate disparera irreversibilemente, mesmo si le filtro es plus tarde removite + irreversible: Le messages filtrate disparera irreversibilemente, mesmo si le filtro es removite plus tarde locale: Le lingua del interfacie de usator, del emails e del notificationes pulsate password: Usa al minus 8 characteres - phrase: Sera concordate ignorante majuscule/minuscule in le texto o avisos de contento de un message - scopes: A que APIs sera permittite acceder al application. Si tu selige un ambito de maxime nivello, tu non besonia de seliger los singulemente. + phrase: Se applicara independentemente de majusculas/minusculas in le texto o del aviso de contento de un message + scopes: Le APIs al quales le application habera accesso. Si tu selige un ambito de nivello superior, non es necessari seliger ambitos individual. setting_aggregate_reblogs: Non monstrar nove impulsos pro messages que ha essite recentemente impulsate (affecta solmente le impulsos novemente recipite) - setting_always_send_emails: Normalmente le avisos de email non sera inviate quando tu activemente usa Mastodon + setting_always_send_emails: Normalmente, le notificationes de e-mail non es inviate quando tu activemente usa Mastodon setting_default_sensitive: Le medios sensibile es celate de ordinario e pote esser revelate con un clic setting_display_media_default: Celar le medios marcate como sensibile setting_display_media_hide_all: Sempre celar le medios @@ -63,12 +64,12 @@ ia: setting_use_blurhash: Le imagines degradate se basa sur le colores del visuales celate, ma illos offusca tote le detalios setting_use_pending_items: Requirer un clic pro monstrar nove messages in vice de rolar automaticamente le fluxo username: Tu pote usar litteras, numeros e tractos de sublineamento - whole_word: Quando le parola o expression clave es solo alphanumeric, illo sera solo applicate si illo concorda con tote le parola + whole_word: Quando le parola-clave o phrase es alphanumeric, illo essera solmente applicate si illo corresponde a tote le parola domain_allow: domain: Iste dominio potera extraher datos de iste servitor e le datos entrante de illo essera processate e immagazinate email_domain_block: - domain: Isto pote esser le nomine de dominio que apparera in le adresse email o le registration MX que illo usa. Illos sera verificate durante le inscription. - with_dns_records: Un tentativa sera facite pro resolver le registrationes de DNS del dominio date e le resultatos sera alsi blocate + domain: Isto pote esser le nomine de dominio que apparera in le adresse de e-mail o le registro MX que illo usa. Illos essera verificate durante le inscription. + with_dns_records: Un tentativa de resolver le registros DNS del dominio date essera facite e le resultatos essera equalmente blocate featured_tag: name: 'Ecce alcun del hashtags que tu usava le plus recentemente:' filters: @@ -79,16 +80,16 @@ ia: form_admin_settings: activity_api_enabled: Numeros de messages localmente publicate, usatores active, e nove registrationes in gruppos septimanal app_icon: WEBP, PNG, GIF o JPG. Supplanta le icone predefinite sur apparatos mobile con un icone personalisate. - backups_retention_period: Le usatores pote generar archivos de lor messages pro discargar los plus tarde. Quando predefinite a un valor positive, iste archivos sera automaticamente delite de tu immagazinage post le specificate numero de dies. - bootstrap_timeline_accounts: Iste contos sera appunctate al summitate del recommendationes a sequer del nove usatores. + backups_retention_period: Le usatores pote generar archivos de lor messages pro discargar los plus tarde. Si iste option es definite a un valor positive, iste archivos essera automaticamente delite de tu immagazinage post le numero specificate de dies. + bootstrap_timeline_accounts: Iste contos essera fixate al initio del recommendationes de sequimento de nove usatores. closed_registrations_message: Monstrate quando le inscriptiones es claudite content_cache_retention_period: Tote le messages de altere servitores (includite impulsos e responsas) essera delite post le numero de dies specificate, independentemente de tote interaction de usatores local con ille messages. Isto include le messages addite al marcapaginas o marcate como favorite per un usator local. Le mentiones private inter usatores de differente instantias tamben essera irrecuperabilemente perdite. Le uso de iste parametro es intendite pro instantias con scopos specific e viola multe expectationes de usatores si es implementate pro uso general. custom_css: Tu pote applicar stilos personalisate sur le version de web de Mastodon. favicon: WEBP, PNG, GIF o JPG. Supplanta le favicone predefinite de Mastodon con un icone personalisate. mascot: Illo substitue le illustration in le interfacie web avantiate. - media_cache_retention_period: Le files multimedial de messages producite per usatores remote es in cache sur tu servitor. Quando predefinite a un valor positive, le medios sera delite post le numero de dies specificate. Le datos multimedial requirite post que illo es delite, sera re-discargate, si le contento original sera ancora disponibile. Per limitationes sur le frequentia con que le schedas de pre-visualisation de ligamine scruta le sitos de tertie partes, il es recommendate de predefinir iste valor a al minus 14 dies, o le schedas de pre-visualisation de ligamine non sera actualisate sur demanda ante ille tempore. - peers_api_enabled: Un lista de nomines de dominio que iste servitor ha incontrate in le fediverso. Nulle datos es includite ci re tu federation con un date servitor, justo que tu servitor lo cognosce. Isto es usate per servicios que collige statistica re le federation in senso general. - profile_directory: Le directorio de profilo lista tote le usatores qui ha optate pro esser detectabile. + media_cache_retention_period: Le files multimedial de messages producite per usatores distante se immagazina in cache sur tu servitor. Quando iste option es definite a un valor positive, tal files essera delite post le numero specificate de dies. Si alcuno requesta le datos multimedial post lor deletion, illos essera re-discargate si le contento original es ancora disponibile. Debite a limitationes sur le frequentia con que le cartas de previsualisation de ligamines se connecte al sitos de tertios, il es recommendate definir iste valor a al minus 14 dies, alteremente le previsualisationes de ligamines non essera actualisate sur demanda ante ille tempore. + peers_api_enabled: Un lista de nomines de dominio que iste servitor ha incontrate in le fediverso. Iste datos non indica si tu es in federation con un servitor date, ma solmente que tu servitor lo cognosce. Isto es usate per servicios que collige statisticas general sur le federation. + profile_directory: Le directorio de profilos lista tote le usatores que ha optate pro esser discoperibile. require_invite_text: Quando le inscriptiones require approbation manual, rende obligatori, plus tosto que optional, le entrata de texto “Perque vole tu junger te?” site_contact_email: Como pote contactar te le personas pro questiones legal o de supporto. site_contact_username: Como pote contactar te le personas re Mastodon. @@ -99,7 +100,7 @@ ia: status_page_url: URL de un pagina ubi le personas pote vider le stato de iste servitor durante un interruption theme: Thema que le visitatores disconnexe e le nove usatores vide. thumbnail: Un imagine de circa 2:1 monstrate al latere del informationes de tu servitor. - timeline_preview: Le visitatores disconnexe potera navigar per le plus recente messages public disponibile sur le servitor. + timeline_preview: Le visitatores foras de session potera percurrer le messages public le plus recente disponibile sur le servitor. trendable_by_default: Saltar le revision manual del contento de tendentia. Elementos singule pote ancora esser removite de tendentias post le facto. trends: Tendentias monstra que messages, hashtags e novas gania traction sur tu servitor. trends_as_landing_page: Monstrar contento de tendentia a usatores disconnexe e visitatores in vice que un description de iste servitor. Require tendentias esser activate. @@ -115,7 +116,7 @@ ia: ip: Inserer un adresse IPv4 o IPv6. Tu pote blocar campos integre per le syntaxe CIDR. Sia attente pro non disconnecter te! severities: no_access: Blocar accesso a tote le ressources - sign_up_block: Nove inscriptiones non sera possibile + sign_up_block: Nove inscriptiones non essera possibile sign_up_requires_approval: Nove inscriptiones requirera tu approbation severity: Seliger que evenira con requestas ab iste IP rule: @@ -139,9 +140,9 @@ ia: dmca_address: Pro operatores in le SUA, usa le adresse registrate in le Directorio de Agentes Designate pro le DMCA (DMCA Designated Agent Directory). Un adresse de cassa postal es disponibile per requesta directe; usa le Requesta de Exemption de Cassa Postal pro Agentes Designate del DMCA (DMCA Designated Agent Post Office Box Waiver Request) pro inviar un message electronic al Officio del Derecto de Autor (Copyright Office) e describer que tu es un moderator de contento que travalia de casa e qui time vengiantias o represalias pro tu actiones, necessitante le uso un cassa postal pro remover tu adresse personal del vista public. dmca_email: Pote esser le mesme adresse de e-mail usate pro “Adresse de e-mail pro avisos juridic” supra domain: Identification unic del servicio in linea que tu forni. - jurisdiction: Vermeldt het land waar de persoon woont die de rekeningen betaalt. Als het een bedrijf of een andere entiteit is, vermeldt het land waar het is opgenomen en de stad, regio, grondgebied of staat, voor zover van toepassing. + jurisdiction: Indica le pais ubi vive le persona qui paga le facturas. Si se tracta de un interprisa o altere organisation, indica le pais ubi illo es incorporate, e le citate, region, territorio o stato del maniera appropriate pro le pais. user: - chosen_languages: Si marcate, solo le messages in le linguas seligite sera monstrate in chronologias public + chosen_languages: Si marcate, solmente le messages in le linguas seligite apparera in chronologias public role: Le rolo controla qual permissos le usator ha. user_role: color: Color a esser usate pro le rolo in omne parte del UI, como RGB in formato hexadecimal @@ -152,9 +153,10 @@ ia: webhook: events: Selige le eventos a inviar template: Compone tu proprie carga utile JSON per interpolation de variabile. Lassar blanc pro JSON predefinite. - url: Ubi le eventos essera inviate + url: A ubi le eventos essera inviate labels: account: + attribution_domains: Sitos web autorisate a accreditar te discoverable: Evidentiar le profilo e messages in le algorithmos de discoperta fields: name: Etiquetta @@ -270,7 +272,7 @@ ia: registrations_mode: Qui pote inscriber se require_invite_text: Requirer un ration pro junger se show_domain_blocks: Monstrar le blocadas de dominio - show_domain_blocks_rationale: Monstrar perque le dominios era blocate + show_domain_blocks_rationale: Monstrar proque le dominios ha essite blocate site_contact_email: Adresse de e-mail de contacto site_contact_username: Nomine de usator de contacto site_extended_description: Description extense @@ -286,8 +288,8 @@ ia: trends_as_landing_page: Usar tendentias como pagina de destination interactions: must_be_follower: Blocar notificationes de personas qui non te seque - must_be_following: Blocar notificationes de gente que tu non sequer - must_be_following_dm: Blocar messages directe de gente que tu non seque + must_be_following: Blocar notificationes de personas que tu non seque + must_be_following_dm: Blocar messages directe de personas que tu non seque invite: comment: Commento invite_request: @@ -301,12 +303,12 @@ ia: sign_up_requires_approval: Limitar inscriptiones severity: Regula notification_emails: - appeal: Alcuno appella un decision de moderator + appeal: Alcuno appella contra un decision de moderator digest: Inviar emails compendio - favourite: Alcuno appreciava tu message - follow: Alcuno te sequeva - follow_request: Alcuno requireva de sequer te - mention: Alcuno te mentionava + favourite: Alcuno ha appreciate tu message + follow: Alcuno ha comenciate a sequer te + follow_request: Alcuno ha demandate de sequer te + mention: Alcuno te ha mentionate pending_account: Nove conto besonia de revision reblog: Alcuno ha impulsate tu message report: Un nove reporto es inviate diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index f0232602bb8891..106d2017d29649 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -3,6 +3,7 @@ is: simple_form: hints: account: + attribution_domains: Eitt á hverja línu. Ver fyrir röngum tilvísunum. discoverable: Opinberar færslur og notandasnið þitt geta birst eða verið mælt með á hinum ýmsu svæðum í Mastodon auk þess sem hægt er að mæla með þér við aðra notendur. display_name: Fullt nafn þitt eða eitthvað til gamans. fields: Heimasíðan þín, fornöfn, aldur eða eitthvað sem þú vilt koma á framfæri. @@ -155,6 +156,7 @@ is: url: Hvert atburðir verða sendir labels: account: + attribution_domains: Vefsvæði sem mega vitna í þig discoverable: Hafa notandasnið og færslur með í reikniritum leitar fields: name: Skýring diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index f0448bba4b60d8..62fe75e838384f 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -3,6 +3,7 @@ it: simple_form: hints: account: + attribution_domains: Uno per riga. Protegge da false attribuzioni. discoverable: I tuoi post pubblici e il tuo profilo potrebbero essere presenti o consigliati in varie aree di Mastodon e il tuo profilo potrebbe essere suggerito ad altri utenti. display_name: Il tuo nome completo o il tuo soprannome. fields: La tua homepage, i pronomi, l'età, tutto quello che vuoi. @@ -155,6 +156,7 @@ it: url: Dove gli eventi saranno inviati labels: account: + attribution_domains: Siti web autorizzati ad accreditarti discoverable: Include il profilo e i post negli algoritmi di scoperta fields: name: Etichetta diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index ba416120426a11..ebf16f839d8a23 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -3,6 +3,7 @@ pt-PT: simple_form: hints: account: + attribution_domains: Um por linha. Protege contra falsas atribuições. discoverable: As suas publicações e perfil públicos podem ser destacados ou recomendados em várias áreas do Mastodon e o seu perfil pode ser sugerido a outros utilizadores. display_name: O seu nome completo ou o seu nome divertido. fields: A sua página inicial, os seus pronomes, idade e tudo o que quiser. @@ -155,6 +156,7 @@ pt-PT: url: Para onde os eventos serão enviados labels: account: + attribution_domains: Websites autorizados a atribuir-lhe crédito discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 7389512896ee4a..daaa5cdf2bcd6f 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -3,6 +3,7 @@ sq: simple_form: hints: account: + attribution_domains: Një për rresht. Kjo mbron nga atribuime të rreme. discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë. display_name: Emri juaj i plotë, ose emri juaj lojcak. fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf. @@ -154,6 +155,7 @@ sq: url: Ku do të dërgohen aktet labels: account: + attribution_domains: Sajte të lejuar t’ju japin hakë discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit fields: name: Etiketë diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 4fc8665b91c57b..21a3ccce8ebfad 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,6 +3,7 @@ uk: simple_form: hints: account: + attribution_domains: Один на рядок. Захищає від фальшивих атрибутів. discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам. display_name: Ваше повне ім'я або ваш псевдонім. fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться. @@ -233,7 +234,7 @@ uk: setting_hide_network: Сховати вашу мережу setting_reduce_motion: Менше руху в анімаціях setting_system_font_ui: Використовувати типовий системний шрифт - setting_system_scrollbars_ui: Використовувати системну прокрутку + setting_system_scrollbars_ui: Використовувати системну панель гортання setting_theme: Тема сайту setting_trends: Показувати популярні сьогодні дописи setting_unfollow_modal: Показувати діалог підтвердження під час відписки від когось diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 84cc4af8173881..f0015e25a6f8f6 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -3,6 +3,7 @@ vi: simple_form: hints: account: + attribution_domains: Bảo vệ khỏi những sự gán ghép sai. discoverable: Hồ sơ và tút công khai của bạn được đề xuất cho những người dùng Mastodon khác. display_name: Tên đầy đủ hoặc biệt danh đều được. fields: Trang blog của bạn, nghề nghiệp, tuổi hoặc bất cứ thứ gì. @@ -155,6 +156,7 @@ vi: url: Nơi những sự kiện được gửi đến labels: account: + attribution_domains: Các trang web được phép ghi nhận bạn discoverable: Cho phép khám phá hồ sơ fields: name: Nhãn diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 1861ee1559e400..1243807d77d0f0 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -3,6 +3,7 @@ zh-TW: simple_form: hints: account: + attribution_domains: 每行一個。以保護偽造署名。 discoverable: 公開嘟文及個人檔案可能於各 Mastodon 功能中被推薦,並且您的個人檔案可能被推薦至其他使用者。 display_name: 完整名稱或暱稱。 fields: 烘培雞、自我認同代稱、年齡,及任何您想分享的。 @@ -155,6 +156,7 @@ zh-TW: url: 事件會被傳送至何處 labels: account: + attribution_domains: 允許對您予與信譽之網站 discoverable: 於探索演算法中推薦個人檔案及嘟文 fields: name: 標籤 diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 6f0ddbd81f1746..c4abba8e111832 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1220,7 +1220,7 @@ uk: set_new_password: Встановити новий пароль setup: email_below_hint_html: Перевірте теку "Спам", або зробіть ще один запит. Ви можете виправити свою електронну адресу, якщо вона неправильна. - email_settings_hint_html: Натисніть посилання, надіслане на %{email} щоб почати використання Mastodon. Ми чекатимемо тут. + email_settings_hint_html: Натисніть посилання, надіслане на %{email}, щоб почати користуватися Mastodon. Ми чекатимемо тут. link_not_received: Не отримали посилання? new_confirmation_instructions_sent: Ви отримаєте новий лист із посиланням для підтвердження протягом кількох хвилин! title: Перевірте вашу поштову скриньку From 8962f1157816848b1eff8ee992410c120d4696e8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 20 Jan 2025 10:17:13 +0100 Subject: [PATCH 18/29] Add warning when selected and detected language is different in web UI (#33042) --- .../compose/components/language_dropdown.jsx | 16 ++-- .../containers/language_dropdown_container.js | 73 +++++++++++++++++++ .../styles/mastodon/components.scss | 10 +++ config/webpack/rules/babel.js | 2 +- package.json | 1 + yarn.lock | 17 +++++ 6 files changed, 113 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.jsx b/app/javascript/mastodon/features/compose/components/language_dropdown.jsx index b164a07cbd8771..20fba29ecba884 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.jsx @@ -27,6 +27,7 @@ class LanguageDropdownMenu extends PureComponent { static propTypes = { value: PropTypes.string.isRequired, + guess: PropTypes.string, frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string).isRequired, onClose: PropTypes.func.isRequired, onChange: PropTypes.func.isRequired, @@ -81,14 +82,17 @@ class LanguageDropdownMenu extends PureComponent { }; search () { - const { languages, value, frequentlyUsedLanguages } = this.props; + const { languages, value, frequentlyUsedLanguages, guess } = this.props; const { searchValue } = this.state; if (searchValue === '') { return [...languages].sort((a, b) => { - // Push current selection to the top of the list - if (a[0] === value) { + if (guess && a[0] === guess) { // Push guessed language higher than current selection + return -1; + } else if (guess && b[0] === guess) { + return 1; + } else if (a[0] === value) { // Push current selection to the top of the list return -1; } else if (b[0] === value) { return 1; @@ -238,6 +242,7 @@ class LanguageDropdown extends PureComponent { static propTypes = { value: PropTypes.string, frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string), + guess: PropTypes.string, intl: PropTypes.object.isRequired, onChange: PropTypes.func, }; @@ -281,7 +286,7 @@ class LanguageDropdown extends PureComponent { }; render () { - const { value, intl, frequentlyUsedLanguages } = this.props; + const { value, guess, intl, frequentlyUsedLanguages } = this.props; const { open, placement } = this.state; const current = preloadedLanguages.find(lang => lang[0] === value) ?? []; @@ -294,7 +299,7 @@ class LanguageDropdown extends PureComponent { onClick={this.handleToggle} onMouseDown={this.handleMouseDown} onKeyDown={this.handleButtonKeyDown} - className={classNames('dropdown-button', { active: open })} + className={classNames('dropdown-button', { active: open, warning: guess !== '' && guess !== value })} > {current[2] ?? value} @@ -306,6 +311,7 @@ class LanguageDropdown extends PureComponent {
lande(text), 500, { trailing: true }); + +const detectedLanguage = createSelector([ + state => state.getIn(['compose', 'text']), +], text => { + if (text.length > 20) { + const guesses = debouncedLande(text); + const [lang, confidence] = guesses[0]; + + if (confidence > 0.8) { + return ISO_639_MAP[lang]; + } + } + + return ''; +}); + const mapStateToProps = state => ({ frequentlyUsedLanguages: getFrequentlyUsedLanguages(state), value: state.getIn(['compose', 'language']), + guess: detectedLanguage(state), }); const mapDispatchToProps = dispatch => ({ diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 072e7cb4a29346..7d234285953add 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -939,6 +939,16 @@ body > [data-popper-placement] { border-color: $ui-highlight-color; color: $primary-text-color; } + + &.warning { + border-color: var(--goldenrod-2); + color: var(--goldenrod-2); + + &.active { + background-color: var(--goldenrod-2); + color: var(--indigo-1); + } + } } .character-counter { diff --git a/config/webpack/rules/babel.js b/config/webpack/rules/babel.js index 902b823e1f80aa..f1b53c36068763 100644 --- a/config/webpack/rules/babel.js +++ b/config/webpack/rules/babel.js @@ -4,7 +4,7 @@ const { env, settings } = require('../configuration'); // Those modules contain modern ES code that need to be transpiled for Webpack to process it const nodeModulesToProcess = [ - '@reduxjs', 'fuzzysort' + '@reduxjs', 'fuzzysort', 'toygrad' ]; module.exports = { diff --git a/package.json b/package.json index 6cb314db344b85..c0f48d5dc4af02 100644 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ "imports-loader": "^1.2.0", "intl-messageformat": "^10.3.5", "js-yaml": "^4.1.0", + "lande": "^1.0.10", "lodash": "^4.17.21", "mark-loader": "^0.1.6", "marky": "^1.2.5", diff --git a/yarn.lock b/yarn.lock index 9293af2f24a102..08a2558986371d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2912,6 +2912,7 @@ __metadata: jest: "npm:^29.5.0" jest-environment-jsdom: "npm:^29.5.0" js-yaml: "npm:^4.1.0" + lande: "npm:^1.0.10" lint-staged: "npm:^15.0.0" lodash: "npm:^4.17.21" mark-loader: "npm:^0.1.6" @@ -11456,6 +11457,15 @@ __metadata: languageName: node linkType: hard +"lande@npm:^1.0.10": + version: 1.0.10 + resolution: "lande@npm:1.0.10" + dependencies: + toygrad: "npm:^2.6.0" + checksum: 10c0/27300be5937b6b9e245a7ea7a8216a0dcf5286a3b7ae38886c10c5c75b83fbfa1a69cd6754ab26bb38c6bd18aa8a2dcb62dea873506accb245cf82084acfee71 + languageName: node + linkType: hard + "language-subtag-registry@npm:^0.3.20": version: 0.3.22 resolution: "language-subtag-registry@npm:0.3.22" @@ -17289,6 +17299,13 @@ __metadata: languageName: node linkType: hard +"toygrad@npm:^2.6.0": + version: 2.6.0 + resolution: "toygrad@npm:2.6.0" + checksum: 10c0/96e42ced87431e99cec7d9b446c7827fe7782c2fd82bb5fc8c4a0855679011d809f9967096a60b4c8ceca867a29f1aadd62af447bdb652cb6f7fee279ae743ed + languageName: node + linkType: hard + "tr46@npm:^1.0.1": version: 1.0.1 resolution: "tr46@npm:1.0.1" From ac59ed39dd408d1f66025b8b0b64f04afe3e7370 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 20 Jan 2025 10:22:49 +0100 Subject: [PATCH 19/29] Fix re-encoding of high-framerate VFR videos with FFmpeg 6+ (#33634) --- lib/paperclip/transcoder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/paperclip/transcoder.rb b/lib/paperclip/transcoder.rb index 3efffa355a52d1..47e3f9f547f632 100644 --- a/lib/paperclip/transcoder.rb +++ b/lib/paperclip/transcoder.rb @@ -52,8 +52,8 @@ def make @output_options['bufsize'] = bitrate * 5 if high_vfr?(metadata) + # TODO: change to `fps_mode` in the future, as `vsync` is being deprecated @output_options['vsync'] = 'vfr' - @output_options['r'] = @vfr_threshold end end end From a0c76f6017013b814c53de6d05ff2791a5de6e98 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 11:36:19 +0100 Subject: [PATCH 20/29] Update dependency i18n to v1.14.7 (#33650) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 54e43482e3d4df..7ddd94a3133fe0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -302,7 +302,7 @@ GEM httplog (1.7.0) rack (>= 2.0) rainbow (>= 2.0.0) - i18n (1.14.6) + i18n (1.14.7) concurrent-ruby (~> 1.0) i18n-tasks (1.0.14) activesupport (>= 4.0.2) From 2deab346b31d05d52a1929b7430f58550faa13c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 11:36:21 +0100 Subject: [PATCH 21/29] Update dependency nokogiri to v1.18.2 (#33651) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7ddd94a3133fe0..c8ffacb5f6e699 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -426,7 +426,7 @@ GEM net-smtp (0.5.0) net-protocol nio4r (2.7.4) - nokogiri (1.18.1) + nokogiri (1.18.2) mini_portile2 (~> 2.8.2) racc (~> 1.4) oj (3.16.9) From 7f866daf637e9303c7b503e0ed29ef8802fcb4c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 11:36:25 +0100 Subject: [PATCH 22/29] Update formatjs monorepo (#33652) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/yarn.lock b/yarn.lock index 08a2558986371d..fba7100ad96723 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2310,14 +2310,14 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.10.0": - version: 2.10.0 - resolution: "@formatjs/icu-messageformat-parser@npm:2.10.0" +"@formatjs/icu-messageformat-parser@npm:2.11.0": + version: 2.11.0 + resolution: "@formatjs/icu-messageformat-parser@npm:2.11.0" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" "@formatjs/icu-skeleton-parser": "npm:1.8.12" tslib: "npm:2" - checksum: 10c0/261d386b19b5031ac097450ebbb51518ec447c191a51616c2a3335d2d675cb37b48898b600753b45dbce92517ad842695a18aed702099243bfc132a7f800dff7 + checksum: 10c0/9ad43847cb4a5c13895af606c634dcf2ec034d484cbbce6566746b60920643f33cbc5e2e3fd1efe21bcfdb555e1ee527e4518768001c3b36bf2e76c171e4049f languageName: node linkType: hard @@ -2382,21 +2382,21 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl@npm:3.1.1": - version: 3.1.1 - resolution: "@formatjs/intl@npm:3.1.1" +"@formatjs/intl@npm:3.1.3": + version: 3.1.3 + resolution: "@formatjs/intl@npm:3.1.3" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" "@formatjs/fast-memoize": "npm:2.2.6" - "@formatjs/icu-messageformat-parser": "npm:2.10.0" - intl-messageformat: "npm:10.7.12" + "@formatjs/icu-messageformat-parser": "npm:2.11.0" + intl-messageformat: "npm:10.7.14" tslib: "npm:2" peerDependencies: typescript: 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/409ba1893635348e3045089fe5dd6f489a5084ce7116798284c5879eb61c5ae3221a3f2a6d47b5d169177d6f482e632f1378d97a6e7821679a19550ccda83b13 + checksum: 10c0/1f9fce896b69dd3ff84221d2d18fbd57f8968c1d0691e44d33ac949d3d6f4e86f9c3075e4da870fb0b189d4952ec5e8bc7375558fa85c37bcb76a73aeb6f9f52 languageName: node linkType: hard @@ -2420,11 +2420,11 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.28": - version: 3.13.28 - resolution: "@formatjs/ts-transformer@npm:3.13.28" +"@formatjs/ts-transformer@npm:3.13.30": + version: 3.13.30 + resolution: "@formatjs/ts-transformer@npm:3.13.30" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.10.0" + "@formatjs/icu-messageformat-parser": "npm:2.11.0" "@types/json-stable-stringify": "npm:1" "@types/node": "npm:14 || 16 || 17 || 18 || 20 || 22" chalk: "npm:4" @@ -2436,7 +2436,7 @@ __metadata: peerDependenciesMeta: ts-jest: optional: true - checksum: 10c0/3ee015082c6cad4b3c33dc86cc40b69a5544cea1dc62b164d8e0d5710835bd72ea757b7a071fc9848c7b9e25073ea085c38125ba69460cb3e0cb5592b79f231a + checksum: 10c0/ef828b477863b8205390ed42d94c4a8d4fcab10d4982e27dc3feaa85c1e2da317b73108f8d3b32f6191d1c5c41eb34d6909a53ba734dfca9146842992268d95c languageName: node linkType: hard @@ -5331,21 +5331,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.31 - resolution: "babel-plugin-formatjs@npm:10.5.31" + version: 10.5.33 + resolution: "babel-plugin-formatjs@npm:10.5.33" dependencies: "@babel/core": "npm:^7.25.0" "@babel/helper-plugin-utils": "npm:^7.25.0" "@babel/plugin-syntax-jsx": "npm:^7.25.0" "@babel/traverse": "npm:^7.25.0" "@babel/types": "npm:^7.25.0" - "@formatjs/icu-messageformat-parser": "npm:2.10.0" - "@formatjs/ts-transformer": "npm:3.13.28" + "@formatjs/icu-messageformat-parser": "npm:2.11.0" + "@formatjs/ts-transformer": "npm:3.13.30" "@types/babel__core": "npm:^7.20.5" "@types/babel__helper-plugin-utils": "npm:^7.10.3" "@types/babel__traverse": "npm:^7.20.6" tslib: "npm:2" - checksum: 10c0/b73a0250efd97b1a76e62b63e6ca6a1962eec4c46b832ca94241ef28299c2118bea93a5c765fc2b3e95520815d91bde31450b4793b34f5ca95faf61ea2f04f77 + checksum: 10c0/57c0477c576fbf717a11f0ca15d3f18990264a36f20d8d7e2b66461ed1e6b6880bb4b7847b7f4289a81b45f36b7ec2687becb2dde5006b53f97953b3cc3bc39b languageName: node linkType: hard @@ -9909,15 +9909,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.12, intl-messageformat@npm:^10.3.5": - version: 10.7.12 - resolution: "intl-messageformat@npm:10.7.12" +"intl-messageformat@npm:10.7.14, intl-messageformat@npm:^10.3.5": + version: 10.7.14 + resolution: "intl-messageformat@npm:10.7.14" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" "@formatjs/fast-memoize": "npm:2.2.6" - "@formatjs/icu-messageformat-parser": "npm:2.10.0" + "@formatjs/icu-messageformat-parser": "npm:2.11.0" tslib: "npm:2" - checksum: 10c0/c91917edf14a31bd76419cc9d9d1d4c1a044bf64bc1b5db8d359940b26455d0fd6cec49ede7593b8f631aa1af749db29d719d5b2e4ceb08939f88cd0ed886b03 + checksum: 10c0/914c11118c47bb7d0163a7d54afebf52ae4fe9b250bba609b5db4c802a34f8bf758edbbc8c58094203205faf76948c7112399addb32e9b36e40483c4cf7c1cb7 languageName: node linkType: hard @@ -14669,16 +14669,16 @@ __metadata: linkType: hard "react-intl@npm:^7.0.0": - version: 7.1.1 - resolution: "react-intl@npm:7.1.1" + version: 7.1.3 + resolution: "react-intl@npm:7.1.3" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.2" - "@formatjs/icu-messageformat-parser": "npm:2.10.0" - "@formatjs/intl": "npm:3.1.1" + "@formatjs/icu-messageformat-parser": "npm:2.11.0" + "@formatjs/intl": "npm:3.1.3" "@types/hoist-non-react-statics": "npm:3" "@types/react": "npm:16 || 17 || 18" hoist-non-react-statics: "npm:3" - intl-messageformat: "npm:10.7.12" + intl-messageformat: "npm:10.7.14" tslib: "npm:2" peerDependencies: react: ^16.6.0 || 17 || 18 @@ -14686,7 +14686,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/a03dfbfd98210b176d02c54d670550a15209d08a1d43dbb5facd79705f3b38f79ae9dcc54e8645b4326fc1b215245262e84f210103df561e928113c1e2a7791c + checksum: 10c0/64d635819f4bdd09325ca4f7479c7b0254b45da76cc1cb70c4b51a404bf1cf2976125d4df5874fe34527e84813703ac6ff707e06e0e96616951fae1f20f9d246 languageName: node linkType: hard From 004e120e027e54830f4fa90b3ec610ac00a9015c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 08:59:52 +0100 Subject: [PATCH 23/29] Update dependency selenium-webdriver to v4.28.0 (#33667) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c8ffacb5f6e699..4e84cd12379942 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -384,7 +384,7 @@ GEM llhttp-ffi (0.5.0) ffi-compiler (~> 1.0) rake (~> 13.0) - logger (1.6.4) + logger (1.6.5) lograge (0.14.0) actionpack (>= 4) activesupport (>= 4) @@ -757,7 +757,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) securerandom (0.4.1) - selenium-webdriver (4.27.0) + selenium-webdriver (4.28.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) From 7543c9064250bed6277cbf0dc3b6313de1ede6c5 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 21 Jan 2025 03:00:35 -0500 Subject: [PATCH 24/29] Use bundler version 2.6.3 (#33658) --- Gemfile.lock | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4e84cd12379942..3ffffdd2e2eb0f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -283,7 +283,7 @@ GEM hashie (5.0.0) hcaptcha (7.1.0) json - highline (3.1.1) + highline (3.1.2) reline hiredis (0.6.3) hkdf (0.3.0) @@ -406,7 +406,7 @@ GEM mime-types (3.6.0) logger mime-types-data (~> 3.2015) - mime-types-data (3.2024.1203) + mime-types-data (3.2025.0107) mini_mime (1.1.5) mini_portile2 (2.8.8) minitest (5.25.4) @@ -415,7 +415,7 @@ GEM mutex_m (0.3.0) net-http (0.6.0) uri - net-imap (0.5.4) + net-imap (0.5.5) date net-protocol net-ldap (0.19.0) @@ -559,7 +559,7 @@ GEM ox (2.14.20) bigdecimal (>= 3.0) parallel (1.26.3) - parser (3.3.6.0) + parser (3.3.7.0) ast (~> 2.4.1) racc parslet (2.0.0) @@ -581,7 +581,7 @@ GEM activesupport (>= 7.0.0) rack railties (>= 7.0.0) - psych (5.2.2) + psych (5.2.3) date stringio public_suffix (6.0.1) @@ -658,7 +658,7 @@ GEM link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.7.0) rdf (~> 3.3) - rdoc (6.10.0) + rdoc (6.11.0) psych (>= 4.0.0) redcarpet (3.6.0) redis (4.8.1) @@ -732,7 +732,7 @@ GEM rack (>= 1.1) rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (3.3.0) + rubocop-rspec (3.4.0) rubocop (~> 1.61) rubocop-rspec_rails (2.30.0) rubocop (~> 1.61) @@ -871,7 +871,8 @@ GEM semantic_range (>= 2.3.0) webrick (1.9.1) websocket (1.2.11) - websocket-driver (0.7.6) + websocket-driver (0.7.7) + base64 websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) wisper (2.0.1) @@ -1038,4 +1039,4 @@ RUBY VERSION ruby 3.4.1p0 BUNDLED WITH - 2.6.2 + 2.6.3 From 45149cd5e1750812f5587f904e052e7512035773 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 21 Jan 2025 03:16:40 -0500 Subject: [PATCH 25/29] Use `expect` for nested params in `auth/setup#update` (#33657) --- app/controllers/auth/setup_controller.rb | 2 +- spec/requests/auth/setup_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/controllers/auth/setup_controller.rb b/app/controllers/auth/setup_controller.rb index 376a30c16fd6f5..5e7b14646a0848 100644 --- a/app/controllers/auth/setup_controller.rb +++ b/app/controllers/auth/setup_controller.rb @@ -35,6 +35,6 @@ def set_user end def user_params - params.require(:user).permit(:email) + params.expect(user: [:email]) end end diff --git a/spec/requests/auth/setup_spec.rb b/spec/requests/auth/setup_spec.rb index fa3c19680566db..72413e17409ff2 100644 --- a/spec/requests/auth/setup_spec.rb +++ b/spec/requests/auth/setup_spec.rb @@ -24,4 +24,15 @@ end end end + + describe 'PUT /auth/setup' do + before { sign_in Fabricate(:user, confirmed_at: nil) } + + it 'gracefully handles invalid nested params' do + put '/auth/setup?user=invalid' + + expect(response) + .to have_http_status(400) + end + end end From 9e90248abc89417c9433d66f302867e932ded3cf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 09:37:53 +0100 Subject: [PATCH 26/29] New Crowdin Translations (automated) (#33668) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ast.json | 6 ++++++ app/javascript/mastodon/locales/be.json | 12 +++++++++--- app/javascript/mastodon/locales/fa.json | 13 ++++++++++++ config/locales/activerecord.be.yml | 2 +- config/locales/activerecord.fa.yml | 2 ++ config/locales/fa.yml | 25 ++++++++++++++++++++++++ config/locales/simple_form.bg.yml | 2 ++ config/locales/simple_form.fa.yml | 2 ++ config/locales/simple_form.lt.yml | 2 ++ 9 files changed, 62 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 6af0bd0582997e..1863b1514e7018 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -58,6 +58,7 @@ "account.unendorse": "Dexar de destacar nel perfil", "account.unfollow": "Dexar de siguir", "account.unmute": "Activar los avisos de @{name}", + "account.unmute_notifications_short": "Dexar de silenciar notificaciones", "account.unmute_short": "Activar los avisos", "account_note.placeholder": "Calca equí p'amestar una nota", "admin.dashboard.retention.average": "Media", @@ -70,9 +71,13 @@ "announcement.announcement": "Anunciu", "annual_report.summary.followers.followers": "siguidores", "annual_report.summary.new_posts.new_posts": "artículos nuevos", + "annual_report.summary.thanks": "Gracies por ser parte de Mastodon!", "attachments_list.unprocessed": "(ensin procesar)", "block_modal.show_less": "Amosar menos", "block_modal.show_more": "Amosar más", + "block_modal.they_cant_mention": "Nun van poder mencionate o siguite.", + "block_modal.they_cant_see_posts": "Nun pueden ver les tos espublizaciones y tu nun podrás ver les suyes.", + "block_modal.you_wont_see_mentions": "Nun verás espublizaciones que-yos mencionen.", "bundle_column_error.error.body": "La páxina solicitada nun se pudo renderizar. Ye posible que seya pola mor d'un fallu nel códigu o por un problema de compatibilidá del restolador.", "bundle_column_error.error.title": "¡Oh, non!", "bundle_column_error.network.body": "Hebo un error al tentar de cargar esta páxina. Esto pudo ser pola mor d'un problema temporal cola conexón a internet o con esti sirvidor.", @@ -116,6 +121,7 @@ "compose.language.search": "Buscar llingües…", "compose.published.body": "Espublizóse l'artículu.", "compose.published.open": "Abrir", + "compose.saved.body": "Post guardáu.", "compose_form.direct_message_warning_learn_more": "Saber más", "compose_form.encryption_warning": "Los artículos de Mastodon nun tán cifraos de puntu a puntu. Nun compartas nengún tipu d'información sensible per Mastodon.", "compose_form.lock_disclaimer": "La to cuenta nun ye {locked}. Cualesquier perfil pue siguite pa ver los artículos que son namás pa siguidores.", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 8ad231eb5bab09..2a9a43d014628d 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -140,16 +140,16 @@ "column.blocks": "Заблакіраваныя карыстальнікі", "column.bookmarks": "Закладкі", "column.community": "Лакальная стужка", - "column.create_list": "Стварыць сьпіс", + "column.create_list": "Стварыць спіс", "column.direct": "Асабістыя згадванні", "column.directory": "Праглядзець профілі", "column.domain_blocks": "Заблакіраваныя дамены", - "column.edit_list": "Рэдагаваць сьпіс", + "column.edit_list": "Рэдагаваць спіс", "column.favourites": "Упадабанае", "column.firehose": "Стужкі", "column.follow_requests": "Запыты на падпіску", "column.home": "Галоўная", - "column.list_members": "Кіраваньне карыстальнікамі сьпіса", + "column.list_members": "Кіраванне ўдзельнікамі спісу", "column.lists": "Спісы", "column.mutes": "Ігнараваныя карыстальнікі", "column.notifications": "Апавяшчэнні", @@ -460,11 +460,17 @@ "link_preview.author": "Ад {name}", "link_preview.more_from_author": "Больш ад {name}", "link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}", + "lists.add_member": "Дадаць", + "lists.create": "Стварыць", + "lists.create_list": "Стварыць спіс", "lists.delete": "Выдаліць спіс", "lists.edit": "Рэдагаваць спіс", + "lists.remove_member": "Выдаліць", "lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся", "lists.replies_policy.list": "Удзельнікі гэтага спісу", "lists.replies_policy.none": "Нікога", + "lists.save": "Захаваць", + "lists.search": "Пошук", "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}", "loading_indicator.label": "Загрузка…", "media_gallery.hide": "Схаваць", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 29cc743879d9ad..5dc9d57ce58f77 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -98,6 +98,7 @@ "annual_report.summary.highlighted_post.by_favourites": "پرپسندترین فرسته", "annual_report.summary.highlighted_post.by_reblogs": "پرتقویت‌ترین فرسته", "annual_report.summary.highlighted_post.by_replies": "پرپاسخ‌ترین فرسته", + "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "پراستفاده‌ترین کاره", "annual_report.summary.most_used_hashtag.most_used_hashtag": "پراستفاده‌ترین برچسب", "annual_report.summary.most_used_hashtag.none": "هیچ‌کدام", @@ -456,6 +457,7 @@ "keyboard_shortcuts.toggle_hidden": "نمایش/نهفتن نوشتهٔ پشت هشدار محتوا", "keyboard_shortcuts.toggle_sensitivity": "نمایش/نهفتن رسانه", "keyboard_shortcuts.toot": "شروع یک فرستهٔ جدید", + "keyboard_shortcuts.translate": "برای ترجمه یک پست", "keyboard_shortcuts.unfocus": "برداشتن تمرکز از ناحیهٔ نوشتن یا جست‌وجو", "keyboard_shortcuts.up": "بالا بردن در سیاهه", "lightbox.close": "بستن", @@ -536,6 +538,9 @@ "navigation_bar.security": "امنیت", "not_signed_in_indicator.not_signed_in": "برای دسترسی به این منبع باید وارد شوید.", "notification.admin.report": "{name}، {target} را گزارش داد", + "notification.admin.report_account": "{name} {count, plural, one {یک پست} other {پست}} از {target} برای {category} را گزارش داد", + "notification.admin.report_account_other": "{name} {count, plural, one {یک پست} other {پست}} از {target} را گزارش داد", + "notification.admin.report_statuses": "{name} {target} برای {category} را گزارش داد", "notification.admin.report_statuses_other": "{name}، {target} را گزارش داد", "notification.admin.sign_up": "{name} ثبت نام کرد", "notification.admin.sign_up.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} ثبت‌نام کردند", @@ -544,6 +549,7 @@ "notification.favourite": "{name} فرسته‌تان را برگزید", "notification.favourite.name_and_others_with_link": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} فرسته‌تان را برگزیدند", "notification.favourite_pm": "{name} ذکر خصوصی شما را مورد علاقه قرار داد", + "notification.favourite_pm.name_and_others_with_link": "{name} و {count, plural, one {دیگری} other {دیگران}} ذکر خصوصی شما را مورد علاقه قرار دادند", "notification.follow": "‫{name}‬ پی‌گیرتان شد", "notification.follow.name_and_others": "{name} و {count, plural, other {#}} نفر دیگر پیتان گرفتند", "notification.follow_request": "{name} درخواست پی‌گیریتان را داد", @@ -569,16 +575,21 @@ "notification.reblog.name_and_others_with_link": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} فرسته‌تان را تقویت کردند", "notification.relationships_severance_event": "قطع ارتباط با {name}", "notification.relationships_severance_event.account_suspension": "یک سرپرست از {from} {target} را به حالت تعلیق درآورده است، به این معنی که دیگر نمی‌توانید به‌روزرسانی‌ها را از آنها دریافت کنید یا با آنها تعامل داشته باشید.", + "notification.relationships_severance_event.domain_block": "یک سرپرست از {from} {target} را مسدود کرده است، از جمله {followersCount} از دنبال‌کنندگان شما و {followingCount, plural, one {حساب} other {حساب‌}} که دنبال می‌کنید.", "notification.relationships_severance_event.learn_more": "بیشتر بدانید", + "notification.relationships_severance_event.user_domain_block": "شما {target} را مسدود کرده‌اید، {followersCount} از دنبال‌کنندگان خود و {followingCount, plural, one {حساب} other {حساب}} که دنبال می‌کنید را حذف کرده‌اید.", "notification.status": "{name} چیزی فرستاد", "notification.update": "{name} فرسته‌ای را ویرایش کرد", "notification_requests.accept": "پذیرش", + "notification_requests.accept_multiple": "{count, plural, one {پذیرش درخواست…} other {پذیرش درخواست‌ها…}}", "notification_requests.confirm_accept_multiple.button": "پذیرش {count, plural,one {درخواست} other {درخواست‌ها}}", "notification_requests.confirm_accept_multiple.message": "در حال پذیرش {count, plural,one {یک}other {#}} درخواست آگاهی هستید. مطمئنید که می‌خواهید ادامه دهید؟", "notification_requests.confirm_accept_multiple.title": "پذیرش درخواست‌های آگاهی؟", "notification_requests.confirm_dismiss_multiple.button": "رد {count, plural,one {درخواست} other {درخواست‌ها}}", + "notification_requests.confirm_dismiss_multiple.message": "شما در شرف رد کردن {count, plural, one {یک درخواست آگاهی} other {درخواست آگاهی}} هستید. دیگر نمی توانید به راحتی به {count, plural, one {آن} other {آن‌ها}} دسترسی پیدا کنید. آیا مطمئن هستید که می خواهید ادامه دهید؟", "notification_requests.confirm_dismiss_multiple.title": "رد کردن درخواست‌های آگاهی؟", "notification_requests.dismiss": "دورانداختن", + "notification_requests.dismiss_multiple": "{count, plural, one {دورانداختن درخواست…} other {دورانداختن درخواست‌ها…}}", "notification_requests.edit_selection": "ویرایش", "notification_requests.exit_selection": "انجام شد", "notification_requests.explainer_for_limited_account": "اعلان‌های این حساب فیلتر شده‌اند زیرا حساب توسط یک ناظر محدود شده است.", @@ -686,6 +697,7 @@ "recommended": "پیشنهادشده", "refresh": "نوسازی", "regeneration_indicator.please_stand_by": "لطفا منتظر باشید.", + "regeneration_indicator.preparing_your_home_feed": "در حال آماده کردن خوراک خانگی شما…", "relative_time.days": "{number} روز", "relative_time.full.days": "{number, plural, one {# روز} other {# روز}} پیش", "relative_time.full.hours": "{number, plural, one {# ساعت} other {# ساعت}} پیش", @@ -825,6 +837,7 @@ "status.reblogs.empty": "هنوز هیچ کسی این فرسته را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا نمایش داده خواهد شد.", "status.redraft": "حذف و بازنویسی", "status.remove_bookmark": "برداشتن نشانک", + "status.remove_favourite": "حذف از موارد دلخواه", "status.replied_in_thread": "در رشته پاسخ داده", "status.replied_to": "به {name} پاسخ داد", "status.reply": "پاسخ", diff --git a/config/locales/activerecord.be.yml b/config/locales/activerecord.be.yml index e0c7b14622af01..f95fbd77d0e38d 100644 --- a/config/locales/activerecord.be.yml +++ b/config/locales/activerecord.be.yml @@ -36,7 +36,7 @@ be: list_account: attributes: account_id: - taken: ужо ў сьпісе + taken: ужо ў спісе must_be_following: мусіць быць падпісаным уліковым запісам status: attributes: diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml index c59890da9ddba5..6af1a42e2709eb 100644 --- a/config/locales/activerecord.fa.yml +++ b/config/locales/activerecord.fa.yml @@ -23,6 +23,8 @@ fa: models: account: attributes: + fields: + fields_with_values_missing_labels: حاوی مقادیری با برچسب های گم شده username: invalid: تنها حروف، اعداد، و زیرخط reserved: محفوظ است diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 0e3ed188094acd..8f96137bdbdcff 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -187,6 +187,7 @@ fa: create_domain_block: ایجاد انسداد دامنه create_email_domain_block: ایجاد انسداد دامنهٔ رایانامه create_ip_block: ایجاد قاعدهٔ آی‌پی + create_relay: ایجاد رله create_unavailable_domain: ایجاد دامنهٔ ناموجود create_user_role: ایجاد نقش demote_user: تنزل کاربر @@ -198,14 +199,17 @@ fa: destroy_email_domain_block: حذف انسداد دامنهٔ رایانامه destroy_instance: پاکسازی دامنه destroy_ip_block: حذف قاعدهٔ آی‌پی + destroy_relay: حذف رله destroy_status: حذف وضعیت destroy_unavailable_domain: حذف دامنهٔ ناموجود destroy_user_role: نابودی نقش disable_2fa_user: از کار انداختن ورود دومرحله‌ای disable_custom_emoji: از کار انداختن اموجی سفارشی + disable_relay: غیرفعال‌سازی رله disable_sign_in_token_auth_user: از کار انداختن تأیید هویت ژتون رایانامه‌ای برای کاربر disable_user: از کار انداختن کاربر enable_custom_emoji: به کار انداختن اموجی سفارشی + enable_relay: فعال‌سازی رله enable_sign_in_token_auth_user: به کار انداختن تأیید هویت ژتون رایانامه‌ای برای کاربر enable_user: به کار انداختن کاربر memorialize_account: یادسپاری حساب @@ -248,6 +252,7 @@ fa: create_domain_block_html: "%{name} دامنهٔ %{target} را مسدود کرد" create_email_domain_block_html: "%{name} دامنهٔ رایانامهٔ %{target} را مسدود کرد" create_ip_block_html: "%{name} برای آی‌پی %{target} قانونی ایجاد کرد" + create_relay_html: "%{name} یک رله %{target} ایجاد کرد" create_unavailable_domain_html: "%{name} تحویل محتوا به دامنه %{target} را متوقف کرد" create_user_role_html: "%{name} نقش %{target} را ایجاد کرد" demote_user_html: "%{name} کاربر %{target} را تنزل داد" @@ -259,14 +264,17 @@ fa: destroy_email_domain_block_html: "%{name} انسداد دامنهٔ رایانامهٔ %{target} را برداشت" destroy_instance_html: "%{name} دامنه %{target} را پاکسازی کرد" destroy_ip_block_html: "%{name} قاعدهٔ آی‌پی %{target} را حذف کرد" + destroy_relay_html: "%{name} رله %{target} را حذف کرد" destroy_status_html: "%{name} وضعیت %{target} را برداشت" destroy_unavailable_domain_html: "%{name} تحویل محتوا به دامنه %{target} را از سر گرفت" destroy_user_role_html: "%{name} نقش %{target} را حذف کرد" disable_2fa_user_html: "%{name} ضرورت ورود دو مرحله‌ای را برای کاربر %{target} غیر فعال کرد" disable_custom_emoji_html: "%{name} شکلک %{target} را غیرفعال کرد" + disable_relay_html: "%{name} رله %{target} را غیرفعال کرد" disable_sign_in_token_auth_user_html: "%{name}، احراز هویت با توکن رایانامه را برای %{target} غیرفعال کرد" disable_user_html: "%{name} ورود را برای کاربر %{target} غیرفعال کرد" enable_custom_emoji_html: "%{name} شکلک %{target} را فعال کرد" + enable_relay_html: "%{name} رله %{target} را فعال کرد" enable_sign_in_token_auth_user_html: "%{name}، احراز هویت با توکن رایانامه را برای %{target} فعال کرد" enable_user_html: "%{name} ورود را برای کاربر %{target} فعال کرد" memorialize_account_html: "%{name} حساب %{target} را تبدیل به صفحهٔ یادمان کرد" @@ -1415,13 +1423,28 @@ fa: domain_blocking_html: one: شما می‌خواهید لیست مسدودسازی دامنه خود را با حداکثر %{count} دامنه از %{filename} جایگزین کنید. other: شما می خواهید لیست مسدودسازی دامنه خود را با حداکثر %{count} دامنه از %{filename} جایگزین کنید. + following_html: + one: شما در شرف دنبال کردن حداکثر %{count} حساب از %{filename} هستید و دنبال کردن افراد دیگری را متوقف می‌کنید. + other: شما در شرف دنبال کردن حداکثر %{count} حساب از %{filename} هستید و دنبال کردن افراد دیگری را متوقف می‌کنید. lists_html: one: شما می خواهید لیست های خود را با محتوای %{filename} جایگزین کنید. حداکثر %{count} حساب به لیست‌های جدید اضافه می‌شود. other: شما می خواهید لیست های خود را با محتوای %{filename} جایگزین کنید. حداکثر %{count} حساب به لیست‌های جدید اضافه می‌شود. + muting_html: + one: شما می‌خواهید لیست حساب‌های بی‌صدا را جایگزین کنید با حداکثر %{count} حساب از %{filename}. + other: شما می‌خواهید لیست حساب‌های بی‌صدا را جایگزین کنید با حداکثر %{count} حساب از %{filename}. preambles: blocking_html: one: شما در شرف مسدود کردن حداکثر %{count} حساب از %{filename} هستید. other: شما در شرف مسدود کردن حداکثر %{count} حساب از %{filename} هستید. + bookmarks_html: + one: شما می‌خواهید تا %{count} پست را از %{filename} به نشانک‌ها خود اضافه کنید. + other: شما می‌خواهید تا %{count} پست را از %{filename} به نشانک‌ها خود اضافه کنید. + domain_blocking_html: + one: شما در شرف مسدود کردن تا %{count} دامنه از %{filename} هستید. + other: شما در شرف مسدود کردن تا %{count} دامنه از %{filename} هستید. + following_html: + one: شما در شرف دنبال کردن حداکثر %{count} حساب از %{filename} هستید. + other: شما در شرف دنبال کردن حداکثر %{count} حساب از %{filename} هستید. lists_html: one: شما در حال افزودن %{count} حساب از %{filename} به لیست‌های خود هستید. اگر لیستی برای افزودن وجود نداشته باشد، لیست های جدیدی ایجاد می شود. other: شما می‌خواهید تا %{count} حساب از %{filename} را به فهرست‌های خود اضافه کنید. اگر لیستی برای افزودن وجود نداشته باشد، لیست های جدیدی ایجاد می شود. @@ -1902,6 +1925,8 @@ fa: details: 'جزییات تلاش‌ها برای ورد:' explanation: شخصی سعی کرده است به حساب شما وارد شود اما یک عامل احراز هویت دوم نامعتبر ارائه کرده است. further_actions_html: اگر این شما نبودید، توصیه می کنیم فورا %{action} را انجام دهید زیرا ممکن است به خطر بیفتد. + subject: عدم موفقیت در تأیید هویت عامل دوم + title: احراز هویت عامل دوم ناموفق بود suspicious_sign_in: change_password: تغییر گذرواژه‌تان details: 'جزییات ورود:' diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index a903a3be06da87..dacd1f63726c7c 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -133,6 +133,7 @@ bg: changelog: Може да се структурира със синтаксиса на Markdown. text: Може да се структурира със синтаксиса на Markdown. terms_of_service_generator: + domain: Неповторимо идентифициране на онлайн услугата, която предоставяте. jurisdiction: Впишете държавата, където живее всеки, който плаща сметките. Ако е дружество или друго образувание, то впишете държавата, в която е регистрирано, и градът, регионът, територията или щатът според случая. user: chosen_languages: Само публикации на отметнатите езици ще се показват в публичните часови оси @@ -149,6 +150,7 @@ bg: url: До къде ще се изпращат събитията labels: account: + attribution_domains: Уебсайтове, позволено им да приписват авторството ви discoverable: Включване на профил и публикации в алгоритмите за откриване fields: name: Етикет diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 7aaa146f31af27..e39e27f6dd1e11 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -3,6 +3,7 @@ fa: simple_form: hints: account: + attribution_domains: در هر خط، یک مورد. از ویژگی های نادرست محافظت می کند. discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود. display_name: نام کامل یا باحالتان. fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید. @@ -155,6 +156,7 @@ fa: url: جایی که رویدادها فرستاده می‌شوند labels: account: + attribution_domains: وب‌سایت‌هایی که اجازه دارند به شما اعتبار بدهند discoverable: مشخص کردن مشخصات و فرسته‌ها در الگوریتم‌های اکتشاف fields: name: برچسب diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index c7aaeab9066a65..73460d26678479 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -3,6 +3,7 @@ lt: simple_form: hints: account: + attribution_domains: Po vieną eilutėje. Apsaugo nuo klaidingų atributų. discoverable: Tavo vieši įrašai ir profilis gali būti rodomi arba rekomenduojami įvairiose Mastodon vietose, o profilis gali būti siūlomas kitiems naudotojams. display_name: Tavo pilnas vardas arba smagus vardas. fields: Tavo pagrindinis puslapis, įvardžiai, amžius, bet kas, ko tik nori. @@ -118,6 +119,7 @@ lt: role: Vaidmuo valdo, kokius leidimus naudotojas turi. labels: account: + attribution_domains: Svetainės, kuriuose leidžiama jus įvardyti discoverable: Rekomenduoti profilį ir įrašus į atradimo algoritmus indexable: Įtraukti viešus įrašus į paieškos rezultatus show_collections: Rodyti sekimus ir sekėjus profilyje From 4ebdfed8ea7d16d203da73051ef26bbcdeb63681 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 21 Jan 2025 10:53:52 +0100 Subject: [PATCH 27/29] Fix opening modals losing some location parameters (#33670) --- app/javascript/mastodon/components/modal_root.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/components/modal_root.jsx b/app/javascript/mastodon/components/modal_root.jsx index b0d88fe8f90eb9..1eae0819af7b2d 100644 --- a/app/javascript/mastodon/components/modal_root.jsx +++ b/app/javascript/mastodon/components/modal_root.jsx @@ -118,9 +118,9 @@ class ModalRoot extends PureComponent { } _ensureHistoryBuffer () { - const { pathname, state } = this.history.location; + const { pathname, search, hash, state } = this.history.location; if (!state || state.mastodonModalKey !== this._modalHistoryKey) { - this.history.push(pathname, { ...state, mastodonModalKey: this._modalHistoryKey }); + this.history.push({ pathname, search, hash }, { ...state, mastodonModalKey: this._modalHistoryKey }); } } From 11786f1114f9dfb5a17810d14477a94162f94064 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 21 Jan 2025 12:34:22 +0100 Subject: [PATCH 28/29] Change design of edit media modal in web UI (#33516) --- app/javascript/images/reticle.png | Bin 1439 -> 0 bytes app/javascript/mastodon/actions/compose.js | 2 +- .../mastodon/actions/compose_typed.ts | 70 +++ app/javascript/mastodon/actions/modal.ts | 1 + app/javascript/mastodon/api/compose.ts | 7 + app/javascript/mastodon/components/button.tsx | 3 + .../mastodon/components/follow_button.tsx | 10 +- app/javascript/mastodon/components/gifv.tsx | 98 ++-- .../features/alt_text_modal/index.tsx | 531 ++++++++++++++++++ .../mastodon/features/audio/index.jsx | 12 +- .../compose/components/character_counter.jsx | 18 - .../compose/components/character_counter.tsx | 16 + .../compose/components/compose_form.jsx | 1 + .../features/compose/components/upload.tsx | 27 +- .../compose/components/upload_form.tsx | 20 +- .../components/notification_follow.tsx | 4 +- .../features/ui/components/boost_modal.tsx | 1 - .../ui/components/focal_point_modal.jsx | 438 --------------- .../features/ui/components/modal_root.jsx | 7 +- .../features/ui/containers/modal_container.js | 4 +- app/javascript/mastodon/locales/en.json | 21 +- app/javascript/mastodon/reducers/compose.js | 65 +-- app/javascript/mastodon/reducers/index.ts | 4 +- app/javascript/mastodon/reducers/modal.ts | 34 +- .../styles/mastodon-light/diff.scss | 9 +- .../styles/mastodon/components.scss | 232 ++------ app/javascript/styles/mastodon/forms.scss | 29 +- app/javascript/types/tesseract.d.ts | 3 + app/views/admin/accounts/index.html.haml | 2 +- app/views/admin/custom_emojis/index.html.haml | 2 +- .../confirm_suspension.html.haml | 2 +- app/views/admin/instances/index.html.haml | 2 +- app/views/admin/relays/index.html.haml | 2 +- app/views/admin/reports/index.html.haml | 2 +- app/views/admin/tags/index.html.haml | 2 +- .../otp_authentication/show.html.haml | 2 +- .../webauthn_credentials/index.html.haml | 2 +- .../index.html.haml | 2 +- config/webpack/rules/tesseract.js | 5 +- package.json | 2 +- spec/system/ocr_spec.rb | 4 +- yarn.lock | 121 +--- 42 files changed, 919 insertions(+), 900 deletions(-) delete mode 100644 app/javascript/images/reticle.png create mode 100644 app/javascript/mastodon/actions/compose_typed.ts create mode 100644 app/javascript/mastodon/api/compose.ts create mode 100644 app/javascript/mastodon/features/alt_text_modal/index.tsx delete mode 100644 app/javascript/mastodon/features/compose/components/character_counter.jsx create mode 100644 app/javascript/mastodon/features/compose/components/character_counter.tsx delete mode 100644 app/javascript/mastodon/features/ui/components/focal_point_modal.jsx create mode 100644 app/javascript/types/tesseract.d.ts diff --git a/app/javascript/images/reticle.png b/app/javascript/images/reticle.png deleted file mode 100644 index a724ac0bcdf53577a4f50e46f5317d196993c5c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1439 zcmeAS@N?(olHy`uVBq!ia0vp^DImLc*Dc-h_F-qbhq1aef135gN4F=3NIVs~-l2IzL}A+d#V$;W zk~5?@t9wQ5H>zxKVC@S!zE=2z|BH+Y^GmYKM+6QpS+tLvD_BP3wFSrJb(3z@ZhE8I zBi25p+{S7`{T;noyWQOPTrha{^OufmS=*Y*fK#X6%{1IBSTpzU&m2Y(1_ov;PZ!6K z3dSS_)*dFeMWRdtt zE4%mKcbrt?k!Zx-lwe|9KkNVJ)i*Ubnr==xo*tiD)_(cvw+Gh!x1WBwmAmTtV`Fh^ zFRzJ_nVpNzylLlZOwf?&RN9@PBExlTL4b|ozd0=;C+8n^k>Of$>S&jjM`)ztwB-un zQ`hZcE4p&!)hh+>+UD(oMW(N$Un$0}S-F$-(^ix1#}q=NtJ$Z#%*byxnfpsm5*2&YLVn0N4B#4yLRp4#QOs5 z^@Yvy@-x~U5;K_Je=3>1V8hDOhiB``W{BMWkXFrZQud}|>T-S7-k|rlKN`JlI`vLY zB4nYH95&K0@xhsCO|CXAcqf*@Cft`6hetxjRz>lx?9cSYD* zu*_YY9Om!m`20&tXueR%r1UjXIt!8wH&n&(TYVK@Bc*uy0K*dlty_~D?O3Z9owfXU z%u&7W*sGJOFJk6xs48H!YCkSzxBJEXLtowt>)z`zmD=}Mv8VCW3sKF(koK3oqAEvI zKZGj(Yg{k3>R|X=rrPK03hS(L`7g28)%>zr@;Hmle!Je1sgG`m|4UVC{o0DPCUW`}|m>)%44ASIzmzcj=C{pHF?}{`QcK z?5;Q0zyD^arhW9<&SEy^c@VB5wI=g|{qzjMF(~)ZQ-*7WhBY!FiF3-?E6se9eA~Bhva@lA0Op z=X={Khfeo5ylGZ3Ww}Xzh4vYJSte(5T0RfkEX)PfbKy(G_5}X7F_Nb6Mw< G&;$T^-EgD; diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index aa1c6de20eb61a..d70834cec652f1 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -414,7 +414,7 @@ export function initMediaEditModal(id) { dispatch(openModal({ modalType: 'FOCAL_POINT', - modalProps: { id }, + modalProps: { mediaId: id }, })); }; } diff --git a/app/javascript/mastodon/actions/compose_typed.ts b/app/javascript/mastodon/actions/compose_typed.ts new file mode 100644 index 00000000000000..97f0d68c51439c --- /dev/null +++ b/app/javascript/mastodon/actions/compose_typed.ts @@ -0,0 +1,70 @@ +import type { List as ImmutableList, Map as ImmutableMap } from 'immutable'; + +import { apiUpdateMedia } from 'mastodon/api/compose'; +import type { ApiMediaAttachmentJSON } from 'mastodon/api_types/media_attachments'; +import type { MediaAttachment } from 'mastodon/models/media_attachment'; +import { createDataLoadingThunk } from 'mastodon/store/typed_functions'; + +type SimulatedMediaAttachmentJSON = ApiMediaAttachmentJSON & { + unattached?: boolean; +}; + +const simulateModifiedApiResponse = ( + media: MediaAttachment, + params: { description?: string; focus?: string }, +): SimulatedMediaAttachmentJSON => { + const [x, y] = (params.focus ?? '').split(','); + + const data = { + ...media.toJS(), + ...params, + meta: { + focus: { + x: parseFloat(x ?? '0'), + y: parseFloat(y ?? '0'), + }, + }, + } as unknown as SimulatedMediaAttachmentJSON; + + return data; +}; + +export const changeUploadCompose = createDataLoadingThunk( + 'compose/changeUpload', + async ( + { + id, + ...params + }: { + id: string; + description: string; + focus: string; + }, + { getState }, + ) => { + const media = ( + (getState().compose as ImmutableMap).get( + 'media_attachments', + ) as ImmutableList + ).find((item) => item.get('id') === id); + + // Editing already-attached media is deferred to editing the post itself. + // For simplicity's sake, fake an API reply. + if (media && !media.get('unattached')) { + return new Promise((resolve) => { + resolve(simulateModifiedApiResponse(media, params)); + }); + } + + return apiUpdateMedia(id, params); + }, + (media: SimulatedMediaAttachmentJSON) => { + return { + media, + attached: typeof media.unattached !== 'undefined' && !media.unattached, + }; + }, + { + useLoadingBar: false, + }, +); diff --git a/app/javascript/mastodon/actions/modal.ts b/app/javascript/mastodon/actions/modal.ts index ab03e4676525be..49af176a111db0 100644 --- a/app/javascript/mastodon/actions/modal.ts +++ b/app/javascript/mastodon/actions/modal.ts @@ -9,6 +9,7 @@ export type ModalType = keyof typeof MODAL_COMPONENTS; interface OpenModalPayload { modalType: ModalType; modalProps: ModalProps; + previousModalProps?: ModalProps; } export const openModal = createAction('MODAL_OPEN'); diff --git a/app/javascript/mastodon/api/compose.ts b/app/javascript/mastodon/api/compose.ts new file mode 100644 index 00000000000000..757e9961c9206f --- /dev/null +++ b/app/javascript/mastodon/api/compose.ts @@ -0,0 +1,7 @@ +import { apiRequestPut } from 'mastodon/api'; +import type { ApiMediaAttachmentJSON } from 'mastodon/api_types/media_attachments'; + +export const apiUpdateMedia = ( + id: string, + params?: { description?: string; focus?: string }, +) => apiRequestPut(`v1/media/${id}`, params); diff --git a/app/javascript/mastodon/components/button.tsx b/app/javascript/mastodon/components/button.tsx index b349a83f2bbed2..a527468f6567ed 100644 --- a/app/javascript/mastodon/components/button.tsx +++ b/app/javascript/mastodon/components/button.tsx @@ -7,6 +7,7 @@ interface BaseProps extends Omit, 'children'> { block?: boolean; secondary?: boolean; + compact?: boolean; dangerous?: boolean; } @@ -27,6 +28,7 @@ export const Button: React.FC = ({ disabled, block, secondary, + compact, dangerous, className, title, @@ -47,6 +49,7 @@ export const Button: React.FC = ({
- ); -}; +GIFV.displayName = 'GIFV'; diff --git a/app/javascript/mastodon/features/alt_text_modal/index.tsx b/app/javascript/mastodon/features/alt_text_modal/index.tsx new file mode 100644 index 00000000000000..88ffb7c477fa13 --- /dev/null +++ b/app/javascript/mastodon/features/alt_text_modal/index.tsx @@ -0,0 +1,531 @@ +import { + useState, + useCallback, + useRef, + useEffect, + useImperativeHandle, + forwardRef, +} from 'react'; + +import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; + +import classNames from 'classnames'; + +import type { List as ImmutableList, Map as ImmutableMap } from 'immutable'; + +import Textarea from 'react-textarea-autosize'; +import { length } from 'stringz'; +// eslint-disable-next-line import/extensions +import tesseractWorkerPath from 'tesseract.js/dist/worker.min.js'; +// eslint-disable-next-line import/no-extraneous-dependencies +import tesseractCorePath from 'tesseract.js-core/tesseract-core.wasm.js'; + +import { showAlertForError } from 'mastodon/actions/alerts'; +import { uploadThumbnail } from 'mastodon/actions/compose'; +import { changeUploadCompose } from 'mastodon/actions/compose_typed'; +import { Button } from 'mastodon/components/button'; +import { GIFV } from 'mastodon/components/gifv'; +import { LoadingIndicator } from 'mastodon/components/loading_indicator'; +import { Skeleton } from 'mastodon/components/skeleton'; +import Audio from 'mastodon/features/audio'; +import { CharacterCounter } from 'mastodon/features/compose/components/character_counter'; +import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components'; +import Video, { getPointerPosition } from 'mastodon/features/video'; +import { me } from 'mastodon/initial_state'; +import type { MediaAttachment } from 'mastodon/models/media_attachment'; +import { useAppSelector, useAppDispatch } from 'mastodon/store'; +import { assetHost } from 'mastodon/utils/config'; + +const messages = defineMessages({ + placeholderVisual: { + id: 'alt_text_modal.describe_for_people_with_visual_impairments', + defaultMessage: 'Describe this for people with visual impairments…', + }, + placeholderHearing: { + id: 'alt_text_modal.describe_for_people_with_hearing_impairments', + defaultMessage: 'Describe this for people with hearing impairments…', + }, + discardMessage: { + id: 'confirmations.discard_edit_media.message', + defaultMessage: + 'You have unsaved changes to the media description or preview, discard them anyway?', + }, + discardConfirm: { + id: 'confirmations.discard_edit_media.confirm', + defaultMessage: 'Discard', + }, +}); + +const MAX_LENGTH = 1500; + +type FocalPoint = [number, number]; + +const UploadButton: React.FC<{ + children: React.ReactNode; + onSelectFile: (arg0: File) => void; + mimeTypes: string; +}> = ({ children, onSelectFile, mimeTypes }) => { + const fileRef = useRef(null); + + const handleClick = useCallback(() => { + fileRef.current?.click(); + }, []); + + const handleChange = useCallback( + (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + + if (file) { + onSelectFile(file); + } + }, + [onSelectFile], + ); + + return ( + + ); +}; + +const Preview: React.FC<{ + mediaId: string; + position: FocalPoint; + onPositionChange: (arg0: FocalPoint) => void; +}> = ({ mediaId, position, onPositionChange }) => { + const media = useAppSelector((state) => + ( + (state.compose as ImmutableMap).get( + 'media_attachments', + ) as ImmutableList + ).find((x) => x.get('id') === mediaId), + ); + const account = useAppSelector((state) => + me ? state.accounts.get(me) : undefined, + ); + + const [dragging, setDragging] = useState(false); + const [x, y] = position; + const nodeRef = useRef(null); + const draggingRef = useRef(false); + + const setRef = useCallback( + (e: HTMLImageElement | HTMLVideoElement | null) => { + nodeRef.current = e; + }, + [], + ); + + const handleMouseDown = useCallback( + (e: React.MouseEvent) => { + if (e.button !== 0) { + return; + } + + const { x, y } = getPointerPosition(nodeRef.current, e); + setDragging(true); + draggingRef.current = true; + onPositionChange([x, y]); + }, + [setDragging, onPositionChange], + ); + + const handleTouchStart = useCallback( + (e: React.TouchEvent) => { + const { x, y } = getPointerPosition(nodeRef.current, e); + setDragging(true); + draggingRef.current = true; + onPositionChange([x, y]); + }, + [setDragging, onPositionChange], + ); + + useEffect(() => { + const handleMouseUp = () => { + setDragging(false); + draggingRef.current = false; + }; + + const handleMouseMove = (e: MouseEvent) => { + if (draggingRef.current) { + const { x, y } = getPointerPosition(nodeRef.current, e); + onPositionChange([x, y]); + } + }; + + const handleTouchEnd = () => { + setDragging(false); + draggingRef.current = false; + }; + + const handleTouchMove = (e: TouchEvent) => { + if (draggingRef.current) { + const { x, y } = getPointerPosition(nodeRef.current, e); + onPositionChange([x, y]); + } + }; + + document.addEventListener('mouseup', handleMouseUp); + document.addEventListener('mousemove', handleMouseMove); + document.addEventListener('touchend', handleTouchEnd); + document.addEventListener('touchmove', handleTouchMove); + + return () => { + document.removeEventListener('mouseup', handleMouseUp); + document.removeEventListener('mousemove', handleMouseMove); + document.removeEventListener('touchend', handleTouchEnd); + document.removeEventListener('touchmove', handleTouchMove); + }; + }, [setDragging, onPositionChange]); + + if (!media) { + return null; + } + + if (media.get('type') === 'image') { + return ( +
+ +
+
+ ); + } else if (media.get('type') === 'gifv') { + return ( +
+ +
+
+ ); + } else if (media.get('type') === 'video') { + return ( +