From eb3b9e22bd7ec2eae148b31db90a3beda6c52b03 Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 2 Jan 2019 20:48:22 +0100 Subject: [PATCH 01/64] Fix CircleCI (#9695) --- .circleci/config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3ecea5c9ee..e8bfde2994 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -186,17 +186,17 @@ workflows: - install-ruby2.6: requires: - install - - install-ruby2.5 - install-ruby2.5: requires: - install + - install-ruby2.6 - install-ruby2.4: requires: - install - - install-ruby2.5 + - install-ruby2.6 - build: requires: - - install-ruby2.5 + - install-ruby2.6 - test-ruby2.6: requires: - install-ruby2.6 @@ -214,4 +214,4 @@ workflows: - install - check-i18n: requires: - - install-ruby2.5 + - install-ruby2.6 From ca98630f5cd2a8601de9737b8b14e31ebc490c89 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 2 Jan 2019 22:37:50 +0100 Subject: [PATCH 02/64] Bump oj from 3.7.4 to 3.7.6 (#9685) Bumps [oj](https://github.com/ohler55/oj) from 3.7.4 to 3.7.6. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/master/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.7.4...v3.7.6) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3caefbb995..7f83055f69 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -363,7 +363,7 @@ GEM concurrent-ruby (~> 1.0.0) sidekiq (>= 3.5.0) statsd-ruby (~> 1.2.0) - oj (3.7.4) + oj (3.7.6) omniauth (1.9.0) hashie (>= 3.4.6, < 3.7.0) rack (>= 1.6.2, < 3) From 75e5b61c5246f5396e80d50e6b33c53ca8589e92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 2 Jan 2019 22:38:18 +0100 Subject: [PATCH 03/64] Bump tzinfo-data from 1.2018.7 to 1.2018.9 (#9684) Bumps [tzinfo-data](https://github.com/tzinfo/tzinfo-data) from 1.2018.7 to 1.2018.9. - [Release notes](https://github.com/tzinfo/tzinfo-data/releases) - [Commits](https://github.com/tzinfo/tzinfo-data/compare/v1.2018.7...v1.2018.9) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7f83055f69..1f24573cf2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -620,7 +620,7 @@ GEM unf (~> 0.1.0) tzinfo (1.2.5) thread_safe (~> 0.1) - tzinfo-data (1.2018.7) + tzinfo-data (1.2018.9) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext From dd43cbdf25b2aab75b7319574ee0f54dea99a894 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 2 Jan 2019 22:39:02 +0100 Subject: [PATCH 04/64] Bump httplog from 1.1.1 to 1.2.0 (#9681) Bumps [httplog](https://github.com/trusche/httplog) from 1.1.1 to 1.2.0. - [Release notes](https://github.com/trusche/httplog/releases) - [Changelog](https://github.com/trusche/httplog/blob/master/CHANGELOG.md) - [Commits](https://github.com/trusche/httplog/compare/v1.1.1...v1.2.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index ceef9d551a..07ca62aa48 100644 --- a/Gemfile +++ b/Gemfile @@ -52,7 +52,7 @@ gem 'htmlentities', '~> 4.3' gem 'http', '~> 3.3' gem 'http_accept_language', '~> 2.1' gem 'http_parser.rb', '~> 0.6', git: 'https://github.com/tmm1/http_parser.rb', ref: '54b17ba8c7d8d20a16dfc65d1775241833219cf2' -gem 'httplog', '~> 1.1' +gem 'httplog', '~> 1.2' gem 'idn-ruby', require: 'idn' gem 'kaminari', '~> 1.1' gem 'link_header', '~> 0.0' diff --git a/Gemfile.lock b/Gemfile.lock index 1f24573cf2..f2eb7517f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -266,7 +266,7 @@ GEM domain_name (~> 0.5) http-form_data (2.1.1) http_accept_language (2.1.1) - httplog (1.1.1) + httplog (1.2.0) rack (>= 1.0) rainbow (>= 2.0.0) i18n (1.1.1) @@ -692,7 +692,7 @@ DEPENDENCIES http (~> 3.3) http_accept_language (~> 2.1) http_parser.rb (~> 0.6)! - httplog (~> 1.1) + httplog (~> 1.2) i18n-tasks (~> 0.9) idn-ruby iso-639 From bee6fd52edb9d5cf5503610628db9db91d8892d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 2 Jan 2019 22:39:23 +0100 Subject: [PATCH 05/64] Bump pry-rails from 0.3.8 to 0.3.9 (#9682) Bumps [pry-rails](https://github.com/rweng/pry-rails) from 0.3.8 to 0.3.9. - [Release notes](https://github.com/rweng/pry-rails/releases) - [Commits](https://github.com/rweng/pry-rails/compare/v0.3.8...v0.3.9) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f2eb7517f7..d4795e518a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -416,7 +416,7 @@ GEM pry-byebug (3.6.0) byebug (~> 10.0) pry (~> 0.10) - pry-rails (0.3.8) + pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (3.0.3) puma (3.12.0) From 9790f3b59061b5529c50d9f5c94f665e13315bfe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 2 Jan 2019 22:39:40 +0100 Subject: [PATCH 06/64] Bump tty-prompt from 0.18.0 to 0.18.1 (#9683) Bumps [tty-prompt](https://github.com/piotrmurach/tty-prompt) from 0.18.0 to 0.18.1. - [Release notes](https://github.com/piotrmurach/tty-prompt/releases) - [Changelog](https://github.com/piotrmurach/tty-prompt/blob/master/CHANGELOG.md) - [Commits](https://github.com/piotrmurach/tty-prompt/compare/v0.18.0...v0.18.1) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d4795e518a..4dc6872bec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -605,7 +605,7 @@ GEM tty-command (0.8.2) pastel (~> 0.7.0) tty-cursor (0.6.0) - tty-prompt (0.18.0) + tty-prompt (0.18.1) necromancer (~> 0.4.0) pastel (~> 0.7.0) timers (~> 4.0) From 19abf4ef0bafb12c2c44ddf92f72354ec409e540 Mon Sep 17 00:00:00 2001 From: ysksn Date: Thu, 3 Jan 2019 13:10:02 +0900 Subject: [PATCH 07/64] Add specs for UnreservedUsernameValidator (#9698) * Add specs for UnreservedUsernameValidator * Use instance variable --- .../unreserved_username_validator.rb | 16 ++++--- .../unreserved_username_validator_spec.rb | 44 +++++++++++++++++++ 2 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 spec/validators/unreserved_username_validator_spec.rb diff --git a/app/validators/unreserved_username_validator.rb b/app/validators/unreserved_username_validator.rb index c2311a89ab..634ceb06e6 100644 --- a/app/validators/unreserved_username_validator.rb +++ b/app/validators/unreserved_username_validator.rb @@ -2,20 +2,22 @@ class UnreservedUsernameValidator < ActiveModel::Validator def validate(account) - return if account.username.nil? - account.errors.add(:username, I18n.t('accounts.reserved_username')) if reserved_username?(account.username) + @username = account.username + return if @username.nil? + + account.errors.add(:username, I18n.t('accounts.reserved_username')) if reserved_username? end private - def pam_controlled?(value) + def pam_controlled? return false unless Devise.pam_authentication && Devise.pam_controlled_service - Rpam2.account(Devise.pam_controlled_service, value).present? + Rpam2.account(Devise.pam_controlled_service, @username).present? end - def reserved_username?(value) - return true if pam_controlled?(value) + def reserved_username? + return true if pam_controlled? return false unless Setting.reserved_usernames - Setting.reserved_usernames.include?(value.downcase) + Setting.reserved_usernames.include?(@username.downcase) end end diff --git a/spec/validators/unreserved_username_validator_spec.rb b/spec/validators/unreserved_username_validator_spec.rb new file mode 100644 index 0000000000..0187941b03 --- /dev/null +++ b/spec/validators/unreserved_username_validator_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UnreservedUsernameValidator, type: :validator do + describe '#validate' do + before do + allow(validator).to receive(:reserved_username?) { reserved_username } + validator.validate(account) + end + + let(:validator) { described_class.new } + let(:account) { double(username: username, errors: errors) } + let(:errors ) { double(add: nil) } + + context '@username.nil?' do + let(:username) { nil } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(:username, any_args) + end + end + + context '!@username.nil?' do + let(:username) { '' } + + context 'reserved_username?' do + let(:reserved_username) { true } + + it 'calls erros.add' do + expect(errors).to have_received(:add).with(:username, I18n.t('accounts.reserved_username')) + end + end + + context '!reserved_username?' do + let(:reserved_username) { false } + + it 'not calls erros.add' do + expect(errors).not_to have_received(:add).with(:username, any_args) + end + end + end + end +end From 5efedb5d5e071dd419be276f8ede93dc8ecfe3ce Mon Sep 17 00:00:00 2001 From: ysksn Date: Thu, 3 Jan 2019 13:10:20 +0900 Subject: [PATCH 08/64] Add specs for UrlValidator (#9699) --- spec/validators/url_validator_spec.rb | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 spec/validators/url_validator_spec.rb diff --git a/spec/validators/url_validator_spec.rb b/spec/validators/url_validator_spec.rb new file mode 100644 index 0000000000..e8d0e64946 --- /dev/null +++ b/spec/validators/url_validator_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UrlValidator, type: :validator do + describe '#validate_each' do + before do + allow(validator).to receive(:compliant?).with(value) { compliant } + validator.validate_each(record, attribute, value) + end + + let(:validator) { described_class.new(attributes: [attribute]) } + let(:record) { double(errors: errors) } + let(:errors) { double(add: nil) } + let(:value) { '' } + let(:attribute) { :foo } + + context 'unless compliant?' do + let(:compliant) { false } + + it 'calls errors.add' do + expect(errors).to have_received(:add).with(attribute, I18n.t('applications.invalid_url')) + end + end + + context 'if compliant?' do + let(:compliant) { true } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(attribute, any_args) + end + end + end +end From 82ef5c0461509cbc2ada01e6e124218a030c39df Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 3 Jan 2019 06:40:16 +0100 Subject: [PATCH 09/64] Fix list of local followers showing remote followers in admin UI (#9700) --- app/controllers/admin/followers_controller.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/controllers/admin/followers_controller.rb b/app/controllers/admin/followers_controller.rb index 819628b201..d826f47c5a 100644 --- a/app/controllers/admin/followers_controller.rb +++ b/app/controllers/admin/followers_controller.rb @@ -8,15 +8,11 @@ module Admin def index authorize :account, :index? - @followers = followers.recent.page(params[:page]).per(PER_PAGE) + @followers = @account.followers.local.recent.page(params[:page]).per(PER_PAGE) end def set_account @account = Account.find(params[:account_id]) end - - def followers - Follow.includes(:account).where(target_account: @account) - end end end From 71db4f642cd05d80636d09cf282abf79e4dafd88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 3 Jan 2019 15:58:04 +0900 Subject: [PATCH 10/64] Bump webpush from 0.3.4 to 0.3.5 (#9701) Bumps [webpush](https://github.com/zaru/webpush) from 0.3.4 to 0.3.5. - [Release notes](https://github.com/zaru/webpush/releases) - [Changelog](https://github.com/zaru/webpush/blob/master/CHANGELOG.md) - [Commits](https://github.com/zaru/webpush/compare/v0.3.4...v0.3.5) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4dc6872bec..bda3c474fc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -637,7 +637,7 @@ GEM activesupport (>= 4.2) rack-proxy (>= 0.6.1) railties (>= 4.2) - webpush (0.3.4) + webpush (0.3.5) hkdf (~> 0.2) jwt (~> 2.0) websocket-driver (0.7.0) From a16638e5007a50ee90487ef0bfa1a998da94c1cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 3 Jan 2019 15:59:04 +0900 Subject: [PATCH 11/64] Bump parallel_tests from 2.27.0 to 2.27.1 (#9703) Bumps [parallel_tests](https://github.com/grosser/parallel_tests) from 2.27.0 to 2.27.1. - [Release notes](https://github.com/grosser/parallel_tests/releases) - [Commits](https://github.com/grosser/parallel_tests/compare/v2.27.0...v2.27.1) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index bda3c474fc..f74558b6c1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -390,7 +390,7 @@ GEM av (~> 0.9.0) paperclip (>= 2.5.2) parallel (1.12.1) - parallel_tests (2.27.0) + parallel_tests (2.27.1) parallel parser (2.5.3.0) ast (~> 2.4.0) From 1c23124ba428fb03fdac7e3e86e4753c3b0cf42b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 3 Jan 2019 08:22:01 +0100 Subject: [PATCH 12/64] Bump rubocop from 0.61.1 to 0.62.0 (#9702) Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.61.1 to 0.62.0. - [Release notes](https://github.com/rubocop-hq/rubocop/releases) - [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.61.1...v0.62.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 07ca62aa48..db2eecd8d7 100644 --- a/Gemfile +++ b/Gemfile @@ -127,7 +127,7 @@ group :development do gem 'letter_opener', '~> 1.7' gem 'letter_opener_web', '~> 1.3' gem 'memory_profiler' - gem 'rubocop', '~> 0.61', require: false + gem 'rubocop', '~> 0.62', require: false gem 'brakeman', '~> 4.3', require: false gem 'bundler-audit', '~> 0.6', require: false gem 'scss_lint', '~> 0.57', require: false diff --git a/Gemfile.lock b/Gemfile.lock index f74558b6c1..57d4e835f2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -525,7 +525,7 @@ GEM rspec-core (~> 3.0, >= 3.0.0) sidekiq (>= 2.4.0) rspec-support (3.8.0) - rubocop (0.61.1) + rubocop (0.62.0) jaro_winkler (~> 1.5.1) parallel (~> 1.10) parser (>= 2.5, != 2.5.1.1) @@ -625,7 +625,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.5) - unicode-display_width (1.4.0) + unicode-display_width (1.4.1) uniform_notifier (1.12.1) warden (1.2.7) rack (>= 1.0) @@ -743,7 +743,7 @@ DEPENDENCIES rqrcode (~> 0.10) rspec-rails (~> 3.8) rspec-sidekiq (~> 3.0) - rubocop (~> 0.61) + rubocop (~> 0.62) sanitize (~> 5.0) scss_lint (~> 0.57) sidekiq (~> 5.2) From c39c112ced73d7942d31f8d49fdde70eed18aece Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Jan 2019 11:28:14 +0100 Subject: [PATCH 13/64] Fix admin UI view of local followers (#9712) Regression from #9700 --- app/views/admin/followers/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/followers/index.html.haml b/app/views/admin/followers/index.html.haml index 31b321bac6..25f1f290f4 100644 --- a/app/views/admin/followers/index.html.haml +++ b/app/views/admin/followers/index.html.haml @@ -23,6 +23,6 @@ %th= t('admin.accounts.most_recent_activity') %th %tbody - = render partial: 'admin/accounts/account', collection: @followers.map(&:account) + = render partial: 'admin/accounts/account', collection: @followers = paginate @followers From d5bdfaf0bb91d89bd29a6507dd7c9a7a6adfd7ca Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 4 Jan 2019 19:28:38 +0900 Subject: [PATCH 14/64] Increase files checked by ESLint (#9705) --- .eslintignore | 43 ++---- .eslintrc.js | 199 ++++++++++++++++++++++++++ .eslintrc.yml | 172 ---------------------- package.json | 4 +- postcss.config.js | 14 +- vendor/{assets/javascripts => }/.keep | 0 vendor/assets/stylesheets/.keep | 0 7 files changed, 218 insertions(+), 214 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.yml rename vendor/{assets/javascripts => }/.keep (100%) delete mode 100644 vendor/assets/stylesheets/.keep diff --git a/.eslintignore b/.eslintignore index 6d540c4138..d4930e1f52 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,30 +1,13 @@ -# See https://help.github.com/articles/ignoring-files for more about ignoring files. -# -# If you find yourself ignoring temporary files generated by your text editor -# or operating system, you probably want to add a global ignore instead: -# git config --global core.excludesfile '~/.gitignore_global' - -# Ignore bundler config. -/.bundle - -# Ignore the default SQLite database. -/db/*.sqlite3 -/db/*.sqlite3-journal - -# Ignore all logfiles and tempfiles. -/log/* -!/log/.keep -/tmp -coverage -public/system -public/assets -.env -.env.production -node_modules/ -neo4j/ - -# Ignore Vagrant files -.vagrant/ - -# Ignore Capistrano customizations -config/deploy/* +/build/** +/coverage/** +/db/** +/lib/** +/log/** +/node_modules/** +/nonobox/** +/public/** +!/public/embed.js +/spec/** +/tmp/** +/vendor/** +!.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000000..56e3d0530f --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,199 @@ +module.exports = { + root: true, + + env: { + browser: true, + node: true, + es6: true, + jest: true, + }, + + globals: { + ATTACHMENT_HOST: false, + }, + + parser: 'babel-eslint', + + plugins: [ + 'react', + 'jsx-a11y', + 'import', + 'promise', + ], + + parserOptions: { + sourceType: 'module', + ecmaFeatures: { + experimentalObjectRestSpread: true, + jsx: true, + }, + ecmaVersion: 2018, + }, + + settings: { + react: { + version: 'detect', + }, + 'import/extensions': [ + '.js', + ], + 'import/ignore': [ + 'node_modules', + '\\.(css|scss|json)$', + ], + }, + + rules: { + 'brace-style': 'warn', + 'comma-dangle': ['error', 'always-multiline'], + 'comma-spacing': [ + 'warn', + { + before: false, + after: true, + }, + ], + 'comma-style': ['warn', 'last'], + 'consistent-return': 'error', + 'dot-notation': 'error', + eqeqeq: 'error', + indent: ['warn', 2], + 'jsx-quotes': ['error', 'prefer-single'], + 'no-catch-shadow': 'error', + 'no-cond-assign': 'error', + 'no-console': [ + 'warn', + { + allow: [ + 'error', + 'warn', + ], + }, + ], + 'no-fallthrough': 'error', + 'no-irregular-whitespace': 'error', + 'no-mixed-spaces-and-tabs': 'warn', + 'no-nested-ternary': 'warn', + 'no-trailing-spaces': 'warn', + 'no-undef': 'error', + 'no-unreachable': 'error', + 'no-unused-expressions': 'error', + 'no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'after-used', + ignoreRestSiblings: true, + }, + ], + 'object-curly-spacing': ['error', 'always'], + 'padded-blocks': [ + 'error', + { + classes: 'always', + }, + ], + quotes: ['error', 'single'], + semi: 'error', + strict: 'off', + 'valid-typeof': 'error', + + 'react/jsx-boolean-value': 'error', + 'react/jsx-closing-bracket-location': ['error', 'line-aligned'], + 'react/jsx-curly-spacing': 'error', + 'react/jsx-equals-spacing': 'error', + 'react/jsx-first-prop-new-line': ['error', 'multiline-multiprop'], + 'react/jsx-indent': ['error', 2], + 'react/jsx-no-bind': 'error', + 'react/jsx-no-duplicate-props': 'error', + 'react/jsx-no-undef': 'error', + 'react/jsx-tag-spacing': 'error', + 'react/jsx-uses-react': 'error', + 'react/jsx-uses-vars': 'error', + 'react/jsx-wrap-multilines': 'error', + 'react/no-multi-comp': 'off', + 'react/no-string-refs': 'error', + 'react/prop-types': 'error', + 'react/self-closing-comp': 'error', + + 'jsx-a11y/accessible-emoji': 'warn', + 'jsx-a11y/alt-text': 'warn', + 'jsx-a11y/anchor-has-content': 'warn', + 'jsx-a11y/anchor-is-valid': [ + 'warn', + { + components: [ + 'Link', + 'NavLink', + ], + specialLink: [ + 'to', + ], + aspect: [ + 'noHref', + 'invalidHref', + 'preferButton', + ], + }, + ], + 'jsx-a11y/aria-activedescendant-has-tabindex': 'warn', + 'jsx-a11y/aria-props': 'warn', + 'jsx-a11y/aria-proptypes': 'warn', + 'jsx-a11y/aria-role': 'warn', + 'jsx-a11y/aria-unsupported-elements': 'warn', + 'jsx-a11y/heading-has-content': 'warn', + 'jsx-a11y/html-has-lang': 'warn', + 'jsx-a11y/iframe-has-title': 'warn', + 'jsx-a11y/img-redundant-alt': 'warn', + 'jsx-a11y/interactive-supports-focus': 'warn', + 'jsx-a11y/label-has-for': 'off', + 'jsx-a11y/mouse-events-have-key-events': 'warn', + 'jsx-a11y/no-access-key': 'warn', + 'jsx-a11y/no-distracting-elements': 'warn', + 'jsx-a11y/no-noninteractive-element-interactions': [ + 'warn', + { + handlers: [ + 'onClick', + ], + }, + ], + 'jsx-a11y/no-onchange': 'warn', + 'jsx-a11y/no-redundant-roles': 'warn', + 'jsx-a11y/no-static-element-interactions': [ + 'warn', + { + handlers: [ + 'onClick', + ], + }, + ], + 'jsx-a11y/role-has-required-aria-props': 'warn', + 'jsx-a11y/role-supports-aria-props': 'off', + 'jsx-a11y/scope': 'warn', + 'jsx-a11y/tabindex-no-positive': 'warn', + + 'import/extensions': [ + 'error', + 'always', + { + js: 'never', + }, + ], + 'import/newline-after-import': 'error', + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: [ + 'config/webpack/**', + 'app/javascript/mastodon/test_setup.js', + 'app/javascript/**/__tests__/**', + ], + }, + ], + 'import/no-unresolved': 'error', + 'import/no-webpack-loader-syntax': 'error', + + 'promise/catch-or-return': 'error', + }, +}; diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index dddf29eb82..0000000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,172 +0,0 @@ ---- -root: true - -env: - browser: true - node: true - es6: true - jest: true - -globals: - ATTACHMENT_HOST: false - -parser: babel-eslint - -plugins: -- react -- jsx-a11y -- import -- promise - -parserOptions: - sourceType: module - ecmaFeatures: - experimentalObjectRestSpread: true - jsx: true - ecmaVersion: 2018 - -settings: - react: - version: detect - import/extensions: - - .js - import/ignore: - - node_modules - - \\.(css|scss|json)$ - -rules: - brace-style: warn - comma-dangle: - - error - - always-multiline - comma-spacing: - - warn - - before: false - after: true - comma-style: - - warn - - last - consistent-return: error - dot-notation: error - eqeqeq: error - indent: - - warn - - 2 - jsx-quotes: - - error - - prefer-single - no-catch-shadow: error - no-cond-assign: error - no-console: - - warn - - allow: - - error - - warn - no-fallthrough: error - no-irregular-whitespace: error - no-mixed-spaces-and-tabs: warn - no-nested-ternary: warn - no-trailing-spaces: warn - no-undef: error - no-unreachable: error - no-unused-expressions: error - no-unused-vars: - - error - - vars: all - args: after-used - ignoreRestSiblings: true - object-curly-spacing: - - error - - always - padded-blocks: - - error - - classes: always - quotes: - - error - - single - semi: error - strict: off - valid-typeof: error - - react/jsx-boolean-value: error - react/jsx-closing-bracket-location: - - error - - line-aligned - react/jsx-curly-spacing: error - react/jsx-equals-spacing: error - react/jsx-first-prop-new-line: - - error - - multiline-multiprop - react/jsx-indent: - - error - - 2 - react/jsx-no-bind: error - react/jsx-no-duplicate-props: error - react/jsx-no-undef: error - react/jsx-tag-spacing: error - react/jsx-uses-react: error - react/jsx-uses-vars: error - react/jsx-wrap-multilines: error - react/no-multi-comp: off - react/no-string-refs: error - react/prop-types: error - react/self-closing-comp: error - - jsx-a11y/accessible-emoji: warn - jsx-a11y/alt-text: warn - jsx-a11y/anchor-has-content: warn - jsx-a11y/anchor-is-valid: - - warn - - components: - - Link - - NavLink - specialLink: - - to - aspect: - - noHref - - invalidHref - - preferButton - jsx-a11y/aria-activedescendant-has-tabindex: warn - jsx-a11y/aria-props: warn - jsx-a11y/aria-proptypes: warn - jsx-a11y/aria-role: warn - jsx-a11y/aria-unsupported-elements: warn - jsx-a11y/heading-has-content: warn - jsx-a11y/html-has-lang: warn - jsx-a11y/iframe-has-title: warn - jsx-a11y/img-redundant-alt: warn - jsx-a11y/interactive-supports-focus: warn - jsx-a11y/label-has-for: off - jsx-a11y/mouse-events-have-key-events: warn - jsx-a11y/no-access-key: warn - jsx-a11y/no-distracting-elements: warn - jsx-a11y/no-noninteractive-element-interactions: - - warn - - handlers: - - onClick - jsx-a11y/no-onchange: warn - jsx-a11y/no-redundant-roles: warn - jsx-a11y/no-static-element-interactions: - - warn - - handlers: - - onClick - jsx-a11y/role-has-required-aria-props: warn - jsx-a11y/role-supports-aria-props: off - jsx-a11y/scope: warn - jsx-a11y/tabindex-no-positive: warn - - import/extensions: - - error - - always - - js: never - import/newline-after-import: error - import/no-extraneous-dependencies: - - error - - devDependencies: - - "config/webpack/**" - - "app/javascript/mastodon/test_setup.js" - - "app/javascript/**/__tests__/**" - import/no-unresolved: error - import/no-webpack-loader-syntax: error - - promise/catch-or-return: error diff --git a/package.json b/package.json index a7f2fd157a..15d9f085a8 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "build:production": "cross-env RAILS_ENV=production NODE_ENV=production ./bin/webpack", "manage:translations": "node ./config/webpack/translationRunner.js", "start": "node ./streaming/index.js", - "test": "npm run test:lint && npm run test:jest", - "test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ streaming/", + "test": "${npm_execpath} run test:lint && ${npm_execpath} run test:jest", + "test:lint": "eslint --ext=js .", "test:jest": "cross-env NODE_ENV=test jest --coverage" }, "repository": { diff --git a/postcss.config.js b/postcss.config.js index 84701e4ade..1c820c3181 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,13 +1,7 @@ -module.exports = { +module.exports = ({ env }) => ({ plugins: { - autoprefixer: { - browsers: [ - 'last 2 versions', - 'IE >= 11', - 'iOS >= 9', - ], - }, + autoprefixer: {}, 'postcss-object-fit-images': {}, - cssnano: {}, + cssnano: env === 'production' ? {} : false, }, -}; +}); diff --git a/vendor/assets/javascripts/.keep b/vendor/.keep similarity index 100% rename from vendor/assets/javascripts/.keep rename to vendor/.keep diff --git a/vendor/assets/stylesheets/.keep b/vendor/assets/stylesheets/.keep deleted file mode 100644 index e69de29bb2..0000000000 From 664bb7bb72e18b88231bd2235c053cfd47db13c2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Jan 2019 11:40:02 +0100 Subject: [PATCH 15/64] Add preview cards to non-detailed statuses on public pages (#9714) --- app/views/stream_entries/_detailed_status.html.haml | 4 ++-- app/views/stream_entries/_simple_status.html.haml | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml index 6e6d0eda85..b307299705 100644 --- a/app/views/stream_entries/_detailed_status.html.haml +++ b/app/views/stream_entries/_detailed_status.html.haml @@ -28,8 +28,8 @@ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 670, height: 380, detailed: true, inline: true, alt: video.description - else = react_component :media_gallery, height: 380, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } - - elsif status.preview_cards.first - = react_component :card, 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_cards.first, serializer: REST::PreviewCardSerializer).as_json + - elsif status.preview_card + = react_component :card, 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_card, serializer: REST::PreviewCardSerializer).as_json .detailed-status__meta %data.dt-published{ value: status.created_at.to_time.iso8601 } diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml index 1a1dc37ebd..f92fac86b8 100644 --- a/app/views/stream_entries/_simple_status.html.haml +++ b/app/views/stream_entries/_simple_status.html.haml @@ -26,12 +26,14 @@ %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more') .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay) - - unless status.media_attachments.empty? + - if !status.media_attachments.empty? - if status.media_attachments.first.video? - video = status.media_attachments.first = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 610, height: 343, inline: true, alt: video.description - else = react_component :media_gallery, height: 343, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } + - elsif status.preview_card + = react_component :card, 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_card, serializer: REST::PreviewCardSerializer).as_json .status__action-bar .status__action-bar__counter From acae1181206b4c11cc55a699343f302bd1471160 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Jan 2019 12:29:39 +0100 Subject: [PATCH 16/64] Add mod and moderator to list of default reserved usernames (#9713) --- config/settings.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/config/settings.yml b/config/settings.yml index b3d2e02403..4f7c2c8f32 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -1,11 +1,6 @@ -# config/app.yml for rails-settings-cached -# -# This file contains default values, and does not need to be edited -# when configuring an instance. These settings may be changed by an -# Administrator using the Web UI. -# -# For more information, see docs/Running-Mastodon/Administration-guide.md -# +# This file contains default values, and does not need to be edited. All +# important settings can be changed from the admin interface. + defaults: &defaults site_title: Mastodon site_short_description: '' @@ -54,11 +49,14 @@ defaults: &defaults - root - webmaster - administrator + - mod + - moderator disallowed_hashtags: # space separated string or list of hashtags without the hash bootstrap_timeline_accounts: '' activity_api_enabled: true peers_api_enabled: true show_known_fediverse_at_about_page: true + development: <<: *defaults From 1512af2811cb5b2ffccac5452eb291b1af46f89d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Jan 2019 12:44:46 +0100 Subject: [PATCH 17/64] Display fallback link card thumbnail when none is given (#9715) --- .../mastodon/features/status/components/card.js | 6 ++++++ app/javascript/styles/mastodon/components.scss | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index 235d209b88..8491299ef4 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -195,6 +195,12 @@ export default class Card extends React.PureComponent { {thumbnail} ); + } else { + embed = ( +
+ +
+ ); } return ( diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 0f94d8a327..3b18b623f2 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2587,6 +2587,15 @@ a.status-card { flex: 0 0 100px; background: lighten($ui-base-color, 8%); position: relative; + + .fa { + font-size: 21px; + position: absolute; + transform-origin: 50% 50%; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } } .status-card.horizontal { From 6f9a7bd02ca9efe5e798d8f4642f94ad4b5b88a2 Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 4 Jan 2019 13:10:43 +0100 Subject: [PATCH 18/64] Add quick links to the admin interface in the WebUI (#8545) * Allow to show a specific status in the admin interface * Let the front-end know the current account is a moderator * Add admin links to status and account menus If the current logged-in user is an admin, add quick links to the admin interface in account and toot dropdown menu. Suggestion by @ashkitten * Use @statuses.first instead of @statuses[0] --- app/controllers/admin/statuses_controller.rb | 9 +++++++ .../mastodon/components/status_action_bar.js | 9 ++++++- .../features/account/components/action_bar.js | 8 +++++- .../features/status/components/action_bar.js | 9 ++++++- app/javascript/mastodon/initial_state.js | 1 + app/serializers/initial_state_serializer.rb | 1 + app/views/admin/statuses/show.html.haml | 27 +++++++++++++++++++ config/routes.rb | 2 +- 8 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 app/views/admin/statuses/show.html.haml diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index a69f120845..6501950346 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -22,6 +22,15 @@ module Admin @form = Form::StatusBatch.new end + def show + authorize :status, :index? + + @statuses = @account.statuses.where(id: params[:id]) + authorize @statuses.first, :show? + + @form = Form::StatusBatch.new + end + def create authorize :status, :update? diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index becd44ec0f..0995a14904 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -5,7 +5,7 @@ import IconButton from './icon_button'; import DropdownMenuContainer from '../containers/dropdown_menu_container'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me } from '../initial_state'; +import { me, isStaff } from '../initial_state'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, @@ -30,6 +30,8 @@ const messages = defineMessages({ pin: { id: 'status.pin', defaultMessage: 'Pin on profile' }, unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' }, embed: { id: 'status.embed', defaultMessage: 'Embed' }, + admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, + admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' }, }); const obfuscatedCount = count => { @@ -182,6 +184,11 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick }); menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick }); menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport }); + if (isStaff) { + menu.push(null); + menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); + } } if (status.get('visibility') === 'direct') { diff --git a/app/javascript/mastodon/features/account/components/action_bar.js b/app/javascript/mastodon/features/account/components/action_bar.js index e6ae1a2fd7..8ed4c917ab 100644 --- a/app/javascript/mastodon/features/account/components/action_bar.js +++ b/app/javascript/mastodon/features/account/components/action_bar.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; import { NavLink } from 'react-router-dom'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { me } from '../../../initial_state'; +import { me, isStaff } from '../../../initial_state'; import { shortNumberFormat } from '../../../utils/numbers'; const messages = defineMessages({ @@ -35,6 +35,7 @@ const messages = defineMessages({ endorse: { id: 'account.endorse', defaultMessage: 'Feature on profile' }, unendorse: { id: 'account.unendorse', defaultMessage: 'Don\'t feature on profile' }, add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' }, + admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, }); export default @injectIntl @@ -151,6 +152,11 @@ class ActionBar extends React.PureComponent { } } + if (account.get('id') !== me && isStaff) { + menu.push(null); + menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/admin/accounts/${account.get('id')}` }); + } + return (
{extraInfo} diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 3b30d33b25..d3b725283a 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -4,7 +4,7 @@ import IconButton from '../../../components/icon_button'; import ImmutablePropTypes from 'react-immutable-proptypes'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; import { defineMessages, injectIntl } from 'react-intl'; -import { me } from '../../../initial_state'; +import { me, isStaff } from '../../../initial_state'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, @@ -26,6 +26,8 @@ const messages = defineMessages({ pin: { id: 'status.pin', defaultMessage: 'Pin on profile' }, unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' }, embed: { id: 'status.embed', defaultMessage: 'Embed' }, + admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, + admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' }, }); export default @injectIntl @@ -145,6 +147,11 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick }); menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick }); menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport }); + if (isStaff) { + menu.push(null); + menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); + } } const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && ( diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index b496c57d2d..8c2e9d2de4 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -16,5 +16,6 @@ export const invitesEnabled = getMeta('invites_enabled'); export const version = getMeta('version'); export const mascot = getMeta('mascot'); export const profile_directory = getMeta('profile_directory'); +export const isStaff = getMeta('is_staff'); export default initialState; diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index d40379d43a..a7a3d770ce 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -29,6 +29,7 @@ class InitialStateSerializer < ActiveModel::Serializer store[:display_media] = object.current_account.user.setting_display_media store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers store[:reduce_motion] = object.current_account.user.setting_reduce_motion + store[:is_staff] = object.current_account.user.staff? end store diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml new file mode 100644 index 0000000000..a7a392272f --- /dev/null +++ b/app/views/admin/statuses/show.html.haml @@ -0,0 +1,27 @@ +- content_for :page_title do + = t('admin.statuses.title') + \- + = "@#{@account.acct}" + +.filters + .back-link{ style: 'flex: 1 1 auto; text-align: right' } + = link_to admin_account_path(@account.id) do + %i.fa.fa-chevron-left.fa-fw + = t('admin.statuses.back_to_account') + +%hr.spacer/ + += form_for(@form, url: admin_account_statuses_path(@account.id)) do |f| + = hidden_field_tag :page, params[:page] + = hidden_field_tag :media, params[:media] + + .batch-table + .batch-table__toolbar + %label.batch-table__toolbar__select.batch-checkbox-all + = check_box_tag :batch_checkbox_all, nil, false + .batch-table__toolbar__actions + = f.button safe_join([fa_icon('eye-slash'), t('admin.statuses.batch.nsfw_on')]), name: :nsfw_on, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } + = f.button safe_join([fa_icon('eye'), t('admin.statuses.batch.nsfw_off')]), name: :nsfw_off, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } + = f.button safe_join([fa_icon('trash'), t('admin.statuses.batch.delete')]), name: :delete, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } + .batch-table__body + = render partial: 'admin/reports/status', collection: @statuses, locals: { f: f } diff --git a/config/routes.rb b/config/routes.rb index 6e4da48a08..5bdd1986cc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -192,7 +192,7 @@ Rails.application.routes.draw do resource :change_email, only: [:show, :update] resource :reset, only: [:create] resource :action, only: [:new, :create], controller: 'account_actions' - resources :statuses, only: [:index, :create, :update, :destroy] + resources :statuses, only: [:index, :show, :create, :update, :destroy] resources :followers, only: [:index] resource :confirmation, only: [:create] do From 92daf7cd373dab6d53723cbdb9bec0e4d8ad1245 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Jan 2019 13:54:56 +0100 Subject: [PATCH 19/64] Fix unreadable text color in report modal for some statuses (#9716) Fix #9697 --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 3b18b623f2..a593e385d6 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4055,6 +4055,7 @@ a.status-card.compact:hover { color: $highlight-text-color; } + .status__content, .status__content p { color: $inverted-text-color; } From 90398b9d007d10716cb891d341f64018bb60c822 Mon Sep 17 00:00:00 2001 From: Sir-Boops Date: Fri, 4 Jan 2019 08:15:09 -0700 Subject: [PATCH 20/64] Remove uneeded command and switch to images for TOR (#9438) --- docker-compose.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index bd18676f1a..faa066149b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,14 +88,13 @@ services: ## http_proxy=http://privoxy:8118 ## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true # tor: -# build: https://github.com/usbsnowcrash/docker-tor.git +# image: sirboops/tor # networks: # - external_network # - internal_network # # privoxy: -# build: https://github.com/usbsnowcrash/docker-privoxy.git -# command: /opt/sbin/privoxy --no-daemon --user privoxy.privoxy /opt/config +# image: sirboops/privoxy # volumes: # - ./priv-config:/opt/config # networks: From 45899cfa691b1e4f43da98c456ae8faa584eb437 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Jan 2019 07:16:46 +0100 Subject: [PATCH 21/64] Change note length validation to ignore mention domains and URLs (#9717) Fix #4419 --- app/models/account.rb | 2 +- app/validators/note_length_validator.rb | 22 ++++++++++++++++++++++ app/validators/url_validator.rb | 4 ++-- 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 app/validators/note_length_validator.rb diff --git a/app/models/account.rb b/app/models/account.rb index 97beb416aa..11a3c21fe4 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -75,7 +75,7 @@ class Account < ApplicationRecord validates_with UniqueUsernameValidator, if: -> { local? && will_save_change_to_username? } validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? } validates :display_name, length: { maximum: 30 }, if: -> { local? && will_save_change_to_display_name? } - validates :note, length: { maximum: 160 }, if: -> { local? && will_save_change_to_note? } + validates :note, note_length: { maximum: 160 }, if: -> { local? && will_save_change_to_note? } validates :fields, length: { maximum: 4 }, if: -> { local? && will_save_change_to_fields? } scope :remote, -> { where.not(domain: nil) } diff --git a/app/validators/note_length_validator.rb b/app/validators/note_length_validator.rb new file mode 100644 index 0000000000..5ff6df6df2 --- /dev/null +++ b/app/validators/note_length_validator.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class NoteLengthValidator < ActiveModel::EachValidator + def validate_each(record, attribute, value) + record.errors.add(attribute, I18n.t('statuses.over_character_limit', max: options[:maximum])) if too_long?(value) + end + + private + + def too_long?(value) + countable_text(value).mb_chars.grapheme_length > options[:maximum] + end + + def countable_text(value) + return '' if value.nil? + + value.dup.tap do |new_text| + new_text.gsub!(FetchLinkCardService::URL_PATTERN, 'x' * 23) + new_text.gsub!(Account::MENTION_RE, '@\2') + end + end +end diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb index f39560d90a..d95a03fbf8 100644 --- a/app/validators/url_validator.rb +++ b/app/validators/url_validator.rb @@ -8,7 +8,7 @@ class UrlValidator < ActiveModel::EachValidator private def compliant?(url) - parsed_url = Addressable::URI.parse(url).normalize - !parsed_url.nil? && %w(http https).include?(parsed_url.scheme) && parsed_url.host + parsed_url = Addressable::URI.parse(url) + parsed_url && %w(http https).include?(parsed_url.scheme) && parsed_url.host end end From fae32634b15a29e66d5c2a04015f2f947cf54627 Mon Sep 17 00:00:00 2001 From: Naoki Kosaka Date: Sat, 5 Jan 2019 15:17:12 +0900 Subject: [PATCH 22/64] Use Contact User as Relay, Report, Subscribe. (#9661) * Use Contact User as Relay, Report, Subscribe. * Use Account.representative to fetch contact user. * Use find_local. * No reason to use Account.representative in subscribe_service. * Don't required representative! * Fallback is included in Account.representative method. --- app/models/concerns/account_finder_concern.rb | 4 ++++ app/models/relay.rb | 2 +- app/services/report_service.rb | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/account_finder_concern.rb b/app/models/concerns/account_finder_concern.rb index 6b7237e89d..7e3bbde097 100644 --- a/app/models/concerns/account_finder_concern.rb +++ b/app/models/concerns/account_finder_concern.rb @@ -12,6 +12,10 @@ module AccountFinderConcern find_remote(username, domain) || raise(ActiveRecord::RecordNotFound) end + def representative + find_local(Setting.site_contact_username.gsub(/\A@/, '')) || Account.local.find_by(suspended: false) + end + def find_local(username) find_remote(username, nil) end diff --git a/app/models/relay.rb b/app/models/relay.rb index 75cb060b26..7478c110d4 100644 --- a/app/models/relay.rb +++ b/app/models/relay.rb @@ -68,7 +68,7 @@ class Relay < ApplicationRecord end def some_local_account - @some_local_account ||= Account.local.find_by(suspended: false) + @some_local_account ||= Account.representative end def ensure_disabled diff --git a/app/services/report_service.rb b/app/services/report_service.rb index 057d05ab91..1bcc1c0d56 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -52,6 +52,6 @@ class ReportService < BaseService end def some_local_account - @some_local_account ||= Account.local.where(suspended: false).first + @some_local_account ||= Account.representative end end From b17b2f25acc4d0cd4284835f28364451cb2fcd88 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Jan 2019 11:27:58 +0100 Subject: [PATCH 23/64] Follow new account before unfollowing the old one during move (#9719) --- app/workers/unfollow_follow_worker.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/workers/unfollow_follow_worker.rb b/app/workers/unfollow_follow_worker.rb index a2133bb8cf..50d3bf034a 100644 --- a/app/workers/unfollow_follow_worker.rb +++ b/app/workers/unfollow_follow_worker.rb @@ -10,9 +10,9 @@ class UnfollowFollowWorker old_target_account = Account.find(old_target_account_id) new_target_account = Account.find(new_target_account_id) - UnfollowService.new.call(follower_account, old_target_account) FollowService.new.call(follower_account, new_target_account) - rescue ActiveRecord::RecordNotFound + UnfollowService.new.call(follower_account, old_target_account) + rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError true end end From a49d43d1121ac10f96d5a9cbf78112c707e7a59e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Jan 2019 12:43:28 +0100 Subject: [PATCH 24/64] Add scheduled statuses (#9706) Fix #340 --- .../api/v1/scheduled_statuses_controller.rb | 77 ++++++++ app/controllers/api/v1/statuses_controller.rb | 9 +- app/models/concerns/account_associations.rb | 1 + app/models/media_attachment.rb | 38 ++-- app/models/scheduled_status.rb | 39 ++++ .../rest/scheduled_status_serializer.rb | 11 ++ app/services/post_status_service.rb | 179 +++++++++++++----- app/services/suspend_account_service.rb | 1 + .../publish_scheduled_status_worker.rb | 24 +++ .../scheduler/scheduled_statuses_scheduler.rb | 19 ++ config/locales/en.yml | 4 + config/routes.rb | 1 + config/sidekiq.yml | 3 + ...0190103124649_create_scheduled_statuses.rb | 9 + ...cheduled_status_id_to_media_attachments.rb | 8 + db/schema.rb | 14 +- .../api/v1/conversations_controller_spec.rb | 2 +- .../api/v1/notifications_controller_spec.rb | 4 +- .../api/v1/timelines/home_controller_spec.rb | 2 +- .../api/v1/timelines/list_controller_spec.rb | 2 +- .../v1/timelines/public_controller_spec.rb | 4 +- .../api/v1/timelines/tag_controller_spec.rb | 2 +- .../scheduled_status_fabricator.rb | 4 + spec/lib/feed_manager_spec.rb | 6 +- spec/models/scheduled_status_spec.rb | 4 + .../batched_remove_status_service_spec.rb | 4 +- spec/services/post_status_service_spec.rb | 44 +++-- spec/services/remove_status_service_spec.rb | 2 +- .../publish_scheduled_status_worker_spec.rb | 23 +++ 29 files changed, 437 insertions(+), 103 deletions(-) create mode 100644 app/controllers/api/v1/scheduled_statuses_controller.rb create mode 100644 app/models/scheduled_status.rb create mode 100644 app/serializers/rest/scheduled_status_serializer.rb create mode 100644 app/workers/publish_scheduled_status_worker.rb create mode 100644 app/workers/scheduler/scheduled_statuses_scheduler.rb create mode 100644 db/migrate/20190103124649_create_scheduled_statuses.rb create mode 100644 db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb create mode 100644 spec/fabricators/scheduled_status_fabricator.rb create mode 100644 spec/models/scheduled_status_spec.rb create mode 100644 spec/workers/publish_scheduled_status_worker_spec.rb diff --git a/app/controllers/api/v1/scheduled_statuses_controller.rb b/app/controllers/api/v1/scheduled_statuses_controller.rb new file mode 100644 index 0000000000..9950296f3b --- /dev/null +++ b/app/controllers/api/v1/scheduled_statuses_controller.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +class Api::V1::ScheduledStatusesController < Api::BaseController + include Authorization + + before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, except: [:update, :destroy] + before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:update, :destroy] + + before_action :set_statuses, only: :index + before_action :set_status, except: :index + + after_action :insert_pagination_headers, only: :index + + def index + render json: @statuses, each_serializer: REST::ScheduledStatusSerializer + end + + def show + render json: @status, serializer: REST::ScheduledStatusSerializer + end + + def update + @status.update!(scheduled_status_params) + render json: @status, serializer: REST::ScheduledStatusSerializer + end + + def destroy + @status.destroy! + render_empty + end + + private + + def set_statuses + @statuses = current_account.scheduled_statuses.paginate_by_id(limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_status + @status = current_account.scheduled_statuses.find(params[:id]) + end + + def scheduled_status_params + params.permit(:scheduled_at) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + if records_continue? + api_v1_scheduled_statuses_url pagination_params(max_id: pagination_max_id) + end + end + + def prev_path + unless @statuses.empty? + api_v1_scheduled_statuses_url pagination_params(min_id: pagination_since_id) + end + end + + def records_continue? + @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) + end + + def pagination_max_id + @statuses.last.id + end + + def pagination_since_id + @statuses.first.id + end +end diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 49a52f7a6c..29b420c675 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -45,16 +45,17 @@ class Api::V1::StatusesController < Api::BaseController def create @status = PostStatusService.new.call(current_user.account, - status_params[:status], - status_params[:in_reply_to_id].blank? ? nil : Status.find(status_params[:in_reply_to_id]), + text: status_params[:status], + thread: status_params[:in_reply_to_id].blank? ? nil : Status.find(status_params[:in_reply_to_id]), media_ids: status_params[:media_ids], sensitive: status_params[:sensitive], spoiler_text: status_params[:spoiler_text], visibility: status_params[:visibility], + scheduled_at: status_params[:scheduled_at], application: doorkeeper_token.application, idempotency: request.headers['Idempotency-Key']) - render json: @status, serializer: REST::StatusSerializer + render json: @status, serializer: @status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer end def destroy @@ -77,7 +78,7 @@ class Api::V1::StatusesController < Api::BaseController end def status_params - params.permit(:status, :in_reply_to_id, :sensitive, :spoiler_text, :visibility, media_ids: []) + params.permit(:status, :in_reply_to_id, :sensitive, :spoiler_text, :visibility, :scheduled_at, media_ids: []) end def pagination_params(core_params) diff --git a/app/models/concerns/account_associations.rb b/app/models/concerns/account_associations.rb index a894b5eeda..7dafeee34c 100644 --- a/app/models/concerns/account_associations.rb +++ b/app/models/concerns/account_associations.rb @@ -14,6 +14,7 @@ module AccountAssociations has_many :mentions, inverse_of: :account, dependent: :destroy has_many :notifications, inverse_of: :account, dependent: :destroy has_many :conversations, class_name: 'AccountConversation', dependent: :destroy, inverse_of: :account + has_many :scheduled_statuses, inverse_of: :account, dependent: :destroy # Pinned statuses has_many :status_pins, inverse_of: :account, dependent: :destroy diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 62a11185a3..6b939124fa 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -3,20 +3,21 @@ # # Table name: media_attachments # -# id :bigint(8) not null, primary key -# status_id :bigint(8) -# file_file_name :string -# file_content_type :string -# file_file_size :integer -# file_updated_at :datetime -# remote_url :string default(""), not null -# created_at :datetime not null -# updated_at :datetime not null -# shortcode :string -# type :integer default("image"), not null -# file_meta :json -# account_id :bigint(8) -# description :text +# id :bigint(8) not null, primary key +# status_id :bigint(8) +# file_file_name :string +# file_content_type :string +# file_file_size :integer +# file_updated_at :datetime +# remote_url :string default(""), not null +# created_at :datetime not null +# updated_at :datetime not null +# shortcode :string +# type :integer default("image"), not null +# file_meta :json +# account_id :bigint(8) +# description :text +# scheduled_status_id :bigint(8) # class MediaAttachment < ApplicationRecord @@ -76,8 +77,9 @@ class MediaAttachment < ApplicationRecord IMAGE_LIMIT = 8.megabytes VIDEO_LIMIT = 40.megabytes - belongs_to :account, inverse_of: :media_attachments, optional: true - belongs_to :status, inverse_of: :media_attachments, optional: true + belongs_to :account, inverse_of: :media_attachments, optional: true + belongs_to :status, inverse_of: :media_attachments, optional: true + belongs_to :scheduled_status, inverse_of: :media_attachments, optional: true has_attached_file :file, styles: ->(f) { file_styles f }, @@ -94,8 +96,8 @@ class MediaAttachment < ApplicationRecord validates :account, presence: true validates :description, length: { maximum: 420 }, if: :local? - scope :attached, -> { where.not(status_id: nil) } - scope :unattached, -> { where(status_id: nil) } + scope :attached, -> { where.not(status_id: nil).or(where.not(scheduled_status_id: nil)) } + scope :unattached, -> { where(status_id: nil, scheduled_status_id: nil) } scope :local, -> { where(remote_url: '') } scope :remote, -> { where.not(remote_url: '') } diff --git a/app/models/scheduled_status.rb b/app/models/scheduled_status.rb new file mode 100644 index 0000000000..c95470fc82 --- /dev/null +++ b/app/models/scheduled_status.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: scheduled_statuses +# +# id :bigint(8) not null, primary key +# account_id :bigint(8) +# scheduled_at :datetime +# params :jsonb +# + +class ScheduledStatus < ApplicationRecord + include Paginable + + TOTAL_LIMIT = 300 + DAILY_LIMIT = 25 + + belongs_to :account, inverse_of: :scheduled_statuses + has_many :media_attachments, inverse_of: :scheduled_status, dependent: :destroy + + validate :validate_future_date + validate :validate_total_limit + validate :validate_daily_limit + + private + + def validate_future_date + errors.add(:scheduled_at, I18n.t('scheduled_statuses.too_soon')) if scheduled_at.present? && scheduled_at <= Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET + end + + def validate_total_limit + errors.add(:base, I18n.t('scheduled_statuses.over_total_limit', limit: TOTAL_LIMIT)) if account.scheduled_statuses.count >= TOTAL_LIMIT + end + + def validate_daily_limit + errors.add(:base, I18n.t('scheduled_statuses.over_daily_limit', limit: DAILY_LIMIT)) if account.scheduled_statuses.where('scheduled_at::date = ?::date', scheduled_at).count >= DAILY_LIMIT + end +end diff --git a/app/serializers/rest/scheduled_status_serializer.rb b/app/serializers/rest/scheduled_status_serializer.rb new file mode 100644 index 0000000000..522991bcfc --- /dev/null +++ b/app/serializers/rest/scheduled_status_serializer.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class REST::ScheduledStatusSerializer < ActiveModel::Serializer + attributes :id, :scheduled_at + + has_many :media_attachments, serializer: REST::MediaAttachmentSerializer + + def id + object.id.to_s + end +end diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index eff1b1461c..07fd969e5a 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -1,71 +1,96 @@ # frozen_string_literal: true class PostStatusService < BaseService + MIN_SCHEDULE_OFFSET = 5.minutes.freeze + # Post a text status update, fetch and notify remote users mentioned # @param [Account] account Account from which to post - # @param [String] text Message - # @param [Status] in_reply_to Optional status to reply to # @param [Hash] options + # @option [String] :text Message + # @option [Status] :thread Optional status to reply to # @option [Boolean] :sensitive # @option [String] :visibility # @option [String] :spoiler_text + # @option [String] :language + # @option [String] :scheduled_at # @option [Enumerable] :media_ids Optional array of media IDs to attach # @option [Doorkeeper::Application] :application # @option [String] :idempotency Optional idempotency key # @return [Status] - def call(account, text, in_reply_to = nil, **options) - if options[:idempotency].present? - existing_id = redis.get("idempotency:status:#{account.id}:#{options[:idempotency]}") - return Status.find(existing_id) if existing_id + def call(account, options = {}) + @account = account + @options = options + @text = @options[:text] || '' + @in_reply_to = @options[:thread] + + return idempotency_duplicate if idempotency_given? && idempotency_duplicate? + + validate_media! + preprocess_attributes! + + if scheduled? + schedule_status! + else + process_status! + postprocess_status! + bump_potential_friendship! end - media = validate_media!(options[:media_ids]) - status = nil - text = options.delete(:spoiler_text) if text.blank? && options[:spoiler_text].present? + redis.setex(idempotency_key, 3_600, @status.id) if idempotency_given? - visibility = options[:visibility] || account.user&.setting_default_privacy - visibility = :unlisted if visibility == :public && account.silenced - - ApplicationRecord.transaction do - status = account.statuses.create!(text: text, - media_attachments: media || [], - thread: in_reply_to, - sensitive: (options[:sensitive].nil? ? account.user&.setting_default_sensitive : options[:sensitive]) || options[:spoiler_text].present?, - spoiler_text: options[:spoiler_text] || '', - visibility: visibility, - language: language_from_option(options[:language]) || account.user&.setting_default_language&.presence || LanguageDetector.instance.detect(text, account), - application: options[:application]) - end - - process_hashtags_service.call(status) - process_mentions_service.call(status) - - LinkCrawlWorker.perform_async(status.id) unless status.spoiler_text? - DistributionWorker.perform_async(status.id) - Pubsubhubbub::DistributionWorker.perform_async(status.stream_entry.id) - ActivityPub::DistributionWorker.perform_async(status.id) - - if options[:idempotency].present? - redis.setex("idempotency:status:#{account.id}:#{options[:idempotency]}", 3_600, status.id) - end - - bump_potential_friendship(account, status) - - status + @status end private - def validate_media!(media_ids) - return if media_ids.blank? || !media_ids.is_a?(Enumerable) + def preprocess_attributes! + @text = @options.delete(:spoiler_text) if @text.blank? && @options[:spoiler_text].present? + @visibility = @options[:visibility] || @account.user&.setting_default_privacy + @visibility = :unlisted if @visibility == :public && @account.silenced + @scheduled_at = @options[:scheduled_at]&.to_datetime + @scheduled_at = nil if scheduled_in_the_past? + end - raise Mastodon::ValidationError, I18n.t('media_attachments.validations.too_many') if media_ids.size > 4 + def process_status! + # The following transaction block is needed to wrap the UPDATEs to + # the media attachments when the status is created - media = MediaAttachment.where(status_id: nil).where(id: media_ids.take(4).map(&:to_i)) + ApplicationRecord.transaction do + @status = @account.statuses.create!(status_attributes) + end - raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if media.size > 1 && media.find(&:video?) + process_hashtags_service.call(@status) + process_mentions_service.call(@status) + end - media + def schedule_status! + if @account.statuses.build(status_attributes).valid? + # The following transaction block is needed to wrap the UPDATEs to + # the media attachments when the scheduled status is created + + ApplicationRecord.transaction do + @status = @account.scheduled_statuses.create!(scheduled_status_attributes) + end + else + raise ActiveRecord::RecordInvalid + end + end + + def postprocess_status! + LinkCrawlWorker.perform_async(@status.id) unless @status.spoiler_text? + DistributionWorker.perform_async(@status.id) + Pubsubhubbub::DistributionWorker.perform_async(@status.stream_entry.id) + ActivityPub::DistributionWorker.perform_async(@status.id) + end + + def validate_media! + return if @options[:media_ids].blank? || !@options[:media_ids].is_a?(Enumerable) + + raise Mastodon::ValidationError, I18n.t('media_attachments.validations.too_many') if @options[:media_ids].size > 4 + + @media = MediaAttachment.where(status_id: nil).where(id: @options[:media_ids].take(4).map(&:to_i)) + + raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if @media.size > 1 && @media.find(&:video?) end def language_from_option(str) @@ -84,10 +109,68 @@ class PostStatusService < BaseService Redis.current end - def bump_potential_friendship(account, status) - return if !status.reply? || account.id == status.in_reply_to_account_id + def scheduled? + @scheduled_at.present? + end + + def idempotency_key + "idempotency:status:#{@account.id}:#{@options[:idempotency]}" + end + + def idempotency_given? + @options[:idempotency].present? + end + + def idempotency_duplicate + if scheduled? + @account.schedule_statuses.find(@idempotency_duplicate) + else + @account.statuses.find(@idempotency_duplicate) + end + end + + def idempotency_duplicate? + @idempotency_duplicate = redis.get(idempotency_key) + end + + def scheduled_in_the_past? + @scheduled_at.present? && @scheduled_at <= Time.now.utc + MIN_SCHEDULE_OFFSET + end + + def bump_potential_friendship! + return if !@status.reply? || @account.id == @status.in_reply_to_account_id ActivityTracker.increment('activity:interactions') - return if account.following?(status.in_reply_to_account_id) - PotentialFriendshipTracker.record(account.id, status.in_reply_to_account_id, :reply) + return if @account.following?(@status.in_reply_to_account_id) + PotentialFriendshipTracker.record(@account.id, @status.in_reply_to_account_id, :reply) + end + + def status_attributes + { + text: @text, + media_attachments: @media || [], + thread: @in_reply_to, + sensitive: (@options[:sensitive].nil? ? @account.user&.setting_default_sensitive : @options[:sensitive]) || @options[:spoiler_text].present?, + spoiler_text: @options[:spoiler_text] || '', + visibility: @visibility, + language: language_from_option(@options[:language]) || @account.user&.setting_default_language&.presence || LanguageDetector.instance.detect(@text, @account), + application: @options[:application], + } + end + + def scheduled_status_attributes + { + scheduled_at: @scheduled_at, + media_attachments: @media || [], + params: scheduled_options, + } + end + + def scheduled_options + @options.tap do |options_hash| + options_hash[:in_reply_to_status_id] = options_hash.delete(:thread)&.id + options_hash[:application_id] = options_hash.delete(:application)&.id + options_hash[:scheduled_at] = nil + options_hash[:idempotency] = nil + end end end diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb index 6ab6b29019..1bc2314de7 100644 --- a/app/services/suspend_account_service.rb +++ b/app/services/suspend_account_service.rb @@ -20,6 +20,7 @@ class SuspendAccountService < BaseService owned_lists passive_relationships report_notes + scheduled_statuses status_pins stream_entries subscriptions diff --git a/app/workers/publish_scheduled_status_worker.rb b/app/workers/publish_scheduled_status_worker.rb new file mode 100644 index 0000000000..298a13001e --- /dev/null +++ b/app/workers/publish_scheduled_status_worker.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class PublishScheduledStatusWorker + include Sidekiq::Worker + + def perform(scheduled_status_id) + scheduled_status = ScheduledStatus.find(scheduled_status_id) + scheduled_status.destroy! + + PostStatusService.new.call( + scheduled_status.account, + options_with_objects(scheduled_status.params.with_indifferent_access) + ) + rescue ActiveRecord::RecordNotFound, ActiveRecord::RecordInvalid + true + end + + def options_with_objects(options) + options.tap do |options_hash| + options_hash[:application] = Doorkeeper::Application.find(options_hash.delete(:application_id)) if options[:application_id] + options_hash[:thread] = Status.find(options_hash.delete(:in_reply_to_status_id)) if options_hash[:in_reply_to_status_id] + end + end +end diff --git a/app/workers/scheduler/scheduled_statuses_scheduler.rb b/app/workers/scheduler/scheduled_statuses_scheduler.rb new file mode 100644 index 0000000000..70a45846b9 --- /dev/null +++ b/app/workers/scheduler/scheduled_statuses_scheduler.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class Scheduler::ScheduledStatusesScheduler + include Sidekiq::Worker + + sidekiq_options unique: :until_executed, retry: 0 + + def perform + due_statuses.find_each do |scheduled_status| + PublishScheduledStatusWorker.perform_at(scheduled_status.scheduled_at) + end + end + + private + + def due_statuses + ScheduledStatus.where('scheduled_at <= ?', Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET) + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 6c78b9fc95..7e05568f11 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -728,6 +728,10 @@ en: error: Error title: Title unfollowed: Unfollowed + scheduled_statuses: + over_daily_limit: You have exceeded the limit of %{limit} scheduled toots for that day + over_total_limit: You have exceeded the limit of %{limit} scheduled toots + too_soon: The scheduled date must be in the future sessions: activity: Last activity browser: Browser diff --git a/config/routes.rb b/config/routes.rb index 5bdd1986cc..3ae2735d1c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -283,6 +283,7 @@ Rails.application.routes.draw do resources :streaming, only: [:index] resources :custom_emojis, only: [:index] resources :suggestions, only: [:index, :destroy] + resources :scheduled_statuses, only: [:index, :show, :update, :destroy] resources :conversations, only: [:index, :destroy] do member do diff --git a/config/sidekiq.yml b/config/sidekiq.yml index c44af5b6c5..0ec1742abf 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -6,6 +6,9 @@ - [mailers, 2] - [pull] :schedule: + scheduled_statuses_scheduler: + every: '5m' + class: Scheduler::ScheduledStatusesScheduler subscriptions_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *' class: Scheduler::SubscriptionsScheduler diff --git a/db/migrate/20190103124649_create_scheduled_statuses.rb b/db/migrate/20190103124649_create_scheduled_statuses.rb new file mode 100644 index 0000000000..2b78073b85 --- /dev/null +++ b/db/migrate/20190103124649_create_scheduled_statuses.rb @@ -0,0 +1,9 @@ +class CreateScheduledStatuses < ActiveRecord::Migration[5.2] + def change + create_table :scheduled_statuses do |t| + t.belongs_to :account, foreign_key: { on_delete: :cascade } + t.datetime :scheduled_at, index: true + t.jsonb :params + end + end +end diff --git a/db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb b/db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb new file mode 100644 index 0000000000..6f6cf23513 --- /dev/null +++ b/db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb @@ -0,0 +1,8 @@ +class AddScheduledStatusIdToMediaAttachments < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + add_reference :media_attachments, :scheduled_status, foreign_key: { on_delete: :nullify }, index: false + add_index :media_attachments, :scheduled_status_id, algorithm: :concurrently + end +end diff --git a/db/schema.rb b/db/schema.rb index 066a90b526..9380362e17 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2018_12_26_021420) do +ActiveRecord::Schema.define(version: 2019_01_03_124754) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -336,7 +336,9 @@ ActiveRecord::Schema.define(version: 2018_12_26_021420) do t.json "file_meta" t.bigint "account_id" t.text "description" + t.bigint "scheduled_status_id" t.index ["account_id"], name: "index_media_attachments_on_account_id" + t.index ["scheduled_status_id"], name: "index_media_attachments_on_scheduled_status_id" t.index ["shortcode"], name: "index_media_attachments_on_shortcode", unique: true t.index ["status_id"], name: "index_media_attachments_on_status_id" end @@ -487,6 +489,14 @@ ActiveRecord::Schema.define(version: 2018_12_26_021420) do t.index ["target_account_id"], name: "index_reports_on_target_account_id" end + create_table "scheduled_statuses", force: :cascade do |t| + t.bigint "account_id" + t.datetime "scheduled_at" + t.jsonb "params" + t.index ["account_id"], name: "index_scheduled_statuses_on_account_id" + t.index ["scheduled_at"], name: "index_scheduled_statuses_on_scheduled_at" + end + create_table "session_activations", force: :cascade do |t| t.string "session_id", null: false t.datetime "created_at", null: false @@ -700,6 +710,7 @@ ActiveRecord::Schema.define(version: 2018_12_26_021420) do add_foreign_key "list_accounts", "lists", on_delete: :cascade add_foreign_key "lists", "accounts", on_delete: :cascade add_foreign_key "media_attachments", "accounts", name: "fk_96dd81e81b", on_delete: :nullify + add_foreign_key "media_attachments", "scheduled_statuses", on_delete: :nullify add_foreign_key "media_attachments", "statuses", on_delete: :nullify add_foreign_key "mentions", "accounts", name: "fk_970d43f9d1", on_delete: :cascade add_foreign_key "mentions", "statuses", on_delete: :cascade @@ -718,6 +729,7 @@ ActiveRecord::Schema.define(version: 2018_12_26_021420) do add_foreign_key "reports", "accounts", column: "assigned_account_id", on_delete: :nullify add_foreign_key "reports", "accounts", column: "target_account_id", name: "fk_eb37af34f0", on_delete: :cascade add_foreign_key "reports", "accounts", name: "fk_4b81f7522c", on_delete: :cascade + add_foreign_key "scheduled_statuses", "accounts", on_delete: :cascade add_foreign_key "session_activations", "oauth_access_tokens", column: "access_token_id", name: "fk_957e5bda89", on_delete: :cascade add_foreign_key "session_activations", "users", name: "fk_e5fda67334", on_delete: :cascade add_foreign_key "status_pins", "accounts", name: "fk_d4cb435b62", on_delete: :cascade diff --git a/spec/controllers/api/v1/conversations_controller_spec.rb b/spec/controllers/api/v1/conversations_controller_spec.rb index 2e95258553..070f65061b 100644 --- a/spec/controllers/api/v1/conversations_controller_spec.rb +++ b/spec/controllers/api/v1/conversations_controller_spec.rb @@ -15,7 +15,7 @@ RSpec.describe Api::V1::ConversationsController, type: :controller do let(:scopes) { 'read:statuses' } before do - PostStatusService.new.call(other.account, 'Hey @alice', nil, visibility: 'direct') + PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct') end it 'returns http success' do diff --git a/spec/controllers/api/v1/notifications_controller_spec.rb b/spec/controllers/api/v1/notifications_controller_spec.rb index 9f679cb8a7..d0f82e79fe 100644 --- a/spec/controllers/api/v1/notifications_controller_spec.rb +++ b/spec/controllers/api/v1/notifications_controller_spec.rb @@ -50,9 +50,9 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do let(:scopes) { 'read:notifications' } before do - first_status = PostStatusService.new.call(user.account, 'Test') + first_status = PostStatusService.new.call(user.account, text: 'Test') @reblog_of_first_status = ReblogService.new.call(other.account, first_status) - mentioning_status = PostStatusService.new.call(other.account, 'Hello @alice') + mentioning_status = PostStatusService.new.call(other.account, text: 'Hello @alice') @mention_from_status = mentioning_status.mentions.first @favourite = FavouriteService.new.call(other.account, first_status) @follow = FollowService.new.call(other.account, 'alice') diff --git a/spec/controllers/api/v1/timelines/home_controller_spec.rb b/spec/controllers/api/v1/timelines/home_controller_spec.rb index 63d624c355..e953e46495 100644 --- a/spec/controllers/api/v1/timelines/home_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/home_controller_spec.rb @@ -17,7 +17,7 @@ describe Api::V1::Timelines::HomeController do describe 'GET #show' do before do follow = Fabricate(:follow, account: user.account) - PostStatusService.new.call(follow.target_account, 'New status for user home timeline.') + PostStatusService.new.call(follow.target_account, text: 'New status for user home timeline.') end it 'returns http success' do diff --git a/spec/controllers/api/v1/timelines/list_controller_spec.rb b/spec/controllers/api/v1/timelines/list_controller_spec.rb index 93a2be6e6c..45e4bf34c8 100644 --- a/spec/controllers/api/v1/timelines/list_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/list_controller_spec.rb @@ -19,7 +19,7 @@ describe Api::V1::Timelines::ListController do before do follow = Fabricate(:follow, account: user.account) list.accounts << follow.target_account - PostStatusService.new.call(follow.target_account, 'New status for user home timeline.') + PostStatusService.new.call(follow.target_account, text: 'New status for user home timeline.') end it 'returns http success' do diff --git a/spec/controllers/api/v1/timelines/public_controller_spec.rb b/spec/controllers/api/v1/timelines/public_controller_spec.rb index a0f778cdce..737aedba6f 100644 --- a/spec/controllers/api/v1/timelines/public_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/public_controller_spec.rb @@ -16,7 +16,7 @@ describe Api::V1::Timelines::PublicController do describe 'GET #show' do before do - PostStatusService.new.call(user.account, 'New status from user for federated public timeline.') + PostStatusService.new.call(user.account, text: 'New status from user for federated public timeline.') end it 'returns http success' do @@ -29,7 +29,7 @@ describe Api::V1::Timelines::PublicController do describe 'GET #show with local only' do before do - PostStatusService.new.call(user.account, 'New status from user for local public timeline.') + PostStatusService.new.call(user.account, text: 'New status from user for local public timeline.') end it 'returns http success' do diff --git a/spec/controllers/api/v1/timelines/tag_controller_spec.rb b/spec/controllers/api/v1/timelines/tag_controller_spec.rb index 472779f545..f71ca2a399 100644 --- a/spec/controllers/api/v1/timelines/tag_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/tag_controller_spec.rb @@ -16,7 +16,7 @@ describe Api::V1::Timelines::TagController do describe 'GET #show' do before do - PostStatusService.new.call(user.account, 'It is a #test') + PostStatusService.new.call(user.account, text: 'It is a #test') end it 'returns http success' do diff --git a/spec/fabricators/scheduled_status_fabricator.rb b/spec/fabricators/scheduled_status_fabricator.rb new file mode 100644 index 0000000000..52384d1378 --- /dev/null +++ b/spec/fabricators/scheduled_status_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:scheduled_status) do + account + scheduled_at { 20.hours.from_now } +end diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index 64e109aecd..c506cd87f1 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -108,14 +108,14 @@ RSpec.describe FeedManager do it 'returns false for status by followee mentioning another account' do bob.follow!(alice) - status = PostStatusService.new.call(alice, 'Hey @jeff') + status = PostStatusService.new.call(alice, text: 'Hey @jeff') expect(FeedManager.instance.filter?(:home, status, bob.id)).to be false end it 'returns true for status by followee mentioning blocked account' do bob.block!(jeff) bob.follow!(alice) - status = PostStatusService.new.call(alice, 'Hey @jeff') + status = PostStatusService.new.call(alice, text: 'Hey @jeff') expect(FeedManager.instance.filter?(:home, status, bob.id)).to be true end @@ -155,7 +155,7 @@ RSpec.describe FeedManager do context 'for mentions feed' do it 'returns true for status that mentions blocked account' do bob.block!(jeff) - status = PostStatusService.new.call(alice, 'Hey @jeff') + status = PostStatusService.new.call(alice, text: 'Hey @jeff') expect(FeedManager.instance.filter?(:mentions, status, bob.id)).to be true end diff --git a/spec/models/scheduled_status_spec.rb b/spec/models/scheduled_status_spec.rb new file mode 100644 index 0000000000..f8c9d8b81f --- /dev/null +++ b/spec/models/scheduled_status_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe ScheduledStatus, type: :model do +end diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb index c662145552..e53623449f 100644 --- a/spec/services/batched_remove_status_service_spec.rb +++ b/spec/services/batched_remove_status_service_spec.rb @@ -8,8 +8,8 @@ RSpec.describe BatchedRemoveStatusService, type: :service do let!(:jeff) { Fabricate(:user).account } let!(:hank) { Fabricate(:account, username: 'hank', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } - let(:status1) { PostStatusService.new.call(alice, 'Hello @bob@example.com') } - let(:status2) { PostStatusService.new.call(alice, 'Another status') } + let(:status1) { PostStatusService.new.call(alice, text: 'Hello @bob@example.com') } + let(:status2) { PostStatusService.new.call(alice, text: 'Another status') } before do allow(Redis.current).to receive_messages(publish: nil) diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb index 8f35522245..3774fed6f3 100644 --- a/spec/services/post_status_service_spec.rb +++ b/spec/services/post_status_service_spec.rb @@ -7,7 +7,7 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) text = "test status update" - status = subject.call(account, text) + status = subject.call(account, text: text) expect(status).to be_persisted expect(status.text).to eq text @@ -18,20 +18,31 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) text = "test status update" - status = subject.call(account, text, in_reply_to_status) + status = subject.call(account, text: text, thread: in_reply_to_status) expect(status).to be_persisted expect(status.text).to eq text expect(status.thread).to eq in_reply_to_status end + it 'schedules a status' do + account = Fabricate(:account) + future = Time.now.utc + 2.hours + + status = subject.call(account, text: 'Hi future!', scheduled_at: future) + + expect(status).to be_a ScheduledStatus + expect(status.scheduled_at).to eq future + expect(status.params['text']).to eq 'Hi future!' + end + it 'creates response to the original status of boost' do boosted_status = Fabricate(:status) in_reply_to_status = Fabricate(:status, reblog: boosted_status) account = Fabricate(:account) text = "test status update" - status = subject.call(account, text, in_reply_to_status) + status = subject.call(account, text: text, thread: in_reply_to_status) expect(status).to be_persisted expect(status.text).to eq text @@ -69,7 +80,7 @@ RSpec.describe PostStatusService, type: :service do end it 'creates a status with limited visibility for silenced users' do - status = subject.call(Fabricate(:account, silenced: true), 'test', nil, visibility: :public) + status = subject.call(Fabricate(:account, silenced: true), text: 'test', visibility: :public) expect(status).to be_persisted expect(status.visibility).to eq "unlisted" @@ -88,7 +99,7 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) text = 'This is an English text.' - status = subject.call(account, text) + status = subject.call(account, text: text) expect(status.language).to eq 'en' end @@ -99,7 +110,7 @@ RSpec.describe PostStatusService, type: :service do allow(ProcessMentionsService).to receive(:new).and_return(mention_service) account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(ProcessMentionsService).to have_received(:new) expect(mention_service).to have_received(:call).with(status) @@ -111,7 +122,7 @@ RSpec.describe PostStatusService, type: :service do allow(ProcessHashtagsService).to receive(:new).and_return(hashtags_service) account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(ProcessHashtagsService).to have_received(:new) expect(hashtags_service).to have_received(:call).with(status) @@ -124,7 +135,7 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(DistributionWorker).to have_received(:perform_async).with(status.id) expect(Pubsubhubbub::DistributionWorker).to have_received(:perform_async).with(status.stream_entry.id) @@ -135,7 +146,7 @@ RSpec.describe PostStatusService, type: :service do allow(LinkCrawlWorker).to receive(:perform_async) account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(LinkCrawlWorker).to have_received(:perform_async).with(status.id) end @@ -146,8 +157,7 @@ RSpec.describe PostStatusService, type: :service do status = subject.call( account, - "test status update", - nil, + text: "test status update", media_ids: [media.id], ) @@ -160,8 +170,7 @@ RSpec.describe PostStatusService, type: :service do expect do subject.call( account, - "test status update", - nil, + text: "test status update", media_ids: [ Fabricate(:media_attachment, account: account), Fabricate(:media_attachment, account: account), @@ -182,8 +191,7 @@ RSpec.describe PostStatusService, type: :service do expect do subject.call( account, - "test status update", - nil, + text: "test status update", media_ids: [ Fabricate(:media_attachment, type: :video, account: account), Fabricate(:media_attachment, type: :image, account: account), @@ -197,12 +205,12 @@ RSpec.describe PostStatusService, type: :service do it 'returns existing status when used twice with idempotency key' do account = Fabricate(:account) - status1 = subject.call(account, 'test', nil, idempotency: 'meepmeep') - status2 = subject.call(account, 'test', nil, idempotency: 'meepmeep') + status1 = subject.call(account, text: 'test', idempotency: 'meepmeep') + status2 = subject.call(account, text: 'test', idempotency: 'meepmeep') expect(status2.id).to eq status1.id end def create_status_with_options(**options) - subject.call(Fabricate(:account), 'test', nil, options) + subject.call(Fabricate(:account), options.merge(text: 'test')) end end diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb index 2134f51fda..7bba83a602 100644 --- a/spec/services/remove_status_service_spec.rb +++ b/spec/services/remove_status_service_spec.rb @@ -19,7 +19,7 @@ RSpec.describe RemoveStatusService, type: :service do jeff.follow!(alice) hank.follow!(alice) - @status = PostStatusService.new.call(alice, 'Hello @bob@example.com') + @status = PostStatusService.new.call(alice, text: 'Hello @bob@example.com') Fabricate(:status, account: bill, reblog: @status, uri: 'hoge') subject.call(@status) end diff --git a/spec/workers/publish_scheduled_status_worker_spec.rb b/spec/workers/publish_scheduled_status_worker_spec.rb new file mode 100644 index 0000000000..f8547e6fe2 --- /dev/null +++ b/spec/workers/publish_scheduled_status_worker_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PublishScheduledStatusWorker do + subject { described_class.new } + + let(:scheduled_status) { Fabricate(:scheduled_status, params: { text: 'Hello world, future!' }) } + + describe 'perform' do + before do + subject.perform(scheduled_status.id) + end + + it 'creates a status' do + expect(scheduled_status.account.statuses.first.text).to eq 'Hello world, future!' + end + + it 'removes the scheduled status' do + expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil + end + end +end From f05eb6708172c170598fe916357f057ab2791fd8 Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Sat, 5 Jan 2019 09:29:53 -0800 Subject: [PATCH 25/64] Enable immutable caching for S3 objects (#9722) I also added "public" here, as I can't think of a good reason not to add it. Perhaps it has some marginal benefit in that ISPs (or other proxies) can cache it for all users. The assets are certainly publicly available and the same for all users. --- config/initializers/paperclip.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index df0205879c..4bbf8b827b 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -25,7 +25,7 @@ if ENV['S3_ENABLED'] == 'true' s3_protocol: s3_protocol, s3_host_name: s3_hostname, s3_headers: { - 'Cache-Control' => 'max-age=315576000', + 'Cache-Control' => 'public, max-age=315576000, immutable', }, s3_permissions: ENV.fetch('S3_PERMISSION') { 'public-read' }, s3_region: s3_region, From c73653ce2351a78a2fc8e5107e5c8942b558058e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Jan 2019 19:13:11 +0100 Subject: [PATCH 26/64] Add missing locale strings (#9723) --- config/locales/en.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 7e05568f11..1f240f2726 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -572,7 +572,9 @@ en: size: Size blocks: You block csv: CSV + domain_blocks: Domain blocks follows: You follow + lists: Lists mutes: You mute storage: Media storage filters: From 8ad57a0426402831373f9f45705774f875b5b65d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Jan 2019 09:21:16 +0100 Subject: [PATCH 27/64] Fix PublishScheduledStatusWorker being queued with no arguments (#9724) --- app/workers/scheduler/scheduled_statuses_scheduler.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/scheduler/scheduled_statuses_scheduler.rb b/app/workers/scheduler/scheduled_statuses_scheduler.rb index 70a45846b9..1772a246bc 100644 --- a/app/workers/scheduler/scheduled_statuses_scheduler.rb +++ b/app/workers/scheduler/scheduled_statuses_scheduler.rb @@ -7,7 +7,7 @@ class Scheduler::ScheduledStatusesScheduler def perform due_statuses.find_each do |scheduled_status| - PublishScheduledStatusWorker.perform_at(scheduled_status.scheduled_at) + PublishScheduledStatusWorker.perform_at(scheduled_status.scheduled_at, scheduled_status.id) end end From 1cbdf8d218dcd07889d14e4f5f22a4339bddb879 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Jan 2019 12:03:27 +0100 Subject: [PATCH 28/64] Fix wrong param name in scheduled statuses and return params in API (#9725) The database column and API param are called in_reply_to_id, not in_reply_to_status_id, so it makes no sense to encode it that way --- app/serializers/rest/scheduled_status_serializer.rb | 6 +++++- app/services/post_status_service.rb | 8 ++++---- app/workers/publish_scheduled_status_worker.rb | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/serializers/rest/scheduled_status_serializer.rb b/app/serializers/rest/scheduled_status_serializer.rb index 522991bcfc..5d6311b872 100644 --- a/app/serializers/rest/scheduled_status_serializer.rb +++ b/app/serializers/rest/scheduled_status_serializer.rb @@ -1,11 +1,15 @@ # frozen_string_literal: true class REST::ScheduledStatusSerializer < ActiveModel::Serializer - attributes :id, :scheduled_at + attributes :id, :scheduled_at, :params has_many :media_attachments, serializer: REST::MediaAttachmentSerializer def id object.id.to_s end + + def params + object.params.without(:application_id) + end end diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 07fd969e5a..260765edfd 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -167,10 +167,10 @@ class PostStatusService < BaseService def scheduled_options @options.tap do |options_hash| - options_hash[:in_reply_to_status_id] = options_hash.delete(:thread)&.id - options_hash[:application_id] = options_hash.delete(:application)&.id - options_hash[:scheduled_at] = nil - options_hash[:idempotency] = nil + options_hash[:in_reply_to_id] = options_hash.delete(:thread)&.id + options_hash[:application_id] = options_hash.delete(:application)&.id + options_hash[:scheduled_at] = nil + options_hash[:idempotency] = nil end end end diff --git a/app/workers/publish_scheduled_status_worker.rb b/app/workers/publish_scheduled_status_worker.rb index 298a13001e..641fcc61c7 100644 --- a/app/workers/publish_scheduled_status_worker.rb +++ b/app/workers/publish_scheduled_status_worker.rb @@ -18,7 +18,7 @@ class PublishScheduledStatusWorker def options_with_objects(options) options.tap do |options_hash| options_hash[:application] = Doorkeeper::Application.find(options_hash.delete(:application_id)) if options[:application_id] - options_hash[:thread] = Status.find(options_hash.delete(:in_reply_to_status_id)) if options_hash[:in_reply_to_status_id] + options_hash[:thread] = Status.find(options_hash.delete(:in_reply_to_id)) if options_hash[:in_reply_to_id] end end end From 86f27b178c778f6e8ea8e3de938741cd62a20cfa Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Jan 2019 16:38:40 +0100 Subject: [PATCH 29/64] Fix deleting a scheduled status immediately deleting media attachments (#9728) --- app/models/scheduled_status.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/scheduled_status.rb b/app/models/scheduled_status.rb index c95470fc82..27f0cbd280 100644 --- a/app/models/scheduled_status.rb +++ b/app/models/scheduled_status.rb @@ -17,7 +17,7 @@ class ScheduledStatus < ApplicationRecord DAILY_LIMIT = 25 belongs_to :account, inverse_of: :scheduled_statuses - has_many :media_attachments, inverse_of: :scheduled_status, dependent: :destroy + has_many :media_attachments, inverse_of: :scheduled_status, dependent: :nullify validate :validate_future_date validate :validate_total_limit From 5dbe1865851923f27528248726a7170298fa3f2e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Jan 2019 23:52:58 +0100 Subject: [PATCH 30/64] Add cache to custom emojis API (#9732) Fix #9729 --- app/controllers/api/v1/custom_emojis_controller.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/v1/custom_emojis_controller.rb b/app/controllers/api/v1/custom_emojis_controller.rb index f8cd64455a..7bac27da4b 100644 --- a/app/controllers/api/v1/custom_emojis_controller.rb +++ b/app/controllers/api/v1/custom_emojis_controller.rb @@ -4,6 +4,8 @@ class Api::V1::CustomEmojisController < Api::BaseController respond_to :json def index - render json: CustomEmoji.local.where(disabled: false), each_serializer: REST::CustomEmojiSerializer + render_cached_json('api:v1:custom_emojis', expires_in: 1.minute) do + ActiveModelSerializers::SerializableResource.new(CustomEmoji.local.where(disabled: false), each_serializer: REST::CustomEmojiSerializer) + end end end From 0e989a5b8f98f6c607fc9a727910e4e693bf8abd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Jan 2019 23:53:46 +0100 Subject: [PATCH 31/64] Fix unique violation in downcase custom emoji domain migration (#9733) Fix #9727 --- .../20181207011115_downcase_custom_emoji_domains.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb index c9db3800da..1fce2cb379 100644 --- a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb +++ b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb @@ -1,7 +1,15 @@ class DowncaseCustomEmojiDomains < ActiveRecord::Migration[5.2] disable_ddl_transaction! - def change + def up + duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY lower(domain) HAVING count(*) > 1').to_hash + + duplicates.each do |row| + CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all + end + CustomEmoji.in_batches.update_all('domain = lower(domain)') end + + def down; end end From bd5a8c7765102a166ec8909e4a3b7781ec5537d6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Jan 2019 23:54:01 +0100 Subject: [PATCH 32/64] Fix embed play icons regression from #9715 (#9731) --- app/javascript/styles/mastodon/components.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index a593e385d6..10e0946481 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2588,7 +2588,7 @@ a.status-card { background: lighten($ui-base-color, 8%); position: relative; - .fa { + & > .fa { font-size: 21px; position: absolute; transform-origin: 50% 50%; From 3a07e85c4d17f6670998188417205395f6857a67 Mon Sep 17 00:00:00 2001 From: Remi Rampin Date: Mon, 7 Jan 2019 02:14:53 -0500 Subject: [PATCH 33/64] Fix db/seeds.rb (#9738) Add "agreement: true" to avoid: > ActiveRecord::RecordInvalid: Validation failed: Agreement must be accepted --- db/seeds.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/seeds.rb b/db/seeds.rb index 6adfeed8d3..cf62ebf39a 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -4,5 +4,5 @@ if Rails.env.development? domain = ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain admin = Account.where(username: 'admin').first_or_initialize(username: 'admin') admin.save(validate: false) - User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, admin: true, account: admin).save! + User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, admin: true, account: admin, agreement: true).save! end From bc4e49fb66f8bff7121ea88c025af4ecb20c7554 Mon Sep 17 00:00:00 2001 From: 0xflotus <0xflotus@gmail.com> Date: Mon, 7 Jan 2019 08:17:35 +0100 Subject: [PATCH 34/64] refactored package.json (#9740) added `not dead` to browserslist config, because the previous config covered e.g. IE Versions, that are not maintained + IE >= 11. considering [browserslist best practice guide](https://github.com/browserslist/browserslist/blob/master/README.md#best-practices) --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 15d9f085a8..d5dbd19c30 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "browserslist": [ "last 2 versions", "IE >= 11", - "iOS >= 9" + "iOS >= 9", + "not dead" ], "private": true, "dependencies": { From 57c91fbbed7fa5f44c7144194e313f003c2ef8b3 Mon Sep 17 00:00:00 2001 From: 0xflotus <0xflotus@gmail.com> Date: Mon, 7 Jan 2019 08:23:09 +0100 Subject: [PATCH 35/64] refactored account.js (#9739) --- app/javascript/mastodon/components/account.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 2bcea8b675..206030c006 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -68,10 +68,10 @@ class Account extends ImmutablePureComponent { if (hidden) { return ( -
+ {account.get('display_name')} {account.get('username')} -
+ ); } From 0a4caa89c364fb9dcec966166e4bc9620ddf1013 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Jan 2019 09:47:00 +0100 Subject: [PATCH 36/64] Fix regression in custom emoji migration (#9742) Fix #9741 --- db/migrate/20181207011115_downcase_custom_emoji_domains.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb index 1fce2cb379..65f1fc8d93 100644 --- a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb +++ b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb @@ -2,7 +2,7 @@ class DowncaseCustomEmojiDomains < ActiveRecord::Migration[5.2] disable_ddl_transaction! def up - duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY lower(domain) HAVING count(*) > 1').to_hash + duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY shortcode, lower(domain) HAVING count(*) > 1').to_hash duplicates.each do |row| CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all From 43c61bca60016cad5d3fae210fd57622b40225a8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Jan 2019 14:50:20 +0100 Subject: [PATCH 37/64] Add locale param to sign-up API (#9747) Fix #9627 --- app/controllers/api/v1/accounts_controller.rb | 2 +- app/services/app_sign_up_service.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 6e4084c4e3..2ccbc3cbbd 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -76,7 +76,7 @@ class Api::V1::AccountsController < Api::BaseController end def account_params - params.permit(:username, :email, :password, :agreement) + params.permit(:username, :email, :password, :agreement, :locale) end def check_enabled_registrations diff --git a/app/services/app_sign_up_service.rb b/app/services/app_sign_up_service.rb index 1878587e80..d621cc462c 100644 --- a/app/services/app_sign_up_service.rb +++ b/app/services/app_sign_up_service.rb @@ -4,7 +4,7 @@ class AppSignUpService < BaseService def call(app, params) return unless allowed_registrations? - user_params = params.slice(:email, :password, :agreement) + user_params = params.slice(:email, :password, :agreement, :locale) account_params = params.slice(:username) user = User.create!(user_params.merge(created_by_application: app, password_confirmation: user_params[:password], account_attributes: account_params)) From 5654535728f3017615b801a1b9163d61f0cf623e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Jan 2019 15:36:26 +0100 Subject: [PATCH 38/64] Change remote interaction dialog to use specific actions (#9743) * Change remote interaction dialog to use specific actions Instead of just "interact", use different strings based on whether it's a reply, reblog or favourite. Add explanation why the step is necessary in the first place * Remove obsolete strings --- app/controllers/remote_interaction_controller.rb | 5 +++++ app/views/remote_follow/new.html.haml | 4 +++- app/views/remote_interaction/new.html.haml | 10 +++++++--- app/views/stream_entries/_detailed_status.html.haml | 6 +++--- app/views/stream_entries/_simple_status.html.haml | 6 +++--- config/locales/ar.yml | 3 --- config/locales/ast.yml | 3 --- config/locales/ca.yml | 3 --- config/locales/co.yml | 3 --- config/locales/cs.yml | 3 --- config/locales/cy.yml | 3 --- config/locales/da.yml | 3 --- config/locales/de.yml | 3 --- config/locales/el.yml | 3 --- config/locales/en.yml | 12 ++++++++++-- config/locales/eo.yml | 3 --- config/locales/es.yml | 3 --- config/locales/eu.yml | 3 --- config/locales/fa.yml | 3 --- config/locales/fr.yml | 3 --- config/locales/gl.yml | 3 --- config/locales/it.yml | 3 --- config/locales/ja.yml | 3 --- config/locales/ka.yml | 3 --- config/locales/ko.yml | 3 --- config/locales/nl.yml | 3 --- config/locales/oc.yml | 3 --- config/locales/pl.yml | 3 --- config/locales/pt-BR.yml | 3 --- config/locales/ru.yml | 3 --- config/locales/sk.yml | 3 --- config/locales/sl.yml | 2 -- config/locales/sr.yml | 3 --- 33 files changed, 31 insertions(+), 92 deletions(-) diff --git a/app/controllers/remote_interaction_controller.rb b/app/controllers/remote_interaction_controller.rb index 6299a1e13d..cc6993c52b 100644 --- a/app/controllers/remote_interaction_controller.rb +++ b/app/controllers/remote_interaction_controller.rb @@ -5,6 +5,7 @@ class RemoteInteractionController < ApplicationController layout 'modal' + before_action :set_interaction_type before_action :set_status before_action :set_body_classes @@ -45,4 +46,8 @@ class RemoteInteractionController < ApplicationController @body_classes = 'modal-layout' @hide_header = true end + + def set_interaction_type + @interaction_type = %w(reply reblog favourite).include?(params[:type]) ? params[:type] : 'reply' + end end diff --git a/app/views/remote_follow/new.html.haml b/app/views/remote_follow/new.html.haml index 9b679015f1..5cf6977ba1 100644 --- a/app/views/remote_follow/new.html.haml +++ b/app/views/remote_follow/new.html.haml @@ -16,4 +16,6 @@ .actions = f.button :button, t('remote_follow.proceed'), type: :submit - %p.hint.subtle-hint= t('remote_follow.no_account_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started') + %p.hint.subtle-hint + = t('remote_follow.reason_html', instance: site_hostname) + = t('remote_follow.no_account_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started') diff --git a/app/views/remote_interaction/new.html.haml b/app/views/remote_interaction/new.html.haml index 7357546b6e..a0b1068148 100644 --- a/app/views/remote_interaction/new.html.haml +++ b/app/views/remote_interaction/new.html.haml @@ -1,6 +1,6 @@ .form-container .follow-prompt - %h2= t('remote_interaction.prompt') + %h2= t("remote_interaction.#{@interaction_type}.prompt") .public-layout .activity-stream.activity-stream--highlighted @@ -9,9 +9,13 @@ = simple_form_for @remote_follow, as: :remote_follow, url: remote_interaction_path(@status) do |f| = render 'shared/error_messages', object: @remote_follow + = hidden_field_tag :type, @interaction_type + = f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' } .actions - = f.button :button, t('remote_interaction.proceed'), type: :submit + = f.button :button, t("remote_interaction.#{@interaction_type}.proceed"), type: :submit - %p.hint.subtle-hint= t('remote_follow.no_account_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started') + %p.hint.subtle-hint + = t('remote_follow.reason_html', instance: site_hostname) + = t('remote_follow.no_account_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started') diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml index b307299705..41d4714b90 100644 --- a/app/views/stream_entries/_detailed_status.html.haml +++ b/app/views/stream_entries/_detailed_status.html.haml @@ -43,7 +43,7 @@ - else = link_to status.application.name, status.application.website, class: 'detailed-status__application', target: '_blank', rel: 'noopener' · - = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do + = link_to remote_interaction_path(status, type: :reply), class: 'modal-button detailed-status__link' do = fa_icon('reply') %span.detailed-status__reblogs>= number_to_human status.replies_count, strip_insignificant_zeros: true = " " @@ -55,12 +55,12 @@ %span.detailed-status__link< = fa_icon('lock') - else - = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do + = link_to remote_interaction_path(status, type: :reblog), class: 'modal-button detailed-status__link' do = fa_icon('retweet') %span.detailed-status__reblogs>= number_to_human status.reblogs_count, strip_insignificant_zeros: true = " " · - = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do + = link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link' do = fa_icon('star') %span.detailed-status__favorites>= number_to_human status.favourites_count, strip_insignificant_zeros: true = " " diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml index f92fac86b8..89a6fe0481 100644 --- a/app/views/stream_entries/_simple_status.html.haml +++ b/app/views/stream_entries/_simple_status.html.haml @@ -37,15 +37,15 @@ .status__action-bar .status__action-bar__counter - = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do + = link_to remote_interaction_path(status, type: :reply), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do = fa_icon 'reply fw' .status__action-bar__counter__label= obscured_counter status.replies_count - = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do + = link_to remote_interaction_path(status, type: :reblog), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do - if status.public_visibility? || status.unlisted_visibility? = fa_icon 'retweet fw' - elsif status.private_visibility? = fa_icon 'lock fw' - else = fa_icon 'envelope fw' - = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do + = link_to remote_interaction_path(status, type: :favourite), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do = fa_icon 'star fw' diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 49ee567f36..8766190e37 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -730,9 +730,6 @@ ar: no_account_html: أليس عندك حساب بعدُ ؟ يُمْكنك التسجيل مِن هنا proceed: أكمل المتابعة prompt: 'إنك بصدد متابعة :' - remote_interaction: - proceed: إبدأ التفاعل - prompt: 'تريد التفاعُل مع هذا التبويق:' remote_unfollow: error: خطأ title: العنوان diff --git a/config/locales/ast.yml b/config/locales/ast.yml index c18c398eb9..6c7ffc9bdc 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -268,9 +268,6 @@ ast: no_account_html: "¿Nun tienes una cuenta? Pues rexistrate equí" proceed: Siguir prompt: 'Vas siguir a:' - remote_interaction: - proceed: Interactuar - prompt: 'Quies interactuar con esti toot:' remote_unfollow: error: Fallu sessions: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index ed23a0e8be..9cb9722c1e 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -702,9 +702,6 @@ ca: no_account_html: No tens cap compte? Pots registrar-te aquí proceed: Comença a seguir prompt: 'Seguiràs a:' - remote_interaction: - proceed: Procedeix a interactuar - prompt: 'Vols interactuar amb aquest toot:' remote_unfollow: error: Error title: Títol diff --git a/config/locales/co.yml b/config/locales/co.yml index 47c094f43e..1529c4fa32 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -704,9 +704,6 @@ co: no_account_html: Ùn avete micca un contu? Pudete arregistravi quì proceed: Cuntinuà per siguità prompt: 'Avete da siguità:' - remote_interaction: - proceed: Cunfirmà l'interazzione - prompt: 'Vulete interagisce cù u statutu:' remote_unfollow: error: Errore title: Titulu diff --git a/config/locales/cs.yml b/config/locales/cs.yml index f7b1fbef0c..0b666a23b6 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -714,9 +714,6 @@ cs: no_account_html: Ještě nemáte účet? Můžete se registrovat zde proceed: Pokračovat ke sledování prompt: 'Budete sledovat:' - remote_interaction: - proceed: Pokračovat k interakci - prompt: 'Chcete interagovat s tímto tootem:' remote_unfollow: error: Chyba title: Nadpis diff --git a/config/locales/cy.yml b/config/locales/cy.yml index af37278e26..22b70d1fd6 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -660,9 +660,6 @@ cy: no_account_html: Heb gyfrif? Mae modd i chi gofrestru yma proceed: Ymlaen i ddilyn prompt: 'Yr ydych am ddilyn:' - remote_interaction: - proceed: Ymlaen i ryngweithio - prompt: 'Rydych eisiau rhyngweithio a''r tŵt hwn:' remote_unfollow: error: Gwall title: Teitl diff --git a/config/locales/da.yml b/config/locales/da.yml index 074a774f0d..5a9fb78818 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -675,9 +675,6 @@ da: no_account_html: Har du ikke en konto? Du kan oprette dig her proceed: Fortsæt for at følge prompt: 'Du er ved at følge:' - remote_interaction: - proceed: Fortsæt for at interagere - prompt: 'Du ønsker at interagere med dette trut:' remote_unfollow: error: Fejl title: Titel diff --git a/config/locales/de.yml b/config/locales/de.yml index 5be2928960..c505bd8bb7 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -704,9 +704,6 @@ de: no_account_html: Noch keinen Account? Du kannst dich hier anmelden proceed: Weiter prompt: 'Du wirst dieser Person folgen:' - remote_interaction: - proceed: Fortfahren zum Interagieren - prompt: 'Du wirst mit diesem Beitrag interagieren:' remote_unfollow: error: Fehler title: Titel diff --git a/config/locales/el.yml b/config/locales/el.yml index 9f2da4c732..e453b581f6 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -703,9 +703,6 @@ el: no_account_html: Δεν έχεις λογαριασμό; Μπορείς να γραφτείς εδώ proceed: Συνέχισε για να ακολουθήσεις prompt: 'Θα ακολουθήσεις:' - remote_interaction: - proceed: Συνέχισε για να αλληλεπιδράσεις - prompt: 'Θέλεις να αλληλεπιδράσεις με αυτό το τουτ:' remote_unfollow: error: Σφάλμα title: Τίτλος diff --git a/config/locales/en.yml b/config/locales/en.yml index 1f240f2726..0d01ad4666 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -723,9 +723,17 @@ en: no_account_html: Don't have an account? You can sign up here proceed: Proceed to follow prompt: 'You are going to follow:' + reason_html: "Why is this step necessary? %{instance} might not be the server where you are registered, so we need to redirect you to your home server first." remote_interaction: - proceed: Proceed to interact - prompt: 'You want to interact with this toot:' + favourite: + proceed: Proceed to favourite + prompt: 'You want to favourite this toot:' + reblog: + proceed: Proceed to boost + prompt: 'You want to boost this toot:' + reply: + proceed: Proceed to reply + prompt: 'You want to reply to this toot:' remote_unfollow: error: Error title: Title diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 8e30ed6790..c05b21108e 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -696,9 +696,6 @@ eo: no_account_html: Ĉu vi ne havas konton? Vi povas registriĝi tie proceed: Daŭrigi por eksekvi prompt: 'Vi eksekvos:' - remote_interaction: - proceed: Efektivigi la interagon - prompt: 'Vi volas interagi kun ĉi tiu mesaĝo:' remote_unfollow: error: Eraro title: Titolo diff --git a/config/locales/es.yml b/config/locales/es.yml index 957d852b80..bf4cc29fe3 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -681,9 +681,6 @@ es: no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui" proceed: Proceder a seguir prompt: 'Vas a seguir a:' - remote_interaction: - proceed: Proceder para interactuar - prompt: 'Quieres interactuar con este toot:' remote_unfollow: error: Error title: Título diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 819e22b26d..78fd489588 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -698,9 +698,6 @@ eu: no_account_html: Ez duzu konturik? Izena eman dezakezu proceed: Ekin jarraitzeari prompt: 'Hau jarraituko duzu:' - remote_interaction: - proceed: Jarraitu interakziora - prompt: 'Toot honekin interakzioa nahi duzu:' remote_unfollow: error: Errorea title: Izenburua diff --git a/config/locales/fa.yml b/config/locales/fa.yml index d8f89a91bb..5fccefc6d0 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -681,9 +681,6 @@ fa: no_account_html: هنوز عضو نیستید؟ این‌جا می‌توانید حساب باز کنید proceed: درخواست پیگیری prompt: 'شما قرار است این حساب را پیگیری کنید:' - remote_interaction: - proceed: ادامهٔ برهم‌کنش - prompt: 'شما می‌خواهید دربارهٔ این بوق کاری کنید:' remote_unfollow: error: خطا title: عنوان diff --git a/config/locales/fr.yml b/config/locales/fr.yml index b38e9f8e44..8572881103 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -704,9 +704,6 @@ fr: no_account_html: Vous n’avez pas de compte ? Vous pouvez vous inscrire ici proceed: Confirmer l’abonnement prompt: 'Vous allez suivre :' - remote_interaction: - proceed: Confirmer l’interaction - prompt: 'Vous désirez interagir avec ce pouet :' remote_unfollow: error: Erreur title: Titre diff --git a/config/locales/gl.yml b/config/locales/gl.yml index ac7d55cda3..5908e773b9 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -704,9 +704,6 @@ gl: no_account_html: Non ten unha conta? Pode rexistrarse aquí proceed: Proceda para seguir prompt: 'Vostede vai seguir:' - remote_interaction: - proceed: Proceda para interactuar - prompt: 'Vostede quere interactuar con este toot:' remote_unfollow: error: Fallo title: Título diff --git a/config/locales/it.yml b/config/locales/it.yml index cc23b8cf7e..0b96ef46a2 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -660,9 +660,6 @@ it: no_account_html: Non hai un account? Puoi iscriverti qui proceed: Conferma prompt: 'Stai per seguire:' - remote_interaction: - proceed: Continua per interagire - prompt: 'Vuoi interagire con questo toot:' remote_unfollow: error: Errore title: Titolo diff --git a/config/locales/ja.yml b/config/locales/ja.yml index a8773c4d26..22965a5952 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -703,9 +703,6 @@ ja: no_account_html: アカウントをお持ちではないですか?こちらからサインアップできます proceed: フォローする prompt: 'フォローしようとしています:' - remote_interaction: - proceed: 進む - prompt: 'このトゥートに返信しようとしています:' remote_unfollow: error: エラー title: タイトル diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 21e01c8c90..7dd586aee8 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -651,9 +651,6 @@ ka: no_account_html: არ გაქვთ ანგარიში? შეგიძლიათ დარეგისტრირდეთ აქ proceed: გააგრძელეთ გასაყოლად prompt: 'თქვენ გაჰყვებით:' - remote_interaction: - proceed: გააგრძელეთ ურთიერთქმედება - prompt: 'თქვენ გსურთ ურთიერთქმედება ამ ტუტთან:' remote_unfollow: error: შეცდომა title: სათაური diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 9ac1cd6b95..acfc811f3d 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -706,9 +706,6 @@ ko: no_account_html: 계정이 없나요? 여기에서 가입 할 수 있습니다 proceed: 팔로우 하기 prompt: '팔로우 하려 하고 있습니다:' - remote_interaction: - proceed: 진행 - prompt: '이 게시물에 상호작용하려 하고 있습니다:' remote_unfollow: error: 에러 title: 타이틀 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 1d85ab4c90..92acb71d15 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -704,9 +704,6 @@ nl: no_account_html: Heb je geen account? Je kunt er hier een registreren proceed: Ga verder om te volgen prompt: 'Jij gaat volgen:' - remote_interaction: - proceed: Ga de interactie aan - prompt: 'Jij wilt de interactie aangaan met deze toot:' remote_unfollow: error: Fout title: Titel diff --git a/config/locales/oc.yml b/config/locales/oc.yml index daabea18ad..e81b10dac0 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -760,9 +760,6 @@ oc: no_account_html: Avètz pas cap de compte ? Podètz vos marcar aquí proceed: Clicatz per sègre prompt: 'Sètz per sègre :' - remote_interaction: - proceed: Confirmar l’interaccion - prompt: 'Volètz interagir amb aqueste tut :' remote_unfollow: error: Error title: Títol diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 7478d0ea76..80259d013a 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -715,9 +715,6 @@ pl: no_account_html: Nie masz konta? Możesz zarejestrować się tutaj proceed: Śledź prompt: 'Zamierzasz śledzić:' - remote_interaction: - proceed: Przejdź do interakcji - prompt: 'Chcesz dokonać interakcji z tym wpisem:' remote_unfollow: error: Błąd title: Tytuł diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index bd5cd7b36b..efb8b1bf88 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -702,9 +702,6 @@ pt-BR: no_account_html: Não tem uma conta? Você pode cadastrar-se aqui proceed: Prosseguir para seguir prompt: 'Você irá seguir:' - remote_interaction: - proceed: Continue para interagir - prompt: 'Você quer interagir com este toot:' remote_unfollow: error: Erro title: Título diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 3b81c9ebc7..40e66ceac9 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -683,9 +683,6 @@ ru: no_account_html: Нет учётной записи? Вы можете зарегистрироваться здесь proceed: Продолжить подписку prompt: 'Вы хотите подписаться на:' - remote_interaction: - proceed: Продолжить - prompt: 'Вы собираетесь взаимодействовать со статусом:' remote_unfollow: error: Ошибка title: Заголовок diff --git a/config/locales/sk.yml b/config/locales/sk.yml index d30978e465..36399d7523 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -714,9 +714,6 @@ sk: no_account_html: Nemáš ešte účet? Môžeš sa zaregistrovať tu proceed: Začni následovať prompt: 'Budeš sledovať:' - remote_interaction: - proceed: Pokračuj k interakcii - prompt: 'Chceš narábať s týmto príspevkom:' remote_unfollow: error: Chyba title: Názov diff --git a/config/locales/sl.yml b/config/locales/sl.yml index f35d5f09e2..594c58acc1 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -130,8 +130,6 @@ sl: most_recent_activity: Zadnja aktivnost most_recent_ip: Zadnji IP promote: Spodbujanje - remote_interaction: - prompt: 'Želite interakcijo s tem trobom:' statuses: pin_errors: ownership: Trob nekoga drugega ne more biti pripet diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 8dc869c8f3..009281339d 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -701,9 +701,6 @@ sr: no_account_html: Немате налог? Можете се пријавити овде proceed: Наставите да би сте запратили prompt: 'Запратићете:' - remote_interaction: - proceed: Наставите за интеракцију - prompt: 'Желите да интерактирате са овом трубом:' remote_unfollow: error: Грешка title: Наслов From cf3c0fc38cd2650a421f46a5f221d1d645ef6c7b Mon Sep 17 00:00:00 2001 From: kedama Date: Mon, 7 Jan 2019 23:54:40 +0900 Subject: [PATCH 39/64] Stop gifv timeline preview explicitly when open the media gallery. (#9749) --- app/javascript/mastodon/components/media_gallery.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/mastodon/components/media_gallery.js b/app/javascript/mastodon/components/media_gallery.js index ed0e4ff1b6..c507920d0e 100644 --- a/app/javascript/mastodon/components/media_gallery.js +++ b/app/javascript/mastodon/components/media_gallery.js @@ -51,6 +51,10 @@ class Item extends React.PureComponent { const { index, onClick } = this.props; if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { + if (this.hoverToPlay()) { + e.target.pause(); + e.target.currentTime = 0; + } e.preventDefault(); onClick(index); } From 28b482874ab4393639a77fdd895658096bcbfd57 Mon Sep 17 00:00:00 2001 From: ThibG Date: Mon, 7 Jan 2019 21:45:13 +0100 Subject: [PATCH 40/64] Improvements to signature verification (#9667) * Refactor signature verification a bit * Rescue signature verification if recorded public key is invalid Fixes #8822 * Always re-fetch AP signing key when HTTP Signature verification fails But when the account is not marked as stale, avoid fetching collections and media, and avoid webfinger round-trip. * Apply stoplight to key/account update as well as initial key retrieval --- .../concerns/signature_verification.rb | 45 +++++++++++++------ .../fetch_remote_account_service.rb | 8 ++-- .../activitypub/process_account_service.rb | 10 +++-- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 887096e8bd..91566c4fad 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -60,23 +60,26 @@ module SignatureVerification signature = Base64.decode64(signature_params['signature']) compare_signed_string = build_signed_string(signature_params['headers']) - if account.keypair.public_key.verify(OpenSSL::Digest::SHA256.new, signature, compare_signed_string) - @signed_request_account = account - @signed_request_account - elsif account.possibly_stale? - account = account.refresh! + return account unless verify_signature(account, signature, compare_signed_string).nil? - if account.keypair.public_key.verify(OpenSSL::Digest::SHA256.new, signature, compare_signed_string) - @signed_request_account = account - @signed_request_account - else - @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri}" - @signed_request_account = nil - end - else - @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri}" + account_stoplight = Stoplight("source:#{request.ip}") { account.possibly_stale? ? account.refresh! : account_refresh_key(account) } + .with_fallback { nil } + .with_threshold(1) + .with_cool_off_time(5.minutes.seconds) + .with_error_handler { |error, handle| error.is_a?(HTTP::Error) ? handle.call(error) : raise(error) } + + account = account_stoplight.run + + if account.nil? + @signature_verification_failure_reason = "Public key not found for key #{signature_params['keyId']}" @signed_request_account = nil + return end + + return account unless verify_signature(account, signature, compare_signed_string).nil? + + @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri}" + @signed_request_account = nil end def request_body @@ -85,6 +88,15 @@ module SignatureVerification private + def verify_signature(account, signature, compare_signed_string) + if account.keypair.public_key.verify(OpenSSL::Digest::SHA256.new, signature, compare_signed_string) + @signed_request_account = account + @signed_request_account + end + rescue OpenSSL::PKey::RSAError + nil + end + def build_signed_string(signed_headers) signed_headers = 'date' if signed_headers.blank? @@ -131,4 +143,9 @@ module SignatureVerification account end end + + def account_refresh_key(account) + return if account.local? || !account.activitypub? + ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true) + end end diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb index 8430d12d54..3c20449412 100644 --- a/app/services/activitypub/fetch_remote_account_service.rb +++ b/app/services/activitypub/fetch_remote_account_service.rb @@ -5,8 +5,8 @@ class ActivityPub::FetchRemoteAccountService < BaseService SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze - # Does a WebFinger roundtrip on each call - def call(uri, id: true, prefetched_body: nil, break_on_redirect: false) + # Does a WebFinger roundtrip on each call, unless `only_key` is true + def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false) return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri) @json = if prefetched_body.nil? @@ -21,9 +21,9 @@ class ActivityPub::FetchRemoteAccountService < BaseService @username = @json['preferredUsername'] @domain = Addressable::URI.parse(@uri).normalized_host - return unless verified_webfinger? + return unless only_key || verified_webfinger? - ActivityPub::ProcessAccountService.new.call(@username, @domain, @json) + ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key) rescue Oj::ParseError nil end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index d6480028f4..d6c791b449 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -33,8 +33,10 @@ class ActivityPub::ProcessAccountService < BaseService after_protocol_change! if protocol_changed? after_key_change! if key_changed? && !@options[:signed_with_known_key] - check_featured_collection! if @account.featured_collection_url.present? - check_links! unless @account.fields.empty? + unless @options[:only_key] + check_featured_collection! if @account.featured_collection_url.present? + check_links! unless @account.fields.empty? + end @account rescue Oj::ParseError @@ -54,11 +56,11 @@ class ActivityPub::ProcessAccountService < BaseService end def update_account - @account.last_webfingered_at = Time.now.utc + @account.last_webfingered_at = Time.now.utc unless @options[:only_key] @account.protocol = :activitypub set_immediate_attributes! - set_fetchable_attributes! + set_fetchable_attributes! unless @options[:only_keys] @account.save_with_optional_media! end From 8b976c3479a329f730fcd35651aa1a046581ebe8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Jan 2019 23:59:06 +0100 Subject: [PATCH 41/64] Move profile directory link in web UI from footer to discover section (#9745) --- .../features/getting_started/index.js | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index feecfd0e45..d56e7f1427 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -32,6 +32,7 @@ const messages = defineMessages({ personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, menu: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, + profile_directory: { id: 'getting_started.directory', defaultMessage: 'Profile directory' }, }); const mapStateToProps = state => ({ @@ -87,10 +88,30 @@ class GettingStarted extends ImmutablePureComponent { , , , + ); + + height += 34 + 48*2; + + if (profile_directory) { + navItems.push( + , + ); + + height += 48; + } + + navItems.push( ); - height += 34*2 + 48*2; + height += 34; + } else if (profile_directory) { + navItems.push( + , + , + ); + + height += 34 + 48; } navItems.push( @@ -136,7 +157,6 @@ class GettingStarted extends ImmutablePureComponent {
    - {profile_directory &&
  • ·
  • } {invitesEnabled &&
  • ·
  • } {multiColumn &&
  • ·
  • }
  • ·
  • From 88deca16cae2cb6e0b32e28ace68db5b96407cc9 Mon Sep 17 00:00:00 2001 From: ysksn Date: Tue, 8 Jan 2019 12:18:27 +0900 Subject: [PATCH 42/64] Add pending specs for jsonld helper (#9750) * Add specs for JsonLdHelper#first_of_value * Add specs for JsonLdHelper#supported_context? --- spec/helpers/jsonld_helper_spec.rb | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/spec/helpers/jsonld_helper_spec.rb b/spec/helpers/jsonld_helper_spec.rb index a5ab249c23..883a88b14d 100644 --- a/spec/helpers/jsonld_helper_spec.rb +++ b/spec/helpers/jsonld_helper_spec.rb @@ -22,11 +22,35 @@ describe JsonLdHelper do end describe '#first_of_value' do - pending + context 'value.is_a?(Array)' do + it 'returns value.first' do + value = ['a'] + expect(helper.first_of_value(value)).to be 'a' + end + end + + context '!value.is_a?(Array)' do + it 'returns value' do + value = 'a' + expect(helper.first_of_value(value)).to be 'a' + end + end end describe '#supported_context?' do - pending + context "!json.nil? && equals_or_includes?(json['@context'], ActivityPub::TagManager::CONTEXT)" do + it 'returns true' do + json = { '@context' => ActivityPub::TagManager::CONTEXT }.as_json + expect(helper.supported_context?(json)).to be true + end + end + + context 'else' do + it 'returns false' do + json = nil + expect(helper.supported_context?(json)).to be false + end + end end describe '#fetch_resource' do From 274109e9f3e3f95bc14b3cd00333fce294ee7b79 Mon Sep 17 00:00:00 2001 From: ysksn Date: Tue, 8 Jan 2019 12:18:46 +0900 Subject: [PATCH 43/64] Remove spec files (#9751) Nothing to test. --- spec/models/account_warning_preset_spec.rb | 5 ----- spec/models/account_warning_spec.rb | 5 ----- 2 files changed, 10 deletions(-) delete mode 100644 spec/models/account_warning_preset_spec.rb delete mode 100644 spec/models/account_warning_spec.rb diff --git a/spec/models/account_warning_preset_spec.rb b/spec/models/account_warning_preset_spec.rb deleted file mode 100644 index a859a305fe..0000000000 --- a/spec/models/account_warning_preset_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe AccountWarningPreset, type: :model do - pending "add some examples to (or delete) #{__FILE__}" -end diff --git a/spec/models/account_warning_spec.rb b/spec/models/account_warning_spec.rb deleted file mode 100644 index 5286f9177e..0000000000 --- a/spec/models/account_warning_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe AccountWarning, type: :model do - pending "add some examples to (or delete) #{__FILE__}" -end From 9a38357111049c7587c898b2b623cf9c853a4d35 Mon Sep 17 00:00:00 2001 From: ysksn Date: Tue, 8 Jan 2019 17:42:56 +0900 Subject: [PATCH 44/64] Remove `pending` (#9752) Some specs have already been added. --- spec/services/resolve_account_service_spec.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index dd7561587d..27a85af7c9 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -119,8 +119,6 @@ RSpec.describe ResolveAccountService, type: :service do expect(account.actor_type).to eq 'Person' end end - - pending end it 'processes one remote account at a time using locks' do From 1c6588accca23599ea1537ec527a5be04408b2af Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Jan 2019 13:39:49 +0100 Subject: [PATCH 45/64] Redesign admin instances area (#9645) --- .../admin/domain_blocks_controller.rb | 11 ++--- app/controllers/admin/instances_controller.rb | 27 ++++++----- app/helpers/admin/filter_helper.rb | 3 +- app/javascript/styles/mastodon/admin.scss | 14 ++++++ app/javascript/styles/mastodon/dashboard.scss | 1 + app/models/instance.rb | 21 ++++++-- app/models/instance_filter.rb | 17 ++----- app/policies/instance_policy.rb | 2 +- .../domain_blocks/_domain_block.html.haml | 13 ----- app/views/admin/domain_blocks/index.html.haml | 17 ------- app/views/admin/instances/_instance.html.haml | 4 +- app/views/admin/instances/index.html.haml | 48 ++++++++++++------- app/views/admin/instances/show.html.haml | 44 +++++++++++++++++ config/locales/ar.yml | 10 ---- config/locales/ast.yml | 2 - config/locales/ca.yml | 10 ---- config/locales/co.yml | 10 ---- config/locales/cs.yml | 10 ---- config/locales/cy.yml | 10 ---- config/locales/da.yml | 10 ---- config/locales/de.yml | 10 ---- config/locales/el.yml | 10 ---- config/locales/en.yml | 34 ++++++++----- config/locales/eo.yml | 10 ---- config/locales/es.yml | 10 ---- config/locales/eu.yml | 10 ---- config/locales/fa.yml | 10 ---- config/locales/fi.yml | 10 ---- config/locales/fr.yml | 10 ---- config/locales/gl.yml | 10 ---- config/locales/he.yml | 7 --- config/locales/hu.yml | 10 ---- config/locales/id.yml | 7 --- config/locales/io.yml | 7 --- config/locales/it.yml | 10 ---- config/locales/ja.yml | 10 ---- config/locales/ka.yml | 10 ---- config/locales/ko.yml | 10 ---- config/locales/ms.yml | 10 ---- config/locales/nl.yml | 10 ---- config/locales/no.yml | 10 ---- config/locales/oc.yml | 10 ---- config/locales/pl.yml | 10 ---- config/locales/pt-BR.yml | 10 ---- config/locales/pt.yml | 10 ---- config/locales/ru.yml | 10 ---- config/locales/sk.yml | 10 ---- config/locales/sr-Latn.yml | 10 ---- config/locales/sr.yml | 10 ---- config/locales/sv.yml | 10 ---- config/locales/th.yml | 7 --- config/locales/tr.yml | 7 --- config/locales/uk.yml | 10 ---- config/locales/zh-CN.yml | 10 ---- config/locales/zh-HK.yml | 10 ---- config/locales/zh-TW.yml | 10 ---- config/navigation.rb | 3 +- config/routes.rb | 8 +--- .../admin/domain_blocks_controller_spec.rb | 24 +--------- spec/policies/instance_policy_spec.rb | 2 +- 60 files changed, 159 insertions(+), 531 deletions(-) delete mode 100644 app/views/admin/domain_blocks/_domain_block.html.haml delete mode 100644 app/views/admin/domain_blocks/index.html.haml create mode 100644 app/views/admin/instances/show.html.haml diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb index 90c70275a2..5f307ddeec 100644 --- a/app/controllers/admin/domain_blocks_controller.rb +++ b/app/controllers/admin/domain_blocks_controller.rb @@ -4,14 +4,9 @@ module Admin class DomainBlocksController < BaseController before_action :set_domain_block, only: [:show, :destroy] - def index - authorize :domain_block, :index? - @domain_blocks = DomainBlock.page(params[:page]) - end - def new authorize :domain_block, :create? - @domain_block = DomainBlock.new + @domain_block = DomainBlock.new(domain: params[:_domain]) end def create @@ -22,7 +17,7 @@ module Admin if @domain_block.save DomainBlockWorker.perform_async(@domain_block.id) log_action :create, @domain_block - redirect_to admin_domain_blocks_path, notice: I18n.t('admin.domain_blocks.created_msg') + redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg') else render :new end @@ -36,7 +31,7 @@ module Admin authorize @domain_block, :destroy? UnblockDomainService.new.call(@domain_block, retroactive_unblock?) log_action :destroy, @domain_block - redirect_to admin_domain_blocks_path, notice: I18n.t('admin.domain_blocks.destroyed_msg') + redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.destroyed_msg') end private diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb index 6f8eaf65c4..431ce6f4de 100644 --- a/app/controllers/admin/instances_controller.rb +++ b/app/controllers/admin/instances_controller.rb @@ -4,14 +4,21 @@ module Admin class InstancesController < BaseController def index authorize :instance, :index? + @instances = ordered_instances end - def resubscribe - authorize :instance, :resubscribe? - params.require(:by_domain) - Pubsubhubbub::SubscribeWorker.push_bulk(subscribeable_accounts.pluck(:id)) - redirect_to admin_instances_path + def show + authorize :instance, :show? + + @instance = Instance.new(Account.by_domain_accounts.find_by(domain: params[:id]) || DomainBlock.find_by!(domain: params[:id])) + @following_count = Follow.where(account: Account.where(domain: params[:id])).count + @followers_count = Follow.where(target_account: Account.where(domain: params[:id])).count + @reports_count = Report.where(target_account: Account.where(domain: params[:id])).count + @blocks_count = Block.where(target_account: Account.where(domain: params[:id])).count + @available = DeliveryFailureTracker.available?(Account.select(:shared_inbox_url).where(domain: params[:id]).first&.shared_inbox_url) + @media_storage = MediaAttachment.where(account: Account.where(domain: params[:id])).sum(:file_file_size) + @domain_block = DomainBlock.find_by(domain: params[:id]) end private @@ -27,17 +34,11 @@ module Admin helper_method :paginated_instances def ordered_instances - paginated_instances.map { |account| Instance.new(account) } - end - - def subscribeable_accounts - Account.remote.where(protocol: :ostatus).where(domain: params[:by_domain]) + paginated_instances.map { |resource| Instance.new(resource) } end def filter_params - params.permit( - :domain_name - ) + params.permit(:limited) end end end diff --git a/app/helpers/admin/filter_helper.rb b/app/helpers/admin/filter_helper.rb index 8807cc7846..97beb587fc 100644 --- a/app/helpers/admin/filter_helper.rb +++ b/app/helpers/admin/filter_helper.rb @@ -6,8 +6,9 @@ module Admin::FilterHelper INVITE_FILTER = %i(available expired).freeze CUSTOM_EMOJI_FILTERS = %i(local remote by_domain shortcode).freeze TAGS_FILTERS = %i(hidden).freeze + INSTANCES_FILTERS = %i(limited).freeze - FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER + CUSTOM_EMOJI_FILTERS + TAGS_FILTERS + FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER + CUSTOM_EMOJI_FILTERS + TAGS_FILTERS + INSTANCES_FILTERS def filter_link_to(text, link_to_params, link_class_params = link_to_params) new_url = filtered_url_for(link_to_params) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index e8f3319323..375c655f53 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -151,6 +151,20 @@ $no-columns-breakpoint: 600px; font-weight: 500; } + .directory__tag a { + box-shadow: none; + } + + .directory__tag h4 { + font-size: 18px; + font-weight: 700; + color: $primary-text-color; + text-transform: none; + padding-bottom: 0; + margin-bottom: 0; + border-bottom: none; + } + & > p { font-size: 14px; line-height: 18px; diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss index 1f96e73684..e4564f062c 100644 --- a/app/javascript/styles/mastodon/dashboard.scss +++ b/app/javascript/styles/mastodon/dashboard.scss @@ -39,6 +39,7 @@ color: $primary-text-color; font-family: $font-display, sans-serif; margin-bottom: 20px; + line-height: 30px; } &__text { diff --git a/app/models/instance.rb b/app/models/instance.rb index 6d5c9c2ab6..7448d465c3 100644 --- a/app/models/instance.rb +++ b/app/models/instance.rb @@ -3,10 +3,23 @@ class Instance include ActiveModel::Model - attr_accessor :domain, :accounts_count + attr_accessor :domain, :accounts_count, :domain_block - def initialize(account) - @domain = account.domain - @accounts_count = account.accounts_count + def initialize(resource) + @domain = resource.domain + @accounts_count = resource.accounts_count + @domain_block = resource.is_a?(DomainBlock) ? resource : DomainBlock.find_by(domain: domain) + end + + def cached_sample_accounts + Rails.cache.fetch("#{cache_key}/sample_accounts", expires_in: 12.hours) { Account.where(domain: domain).searchable.joins(:account_stat).popular.limit(3) } + end + + def to_param + domain + end + + def cache_key + domain end end diff --git a/app/models/instance_filter.rb b/app/models/instance_filter.rb index 5073cf1faa..3483d8cd6e 100644 --- a/app/models/instance_filter.rb +++ b/app/models/instance_filter.rb @@ -8,21 +8,10 @@ class InstanceFilter end def results - scope = Account.remote.by_domain_accounts - params.each do |key, value| - scope.merge!(scope_for(key, value)) if value.present? - end - scope - end - - private - - def scope_for(key, value) - case key.to_s - when 'domain_name' - Account.matches_domain(value) + if params[:limited].present? + DomainBlock.order(id: :desc) else - raise "Unknown filter: #{key}" + Account.remote.by_domain_accounts end end end diff --git a/app/policies/instance_policy.rb b/app/policies/instance_policy.rb index d1956e2ded..a73823556c 100644 --- a/app/policies/instance_policy.rb +++ b/app/policies/instance_policy.rb @@ -5,7 +5,7 @@ class InstancePolicy < ApplicationPolicy admin? end - def resubscribe? + def show? admin? end end diff --git a/app/views/admin/domain_blocks/_domain_block.html.haml b/app/views/admin/domain_blocks/_domain_block.html.haml deleted file mode 100644 index 7bfea35743..0000000000 --- a/app/views/admin/domain_blocks/_domain_block.html.haml +++ /dev/null @@ -1,13 +0,0 @@ -%tr - %td - %samp= domain_block.domain - %td.severity - = t("admin.domain_blocks.severities.#{domain_block.severity}") - %td.reject_media - - if domain_block.reject_media? || domain_block.suspend? - %i.fa.fa-check - %td.reject_reports - - if domain_block.reject_reports? || domain_block.suspend? - %i.fa.fa-check - %td - = table_link_to 'undo', t('admin.domain_blocks.undo'), admin_domain_block_path(domain_block) diff --git a/app/views/admin/domain_blocks/index.html.haml b/app/views/admin/domain_blocks/index.html.haml deleted file mode 100644 index 4c5221c423..0000000000 --- a/app/views/admin/domain_blocks/index.html.haml +++ /dev/null @@ -1,17 +0,0 @@ -- content_for :page_title do - = t('admin.domain_blocks.title') - -.table-wrapper - %table.table - %thead - %tr - %th= t('admin.domain_blocks.domain') - %th= t('admin.domain_blocks.severity') - %th= t('admin.domain_blocks.reject_media') - %th= t('admin.domain_blocks.reject_reports') - %th - %tbody - = render @domain_blocks - -= paginate @domain_blocks -= link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path, class: 'button' diff --git a/app/views/admin/instances/_instance.html.haml b/app/views/admin/instances/_instance.html.haml index e36ebae472..57d3e0b068 100644 --- a/app/views/admin/instances/_instance.html.haml +++ b/app/views/admin/instances/_instance.html.haml @@ -1,7 +1,5 @@ %tr %td - = link_to instance.domain, admin_accounts_path(by_domain: instance.domain) + = link_to instance.domain, admin_instance_path(instance) %td.count = instance.accounts_count - %td - = table_link_to 'paper-plane-o', t('admin.accounts.resubscribe'), resubscribe_admin_instances_url(by_domain: instance.domain), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/app/views/admin/instances/index.html.haml b/app/views/admin/instances/index.html.haml index 3314ce0778..ce35b5db47 100644 --- a/app/views/admin/instances/index.html.haml +++ b/app/views/admin/instances/index.html.haml @@ -1,23 +1,39 @@ - content_for :page_title do = t('admin.instances.title') -= form_tag admin_instances_url, method: 'GET', class: 'simple_form' do - .fields-group - - %i(domain_name).each do |key| - .input.string.optional - = text_field_tag key, params[key], class: 'string optional', placeholder: I18n.t("admin.instances.#{key}") +.filters + .filter-subset + %strong= t('admin.instances.moderation.title') + %ul + %li= filter_link_to t('admin.instances.moderation.all'), limited: nil + %li= filter_link_to t('admin.instances.moderation.limited'), limited: '1' - .actions - %button= t('admin.instances.search') - = link_to t('admin.instances.reset'), admin_instances_path, class: 'button negative' + %div{ style: 'flex: 1 1 auto; text-align: right' } + = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path, class: 'button' -.table-wrapper - %table.table - %thead - %tr - %th= t('admin.instances.domain_name') - %th= t('admin.instances.account_count') - %tbody - = render @instances +%hr.spacer/ + +- @instances.each do |instance| + .directory__tag + = link_to admin_instance_path(instance) do + %h4 + = instance.domain + %small + = t('admin.instances.known_accounts', count: instance.accounts_count) + + - if instance.domain_block + - if !instance.domain_block.noop? + • + = t("admin.domain_blocks.severity.#{instance.domain_block.severity}") + - if instance.domain_block.reject_media? + • + = t('admin.domain_blocks.rejecting_media') + - if instance.domain_block.reject_reports? + • + = t('admin.domain_blocks.rejecting_reports') + + .avatar-stack + - instance.cached_sample_accounts.each do |account| + = image_tag current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url, width: 48, height: 48, alt: '', class: 'account__avatar' = paginate paginated_instances diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml new file mode 100644 index 0000000000..c7992a490d --- /dev/null +++ b/app/views/admin/instances/show.html.haml @@ -0,0 +1,44 @@ +- content_for :page_title do + = @instance.domain + +.dashboard__counters + %div + %div + .dashboard__counters__num= number_with_delimiter @following_count + .dashboard__counters__label= t 'admin.instances.total_followed_by_them' + %div + %div + .dashboard__counters__num= number_with_delimiter @followers_count + .dashboard__counters__label= t 'admin.instances.total_followed_by_us' + %div + %div + .dashboard__counters__num= number_to_human_size @media_storage + .dashboard__counters__label= t 'admin.instances.total_storage' + %div + %div + .dashboard__counters__num= number_with_delimiter @blocks_count + .dashboard__counters__label= t 'admin.instances.total_blocked_by_us' + %div + %div + .dashboard__counters__num= number_with_delimiter @reports_count + .dashboard__counters__label= t 'admin.instances.total_reported' + %div + %div + .dashboard__counters__num + - if @available + = fa_icon 'check' + - else + = fa_icon 'times' + .dashboard__counters__label= t 'admin.instances.delivery_available' + +%hr.spacer/ + +%div{ style: 'overflow: hidden' } + %div{ style: 'float: left' } + = link_to t('admin.accounts.title'), admin_accounts_path(remote: '1', by_domain: @instance.domain), class: 'button' + + %div{ style: 'float: right' } + - if @domain_block + = link_to t('admin.domain_blocks.undo'), admin_domain_block_path(@domain_block), class: 'button' + - else + = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @instance.domain), class: 'button' diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 8766190e37..abbfa38aad 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -280,11 +280,6 @@ ar: reject_media: رفض ملفات الوسائط reject_media_hint: يزيل ملفات الوسائط المخزنة محليًا ويرفض تنزيل أي ملفات في المستقبل. غير ذي صلة للتعليق reject_reports: رفض التقارير - severities: - noop: لا شيء - silence: إخفاء أو كتم - suspend: تعليق - severity: الشدة show: affected_accounts: few: "%{count} حسابات معنية في قاعدة البيانات" @@ -298,7 +293,6 @@ ar: suspend: إلغاء التعليق المفروض على كافة حسابات هذا النطاق title: رفع حظر النطاق عن %{domain} undo: إلغاء - title: حظر النطاقات undo: إلغاء email_domain_blocks: add_new: إضافة @@ -311,10 +305,6 @@ ar: title: إضافة نطاق بريد جديد إلى اللائحة السوداء title: القائمة السوداء للبريد الإلكتروني instances: - account_count: الحسابات المعروفة - domain_name: النطاق - reset: إعادة تعيين - search: البحث title: مثيلات الخوادم المعروفة invites: deactivate_all: تعطيلها كافة diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 6c7ffc9bdc..78ad796a00 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -96,8 +96,6 @@ ast: email_domain_blocks: domain: Dominiu instances: - account_count: Cuentes conocíes - domain_name: Dominiu title: Instancies conocíes invites: filter: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 9cb9722c1e..271fc35819 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -263,11 +263,6 @@ ca: reject_media_hint: Elimina els fitxers multimèdia emmagatzemats localment i impedeix baixar-ne cap en el futur. Irrellevant en les suspensions reject_reports: Rebutja informes reject_reports_hint: Ignora tots els informes procedents d'aquest domini. No és rellevant per a les suspensions - severities: - noop: Cap - silence: Silenci - suspend: Suspensió - severity: Severitat show: affected_accounts: one: Un compte afectat en la base de dades @@ -277,7 +272,6 @@ ca: suspend: Desfés la suspensió de tots els comptes d'aquest domini title: Desfés el bloqueig de domini de %{domain} undo: Desfés - title: Bloquejos de domini undo: Desfés email_domain_blocks: add_new: Afegeix @@ -290,10 +284,6 @@ ca: title: Nova adreça de correu en la llista negra title: Llista negra de correus electrònics instances: - account_count: Comptes coneguts - domain_name: Domini - reset: Restableix - search: Cerca title: Instàncies conegudes invites: deactivate_all: Desactiva-ho tot diff --git a/config/locales/co.yml b/config/locales/co.yml index 1529c4fa32..7a87219abb 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -265,11 +265,6 @@ co: reject_media_hint: Sguassa tutti i media caricati è ricusa caricamenti futuri. Inutile per una suspensione reject_reports: Righjittà i rapporti reject_reports_hint: Ignurà tutti i signalamenti chì venenu d'issu duminiu. Senz'oghjettu pè e suspensione - severities: - noop: Nisuna - silence: Silenzà - suspend: Suspende - severity: Severità show: affected_accounts: one: Un contu tuccatu indè a database @@ -279,7 +274,6 @@ co: suspend: Ùn suspende più i conti nant’à stu duminiu title: Ùn bluccà più u duminiu %{domain} undo: Annullà - title: Blucchimi di duminiu undo: Annullà email_domain_blocks: add_new: Aghjustà @@ -292,10 +286,6 @@ co: title: Nova iscrizzione nant’a lista nera e-mail title: Lista nera e-mail instances: - account_count: Conti cunnisciuti - domain_name: Duminiu - reset: Riinizializà - search: Cercà title: Istanze cunnisciute invites: deactivate_all: Disattivà tuttu diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 0b666a23b6..d2caeb999d 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -269,11 +269,6 @@ cs: reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Irelevantní pro suspenzace reject_reports: Odmítnout nahlášení reject_reports_hint: Ignorovat všechna nahlášení pocházející z této domény. Nepodstatné pro suspenzace - severities: - noop: Žádné - silence: Utišit - suspend: Suspendovat - severity: Přísnost show: affected_accounts: few: "%{count} účty v databázi byly ovlivněny" @@ -284,7 +279,6 @@ cs: suspend: Zrušit suspenzaci všech existujících účtů z této domény title: Zrušit blokaci domény %{domain} undo: Odvolat - title: Doménové blokace undo: Odvolat email_domain_blocks: add_new: Přidat nový @@ -297,10 +291,6 @@ cs: title: Nový e-mail pro zablokování title: Černá listina e-mailů instances: - account_count: Známé účty - domain_name: Doména - reset: Resetovat - search: Hledat title: Známé instance invites: deactivate_all: Deaktivovat vše diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 22b70d1fd6..40cb1cac07 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -252,11 +252,6 @@ cy: reject_media_hint: Dileu dogfennau cyfryngau wedi eu cadw yn lleol ac yn gwrthod i lawrlwytho unrhyw rai yn y dyfodol. Amherthnasol i ataliadau reject_reports: Gwrthod adroddiadau reject_reports_hint: Anwybyddu'r holl adroddiadau sy'n dod o'r parth hwn. Amherthnasol i ataliadau - severities: - noop: Dim - silence: Tawelu - suspend: Atal - severity: Difrifoldeb show: affected_accounts: "%{count} o gyfrifoedd yn y bas data wedi eu hefeithio" retroactive: @@ -264,7 +259,6 @@ cy: suspend: Dad-atal pob cyfrif o'r parth hwn sy'n bodoli title: Dadwneud blocio parth ar gyfer %{domain} undo: Dadwneud - title: Blociau parth undo: Dadwneud email_domain_blocks: add_new: Ychwanegu @@ -277,10 +271,6 @@ cy: title: Cofnod newydd yng nghosbrestr e-byst title: Cosbrestr e-bost instances: - account_count: Cyfrifau hysbys - domain_name: Parth - reset: Ailosod - search: Chwilio title: Achosion hysbys invites: deactivate_all: Diffodd pob un diff --git a/config/locales/da.yml b/config/locales/da.yml index 5a9fb78818..e4286d156d 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -257,11 +257,6 @@ da: reject_media: Afvis medie filer reject_media_hint: Fjerner lokalt lagrede multimedie filer og nægter at hente nogen i fremtiden. Irrelevant for udelukkelser reject_reports: Afvis anmeldelser - severities: - noop: Ingen - silence: Dæmp - suspend: Udeluk - severity: Alvorlighed show: affected_accounts: one: En konto i databasen påvirket @@ -271,7 +266,6 @@ da: suspend: Fjern udelukkelsen af alle eksisterende konti fra dette domæne title: Annuller domæne blokeringen for domænet %{domain} undo: Fortryd - title: Domæne blokeringer undo: Fortryd email_domain_blocks: add_new: Tilføj ny @@ -284,10 +278,6 @@ da: title: Ny email blokade opslag title: Email sortliste instances: - account_count: Kendte konti - domain_name: Domæne - reset: Nulstil - search: Søg title: Kendte instanser invites: deactivate_all: Deaktiver alle diff --git a/config/locales/de.yml b/config/locales/de.yml index c505bd8bb7..081895c9c1 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -265,11 +265,6 @@ de: reject_media_hint: Entfernt lokal gespeicherte Mediendateien und verhindert deren künftiges Herunterladen. Für Sperren irrelevant reject_reports: Meldungen ablehnen reject_reports_hint: Ignoriere alle Meldungen von dieser Domain. Irrelevant für Sperrungen - severities: - noop: Kein - silence: Stummschaltung - suspend: Sperren - severity: Schweregrad show: affected_accounts: one: Ein Konto in der Datenbank betroffen @@ -279,7 +274,6 @@ de: suspend: Alle existierenden Konten dieser Domain entsperren title: Domain-Blockade für %{domain} zurücknehmen undo: Zurücknehmen - title: Domain-Blockaden undo: Zurücknehmen email_domain_blocks: add_new: Neue hinzufügen @@ -292,10 +286,6 @@ de: title: Neue E-Mail-Domain-Blockade title: E-Mail-Domain-Blockade instances: - account_count: Bekannte Konten - domain_name: Domain - reset: Zurücksetzen - search: Suchen title: Bekannte Instanzen invites: deactivate_all: Alle deaktivieren diff --git a/config/locales/el.yml b/config/locales/el.yml index e453b581f6..dd998ce5cf 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -265,11 +265,6 @@ el: reject_media_hint: Αφαιρεί τα τοπικά αποθηκευμένα αρχεία πολυμέσων και αποτρέπει τη λήψη άλλων στο μέλλον. Δεν έχει σημασία για τις αναστολές reject_reports: Απόρριψη καταγγελιών reject_reports_hint: Αγνόηση όσων καταγγελιών προέρχονται από αυτό τον τομέα. Δεν σχετίζεται με τις παύσεις - severities: - noop: Κανένα - silence: Αποσιώπηση - suspend: Αναστολή - severity: Βαρύτητα show: affected_accounts: one: Επηρεάζεται ένας λογαριασμός στη βάση δεδομένων @@ -279,7 +274,6 @@ el: suspend: Αναίρεση αναστολής όλων των λογαριασμών του τομέα title: Αναίρεση αποκλεισμού για τον τομέα %{domain} undo: Αναίρεση - title: Αποκλεισμένοι τομείς undo: Αναίρεση email_domain_blocks: add_new: Πρόσθεση νέου @@ -292,10 +286,6 @@ el: title: Νέα εγγραφή email στη μαύρη λίστα title: Μαύρη λίστα email instances: - account_count: Γνωστοί λογαριασμοί - domain_name: Τομέας - reset: Επαναφορά - search: Αναζήτηση title: Γνωστοί κόμβοι invites: deactivate_all: Απενεργοποίηση όλων diff --git a/config/locales/en.yml b/config/locales/en.yml index 0d01ad4666..8ad5ecb060 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -256,7 +256,7 @@ en: week_users_active: active this week week_users_new: users this week domain_blocks: - add_new: Add new + add_new: Add new domain block created_msg: Domain block is now being processed destroyed_msg: Domain block has been undone domain: Domain @@ -273,11 +273,11 @@ en: reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions reject_reports: Reject reports reject_reports_hint: Ignore all reports coming from this domain. Irrelevant for suspensions - severities: - noop: None - silence: Silence - suspend: Suspend - severity: Severity + rejecting_media: rejecting media files + rejecting_reports: rejecting reports + severity: + silence: silenced + suspend: suspended show: affected_accounts: one: One account in the database affected @@ -287,8 +287,7 @@ en: suspend: Unsuspend all existing accounts from this domain title: Undo domain block for %{domain} undo: Undo - title: Domain blocks - undo: Undo + undo: Undo domain block email_domain_blocks: add_new: Add new created_msg: Successfully added e-mail domain to blacklist @@ -303,11 +302,20 @@ en: back_to_account: Back To Account title: "%{acct}'s Followers" instances: - account_count: Known accounts - domain_name: Domain - reset: Reset - search: Search - title: Known instances + delivery_available: Delivery is available + known_accounts: + one: "%{count} known account" + other: "%{count} known accounts" + moderation: + all: All + limited: Limited + title: Moderation + title: Federation + total_blocked_by_us: Blocked by us + total_followed_by_them: Followed by them + total_followed_by_us: Followed by us + total_reported: Reports about them + total_storage: Media attachments invites: deactivate_all: Deactivate all filter: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index c05b21108e..b7dd7ca8bb 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -261,11 +261,6 @@ eo: title: Nova domajna blokado reject_media: Malakcepti aŭdovidajn dosierojn reject_media_hint: Forigas aŭdovidaĵojn loke konservitajn kaj rifuzas alŝuti ajnan estonte. Senzorge pri haltigoj - severities: - noop: Nenio - silence: Kaŝi - suspend: Haltigi - severity: Severeco show: affected_accounts: one: Unu konto en la datumbazo esta influita @@ -275,7 +270,6 @@ eo: suspend: Malhaltigi ĉiujn kontojn, kiuj ekzistas en ĉi tiu domajno title: Malfari domajnan blokadon por %{domain} undo: Malfari - title: Domajnaj blokadoj undo: Malfari email_domain_blocks: add_new: Aldoni novan @@ -288,10 +282,6 @@ eo: title: Nova blokado de retadresa domajno title: Nigra listo de retadresaj domajnoj instances: - account_count: Konataj kontoj - domain_name: Domajno - reset: Restarigi - search: Serĉi title: Konataj nodoj invites: deactivate_all: Malaktivigi ĉion diff --git a/config/locales/es.yml b/config/locales/es.yml index bf4cc29fe3..b221989e83 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -260,11 +260,6 @@ es: reject_media_hint: Remueve localmente archivos multimedia almacenados para descargar cualquiera en el futuro. Irrelevante para suspensiones reject_reports: Rechazar informes reject_reports_hint: Ignore todos los reportes de este dominio. Irrelevante para suspensiones - severities: - noop: Ninguno - silence: Silenciar - suspend: Suspender - severity: Severidad show: affected_accounts: one: Una cuenta en la base de datos afectada @@ -274,7 +269,6 @@ es: suspend: Des-suspender todas las cuentas existentes de este dominio title: Deshacer bloque de dominio para %{domain} undo: Deshacer - title: Bloques de Dominio undo: Deshacer email_domain_blocks: add_new: Añadir nuevo @@ -287,10 +281,6 @@ es: title: Nueva entrada en la lista negra de correo title: Lista negra de correo instances: - account_count: Cuentas conocidas - domain_name: Dominio - reset: Reiniciar - search: Buscar title: Instancias conocidas invites: deactivate_all: Desactivar todos diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 78fd489588..6399fac83e 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -262,11 +262,6 @@ eu: reject_media_hint: Lokalki gordetako multimedia fitxategiak ezabatzen ditu eta etorkizunean fitxategi berriak deskargatzeari uko egingo dio. Ez du garrantzirik kanporaketetan reject_reports: Errefusatu salaketak reject_reports_hint: Ezikusi domeinu honetatik jasotako salaketak. Kanporatzeentzako garrantzirik gabekoa - severities: - noop: Bat ere ez - silence: Isilarazi - suspend: Kanporatu - severity: Larritasuna show: affected_accounts: one: Datu-baseko kontu bati eragiten dio @@ -276,7 +271,6 @@ eu: suspend: Kendu kanporatzeko agindua domeinu honetako kontu guztiei title: Desegin %{domain} domeinuko blokeoa undo: Desegin - title: Domeinuen blokeoak undo: Desegin email_domain_blocks: add_new: Gehitu berria @@ -289,10 +283,6 @@ eu: title: Sarrera berria e-mail zerrenda beltzean title: E-mail zerrenda beltza instances: - account_count: Kontu ezagunak - domain_name: Domeinua - reset: Berrezarri - search: Bilatu title: Instantzia ezagunak invites: deactivate_all: Desgaitu guztiak diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 5fccefc6d0..e7dd86025f 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -260,11 +260,6 @@ fa: reject_media_hint: تصویرهای ذخیره‌شده در این‌جا را پاک می‌کند و جلوی دریافت تصویرها را در آینده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها reject_reports: نپذیرفتن گزارش‌ها reject_reports_hint: گزارش‌هایی را که از این دامین می‌آید نادیده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها - severities: - noop: هیچ - silence: بی‌صداکردن - suspend: معلق‌کردن - severity: شدت show: affected_accounts: one: روی یک حساب در پایگاه داده تأثیر گذاشت @@ -274,7 +269,6 @@ fa: suspend: معلق‌شدن همهٔ حساب‌های این دامین را لغو کن title: واگردانی مسدودسازی دامنه برای %{domain} undo: واگردانی - title: دامین‌های مسدودشده undo: واگردانی email_domain_blocks: add_new: افزودن تازه @@ -287,10 +281,6 @@ fa: title: مسدودسازی دامین ایمیل تازه title: مسدودسازی دامین‌های ایمیل instances: - account_count: حساب‌های شناخته‌شده - domain_name: دامین - reset: بازنشانی - search: جستجو title: سرورهای شناخته‌شده invites: deactivate_all: غیرفعال‌کردن همه diff --git a/config/locales/fi.yml b/config/locales/fi.yml index b48635e21b..e7b8b18ae6 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -211,11 +211,6 @@ fi: title: Uusi verkkotunnuksen esto reject_media: Hylkää mediatiedostot reject_media_hint: Poistaa paikallisesti tallennetut mediatiedostot eikä lataa niitä enää jatkossa. Ei merkitystä jäähyn kohdalla - severities: - noop: Ei mitään - silence: Hiljennys - suspend: Jäähy - severity: Vakavuus show: affected_accounts: one: Vaikuttaa yhteen tiliin tietokannassa @@ -225,7 +220,6 @@ fi: suspend: Peru kaikkien tässä verkkotunnuksessa jo olemassa olevien tilien jäähy title: Peru verkkotunnuksen %{domain} esto undo: Peru - title: Verkkotunnusten estot undo: Peru email_domain_blocks: add_new: Lisää uusi @@ -238,10 +232,6 @@ fi: title: Uusi sähköpostiestolistan merkintä title: Sähköpostiestolista instances: - account_count: Tiedossa olevat tilit - domain_name: Verkkotunnus - reset: Palauta - search: Hae title: Tiedossa olevat instanssit invites: filter: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 8572881103..2faed982ec 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -265,11 +265,6 @@ fr: reject_media_hint: Supprime localement les fichiers média stockés et refuse d’en télécharger ultérieurement. Ne concerne pas les suspensions reject_reports: Rapports de rejet reject_reports_hint: Ignorez tous les rapports provenant de ce domaine. Sans objet pour les suspensions - severities: - noop: Aucune - silence: Masquer - suspend: Suspendre - severity: Séverité show: affected_accounts: one: Un compte affecté dans la base de données @@ -279,7 +274,6 @@ fr: suspend: Annuler la suspension sur tous les comptes existants pour ce domaine title: Annuler le blocage de domaine pour %{domain} undo: Annuler - title: Blocage de domaines undo: Annuler email_domain_blocks: add_new: Ajouter @@ -292,10 +286,6 @@ fr: title: Nouveau blocage de domaine de courriel title: Blocage de domaines de courriel instances: - account_count: Comptes connus - domain_name: Domaine - reset: Réinitialiser - search: Rechercher title: Instances connues invites: deactivate_all: Tout désactiver diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 5908e773b9..eb62619095 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -265,11 +265,6 @@ gl: reject_media_hint: Eliminar ficheiros de medios almacenados localmente e rexeita descargalos no futuro. Irrelevante para as suspensións reject_reports: Rexeitar informes reject_reports_hint: Ignorar todos os informes procedentes de este dominio. Irrelevante para as suspensións - severities: - noop: Ningún - silence: Silenciar - suspend: Suspender - severity: Severidade show: affected_accounts: one: Afectoulle a unha conta na base de datos @@ -279,7 +274,6 @@ gl: suspend: Non suspender todas as contas existentes de este dominio title: Desfacer o bloqueo de dominio para %{domain} undo: Desfacer - title: Bloqueos de domino undo: Desfacer email_domain_blocks: add_new: Engadir novo @@ -292,10 +286,6 @@ gl: title: Nova entrada la lista negra de e-mail title: Lista negra de E-mail instances: - account_count: Contas coñecidas - domain_name: Dominio - reset: Restablecer - search: Buscar title: Instancias coñecidas invites: deactivate_all: Desactivar todo diff --git a/config/locales/he.yml b/config/locales/he.yml index f45afe3a19..bc92ed9082 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -156,10 +156,6 @@ he: title: חסימת שרת חדשה reject_media: חסימת קבצי מדיה reject_media_hint: מסירה קבצי מדיה השמורים מקומית ומונעת מהורדת קבצים נוספים בעתיד. לא רלוונטי להשעיות - severities: - silence: השתקה - suspend: השעייה - severity: חוּמרה show: affected_accounts: one: חשבון אחד במסד הנתונים מושפע @@ -169,11 +165,8 @@ he: suspend: הסרת השעייה מכל החשבונות על שרת זה title: ביטול חסימת שרת עבור %{domain} undo: ביטול - title: חסימת שרתים undo: ביטול instances: - account_count: חשבונות מוכרים - domain_name: שם מתחם title: שרתים מוכרים reports: are_you_sure: 100% על בטוח? diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 4fa74228d7..79363b9ee2 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -195,11 +195,6 @@ hu: title: Új domain-tiltás reject_media: Médiafájlok elutasítása reject_media_hint: Eltávolítja a helyben tárolt médiafájlokat és a továbbiakban letiltja az új médiafájlok letöltését. Felfüggesztett fiókok esetében irreleváns opció - severities: - noop: Egyik sem - silence: Némítás - suspend: Felfüggesztés - severity: Súlyosság show: affected_accounts: one: Összesen egy fiók érintett az adatbázisban @@ -209,7 +204,6 @@ hu: suspend: Minden felhasználó felfüggesztésének feloldása ezen a domainen title: "%{domain} domain tiltásának feloldása" undo: Visszavonás - title: Tiltott domainek undo: Visszavonás email_domain_blocks: add_new: Új hozzáadása @@ -222,10 +216,6 @@ hu: title: Új e-mail feketelista bejegyzés title: E-mail feketelista instances: - account_count: Nyilvántartott fiókok - domain_name: Domain - reset: Visszaállítás - search: Keresés title: Nyilvántartott instanciák invites: filter: diff --git a/config/locales/id.yml b/config/locales/id.yml index 5cc928823f..ae38b3f7d2 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -85,10 +85,6 @@ id: title: Pemblokiran domain baru reject_media: Tolak berkas media reject_media_hint: Hapus file media yang tersimpan dan menolak semua unduhan nantinya. Tidak terpengaruh dengan suspen - severities: - silence: Diamkan - suspend: Suspen - severity: Keparahan show: affected_accounts: one: Satu akun di dalam database terpengaruh @@ -98,10 +94,7 @@ id: suspend: Hapus suspen terhadap akun pada domain ini title: Hapus pemblokiran domain %{domain} undo: Undo - title: Pemblokiran Domain instances: - account_count: Akun yang diketahui - domain_name: Domain title: Server yang diketahui reports: comment: diff --git a/config/locales/io.yml b/config/locales/io.yml index 358ce4ca97..73c981a985 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -75,10 +75,6 @@ io: title: New domain block reject_media: Reject media files reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions - severities: - silence: Silence - suspend: Suspend - severity: Severity show: affected_accounts: one: One account in the database affected @@ -88,11 +84,8 @@ io: suspend: Unsuspend all existing accounts from this domain title: Undo domain block for %{domain} undo: Undo - title: Domain Blocks undo: Undo instances: - account_count: Known accounts - domain_name: Domain title: Known Instances reports: comment: diff --git a/config/locales/it.yml b/config/locales/it.yml index 0b96ef46a2..339dadaf4b 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -260,11 +260,6 @@ it: reject_media_hint: Rimuovi i file media salvati in locale e blocca i download futuri. Irrilevante per le sospensioni reject_reports: Respingi rapporti reject_reports_hint: Ignora tutti i rapporti provenienti da questo dominio. Irrilevante per sospensioni - severities: - noop: Nessuno - silence: Silenzia - suspend: Sospendi - severity: Severità show: affected_accounts: one: Interessato un solo account nel database @@ -274,7 +269,6 @@ it: suspend: Annulla la sospensione di tutti gli account esistenti da questo dominio title: Annulla il blocco del dominio per %{domain} undo: Annulla - title: Blocchi dominio undo: Annulla email_domain_blocks: add_new: Aggiungi nuovo @@ -287,10 +281,6 @@ it: title: Nuova voce della lista nera delle email title: Lista nera email instances: - account_count: Accounts conosciuti - domain_name: Dominio - reset: Reimposta - search: Cerca title: Istanze conosciute invites: deactivate_all: Disattiva tutto diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 22965a5952..60c8fff87a 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -265,11 +265,6 @@ ja: reject_media_hint: ローカルに保存されたメディアファイルを削除し、今後のダウンロードを拒否します。停止とは無関係です reject_reports: レポートを拒否 reject_reports_hint: このドメインからのレポートをすべて無視します。停止とは無関係です - severities: - noop: なし - silence: サイレンス - suspend: 停止 - severity: 深刻度 show: affected_accounts: one: データベース中の一つのアカウントに影響します @@ -279,7 +274,6 @@ ja: suspend: このドメインからの存在するすべてのアカウントの停止を戻す title: "%{domain}のドメインブロックを戻す" undo: 元に戻す - title: ドメインブロック undo: 元に戻す email_domain_blocks: add_new: 新規追加 @@ -292,10 +286,6 @@ ja: title: メールアドレス用ブラックリスト新規追加 title: メールブラックリスト instances: - account_count: 既知のアカウント数 - domain_name: ドメイン名 - reset: リセット - search: 検索 title: 既知のインスタンス invites: deactivate_all: すべて無効化 diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 7dd586aee8..056942ecd5 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -244,11 +244,6 @@ ka: title: ახალი დომენის ბლოკი reject_media: მედია ფაილების უარყოფა reject_media_hint: შლის ლოკალურად შენახულ მედია ფაილებს და უარყოფს სამომავლო გადმოტვირთებს. შეუსაბამო შეჩერებებისთვის - severities: - noop: არც ერთი - silence: გაჩუმება - suspend: შეჩერება - severity: სიმძიმე show: affected_accounts: one: გავლენა იქონია მონაცემთა ბაზაში ერთ ანგარიშზე @@ -258,7 +253,6 @@ ka: suspend: ამ დომენში ყველა არსებულ ანგარიშზე შეჩერების მოშორება title: უკუაქციეთ დომენის ბლოკი %{domain} დომენზე undo: უკუქცევა - title: დომენის ბლოკები undo: უკუქცევა email_domain_blocks: add_new: ახლის დამატება @@ -271,10 +265,6 @@ ka: title: ელ-ფოსტის ახალი შენატანი შავ სიაში title: ელ-ფოსტის შავი სია instances: - account_count: ცნობილი ანგარიშები - domain_name: დომენი - reset: გადატვირთვა - search: ძებნა title: ცნობილი ინსტანციები invites: deactivate_all: ყველას დეაქტივაცია diff --git a/config/locales/ko.yml b/config/locales/ko.yml index acfc811f3d..e0b4bbd0f6 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -267,11 +267,6 @@ ko: reject_media_hint: 로컬에 저장된 미디어 파일을 삭제하고, 이후로도 다운로드를 거부합니다. 정지와는 관계 없습니다 reject_reports: 신고 거부 reject_reports_hint: 이 도메인으로부터의 모든 신고를 무시합니다. 정지와는 무관합니다 - severities: - noop: 없음 - silence: 침묵 - suspend: 정지 - severity: 심각도 show: affected_accounts: one: 데이터베이스 중 1개의 계정에 영향을 끼칩니다 @@ -281,7 +276,6 @@ ko: suspend: 이 도메인에 존재하는 모든 계정의 계정 정지를 해제 title: "%{domain}의 도메인 차단을 해제" undo: 실행 취소 - title: 도메인 차단 undo: 실행 취소 email_domain_blocks: add_new: 새로 추가 @@ -294,10 +288,6 @@ ko: title: 새 이메일 도메인 차단 title: Email 도메인 차단 instances: - account_count: 알려진 계정의 수 - domain_name: 도메인 이름 - reset: 리셋 - search: 검색 title: 알려진 인스턴스들 invites: deactivate_all: 전부 비활성화 diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 7c6148e3be..e3c901eff8 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -260,11 +260,6 @@ ms: reject_media_hint: Buang fail media yang disimpan di sini dan menolak sebarang muat turun pada masa depan. Tidak berkaitan dengan penggantungan reject_reports: Tolak laporan reject_reports_hint: Abaikan semua laporan daripada domain ini. Tidak dikira untuk penggantungan - severities: - noop: Tiada - silence: Senyapkan - suspend: Gantungkan - severity: Tahap teruk show: affected_accounts: one: Satu akaun dalam pangkalan data menerima kesan @@ -274,7 +269,6 @@ ms: suspend: Buang penggantungan semua akaun sedia ada daripada domain ini title: Buang sekatan domain %{domain} undo: Buang - title: Sekatan domain undo: Buang email_domain_blocks: add_new: Tambah @@ -287,10 +281,6 @@ ms: title: Entri senarai hitam emel baru title: Senarai hitam emel instances: - account_count: Akaun diketahui - domain_name: Domain - reset: Set semula - search: Cari title: Tika diketahui invites: deactivate_all: Nyahaktifkan semua diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 92acb71d15..50fda80af1 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -265,11 +265,6 @@ nl: reject_media_hint: Verwijderd lokaal opgeslagen mediabestanden en weigert deze in de toekomst te downloaden. Irrelevant voor opgeschorte domeinen reject_reports: Rapportages weigeren reject_reports_hint: Alle rapportages die vanaf dit domein komen negeren. Irrelevant voor opgeschorte domeinen - severities: - noop: Geen - silence: Negeren - suspend: Opschorten - severity: Zwaarte show: affected_accounts: one: Eén account in de database aangepast @@ -279,7 +274,6 @@ nl: suspend: Alle opgeschorte accounts van dit domein niet langer opschorten title: Domeinblokkade voor %{domain} ongedaan maken undo: Ongedaan maken - title: Domeinblokkades undo: Ongedaan maken email_domain_blocks: add_new: Nieuwe toevoegen @@ -292,10 +286,6 @@ nl: title: Nieuw e-maildomein blokkeren title: E-maildomeinen blokkeren instances: - account_count: Bekende accounts - domain_name: Domein - reset: Opnieuw - search: Zoeken title: Bekende servers invites: deactivate_all: Alles deactiveren diff --git a/config/locales/no.yml b/config/locales/no.yml index a446fa1f66..cf8f77b4cc 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -195,11 +195,6 @@ title: Ny domeneblokkering reject_media: Avvis mediefiler reject_media_hint: Fjerner lokalt lagrede mediefiler og nekter å laste dem ned i fremtiden. Irrelevant for utvisninger - severities: - noop: Ingen - silence: Målbind - suspend: Utvis - severity: Alvorlighet show: affected_accounts: one: En konto i databasen påvirket @@ -209,7 +204,6 @@ suspend: Avutvis alle eksisterende kontoer fra dette domenet title: Angre domeneblokkering for %{domain} undo: Angre - title: Domeneblokkeringer undo: Angre email_domain_blocks: add_new: Lag ny @@ -222,10 +216,6 @@ title: Ny blokkeringsoppføring av e-postdomene title: Blokkering av e-postdomene instances: - account_count: Kjente kontoer - domain_name: Domene - reset: Tilbakestill - search: Søk title: Kjente instanser invites: filter: diff --git a/config/locales/oc.yml b/config/locales/oc.yml index e81b10dac0..6d4a6833b6 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -265,11 +265,6 @@ oc: reject_media_hint: Lèva los fichièrs gardats localament e regèta las demandas de telecargament dins lo futur. Servís pas a res per las suspensions reject_reports: Regetar los senhalaments reject_reports_hint: Ignorar totes los senhalaments que venon d’aqueste domeni. Pas pertiment per las suspensions - severities: - noop: Cap - silence: Silenci - suspend: Suspendre - severity: Severitat show: affected_accounts: one: Un compte de la basa de donadas tocat @@ -279,7 +274,6 @@ oc: suspend: Levar la suspension de totes los comptes d’aqueste domeni title: Restablir lo blocatge de domeni de %{domain} undo: Restablir - title: Blòc de domeni undo: Restablir email_domain_blocks: add_new: Ajustar @@ -292,10 +286,6 @@ oc: title: Nòu blocatge de domeni de corrièl title: Blocatge de domeni de corrièl instances: - account_count: Comptes coneguts - domain_name: Domeni - reset: Reïnicializar - search: Cercar title: Instàncias conegudas invites: deactivate_all: O desactivar tot diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 80259d013a..7d9a059193 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -271,11 +271,6 @@ pl: reject_media_hint: Usuwa przechowywane lokalnie pliki multimedialne i nie pozwala na ich pobieranie. Nieprzydatne przy zawieszeniu reject_reports: Odrzucaj zgłoszenia reject_reports_hint: Zgłoszenia z tej instancji będą ignorowane. Nieprzydatne przy zawieszeniu - severities: - noop: Nic nie rób - silence: Wycisz - suspend: Zawieś - severity: Priorytet show: affected_accounts: Dotyczy %{count} kont w bazie danych retroactive: @@ -283,7 +278,6 @@ pl: suspend: Odwołaj zawieszenie wszystkich kont w tej domenie title: Odwołaj blokadę dla domeny %{domain} undo: Cofnij - title: Zablokowane domeny undo: Cofnij email_domain_blocks: add_new: Dodaj nową @@ -296,10 +290,6 @@ pl: title: Nowa blokada domeny e-mail title: Blokowanie domen e-mail instances: - account_count: Znane konta - domain_name: Domena - reset: Przywróć - search: Szukaj title: Znane instancje invites: deactivate_all: Unieważnij wszystkie diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index efb8b1bf88..a475209eed 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -263,11 +263,6 @@ pt-BR: reject_media_hint: Remove arquivos de mídia armazenados localmente e recusa quaisquer outros no futuro. Irrelevante para suspensões reject_reports: Rejeitar denúncias reject_reports_hint: Ignorar todas as denúncias vindas deste domíno. Irrelevante para suspensões - severities: - noop: Nenhum - silence: Silêncio - suspend: Suspensão - severity: Rigidez show: affected_accounts: one: Uma conta no banco de dados foi afetada @@ -277,7 +272,6 @@ pt-BR: suspend: Retirar suspensão de todas as contas neste domínio title: Retirar bloqueio de domínio de %{domain} undo: Retirar - title: Bloqueios de domínio undo: Retirar email_domain_blocks: add_new: Adicionar novo @@ -290,10 +284,6 @@ pt-BR: title: Novo bloqueio de domínio de e-mail title: Bloqueio de Domínio de E-mail instances: - account_count: Contas conhecidas - domain_name: Domínio - reset: Resetar - search: Buscar title: Instâncias conhecidas invites: deactivate_all: Desativar todos diff --git a/config/locales/pt.yml b/config/locales/pt.yml index a67223069d..037582f343 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -195,11 +195,6 @@ pt: title: Novo bloqueio de domínio reject_media: Rejeitar ficheiros de media reject_media_hint: Remove localmente arquivos armazenados e rejeita fazer guardar novos no futuro. Irrelevante na suspensão - severities: - noop: Nenhum - silence: Silenciar - suspend: Suspender - severity: Severidade show: affected_accounts: one: Uma conta na base de dados afectada @@ -209,7 +204,6 @@ pt: suspend: Não suspender todas as contas existentes nesse domínio title: Remover o bloqueio de domínio de %{domain} undo: Anular - title: Bloqueio de domínio undo: Anular email_domain_blocks: add_new: Adicionar novo @@ -222,10 +216,6 @@ pt: title: Novo bloqueio de domínio de email title: Bloqueio de Domínio de Email instances: - account_count: Contas conhecidas - domain_name: Domínio - reset: Restaurar - search: Pesquisar title: Instâncias conhecidas invites: filter: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 40e66ceac9..3e37391a89 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -260,11 +260,6 @@ ru: title: Новая доменная блокировка reject_media: Запретить медиаконтент reject_media_hint: Удаляет локально хранимый медиаконтент и запрещает его загрузку в будущем. Не имеет значения в случае блокировки - severities: - noop: Ничего - silence: Глушение - suspend: Блокировка - severity: Строгость show: affected_accounts: few: Влияет на %{count} аккаунта в базе данных @@ -276,7 +271,6 @@ ru: suspend: Снять блокировку со всех существующих аккаунтов этого домена title: Снять блокировку с домена %{domain} undo: Отменить - title: Доменные блокировки undo: Отменить email_domain_blocks: add_new: Добавить новую @@ -289,10 +283,6 @@ ru: title: Новая доменная блокировка еmail title: Доменная блокировка email instances: - account_count: Известных аккаунтов - domain_name: Домен - reset: Сбросить - search: Поиск title: Известные узлы invites: deactivate_all: Отключить все diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 36399d7523..4b386e352a 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -269,11 +269,6 @@ sk: reject_media_hint: Zmaže lokálne uložené súbory médií a odmietne ich sťahovanie v budúcnosti. Irelevantné pre suspendáciu reject_reports: Zamietni hlásenia reject_reports_hint: Ignoruj všetky hlásenia prichádzajúce z tejto domény. Nevplýva na blokovania - severities: - noop: Žiadne - silence: Stíšiť - suspend: Suspendovať - severity: Závažnosť show: affected_accounts: few: "%{count} účty v databáze ovplyvnených" @@ -284,7 +279,6 @@ sk: suspend: Zrušiť suspendáciu všetkých existujúcich účtov z tejto domény title: Zrušiť blokovanie domény pre %{domain} undo: Vrátiť späť - title: Blokovanie domén undo: Späť email_domain_blocks: add_new: Pridať nový @@ -297,10 +291,6 @@ sk: title: Nový email na zablokovanie title: Blokované emailové adresy instances: - account_count: Známe účty - domain_name: Doména - reset: Resetovať - search: Hľadať title: Známe instancie invites: deactivate_all: Pozastaviť všetky diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 62ad744f3b..82739c9bb7 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -195,11 +195,6 @@ sr-Latn: title: Novo blokiranje domena reject_media: Odbaci multimediju reject_media_hint: Uklanja lokalno uskladištene multimedijske fajlove i odbija da ih skida na dalje. Nebitno je za suspenziju - severities: - noop: Ništa - silence: Ućutkavanje - suspend: Suspenzija - severity: Oštrina show: affected_accounts: few: Utiče na %{count} naloga u bazi @@ -211,7 +206,6 @@ sr-Latn: suspend: Ugasi suspenzije za sve postojeće naloge sa ovog domena title: Poništi blokadu domena za domen %{domain} undo: Poništi - title: Blokade domena undo: Poništi email_domain_blocks: add_new: Dodaj novuAdd new @@ -224,10 +218,6 @@ sr-Latn: title: Nova stavka u crnoj listi e-pošti title: Crna lista adresa e-pošte instances: - account_count: Poznati nalozi - domain_name: Domen - reset: Resetuj - search: Pretraga title: Poznate instance invites: filter: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 009281339d..e78a9b8179 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -268,11 +268,6 @@ sr: reject_media_hint: Уклања локално ускладиштене мултимедијске фајлове и одбија да их скида убудуће. Небитно је за суспензију reject_reports: Одбаци извештај reject_reports_hint: Игнориши све извештаје који долазе са овог домена. Небитно је за суспензије - severities: - noop: Ништа - silence: Ућуткавање - suspend: Суспензија - severity: Оштрина show: affected_accounts: few: Утиче на %{count} налога у бази @@ -284,7 +279,6 @@ sr: suspend: Уклони суспензије за све постојеће налоге са овог домена title: Поништи блокаду домена за %{domain} undo: Поништи - title: Блокаде домена undo: Поништи email_domain_blocks: add_new: Додај нови @@ -297,10 +291,6 @@ sr: title: Нова ставка е-поштe у црној листи title: Црна листа E-поште instances: - account_count: Познати налози - domain_name: Домен - reset: Ресетуј - search: Претрага title: Познате инстанце invites: deactivate_all: Деактивирај све diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 79040b46c3..aa5b3420da 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -213,11 +213,6 @@ sv: title: Nytt domänblock reject_media: Avvisa mediafiler reject_media_hint: Raderar lokalt lagrade mediefiler och förhindrar möjligheten att ladda ner något i framtiden. Irrelevant för suspensioner - severities: - noop: Ingen - silence: Tysta ner - suspend: Suspendera - severity: Svårighet show: affected_accounts: one: Ett konto i databasen drabbades @@ -227,7 +222,6 @@ sv: suspend: Ta bort suspendering från alla befintliga konton på den här domänen title: Ångra domänblockering för %{domain} undo: Ångra - title: Domänblockering undo: Ångra email_domain_blocks: add_new: Lägg till ny @@ -240,10 +234,6 @@ sv: title: Ny E-postdomänblocklistningsinmatning title: E-postdomänblock instances: - account_count: Kända konton - domain_name: Domän - reset: Återställa - search: Sök title: Kända instanser invites: filter: diff --git a/config/locales/th.yml b/config/locales/th.yml index 1a1ffae3b6..5be8e02c0f 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -84,10 +84,6 @@ th: title: การบล๊อกโดเมนใหม่ reject_media: ไม่อนุมัติไฟล์สื่อ reject_media_hint: ลบไฟล์สื่อที่เก็บไว้ในเครื่อง และ ป้องกันการดาวน์โหลดในอนาคต. Irrelevant for suspensions - severities: - silence: ปิดเสียง - suspend: หยุดไว้ - severity: Severity show: affected_accounts: one: มีผลต่อหนึ่งแอคเค๊าท์ในฐานข้อมูล @@ -97,11 +93,8 @@ th: suspend: ยกเลิกการหยุดทุกแอคเค๊าท์จากโดเมน title: ยกเลิกการบล๊อกโดเมน %{domain} undo: ยกเลิก - title: บล๊อกโดเมน undo: ยกเลิก instances: - account_count: Known accounts - domain_name: ชื่อโดเมน title: Known Instances reports: comment: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index aae1549f77..c38b73f2e2 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -83,10 +83,6 @@ tr: title: Yeni domain bloğu reject_media: Ortam dosyalarını reddetme reject_media_hint: Yerel olarak depolanmış ortam dosyalarını ve gelecekte indirilecek olanları reddeder. Uzaklaştırma için uygun değildir - severities: - silence: Sustur - suspend: Uzaklaştır - severity: İşlem show: affected_accounts: one: Veritabanındaki bir hesap etkilendi @@ -96,11 +92,8 @@ tr: suspend: Bu domaindeki tüm hesapların üzerindeki uzaklaştırma işlemini kaldır title: "%{domain} domain'i için yapılan işlemi geri al" undo: Geri al - title: Domain Blokları undo: Geri al instances: - account_count: Bilinen hesaplar - domain_name: Domain title: Bilinen Sunucular reports: comment: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index b3fc4cd364..9a63854b58 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -237,11 +237,6 @@ uk: title: Нове блокування домену reject_media: Заборонити медіаконтент reject_media_hint: Видаляє медіаконтент, збережений локально, і забороняє його завантаження у майбутньому. Не має значення у випадку блокування - severities: - noop: Нічого - silence: Глушення - suspend: Блокування - severity: Суворість show: affected_accounts: few: Впливає на %{count} акаунти у базі даних @@ -253,7 +248,6 @@ uk: suspend: Зняти блокування з усіх існуючих акаунтів цього домену title: Зняти блокування з домена %{domain} undo: Відмінити - title: Доменні блокування undo: Відмінити email_domain_blocks: add_new: Додати @@ -266,10 +260,6 @@ uk: title: Нове доменне блокування домену email title: Чорний список поштових доменів instances: - account_count: Відомі аккаунти - domain_name: Домен - reset: Скинути - search: Пошук title: Відомі інстанції invites: filter: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index d03bf12178..e482e9c417 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -246,11 +246,6 @@ zh-CN: title: 添加域名屏蔽 reject_media: 拒绝接收媒体文件 reject_media_hint: 删除本地已缓存的媒体文件,并且不再接收来自该域名的任何媒体文件。此选项不影响封禁 - severities: - noop: 无 - silence: 自动隐藏 - suspend: 自动封禁 - severity: 屏蔽级别 show: affected_accounts: one: 将会影响到数据库中的 1 个帐户 @@ -260,7 +255,6 @@ zh-CN: suspend: 对此域名的所有帐户解除封禁 title: 撤销对 %{domain} 的域名屏蔽 undo: 撤销 - title: 域名屏蔽 undo: 撤销 email_domain_blocks: add_new: 添加新条目 @@ -273,10 +267,6 @@ zh-CN: title: 添加电子邮件域名屏蔽 title: 电子邮件域名屏蔽 instances: - account_count: 已知帐户 - domain_name: 域名 - reset: 重置 - search: 搜索 title: 已知实例 invites: deactivate_all: 撤销所有邀请链接 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 35b7741200..737ca000cf 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -213,11 +213,6 @@ zh-HK: title: 新增域名阻隔 reject_media: 拒絕媒體檔案 reject_media_hint: 刪除本地緩存的媒體檔案,再也不在未來下載這個站點的檔案。和自動刪除無關 - severities: - noop: 無 - silence: 自動靜音 - suspend: 自動刪除 - severity: 阻隔分級 show: affected_accounts: 資料庫中有%{count}個用戶受影響 retroactive: @@ -225,7 +220,6 @@ zh-HK: suspend: 對此域名的所有用戶取消除名 title: 撤銷 %{domain} 的域名阻隔 undo: 撤銷 - title: 域名阻隔 undo: 撤銷 email_domain_blocks: add_new: 加入新項目 @@ -238,10 +232,6 @@ zh-HK: title: 新增電郵網域阻隔 title: 電郵網域阻隔 instances: - account_count: 已知帳號 - domain_name: 域名 - reset: 重設 - search: 搜索 title: 已知服務站 invites: filter: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 5e209d2ffa..f4bda0f348 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -218,11 +218,6 @@ zh-TW: title: 新增封鎖網域 reject_media: 拒絕媒體檔案 reject_media_hint: 刪除本地緩存的媒體檔案,並且不再接收來自該網域的任何媒體檔案。與自動封鎖無關 - severities: - noop: 無 - silence: 自動靜音 - suspend: 自動封鎖 - severity: 嚴重度 show: affected_accounts: 資料庫中有%{count}個使用者受影響 retroactive: @@ -230,7 +225,6 @@ zh-TW: suspend: 對此網域的所有使用者取消封鎖 title: 撤銷 %{domain} 的網域封鎖 undo: 撤銷 - title: 網域封鎖 undo: 撤銷 email_domain_blocks: add_new: 加入新項目 @@ -243,10 +237,6 @@ zh-TW: title: 新增E-mail封鎖 title: E-mail封鎖 instances: - account_count: 已知帳戶 - domain_name: 網域 - reset: 重設 - search: 搜尋 title: 已知站點 invites: filter: diff --git a/config/navigation.rb b/config/navigation.rb index 1b3c05ef7a..2365191dc2 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -29,8 +29,7 @@ SimpleNavigation::Configuration.run do |navigation| admin.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url, highlights_on: %r{/admin/accounts} admin.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path admin.item :tags, safe_join([fa_icon('tag fw'), t('admin.tags.title')]), admin_tags_path - admin.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url, highlights_on: %r{/admin/instances}, if: -> { current_user.admin? } - admin.item :domain_blocks, safe_join([fa_icon('lock fw'), t('admin.domain_blocks.title')]), admin_domain_blocks_url, highlights_on: %r{/admin/domain_blocks}, if: -> { current_user.admin? } + admin.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url, highlights_on: %r{/admin/instances|/admin/domain_blocks}, if: -> { current_user.admin? } admin.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? } end diff --git a/config/routes.rb b/config/routes.rb index 3ae2735d1c..af49845ccb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -138,7 +138,7 @@ Rails.application.routes.draw do get '/dashboard', to: 'dashboard#index' resources :subscriptions, only: [:index] - resources :domain_blocks, only: [:index, :new, :create, :show, :destroy] + resources :domain_blocks, only: [:new, :create, :show, :destroy] resources :email_domain_blocks, only: [:index, :new, :create, :destroy] resources :action_logs, only: [:index] resources :warning_presets, except: [:new] @@ -157,11 +157,7 @@ Rails.application.routes.draw do end end - resources :instances, only: [:index] do - collection do - post :resubscribe - end - end + resources :instances, only: [:index, :show], constraints: { id: /[^\/]+/ } resources :reports, only: [:index, :show] do member do diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb index 79e7fea423..129bf88837 100644 --- a/spec/controllers/admin/domain_blocks_controller_spec.rb +++ b/spec/controllers/admin/domain_blocks_controller_spec.rb @@ -7,26 +7,6 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do sign_in Fabricate(:user, admin: true), scope: :user end - describe 'GET #index' do - around do |example| - default_per_page = DomainBlock.default_per_page - DomainBlock.paginates_per 1 - example.run - DomainBlock.paginates_per default_per_page - end - - it 'renders domain blocks' do - 2.times { Fabricate(:domain_block) } - - get :index, params: { page: 2 } - - assigned = assigns(:domain_blocks) - expect(assigned.count).to eq 1 - expect(assigned.klass).to be DomainBlock - expect(response).to have_http_status(200) - end - end - describe 'GET #new' do it 'assigns a new domain block' do get :new @@ -53,7 +33,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do expect(DomainBlockWorker).to have_received(:perform_async) expect(flash[:notice]).to eq I18n.t('admin.domain_blocks.created_msg') - expect(response).to redirect_to(admin_domain_blocks_path) + expect(response).to redirect_to(admin_instances_path(limited: '1')) end it 'renders new when failed to save' do @@ -76,7 +56,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do expect(service).to have_received(:call).with(domain_block, true) expect(flash[:notice]).to eq I18n.t('admin.domain_blocks.destroyed_msg') - expect(response).to redirect_to(admin_domain_blocks_path) + expect(response).to redirect_to(admin_instances_path(limited: '1')) end end end diff --git a/spec/policies/instance_policy_spec.rb b/spec/policies/instance_policy_spec.rb index fbfddd72f5..77a3bde3fb 100644 --- a/spec/policies/instance_policy_spec.rb +++ b/spec/policies/instance_policy_spec.rb @@ -8,7 +8,7 @@ RSpec.describe InstancePolicy do let(:admin) { Fabricate(:user, admin: true).account } let(:john) { Fabricate(:user).account } - permissions :index?, :resubscribe? do + permissions :index? do context 'admin' do it 'permits' do expect(subject).to permit(admin, Instance) From ef63860450db2d245502088a3e734e3cf4150b64 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Jan 2019 14:09:57 +0100 Subject: [PATCH 46/64] Weblate translations (2019-01-08) (#9758) * Translated using Weblate (Korean) Currently translated at 100.0% (734 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ko/ * Translated using Weblate (Korean) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ko/ * Translated using Weblate (Korean) Currently translated at 100.0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ko/ * Translated using Weblate (Corsican) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/co/ * Translated using Weblate (Corsican) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/co/ * Translated using Weblate (Greek) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/el/ * Translated using Weblate (Greek) Currently translated at 100.0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/el/ * Translated using Weblate (Greek) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/el/ * Translated using Weblate (German) Currently translated at 100,0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/de/ * Translated using Weblate (German) Currently translated at 100,0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/de/ * Translated using Weblate (German) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/de/ * Translated using Weblate (Czech) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/cs/ * Translated using Weblate (Czech) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cs/ * Translated using Weblate (Czech) Currently translated at 100.0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/cs/ * Translated using Weblate (Czech) Currently translated at 100.0% (98 of 98 strings) Translation: Mastodon/Doorkeeper Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/doorkeeper/cs/ * Translated using Weblate (Czech) Currently translated at 99.9% (733 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cs/ * Translated using Weblate (German) Currently translated at 99.9% (733 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/de/ * Translated using Weblate (Greek) Currently translated at 99.7% (732 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/el/ * Translated using Weblate (Japanese) Currently translated at 95.0% (697 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/ * Translated using Weblate (Corsican) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/co/ * Translated using Weblate (French) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fr/ * Translated using Weblate (German) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/de/ * Translated using Weblate (Czech) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cs/ * Translated using Weblate (Corsican) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/co/ * Translated using Weblate (Japanese) Currently translated at 98.4% (62 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/ja/ * Translated using Weblate (Czech) Currently translated at 100.0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/cs/ * Translated using Weblate (Japanese) Currently translated at 85.0% (91 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ja/ * Translated using Weblate (Galician) Currently translated at 100,0% (734 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/gl/ * Translated using Weblate (Galician) Currently translated at 100,0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/gl/ * Translated using Weblate (Galician) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/gl/ * Translated using Weblate (Galician) Currently translated at 100,0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/gl/ * Translated using Weblate (Japanese) Currently translated at 95.0% (697 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/ * Translated using Weblate (Japanese) Currently translated at 86.0% (92 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ja/ * Translated using Weblate (Japanese) Currently translated at 85.0% (91 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ja/ * Translated using Weblate (French) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/fr/ * Translated using Weblate (French) Currently translated at 100,0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/fr/ * Translated using Weblate (Japanese) Currently translated at 86.0% (92 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ja/ * Translated using Weblate (French) Currently translated at 98.2% (721 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fr/ * Translated using Weblate (Japanese) Currently translated at 95.0% (697 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/ * Added translation using Weblate (Latvian) * Translated using Weblate (Japanese) Currently translated at 95.2% (699 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/ * Translated using Weblate (Japanese) Currently translated at 95.2% (699 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/ * Translated using Weblate (Japanese) Currently translated at 85.0% (91 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ja/ * Added translation using Weblate (Latvian) * Translated using Weblate (Occitan) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/oc/ * Translated using Weblate (Occitan) Currently translated at 100,0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/oc/ * Translated using Weblate (Occitan) Currently translated at 100,0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/oc/ * Translated using Weblate (Chinese (Hong Kong)) Currently translated at 78.0% (276 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/zh_Hant_HK/ * Translated using Weblate (Arabic) Currently translated at 96.2% (706 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ar/ * Translated using Weblate (Arabic) Currently translated at 98.0% (347 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ar/ * Translated using Weblate (Dutch) Currently translated at 99.4% (352 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/nl/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 77.7% (275 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/zh_Hans/ * Translated using Weblate (Chinese (Traditional)) Currently translated at 88.7% (314 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/zh_Hant/ * Translated using Weblate (Basque) Currently translated at 93.2% (330 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/eu/ * Translated using Weblate (Georgian) Currently translated at 80.8% (286 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ka/ * Translated using Weblate (Ido) Currently translated at 36.2% (128 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/io/ * Translated using Weblate (Italian) Currently translated at 93.2% (330 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/it/ * Translated using Weblate (Japanese) Currently translated at 99.4% (352 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ja/ * Translated using Weblate (Persian) Currently translated at 89.8% (318 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fa/ * Translated using Weblate (Polish) Currently translated at 95.5% (338 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/pl/ * Translated using Weblate (Russian) Currently translated at 85.0% (301 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ru/ * Translated using Weblate (Portuguese) Currently translated at 65.0% (230 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/pt/ * Translated using Weblate (Serbian (latin)) Currently translated at 64.7% (229 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sr_Latn/ * Translated using Weblate (Tamil) Currently translated at 14.4% (51 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ta/ * Translated using Weblate (Turkish) Currently translated at 41.0% (145 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/tr/ * Translated using Weblate (Finnish) Currently translated at 96.8% (61 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/fi/ * Translated using Weblate (Russian) Currently translated at 96.8% (61 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/ru/ * Translated using Weblate (Thai) Currently translated at 12.7% (8 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/th/ * Translated using Weblate (Arabic) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/ar/ * Translated using Weblate (Telugu) Currently translated at 90.4% (320 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/te/ * Translated using Weblate (Dutch) Currently translated at 100,0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/nl/ * Translated using Weblate (Dutch) Currently translated at 99,6% (731 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/nl/ * Translated using Weblate (Dutch) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/nl/ * Translated using Weblate (Dutch) Currently translated at 94.4% (101 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/nl/ * Translated using Weblate (Greek) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/el/ * Translated using Weblate (Korean) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ko/ * Translated using Weblate (Corsican) Currently translated at 100.0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/co/ * Translated using Weblate (Basque) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/eu/ * Translated using Weblate (Corsican) Currently translated at 99.9% (733 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/co/ * Translated using Weblate (Basque) Currently translated at 99.1% (106 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/eu/ * Translated using Weblate (Basque) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/eu/ * Translated using Weblate (Basque) Currently translated at 99.6% (731 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/eu/ * Translated using Weblate (Slovak) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sk/ * Translated using Weblate (Slovak) Currently translated at 99.3% (729 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sk/ * Translated using Weblate (Slovak) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/sk/ * Translated using Weblate (Slovak) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sk/ * Translated using Weblate (Slovak) Currently translated at 100.0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/sk/ * Translated using Weblate (Slovak) Currently translated at 99.7% (732 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sk/ * Translated using Weblate (Czech) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/cs/ * Translated using Weblate (Czech) Currently translated at 99.9% (733 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cs/ * Translated using Weblate (Occitan) Currently translated at 100,0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/oc/ * Translated using Weblate (Occitan) Currently translated at 99,5% (730 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/oc/ * Translated using Weblate (Catalan) Currently translated at 100,0% (734 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ca/ * Translated using Weblate (French) Currently translated at 99,9% (733 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/fr/ * Translated using Weblate (Slovak) Currently translated at 99,7% (732 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sk/ * Translated using Weblate (Catalan) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/ca/ * Translated using Weblate (Catalan) Currently translated at 100,0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ca/ * Translated using Weblate (Catalan) Currently translated at 100,0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ca/ * Translated using Weblate (Occitan) Currently translated at 99.7% (732 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/oc/ * Translated using Weblate (Arabic) Currently translated at 96.2% (706 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ar/ * Translated using Weblate (Slovak) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sk/ * Translated using Weblate (Slovak) Currently translated at 99.7% (732 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sk/ * Translated using Weblate (Slovak) Currently translated at 99.7% (732 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/sk/ * Translated using Weblate (Arabic) Currently translated at 92.5% (99 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ar/ * Translated using Weblate (Armenian) Currently translated at 63.6% (225 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/hy/ * Translated using Weblate (Croatian) Currently translated at 42.4% (150 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/hr/ * Translated using Weblate (Finnish) Currently translated at 87.9% (311 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/fi/ * Translated using Weblate (Norwegian (old code)) Currently translated at 66.1% (234 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/no/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 93.2% (330 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/pt_BR/ * Translated using Weblate (Danish) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/da/ * Translated using Weblate (Danish) Currently translated at 93,7% (688 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/da/ * Translated using Weblate (Danish) Currently translated at 78,5% (84 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/da/ * Translated using Weblate (Danish) Currently translated at 96,9% (343 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/da/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/pt_BR/ * Translated using Weblate (Danish) Currently translated at 86.0% (92 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/da/ * Translated using Weblate (Telugu) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/te/ * Translated using Weblate (Czech) Currently translated at 99.9% (733 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/cs/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 97.5% (716 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/pt_BR/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 98.6% (349 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/pt_BR/ * Translated using Weblate (Slovak) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/sk/ * Translated using Weblate (Portuguese (Brazil)) Currently translated at 92.5% (99 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/pt_BR/ * Translated using Weblate (Telugu) Currently translated at 14.4% (106 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/te/ * Translated using Weblate (Slovak) Currently translated at 100.0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/sk/ * Translated using Weblate (Slovak) Currently translated at 100.0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/sk/ * Translated using Weblate (Romanian) Currently translated at 12.1% (89 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ro/ * Translated using Weblate (Romanian) Currently translated at 99.4% (352 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ro/ * Translated using Weblate (Japanese) Currently translated at 95.1% (698 of 734 strings) Translation: Mastodon/Backend Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/backend/ja/ * Translated using Weblate (Romanian) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ro/ * Translated using Weblate (Romanian) Currently translated at 100.0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/ro/ * Translated using Weblate (Romanian) Currently translated at 95.3% (102 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/ro/ * Translated using Weblate (Italian) Currently translated at 100,0% (354 of 354 strings) Translation: Mastodon/React Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/frontend/it/ * Translated using Weblate (Italian) Currently translated at 100,0% (63 of 63 strings) Translation: Mastodon/Devise Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/devise/it/ * Translated using Weblate (Italian) Currently translated at 100,0% (107 of 107 strings) Translation: Mastodon/Preferences Translate-URL: https://weblate.joinmastodon.org/projects/mastodon/simple_form/it/ * i18n-tasks normalize * i18n-tasks remove-unused * yarn manage:translations * Fix missing plural form (temporarily) --- app/javascript/mastodon/locales/ar.json | 23 ++ app/javascript/mastodon/locales/ast.json | 23 ++ app/javascript/mastodon/locales/bg.json | 23 ++ app/javascript/mastodon/locales/ca.json | 69 ++-- app/javascript/mastodon/locales/co.json | 27 +- app/javascript/mastodon/locales/cs.json | 29 +- app/javascript/mastodon/locales/cy.json | 23 ++ app/javascript/mastodon/locales/da.json | 31 +- app/javascript/mastodon/locales/de.json | 27 +- .../mastodon/locales/defaultMessages.json | 125 ++++++ app/javascript/mastodon/locales/el.json | 27 +- app/javascript/mastodon/locales/en.json | 23 ++ app/javascript/mastodon/locales/eo.json | 23 ++ app/javascript/mastodon/locales/es.json | 23 ++ app/javascript/mastodon/locales/eu.json | 71 ++-- app/javascript/mastodon/locales/fa.json | 23 ++ app/javascript/mastodon/locales/fi.json | 23 ++ app/javascript/mastodon/locales/fr.json | 25 +- app/javascript/mastodon/locales/gl.json | 25 +- app/javascript/mastodon/locales/he.json | 23 ++ app/javascript/mastodon/locales/hr.json | 23 ++ app/javascript/mastodon/locales/hu.json | 23 ++ app/javascript/mastodon/locales/hy.json | 23 ++ app/javascript/mastodon/locales/id.json | 23 ++ app/javascript/mastodon/locales/io.json | 23 ++ app/javascript/mastodon/locales/it.json | 71 ++-- app/javascript/mastodon/locales/ja.json | 23 ++ app/javascript/mastodon/locales/ka.json | 23 ++ app/javascript/mastodon/locales/ko.json | 27 +- app/javascript/mastodon/locales/lv.json | 379 ++++++++++++++++++ app/javascript/mastodon/locales/ms.json | 23 ++ app/javascript/mastodon/locales/nl.json | 27 +- app/javascript/mastodon/locales/no.json | 23 ++ app/javascript/mastodon/locales/oc.json | 31 +- app/javascript/mastodon/locales/pl.json | 23 ++ app/javascript/mastodon/locales/pt-BR.json | 69 ++-- app/javascript/mastodon/locales/pt.json | 23 ++ app/javascript/mastodon/locales/ro.json | 193 +++++---- app/javascript/mastodon/locales/ru.json | 23 ++ app/javascript/mastodon/locales/sk.json | 39 +- app/javascript/mastodon/locales/sl.json | 23 ++ app/javascript/mastodon/locales/sr-Latn.json | 23 ++ app/javascript/mastodon/locales/sr.json | 23 ++ app/javascript/mastodon/locales/sv.json | 23 ++ app/javascript/mastodon/locales/ta.json | 23 ++ app/javascript/mastodon/locales/te.json | 91 +++-- app/javascript/mastodon/locales/th.json | 23 ++ app/javascript/mastodon/locales/tr.json | 23 ++ app/javascript/mastodon/locales/uk.json | 23 ++ .../mastodon/locales/whitelist_lv.json | 2 + app/javascript/mastodon/locales/zh-CN.json | 23 ++ app/javascript/mastodon/locales/zh-HK.json | 23 ++ app/javascript/mastodon/locales/zh-TW.json | 23 ++ config/locales/ar.yml | 64 +-- config/locales/ca.yml | 32 ++ config/locales/co.yml | 32 +- config/locales/cs.yml | 58 ++- config/locales/da.yml | 7 + config/locales/de.yml | 30 ++ config/locales/devise.ar.yml | 1 + config/locales/devise.ca.yml | 1 + config/locales/devise.co.yml | 3 +- config/locales/devise.cs.yml | 1 + config/locales/devise.da.yml | 1 + config/locales/devise.de.yml | 1 + config/locales/devise.el.yml | 1 + config/locales/devise.eu.yml | 1 + config/locales/devise.fr.yml | 1 + config/locales/devise.gl.yml | 1 + config/locales/devise.it.yml | 1 + config/locales/devise.ja.yml | 1 + config/locales/devise.nl.yml | 1 + config/locales/devise.oc.yml | 1 + config/locales/devise.pt-BR.yml | 1 + config/locales/devise.ru.yml | 2 +- config/locales/devise.sk.yml | 3 +- config/locales/doorkeeper.cs.yml | 2 +- config/locales/el.yml | 30 ++ config/locales/eu.yml | 33 ++ config/locales/fr.yml | 30 ++ config/locales/gl.yml | 32 +- config/locales/ja.yml | 32 +- config/locales/ko.yml | 30 ++ config/locales/lv.yml | 1 + config/locales/nl.yml | 26 ++ config/locales/oc.yml | 30 ++ config/locales/pt-BR.yml | 32 ++ config/locales/ro.yml | 112 ++++++ config/locales/simple_form.ar.yml | 13 + config/locales/simple_form.ca.yml | 19 + config/locales/simple_form.co.yml | 19 + config/locales/simple_form.cs.yml | 21 +- config/locales/simple_form.da.yml | 12 + config/locales/simple_form.de.yml | 19 + config/locales/simple_form.el.yml | 19 + config/locales/simple_form.eu.yml | 18 + config/locales/simple_form.fr.yml | 19 + config/locales/simple_form.gl.yml | 19 + config/locales/simple_form.it.yml | 19 + config/locales/simple_form.ja.yml | 19 + config/locales/simple_form.ko.yml | 19 + config/locales/simple_form.nl.yml | 11 + config/locales/simple_form.oc.yml | 19 + config/locales/simple_form.pt-BR.yml | 19 + config/locales/simple_form.ro.yml | 29 ++ config/locales/simple_form.sk.yml | 29 +- config/locales/sk.yml | 46 ++- config/locales/te.yml | 123 ++++++ 108 files changed, 2993 insertions(+), 297 deletions(-) create mode 100644 app/javascript/mastodon/locales/lv.json create mode 100644 app/javascript/mastodon/locales/whitelist_lv.json create mode 100644 config/locales/lv.yml diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 3781f394e1..bf3f01d8eb 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "يتابِع", "notifications.filter.mentions": "الإشارات", "notifications.group": "{count} إشعارات", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "إضبط خصوصية المنشور", "privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط", "privacy.direct.short": "مباشر", @@ -292,6 +313,8 @@ "search_results.statuses": "التبويقات", "search_results.total": "{count, number} {count, plural, one {result} و {results}}", "standalone.public_title": "نظرة على ...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "إلغاء الترقية", "status.cannot_reblog": "تعذرت ترقية هذا المنشور", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index e38c459638..b53a28c687 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} avisos", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Bloquiar a @{name}", "status.cancel_reblog_private": "Dexar de compartir", "status.cannot_reblog": "Esti artículu nun pue compartise", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index b15e208135..47a4d9d315 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 97568c53a0..86027576ea 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Autoritzar", "follow_request.reject": "Rebutjar", "getting_started.developers": "Desenvolupadors", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directori de perfils", "getting_started.documentation": "Documentació", "getting_started.heading": "Començant", "getting_started.invite": "Convida gent", @@ -149,23 +149,23 @@ "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostrar impulsos", "home.column_settings.show_replies": "Mostrar respostes", - "introduction.federation.action": "Next", + "introduction.federation.action": "Següent", "introduction.federation.federated.headline": "Federated", - "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", + "introduction.federation.federated.text": "Les publicacions públiques d'altres servidors del fedivers apareixeran a la línia de temps federada.", "introduction.federation.home.headline": "Home", - "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.home.text": "Les publicacions de les persones que segueixes apareixeran a la línia de temps Inici. Pots seguir qualsevol persona de qualsevol servidor!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", - "introduction.interactions.action": "Finish tutorial!", - "introduction.interactions.favourite.headline": "Favourite", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", - "introduction.interactions.reblog.headline": "Boost", - "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", - "introduction.interactions.reply.headline": "Reply", - "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", - "introduction.welcome.action": "Let's go!", - "introduction.welcome.headline": "First steps", - "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", + "introduction.federation.local.text": "Les publicacions públiques de les persones del teu mateix servidor apareixeran a la línia de temps local.", + "introduction.interactions.action": "Finalitza el tutorial!", + "introduction.interactions.favourite.headline": "Favorit", + "introduction.interactions.favourite.text": "Pots desar un toot per a més tard i deixar que l'autor sàpiga que t'ha agradat, marcant-lo com a favorit.", + "introduction.interactions.reblog.headline": "Impuls", + "introduction.interactions.reblog.text": "Pots compartir amb els teus seguidors els toots d'altres usuaris, impulsant-los.", + "introduction.interactions.reply.headline": "Respondre", + "introduction.interactions.reply.text": "Pots respondre als toots d'altres persones i als teus propis, que els unirà en una conversa.", + "introduction.welcome.action": "Som-hi!", + "introduction.welcome.headline": "Primers passos", + "introduction.welcome.text": "Benvingut al fedivers! En uns moments podràs emetre missatges i conversar amb els teus amics en una gran varietat de servidors. Però aquest servidor, {domain}, és especial: allotja el teu perfil així que recorda el seu nom.", "keyboard_shortcuts.back": "navegar enrera", "keyboard_shortcuts.blocked": "per obrir la llista d'usuaris bloquejats", "keyboard_shortcuts.boost": "impulsar", @@ -242,21 +242,42 @@ "notifications.clear_confirmation": "Estàs segur que vols esborrar permanenment totes les teves notificacions?", "notifications.column_settings.alert": "Notificacions d'escriptori", "notifications.column_settings.favourite": "Favorits:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "Mostra totes les categories", + "notifications.column_settings.filter_bar.category": "Barra ràpida de filtres", + "notifications.column_settings.filter_bar.show": "Mostra", "notifications.column_settings.follow": "Nous seguidors:", "notifications.column_settings.mention": "Mencions:", "notifications.column_settings.push": "Push notificacions", "notifications.column_settings.reblog": "Impulsos:", "notifications.column_settings.show": "Mostrar en la columna", "notifications.column_settings.sound": "Reproduïr so", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", + "notifications.filter.all": "Tots", + "notifications.filter.boosts": "Impulsos", + "notifications.filter.favourites": "Favorits", + "notifications.filter.follows": "Seguiments", + "notifications.filter.mentions": "Mencions", "notifications.group": "{count} notificacions", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Ajusta l'estat de privacitat", "privacy.direct.long": "Publicar només per als usuaris esmentats", "privacy.direct.short": "Directe", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, un {result} altres {results}}", "standalone.public_title": "Una mirada a l'interior ...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Desfer l'impuls", "status.cannot_reblog": "Aquesta publicació no pot ser retootejada", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 5d32049431..93ad713037 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Auturizà", "follow_request.reject": "Righjittà", "getting_started.developers": "Sviluppatori", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Annuariu di i prufili", "getting_started.documentation": "Documentation", "getting_started.heading": "Per principià", "getting_started.invite": "Invità ghjente", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Abbunamenti", "notifications.filter.mentions": "Minzione", "notifications.group": "{count} nutificazione", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Mudificà a cunfidenzialità di u statutu", "privacy.direct.long": "Mandà solu à quelli chì so mintuvati", "privacy.direct.short": "Direttu", @@ -292,6 +313,8 @@ "search_results.statuses": "Statuti", "search_results.total": "{count, number} {count, plural, one {risultatu} other {risultati}}", "standalone.public_title": "Una vista à l'internu...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Bluccà @{name}", "status.cancel_reblog_private": "Ùn sparte più", "status.cannot_reblog": "Stu statutu ùn pò micca esse spartutu", @@ -341,7 +364,7 @@ "upload_area.title": "Drag & drop per caricà un fugliale", "upload_button.label": "Aghjunghje un media (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Discrive per i malvistosi", - "upload_form.focus": "Riquatrà", + "upload_form.focus": "Cambià a vista", "upload_form.undo": "Sguassà", "upload_progress.label": "Caricamentu...", "video.close": "Chjudà a video", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 9058f3b0a1..5a8b14788c 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -12,7 +12,7 @@ "account.follow": "Sledovat", "account.followers": "Sledovatelé", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", - "account.follows": "Sleduje", + "account.follows": "Sledovaní", "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od uživatele @{name}", @@ -132,7 +132,7 @@ "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", "getting_started.developers": "Vývojáři", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Adresář profilů", "getting_started.documentation": "Dokumentace", "getting_started.heading": "Začínáme", "getting_started.invite": "Pozvat lidi", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Sledování", "notifications.filter.mentions": "Zmínky", "notifications.group": "{count} oznámení", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Změnit soukromí příspěvku", "privacy.direct.long": "Odeslat pouze zmíněným uživatelům", "privacy.direct.short": "Přímý", @@ -292,6 +313,8 @@ "search_results.statuses": "Tooty", "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledku} other {výsledků}}", "standalone.public_title": "Nahlédněte dovnitř...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Zablokovat uživatele @{name}", "status.cancel_reblog_private": "Zrušit boost", "status.cannot_reblog": "Tento příspěvek nemůže být boostnutý", @@ -341,7 +364,7 @@ "upload_area.title": "Přetažením nahrajete", "upload_button.label": "Přidat média (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Popis pro zrakově postižené", - "upload_form.focus": "Vystřihnout", + "upload_form.focus": "Změnit náhled", "upload_form.undo": "Smazat", "upload_progress.label": "Nahrávám...", "video.close": "Zavřít video", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index e386e7ec0f..91aeb2567e 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} o hysbysiadau", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Addasu preifatrwdd y statws", "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig", "privacy.direct.short": "Uniongyrchol", @@ -292,6 +313,8 @@ "search_results.statuses": "Tŵtiau", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "Golwg tu fewn...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Blocio @{name}", "status.cancel_reblog_private": "Dadfŵstio", "status.cannot_reblog": "Ni ellir sbarduno'r tŵt hwn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 3f350d9f90..de4862339e 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -149,7 +149,7 @@ "home.column_settings.basic": "Grundlæggende", "home.column_settings.show_reblogs": "Vis fremhævelser", "home.column_settings.show_replies": "Vis svar", - "introduction.federation.action": "Next", + "introduction.federation.action": "Næste", "introduction.federation.federated.headline": "Federated", "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", "introduction.federation.home.headline": "Home", @@ -251,12 +251,33 @@ "notifications.column_settings.reblog": "Fremhævelser:", "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Afspil lyd", - "notifications.filter.all": "All", + "notifications.filter.all": "Alle", "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", + "notifications.filter.favourites": "Favoritter", + "notifications.filter.follows": "Følger", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifikationer", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Ændre status privatliv", "privacy.direct.long": "Post til kun de nævnte brugere", "privacy.direct.short": "Direkte", @@ -292,6 +313,8 @@ "search_results.statuses": "Trut", "search_results.total": "{count, number} {count, plural, et {result} andre {results}}", "standalone.public_title": "Et kig indenfor...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Bloker @{name}", "status.cancel_reblog_private": "Fremhæv ikke længere", "status.cannot_reblog": "Denne post kan ikke fremhæves", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 73c779646a..5cbc9623a3 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", "getting_started.developers": "Entwickler", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Profilverzeichnis", "getting_started.documentation": "Dokumentation", "getting_started.heading": "Erste Schritte", "getting_started.invite": "Leute einladen", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Erwähnungen", "notifications.group": "{count} Benachrichtigungen", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Sichtbarkeit des Beitrags anpassen", "privacy.direct.long": "Beitrag nur an erwähnte Profile", "privacy.direct.short": "Direkt", @@ -292,6 +313,8 @@ "search_results.statuses": "Beiträge", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", "standalone.public_title": "Ein kleiner Einblick …", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Blockiere @{name}", "status.cancel_reblog_private": "Nicht mehr teilen", "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden", @@ -341,7 +364,7 @@ "upload_area.title": "Zum Hochladen hereinziehen", "upload_button.label": "Mediendatei hinzufügen (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben", - "upload_form.focus": "Zuschneiden", + "upload_form.focus": "Thumbnail bearbeiten", "upload_form.undo": "Löschen", "upload_progress.label": "Wird hochgeladen …", "video.close": "Video schließen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 0d66a37068..d1ca496266 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -302,6 +302,14 @@ { "defaultMessage": "Embed", "id": "status.embed" + }, + { + "defaultMessage": "Open moderation interface for @{name}", + "id": "status.admin_account" + }, + { + "defaultMessage": "Open this status in the moderation interface", + "id": "status.admin_status" } ], "path": "app/javascript/mastodon/components/status_action_bar.json" @@ -594,6 +602,10 @@ "defaultMessage": "Add or Remove from lists", "id": "account.add_or_remove_from_list" }, + { + "defaultMessage": "Open moderation interface for @{name}", + "id": "status.admin_account" + }, { "defaultMessage": "Information below may reflect the user's profile incompletely.", "id": "account.disclaimer_full" @@ -1926,6 +1938,14 @@ { "defaultMessage": "Embed", "id": "status.embed" + }, + { + "defaultMessage": "Open moderation interface for @{name}", + "id": "status.admin_account" + }, + { + "defaultMessage": "Open this status in the moderation interface", + "id": "status.admin_status" } ], "path": "app/javascript/mastodon/features/status/components/action_bar.json" @@ -2099,6 +2119,111 @@ ], "path": "app/javascript/mastodon/features/ui/components/mute_modal.json" }, + { + "descriptors": [ + { + "defaultMessage": "Home", + "id": "column.home" + }, + { + "defaultMessage": "Notifications", + "id": "column.notifications" + }, + { + "defaultMessage": "Local timeline", + "id": "column.community" + }, + { + "defaultMessage": "Federated timeline", + "id": "column.public" + }, + { + "defaultMessage": "Welcome to Mastodon!", + "id": "onboarding.page_one.welcome" + }, + { + "defaultMessage": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "id": "onboarding.page_one.federation" + }, + { + "defaultMessage": "Your full handle", + "id": "onboarding.page_one.full_handle" + }, + { + "defaultMessage": "This is what you would tell your friends to search for.", + "id": "onboarding.page_one.handle_hint" + }, + { + "defaultMessage": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "id": "onboarding.page_two.compose" + }, + { + "defaultMessage": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "id": "onboarding.page_three.search" + }, + { + "defaultMessage": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "id": "onboarding.page_three.profile" + }, + { + "defaultMessage": "The home timeline shows posts from people you follow.", + "id": "onboarding.page_four.home" + }, + { + "defaultMessage": "The notifications column shows when someone interacts with you.", + "id": "onboarding.page_four.notifications" + }, + { + "defaultMessage": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "id": "onboarding.page_five.public_timelines" + }, + { + "defaultMessage": "Your instance's admin is {admin}.", + "id": "onboarding.page_six.admin" + }, + { + "defaultMessage": "Please read {domain}'s {guidelines}!", + "id": "onboarding.page_six.read_guidelines" + }, + { + "defaultMessage": "community guidelines", + "id": "onboarding.page_six.guidelines" + }, + { + "defaultMessage": "Almost done...", + "id": "onboarding.page_six.almost_done" + }, + { + "defaultMessage": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "id": "onboarding.page_six.github" + }, + { + "defaultMessage": "There are {apps} available for iOS, Android and other platforms.", + "id": "onboarding.page_six.apps_available" + }, + { + "defaultMessage": "mobile apps", + "id": "onboarding.page_six.various_app" + }, + { + "defaultMessage": "Bon Appetoot!", + "id": "onboarding.page_six.appetoot" + }, + { + "defaultMessage": "Next", + "id": "onboarding.next" + }, + { + "defaultMessage": "Done", + "id": "onboarding.done" + }, + { + "defaultMessage": "Skip", + "id": "onboarding.skip" + } + ], + "path": "app/javascript/mastodon/features/ui/components/onboarding_modal.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 5aca43c281..aad9544715 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Ενέκρινε", "follow_request.reject": "Απέρριψε", "getting_started.developers": "Ανάπτυξη", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Κατάλογος λογαριασμών", "getting_started.documentation": "Τεκμηρίωση", "getting_started.heading": "Αφετηρία", "getting_started.invite": "Προσκάλεσε κόσμο", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Ακόλουθοι", "notifications.filter.mentions": "Αναφορές", "notifications.group": "{count} ειδοποιήσεις", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης", "privacy.direct.long": "Δημοσίευση μόνο σε όσους και όσες αναφέρονται", "privacy.direct.short": "Προσωπικά", @@ -292,6 +313,8 @@ "search_results.statuses": "Τουτ", "search_results.total": "{count, number} {count, plural, ένα {result} υπόλοιπα {results}}", "standalone.public_title": "Μια πρώτη γεύση...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Αποκλεισμός @{name}", "status.cancel_reblog_private": "Ακύρωσε την προώθηση", "status.cannot_reblog": "Αυτή η δημοσίευση δεν μπορεί να προωθηθεί", @@ -341,7 +364,7 @@ "upload_area.title": "Drag & drop για να ανεβάσεις", "upload_button.label": "Πρόσθεσε πολυμέσα (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης", - "upload_form.focus": "Περικοπή", + "upload_form.focus": "Αλλαγή προεπισκόπησης", "upload_form.undo": "Διαγραφή", "upload_progress.label": "Ανεβαίνει...", "video.close": "Κλείσε το βίντεο", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index f92d5688c3..115ad5679e 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 5332ab874a..928731e242 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} sciigoj", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Agordi mesaĝan privatecon", "privacy.direct.long": "Afiŝi nur al menciitaj uzantoj", "privacy.direct.short": "Rekta", @@ -292,6 +313,8 @@ "search_results.statuses": "Mesaĝoj", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}", "standalone.public_title": "Enrigardo…", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Bloki @{name}", "status.cancel_reblog_private": "Eksdiskonigi", "status.cannot_reblog": "Ĉi tiu mesaĝo ne diskonigeblas", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index e3c267b402..8e5648638e 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notificaciones", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", "privacy.direct.short": "Directo", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "standalone.public_title": "Un pequeño vistazo...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Des-impulsar", "status.cannot_reblog": "Este toot no puede retootearse", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index b882ae2a7f..0f9d8c50f6 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "getting_started.developers": "Garatzaileak", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Profil-direktorioa", "getting_started.documentation": "Dokumentazioa", "getting_started.heading": "Menua", "getting_started.invite": "Gonbidatu jendea", @@ -149,23 +149,23 @@ "home.column_settings.basic": "Oinarrizkoa", "home.column_settings.show_reblogs": "Erakutsi bultzadak", "home.column_settings.show_replies": "Erakutsi erantzunak", - "introduction.federation.action": "Next", + "introduction.federation.action": "Hurrengoa", "introduction.federation.federated.headline": "Federated", - "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", + "introduction.federation.federated.text": "Fedibertsoko beste zerbitzarietako bidalketa publikoak federatutako denbora-lerroan agertuko dira.", "introduction.federation.home.headline": "Home", - "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.home.text": "Jarraitzen dituzun horien mezuak zure hasierako jarioan agertuko dira. Edozein zerbitzariko edonor jarraitu dezakezu!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", - "introduction.interactions.action": "Finish tutorial!", - "introduction.interactions.favourite.headline": "Favourite", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", - "introduction.interactions.reblog.headline": "Boost", - "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", - "introduction.interactions.reply.headline": "Reply", - "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", - "introduction.welcome.action": "Let's go!", - "introduction.welcome.headline": "First steps", - "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", + "introduction.federation.local.text": "Zure zerbitzari berean dauden horien mezu publikoak denbora-lerro lokalean agertuko dira.", + "introduction.interactions.action": "Amaitu tutoriala!", + "introduction.interactions.favourite.headline": "Gogokoa", + "introduction.interactions.favourite.text": "Toot bat geroko gorde dezakezu, eta egileari gustukoa duzula jakinarazi, hau gogoko bihurtuz.", + "introduction.interactions.reblog.headline": "Bultzada", + "introduction.interactions.reblog.text": "Beste batzuen mezuak partekatu ditzakezu zure jarraitzaileekin hauei bultzada emanez.", + "introduction.interactions.reply.headline": "Erantzun", + "introduction.interactions.reply.text": "Besteen mezuei eta zure mezuei ere erantzun diezaiekezu, eta elkarrizketa batean lotuta agertuko dira.", + "introduction.welcome.action": "Goazen!", + "introduction.welcome.headline": "Lehen urratsak", + "introduction.welcome.text": "Ongi etorri fedibertsora! Hemendik gutxira hainbat zerbitzarietan zehar mezuak zabaldu eta lagunekin hitz egin ahal izango duzu. Baina zerbitzari hau hainbat zerbitzarietan zehar. berezia da, hau da zure profila ostatatzen duena, ez ahaztu bere izena.", "keyboard_shortcuts.back": "atzera nabigatzeko", "keyboard_shortcuts.blocked": "blokeatutako erabiltzaileen zerrenda irekitzeko", "keyboard_shortcuts.boost": "bultzada ematea", @@ -242,21 +242,42 @@ "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?", "notifications.column_settings.alert": "Mahaigaineko jakinarazpenak", "notifications.column_settings.favourite": "Gogokoak:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "Erakutsi kategoria guztiak", + "notifications.column_settings.filter_bar.category": "Iragazki azkarraren barra", + "notifications.column_settings.filter_bar.show": "Erakutsi", "notifications.column_settings.follow": "Jarraitzaile berriak:", "notifications.column_settings.mention": "Aipamenak:", "notifications.column_settings.push": "Push jakinarazpenak", "notifications.column_settings.reblog": "Bultzadak:", "notifications.column_settings.show": "Erakutsi zutabean", "notifications.column_settings.sound": "Jo soinua", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", + "notifications.filter.all": "Denak", + "notifications.filter.boosts": "Bultzadak", + "notifications.filter.favourites": "Gogokoak", + "notifications.filter.follows": "Jarraipenak", + "notifications.filter.mentions": "Aipamenak", "notifications.group": "{count} jakinarazpen", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Doitu mezuaren pribatutasuna", "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez", "privacy.direct.short": "Zuzena", @@ -292,6 +313,8 @@ "search_results.statuses": "Toot-ak", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "Begiradatxo bat...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Kendu bultzada", "status.cannot_reblog": "Mezu honi ezin zaio bultzada eman", @@ -341,7 +364,7 @@ "upload_area.title": "Arrastatu eta jaregin igotzeko", "upload_button.label": "Gehitu multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat", - "upload_form.focus": "Moztu", + "upload_form.focus": "Aldatu aurrebista", "upload_form.undo": "Ezabatu", "upload_progress.label": "Igotzen...", "video.close": "Itxi bideoa", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index e2790d8b69..ae561f3720 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} اعلان", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "تنظیم حریم خصوصی نوشته‌ها", "privacy.direct.long": "تنها به کاربران نام‌برده‌شده نشان بده", "privacy.direct.short": "مستقیم", @@ -292,6 +313,8 @@ "search_results.statuses": "بوق‌ها", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", "standalone.public_title": "نگاهی به کاربران این سرور...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "مسدودسازی @{name}", "status.cancel_reblog_private": "حذف بازبوق", "status.cannot_reblog": "این نوشته را نمی‌شود بازبوقید", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 84638af35e..08bcdfea8d 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Säädä tuuttauksen näkyvyyttä", "privacy.direct.long": "Julkaise vain mainituille käyttäjille", "privacy.direct.short": "Suora viesti", @@ -292,6 +313,8 @@ "search_results.statuses": "Tuuttaukset", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "Kurkistus sisälle...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Estä @{name}", "status.cancel_reblog_private": "Peru buustaus", "status.cannot_reblog": "Tätä julkaisua ei voi buustata", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index c0bd047ce4..8098790dd9 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Accepter", "follow_request.reject": "Rejeter", "getting_started.developers": "Développeurs", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Annuaire des profils", "getting_started.documentation": "Documentation", "getting_started.heading": "Pour commencer", "getting_started.invite": "Inviter des gens", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Suiveurs", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Ajuster la confidentialité du message", "privacy.direct.long": "N’envoyer qu’aux personnes mentionnées", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Pouets", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", "standalone.public_title": "Un aperçu …", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Dé-booster", "status.cannot_reblog": "Cette publication ne peut être boostée", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 3ffa8ac328..11129ed488 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Seguimentos", "notifications.filter.mentions": "Mencións", "notifications.group": "{count} notificacións", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Axustar a intimidade do estado", "privacy.direct.long": "Enviar exclusivamente as usuarias mencionadas", "privacy.direct.short": "Directa", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count,plural,one {result} outros {results}}", "standalone.public_title": "Ollada dentro...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Non promover", "status.cannot_reblog": "Esta mensaxe non pode ser promovida", @@ -341,7 +364,7 @@ "upload_area.title": "Arrastre e solte para subir", "upload_button.label": "Engadir medios (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Describa para deficientes visuais", - "upload_form.focus": "Recortar", + "upload_form.focus": "Cambiar vista previa", "upload_form.undo": "Eliminar", "upload_progress.label": "Subindo...", "video.close": "Pechar video", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index d0fd75e5f6..64cf778b5c 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "שינוי פרטיות ההודעה", "privacy.direct.long": "הצג רק למי שהודעה זו פונה אליו", "privacy.direct.short": "הודעה ישירה", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", "standalone.public_title": "הצצה פנימה...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "לא ניתן להדהד הודעה זו", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index b5685a9a0d..3479ceae2e 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Podesi status privatnosti", "privacy.direct.long": "Prikaži samo spomenutim korisnicima", "privacy.direct.short": "Direktno", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Ovaj post ne može biti boostan", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index b87dcd597c..973fa0da83 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Státusz láthatóságának módosítása", "privacy.direct.long": "Posztolás csak az említett felhasználóknak", "privacy.direct.short": "Egyenesen", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "Betekintés...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Ezen státusz nem rebloggolható", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 2fb96cbf33..bc180410ba 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Կարգավորել թթի գաղտնիությունը", "privacy.direct.long": "Թթել միայն նշված օգտատերերի համար", "privacy.direct.short": "Հասցեագրված", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "Այս պահին…", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Արգելափակել @{name}֊ին", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Այս թութը չի կարող տարածվել", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 81fdbc7116..2dad3dc9ef 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Tentukan privasi status", "privacy.direct.long": "Kirim hanya ke pengguna yang disebut", "privacy.direct.short": "Langsung", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index e51b074ae5..00b97c294b 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Aranjar privateso di mesaji", "privacy.direct.long": "Sendar nur a mencionata uzeri", "privacy.direct.short": "Direte", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index b1208f3828..265491347a 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", "getting_started.developers": "Sviluppatori", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory del profilo", "getting_started.documentation": "Documentazione", "getting_started.heading": "Come iniziare", "getting_started.invite": "Invita qualcuno", @@ -149,23 +149,23 @@ "home.column_settings.basic": "Semplice", "home.column_settings.show_reblogs": "Mostra post condivisi", "home.column_settings.show_replies": "Mostra risposte", - "introduction.federation.action": "Next", + "introduction.federation.action": "Avanti", "introduction.federation.federated.headline": "Federated", - "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", + "introduction.federation.federated.text": "I post pubblici provenienti da altri server del fediverse saranno mostrati nella timeline federata.", "introduction.federation.home.headline": "Home", - "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.home.text": "I post scritti da persone che segui saranno mostrati nella timeline home. Puoi seguire chiunque su qualunque server!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", - "introduction.interactions.action": "Finish tutorial!", - "introduction.interactions.favourite.headline": "Favourite", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", - "introduction.interactions.reblog.headline": "Boost", - "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", - "introduction.interactions.reply.headline": "Reply", - "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", - "introduction.welcome.action": "Let's go!", - "introduction.welcome.headline": "First steps", - "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", + "introduction.federation.local.text": "I post pubblici scritti da persone sul tuo stesso server saranno mostrati nella timeline locale.", + "introduction.interactions.action": "Finisci il tutorial!", + "introduction.interactions.favourite.headline": "Apprezza", + "introduction.interactions.favourite.text": "Puoi salvare un toot e tenerlo per dopo, e far sapere all'autore che ti è piaciuto, segnandolo come apprezzato.", + "introduction.interactions.reblog.headline": "Condividi", + "introduction.interactions.reblog.text": "Con la condivisione puoi segnalare i toot di altre persone ai tuoi seguaci .", + "introduction.interactions.reply.headline": "Rispondi", + "introduction.interactions.reply.text": "Puoi rispondere ai toot, sia a quelli di altri sia ai tuoi, e i toot saranno collegati a formare una conversazione.", + "introduction.welcome.action": "Andiamo!", + "introduction.welcome.headline": "Primi passi", + "introduction.welcome.text": "Benvenuto/a nel fediverse! Tra poco potrai inviare messaggi e parlare con i tuoi amici su una grande varietà di server. Ma questo server, {domain}, è speciale: ospita il tuo profilo, quindi ricordati il suo nome.", "keyboard_shortcuts.back": "per tornare indietro", "keyboard_shortcuts.blocked": "per aprire l'elenco degli utenti bloccati", "keyboard_shortcuts.boost": "per condividere", @@ -242,21 +242,42 @@ "notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?", "notifications.column_settings.alert": "Notifiche desktop", "notifications.column_settings.favourite": "Apprezzati:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "Mostra tutte le categorie", + "notifications.column_settings.filter_bar.category": "Filtro rapido", + "notifications.column_settings.filter_bar.show": "Mostra", "notifications.column_settings.follow": "Nuovi seguaci:", "notifications.column_settings.mention": "Menzioni:", "notifications.column_settings.push": "Notifiche push", "notifications.column_settings.reblog": "Post condivisi:", "notifications.column_settings.show": "Mostra in colonna", "notifications.column_settings.sound": "Riproduci suono", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", + "notifications.filter.all": "Tutti", + "notifications.filter.boosts": "Condivisioni", + "notifications.filter.favourites": "Apprezzati", + "notifications.filter.follows": "Seguaci", + "notifications.filter.mentions": "Menzioni", "notifications.group": "{count} notifiche", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Modifica privacy del post", "privacy.direct.long": "Invia solo a utenti menzionati", "privacy.direct.short": "Diretto", @@ -292,6 +313,8 @@ "search_results.statuses": "Toot", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", "standalone.public_title": "Un'occhiata all'interno...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Annulla condivisione", "status.cannot_reblog": "Questo post non può essere condiviso", @@ -341,7 +364,7 @@ "upload_area.title": "Trascina per caricare", "upload_button.label": "Aggiungi file multimediale", "upload_form.description": "Descrizione per utenti con disabilità visive", - "upload_form.focus": "Rifila", + "upload_form.focus": "Modifica anteprima", "upload_form.undo": "Cancella", "upload_progress.label": "Sto caricando...", "video.close": "Chiudi video", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 4796581b92..db2df61a73 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "フォロー", "notifications.filter.mentions": "返信", "notifications.group": "{count} 件の通知", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "投稿のプライバシーを変更", "privacy.direct.long": "メンションしたユーザーだけに公開", "privacy.direct.short": "ダイレクト", @@ -292,6 +313,8 @@ "search_results.statuses": "トゥート", "search_results.total": "{count, number}件の結果", "standalone.public_title": "今こんな話をしています...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name}さんをブロック", "status.cancel_reblog_private": "ブースト解除", "status.cannot_reblog": "この投稿はブーストできません", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 8a019a4762..9ae97cbb68 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} შეტყობინება", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "სტატუსის კონფიდენციალურობის მითითება", "privacy.direct.long": "დაიპოსტოს მხოლოდ დასახელებულ მომხმარებლებთან", "privacy.direct.short": "პირდაპირი", @@ -292,6 +313,8 @@ "search_results.statuses": "ტუტები", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "შიდა ხედი...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "დაბლოკე @{name}", "status.cancel_reblog_private": "ბუსტის მოშორება", "status.cannot_reblog": "ეს პოსტი ვერ დაიბუსტება", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 834e037a73..c828557b7d 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -132,7 +132,7 @@ "follow_request.authorize": "허가", "follow_request.reject": "거부", "getting_started.developers": "개발자", - "getting_started.directory": "Profile directory", + "getting_started.directory": "프로필 디렉터리", "getting_started.documentation": "문서", "getting_started.heading": "시작", "getting_started.invite": "초대", @@ -257,6 +257,27 @@ "notifications.filter.follows": "팔로우", "notifications.filter.mentions": "멘션", "notifications.group": "{count} 개의 알림", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "포스트의 프라이버시 설정을 변경", "privacy.direct.long": "멘션한 사용자에게만 공개", "privacy.direct.short": "다이렉트", @@ -292,6 +313,8 @@ "search_results.statuses": "툿", "search_results.total": "{count, number}건의 결과", "standalone.public_title": "지금 이런 이야기를 하고 있습니다…", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name} 차단", "status.cancel_reblog_private": "부스트 취소", "status.cannot_reblog": "이 포스트는 부스트 할 수 없습니다", @@ -341,7 +364,7 @@ "upload_area.title": "드래그 & 드롭으로 업로드", "upload_button.label": "미디어 추가 (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "시각장애인을 위한 설명", - "upload_form.focus": "크롭", + "upload_form.focus": "미리보기 변경", "upload_form.undo": "삭제", "upload_progress.label": "업로드 중...", "video.close": "동영상 닫기", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json new file mode 100644 index 0000000000..869ebd6561 --- /dev/null +++ b/app/javascript/mastodon/locales/lv.json @@ -0,0 +1,379 @@ +{ + "account.add_or_remove_from_list": "Add or Remove from lists", + "account.badges.bot": "Bot", + "account.block": "Block @{name}", + "account.block_domain": "Hide everything from {domain}", + "account.blocked": "Blocked", + "account.direct": "Direct message @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.domain_blocked": "Domain hidden", + "account.edit_profile": "Edit profile", + "account.endorse": "Feature on profile", + "account.follow": "Follow", + "account.followers": "Followers", + "account.followers.empty": "No one follows this user yet.", + "account.follows": "Follows", + "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Follows you", + "account.hide_reblogs": "Hide boosts from @{name}", + "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.media": "Media", + "account.mention": "Mention @{name}", + "account.moved_to": "{name} has moved to:", + "account.mute": "Mute @{name}", + "account.mute_notifications": "Mute notifications from @{name}", + "account.muted": "Muted", + "account.posts": "Toots", + "account.posts_with_replies": "Toots and replies", + "account.report": "Report @{name}", + "account.requested": "Awaiting approval. Click to cancel follow request", + "account.share": "Share @{name}'s profile", + "account.show_reblogs": "Show boosts from @{name}", + "account.unblock": "Unblock @{name}", + "account.unblock_domain": "Unhide {domain}", + "account.unendorse": "Don't feature on profile", + "account.unfollow": "Unfollow", + "account.unmute": "Unmute @{name}", + "account.unmute_notifications": "Unmute notifications from @{name}", + "account.view_full_profile": "View full profile", + "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.title": "Oops!", + "boost_modal.combo": "You can press {combo} to skip this next time", + "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.retry": "Try again", + "bundle_column_error.title": "Network error", + "bundle_modal_error.close": "Close", + "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.retry": "Try again", + "column.blocks": "Blocked users", + "column.community": "Local timeline", + "column.direct": "Direct messages", + "column.domain_blocks": "Hidden domains", + "column.favourites": "Favourites", + "column.follow_requests": "Follow requests", + "column.home": "Home", + "column.lists": "Lists", + "column.mutes": "Muted users", + "column.notifications": "Notifications", + "column.pins": "Pinned toot", + "column.public": "Federated timeline", + "column_back_button.label": "Back", + "column_header.hide_settings": "Hide settings", + "column_header.moveLeft_settings": "Move column to the left", + "column_header.moveRight_settings": "Move column to the right", + "column_header.pin": "Pin", + "column_header.show_settings": "Show settings", + "column_header.unpin": "Unpin", + "column_subheading.settings": "Settings", + "community.column_settings.media_only": "Media Only", + "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", + "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer.lock": "locked", + "compose_form.placeholder": "What is on your mind?", + "compose_form.publish": "Toot", + "compose_form.publish_loud": "{publish}!", + "compose_form.sensitive.marked": "Media is marked as sensitive", + "compose_form.sensitive.unmarked": "Media is not marked as sensitive", + "compose_form.spoiler.marked": "Text is hidden behind warning", + "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler_placeholder": "Write your warning here", + "confirmation_modal.cancel": "Cancel", + "confirmations.block.confirm": "Block", + "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.delete.confirm": "Delete", + "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.mute.confirm": "Mute", + "confirmations.mute.message": "Are you sure you want to mute {name}?", + "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.reply.confirm": "Reply", + "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", + "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Here is what it will look like:", + "emoji_button.activity": "Activity", + "emoji_button.custom": "Custom", + "emoji_button.flags": "Flags", + "emoji_button.food": "Food & Drink", + "emoji_button.label": "Insert emoji", + "emoji_button.nature": "Nature", + "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", + "emoji_button.objects": "Objects", + "emoji_button.people": "People", + "emoji_button.recent": "Frequently used", + "emoji_button.search": "Search...", + "emoji_button.search_results": "Search results", + "emoji_button.symbols": "Symbols", + "emoji_button.travel": "Travel & Places", + "empty_column.account_timeline": "No toots here!", + "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", + "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.hashtag": "There is nothing in this hashtag yet.", + "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", + "empty_column.home.public_timeline": "the public timeline", + "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", + "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", + "follow_request.authorize": "Authorize", + "follow_request.reject": "Reject", + "getting_started.developers": "Developers", + "getting_started.directory": "Profile directory", + "getting_started.documentation": "Documentation", + "getting_started.heading": "Getting started", + "getting_started.invite": "Invite people", + "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.security": "Security", + "getting_started.terms": "Terms of service", + "hashtag.column_header.tag_mode.all": "and {additional}", + "hashtag.column_header.tag_mode.any": "or {additional}", + "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.any": "Any of these", + "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "home.column_settings.basic": "Basic", + "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_replies": "Show replies", + "introduction.federation.action": "Next", + "introduction.federation.federated.headline": "Federated", + "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", + "introduction.federation.home.headline": "Home", + "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.local.headline": "Local", + "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", + "introduction.interactions.action": "Finish tutorial!", + "introduction.interactions.favourite.headline": "Favourite", + "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", + "introduction.interactions.reblog.headline": "Boost", + "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", + "introduction.interactions.reply.headline": "Reply", + "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", + "introduction.welcome.action": "Let's go!", + "introduction.welcome.headline": "First steps", + "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", + "keyboard_shortcuts.back": "to navigate back", + "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.legend": "to display this legend", + "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.mention": "to mention author", + "keyboard_shortcuts.muted": "to open muted users list", + "keyboard_shortcuts.my_profile": "to open your profile", + "keyboard_shortcuts.notifications": "to open notifications column", + "keyboard_shortcuts.pinned": "to open pinned toots list", + "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.reply": "to reply", + "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.search": "to focus search", + "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", + "keyboard_shortcuts.toot": "to start a brand new toot", + "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", + "keyboard_shortcuts.up": "to move up in the list", + "lightbox.close": "Close", + "lightbox.next": "Next", + "lightbox.previous": "Previous", + "lists.account.add": "Add to list", + "lists.account.remove": "Remove from list", + "lists.delete": "Delete list", + "lists.edit": "Edit list", + "lists.new.create": "Add list", + "lists.new.title_placeholder": "New list title", + "lists.search": "Search among people you follow", + "lists.subheading": "Your lists", + "loading_indicator.label": "Loading...", + "media_gallery.toggle_visible": "Toggle visibility", + "missing_indicator.label": "Not found", + "missing_indicator.sublabel": "This resource could not be found", + "mute_modal.hide_notifications": "Hide notifications from this user?", + "navigation_bar.apps": "Mobile apps", + "navigation_bar.blocks": "Blocked users", + "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", + "navigation_bar.discover": "Discover", + "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.favourites": "Favourites", + "navigation_bar.filters": "Muted words", + "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.info": "About this instance", + "navigation_bar.keyboard_shortcuts": "Hotkeys", + "navigation_bar.lists": "Lists", + "navigation_bar.logout": "Logout", + "navigation_bar.mutes": "Muted users", + "navigation_bar.personal": "Personal", + "navigation_bar.pins": "Pinned toots", + "navigation_bar.preferences": "Preferences", + "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.security": "Security", + "notification.favourite": "{name} favourited your status", + "notification.follow": "{name} followed you", + "notification.mention": "{name} mentioned you", + "notification.reblog": "{name} boosted your status", + "notifications.clear": "Clear notifications", + "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.alert": "Desktop notifications", + "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.filter_bar.advanced": "Display all categories", + "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.follow": "New followers:", + "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.show": "Show in column", + "notifications.column_settings.sound": "Play sound", + "notifications.filter.all": "All", + "notifications.filter.boosts": "Boosts", + "notifications.filter.favourites": "Favourites", + "notifications.filter.follows": "Follows", + "notifications.filter.mentions": "Mentions", + "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "privacy.change": "Adjust status privacy", + "privacy.direct.long": "Post to mentioned users only", + "privacy.direct.short": "Direct", + "privacy.private.long": "Post to followers only", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Post to public timelines", + "privacy.public.short": "Public", + "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.short": "Unlisted", + "regeneration_indicator.label": "Loading…", + "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "relative_time.days": "{number}d", + "relative_time.hours": "{number}h", + "relative_time.just_now": "now", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "reply_indicator.cancel": "Cancel", + "report.forward": "Forward to {target}", + "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "report.placeholder": "Additional comments", + "report.submit": "Submit", + "report.target": "Report {target}", + "search.placeholder": "Search", + "search_popout.search_format": "Advanced search format", + "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "search_results.accounts": "People", + "search_results.hashtags": "Hashtags", + "search_results.statuses": "Toots", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", + "status.block": "Block @{name}", + "status.cancel_reblog_private": "Unboost", + "status.cannot_reblog": "This post cannot be boosted", + "status.delete": "Delete", + "status.detailed_status": "Detailed conversation view", + "status.direct": "Direct message @{name}", + "status.embed": "Embed", + "status.favourite": "Favourite", + "status.filtered": "Filtered", + "status.load_more": "Load more", + "status.media_hidden": "Media hidden", + "status.mention": "Mention @{name}", + "status.more": "More", + "status.mute": "Mute @{name}", + "status.mute_conversation": "Mute conversation", + "status.open": "Expand this status", + "status.pin": "Pin on profile", + "status.pinned": "Pinned toot", + "status.read_more": "Read more", + "status.reblog": "Boost", + "status.reblog_private": "Boost to original audience", + "status.reblogged_by": "{name} boosted", + "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", + "status.redraft": "Delete & re-draft", + "status.reply": "Reply", + "status.replyAll": "Reply to thread", + "status.report": "Report @{name}", + "status.sensitive_toggle": "Click to view", + "status.sensitive_warning": "Sensitive content", + "status.share": "Share", + "status.show_less": "Show less", + "status.show_less_all": "Show less for all", + "status.show_more": "Show more", + "status.show_more_all": "Show more for all", + "status.show_thread": "Show thread", + "status.unmute_conversation": "Unmute conversation", + "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Federated", + "tabs_bar.home": "Home", + "tabs_bar.local_timeline": "Local", + "tabs_bar.notifications": "Notifications", + "tabs_bar.search": "Search", + "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking", + "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "upload_area.title": "Drag & drop to upload", + "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)", + "upload_form.description": "Describe for the visually impaired", + "upload_form.focus": "Crop", + "upload_form.undo": "Delete", + "upload_progress.label": "Uploading...", + "video.close": "Close video", + "video.exit_fullscreen": "Exit full screen", + "video.expand": "Expand video", + "video.fullscreen": "Full screen", + "video.hide": "Hide video", + "video.mute": "Mute sound", + "video.pause": "Pause", + "video.play": "Play", + "video.unmute": "Unmute sound" +} diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 9e613ce597..869ebd6561 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index d8189d45f2..e98ce725d1 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afkeuren", "getting_started.developers": "Ontwikkelaars", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Gebruikersgids", "getting_started.documentation": "Documentatie", "getting_started.heading": "Aan de slag", "getting_started.invite": "Mensen uitnodigen", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Die jij volgt", "notifications.filter.mentions": "Vermeldingen", "notifications.group": "{count} meldingen", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Zichtbaarheid toot aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", "standalone.public_title": "Een kijkje binnenin...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Blokkeer @{name}", "status.cancel_reblog_private": "Niet langer boosten", "status.cannot_reblog": "Deze toot kan niet geboost worden", @@ -341,7 +364,7 @@ "upload_area.title": "Hierin slepen om te uploaden", "upload_button.label": "Media toevoegen (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking", - "upload_form.focus": "Bijsnijden", + "upload_form.focus": "Voorvertoning aanpassen", "upload_form.undo": "Verwijderen", "upload_progress.label": "Uploaden...", "video.close": "Video sluiten", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 7ffdd78a0e..7607d9c1fa 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Justér synlighet", "privacy.direct.long": "Post kun til nevnte brukere", "privacy.direct.short": "Direkte", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", "standalone.public_title": "En titt inni...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Denne posten kan ikke fremheves", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 8dca0d729c..49da66da09 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Acceptar", "follow_request.reject": "Regetar", "getting_started.developers": "Desvelopaires", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Annuari de perfils", "getting_started.documentation": "Documentacion", "getting_started.heading": "Per començar", "getting_started.invite": "Convidar de monde", @@ -242,9 +242,9 @@ "notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?", "notifications.column_settings.alert": "Notificacions localas", "notifications.column_settings.favourite": "Favorits :", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "Mostrar totas las categorias", + "notifications.column_settings.filter_bar.category": "Barra de recèrca rapida", + "notifications.column_settings.filter_bar.show": "Mostrar", "notifications.column_settings.follow": "Nòus seguidors :", "notifications.column_settings.mention": "Mencions :", "notifications.column_settings.push": "Notificacions", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Seguiments", "notifications.filter.mentions": "Mencions", "notifications.group": "{count} notificacions", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Ajustar la confidencialitat del messatge", "privacy.direct.long": "Mostrar pas qu’a las personas mencionadas", "privacy.direct.short": "Dirècte", @@ -292,6 +313,8 @@ "search_results.statuses": "Tuts", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", "standalone.public_title": "Una ulhada dedins…", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Blocar @{name}", "status.cancel_reblog_private": "Quitar de partejar", "status.cannot_reblog": "Aqueste estatut pòt pas èsser partejat", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 0210ec10f5..ca518a7605 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Śledzenia", "notifications.filter.mentions": "Wspomienia", "notifications.group": "{count, number} {count, plural, one {powiadomienie} few {powiadomienia} many {powiadomień} more {powiadomień}}", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Dostosuj widoczność wpisów", "privacy.direct.long": "Widoczny tylko dla wspomnianych", "privacy.direct.short": "Bezpośrednio", @@ -292,6 +313,8 @@ "search_results.statuses": "Wpisy", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} more {wyników}}", "standalone.public_title": "Spojrzenie w głąb…", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Zablokuj @{name}", "status.cancel_reblog_private": "Cofnij podbicie", "status.cannot_reblog": "Ten wpis nie może zostać podbity", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 0efcad486f..b0ae94ef53 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -132,7 +132,7 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "getting_started.developers": "Desenvolvedores", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Diretório de perfis", "getting_started.documentation": "Documentação", "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convide pessoas", @@ -149,23 +149,23 @@ "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar compartilhamentos", "home.column_settings.show_replies": "Mostrar as respostas", - "introduction.federation.action": "Next", + "introduction.federation.action": "Próximo", "introduction.federation.federated.headline": "Federated", - "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", + "introduction.federation.federated.text": "Posts públicos de outros servidores do fediverso vão aparecer na timeline global.", "introduction.federation.home.headline": "Home", - "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.home.text": "Posts de pessoas que você segue vão aparecer na sua página inicial. Você pode seguir pessoas de qualquer servidor!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", - "introduction.interactions.action": "Finish tutorial!", - "introduction.interactions.favourite.headline": "Favourite", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", - "introduction.interactions.reblog.headline": "Boost", - "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", - "introduction.interactions.reply.headline": "Reply", - "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", - "introduction.welcome.action": "Let's go!", - "introduction.welcome.headline": "First steps", - "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", + "introduction.federation.local.text": "Posts públicos de pessoas no mesmo servidor que você vão aparecer na timeline local.", + "introduction.interactions.action": "Finalizar o tutorial!", + "introduction.interactions.favourite.headline": "Favoritos", + "introduction.interactions.favourite.text": "Você pode salvar um toot pra mais tarde, e deixar a pessoa que postou saber que você gostou, favoritando-o.", + "introduction.interactions.reblog.headline": "Compartilhamento", + "introduction.interactions.reblog.text": "Você pode mostrar toots de outras pessoas aos seus seguidores compartilhando.", + "introduction.interactions.reply.headline": "Responder", + "introduction.interactions.reply.text": "Você pode responder a toots de outras pessoas e aos seus, e isso vai uni-los em uma conversa.", + "introduction.welcome.action": "Vamos!", + "introduction.welcome.headline": "Primeiros passos", + "introduction.welcome.text": "Boas vindas ao fediverso! Em alguns momentos, você vai poder transmitir mensagens e falar com pessoas amigas através de uma variedade de servidores. Mas esse servidor, {domain}, é especial—é onde o seu perfil está hospedado, então lembre do nome.", "keyboard_shortcuts.back": "para navegar de volta", "keyboard_shortcuts.blocked": "para abrir a lista de usuários bloqueados", "keyboard_shortcuts.boost": "para compartilhar", @@ -242,21 +242,42 @@ "notifications.clear_confirmation": "Você tem certeza de que quer limpar todas as suas notificações permanentemente?", "notifications.column_settings.alert": "Notificações no computador", "notifications.column_settings.favourite": "Favoritos:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias", + "notifications.column_settings.filter_bar.category": "Barra de filtro rápido", + "notifications.column_settings.filter_bar.show": "Mostrar", "notifications.column_settings.follow": "Novos seguidores:", "notifications.column_settings.mention": "Menções:", "notifications.column_settings.push": "Enviar notificações", "notifications.column_settings.reblog": "Compartilhamento:", "notifications.column_settings.show": "Mostrar nas colunas", "notifications.column_settings.sound": "Reproduzir som", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", + "notifications.filter.all": "Tudo", + "notifications.filter.boosts": "Compartilhamentos", + "notifications.filter.favourites": "Favoritos", + "notifications.filter.follows": "Seguidores", + "notifications.filter.mentions": "Menções", "notifications.group": "{count} notificações", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Ajustar a privacidade da mensagem", "privacy.direct.long": "Apenas para usuários mencionados", "privacy.direct.short": "Direta", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "standalone.public_title": "Dê uma espiada...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Desfazer compartilhamento", "status.cannot_reblog": "Esta postagem não pode ser compartilhada", diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json index 049a8901a3..5609f0355e 100644 --- a/app/javascript/mastodon/locales/pt.json +++ b/app/javascript/mastodon/locales/pt.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Ajustar a privacidade da mensagem", "privacy.direct.long": "Apenas para utilizadores mencionados", "privacy.direct.short": "Directo", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "standalone.public_title": "Espreitar lá dentro...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Este post não pode ser partilhado", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 211f2e6607..c658d0dc7b 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -1,23 +1,23 @@ { - "account.add_or_remove_from_list": "Add or Remove from lists", + "account.add_or_remove_from_list": "Adaugă sau Elimină din liste", "account.badges.bot": "Bot", "account.block": "Blochează @{name}", "account.block_domain": "Ascunde tot de la {domain}", "account.blocked": "Blocat", "account.direct": "Mesaj direct @{name}", - "account.disclaimer_full": "Informațiile de mai jos pot reflecta profilul incomplet al utilizatorului.", + "account.disclaimer_full": "Informațiile de mai jos pot reflecta profilul utilizatorului incomplet.", "account.domain_blocked": "Domeniu ascuns", "account.edit_profile": "Editează profilul", "account.endorse": "Redistribuie pe profil", "account.follow": "Urmărește", "account.followers": "Urmăritori", - "account.followers.empty": "Nimeni nu urmărește acest utilizator incă.", + "account.followers.empty": "Acest utilizator nu are încă urmăritori.", "account.follows": "Urmărește", "account.follows.empty": "Acest utilizator nu urmărește pe nimeni incă.", "account.follows_you": "Te urmărește", "account.hide_reblogs": "Ascunde redistribuirile de la @{name}", - "account.link_verified_on": "Ownership of this link was checked on {date}", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.link_verified_on": "Deținerea acestui link a fost verificată la {date}", + "account.locked_info": "Acest profil este privat. Această persoană gestioneaz manual cine o urmărește.", "account.media": "Media", "account.mention": "Menționează @{name}", "account.moved_to": "{name} a fost mutat la:", @@ -27,22 +27,22 @@ "account.posts": "Postări", "account.posts_with_replies": "Postări și replici", "account.report": "Raportează @{name}", - "account.requested": "Așteaptă aprobare. Apasă pentru a anula cererea de urmărire", + "account.requested": "Se așteaptă aprobarea. Apasă pentru a anula cererea de urmărire", "account.share": "Distribuie profilul lui @{name}", "account.show_reblogs": "Arată redistribuirile de la @{name}", "account.unblock": "Deblochează @{name}", "account.unblock_domain": "Arată {domain}", "account.unendorse": "Nu promova pe profil", "account.unfollow": "Nu mai urmări", - "account.unmute": "Pornește notificările @{name}", - "account.unmute_notifications": "Pornește notificările de la @{name}", + "account.unmute": "Activează notificările de la @{name}", + "account.unmute_notifications": "Activează notificările de la @{name}", "account.view_full_profile": "Vezi profilul complet", "alert.unexpected.message": "A apărut o eroare neașteptată.", "alert.unexpected.title": "Hopa!", - "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", + "boost_modal.combo": "Poți apăsa {combo} pentru a omite asta data viitoare", "bundle_column_error.body": "Ceva nu a funcționat la încărcarea acestui component.", "bundle_column_error.retry": "Încearcă din nou", - "bundle_column_error.title": "Eoare de rețea", + "bundle_column_error.title": "Eroare de rețea", "bundle_modal_error.close": "Închide", "bundle_modal_error.message": "Ceva nu a funcționat în timupul încărcării acestui component.", "bundle_modal_error.retry": "Încearcă din nou", @@ -70,16 +70,16 @@ "compose_form.direct_message_warning": "Această postare va fi trimisă doar utilizatorilor menționați.", "compose_form.direct_message_warning_learn_more": "Află mai multe", "compose_form.hashtag_warning": "Această postare nu va fi listată sub nici un hastag. Doar postările publice pot fi găsite dupa un hastag.", - "compose_form.lock_disclaimer": "Contul tău nu este {locked}. Toată lumea te poate urmări pentru a vedea postările doar pentru urmăritori.", + "compose_form.lock_disclaimer": "Contul tău nu este {locked}. Oricine te poate urmări fără aprobarea ta și vedea toate postările tale.", "compose_form.lock_disclaimer.lock": "privat", "compose_form.placeholder": "La ce te gândești?", "compose_form.publish": "Postează", "compose_form.publish_loud": "{publish}!", "compose_form.sensitive.marked": "Conținutul media este marcat ca sensibil", "compose_form.sensitive.unmarked": "Conținutul media nu este marcat ca sensibil", - "compose_form.spoiler.marked": "Textul este ascuns sub advertizare", + "compose_form.spoiler.marked": "Textul este ascuns sub o avertizare", "compose_form.spoiler.unmarked": "Textul nu este ascuns", - "compose_form.spoiler_placeholder": "Scrie adveritzarea aici", + "compose_form.spoiler_placeholder": "Scrie averitzarea aici", "confirmation_modal.cancel": "Anulează", "confirmations.block.confirm": "Blochează", "confirmations.block.message": "Ești sigur că vrei să blochezi {name}?", @@ -88,13 +88,13 @@ "confirmations.delete_list.confirm": "Șterge", "confirmations.delete_list.message": "Ești sigur că vrei să ștergi permanent această listă?", "confirmations.domain_block.confirm": "Ascunde tot domeniul", - "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi complet {domain}? În cele mai multe cazuri raportarea sau oprirea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea nici un conținut de la acest domeniu in nici un flux public sau în notificările tale. Urmăritorii tăi de la acele domenii vor fi retrași.", + "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi complet {domain}? În cele mai multe cazuri raportarea sau oprirea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea nici un conținut de la acest domeniu in nici un flux public sau în notificările tale. Urmăritorii tăi de la acele domenii vor fi eliminați.", "confirmations.mute.confirm": "Oprește", "confirmations.mute.message": "Ești sigur că vrei să oprești {name}?", "confirmations.redraft.confirm": "Șterge și salvează ca ciornă", "confirmations.redraft.message": "Ești sigur că vrei să faci asta? Tot ce ține de această postare, inclusiv răspunsurile vor fi deconectate.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.reply.confirm": "Răspunde", + "confirmations.reply.message": "Răspunzând la asta acum, mesajul pe care îl compui în prezent se va șterge. Ești sigur că vrei să continui?", "confirmations.unfollow.confirm": "Nu mai urmări", "confirmations.unfollow.message": "Ești sigur că nu mai vrei să îl urmărești pe {name}?", "embed.instructions": "Inserează această postare pe site-ul tău adăugând codul de mai jos.", @@ -113,15 +113,15 @@ "emoji_button.search_results": "Rezultatele căutării", "emoji_button.symbols": "Simboluri", "emoji_button.travel": "Călătorii si Locuri", - "empty_column.account_timeline": "No toots here!", + "empty_column.account_timeline": "Nici o postare aici!", "empty_column.blocks": "Nu ai blocat nici un utilizator incă.", "empty_column.community": "Fluxul local este gol. Scrie ceva public pentru a împinge bila la vale!", - "empty_column.direct": "Nu ai nici un mesaj direct incă. Când trimiți sau primești unul, vor fi afișate aici.", + "empty_column.direct": "Nu ai nici un mesaj direct incă. Când trimiți sau primești unul, va fi afișat aici.", "empty_column.domain_blocks": "Nu sunt domenii ascunse incă.", "empty_column.favourited_statuses": "Nu ai nici o postare favorită încă. Când vei avea, vor fi afișate aici.", "empty_column.favourites": "Nimeni nu are această postare adăugată la favorite. Când cineva o va face va fi afișat aici.", "empty_column.follow_requests": "Nu ai încă nici o cerere de urmărire. Când vei primi una, va fi afișată aici.", - "empty_column.hashtag": "Acest hastag nu a fost folosit încă nicăieri.", + "empty_column.hashtag": "Acest hastag nu a fost folosit încă.", "empty_column.home": "Fluxul tău este gol. Vizitează {public} sau fă o căutare pentru a începe să cunoști oameni noi.", "empty_column.home.public_timeline": "fluxul public", "empty_column.list": "Nu este nimic încă în această listă. Când membrii acestei liste vor începe să posteze, va apărea aici.", @@ -132,77 +132,77 @@ "follow_request.authorize": "Autorizează", "follow_request.reject": "Respinge", "getting_started.developers": "Dezvoltatori", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directorul profilului", "getting_started.documentation": "Documentație", "getting_started.heading": "Începe", - "getting_started.invite": "Invită oameni", + "getting_started.invite": "Invită prieteni", "getting_started.open_source_notice": "Mastodon este o rețea de socializare de tip open source. Puteți contribuii la dezvoltarea ei sau să semnalați erorile pe GitHub la {github}.", "getting_started.security": "Securitate", - "getting_started.terms": "Termenii de Utilizare", - "hashtag.column_header.tag_mode.all": "and {additional}", - "hashtag.column_header.tag_mode.any": "or {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", - "hashtag.column_settings.tag_mode.all": "All of these", - "hashtag.column_settings.tag_mode.any": "Any of these", - "hashtag.column_settings.tag_mode.none": "None of these", - "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "getting_started.terms": "Termeni de Utilizare", + "hashtag.column_header.tag_mode.all": "și {additional}", + "hashtag.column_header.tag_mode.any": "sau {additional}", + "hashtag.column_header.tag_mode.none": "fără {additional}", + "hashtag.column_settings.tag_mode.all": "Toate acestea", + "hashtag.column_settings.tag_mode.any": "Oricare din acestea", + "hashtag.column_settings.tag_mode.none": "Niciuna din aceastea", + "hashtag.column_settings.tag_toggle": "Adaugă etichete adiționale pentru această coloană", "home.column_settings.basic": "De bază", "home.column_settings.show_reblogs": "Arată redistribuirile", "home.column_settings.show_replies": "Arată răspunsurile", - "introduction.federation.action": "Next", - "introduction.federation.federated.headline": "Federated", - "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", - "introduction.federation.home.headline": "Home", - "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.action": "Următorul", + "introduction.federation.federated.headline": "Federalizat", + "introduction.federation.federated.text": "Postările publice de pe alte servere din rețea vor apărea in fluxul global.", + "introduction.federation.home.headline": "Acasă", + "introduction.federation.home.text": "Postările de la persoanele pe care le urmărești vor apărea in fluxul tău \"Acasă\". Poți urmări pe orice de pe orice server!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", - "introduction.interactions.action": "Finish tutorial!", - "introduction.interactions.favourite.headline": "Favourite", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", - "introduction.interactions.reblog.headline": "Boost", - "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", - "introduction.interactions.reply.headline": "Reply", - "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", - "introduction.welcome.action": "Let's go!", - "introduction.welcome.headline": "First steps", - "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", + "introduction.federation.local.text": "Postările publice de la persoanele de pe acest server vor apărea în fluxul local.", + "introduction.interactions.action": "Încheie ghidul!", + "introduction.interactions.favourite.headline": "Favorite", + "introduction.interactions.favourite.text": "Poți salva o postare pentru a fi citită mai târziu și poți lăsa autorul să știe că iți place adăugândo la favorite.", + "introduction.interactions.reblog.headline": "Redistribuie", + "introduction.interactions.reblog.text": "Poți împărtăși postările altora cu urmăritorii tăi redistribuindule.", + "introduction.interactions.reply.headline": "Răspunde", + "introduction.interactions.reply.text": "Poți răspunde la postările tale și alte altora, care se vor lărgii în discuții.", + "introduction.welcome.action": "Să începem!", + "introduction.welcome.headline": "Primii pași", + "introduction.welcome.text": "Bun Venit in federație! In câteva momente, vei putea să transmiți mesaje și să participi la discuții cu oameni noi intr-o varietate foarte largă de servere din întreaga lume. Dar în special acest server, {domain},găzduiește profilul tău, deci reține numele acestuia.", "keyboard_shortcuts.back": "navighează inapoi", "keyboard_shortcuts.blocked": "să deschidă lista utilizatorilor blocați", "keyboard_shortcuts.boost": "să redistribuie", "keyboard_shortcuts.column": "să focuzeze o postare in una dintre coloane", "keyboard_shortcuts.compose": "sa focuzeze zona de compunere", "keyboard_shortcuts.description": "Descriere", - "keyboard_shortcuts.direct": "sa deschida coloane de mesaje directe", - "keyboard_shortcuts.down": "sa fie mutata jos in lista", - "keyboard_shortcuts.enter": "sa deschisa status", - "keyboard_shortcuts.favourite": "sa adauge la favorite", - "keyboard_shortcuts.favourites": "sa deschida lista cu favorite", - "keyboard_shortcuts.federated": "sa deschida fluxul global", - "keyboard_shortcuts.heading": "Comenzi din tastatură", - "keyboard_shortcuts.home": "sa deschida fluxul principal", + "keyboard_shortcuts.direct": "să deschidă coloana de mesaje directe", + "keyboard_shortcuts.down": "să fie mutată jos in lista", + "keyboard_shortcuts.enter": "să deschidă un status", + "keyboard_shortcuts.favourite": "să adauge la favorite", + "keyboard_shortcuts.favourites": "să deschidă lista cu favorite", + "keyboard_shortcuts.federated": "să deschidă fluxul global", + "keyboard_shortcuts.heading": "Comenzi rapide", + "keyboard_shortcuts.home": "să deschidă fluxul Acasă", "keyboard_shortcuts.hotkey": "Prescurtări", - "keyboard_shortcuts.legend": "sa afiseze aceasta legenda", - "keyboard_shortcuts.local": "sa deschida fluxul local", - "keyboard_shortcuts.mention": "sa mentioneze autorul", - "keyboard_shortcuts.muted": "sa deschida lista utilizatorilor opriti", - "keyboard_shortcuts.my_profile": "sa deschida profilul tau", - "keyboard_shortcuts.notifications": "sa deschida coloana cu notificari", - "keyboard_shortcuts.pinned": "sa deschida lista postarilor fixate", - "keyboard_shortcuts.profile": "sa deschida porfilul autorului", - "keyboard_shortcuts.reply": "sa raspunda", - "keyboard_shortcuts.requests": "sa deschida lista cu cereri de urmarire", - "keyboard_shortcuts.search": "sa focuseze cautarea", - "keyboard_shortcuts.start": "sa deschida coloana \"Incepere\"", - "keyboard_shortcuts.toggle_hidden": "sa arate/ascunda textul in spatele CW", - "keyboard_shortcuts.toot": "sa inceapa o noua postare", - "keyboard_shortcuts.unfocus": "sa dezactiveze compunerea/cautarea", - "keyboard_shortcuts.up": "sa mute mai sus in lista", + "keyboard_shortcuts.legend": "să afișeze această legendă", + "keyboard_shortcuts.local": "să deschidă fluxul local", + "keyboard_shortcuts.mention": "să menționeze autorul", + "keyboard_shortcuts.muted": "să deschidă lista utilizatorilor opriți", + "keyboard_shortcuts.my_profile": "să deschidă profilul tău", + "keyboard_shortcuts.notifications": "să deschidă coloana cu notificări", + "keyboard_shortcuts.pinned": "să deschidă lista postărilor fixate", + "keyboard_shortcuts.profile": "să deschidă porfilul autorului", + "keyboard_shortcuts.reply": "să răspundă", + "keyboard_shortcuts.requests": "să deschidă lista cu cereri de urmărire", + "keyboard_shortcuts.search": "să focuseze căutarea", + "keyboard_shortcuts.start": "să deschidă coloana \"Începere\"", + "keyboard_shortcuts.toggle_hidden": "să arate/ascundă textul in spatele CW", + "keyboard_shortcuts.toot": "să înceapă o postare nouă", + "keyboard_shortcuts.unfocus": "să dezactiveze zona de compunere/căutare", + "keyboard_shortcuts.up": "să mute mai sus în listă", "lightbox.close": "Închide", "lightbox.next": "Următorul", "lightbox.previous": "Precedentul", "lists.account.add": "Adaugă în listă", "lists.account.remove": "Elimină din listă", - "lists.delete": "Șterge listă", + "lists.delete": "Șterge lista", "lists.edit": "Editează lista", "lists.new.create": "Adaugă listă", "lists.new.title_placeholder": "Titlu pentru noua listă", @@ -242,21 +242,42 @@ "notifications.clear_confirmation": "Ești sigur că vrei să ștergi toate notificările?", "notifications.column_settings.alert": "Notificări pe desktop", "notifications.column_settings.favourite": "Favorite:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "Afișează toate categoriile", + "notifications.column_settings.filter_bar.category": "Bară de filtrare rapidă", + "notifications.column_settings.filter_bar.show": "Arată", "notifications.column_settings.follow": "Noi urmăritori:", "notifications.column_settings.mention": "Mențiuni:", "notifications.column_settings.push": "Notificări push", "notifications.column_settings.reblog": "Redistribuite:", "notifications.column_settings.show": "Arată în coloană", "notifications.column_settings.sound": "Redă sunet", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", + "notifications.filter.all": "Toate", + "notifications.filter.boosts": "Redistribuiri", + "notifications.filter.favourites": "Favorite", + "notifications.filter.follows": "Urmărește", + "notifications.filter.mentions": "Menționări", "notifications.group": "{count} notificări", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Cine vede asta", "privacy.direct.long": "Postează doar pentru utilizatorii menționați", "privacy.direct.short": "Direct", @@ -291,7 +312,9 @@ "search_results.hashtags": "Hashtaguri", "search_results.statuses": "Postări", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "standalone.public_title": "Se întâmplă acum", + "standalone.public_title": "Se întâmplă acum...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Blochează @{name}", "status.cancel_reblog_private": "Nedistribuit", "status.cannot_reblog": "Această postare nu poate fi redistribuită", @@ -310,10 +333,10 @@ "status.open": "Extinde acest status", "status.pin": "Fixează pe profil", "status.pinned": "Postare fixată", - "status.read_more": "Read more", + "status.read_more": "Citește mai mult", "status.reblog": "Redistribuie", "status.reblog_private": "Redistribuie către audiența originală", - "status.reblogged_by": "{name} redistribuit", + "status.reblogged_by": "{name} a redistribuit", "status.reblogs.empty": "Nimeni nu a redistribuit această postare până acum. Când cineva o va face, va apărea aici.", "status.redraft": "Șterge și adaugă la ciorne", "status.reply": "Răspunde", @@ -326,11 +349,11 @@ "status.show_less_all": "Arată mai puțin pentru toți", "status.show_more": "Arată mai mult", "status.show_more_all": "Arată mai mult pentru toți", - "status.show_thread": "Show thread", + "status.show_thread": "Arată topicul", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", - "suggestions.dismiss": "Dismiss suggestion", - "suggestions.header": "You might be interested in…", + "suggestions.dismiss": "Omite sugestia", + "suggestions.header": "Ai putea fi interesat de…", "tabs_bar.federated_timeline": "Global", "tabs_bar.home": "Acasă", "tabs_bar.local_timeline": "Local", @@ -341,7 +364,7 @@ "upload_area.title": "Trage și eliberează pentru a încărca", "upload_button.label": "Adaugă media (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Adaugă o descriere pentru persoanele cu deficiențe de vedere", - "upload_form.focus": "Taie", + "upload_form.focus": "Schimbă previzualizarea", "upload_form.undo": "Șterge", "upload_progress.label": "Se Încarcă...", "video.close": "Închide video", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 0d10c663a9..a1a31ccad4 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} уведомл.", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Изменить видимость статуса", "privacy.direct.long": "Показать только упомянутым", "privacy.direct.short": "Направленный", @@ -292,6 +313,8 @@ "search_results.statuses": "Посты", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", "standalone.public_title": "Прямо сейчас", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Заблокировать @{name}", "status.cancel_reblog_private": "Не продвигать", "status.cannot_reblog": "Этот статус не может быть продвинут", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index b8a74fadbc..ec2a53ecf6 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -33,11 +33,11 @@ "account.unblock": "Odblokuj @{name}", "account.unblock_domain": "Prestaň skrývať {domain}", "account.unendorse": "Nezobrazuj na profile", - "account.unfollow": "Prestať nasledovať", - "account.unmute": "Prestať ignorovať @{name}", - "account.unmute_notifications": "Odtĺmiť notifikácie od @{name}", + "account.unfollow": "Prestaň následovať", + "account.unmute": "Prestaň ignorovať @{name}", + "account.unmute_notifications": "Odtĺm oboznámenia od @{name}", "account.view_full_profile": "Pozri celý profil", - "alert.unexpected.message": "Vyskytla sa neočakávaná chyba.", + "alert.unexpected.message": "Vyskytla sa nečakaná chyba.", "alert.unexpected.title": "Oops!", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", @@ -127,12 +127,12 @@ "empty_column.list": "Tento zoznam je ešte prázdny. Keď ale členovia tohoto zoznamu napíšu nové správy, tak tie sa objavia priamo tu.", "empty_column.lists": "Nemáš ešte žiadne zoznamy. Keď nejaký vytvoríš, bude zobrazený práve tu.", "empty_column.mutes": "Ešte si nestĺmil žiadných užívateľov.", - "empty_column.notifications": "Nemáš ešte žiadne oznámenia. Zapoj sa s niekym do debaty a komunikuj s ostatnými aby diskusia mohla začať.", - "empty_column.public": "Ešte tu nič nie je. Napíš niečo verejne alebo začnite sledovať užívateľov z iných Mastodon serverov, aby tu tak niečo pribudlo", + "empty_column.notifications": "Ešte nemáš žiadne oznámenia. Začni komunikovať s ostatnými, aby diskusia mohla začať.", + "empty_column.public": "Ešte tu nič nie je. Napíš niečo verejne, alebo začni sledovať užívateľov z iných Mastodon serverov, aby tu niečo pribudlo", "follow_request.authorize": "Povoľ prístup", "follow_request.reject": "Odmietni", "getting_started.developers": "Vývojári", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Databáza profilov", "getting_started.documentation": "Dokumentácia", "getting_started.heading": "Začni tu", "getting_started.invite": "Pozvať ľudí", @@ -257,6 +257,27 @@ "notifications.filter.follows": "Sledovania", "notifications.filter.mentions": "Spomenutia", "notifications.group": "{count} oznámenia", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Zmeňiť viditeľnosť statusu", "privacy.direct.long": "Poslať priamo iba spomenutým používateľom", "privacy.direct.short": "Súkromne", @@ -292,6 +313,8 @@ "search_results.statuses": "Hlášky", "search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}", "standalone.public_title": "Náhľad dovnútra...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Blokovať @{name}", "status.cancel_reblog_private": "Nezdieľaj", "status.cannot_reblog": "Tento príspevok nemôže byť re-tootnutý", @@ -341,7 +364,7 @@ "upload_area.title": "Pretiahni a pusť pre nahratie", "upload_button.label": "Pridať médiálny súbor (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Opis pre slabo vidiacich", - "upload_form.focus": "Vystrihni", + "upload_form.focus": "Pozmeň náhľad", "upload_form.undo": "Vymaž", "upload_progress.label": "Nahráva sa...", "video.close": "Zavrieť video", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 8b7b4586a8..85ce4ec44b 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Tuti", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 310456ca10..60fe3bef2b 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Podesi status privatnosti", "privacy.direct.long": "Objavi samo korisnicima koji su pomenuti", "privacy.direct.short": "Direktno", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {rezultat} few {rezultata} other {rezultata}}", "standalone.public_title": "Pogled iznutra...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Ovaj status ne može da se podrži", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 01f2155400..5f7300a64f 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} обавештења", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Подеси статус приватности", "privacy.direct.long": "Објави само корисницима који су поменути", "privacy.direct.short": "Директно", @@ -292,6 +313,8 @@ "search_results.statuses": "Трубе", "search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}", "standalone.public_title": "Поглед изнутра...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Блокирај @{name}", "status.cancel_reblog_private": "Уклони подршку", "status.cannot_reblog": "Овај статус не може да се подржи", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 82fef145ea..a4571f9a2f 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} aviseringar", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Justera sekretess", "privacy.direct.long": "Skicka endast till nämnda användare", "privacy.direct.short": "Direkt", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, ett {result} andra {results}}", "standalone.public_title": "En titt inuti...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Ta bort knuff", "status.cannot_reblog": "Detta inlägg kan inte knuffas", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 9e613ce597..869ebd6561 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 2df54b6d8a..828e59b95f 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -1,5 +1,5 @@ { - "account.add_or_remove_from_list": "Add or Remove from lists", + "account.add_or_remove_from_list": "జాబితాల నుండి చేర్చు లేదా తీసివేయి", "account.badges.bot": "బాట్", "account.block": "@{name} ను బ్లాక్ చేయి", "account.block_domain": "{domain} నుంచి అన్నీ దాచిపెట్టు", @@ -17,7 +17,7 @@ "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", "account.media": "మీడియా", "account.mention": "@{name}ను ప్రస్తావించు", "account.moved_to": "{name} ఇక్కడికి మారారు:", @@ -113,7 +113,7 @@ "emoji_button.search_results": "శోధన ఫలితాలు", "emoji_button.symbols": "చిహ్నాలు", "emoji_button.travel": "ప్రయాణం & ప్రదేశాలు", - "empty_column.account_timeline": "No toots here!", + "empty_column.account_timeline": "ఇక్కడ ఏ టూట్లూ లేవు!No toots here!", "empty_column.blocks": "మీరు ఇంకా ఏ వినియోగదారులనూ బ్లాక్ చేయలేదు.", "empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!", "empty_column.direct": "మీకు ఇంకా ఏ ప్రత్యక్ష సందేశాలు లేవు. మీరు ఒకదాన్ని పంపినప్పుడు లేదా స్వీకరించినప్పుడు, అది ఇక్కడ చూపబడుతుంది.", @@ -132,40 +132,40 @@ "follow_request.authorize": "అనుమతించు", "follow_request.reject": "తిరస్కరించు", "getting_started.developers": "డెవలపర్లు", - "getting_started.directory": "Profile directory", + "getting_started.directory": "ప్రొఫైల్ డైరెక్టరీProfile directory", "getting_started.documentation": "డాక్యుమెంటేషన్", "getting_started.heading": "మొదలుపెడదాం", "getting_started.invite": "వ్యక్తులను ఆహ్వానించండి", "getting_started.open_source_notice": "మాస్టొడొన్ ఓపెన్ సోర్స్ సాఫ్ట్వేర్. మీరు {github} వద్ద GitHub పై సమస్యలను నివేదించవచ్చు లేదా తోడ్పడచ్చు.", "getting_started.security": "భద్రత", "getting_started.terms": "సేవా నిబంధనలు", - "hashtag.column_header.tag_mode.all": "and {additional}", - "hashtag.column_header.tag_mode.any": "or {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", - "hashtag.column_settings.tag_mode.all": "All of these", - "hashtag.column_settings.tag_mode.any": "Any of these", - "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_header.tag_mode.all": "మరియు {additional}", + "hashtag.column_header.tag_mode.any": "లేదా {additional}", + "hashtag.column_header.tag_mode.none": "{additional} లేకుండా", + "hashtag.column_settings.tag_mode.all": "ఇవన్నీAll of these", + "hashtag.column_settings.tag_mode.any": "వీటిలో ఏవైనా", + "hashtag.column_settings.tag_mode.none": "ఇవేవీ కావు", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "home.column_settings.basic": "ప్రాథమిక", "home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు", "home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు", - "introduction.federation.action": "Next", + "introduction.federation.action": "తరువాత", "introduction.federation.federated.headline": "Federated", - "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", + "introduction.federation.federated.text": "ఫెడివర్స్ లోని ఇతర సర్వర్లకు చెందిన పబ్లిక్ టూట్లు ఫెడరేటెడ్ టైంలైన్ లో కనిపిస్తాయి.", "introduction.federation.home.headline": "Home", - "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.home.text": "మీరు అనుసరిస్తున్న ఖాతాల టూట్లు హోం ఫీడ్ లో కనిపిస్తాయి. ఏ సర్వర్లో ఎవరినైనా మీరు అనుసరించవచ్చు!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", - "introduction.interactions.action": "Finish tutorial!", - "introduction.interactions.favourite.headline": "Favourite", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", - "introduction.interactions.reblog.headline": "Boost", - "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", - "introduction.interactions.reply.headline": "Reply", - "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", - "introduction.welcome.action": "Let's go!", - "introduction.welcome.headline": "First steps", - "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", + "introduction.federation.local.text": "ఈ సర్వరుకు చెందిన ఖాతాల పబ్లిక్ టూట్లు లోకల్ టైంలైన్ లో కనిపిస్తాయి.", + "introduction.interactions.action": "బోధనను ముగించు!", + "introduction.interactions.favourite.headline": "ఇష్టం", + "introduction.interactions.favourite.text": "మీరు ఏదైనా టూట్‌ను భవిష్యత్తు కోసం దాచుకోవచ్చు మరియు మీకు ఆ టూట్ నచ్చినందని తెలియజేయడం కోసం \"ఇష్టం\" ను నొక్కి రచయితకు తెలియజేయవచ్చు.", + "introduction.interactions.reblog.headline": "బూస్ట్", + "introduction.interactions.reblog.text": "వేరే వ్యక్తుల టూట్లను బూస్ట్ చేయడం ద్వారా ఆ టూట్‌ను మీ అనుచరులతో పంచుకోవచ్చు.", + "introduction.interactions.reply.headline": "ప్రత్యుత్తరం", + "introduction.interactions.reply.text": "మీరు ఇతర వ్యక్తుల టూట్లకు, మీ స్వంత టూత్లకు ప్రత్యుత్తరం ఇవ్వడం వల్ల గొలుసు చర్చ ప్రారంభమవుతుంది.", + "introduction.welcome.action": "ఇక ప్రారంభించు!", + "introduction.welcome.headline": "మొదటి మెట్లు", + "introduction.welcome.text": "ఫెడివర్స్ కు స్వాగతం! మరి కొంతసేపట్లో మీరు సందేశాలను ప్రసారం చేయవచ్చు మరియు వేర్వేరు సర్వర్లలో వున్న మీ స్నేహితులతో మాట్లాడవచ్చు. కానీ ఈ సర్వరు, {domain}, ప్రత్యేకమైనది - ఇది మీ ప్రొఫైలును హోస్టు చేస్తుంది, కాబట్టి ఈ సర్వరు పేరును గుర్తుంచుకోండి.", "keyboard_shortcuts.back": "వెనక్కి తిరిగి వెళ్ళడానికి", "keyboard_shortcuts.blocked": "బ్లాక్ చేయబడిన వినియోగదారుల జాబితాను తెరవడానికి", "keyboard_shortcuts.boost": "బూస్ట్ చేయడానికి", @@ -242,21 +242,42 @@ "notifications.clear_confirmation": "మీరు మీ అన్ని నోటిఫికేషన్లను శాశ్వతంగా తొలగించాలనుకుంటున్నారా?", "notifications.column_settings.alert": "డెస్క్టాప్ నోటిఫికేషన్లు", "notifications.column_settings.favourite": "ఇష్టపడినవి:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "అన్ని విభాగాలను చూపించు", + "notifications.column_settings.filter_bar.category": "క్విక్ ఫిల్టర్ బార్", + "notifications.column_settings.filter_bar.show": "చూపించు", "notifications.column_settings.follow": "క్రొత్త అనుచరులు:", "notifications.column_settings.mention": "ప్రస్తావనలు:", "notifications.column_settings.push": "పుష్ ప్రకటనలు", "notifications.column_settings.reblog": "బూస్ట్ లు:", "notifications.column_settings.show": "నిలువు వరుసలో చూపు", "notifications.column_settings.sound": "ధ్వనిని ప్లే చేయి", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", + "notifications.filter.all": "అన్నీ", + "notifications.filter.boosts": "బూస్ట్లు", + "notifications.filter.favourites": "ఇష్టాలు", + "notifications.filter.follows": "అనుసరిస్తున్నవి", + "notifications.filter.mentions": "పేర్కొన్నవి", "notifications.group": "{count} ప్రకటనలు", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "స్టేటస్ గోప్యతను సర్దుబాటు చేయండి", "privacy.direct.long": "పేర్కొన్న వినియోగదారులకు మాత్రమే పోస్ట్ చేయి", "privacy.direct.short": "ప్రత్యక్ష", @@ -292,6 +313,8 @@ "search_results.statuses": "టూట్లు", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "లోపలికి ఒక చూపు...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name} ను బ్లాక్ చేయి", "status.cancel_reblog_private": "బూస్ట్ను తొలగించు", "status.cannot_reblog": "ఈ పోస్ట్ను బూస్ట్ చేయడం సాధ్యం కాదు", @@ -326,7 +349,7 @@ "status.show_less_all": "అన్నిటికీ తక్కువ చూపించు", "status.show_more": "ఇంకా చూపించు", "status.show_more_all": "అన్నిటికీ ఇంకా చూపించు", - "status.show_thread": "Show thread", + "status.show_thread": "గొలుసును చూపించు", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", "suggestions.dismiss": "సూచనను రద్దు చేయి", @@ -341,7 +364,7 @@ "upload_area.title": "అప్లోడ్ చేయడానికి డ్రాగ్ & డ్రాప్ చేయండి", "upload_button.label": "మీడియాను జోడించండి (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "దృష్టి లోపమున్న వారి కోసం వివరించండి", - "upload_form.focus": "కత్తిరించు", + "upload_form.focus": "ప్రివ్యూను మార్చు", "upload_form.undo": "తొలగించు", "upload_progress.label": "అప్లోడ్ అవుతోంది...", "video.close": "వీడియోని మూసివేయి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 92bb05e7c9..2e7c24c494 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 134285953a..0dab743d9c 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Gönderi gizliliğini ayarla", "privacy.direct.long": "Sadece bahsedilen kişilere gönder", "privacy.direct.short": "Direkt", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuçlar}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Bu gönderi boost edilemez", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 752112588e..484edfdd85 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} сповіщень", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "Змінити видимість допису", "privacy.direct.long": "Показати тільки згаданим користувачам", "privacy.direct.short": "Направлений", @@ -292,6 +313,8 @@ "search_results.statuses": "Toots", "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}", "standalone.public_title": "A look inside...", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "Цей допис не може бути передмухнутий", diff --git a/app/javascript/mastodon/locales/whitelist_lv.json b/app/javascript/mastodon/locales/whitelist_lv.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_lv.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 54aa84681e..5448f50714 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} 条通知", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "设置嘟文可见范围", "privacy.direct.long": "只有被提及的用户能看到", "privacy.direct.short": "私信", @@ -292,6 +313,8 @@ "search_results.statuses": "嘟文", "search_results.total": "共 {count, number} 个结果", "standalone.public_title": "大家都在干啥?", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "屏蔽 @{name}", "status.cancel_reblog_private": "取消转嘟", "status.cannot_reblog": "无法转嘟这条嘟文", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 927cf95786..cdcc5a882f 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} 條通知", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "調整私隱設定", "privacy.direct.long": "只有提及的用戶能看到", "privacy.direct.short": "私人訊息", @@ -292,6 +313,8 @@ "search_results.statuses": "文章", "search_results.total": "{count, number} 項結果", "standalone.public_title": "站點一瞥…", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "封鎖 @{name}", "status.cancel_reblog_private": "取消轉推", "status.cannot_reblog": "這篇文章無法被轉推", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e5be85ac5a..1b233202da 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -257,6 +257,27 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} 條通知", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.full_handle": "Your full handle", + "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", + "onboarding.page_one.welcome": "Welcome to Mastodon!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", "privacy.change": "調整隱私狀態", "privacy.direct.long": "只有被提到的使用者能看到", "privacy.direct.short": "私訊", @@ -292,6 +313,8 @@ "search_results.statuses": "嘟文", "search_results.total": "{count, number} 項結果", "standalone.public_title": "站點一瞥…", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", "status.block": "封鎖 @{name}", "status.cancel_reblog_private": "取消轉嘟", "status.cannot_reblog": "這篇嘟文無法被轉嘟", diff --git a/config/locales/ar.yml b/config/locales/ar.yml index abbfa38aad..07bcfbf129 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -86,6 +86,8 @@ ar: moderator: مُشرِف unfollow: إلغاء المتابعة admin: + account_actions: + action: تنفيذ الاجراء account_moderation_notes: create: إترك ملاحظة created_msg: تم إنشاء ملاحظة الإشراف بنجاح ! @@ -107,7 +109,7 @@ ar: confirming: التأكد demote: إنزال الرُتبة الوظيفية disable: تعطيل - disable_two_factor_authentication: تعطيل 2FA + disable_two_factor_authentication: تعطيل المصادقة بخطوتين disabled: معطَّل display_name: عرض الإسم domain: النطاق @@ -130,7 +132,7 @@ ar: title: الموقع login_status: وضع الدخول media_attachments: الوسائط المرفقة - memorialize: تحول إلى صفحة للذاكرة + memorialize: تحويل الحساب إلى صفحة ذكرى moderation: active: نشِط all: الكل @@ -143,7 +145,7 @@ ar: no_limits_imposed: مِن دون حدود مشروطة not_subscribed: غير مشترك outbox_url: رابط صندوق الصادر - perform_full_suspension: تعطيل + perform_full_suspension: تعليق الحساب profile_url: رابط الملف الشخصي promote: ترقية protocol: البروتوكول @@ -158,8 +160,8 @@ ar: success: تم إرسال رسالة التأكيد بنجاح! reset: إعادة التعيين reset_password: إعادة ضبط كلمة السر - resubscribe: اشترك مرة أخرى - role: التصريحات + resubscribe: إعادة الإشتراك + role: الصلاحيات roles: admin: مدير moderator: مشرف @@ -170,8 +172,8 @@ ar: shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد show: created_reports: البلاغات التي أنشأها هذا الحساب - targeted_reports: التقريرات التي أُنشِأت ضد هذا الحساب - silence: سكتهم + targeted_reports: الشكاوي التي أُنشِأت ضد هذا الحساب + silence: كتم silenced: تم كتمه statuses: المنشورات subscribe: اشترك @@ -204,9 +206,9 @@ ar: memorialize_account: لقد قام %{name} بتحويل حساب %{target} إلى صفحة تذكارية promote_user: "%{name} قام بترقية المستخدم %{target}" remove_avatar_user: تمت إزالة %{name} الصورة الرمزية %{target} - reopen_report: تمت إعادة فتح التقرير %{name} %{target} + reopen_report: تمت إعادة فتح الشكوى %{name} %{target} reset_password_user: "%{name} لقد قام بإعادة تعيين الكلمة السرية الخاصة بـ %{target}" - resolve_report: قام %{name} بحل التقرير %{target} + resolve_report: قام %{name} بحل الشكوى %{target} silence_account: لقد قام %{name} بكتم حساب %{target} suspend_account: لقد قام %{name} بتعليق حساب %{target} unassigned_report: "%{name} تقرير غير معتمد %{target}" @@ -251,7 +253,7 @@ ar: feature_relay: المُرحّل الفديرالي features: الميّزات hidden_service: الفيديرالية مع الخدمات الخفية - open_reports: فتح التقريرات + open_reports: فتح الشكاوي recent_users: أحدث المستخدِمين search: البحث النصي الكامل single_user_mode: وضع المستخدِم الأوحد @@ -304,6 +306,8 @@ ar: create: إضافة نطاق title: إضافة نطاق بريد جديد إلى اللائحة السوداء title: القائمة السوداء للبريد الإلكتروني + followers: + back_to_account: العودة إلى الحساب instances: title: مثيلات الخوادم المعروفة invites: @@ -329,10 +333,8 @@ ar: status: الحالة title: المُرحّلات report_notes: - created_msg: |- - 41/5000 - تم إنشاء ملاحظة التقرير بنجاح! - destroyed_msg: تم حذف ملاحظة التقرير بنجاح! + created_msg: تم إنشاء ملاحظة الشكوى بنجاح! + destroyed_msg: تم حذف ملاحظة الشكوى بنجاح! reports: account: note: ملحوظة @@ -344,7 +346,7 @@ ar: comment: none: لا شيء created_at: ذكرت - mark_as_resolved: إعتبار التقرير كمحلول + mark_as_resolved: إعتبار الشكوى كمحلولة mark_as_unresolved: علام كغير محلولة notes: create: اضف ملاحظة @@ -352,14 +354,14 @@ ar: create_and_unresolve: إعادة فتح مع ملاحظة delete: حذف placeholder: قم بوصف الإجراءات التي تم اتخاذها أو أي تحديثات أخرى ذات علاقة … - reopen: إعادة فتح التقرير - report: 'التقرير #%{id}' + reopen: إعادة فتح الشكوى + report: 'الشكوى #%{id}' reported_account: حساب مُبلّغ عنه reported_by: أبلغ عنه من طرف resolved: معالجة resolved_msg: تم حل تقرير بنجاح! status: الحالة - title: التقارير + title: الشكاوي unassign: إلغاء تعيين unresolved: غير معالجة updated_at: محدث @@ -431,15 +433,15 @@ ar: back_to_account: العودة إلى صفحة الحساب batch: delete: حذف - nsfw_off: ضع علامة انها غير حساسة - nsfw_on: ضع علامة انها حساسة + nsfw_off: تعيينه كمنشور غير حساس + nsfw_on: تعيينه كمنشور حساس failed_to_execute: خطأ في التفعيل media: title: الوسائط - no_media: لا يوجد وسائط + no_media: لا تحتوي على وسائط no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد title: منشورات الحساب - with_media: بالوسائط + with_media: تحتوي على وسائط subscriptions: callback_url: عاود الاتصال بالعنوان confirmed: مؤكَّد @@ -456,6 +458,12 @@ ar: unhide: إظهاره في سجل حسابات المستخدمين visible: ظاهر title: الإدارة + warning_presets: + add_new: إضافة واحد جديد + delete: حذف + edit: تعديل + edit_preset: تعديل نموذج التحذير + title: إدارة نماذج التحذير admin_mailer: new_report: body: قام %{reporter} بالإبلاغ عن %{target} @@ -640,7 +648,7 @@ ar: prompt: توليد و مشاركة روابط للسماح للآخَرين بالنفاذ إلى مثيل الخادوم هذا table: expires_at: تنتهي مدة صلاحيتها في - uses: يستخدِم + uses: عدد الاستخدامات title: دعوة أشخاص lists: errors: @@ -699,7 +707,7 @@ ar: units: billion: B million: M - quadrillion: Q + quadrillion: كواد thousand: ألف trillion: T unit: '' @@ -858,6 +866,14 @@ ar: explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل ! subject: نسخة بيانات حسابك جاهزة للتنزيل title: المغادرة بأرشيف الحساب + warning: + review_server_policies: مراجعة شروط السيرفر + subject: + disable: تم تجميد حسابك %{acct} + title: + disable: الحساب مُجمَّد + none: تحذير + suspend: الحساب مُعلَّق welcome: edit_profile_action: تهيئة الملف الشخصي edit_profile_step: يُمكنك·كي تخصيص ملفك الشخصي عن طريق تحميل صورة رمزية ورأسية و بتعديل إسمك·كي العلني وأكثر. و إن أردت·تي معاينة المتابِعين و المتابعات الجُدد قبيل السماح لهم·ن بمتابَعتك فيمكنك·كي تأمين حسابك·كي. diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 271fc35819..b9a6a7b646 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -70,6 +70,9 @@ ca: moderator: Moderador unfollow: Deixa de seguir admin: + account_actions: + action: Realitzar acció + title: Fer l'acció de moderació a %{acct} account_moderation_notes: create: Crea nota created_msg: La nota de moderació s'ha creat correctament! @@ -102,8 +105,10 @@ ca: enabled: Habilitat feed_url: URL del canal followers: Seguidors + followers_local: "(%{local} locals)" followers_url: URL dels seguidors follows: Segueix + header: Capçalera inbox_url: URL de la safata d'entrada ip: IP location: @@ -134,6 +139,7 @@ ca: push_subscription_expires: La subscripció PuSH expira redownload: Actualitza l'avatar remove_avatar: Eliminar avatar + remove_header: Treu la capçalera resend_confirmation: already_confirmed: Este usuario ya está confirmado send: Reenviar el correu electrònic de confirmació @@ -170,6 +176,7 @@ ca: assigned_to_self_report: "%{name} han assignat l'informe %{target} a ells mateixos" change_email_user: "%{name} ha canviat l'adreça de correu electrònic del usuari %{target}" confirm_user: "%{name} ha confirmat l'adreça de correu electrònic de l'usuari %{target}" + create_account_warning: "%{name} ha enviat un avís a %{target}" create_custom_emoji: "%{name} ha pujat un nou emoji %{target}" create_domain_block: "%{name} ha blocat el domini %{target}" create_email_domain_block: "%{name} ha afegit a la llista negra el domini del correu electrònic %{target}" @@ -283,6 +290,9 @@ ca: create: Afegeix un domini title: Nova adreça de correu en la llista negra title: Llista negra de correus electrònics + followers: + back_to_account: Tornar al compte + title: Seguidors de %{acct} instances: title: Instàncies conegudes invites: @@ -437,6 +447,12 @@ ca: unhide: Mostra en el directori visible: Visible title: Administració + warning_presets: + add_new: Afegir nou + delete: Esborra + edit: Edita + edit_preset: Edita l'avís predeterminat + title: Gestiona les configuracions predefinides dels avisos admin_mailer: new_report: body: "%{reporter} ha informat de %{target}" @@ -900,6 +916,22 @@ ca: explanation: Has sol·licitat una copia completa del teu compte Mastodon. Ara ja està a punt per descàrrega! subject: El teu arxiu està preparat per a descàrrega title: Recollida del arxiu + warning: + explanation: + disable: Mentre el teu compte estigui congelat les dades romandran intactes però no pots dur a terme cap acció fins que no estigui desbloquejat. + silence: Mentre el teu compte estigui limitat només les persones que ja et segueixen veuen les teves dades en aquest servidor i pots ser exclòs de diverses llistes públiques. No obstant això, d'altres encara poden seguir-te manualment. + suspend: El teu compte s'ha suspès i tots els teus toots i fitxers multimèdia penjats s'han eliminat irreversiblement d'aquest servidor i dels servidors on tenies seguidors. + review_server_policies: Revisa les polítiques del servidor + subject: + disable: S'ha congelat el teu compte %{acct} + none: Avís per a %{acct} + silence: El teu compte %{acct} ha estat limitat + suspend: S'ha suspès el teu compte %{acct} + title: + disable: Compte congelat + none: Avís + silence: Compte limitat + suspend: Compte suspès welcome: edit_profile_action: Configurar perfil edit_profile_step: Pots personalitzar el teu perfil penjant un avatar, un encapçalament, canviant el teu nom de visualització i molt més. Si prefereixes revisar els seguidors nous abans de que et puguin seguir, pots blocar el teu compte. diff --git a/config/locales/co.yml b/config/locales/co.yml index 7a87219abb..c2de9e4c69 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -70,6 +70,9 @@ co: moderator: Muderatore unfollow: Ùn siguità più admin: + account_actions: + action: Realizà un'azzione + title: Realizà un'azzione di muderazione nant'à %{acct} account_moderation_notes: create: Creà created_msg: Nota di muderazione creata! @@ -102,6 +105,7 @@ co: enabled: Attivatu feed_url: URL di u flussu followers: Abbunati + followers_local: "(%{local} lucali)" followers_url: URL di l’abbunati follows: Abbunamenti header: Intistatura @@ -172,6 +176,7 @@ co: assigned_to_self_report: "%{name} s’hè assignatu u signalamentu %{target}" change_email_user: "%{name} hà cambiatu l’indirizzu e-mail di %{target}" confirm_user: "%{name} hà cunfirmatu l’indirizzu e-mail di %{target}" + create_account_warning: "%{name} hà mandatu un'avertimentu à %{target}" create_custom_emoji: "%{name} hà caricatu una nov’emoji %{target}" create_domain_block: "%{name} hà bluccatu u duminiu %{target}" create_email_domain_block: "%{name} hà messu u duminiu e-mail %{target} nant’a lista nera" @@ -285,6 +290,9 @@ co: create: Creà un blucchime title: Nova iscrizzione nant’a lista nera e-mail title: Lista nera e-mail + followers: + back_to_account: Rivene à u Contu + title: Abbunati à %{acct} instances: title: Istanze cunnisciute invites: @@ -439,6 +447,12 @@ co: unhide: Mustrà in l'annuariu visible: Visibile title: Amministrazione + warning_presets: + add_new: Aghjustà nova + delete: Sguassà + edit: Cambià + edit_preset: Cambià a preselezzione d'avertimentu + title: Amministrà e preselezzione d'avertimentu admin_mailer: new_report: body: "%{reporter} hà palisatu %{target}" @@ -788,7 +802,7 @@ co: unlisted_long: Tuttu u mondu pò vede, mà micca indè e linee pubbliche stream_entries: pinned: Statutu puntarulatu - reblogged: spartutu + reblogged: hà spartutu sensitive_content: Cuntenutu sensibile terms: body_html: | @@ -902,6 +916,22 @@ co: explanation: Avete dumandatu un’archiviu cumpletu di u vostru contu Mastodon. Avà hè prontu per scaricà! subject: U vostru archiviu hè prontu à scaricà title: Archiviu prontu + warning: + explanation: + disable: Quandu u vostru contu hè ghjacciatu, i vostri dati stannu intatti, mà ùn pudete fà nunda fin'à ch'ellu sia sbluccatu. + silence: Quandu u vostru contu hè limitatu, solu quelli chì sò digià abbunati à u vostru contu viderenu i vostri statuti nant'à quessu servore, è puderete esse esclusu·a di parechje liste pubbliche. Però, altri conti puderenu sempre seguitavi. + suspend: U vostru contu hè statu suspesu, è tutti i vo statuti è fugliali media caricati sò stati sguassati di manera irreversibile di stu servore, è di i servori induve aviate abbunati. + review_server_policies: Leghje e pulitiche di u servore + subject: + disable: U vostru contu %{acct} hè statu ghjacciatu + none: Avertimentu pè %{acct} + silence: U vostru contu %{acct} hè statu limitatu + suspend: U vostru contu %{acct} hè statu suspesu + title: + disable: Contu ghjacciatu + none: Avertimentu + silence: Contu limitatu + suspend: Contu suspesu welcome: edit_profile_action: Cunfigurazione di u prufile edit_profile_step: Pudete persunalizà u vostru prufile cù un ritrattu di prufile o di cuprendula, un nome pubblicu persunalizatu, etc. Pudete ancu rende u contu privatu per duvè cunfirmà ogni dumanda d’abbunamentu. diff --git a/config/locales/cs.yml b/config/locales/cs.yml index d2caeb999d..8f3143fc6b 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -74,6 +74,9 @@ cs: moderator: Moderátor unfollow: Přestat sledovat admin: + account_actions: + action: Vykonat akci + title: Vykonat moderační akci pro účet %{acct} account_moderation_notes: create: Zanechat poznámku created_msg: Poznámka moderátora byla úspěšně vytvořena! @@ -106,6 +109,7 @@ cs: enabled: Povoleno feed_url: URL proudu followers: Sledovatelé + followers_local: "(%{local} místních)" followers_url: URL sledovatelů follows: Sledovaní header: Hlavička @@ -123,7 +127,7 @@ cs: active: Aktivní all: Vše silenced: Utišen/a - suspended: Suspendován/a + suspended: Pozastaven/a title: Moderace moderation_notes: Moderační poznámky most_recent_activity: Nejnovější aktivita @@ -131,7 +135,7 @@ cs: no_limits_imposed: Nejsou nastavena žádná omezení not_subscribed: Neodebírá outbox_url: URL odchozích zpráv - perform_full_suspension: Suspendovat + perform_full_suspension: Pozastavit profile_url: URL profilu promote: Povýšit protocol: Protokol @@ -157,17 +161,17 @@ cs: search: Hledat shared_inbox_url: URL sdílené schránky show: - created_reports: Nahlášení vytvořené z tohoto účtu - targeted_reports: Nahlášení vytvořena o tomto účtu + created_reports: Nahlášení vytvořená z tohoto účtu + targeted_reports: Nahlášení vytvořená o tomto účtu silence: Utišit silenced: Utišen/a statuses: Příspěvky subscribe: Odebírat - suspended: Suspendován/a + suspended: Pozastaven/a title: Účty unconfirmed_email: Nepotvrzený e-mail undo_silenced: Zrušit utišení - undo_suspension: Zrušit suspenzaci + undo_suspension: Zrušit pozastavení unsubscribe: Přestat odebírat username: Uživatelské jméno web: Web @@ -176,6 +180,7 @@ cs: assigned_to_self_report: "%{name} přidělil/a hlášení %{target} sobě" change_email_user: "%{name} změnil/a e-mailovou adresu uživatele %{target}" confirm_user: "%{name} potvrdil/a e-mailovou adresu uživatele %{target}" + create_account_warning: "%{name} poslal/a varování uživateli %{target}" create_custom_emoji: "%{name} nahrál/a nové emoji %{target}" create_domain_block: "%{name} zablokoval/a doménu %{target}" create_email_domain_block: "%{name} přidal/a e-mailovou doménu %{target} na černou listinu" @@ -196,10 +201,10 @@ cs: reset_password_user: "%{name} resetoval/a heslo uživatele %{target}" resolve_report: "%{name} vyřešil/a nahlášení %{target}" silence_account: "%{name} utišil/a účet uživatele %{target}" - suspend_account: "%{name} suspendoval/a účet uživatele %{target}" + suspend_account: "%{name} pozastavil/a účet uživatele %{target}" unassigned_report: "%{name} odebral/a nahlášení %{target}" unsilence_account: "%{name} odtišil/a účet uživatele %{target}" - unsuspend_account: "%{name} zrušil/a suspenzaci účtu uživatele %{target}" + unsuspend_account: "%{name} zrušil/a pozastavení účtu uživatele %{target}" update_custom_emoji: "%{name} aktualizoval/a emoji %{target}" update_status: "%{name} aktualizoval/a příspěvek uživatele %{target}" deleted_status: "(smazaný příspěvek)" @@ -233,7 +238,7 @@ cs: backlog: opožděné úlohy config: Konfigurace feature_deletions: Smazání účtů - feature_invites: Pozvánky + feature_invites: Odkazy pozvánek feature_profile_directory: Adresář profilů feature_registrations: Registrace feature_relay: Federovací most @@ -260,13 +265,13 @@ cs: create: Vytvořit blokaci hint: Blokace domény nezakáže vytváření účtových záznamů v databázi, ale bude na tyto účty zpětně a automaticky aplikovat specifické metody moderace. severity: - desc_html: Funkce Utišit zneviditelní příspěvky z účtu komukoliv, kdo jej nesleduje. Funkce Suspendovat odstraní všechen obsah, média a profilová data účtu. Pro pouhé odmítnutí mediálních souborů použijte funkci Žádné. + desc_html: Funkce Utišit zneviditelní příspěvky z účtu komukoliv, kdo jej nesleduje. Funkce Pozastavit odstraní všechen obsah, média a profilová data účtu. Pro pouhé odmítnutí mediálních souborů použijte funkci Žádné. noop: Žádné silence: Utišit - suspend: Suspendovat + suspend: Pozastavit title: Nová doménová blokace reject_media: Odmítat mediální soubory - reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Irelevantní pro suspenzace + reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Nepodstatné pro pozastavení reject_reports: Odmítnout nahlášení reject_reports_hint: Ignorovat všechna nahlášení pocházející z této domény. Nepodstatné pro suspenzace show: @@ -276,7 +281,7 @@ cs: other: "%{count} účtů v databázi bylo ovlivněno" retroactive: silence: Odtišit všechny existující účty z této domény - suspend: Zrušit suspenzaci všech existujících účtů z této domény + suspend: Zrušit pozastavení všech existujících účtů z této domény title: Zrušit blokaci domény %{domain} undo: Odvolat undo: Odvolat @@ -290,6 +295,9 @@ cs: create: Přidat doménu title: Nový e-mail pro zablokování title: Černá listina e-mailů + followers: + back_to_account: Zpět na účet + title: Sledovatelé uživatele %{acct} instances: title: Známé instance invites: @@ -444,6 +452,12 @@ cs: unhide: Zobrazit v adresáři visible: Viditelné title: Administrace + warning_presets: + add_new: Přidat nové + delete: Smazat + edit: Upravit + edit_preset: Upravit přednastavení pro varování + title: Spravovat přednastavení pro varování admin_mailer: new_report: body: "%{reporter} nahlásil/a uživatele %{target}" @@ -647,7 +661,7 @@ cs: body: Zde najdete stručný souhrn zpráv, které jste zmeškal/a od vaší poslední návštěvy %{since} mention: "%{name} vás zmínil/a v:" new_followers_summary: - few: Navíc jste získal/a %{count} nové sledovatele, zatímco jste byl/a pryč! Skvělé! + few: Navíc jste získal/a %{count} nové sledovatele, zatímco jste byl/a pryč! Hurá! one: Navíc jste získal/a jednoho nového sledovatele, zatímco jste byl/a pryč! Hurá! other: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Úžasné! subject: @@ -915,6 +929,22 @@ cs: explanation: Vyžádal/a jste si úplnou zálohu svého účtu Mastodon. Nyní je připravena ke stažení! subject: Váš archiv je připraven ke stažení title: Stažení archivu + warning: + explanation: + disable: Zatímco je váš účet zmražen, zůstávají data vašeho účtu nedotčená, ale nemůžete vykonávat žádné akce, dokud nebude odemčen. + silence: Zatímco je váš účet omezen, mohou vaše tooty na tomto serveru vidět pouze lidé, kteří váš již sledují, a můžete být vyloučen/a z různých veřejných výpisů. Ostatní vás však pořád mohou manuálně sledovat. + suspend: Váš účet byl pozastaven a všechny vaše tooty a vaše nahrané mediální soubory byly nenávratně odstraněny z tohoto serveru a serverů, na kterých jste měl/a sledovatele. + review_server_policies: Posoudit politiku serveru + subject: + disable: Váš účet %{acct} byl zmražen + none: Varování pro uživatele %{acct} + silence: Váš účet %{acct} byl omezen + suspend: Váš účet %{acct} byl pozastaven + title: + disable: Účet zmražen + none: Varování + silence: Účet omezen + suspend: Účet pozastaven welcome: edit_profile_action: Nastavit profil edit_profile_step: Můžete si přizpůsobit svůj profil nahráním avataru a obrázku na hlavičce, změnou zobrazovaného jména a dalších. Chcete-li posoudit nové sledovatele předtím, než vás mohou sledovat, můžete svůj účet uzamknout. diff --git a/config/locales/da.yml b/config/locales/da.yml index e4286d156d..ca4ff32dac 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -69,6 +69,8 @@ da: moderator: Moderator unfollow: Følg ikke længere admin: + account_actions: + action: Udfør handling account_moderation_notes: create: Læg en note created_msg: Moderator notat succesfuldt oprettet! @@ -277,6 +279,8 @@ da: create: Tilføj domæne title: Ny email blokade opslag title: Email sortliste + followers: + back_to_account: Tilbage til konto instances: title: Kendte instanser invites: @@ -416,6 +420,9 @@ da: last_delivery: Sidste levering title: Websub topic: Emne + tags: + accounts: Kontoer + hidden: Skjult title: Administration admin_mailer: new_report: diff --git a/config/locales/de.yml b/config/locales/de.yml index 081895c9c1..12ff54aa8c 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -70,6 +70,9 @@ de: moderator: Moderator unfollow: Entfolgen admin: + account_actions: + action: Aktion ausführen + title: Moderationsaktion auf %{acct} ausführen account_moderation_notes: create: Notiz erstellen created_msg: Moderationsnotiz erfolgreich erstellt! @@ -102,6 +105,7 @@ de: enabled: Freigegeben feed_url: Feed-URL followers: Folger + followers_local: "(%{local} lokal)" followers_url: URL des Folgenden follows: Folgt header: Header @@ -172,6 +176,7 @@ de: assigned_to_self_report: "%{name} hat sich die Meldung %{target} selbst zugewiesen" change_email_user: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert" confirm_user: "%{name} hat die E-Mail-Adresse von %{target} bestätigt" + create_account_warning: "%{name} hat eine Warnung an %{target} gesendet" create_custom_emoji: "%{name} hat neues Emoji %{target} hochgeladen" create_domain_block: "%{name} hat die Domain %{target} blockiert" create_email_domain_block: "%{name} hat die E-Mail-Domain %{target} geblacklistet" @@ -285,6 +290,9 @@ de: create: Blockade erstellen title: Neue E-Mail-Domain-Blockade title: E-Mail-Domain-Blockade + followers: + back_to_account: Zurück zum Account + title: "%{acct}'s Follower" instances: title: Bekannte Instanzen invites: @@ -439,6 +447,12 @@ de: unhide: Zeige in Verzeichnis visible: Sichtbar title: Administration + warning_presets: + add_new: Neu hinzufügen + delete: Löschen + edit: Bearbeiten + edit_preset: Warnungsvorlage bearbeiten + title: Warnungsvorlagen verwalten admin_mailer: new_report: body: "%{reporter} hat %{target} gemeldet" @@ -904,6 +918,22 @@ de: explanation: Du hast ein vollständiges Backup von deinem Mastodon-Account angefragt. Es kann jetzt heruntergeladen werden! subject: Dein Archiv ist bereit zum Download title: Archiv-Download + warning: + explanation: + disable: Solange dein Account eingefroren ist sind deine Benutzerdaten intakt, aber du kannst nichts tun bis dein Account entsperrt wurde. + silence: Solange dein Account limitiert ist können nur Leute, die dir bereits folgen deine Beiträge auf dem Server sehen und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. + suspend: Dein Account wurde gesperrt und alle deine Beiträge und hochgeladenen Medien wurden unwiderruflich vom Server und anderen Servern wo du Follower hattest gelöscht. + review_server_policies: Serverrichtlinien ansehen + subject: + disable: Dein Account %{acct} wurde eingefroren + none: Warnung für %{acct} + silence: Dein Account %{acct} wurde limitiert + suspend: Dein Account %{acct} wurde gesperrt + title: + disable: Account eingefroren + none: Warnung + silence: Account limitiert + suspend: Account gesperrt welcome: edit_profile_action: Profil einstellen edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Follower vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren. diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml index e004bc9636..927eeee5a1 100644 --- a/config/locales/devise.ar.yml +++ b/config/locales/devise.ar.yml @@ -18,6 +18,7 @@ ar: mailer: confirmation_instructions: action: للتحقق من عنوان البريد الإلكتروني + action_with_app: تأكيد ثم العودة إلى %{app} explanation: لقد قمت بإنشاء حساب على %{host} بواسطة عنوان البريد الإلكتروني الحالي. إنك على بعد خطوات قليلة من تفعليه. إن لم تكن من طلب ذلك، يرجى ألّا تولي إهتماما بهذه الرسالة. extra_html: ندعوك إلى الإطلاع على القواعد الخاصة بمثيل الخادوم هذا and و شروط الخدمة الخاصة بنا. subject: 'ماستدون : تعليمات التأكيد لمثيل الخادوم %{instance}' diff --git a/config/locales/devise.ca.yml b/config/locales/devise.ca.yml index 4c17f33789..c41a218e14 100644 --- a/config/locales/devise.ca.yml +++ b/config/locales/devise.ca.yml @@ -18,6 +18,7 @@ ca: mailer: confirmation_instructions: action: Verifica l'adreça de correu + action_with_app: Confirma i torna a %{app} explanation: Has creat un compte a %{host} amb aquesta adreça de correu electrònic. Estàs a un sol clic de l'activació. Si no fos així, ignora aquest correu electrònic. extra_html: Si us plau consulta també les regles de la instància i les nostres condicions de servei. subject: 'Mastodon: Instruccions de confirmació %{instance}' diff --git a/config/locales/devise.co.yml b/config/locales/devise.co.yml index 2471f857be..108a4ef11e 100644 --- a/config/locales/devise.co.yml +++ b/config/locales/devise.co.yml @@ -18,6 +18,7 @@ co: mailer: confirmation_instructions: action: Verificà l’indirizzu email + action_with_app: Cunfirmà è rivene à %{app} explanation: Avete creatu un contu nant’à %{host} cù st’indirizzu email. Pudete attivallu cù un clic, o ignurà quessu missaghji s’ellu un era micca voi. extra_html: Pensate à leghje e regule di l’istanza è i termini d’usu. subject: 'Mastodon: Istruzzione di cunfirmazione per %{instance}' @@ -55,7 +56,7 @@ co: updated: A vostra chjave d’accessu hè stata cambiata, è site cunnettatu·a. updated_not_active: A vostra chjave d’accessu hè stata cambiata. registrations: - destroyed: U vostru contu hè statu sguassatu. Avvedeci! + destroyed: Avvedeci! U vostru contu hè statu sguassatu. Speremu di vi rivede da prestu. signed_up: Benvinutu! Site cunnettatu·a. signed_up_but_inactive: Site arregistratu·a, mà ùn pudete micca cunnettavi perchè u vostru contu deve esse attivatu. signed_up_but_locked: Site arregistratu·a, mà ùn pudete micca cunnettavi perchè u vostru contu hè chjosu. diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml index f63d4d210e..850ff1fe82 100644 --- a/config/locales/devise.cs.yml +++ b/config/locales/devise.cs.yml @@ -18,6 +18,7 @@ cs: mailer: confirmation_instructions: action: Potvrdit e-mailovou adresu + action_with_app: Potvrdit a navrátit se do %{app} explanation: S touto e-mailovou adresou jste si vytvořil/a účet na %{host}. K jeho aktivaci vám zbývá jedno kliknutí. Pokud jste to nebyl/a vy, ignorujte této e-mail. extra_html: Prosím podívejte se také na pravidla této instance a naše podmínky používání. subject: 'Mastodon: Potvrzovací instrukce pro %{instance}' diff --git a/config/locales/devise.da.yml b/config/locales/devise.da.yml index b201b7ca82..56ae5183bf 100644 --- a/config/locales/devise.da.yml +++ b/config/locales/devise.da.yml @@ -18,6 +18,7 @@ da: mailer: confirmation_instructions: action: Bekræft email adresse + action_with_app: Bekræft og vend tilbage til %{app} explanation: Du har oprettet en konto på %{host} med denne email adresse. Du er et klik fra at aktivere din konto. Hvis du ikke har oprettet dig, ignorer venligst denne email. extra_html: Tjek også reglerne for instansen og vores betingelser. subject: 'Mastodon: Bekræftelses instrukser for %{instance}' diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 0d33af6f1a..fc41c9db51 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -18,6 +18,7 @@ de: mailer: confirmation_instructions: action: E-Mail-Adresse verifizieren + action_with_app: Bestätigen und zu %{app} zurückkehren explanation: Du hast einen Account auf %{host} mit dieser E-Mail-Adresse erstellt. Du bist nun einen Klick entfernt vor der Aktivierung. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. extra_html: Bitte lies auch die Regeln dieser Instanz und unsere Nutzungsbedingungen. subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}' diff --git a/config/locales/devise.el.yml b/config/locales/devise.el.yml index 523d1fb88b..e9725d96b9 100644 --- a/config/locales/devise.el.yml +++ b/config/locales/devise.el.yml @@ -18,6 +18,7 @@ el: mailer: confirmation_instructions: action: Επιβεβαίωσε διεύθυνση email + action_with_app: Επιβεβαίωση και επιστροφή στο %{app} explanation: Δημιούργησες έναν λογαριασμό στο %{host} με αυτή τη διεύθυνση email. Με ένα κλικ θα τον ενεργοποιήσεις. Αν δεν το έκανες εσύ, παρακαλούμε αγνόησε αυτό το email. extra_html: Παρακαλούμε να διαβάσεις του κανόνες αυτού του κόμβου και τους όρους χρήσης της υπηρεσίας μας. subject: 'Mastodon: Οδηγίες επιβεβαίωσης για %{instance}' diff --git a/config/locales/devise.eu.yml b/config/locales/devise.eu.yml index 8905822a74..9893f5ba32 100644 --- a/config/locales/devise.eu.yml +++ b/config/locales/devise.eu.yml @@ -18,6 +18,7 @@ eu: mailer: confirmation_instructions: action: Baieztatu e-mail helbidea + action_with_app: Berretsi eta itzuli %{app} aplikaziora explanation: Kontu bat sortu duzu %{host} ostalarian e-mail helbide honekin. Aktibatzeko klik bat falta zaizu. Ez baduzu zuk sortu, ez egin ezer e-mail honekin. extra_html: Egiaztatu instantziaren arauak eta zerbitzuaren erabilera baldintzak. subject: 'Mastodon: %{instance} instantziaren argibideak baieztapenerako' diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index 5098de2d9f..718b4056e7 100644 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -18,6 +18,7 @@ fr: mailer: confirmation_instructions: action: Vérifier l’adresse courriel + action_with_app: Confirmer et retourner à %{app} explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l’activer. Si ce n’était pas vous, veuillez ignorer ce courriel. extra_html: Merci de consultez également les règles de l’instance et nos conditions d’utilisation. subject: Merci de confirmer votre inscription sur %{instance} diff --git a/config/locales/devise.gl.yml b/config/locales/devise.gl.yml index a8fe6a2a5b..9f60747a6a 100644 --- a/config/locales/devise.gl.yml +++ b/config/locales/devise.gl.yml @@ -18,6 +18,7 @@ gl: mailer: confirmation_instructions: action: Validar enderezo de correo-e + action_with_app: Confirmar e voltar a %{app} explanation: Creou unha conta en %{host} con este enderezo de correo. Está a punto de activalo, si non foi vostede quen fixo a petición, por favor ignore este correo. extra_html: Por favor, lea tamén as normas da instancia e os termos do servizo. subject: 'Mastodon: Instruccións de confirmación para %{instance}' diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml index 0c5d8963c9..30266e46bd 100644 --- a/config/locales/devise.it.yml +++ b/config/locales/devise.it.yml @@ -18,6 +18,7 @@ it: mailer: confirmation_instructions: action: Verifica indirizzo email + action_with_app: Conferma e torna a %{app} explanation: Hai creato un account su %{host} con questo indirizzo email. Sei lonatno solo un clic dall'attivarlo. Se non sei stato tu, per favore ignora questa email. extra_html: Per favore controllale regole dell'istanza e i nostri termini di servizio. subject: 'Mastodon: Istruzioni di conferma per %{instance}' diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml index 9df0c73328..cae76d4938 100644 --- a/config/locales/devise.ja.yml +++ b/config/locales/devise.ja.yml @@ -18,6 +18,7 @@ ja: mailer: confirmation_instructions: action: メールアドレスの確認 + action_with_app: 確認し %{app} に戻る explanation: このメールアドレスで%{host}にアカウントを作成しました。有効にするまであと一歩です。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 extra_html: また インスタンスのルール利用規約 もお読みください。 subject: 'Mastodon: メールアドレスの確認 %{instance}' diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml index 8400fb2d46..a768d3c1d2 100644 --- a/config/locales/devise.nl.yml +++ b/config/locales/devise.nl.yml @@ -19,6 +19,7 @@ nl: mailer: confirmation_instructions: action: E-mailadres verifiëren + action_with_app: Bevestigen en naar %{app} teruggaan explanation: Je hebt een account op %{host} aangemaakt en met één klik kun je deze activeren. Wanneer jij dit account niet hebt aangemaakt, mag je deze e-mail negeren. extra_html: Bekijk ook de regels van de Mastodonserver en onze gebruiksvoorwaarden. subject: 'Mastodon: E-mail bevestigen voor %{instance}' diff --git a/config/locales/devise.oc.yml b/config/locales/devise.oc.yml index 20a3734622..99809b8585 100644 --- a/config/locales/devise.oc.yml +++ b/config/locales/devise.oc.yml @@ -18,6 +18,7 @@ oc: mailer: confirmation_instructions: action: Verificar l’adreça de corrièl + action_with_app: Confirmar e tornar a %{app} explanation: Venètz de crear un compte sus %{host} amb aquesta adreça de corrièl. Vos manca pas qu’un clic per l’activar. S’èra pas vosautre mercés de far pas cas a aqueste messatge. extra_html: Pensatz tanben de gaitar las règlas de l’instància e nòstres tèrmes e condicions d’utilizacion. subject: 'Mastodon : consignas de confirmacion per %{instance}' diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml index 051329c20e..ede0048925 100644 --- a/config/locales/devise.pt-BR.yml +++ b/config/locales/devise.pt-BR.yml @@ -18,6 +18,7 @@ pt-BR: mailer: confirmation_instructions: action: Verificar endereço de e-mail + action_with_app: Confirmar e voltar para %{app} explanation: Você criou uma conta em %{host} com esse endereço de e-mail. Você está a um clique de ativá-la. Se não foi você, por favor ignore esse e-mail. extra_html: Por favor confira também as regras da instância e nossos termos de serviço. subject: 'Mastodon: Instruções de confirmação para %{instance}' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index f80f7ad053..2186066c9d 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -24,7 +24,7 @@ ru: title: Подтвердите e-mail адрес email_changed: explanation: 'E-mail адрес Вашей учётной записи будет изменён на:' - extra: Если Вы не меняли адрес e-mail, возможно кто-то получил доступ к Вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у Вас нет доступа к учётной записи + extra: Если Вы не меняли адрес e-mail, возможно кто-то получил доступ к Вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у Вас нет доступа к учётной записи. subject: 'Mastodon: Адрес e-mail изменён' title: Новый адрес e-mail password_change: diff --git a/config/locales/devise.sk.yml b/config/locales/devise.sk.yml index a32fbe03bd..73deb35b49 100644 --- a/config/locales/devise.sk.yml +++ b/config/locales/devise.sk.yml @@ -18,6 +18,7 @@ sk: mailer: confirmation_instructions: action: Potvŕď emailovú adresu + action_with_app: Potvrď a vráť sa na %{app} explanation: S touto emailovou adresou si si vytvoril/a účet na %{host}. Si iba jeden klik od jeho aktivácie. Pokiaľ si to ale nebol/a ty, prosím ignoruj tento email. extra_html: Prosím pozri sa aj na pravidlá tohto servera, a naše užívaťeľské podiemky. subject: 'Mastodon: Potvrdzovacie inštrukcie pre %{instance}' @@ -29,7 +30,7 @@ sk: title: Nová emailová adresa password_change: explanation: Heslo k tvojmu účtu bolo zmenené. - extra: Pokiaľ si nezmenil/a svoje heslo, je pravdepodobné že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru pokiaľ si vymknutý/á zo svojho účtu. + extra: Ak si heslo nezmenil/a, je pravdepodobné že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru pokiaľ si vymknutý/á zo svojho účtu. subject: 'Mastodon: Heslo bolo zmenené' title: Heslo bolo zmenené reconfirmation_instructions: diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml index b9e9bc0349..352b31895e 100644 --- a/config/locales/doorkeeper.cs.yml +++ b/config/locales/doorkeeper.cs.yml @@ -72,7 +72,7 @@ cs: index: application: Aplikace created_at: Autorizováno - date_format: "%d. %m. %Y %H:%M:%S" + date_format: "%d.%m.%Y %H:%M:%S" scopes: Rozsahy title: Vaše autorizované aplikace errors: diff --git a/config/locales/el.yml b/config/locales/el.yml index dd998ce5cf..71acb47eab 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -70,6 +70,9 @@ el: moderator: Μεσολαβητής unfollow: Διακοπή παρακολούθησης admin: + account_actions: + action: Εκτέλεση ενέργειας + title: Εκτέλεση ενέργειας διαχείρισης στο %{acct} account_moderation_notes: create: Άφησε σημείωση created_msg: Επιτυχής δημιουργία σημειώματος μεσολάβησης! @@ -102,6 +105,7 @@ el: enabled: Ενεργοποιημένο feed_url: URL ροής followers: Ακόλουθοι + followers_local: "(%{local} τοπικοί)" followers_url: URL ακολούθων follows: Ακολουθεί header: Επικεφαλίδα @@ -172,6 +176,7 @@ el: assigned_to_self_report: Ο/Η %{name} ανάθεσε την καταγγελία %{target} στον εαυτό του/της change_email_user: Ο/Η %{name} άλλαξε τη διεύθυνση email του χρήστη %{target} confirm_user: Ο/Η %{name} επιβεβαίωσε τη διεύθυνση email του χρήστη %{target} + create_account_warning: Ο/Η %{name} έστειλε προειδοποίηση προς %{target} create_custom_emoji: Ο/Η %{name} ανέβασε νέο emoji %{target} create_domain_block: Ο/Η %{name} μπλόκαρε τον τομέα %{target} create_email_domain_block: Ο/Η %{name} έβαλε τον τομέα email %{target} σε μαύρη λίστα @@ -285,6 +290,9 @@ el: create: Πρόσθεση τομέα title: Νέα εγγραφή email στη μαύρη λίστα title: Μαύρη λίστα email + followers: + back_to_account: Επιστροφή στον λογαριασμό + title: Ακόλουθοι του/της %{acct} instances: title: Γνωστοί κόμβοι invites: @@ -439,6 +447,12 @@ el: unhide: Εμφάνιση σε κατάλογο visible: Εμφανείς title: Διαχείριση + warning_presets: + add_new: Πρόσθεση νέου + delete: Διαγραφή + edit: Ενημέρωση + edit_preset: Ενημέρωση προκαθορισμένης προειδοποίησης + title: Διαχείριση προκαθορισμένων προειδοποιήσεων admin_mailer: new_report: body: Ο/Η %{reporter} κατήγγειλε τον/την %{target} @@ -901,6 +915,22 @@ el: explanation: Ζήτησες ένα εφεδρικό αντίγραφο του λογαριασμού σου στο Mastodon. Είναι έτοιμο για κατέβασμα! subject: Το εφεδρικό αντίγραφό σου είναι έτοιμο για κατέβασμα title: Λήψη εφεδρικού αρχείου + warning: + explanation: + disable: Όσο ο λογαριασμός σου είναι παγωμένος, τα στοιχεία του παραμένουν άθικτα αλλά δεν μπορείς να κανείς καμία ενέργεια μέχρι να ξεκλειδωθείς. + silence: Όσο ο λογαριασμός σου είναι περιορισμένος, μόνο όσοι σε ακολουθούν ήδη θα βλέπουν τα τουτ σου σε αυτό τον κόμβο ενώ μπορεί να εξαιρεθείς από διάφορες δημόσιες απαριθμήσεις. Πάντως, θα μπορούν να σε ακολουθήσουν χειροκίνητα. + suspend: Ο λογαριασμός σου αναστάλθηκε μόνιμα, όλα τα τουτ και τα ανεβασμένα πολυμέσα σου διαγράφηκαν αμετάκλητα από αυτόν τον κόμβο και σε όσους άλλους είχες ακόλουθους. + review_server_policies: Αναθεώρηση πολιτικής του κόμβου + subject: + disable: Ο λογαριασμός σου %{acct} έχει παγώσει + none: Προειδοποίηση προς %{acct} + silence: Ο λογαριασμός σου %{acct} έχει περιοριστεί + suspend: Ο λογαριασμός σου %{acct} έχει ανασταλεί + title: + disable: Παγωμένος λογαριασμός + none: Προειδοποίηση + silence: Περιορισμένος λογαριασμός + suspend: Ανασταλμένος λογαριασμός welcome: edit_profile_action: Στήσιμο προφίλ edit_profile_step: Μπορείς να προσαρμόσεις το προφίλ σου ανεβάζοντας μια εικόνα εμφάνισης & επικεφαλίδας, αλλάζοντας το εμφανιζόμενο όνομά σου και άλλα. Αν θες να ελέγχεις τους νέου σου ακόλουθους πριν αυτοί σε ακολουθήσουν, μπορείς να κλειδώσεις το λογαριασμό σου. diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 6399fac83e..73a60e771c 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -70,6 +70,9 @@ eu: moderator: Moderatzailea unfollow: Utzi jarraitzeari admin: + account_actions: + action: Burutu ekintza + title: Burutu moderazio ekintza %{acct} kontuan account_moderation_notes: create: Sortu oharra created_msg: Moderazio oharra ongi sortu da! @@ -102,8 +105,10 @@ eu: enabled: Gaituta feed_url: Jarioaren URL-a followers: Jarraitzaileak + followers_local: "(%{local} lokala)" followers_url: Jarraitzaileen URL-a follows: Jarraitzen du + header: Goiburua inbox_url: Sarrera ontziaren URL-a ip: IP location: @@ -134,6 +139,7 @@ eu: push_subscription_expires: Push harpidetzaren iraugitzea redownload: Freskatu abatarra remove_avatar: Kendu abatarra + remove_header: Kendu goiburua resend_confirmation: already_confirmed: Erabiltzaile hau berretsita dago send: Birbidali baieztapen e-maila @@ -170,6 +176,7 @@ eu: assigned_to_self_report: "%{name}(e)k %{target} salaketa bere buruari esleitu dio" change_email_user: "%{name}(e)k %{target}(r)en e-mail helbidea aldatu du" confirm_user: "%{name}(e)k %{target}(r)en e-mail helbidea berretsi du" + create_account_warning: "%{name}-k abisua bidali dio %{target}-ri" create_custom_emoji: "%{name}(e)k emoji berria kargatu du %{target}" create_domain_block: "%{name}(e)k %{target} domeinua blokeatu du" create_email_domain_block: "%{name}(e)k %{target} e-mail helbideen domeinua zerrenda beltzean sartu du" @@ -228,6 +235,7 @@ eu: config: Konfigurazioa feature_deletions: Kontu ezabaketak feature_invites: Gonbidapen estekak + feature_profile_directory: Profil-direktorioa feature_registrations: Izen emateak feature_relay: Federazio haria features: Ezaugarriak @@ -282,6 +290,9 @@ eu: create: Gehitu domeinua title: Sarrera berria e-mail zerrenda beltzean title: E-mail zerrenda beltza + followers: + back_to_account: Itzuli kontura + title: "%{acct} kontuaren jarraitzaileak" instances: title: Instantzia ezagunak invites: @@ -365,6 +376,9 @@ eu: preview_sensitive_media: desc_html: Beste webguneetako esteken aurrebistak iruditxoa izango du multimedia hunkigarri gisa markatzen bada ere title: Erakutsi multimedia hunkigarria OpenGraph aurrebistetan + profile_directory: + desc_html: Baimendu erabiltzaileak aurkigarriak izatea + title: Gaitu profil-direktorioa registrations: closed_message: desc_html: Azaleko orrian bistaratua izen ematea ixten denean. HTML etiketak erabili ditzakezu @@ -433,6 +447,12 @@ eu: unhide: Erakutsi direktorioan visible: Ikusgai title: Administrazioa + warning_presets: + add_new: Gehitu berria + delete: Ezabatu + edit: Editatu + edit_preset: Editatu abisu aurre-ezarpena + title: Kudeatu abisu aurre-ezarpenak admin_mailer: new_report: body: "%{reporter}(e)k %{target} salatu du" @@ -896,6 +916,19 @@ eu: explanation: Zure Mastodon kontuaren babes-kopia osoa eskatu duzu. Deskargatzeko prest dago! subject: Zure artxiboa deskargatzeko prest dago title: Artxiboa jasotzea + warning: + explanation: + disable: Zure kontua izoztuta dagoen bitartean, zure kontua bere horretan dirau, baina ezin duzu ekintzarik burutu desblokeatzen den arte. + silence: Zure kontua murriztua dagoen bitartean, jada zu jarraitzen zaituztenak besterik ez dituzte zure Toot-ak ikusiko zerbitzari honetan, eta agian zerrenda publikoetatik kenduko zaizu. Hala ere besteek oraindik zu jarraitu zaitzakete. + review_server_policies: Berrikusi zerbitzariko politikak + subject: + disable: Zure %{acct} kontua izoztu da + none: "%{acct} konturako abisua" + silence: Zure %{acct} kontua murriztu da + title: + disable: Kontu izoztua + none: Abisua + silence: Kontu murriztua welcome: edit_profile_action: Ezarri profila edit_profile_step: Pertsonalizatu profila abatar bat igoz, goiburu bat, zure pantaila-izena aldatuz eta gehiago. Jarraitzaile berriak onartu aurretik gainbegiratu nahi badituzu, kontua giltzaperatu dezakezu. diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2faed982ec..d0c7289c81 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -70,6 +70,9 @@ fr: moderator: Modérateur·trice unfollow: Ne plus suivre admin: + account_actions: + action: Effectuer une action + title: Effectuer une action de modération sur %{acct} account_moderation_notes: create: Laisser un commentaire created_msg: Note de modération créée avec succès ! @@ -102,6 +105,7 @@ fr: enabled: Activé feed_url: URL du flux followers: Abonné⋅e⋅s + followers_local: "(%{local} local)" followers_url: URL des abonné·e·s follows: Abonnements header: Entête @@ -172,6 +176,7 @@ fr: assigned_to_self_report: "%{name} s’est assigné·e le signalement de %{target}" change_email_user: "%{name} a modifié l’adresse de courriel de l’utilisateur·rice %{target}" confirm_user: "%{name} adresse courriel confirmée de l’utilisateur·ice %{target}" + create_account_warning: "%{name} a envoyé une attention à %{target}" create_custom_emoji: "%{name} a importé de nouveaux émojis %{target}" create_domain_block: "%{name} a bloqué le domaine %{target}" create_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste noire" @@ -285,6 +290,9 @@ fr: create: Créer le blocage title: Nouveau blocage de domaine de courriel title: Blocage de domaines de courriel + followers: + back_to_account: Retour au compte + title: Abonné⋅e⋅s de %{acct} instances: title: Instances connues invites: @@ -439,6 +447,12 @@ fr: unhide: Afficher dans l'annuaire visible: Visible title: Administration + warning_presets: + add_new: Ajouter un nouveau + delete: Effacer + edit: Éditer + edit_preset: Éditer la présélection d'attention + title: Gérer les présélections d'attention admin_mailer: new_report: body: "%{reporter} a signalé %{target}" @@ -902,6 +916,22 @@ fr: explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée ! subject: Votre archive est prête à être téléchargée title: Récupération de l’archive + warning: + explanation: + disable: Lorsque votre compte est gelé, les données de votre compte demeurent intactes, mais vous ne pouvez effectuer aucune action jusqu'à ce qu'il soit débloqué. + silence: Lorsque votre compte est limité, seulement les utilisateurs qui vous suivent déjà verront vos pouets sur ce serveur, et vous pourriez être exclu de plusieurs listes publiques. Néanmoins, d'autres utilisateurs peuvent vous suivre manuellement. + suspend: Votre compte a été suspendu, et tous vos pouets et vos fichiers multimédia téléversés ont été supprimés irréversiblement de ce serveur, et des serveurs où vous aviez des abonné⋅e⋅s. + review_server_policies: Passer en revue les politiques du serveur + subject: + disable: Votre compte %{acct} a été gelé + none: Avertissement pour %{acct} + silence: Votre compte %{acct} a été limité + suspend: Votre compte %{acct} a été suspendu + title: + disable: Compte gelé + none: Avertissement + silence: Compte limité + suspend: Compte suspendu welcome: edit_profile_action: Configuration du profil edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux·lles abonné·e·s avant qu’il·elle·s ne soient autorisé·e·s à vous suivre, vous pouvez verrouiller votre compte. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index eb62619095..df5f04bae9 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -70,6 +70,9 @@ gl: moderator: Mod unfollow: Deixar de seguir admin: + account_actions: + action: Realizar acción + title: Realizar acción de moderación sobre %{acct} account_moderation_notes: create: Deixar nota created_msg: Nota a moderación creada con éxito! @@ -102,6 +105,7 @@ gl: enabled: Habilitado feed_url: URL fonte followers: Seguidoras + followers_local: "(local %{local})" followers_url: URL das seguidoras follows: Segue header: Cabeceira @@ -172,6 +176,7 @@ gl: assigned_to_self_report: "%{name} asignou o informe %{target} a ela misma" change_email_user: "%{name} cambiou o enderezo de correo-e da usuaria %{target}" confirm_user: "%{name} comfirmou o enderezo de correo da usuaria %{target}" + create_account_warning: "%{name} enviou un aviso sobre %{target}" create_custom_emoji: "%{name} subeu un novo emoji %{target}" create_domain_block: "%{name} bloqueou o dominio %{target}" create_email_domain_block: "%{name} engadeu a lista negra o dominio de correo %{target}" @@ -226,7 +231,7 @@ gl: updated_msg: Actualizouse correctamente o emoji! upload: Subir dashboard: - backlog: backlogged jobs + backlog: traballos respaldados config: Axustes feature_deletions: Borrado de contas feature_invites: Ligazóns de convite @@ -285,6 +290,9 @@ gl: create: Engadir dominio title: Nova entrada la lista negra de e-mail title: Lista negra de E-mail + followers: + back_to_account: Voltar a Conta + title: Seguidoras de %{acct} instances: title: Instancias coñecidas invites: @@ -439,6 +447,12 @@ gl: unhide: Mostrar en directorio visible: Visible title: Administración + warning_presets: + add_new: Engadir novo + delete: Eliminar + edit: Editar + edit_preset: Editar aviso preestablecido + title: Xestionar avisos preestablecidos admin_mailer: new_report: body: "%{reporter} informou sobre %{target}" @@ -902,6 +916,22 @@ gl: explanation: Solicitou un respaldo completo da súa conta de Mastodon. Xa está listo para descargar! subject: O seu ficheiro xa está listo para descargar title: Leve o ficheiro + warning: + explanation: + disable: Cando a súa conta está conxelada, os datos permanecen intactos, pero non pode levar a fin accións ate que se desbloquea. + silence: Mentras a conta está limitada, só a xente que actualmente a segue verá os seus toots en este servidor, e vostede podería estar excluída de varias listas públicas. Porén, outras persoas poderíana seguila de xeito manual. + suspend: A súa conta foi suspendida, e todos os seus toots e medios subidos foron eliminados de este servidor de xeito irreversible, e dos servidores onde tivese seguidoras. + review_server_policies: Revisar políticas do servidor + subject: + disable: A súa conta %{acct} foi conxelada + none: Aviso para %{acct} + silence: A súa conta %{acct} foi limitada + suspend: A súa conta %{acct} foi suspendida + title: + disable: Conta conxelada + none: Aviso + silence: Conta limitada + suspend: Conta suspendida welcome: edit_profile_action: Configurar perfil edit_profile_step: Vostede pode persoalizar o seu perfil subindo un avatar, cabeceira, cambiar o seu nome público e aínda máis. Si restrinxe a súa conta pode revisar a conta das personas que solicitan seguilas antes de permitirlles o acceso aos seus toots. diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 60c8fff87a..f8b249c085 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -70,6 +70,9 @@ ja: moderator: Mod unfollow: フォロー解除 admin: + account_actions: + action: アクションを実行 + title: "%{acct}さんに対してアクションを実行" account_moderation_notes: create: 書き込む created_msg: モデレーションメモを書き込みました! @@ -102,6 +105,7 @@ ja: enabled: 有効 feed_url: フィードURL followers: フォロワー数 + followers_local: "(%{local} ローカル)" followers_url: Followers URL follows: フォロー数 header: ヘッダー @@ -172,6 +176,7 @@ ja: assigned_to_self_report: "%{name} さんがレポート %{target} を自身の担当に割り当てました" change_email_user: "%{name} さんが %{target} さんのメールアドレスを変更しました" confirm_user: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました" + create_account_warning: "%{name} さんが %{target} さんに警告メールを送信しました" create_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を追加しました" create_domain_block: "%{name} さんがドメイン %{target} をブロックしました" create_email_domain_block: "%{name} さんがドメイン %{target} をメールアドレス用ブラックリストに追加しました" @@ -256,7 +261,7 @@ ja: create: ブロックを作成 hint: ドメインブロックはデータベース中のアカウント項目の作成を妨げませんが、遡って自動的に指定されたモデレーションをそれらのアカウントに適用します。 severity: - desc_html: "サイレンスはアカウントのトゥートをフォローしていない人から隠します。停止はそのアカウントのコンテンツ、メディア、プロフィールデータをすべて削除します。メディアファイルの拒否はなしを使います。" + desc_html: "サイレンスはアカウントのトゥートをフォローしていない人から隠します。停止はそのアカウントのコンテンツ、メディア、プロフィールデータをすべて削除します。メディアファイルを拒否したいだけの場合はなしを使います。" noop: なし silence: サイレンス suspend: 停止 @@ -285,6 +290,9 @@ ja: create: ドメインを追加 title: メールアドレス用ブラックリスト新規追加 title: メールブラックリスト + followers: + back_to_account: 戻る + title: "%{acct}さんのフォロワー" instances: title: 既知のインスタンス invites: @@ -439,6 +447,12 @@ ja: unhide: ディレクトリに表示する visible: 表示 title: 管理 + warning_presets: + add_new: 追加 + delete: 削除 + edit: 編集 + edit_preset: プリセット警告文を編集 + title: プリセット警告文を管理 admin_mailer: new_report: body: "%{reporter} が %{target} を通報しました" @@ -901,6 +915,22 @@ ja: explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます! subject: アーカイブの準備ができました title: アーカイブの取り出し + warning: + explanation: + disable: アカウントが凍結されている間、データはそのまま残りますが、凍結が解除されるまでは何の操作もできません。 + silence: あなたのアカウントは制限されていますが、あなたをフォローしているユーザーのみ、このサーバー上の投稿を見ることができます。そしてあなたは様々な公開リストから除外されるかもしれません。ただし、他のユーザーは手動であなたをフォローすることができます。 + suspend: あなたのアカウントは停止されています。あなたの投稿とアップロードされたメディアファイルは、このサーバーとあなたのフォロワーが参加していたサーバーから完全に削除されました。 + review_server_policies: サーバーのポリシーを確認 + subject: + disable: あなたのアカウント %{acct} は凍結されています + none: "%{acct} に対する警告" + silence: あなたのアカウント %{acct} はサイレンスにされています + suspend: あなたのアカウント %{acct} は停止されています + title: + disable: アカウントが凍結されました + none: 警告 + silence: アカウントがサイレンスにされました + suspend: アカウントが停止されました welcome: edit_profile_action: プロフィールを設定 edit_profile_step: アバター画像やヘッダー画像をアップロードしたり、表示名やその他プロフィールを変更しカスタマイズすることができます。新しいフォロワーからのフォローを許可する前に検討したい場合、アカウントを承認制にすることができます。 diff --git a/config/locales/ko.yml b/config/locales/ko.yml index e0b4bbd0f6..a15066d194 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -70,6 +70,9 @@ ko: moderator: 모더레이터 unfollow: 팔로우 해제 admin: + account_actions: + action: 조치 취하기 + title: "%{acct} 계정에 조정 취하기" account_moderation_notes: create: 모더레이션 노트 작성하기 created_msg: 모더레이션 기록이 성공적으로 작성되었습니다! @@ -102,6 +105,7 @@ ko: enabled: 활성화된 feed_url: 피드 URL followers: 팔로워 수 + followers_local: "(%{local} 로컬)" followers_url: 팔로워 URL follows: 팔로잉 수 header: 헤더 @@ -172,6 +176,7 @@ ko: assigned_to_self_report: "%{name}이 리포트 %{target}을 자신에게 할당했습니다" change_email_user: "%{name}이 %{target}의 이메일 주소를 변경했습니다" confirm_user: "%{name}이 %{target}의 이메일 주소를 컨펌했습니다" + create_account_warning: "%{name}가 %{target}에게 경고 보냄" create_custom_emoji: "%{name}이 새로운 에모지 %{target}를 추가했습니다" create_domain_block: "%{name}이 도메인 %{target}를 차단했습니다" create_email_domain_block: "%{name}이 이메일 도메인 %{target}를 차단했습니다" @@ -287,6 +292,9 @@ ko: create: 차단 규칙 생성 title: 새 이메일 도메인 차단 title: Email 도메인 차단 + followers: + back_to_account: 계정으로 돌아가기 + title: "%{acct}의 팔로워" instances: title: 알려진 인스턴스들 invites: @@ -441,6 +449,12 @@ ko: unhide: 디렉토리에 표시 visible: 보여짐 title: 관리 + warning_presets: + add_new: 새로 추가 + delete: 삭제 + edit: 편집 + edit_preset: 경고 틀 수정 + title: 경고 틀 관리 admin_mailer: new_report: body: "%{reporter} 가 %{target} 를 신고했습니다" @@ -904,6 +918,22 @@ ko: explanation: 당신이 요청한 계정의 풀 백업이 이제 다운로드 가능합니다! subject: 당신의 아카이브를 다운로드 가능합니다 title: 아카이브 테이크 아웃 + warning: + explanation: + disable: 당신의 계정이 동결 된 동안 당신의 계정은 유지 됩니다. 하지만 잠금이 풀릴 때까지 당신은 아무 것도 할 수 없습니다. + silence: 당신의 계정이 제한 된 동안엔 당신의 팔로워 이외엔 툿을 받아 볼 수 없고 공개 리스팅에서 제외 됩니다. 하지만 다른 사람들은 여전히 당신을 팔로우 가능합니다. + suspend: 당신의 계정은 정지 되었으며, 모든 툿과 업로드 한 미디어가 서버에서 삭제 되어 되돌릴 수 없습니다. + review_server_policies: 서버 정책 검토하기 + subject: + disable: 당신의 계정 %{acct}가 동결 되었습니다 + none: "%{acct}에게의 경고" + silence: 당신의 계정 %{acct}가 제한 되었습니다 + suspend: 당신의 계정 %{acct}가 정지 되었습니다 + title: + disable: 계정 동결 됨 + none: 경고 + silence: 계정 제한 됨 + suspend: 계정 정지 됨 welcome: edit_profile_action: 프로필 설정 edit_profile_step: 아바타, 헤더를 업로드하고, 사람들에게 표시 될 이름을 바꾸는 것으로 당신의 프로필을 커스텀 할 수 있습니다. 사람들이 당신을 팔로우 하기 전에 리뷰를 거치게 하고 싶다면 계정을 잠그면 됩니다. diff --git a/config/locales/lv.yml b/config/locales/lv.yml new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/config/locales/lv.yml @@ -0,0 +1 @@ +{} diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 50fda80af1..776d01b451 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -70,6 +70,9 @@ nl: moderator: Moderator unfollow: Ontvolgen admin: + account_actions: + action: Actie uitvoeren + title: Moderatieactie op %{acct} uitvoeren account_moderation_notes: create: Laat een opmerking achter created_msg: Aanmaken van opmerking voor moderatoren geslaagd! @@ -102,6 +105,7 @@ nl: enabled: Ingeschakeld feed_url: Feed-URL followers: Volgers + followers_local: "(%{local} lokaal)" followers_url: Volgers-URL follows: Volgt header: Omslagfoto @@ -172,6 +176,7 @@ nl: assigned_to_self_report: "%{name} heeft rapportage %{target} aan zichzelf toegewezen" change_email_user: "%{name} veranderde het e-mailadres van gebruiker %{target}" confirm_user: E-mailadres van gebruiker %{target} is door %{name} bevestigd + create_account_warning: "%{name} verzond een waarschuwing naar %{target}" create_custom_emoji: Nieuwe emoji %{target} is door %{name} geüpload create_domain_block: Domein %{target} is door %{name} geblokkeerd create_email_domain_block: E-maildomein %{target} is door %{name} op de zwarte lijst geplaatst @@ -285,6 +290,9 @@ nl: create: Blokkeren title: Nieuw e-maildomein blokkeren title: E-maildomeinen blokkeren + followers: + back_to_account: Terug naar account + title: Volgers van %{acct} instances: title: Bekende servers invites: @@ -439,6 +447,12 @@ nl: unhide: In gebruikersgids tonen visible: Zichtbaar title: Beheer + warning_presets: + add_new: Nieuwe toevoegen + delete: Verwijderen + edit: Bewerken + edit_preset: Voorinstelling van waarschuwing bewerken + title: Voorinstellingen van waarschuwingen beheren admin_mailer: new_report: body: "%{reporter} heeft %{target} gerapporteerd" @@ -902,6 +916,18 @@ nl: explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload! subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen + warning: + review_server_policies: Serverbeleid bekijken + subject: + disable: Jouw account %{acct} is bevroren + none: Waarschuwing voor %{acct} + silence: Jouw account %{acct} is nu beperkt + suspend: Jouw account %{acct} is opgeschort + title: + disable: Account bevroren + none: Waarschuwing + silence: Account beperkt + suspend: Account opgeschort welcome: edit_profile_action: Profiel instellen edit_profile_step: Je kunt jouw profiel aanpassen door een avatar (profielfoto) en omslagfoto te uploaden, jouw weergavenaam in te stellen en iets over jezelf te vertellen. Wanneer je nieuwe volgers eerst wilt goedkeuren, kun je jouw account besloten maken. diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 6d4a6833b6..108f383b1b 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -70,6 +70,9 @@ oc: moderator: Moderador unfollow: Quitar de sègre admin: + account_actions: + action: Realizar una accion + title: Realizar una accion de moderacion sus %{acct} account_moderation_notes: create: Crear una nòta created_msg: Nòta de moderacion ben creada ! @@ -102,6 +105,7 @@ oc: enabled: Activat feed_url: Flux URL followers: Seguidors + followers_local: "(%{local} local)" followers_url: URL dels seguidors follows: Abonaments header: Bandièra @@ -172,6 +176,7 @@ oc: assigned_to_self_report: "%{name} s’assignèt lo rapòrt %{target}" change_email_user: "%{name} cambièt l’adreça de corrièl de %{target}" confirm_user: "%{name} confirmèt l’adreça a %{target}" + create_account_warning: "%{name} mandèt un avertiment a %{target}" create_custom_emoji: "%{name} mandèt un nòu emoji %{target}" create_domain_block: "%{name} bloquèt lo domeni %{target}" create_email_domain_block: "%{name} botèt a la lista nègra lo domeni de corrièl %{target}" @@ -285,6 +290,9 @@ oc: create: Crear un blocatge title: Nòu blocatge de domeni de corrièl title: Blocatge de domeni de corrièl + followers: + back_to_account: Tornar al compte + title: Seguidors de %{acct} instances: title: Instàncias conegudas invites: @@ -439,6 +447,12 @@ oc: unhide: Aparéisser dins l’annuari visible: Visible title: Administracion + warning_presets: + add_new: N’ajustar un nòu + delete: Escafar + edit: Modificar + edit_preset: Modificar lo tèxt predefinit d’avertiment + title: Gerir los tèxtes predefinits admin_mailer: new_report: body: "%{reporter} a senhalat %{target}" @@ -960,6 +974,22 @@ oc: explanation: Avètz demandat una salvagarda complèta de vòstre compte Mastodon. Es prèsta per telecargament ! subject: Vòstre archiu es prèst per telecargament title: Archiu per emportar + warning: + explanation: + disable: Quand vòstre compte es gelat, las donadas d’aqueste demòran senceras, mas podètz pas realizar cap d’accion fins que siá desblocat. + silence: Del temps que vòstre compte es limitat, solament lo monde que vos sègon veiràn vòstres tuts sus aqueste servidor, e poiriatz èsser tirat de mantunas listas publicas. Pasmens, d’autres vos pòdon sègre manualament. + suspend: Vòstre compte es suspendut e totes vòstres tuts e fichièrs enviats son estats suprimits sens retorn possible d’aqueste servidor e los de vòstres seguidors. + review_server_policies: Repassar las politicas del servidor + subject: + disable: Vòstre compte %{acct} es gelat + none: Avertiment per %{acct} + silence: Vòstre compte %{acct} es limitat + suspend: Vòstre compte %{acct} es suspendut + title: + disable: Compte gelat + none: Avertiment + silence: Compte limitat + suspend: Compte suspendut welcome: edit_profile_action: Configuracion del perfil edit_profile_step: Podètz personalizar lo perfil en mandar un avatard, cambiar l’escais-nom e mai. Se volètz repassar las demandas d’abonaments abans que los nòus seguidors pòscan veire vòstre perfil, podètz clavar vòstre compte. diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index a475209eed..5bd3c5fde9 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -70,6 +70,9 @@ pt-BR: moderator: Moderador unfollow: Deixar de seguir admin: + account_actions: + action: Tomar uma ação + title: Realizar uma ação de moderação em %{acct} account_moderation_notes: create: Criar uma advertência created_msg: Nota de moderação criada com sucesso! @@ -102,8 +105,10 @@ pt-BR: enabled: Ativado feed_url: URL do feed followers: Seguidores + followers_local: "(%{local} local)" followers_url: URL de seguidores follows: Segue + header: Cabeçalho inbox_url: URL da caixa de entrada ip: IP location: @@ -134,6 +139,7 @@ pt-BR: push_subscription_expires: Inscrição PuSH expira redownload: Atualizar avatar remove_avatar: Remover avatar + remove_header: Remover cabeçalho resend_confirmation: already_confirmed: Este usuário já está confirmado send: Re-enviar o e-mail de confirmação @@ -170,6 +176,7 @@ pt-BR: assigned_to_self_report: "%{name} designou a denúncia %{target} para si" change_email_user: "%{name} mudou o endereço de e-mail do usuário %{target}" confirm_user: "%{name} confirmou o endereço de e-mail do usuário %{target}" + create_account_warning: "%{name} enviou um aviso para %{target}" create_custom_emoji: "%{name} enviou o emoji novo %{target}" create_domain_block: "%{name} bloqueou o domínio %{target}" create_email_domain_block: "%{name} colocou o domínio de e-mail %{target} na lista negra" @@ -283,6 +290,9 @@ pt-BR: create: Adicionar domínio title: Novo bloqueio de domínio de e-mail title: Bloqueio de Domínio de E-mail + followers: + back_to_account: Voltar para a conta + title: Pessoas que seguem %{acct} instances: title: Instâncias conhecidas invites: @@ -437,6 +447,12 @@ pt-BR: unhide: Mostrar no diretório visible: Visível title: Administração + warning_presets: + add_new: Adicionar um novo + delete: Excluir + edit: Editar + edit_preset: Editar o aviso pré-definido + title: Gerenciar os avisos pré-definidos admin_mailer: new_report: body: "%{reporter} denunciou %{target}" @@ -900,6 +916,22 @@ pt-BR: explanation: Você pediu um backup completo da sua conta no Mastodon. E agora está pronto para ser baixado! subject: Seu arquivo está pronto para ser baixado title: Baixar arquivo + warning: + explanation: + disable: Enquanto sua conta está congelada, seus dados estão intactos, mas você não pode realizar nenhuma ação até que sua conta seja desbloqueada. + silence: Enquanto sua conta está limitada, somente pessoas que já estão seguindo você poderão ver seus toots nesse servidor, e você pode ser excluído de diversas listagens públicas. No entanto, outros ainda podem seguir você manualmente. + suspend: Sua conta está suspensa e todos os seus toots e mídias foram irreversivelmente removidas desse servidor e de servidores onde você tinha seguidores. + review_server_policies: Revisar as políticas do servidor + subject: + disable: Sua conta %{acct} foi congelada + none: Aviso para %{acct} + silence: Sua conta %{acct} foi limitada + suspend: Sua conta %{acct} foi suspensa + title: + disable: Conta congelada + none: Aviso + silence: Conta limitada + suspend: Conta suspensa welcome: edit_profile_action: Configurar perfil edit_profile_step: Você pode customizar o seu perfil enviando um avatar, uma imagem de topo, mudando seu nome de exibição, dentre outros. Se você gostaria de aprovar novos seguidores antes que eles possam seguir você, você pode trancar a sua conta. diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 3a104e1d05..60a38b7c69 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -1,7 +1,119 @@ --- ro: + about: + hosted_on: Mastodon găzduit de %{domain} accounts: posts: few: Toots one: Toot other: Toots + auth: + agreement_html: Prin apăsarea butonului Înscriere de mai jos ești deacord cu regulile acestei instanțe și termenii de utilizare al acestui serviciu. + change_password: Parolă + confirm_email: Confirmă email + delete_account: Șterge contul + delete_account_html: Dacă vrei să ștergi acest cont poți începe aici. Va trebui să confirmi această acțiune. + didnt_get_confirmation: Nu ai primit instrucțiunile de confirmare? + forgot_password: Ai uitat parola? + invalid_reset_password_token: Această cerere este invalidă sau a expirat. Încearcă resetarea parolei din nou. + login: Conectare + logout: Deconectare + migrate_account: Transfer către un alt cont + migrate_account_html: Dacă dorești să redirecționezi acest cont către un altul, poți configura asta aici. + or: sau + or_log_in_with: Sau conectează-te cu + providers: + cas: CAS + saml: SAML + register: Înregistrare + register_elsewhere: Înregistrează-te pe un alt server + resend_confirmation: Retrimite instrucțiunile de confirmare + reset_password: Resetare parolă + security: Securitate + set_new_password: Setează o nouă parolă + authorize_follow: + already_following: Urmărești deja acest cont + error: Din păcate a apărut o eroare + follow: Urmărește + follow_request: 'Ai trimis o cerere de urmărire către:' + following: 'Gata! De acum urmărești:' + post_follow: + close: Sau, poți închide această fereastră. + return: Arată profilul utilizatorului + web: Mergi la web + title: Urmărește %{acct} + datetime: + distance_in_words: + about_x_hours: "%{count}o" + about_x_months: "%{count}l" + about_x_years: "%{count}ani" + almost_x_years: "%{count}ani" + half_a_minute: Chiar acum + less_than_x_minutes: "%{count}l" + less_than_x_seconds: Chiar acum + over_x_years: "%{count}ani" + x_days: "%{count}z" + x_minutes: "%{count}m" + x_months: "%{count}l" + x_seconds: "%{count}s" + deletes: + bad_password_msg: Bună încercare, hackere! Parolă incorectă + confirm_password: Introdu parola curentă pentru a-ți verifica identitatea + description_html: Această acțiune este permanentă și ireversibilă, elimină conținutul și dezactivează contul tău. Acest username va rămâne permanent rezervat pentru a evita furtul de identitate. + proceed: Șterge contul + success_msg: Contul tău a fost șterg. Nu mai poate fi recuperat :D + warning_html: Doar ștergerea conținutului de pe acest server este garantată. Conținutul tău care a fost redistribuit în alte instațe e posibil să lase urme. Serverele deconecate sau care nu mai sunt abonate la actualizările contului tău nu își vor mai actualiza baza de date. + directories: + explanation: Descoperă utilizatori în funcție de interesele lor + explore_mastodon: Explorează %{title} + people: + few: "%{count} persoană" + one: "%{count} persoană" + other: "%{count} oameni" + errors: + '403': Nu ai permisiunea să vizitezi această pagină. + '404': Pagina pe care o cauți nu există. + '410': Pagina pe care o cauți nu mai există. + '422': + content: Verificarea securității a eșuat. Ai blocat cookiurile? + title: Verificarea securității a eșuat + '429': Strangulat + '500': + content: Ne pare rău, dar ceva a funcționat greșit. Încercați din nou!? + title: Această pagină nu este corectă + noscript_html: Pentru a utiliza o aplicație web Mastodon, te rog activează JavaScript. Alternativ, încearcă una din aplicațiile native Mastodon pentru platforma ta. + exports: + archive_takeout: + date: Data + download: Descarcă arhiva contului tău + hint_html: Poți solicita arhivapostărilor și conținutul media a contului tău. Datele furnizate sunt în formatul ActivityPub. Poți solicita cate o arhivă la 7 zile. + in_progress: Pregătim arhiva ta... + request: Cere arhiva ta + size: Dimensiune + blocks: Blocați + csv: CSV + follows: Tu urmărești + mutes: Opriți + storage: Depozitare media + filters: + contexts: + home: Fluxul Acasă + notifications: Notificări + public: Fluxul public + thread: Conversații + edit: + title: Editează filtru + errors: + invalid_context: Lipsa conținut sau acesta este invalid + invalid_irreversible: Filtrarea ireversibilă funcționează dor cu context din fluxul Acasă și notificări + index: + delete: Șterge + title: Filtre + new: + title: Adaugă un filtru nou + followers: + domain: Domeniu + explanation_html: Dacă vrei să fi sigur de confidențialitatea statusurilor tale, ar trebui să fi conștient de cine te urmărește. Statusurile tale private sunt livrate către toate instanțele unde ai urmăritori. Este recomandabil să verifici și să ștergi urmăritorii în care nu ai încredere că îți vor respecta intimitatea. + followers_count: Numărul de urmăritori + lock_link: Privează contul tău + purge: Elimină de la urmăritori diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index ae05d9e7fb..ad94a9d5d5 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -2,6 +2,10 @@ ar: simple_form: hints: + account_warning_preset: + text: بإمكانك استخدام نفس القواعد التي نجدها في التبويقات كعناوين الروابط والوسوم والإشارات + admin_account_action: + send_email_notification: سوف يتلقى المستخدم رسالة تُفسِّر ما حدث على حسابه defaults: autofollow: سوف يتابعك تلقائيًا الأشخاص الذين يقومون بالتسجيل من خلال الدعوة avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px @@ -37,6 +41,15 @@ ar: fields: name: التسمية value: المحتوى + admin_account_action: + send_email_notification: إشعار المستخدِم عبر البريد الإلكتروني + text: تحذير مخصص + type: الإجراء + types: + disable: تعطيل + none: لا تفعل شيئا + silence: كتم + suspend: تعليق و حذف كافة بيانات الحساب defaults: autofollow: إرسال دعوة لمتابعة حسابك avatar: الصورة الرمزية diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index ef12bb6a7b..4c2b1636dc 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -2,6 +2,13 @@ ca: simple_form: hints: + account_warning_preset: + text: Pots utilitzar totes les sintaxi com ara URL, etiquetes i mencions + admin_account_action: + send_email_notification: L'usuari rebrà una explicació del que ha passat amb el seu compte + text_html: Opcional. Pots utilitzar tota la sintaxi. Pots afegir configuracions predefinides d'avís per a estalviar temps + type_html: Tria què fer amb %{acct} + warning_preset_id: Opcional. Encara pots afegir text personalitzat al final de la configuració predefinida defaults: autofollow: Les persones que es registrin a través de la invitació et seguiran automàticament avatar: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px @@ -40,6 +47,18 @@ ca: fields: name: Etiqueta value: Contingut + account_warning_preset: + text: Text predefinit + admin_account_action: + send_email_notification: Notifica l'usuari per correu electrònic + text: Avís personalitzat + type: Acció + types: + disable: Inhabilita + none: No fer res + silence: Silenci + suspend: Suspèn i elimina irreversiblement les dades del compte + warning_preset_id: Utilitza una configuració predefinida d'avís defaults: autofollow: Convida a seguir el teu compte avatar: Avatar diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index b8ad23b32b..2fb0355569 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -2,6 +2,13 @@ co: simple_form: hints: + account_warning_preset: + text: Pudete utilizà a sintassa di i statuti, per esempiu l'URL, hashtag, minzione + admin_account_action: + send_email_notification: L'utilizatore hà da riceve una spiegazione di cio chì hè accadutu à u so contu + text_html: In uzzione. Pudete utilizà a sintassa di i statuti. Pudete ancu aghjustà preselezzione d'avertimentu per piglià tempu + type_html: Sceglie chì fà cù %{acct} + warning_preset_id: In uzzione. Pudete sempre aghjustà un testu persunalizatu à a fine di a preselezzione defaults: autofollow: Quelli·e chì s'arregistranu cù l'invitazione saranu autumaticamente abbunati·e à voi avatar: Furmatu PNG, GIF o JPG. %{size} o menu. Sarà ridottu à %{dimensions}px @@ -40,6 +47,18 @@ co: fields: name: Label value: Cuntinutu + account_warning_preset: + text: Testu preselezziunatu + admin_account_action: + send_email_notification: Nutificà l'utilizatore cù un'e-mail + text: Avertimentu persunalizatu + type: Azzione + types: + disable: Disattivà + none: Ùn fà nunda + silence: Silenzà + suspend: Suspende è sguassà i dati di u contu di manera irreversibile + warning_preset_id: Utilizà un'avertimentu preselezziunatu defaults: autofollow: Invità à siguità u vostru contu avatar: Ritrattu di prufile diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 1e58f42536..0e255e4dc1 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -2,6 +2,13 @@ cs: simple_form: hints: + account_warning_preset: + text: Můžete používat syntaxi tootů, jako například URL, hashtagy a zmínky + admin_account_action: + send_email_notification: Uživatel obdrží vysvětlení toho, co se stalo s jeho účtem + text_html: Volitelné. Můžete používat syntaxi tootů. Pro ušetření času si můžete přidat přednastavení pro varování + type_html: Vyberte, co chcete udělat s účtem %{acct} + warning_preset_id: Volitelné. Můžete stále vložit na konec přednastavení vlastní text defaults: autofollow: Lidé, kteří se zaregistrují přes pozvání, vás budou automaticky sledovat avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px @@ -40,8 +47,20 @@ cs: fields: name: Označení value: Obsah + account_warning_preset: + text: Text přednastavení + admin_account_action: + send_email_notification: Informovat uživatele e-mailem + text: Vlastní varování + type: Akce + types: + disable: Deaktivovat + none: Nic nedělat + silence: Utišit + suspend: Pozastavit a nenávratně smazat data účtu + warning_preset_id: Použít přednastavení pro varování defaults: - autofollow: Pozvěte ke sledování vašeho účtu + autofollow: Pozvat ke sledování vašeho účtu avatar: Avatar bot: Tohle je účet robota chosen_languages: Filtrovat jazyky diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 29a4b7651e..f73dbac963 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -2,6 +2,8 @@ da: simple_form: hints: + admin_account_action: + type_html: Vælg hvad du vil gøre med %{acct} defaults: autofollow: Folk der har oprettet sig gennem invitationen vil automatisk følge dig avatar: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px @@ -24,6 +26,7 @@ da: setting_hide_network: Hvem du følger og hvem der følger dig vil ikke blive vist på din profil setting_noindex: Påvirker din offentlige profil og status sider setting_theme: Påvirker hvordan Mastodon ser ud når du er logget ind via en hvilken som helst enhed. + username: Dit brugernavn vil være unikt på %{domain} whole_word: Når nøgle ordet eller udtrykket kun er alfanumerisk, vil det kun blive brugt hvis det passer hele ordet imports: data: CSV fil eksporteret fra en anden Mastodon instans @@ -36,6 +39,11 @@ da: fields: name: Etiket value: Indhold + admin_account_action: + type: Handling + types: + disable: Deaktiver + none: Gør intet defaults: autofollow: Inviter til at følge din konto avatar: Profilbillede @@ -67,7 +75,11 @@ da: setting_default_privacy: Privatliv setting_default_sensitive: Marker altid medier som værende følsomt setting_delete_modal: Vis bekræftelses dialog før du sletter et trut + setting_display_media: Visning af medier setting_display_media_default: Standard + setting_display_media_hide_all: Skjul alle + setting_display_media_show_all: Vis alle + setting_expand_spoilers: Udvid altid trut der er markeret med indholdsadvarsler setting_hide_network: Skjul dit netværk setting_noindex: Frameld dig søgemaskiners indeksering setting_reduce_motion: Reducer animationers bevægelse diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 8b9ca1b17b..6d0a9196f1 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -2,6 +2,13 @@ de: simple_form: hints: + account_warning_preset: + text: Du kannst Toot-Syntax benutzen, wie zum Beispiel URLs, Hashtags und Erwähnungen + admin_account_action: + send_email_notification: Der Benutzer erhält eine Erklärung, was mit seinem Account geschehen ist + text_html: Optional. Du kannst Toot-Syntax benutzen. Du kannst Warnungsvorlagen benutzen um Zeit zu sparen + type_html: Wähle aus, was du mit %{acct} machen möchtest + warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen defaults: autofollow: Leute die sich über deine Einladung registrieren werden dir automatisch folgen avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert @@ -40,6 +47,18 @@ de: fields: name: Bezeichnung value: Inhalt + account_warning_preset: + text: Vorlagentext + admin_account_action: + send_email_notification: Benachrichtige den Nutzer per E-Mail + text: Eigene Warnung + type: Aktion + types: + disable: Deaktivieren + none: Nichts tun + silence: Stummschalten + suspend: Deaktivieren und unwiderruflich Benutzerdaten löschen + warning_preset_id: Benutze eine Warnungsvorlage defaults: autofollow: Einladen, um deinen Account zu folgen avatar: Profilbild diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 599b2b5c79..fecddd11f5 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -2,6 +2,13 @@ el: simple_form: hints: + account_warning_preset: + text: Μπορεις να χρησιμοποιήσεις συντακτικό ενός τουτ όπως διευθύνσεις URL, ταμπέλες και αναφορές + admin_account_action: + send_email_notification: Ο χρήστης θα λάβει μια εξήγηση του τι συνέβη με τον λογαριασμό του + text_html: Προαιρετικό. Μπορείς να χρησιμοποιήσεις συντακτικό ενός τουτ. Μπορείς να ορίσεις προκαθορισμένες προειδοποιήσεις για να γλυτώσεις χρόνο + type_html: Διάλεξε τι θα κανείς με τον %{acct} + warning_preset_id: Προαιρετικό. Μπορείς να προσθέσεις επιπλέον κείμενο μετά το προκαθορισμένο κείμενο defaults: autofollow: Όσοι εγγραφούν μέσω της πρόσκλησης θα σε ακολουθούν αυτόματα avatar: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px @@ -40,6 +47,18 @@ el: fields: name: Ταμπέλα value: Περιεχόμενο + account_warning_preset: + text: Προκαθορισμένο κείμενο + admin_account_action: + send_email_notification: Ενημέρωση χρήστη μέσω email + text: Προσαρμοσμένη προειδοποίηση + type: Ενέργεια + types: + disable: Απενεργοποίηση + none: Καμία ενέργεια + silence: Αποσιώπηση + suspend: Αναστολή και αμετάκλητη διαγραφή στοιχείων λογαριασμού + warning_preset_id: Χρήση προκαθορισμένης προειδοποίησης defaults: autofollow: Προσκάλεσε για να ακολουθήσουν το λογαριασμό σου avatar: Αβατάρ diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 9537df88d7..0ffc22b53d 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -2,6 +2,13 @@ eu: simple_form: hints: + account_warning_preset: + text: Toot sintaxia erabili dezakezu, URLak, traolak eta aipamenak + admin_account_action: + send_email_notification: Erabiltzaileak bere kontuarekin gertatutakoaren azalpen bat jasoko du + text_html: Aukerakoa. Toot sintaxia erabili dezakezu. Abisu aurre-ezarpenak gehitu ditzakezu denbora aurrezteko + type_html: Erabaki zer egin %{acct} kontuarekin + warning_preset_id: Aukerakoa. Zure testua gehitu dezakezu aurre-ezarpenaren ostean defaults: autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko dizute avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da @@ -40,6 +47,17 @@ eu: fields: name: Etiketa value: Edukia + account_warning_preset: + text: Aurrez ezarritako testua + admin_account_action: + send_email_notification: Jakinarazi erabiltzaileari e-mail bidez + text: Abisu pertsonalizatua + type: Ekintza + types: + disable: Desaktibatu + none: Ez egin ezer + silence: Isiltarazi + warning_preset_id: Erabili aurre-ezarritako abisu bat defaults: autofollow: Gonbidatu zure kontua jarraitzera avatar: Abatarra diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 4637dc0a3a..21f81ecc27 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -2,6 +2,13 @@ fr: simple_form: hints: + account_warning_preset: + text: Vous pouvez utiliser la syntaxe des pouets, comme les URLs, les hashtags et les mentions + admin_account_action: + send_email_notification: L'utilisateur recevra une explication de ce qu'il s'est passé avec son compte + text_html: Optionnel. Vous pouvez utilisez la syntaxe des pouets. Vous pouvez ajouter des présélections d'attention pour économiser du temps + type_html: Choisir que faire avec %{acct} + warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de le présélection defaults: autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px @@ -40,6 +47,18 @@ fr: fields: name: Étiquette value: Contenu + account_warning_preset: + text: Texte de présélection + admin_account_action: + send_email_notification: Notifier l'utilisateur par courriel + text: Attention personnalisée + type: Action + types: + disable: Désactiver + none: Ne rien faire + silence: Silence + suspend: Suspendre et effacer les données du compte de manière irréversible + warning_preset_id: Utiliser une présélection d'attention defaults: autofollow: Invitation à suivre votre compte avatar: Image de profil diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 35bf5e0174..d5e0ef574a 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -2,6 +2,13 @@ gl: simple_form: hints: + account_warning_preset: + text: Vostede pode utilizar dar formato ao toot, como URLs, etiquetas e mencións + admin_account_action: + send_email_notification: A usuaria recibirá unha explicación sobre o que lle aconteceu a súa conta + text_html: Optativo. Pode utilizar formato no toot. Pode engadir avisos preestablecidos para aforrar tempo + type_html: Escolla que facer con %{acct} + warning_preset_id: Optativo. Poderá engadir texto personalizado ao final do preestablecido defaults: autofollow: As persoas que se conectaron a través de un convite seguirana automáticamente a vostede avatar: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px @@ -40,6 +47,18 @@ gl: fields: name: Etiqueta value: Contido + account_warning_preset: + text: Texto preestablecido + admin_account_action: + send_email_notification: Notificar a usuaria por correo-e + text: Aviso personalizado + type: Acción + types: + disable: Desactivar + none: Non facer nada + silence: Acalar + suspend: Suspender e eliminar irreversiblemente datos da conta + warning_preset_id: Utilizar un aviso preestablecido defaults: autofollow: Convide a seguir a súa conta avatar: Avatar diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 591b3ab0a1..dd43898d25 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -2,6 +2,13 @@ it: simple_form: hints: + account_warning_preset: + text: Puoi usare la sintassi dei toot, come URL, hashtag e menzioni + admin_account_action: + send_email_notification: L'utente riceverà una spiegazione di ciò che è successo con suo account + text_html: Opzionale. Puoi usare la sintassi dei toot. Puoi aggiungere avvisi preimpostati per risparmiare tempo + type_html: Decidi cosa fare con %{acct} + warning_preset_id: Opzionale. Puoi aggiungere un testo personalizzato alla fine di quello preimpostato defaults: autofollow: Le persone che si iscrivono attraverso l'invito ti seguiranno automaticamente avatar: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px @@ -40,6 +47,18 @@ it: fields: name: Etichetta value: Contenuto + account_warning_preset: + text: Testo preimpostato + admin_account_action: + send_email_notification: Informa l'utente via email + text: Avviso personalizzato + type: Azione + types: + disable: Disabilita + none: Non fare nulla + silence: Silenzia + suspend: Sospendi e cancella i dati dell'account in modo irreversibile + warning_preset_id: Usa un avviso preimpostato defaults: autofollow: Invita a seguire il tuo account avatar: Avatar diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 770822a3ea..f9beedb7e1 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -2,6 +2,13 @@ ja: simple_form: hints: + account_warning_preset: + text: URL、ハッシュタグ、メンションなど、投稿に用いる構文が使用できます + admin_account_action: + send_email_notification: ユーザーは自分のアカウントに何が起こったのか説明を受け取ります + text_html: オプションです。投稿に用いる構文を使うことができます。簡略化のためプリセット警告文を追加することができます + type_html: "%{acct}さんに対し、何を行うか選択してください" + warning_preset_id: オプションです。プリセット警告文の末尾に任意の文字列を追加することができます defaults: autofollow: 招待から登録した人が自動的にあなたをフォローするようになります avatar: "%{size}までのPNG、GIF、JPGが利用可能です。%{dimensions}pxまで縮小されます" @@ -40,6 +47,18 @@ ja: fields: name: ラベル value: 内容 + account_warning_preset: + text: プリセット警告文 + admin_account_action: + send_email_notification: メールでユーザーに通知 + text: カスタム警告文 + type: アクション + types: + disable: 無効化 + none: 何もしない + silence: サイレンス + suspend: 停止しアカウントのデータを恒久的に削除する + warning_preset_id: プリセット警告文を使用 defaults: autofollow: 招待から参加後、あなたをフォロー avatar: アイコン diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 02583b5bc6..fd0a1940ee 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -2,6 +2,13 @@ ko: simple_form: hints: + account_warning_preset: + text: URL, 해시태그, 멘션과 같은 툿 문법을 사용할 수 있습니다 + admin_account_action: + send_email_notification: 유저는 어떤 일이 일어났는 지에 대한 설명을 받게 됩니다 + text_html: 선택사항. 툿 문법을 사용할 수 있습니다. 경고 틀을 추가하여 시간을 절약할 수 있습니다 + type_html: "%{acct}에 대해 취할 행동 선택" + warning_preset_id: 선택사항. 틀의 마지막에 임의의 텍스트를 추가 할 수 있습니다 defaults: autofollow: 이 초대를 통해 가입하는 사람은 당신을 자동으로 팔로우 하게 됩니다 avatar: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 될 것임 @@ -40,6 +47,18 @@ ko: fields: name: 라벨 value: 내용 + account_warning_preset: + text: 프리셋 텍스트 + admin_account_action: + send_email_notification: 이메일로 유저에게 알리기 + text: 커스텀 경고 + type: 조치 + types: + disable: 비활성화 + none: 아무 것도 하지 않기 + silence: 침묵 + suspend: 정지하고 되돌릴 수 없는 데이터 삭제 + warning_preset_id: 경고 틀 사용하기 defaults: autofollow: 초대를 통한 팔로우 avatar: 아바타 diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 972b983393..ce56f613a1 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -40,6 +40,17 @@ nl: fields: name: Label value: Inhoud + account_warning_preset: + text: Tekst van voorinstelling + admin_account_action: + send_email_notification: Meld dit per e-mail aan de gebruiker + text: Aangepaste waarschuwing + type: Actie + types: + disable: Uitschakelen + none: Niets doen + silence: Negeren + warning_preset_id: Gebruik een voorinstelling van een waarschuwing defaults: autofollow: Uitnodigen om jouw account te volgen avatar: Avatar diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 8260d81e0c..6ded448e90 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -2,6 +2,13 @@ oc: simple_form: hints: + account_warning_preset: + text: Podètz utilizar la sintaxi dels tuts, coma las URL, las etiquetas e las mencions + admin_account_action: + send_email_notification: L’utilizaire recebrà una explicacion de çò qu’arribèt a son compte + text_html: Opcional. Podètz utilizar la sintaxi dels tuts. Podètz ajustar un avertiment personalizat per estalviar de temps + type_html: Causir de qué far amb %{acct} + warning_preset_id: Opcional. Podètz ajustar un tèxt personalizat a a fin de çò predefinit defaults: autofollow: Lo monde que se marcan gràcia a l’invitacion vos segràn automaticament avatar: PNG, GIF o JPG. Maximum %{size}. Serà retalhat en %{dimensions}px @@ -40,6 +47,18 @@ oc: fields: name: Nom value: Contengut + account_warning_preset: + text: Tèxt predefinit + admin_account_action: + send_email_notification: Avisar l’utilizaire per corrièl + text: Avertiment personalizat + type: Accions + types: + disable: Desactivar + none: Far pas res + silence: Metre en silence + suspend: Suspendre e escafar per de bon las donadas del compte + warning_preset_id: Utilizar un avertiment predefinit defaults: autofollow: Convidar a sègre vòstre compte avatar: Avatar diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 3d4e7414dc..664c07a463 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -2,6 +2,13 @@ pt-BR: simple_form: hints: + account_warning_preset: + text: Você pode usar a sintaxe de um toot, como URLs, hashtags e menções + admin_account_action: + send_email_notification: O usuário vai receber uma explicação do que aconteceu com a sua conta + text_html: Opcional. Você pode usar a sintaxe de toots. Você pode adicionar avisos pré-definidos para ganhar tempo. + type_html: Escolha o que fazer com %{acct} + warning_preset_id: Opcional. Você ainda pode adicionar texto customizado no fim do texto pré-definido defaults: autofollow: Pessoas que se cadastrarem através de seu convite te seguirão automaticamente avatar: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px @@ -40,6 +47,18 @@ pt-BR: fields: name: Rótulo value: Conteúdo + account_warning_preset: + text: Texto pré-definido + admin_account_action: + send_email_notification: Notificar o usuário por e-mail + text: Aviso customizado + type: Ação + types: + disable: Desabilitar + none: Não fazer nada + silence: Silenciar + suspend: Suspender e excluir irreversivelmente dados da conta + warning_preset_id: Usar um aviso pré-definido defaults: autofollow: Convite para seguir a sua conta avatar: Avatar diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index fcccd1a106..757b872043 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -2,24 +2,39 @@ ro: simple_form: hints: + account_warning_preset: + text: Poți utiliza sintaxe precum URL, hastag sau menționări + admin_account_action: + send_email_notification: Utilizatorul va primi o explicație cu privire la ceea ce sa întâmplat cu contul lui + text_html: Opțional. Poți utiliza sintaxe. Poți adăuga avertismente predefinite pentru a salva timp + type_html: Alege ce se întâmplă cu %{acct} + warning_preset_id: Opțional. Poți adăuga text personalizat la sfârșitul presetului defaults: autofollow: Persoanele care se înregistrează datorită invitației tale te vor urmări automat avatar: PNG, GIF sau JPG. Cel mult %{size}. Va fi redimensionată la %{dimensions}px bot: Acest cont performează în cea mai mare parte acțiuni automate și nu poate fi monitorizat context: Contextele în care filtrul trebuie aplicat digest: Este trimis doar după o lungă perioadă de inactivitate și numai dacă primești mesaje personale în perioada de absență + discoverable_html: Directorul permite utilizatorilor să găsească conturi după interese și activități. Necesită minim %{min_followers} urmăritori + email: Vei primi un e-mail de confirmare fields: Poti afișa pană la maxim 4 adrese sub formă de tabel pe pofilul tău header: PNG, GIF sau JPG. Cel mult %{size}. Vor fi redimensionate la %{dimensions}px inbox_url: Copiază adresa URL de pe prima pagină a reului pe care vrei să îl utilizezi irreversible: Postările sortate vor dispărea ireversibil, chiar dacă filtrul este ulterior șters locale: Limba interfaței de utilizator, e-mailurile si notificările push locked: Necesită aprobare manuală a urmăritorilor + password: Utilizează cel puțin 8 caractere phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia. + setting_aggregate_reblogs: Nu afișa redistribuirile noi pentru postările care au fost deja recent redistribuite (afectează doar noile redistribuiri primite) setting_default_language: Limba postărilor tale poate fi detectată automat, dar nu este întotdeauna precisă + setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW) + setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media + setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil setting_hide_network: Pe cine urmărești și cine te urmărește nu vor fi afișați pe profilul tău setting_noindex: Afecteazâ profilul tău public și statusurile tale setting_theme: Afecteazâ modul în care arată interfața pe toate dispozitivele pe care ești conectat. + username: Numele tău de utilizator va fi unic pe %{domain} whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă imports: data: Fișierul CSV exportat de la o altă instanță @@ -32,6 +47,18 @@ ro: fields: name: Etichetă value: Conținut + account_warning_preset: + text: Text presetat + admin_account_action: + send_email_notification: Notificați utilizatorul prin e-mail + text: Avertisment personalizat + type: Acțiune + types: + disable: Dezactivează + none: Nu fă nimic + silence: Liniște + suspend: Suspendă și șterge ireversibil datele contului + warning_preset_id: Utilizează un avertisment predefinit defaults: autofollow: Invită să te urmărească avatar: Fotografie de profil @@ -42,6 +69,7 @@ ro: context: Contextele filtrului current_password: Parola actuală data: Data + discoverable: Listează acest cont in director display_name: Numele afișat email: Adresa de e-mail expires_in: Expiră după @@ -63,6 +91,7 @@ ro: setting_default_privacy: Cine vede postările tale setting_default_sensitive: Întotdeauna marchează conținutul media ca sensibil setting_delete_modal: Arată dialogul de confirmare înainte de a șterge o postare + setting_display_media_default: Standard setting_hide_network: Ascunde rețeaua setting_noindex: Nu permite motoarelor de căutare să indexeze rețeaua ta setting_reduce_motion: Redu mișcarea în animații diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index 63403fe036..48363ea19a 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -2,6 +2,13 @@ sk: simple_form: hints: + account_warning_preset: + text: Môžeš používať rovnakú syntaxiu ako v rámci príspevkov, čiže URL, haštagy, a spomenutia + admin_account_action: + send_email_notification: Užívateľ dostane vysvetlenie ohľadom toho, čo sa stalo s ich účtom + text_html: Voliteľné. Môžeš používať rovnakú syntaxiu ako v príspevkoch. Môžeš pridať varovné predlohy a ušetriť tak čas + type_html: Vyber si, čo urobiť s účtom %{acct} + warning_preset_id: Voliteľné. Stále môžeš vložiť vlastný text na samý koniec predlohy defaults: autofollow: Ľudia ktorí sa zaregistrujú prostredníctvom pozvánky, ťa budú inheď následovať avatar: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px @@ -40,6 +47,18 @@ sk: fields: name: Označenie value: Obsah + account_warning_preset: + text: Text predlohy + admin_account_action: + send_email_notification: Oznám užívateľovi cez email + text: Špecifické varovanie + type: Úkon + types: + disable: Deaktivuj + none: Neurob nič + silence: Utíšenie + suspend: Vylúč a nenávratne vymaž dáta na účte + warning_preset_id: Použi varovnú predlohu defaults: autofollow: Pozvi k následovaniu tvojho profilu avatar: Avatar @@ -90,12 +109,12 @@ sk: username_or_email: Prezívka, alebo email whole_word: Celé slovo interactions: - must_be_follower: Blokovať oznámenia od užívateľov, ktorí ťa nesledujú - must_be_following: Blokovať oboznámenia ohľadom ľudí ktorých nesleduješ - must_be_following_dm: Blokovať súkromné správy od ľudí ktorých nesleduješ + must_be_follower: Blokuj oboznámenia ohľadom užívateľov, ktorí ťa nesledujú + must_be_following: Blokuj oboznámenia ohľadom ľudí ktorých nesleduješ + must_be_following_dm: Blokuj súkromné správy od ľudí ktorých nesleduješ notification_emails: - digest: Posielať súhrnné emaily - favourite: Poslať email ak niekto označí váš príspevok ako obľúbený + digest: Posielaj súhrnné emaily + favourite: Poslať email ak si niekto obľúbi tvoj príspevok follow: Poslať email, ak ťa niekto začne následovať follow_request: Zaslať email ak ti niekto pošle žiadosť o sledovanie mention: Poslať email ak ťa niekto spomenie v svojom príspevku diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 4b386e352a..91d1fdb8fe 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -74,6 +74,9 @@ sk: moderator: Moderátor unfollow: Prestaň sledovať admin: + account_actions: + action: Vykonaj + title: Vykonaj moderovací úkon voči %{acct} account_moderation_notes: create: Zanechaj poznámku created_msg: Poznámka moderátora bola úspešne vytvorená! @@ -106,6 +109,7 @@ sk: enabled: Povolený feed_url: URL časovej osi followers: Sledujúci + followers_local: "(%{local} local)" followers_url: URL sledujúcich follows: Sledovania header: Hlavička @@ -176,6 +180,7 @@ sk: assigned_to_self_report: "%{name}pridelil/a hlásenie užívateľa %{target}sebe" change_email_user: "%{name} zmenil/a emailovú adresu užívateľa %{target}" confirm_user: "%{name} potvrdil e-mailovú adresu používateľa %{target}" + create_account_warning: "%{name} poslal/a varovanie užívateľovi %{target}" create_custom_emoji: "%{name} nahral nový emoji %{target}" create_domain_block: "%{name} zablokoval doménu %{target}" create_email_domain_block: "%{name} pridal e-mailovú doménu %{target} na zoznam zakázaných" @@ -281,15 +286,18 @@ sk: undo: Vrátiť späť undo: Späť email_domain_blocks: - add_new: Pridať nový + add_new: Pridaj nový created_msg: Emailová doména bola úspešne pridaná do zoznamu zakázaných delete: Zmazať destroyed_msg: Emailová doména bola úspešne vymazaná zo zoznamu zakázaných domain: Doména new: - create: Pridať doménu + create: Pridaj doménu title: Nový email na zablokovanie title: Blokované emailové adresy + followers: + back_to_account: Späť na účet + title: Následovatielia užívateľa %{acct} instances: title: Známe instancie invites: @@ -444,6 +452,12 @@ sk: unhide: Ukáž v databázi visible: Viditeľné title: Spravovanie + warning_presets: + add_new: Pridaj nové + delete: Vymaž + edit: Uprav + edit_preset: Uprav varovnú predlohu + title: Spravuj varovné predlohy admin_mailer: new_report: body: "%{reporter} nahlásil/a %{target}" @@ -811,6 +825,18 @@ sk:
    • Základné informácie o účte: Ak sa na tomto serveri zaregistruješ, budeš môcť byť požiadaný/á zadať prezývku, emailovú adresu a heslo. Budeš tiež môcť zadať aj ďalšie profilové údaje, ako napríklad meno a životopis, a nahrať profilovú fotku aj obrázok v záhlaví. Tvoja prezývka, meno, životopis, profilová fotka a obrázok v záhlaví sú vždy zobrazené verejne.
    • Príspevky, sledovania a iné verejné informácie: + Zoznam ľudí, ktorých sleduješ je zobrazený verejne, a to isté platí aj pre zoznam tvojích následovateľov. Keď pošleš správu, ukladá sa jej dátum a čas, ale aj z akej aplikácie bola poslaná. Správy môžu obsahovať mediálne prílohy, ako obrázky a videá. Verejné, a nezaradené príspevky sú verejne prístupné. Keď si pripneš príspevok na svoj profil, toto je tiež verejne dostupnou informáciou. Tvoje príspevky sú takisto doručené tvojím sledovateľom, a to aj v rámci iných serverov, kde je potom uložená kópia tvojho príspevku. Ak vymažeš príspevok, táto akcia bude takisto doručená tvojím sledovateľom. Vyzdvihnutie, alebo obľúbenie iného príspevku je vždy verejne viditeľné.
    • + +
    • Priame príspevky, a príspevky iba pre sledovateľov: Všetky príspevky sú uložené a spracované na serveri. Príspevky iba pre sledovateľov sú doručené tvojím sledovateľom a užívateľom ktorí sú v nich spomenutí, pričom priame príspevky sú doručené iba tím užívateľom ktorí sú v nich spomenutí. V niektorých prípadoch to môže znamenať, že tieto príspevkz sú doručené aj vrámci iných serverov, a kópie príspevkov sú tam uložené. + V dobrej viere robíme všetko preto, aby bol prístup k tímto príspevkom vymedzený iba pre oprávnených používateľov, ale môže sa stať, že iné servery v tomto ohľade zlyhajú. Preto je dôležité prezrieť si a zhodnotiť, na aké servery patria tvoji následovatelia. V nastaveniach si môžeš zapnúť voľbu ručne povoľovať a odmietať nových následovateľov. + Prosím maj na pamäti, že správcovia tvojho, aj vzdialeného obdŕžiavajúceho servera majú možnosť vidieť dané príspevky a správy, ale aj že obdŕžitelia týchto správ si ich môzu odfotiť, skopírovať, alebo ich inak zdieľať. Nezdieľaj žiadne nebezpečné, alebo ohrozujúce správy pomocou Mastodonu!
    • + +
    • IPky a iné metadáta: Keď sa prihlásiš, zaznamenáva sa IP adresa z ktorej si sa prihlásil/a, takisto ako aj názov tvojho prehliadača. Všetky zaznamenané sezóny sú pre teba dostupné na konktolu, alebo na zamietnutie prístupu v nastaveniach. Posledná použitá IP adresa je uložená až po dobu dvanástich mesiacov. Môžeme si tiež ponechať serverové záznamy, ktoré obsahujú IP adresu každej požiadavky na tento server.
    • +
    + +
    + +

    title: Podmienky užívania, a pravidlá súkromia pre %{instance} themes: contrast: Vysoký kontrast @@ -841,6 +867,22 @@ sk: explanation: Vyžiadal/a si si úplnú zálohu svojho Mastodon účtu. Táto záloha je teraz pripravená na stiahnutie! subject: Tvoj archív je pripravený na stiahnutie title: Odber archívu + warning: + explanation: + disable: Pokiaľ je tvoj účet zamrazený, tvoje dáta zostávajú nedoknuté, ale nemôžeš v rámci neho nič robiť, až kým nebude odomknutý. + silence: Kým je tvoj účet obmedzený, tvoje hlášky na tomto serveri uvidia iba tí ľudia, ktorí ťa už následujú, a môžeš byť vylúčený/á z rôznych verejných záznamov. Ostatní ťa však stále budú môcť následovať manuálne. + suspend: Tvoj účet bol vylúčený, a všetky tvoje hlášky a nahraté médiálné súbory boli nenávratne zmazané z tohto serveru, a zo serverov na ktorých si mal následovateľov. + review_server_policies: Prehodnoť pravidlá servera + subject: + disable: Tvoj účet %{acct} bol zamrazený + none: Varovanie pre %{acct} + silence: Tvoj účet %{acct} bol obmedzený + suspend: Tvoj účet %{acct} bol vylúčený + title: + disable: Účet bol zamrazený + none: Varovanie + silence: Účet bol obmedzený + suspend: Tvoj účet bol vylúčený welcome: edit_profile_action: Nastav profil edit_profile_step: Profil si môžeš prispôsobiť nahratím portrétu a hlavičky, môžeš upraviť svoje meno a viac. Pokiaľ chceš preverovať nových následovateľov predtým než ťa budú môcť sledovať, môžeš uzamknúť svoj účet. diff --git a/config/locales/te.yml b/config/locales/te.yml index bde34980a3..39be5b687b 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -1,7 +1,130 @@ --- te: about: + about_hashtag_html: ఇవి #%{hashtag}తో ట్గాగ్ చేయబడిన పబ్లిక్ టూట్లు. ఫెడివర్స్ లో ఎక్కడ ఖాతావున్నా వీటిలో పాల్గొనవచ్చు. + about_mastodon_html: మాస్టొడాన్ అనేది ఒక సామాజిక మాధ్యమం. ఇది పూర్తిగా ఉచితం మరియు స్వేచ్ఛా సాఫ్టువేరు. ఈమెయిల్ లాగానే ఇది వికేంద్రీకరించబడినది. about_this: గురించి administered_by: 'నిర్వహణలో:' + api: API + apps: మొబైల్ యాప్స్ + closed_registrations: ప్రస్తుతం ఈ ఇన్స్టెన్స్ లో రిజిస్టేషన్లు మూసివేయబడ్డాయి. అయితే, వేరే ఇన్స్టెన్స్ లో ఖాతా తెరచికూడా ఈ ఇన్స్టెన్స్ ను అక్కడినుండే యాక్సెస్ చేయవచ్చు. contact: సంప్రదించండి + contact_missing: ఇంకా సెట్ చేయలేదు contact_unavailable: వర్తించదు + documentation: పత్రీకరణ + extended_description_html: | +

    నియమాలకు ఒక మంచి ప్రదేశం

    +

    మరింత విశదీకరణ ఇంకా సెట్ చేయబడలేదు.

    + features: + humane_approach_body: వేరే సామాజిక మాధ్యమాల వైఫల్యాల నుండి నేర్చుకుని, నైతిక రూపకల్పనలతో సామాజిక మాధ్యమాల దుర్వినియోగంపై మాస్టొడాన్ పోరాటం చేసే లక్ష్యంతో పనిచేస్తుంది. + humane_approach_title: మరింత మానవత్వంతో కూడిన విధానం + not_a_product_body: మాస్టొడాన్ వ్యాపార సంబంధిత మాధ్యమం కాదు. ఎటువంటి ప్రకటనలు, డేటా మైనింగ్, కంచెలు లేనిది. ఏ కేంద్ర అధికరమూ లేదు. + not_a_product_title: మీరొక వ్యక్తి, వస్తువు కాదు. + real_conversation_body: With 500 characters at your disposal and support for granular content and media warnings, you can express yourself the way you want to. + real_conversation_title: నిజమైన సంభాషణలకోసం నిర్మించబడింది + within_reach_body: ఆండ్రాయిడ్, iOS మరియు ఇతర ప్లాట్ఫాంలకు వివిధరకాల యాప్స్ వున్నాయి. డెవలపర్ సహిత API వ్యవస్థే ఇందుకు మూలకారణం. ఇవి మీ స్ణేహితులతో అన్నివేళలా అందుబాటులో వుండడానికి సహాయపడతాయి. + within_reach_title: ఎల్లప్పుడూ అందుబాటులో + generic_description: "%{domain} అనేది నెట్వర్కులోని ఒక సర్వరు" + hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది + learn_more: మరింత తెలుసుకోండి + other_instances: ఇన్స్టాన్స్ ల జాబితా + privacy_policy: గోప్యత విధానము + source_code: సోర్సు కోడ్ + status_count_after: + one: స్థితి + other: స్థితులు + status_count_before: ఎవరు రాశారు + terms: సేవా నిబంధనలు + user_count_after: + one: వినియోగదారు + other: వినియోగదారులు + user_count_before: హోం కు + what_is_mastodon: మాస్టొడాన్ అంటే ఏమిటి? + accounts: + choices_html: "%{name}'s ఎంపికలు:" + follow: అనుసరించు + followers: + one: అనుచరి + other: అనుచరులు + following: అనుసరిస్తున్నారు + joined: "%{date}న చేరారు" + last_active: చివరిగా క్రియాశీలకంగా వుంది + link_verified_on: ఈ లంకె యొక్క యాజమాన్యాన్ని చివరిగా పరిశీలించింది %{date}న + media: మీడియా + moved_html: "%{name} ఈ %{new_profile_link}కు మారారు:" + network_hidden: ఈ సమాచారం అందుబాటులో లేదు + nothing_here: ఇక్కడ ఏమీ లేదు! + people_followed_by: "%{name} అనుసరించే వ్యక్తులు" + people_who_follow: "%{name}ను అనుసరించే వ్యక్తులు" + pin_errors: + following: మీరు ధృవీకరించాలనుకుంటున్న వ్యక్తిని మీరిప్పటికే అనుసరిస్తూ వుండాలి + posts: + one: టూటు + other: టూట్లు + posts_tab_heading: టూట్లు + posts_with_replies: టూట్లు మరియు ప్రత్యుత్తరాలు + reserved_username: ఈ username రిజర్వ్ చేయబడింది + roles: + admin: నిర్వాహకులు + bot: బోట్ + moderator: నియంత్రికుడు + unfollow: అనుసరించవద్దు + admin: + account_actions: + action: చర్య తీసుకో + title: "%{acct}పై మోడరేషన్ చర్యను తీసుకో" + account_moderation_notes: + create: ఏదైనా గమనికను వదులు + created_msg: మోడరేషన్ గమనిక విజయవంతంగా సృష్టించబడింది! + delete: తీసివేయి + destroyed_msg: మోడరేషన్ గమనిక విజయవంతంగా తొలగించబడింది! + accounts: + are_you_sure: ఖచ్ఛితమేగా? + avatar: అవతారం + by_domain: డొమైను + change_email: + changed_msg: ఖాతా యొక్క ఈమెయిల్ విజయవంతంగా మార్చబడింది! + current_email: ప్రస్తుత ఈమెయిల్ + label: ఈమెయిల్ ను మార్చు + new_email: కొత్త ఈమెయిల్ + submit: ఈమెయిల్ ను మార్చు + title: "%{username} యొక్క ఈమెయిల్ ను మార్చు" + confirm: ధృవీకరించు + confirmed: ధృవీకరించబడింది + confirming: ధృవీకరిస్తుంది + demote: స్థానం తగ్గించు + disable: అచేతనం చేయి + disable_two_factor_authentication: 2FAను అచేతనం చేయి + disabled: అచేతనం చేయబడింది + display_name: పేరును చూపు + domain: డొమైను + edit: మార్చు + email: ఈమెయిల్ + email_status: ఈమెయిల్ స్థితి + enable: చేతనం + enabled: చేతనం చేయబడింది + feed_url: ఫీడ్ URL + followers: అనుచరులు + followers_local: "(%{local} local)" + followers_url: అనుచరుల URL + follows: అనుసరిస్తున్నారు + header: Header + inbox_url: ఇన్ బాక్స్ URL + ip: IP + location: + all: అన్నీ + local: లోకల్ + remote: రిమోట్ + title: లొకేషన్ + login_status: లాగిన్ స్థితి + media_attachments: మీడియా అటాచ్మెంట్లు + memorialize: Turn into memoriam + moderation: + active: యాక్టివ్ + all: అన్నీ + silenced: నిశ్శబ్ధం చేయబడింది + suspended: నిషేధించబడింది + title: మోడరేషన్ + moderation_notes: మోడరేషన్ నోట్స్ + most_recent_activity: ఇటీవల యాక్టివిటీ + most_recent_ip: ఇటీవలి IP From b418ef5ba8ccddeeafadde7d47249ba1a34d80d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 8 Jan 2019 14:10:30 +0100 Subject: [PATCH 47/64] Bump nokogiri from 1.9.1 to 1.10.0 (#9757) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.9.1 to 1.10.0. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/master/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.9.1...v1.10.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index db2eecd8d7..ec51950ca5 100644 --- a/Gemfile +++ b/Gemfile @@ -57,7 +57,7 @@ gem 'idn-ruby', require: 'idn' gem 'kaminari', '~> 1.1' gem 'link_header', '~> 0.0' gem 'mime-types', '~> 3.2', require: 'mime/types/columnar' -gem 'nokogiri', '~> 1.9' +gem 'nokogiri', '~> 1.10' gem 'nsa', '~> 0.2' gem 'oj', '~> 3.7' gem 'ostatus2', '~> 2.0' diff --git a/Gemfile.lock b/Gemfile.lock index 57d4e835f2..8718bc89bd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -354,7 +354,7 @@ GEM net-ssh (>= 2.6.5) net-ssh (5.0.2) nio4r (2.3.1) - nokogiri (1.9.1) + nokogiri (1.10.0) mini_portile2 (~> 2.4.0) nokogumbo (2.0.0) nokogiri (~> 1.8, >= 1.8.4) @@ -709,7 +709,7 @@ DEPENDENCIES microformats (~> 4.0) mime-types (~> 3.2) net-ldap (~> 0.10) - nokogiri (~> 1.9) + nokogiri (~> 1.10) nsa (~> 0.2) oj (~> 3.7) omniauth (~> 1.9) From 15aed1ee6c97b428c564e370cff77a158842a612 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Jan 2019 14:10:54 +0100 Subject: [PATCH 48/64] Bump version to 2.7.0rc1 (#9718) --- lib/mastodon/version.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index cb5c2440cb..d0511eadb2 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -9,11 +9,11 @@ module Mastodon end def minor - 6 + 7 end def patch - 5 + 0 end def pre @@ -21,7 +21,7 @@ module Mastodon end def flags - '' + 'rc1' end def to_a From 266d4cb92ba79f6259b026f6382874be52523278 Mon Sep 17 00:00:00 2001 From: mayaeh Date: Tue, 8 Jan 2019 22:32:36 +0900 Subject: [PATCH 49/64] Changed not to display DISCOVER subheader via single column layout. (#9759) --- app/javascript/mastodon/features/getting_started/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index d56e7f1427..709a3aa96d 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -94,7 +94,7 @@ class GettingStarted extends ImmutablePureComponent { if (profile_directory) { navItems.push( - , + ); height += 48; @@ -107,11 +107,10 @@ class GettingStarted extends ImmutablePureComponent { height += 34; } else if (profile_directory) { navItems.push( - , - , + ); - height += 34 + 48; + height += 48; } navItems.push( From a6c27eaa5ede718a223007ac3bb17bfca02c7444 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Jan 2019 17:31:58 +0100 Subject: [PATCH 50/64] Remove obsolete web UI translations (#9761) --- app/javascript/mastodon/locales/ar.json | 21 ---- app/javascript/mastodon/locales/ast.json | 21 ---- app/javascript/mastodon/locales/bg.json | 21 ---- app/javascript/mastodon/locales/ca.json | 21 ---- app/javascript/mastodon/locales/co.json | 21 ---- app/javascript/mastodon/locales/cs.json | 21 ---- app/javascript/mastodon/locales/cy.json | 21 ---- app/javascript/mastodon/locales/da.json | 21 ---- app/javascript/mastodon/locales/de.json | 21 ---- .../mastodon/locales/defaultMessages.json | 105 ------------------ app/javascript/mastodon/locales/el.json | 21 ---- app/javascript/mastodon/locales/en.json | 21 ---- app/javascript/mastodon/locales/eo.json | 21 ---- app/javascript/mastodon/locales/es.json | 21 ---- app/javascript/mastodon/locales/eu.json | 21 ---- app/javascript/mastodon/locales/fa.json | 21 ---- app/javascript/mastodon/locales/fi.json | 21 ---- app/javascript/mastodon/locales/fr.json | 21 ---- app/javascript/mastodon/locales/gl.json | 21 ---- app/javascript/mastodon/locales/he.json | 21 ---- app/javascript/mastodon/locales/hr.json | 21 ---- app/javascript/mastodon/locales/hu.json | 21 ---- app/javascript/mastodon/locales/hy.json | 21 ---- app/javascript/mastodon/locales/id.json | 21 ---- app/javascript/mastodon/locales/io.json | 21 ---- app/javascript/mastodon/locales/it.json | 21 ---- app/javascript/mastodon/locales/ja.json | 21 ---- app/javascript/mastodon/locales/ka.json | 21 ---- app/javascript/mastodon/locales/ko.json | 21 ---- app/javascript/mastodon/locales/lv.json | 21 ---- app/javascript/mastodon/locales/ms.json | 21 ---- app/javascript/mastodon/locales/nl.json | 21 ---- app/javascript/mastodon/locales/no.json | 21 ---- app/javascript/mastodon/locales/oc.json | 21 ---- app/javascript/mastodon/locales/pl.json | 21 ---- app/javascript/mastodon/locales/pt-BR.json | 21 ---- app/javascript/mastodon/locales/pt.json | 21 ---- app/javascript/mastodon/locales/ro.json | 21 ---- app/javascript/mastodon/locales/ru.json | 21 ---- app/javascript/mastodon/locales/sk.json | 21 ---- app/javascript/mastodon/locales/sl.json | 21 ---- app/javascript/mastodon/locales/sr-Latn.json | 21 ---- app/javascript/mastodon/locales/sr.json | 21 ---- app/javascript/mastodon/locales/sv.json | 21 ---- app/javascript/mastodon/locales/ta.json | 21 ---- app/javascript/mastodon/locales/te.json | 21 ---- app/javascript/mastodon/locales/th.json | 21 ---- app/javascript/mastodon/locales/tr.json | 21 ---- app/javascript/mastodon/locales/uk.json | 21 ---- app/javascript/mastodon/locales/zh-CN.json | 21 ---- app/javascript/mastodon/locales/zh-HK.json | 21 ---- app/javascript/mastodon/locales/zh-TW.json | 21 ---- 52 files changed, 1176 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index bf3f01d8eb..f558a6ddcc 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "يتابِع", "notifications.filter.mentions": "الإشارات", "notifications.group": "{count} إشعارات", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "إضبط خصوصية المنشور", "privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط", "privacy.direct.short": "مباشر", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index b53a28c687..a9407e82dd 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} avisos", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 47a4d9d315..a812f5cb1a 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 86027576ea..6b911711ea 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Seguiments", "notifications.filter.mentions": "Mencions", "notifications.group": "{count} notificacions", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Ajusta l'estat de privacitat", "privacy.direct.long": "Publicar només per als usuaris esmentats", "privacy.direct.short": "Directe", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 93ad713037..0277a513b0 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Abbunamenti", "notifications.filter.mentions": "Minzione", "notifications.group": "{count} nutificazione", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Mudificà a cunfidenzialità di u statutu", "privacy.direct.long": "Mandà solu à quelli chì so mintuvati", "privacy.direct.short": "Direttu", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 5a8b14788c..31c21cce5b 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Sledování", "notifications.filter.mentions": "Zmínky", "notifications.group": "{count} oznámení", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Změnit soukromí příspěvku", "privacy.direct.long": "Odeslat pouze zmíněným uživatelům", "privacy.direct.short": "Přímý", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 91aeb2567e..a25497f78a 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} o hysbysiadau", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Addasu preifatrwdd y statws", "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig", "privacy.direct.short": "Uniongyrchol", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index de4862339e..60315211ad 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Følger", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifikationer", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Ændre status privatliv", "privacy.direct.long": "Post til kun de nævnte brugere", "privacy.direct.short": "Direkte", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 5cbc9623a3..7d5f0348a0 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Erwähnungen", "notifications.group": "{count} Benachrichtigungen", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Sichtbarkeit des Beitrags anpassen", "privacy.direct.long": "Beitrag nur an erwähnte Profile", "privacy.direct.short": "Direkt", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index d1ca496266..951081f8d8 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -2119,111 +2119,6 @@ ], "path": "app/javascript/mastodon/features/ui/components/mute_modal.json" }, - { - "descriptors": [ - { - "defaultMessage": "Home", - "id": "column.home" - }, - { - "defaultMessage": "Notifications", - "id": "column.notifications" - }, - { - "defaultMessage": "Local timeline", - "id": "column.community" - }, - { - "defaultMessage": "Federated timeline", - "id": "column.public" - }, - { - "defaultMessage": "Welcome to Mastodon!", - "id": "onboarding.page_one.welcome" - }, - { - "defaultMessage": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "id": "onboarding.page_one.federation" - }, - { - "defaultMessage": "Your full handle", - "id": "onboarding.page_one.full_handle" - }, - { - "defaultMessage": "This is what you would tell your friends to search for.", - "id": "onboarding.page_one.handle_hint" - }, - { - "defaultMessage": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "id": "onboarding.page_two.compose" - }, - { - "defaultMessage": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "id": "onboarding.page_three.search" - }, - { - "defaultMessage": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "id": "onboarding.page_three.profile" - }, - { - "defaultMessage": "The home timeline shows posts from people you follow.", - "id": "onboarding.page_four.home" - }, - { - "defaultMessage": "The notifications column shows when someone interacts with you.", - "id": "onboarding.page_four.notifications" - }, - { - "defaultMessage": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "id": "onboarding.page_five.public_timelines" - }, - { - "defaultMessage": "Your instance's admin is {admin}.", - "id": "onboarding.page_six.admin" - }, - { - "defaultMessage": "Please read {domain}'s {guidelines}!", - "id": "onboarding.page_six.read_guidelines" - }, - { - "defaultMessage": "community guidelines", - "id": "onboarding.page_six.guidelines" - }, - { - "defaultMessage": "Almost done...", - "id": "onboarding.page_six.almost_done" - }, - { - "defaultMessage": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "id": "onboarding.page_six.github" - }, - { - "defaultMessage": "There are {apps} available for iOS, Android and other platforms.", - "id": "onboarding.page_six.apps_available" - }, - { - "defaultMessage": "mobile apps", - "id": "onboarding.page_six.various_app" - }, - { - "defaultMessage": "Bon Appetoot!", - "id": "onboarding.page_six.appetoot" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - }, - { - "defaultMessage": "Done", - "id": "onboarding.done" - }, - { - "defaultMessage": "Skip", - "id": "onboarding.skip" - } - ], - "path": "app/javascript/mastodon/features/ui/components/onboarding_modal.json" - }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index aad9544715..7b4852271b 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Ακόλουθοι", "notifications.filter.mentions": "Αναφορές", "notifications.group": "{count} ειδοποιήσεις", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης", "privacy.direct.long": "Δημοσίευση μόνο σε όσους και όσες αναφέρονται", "privacy.direct.short": "Προσωπικά", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 115ad5679e..1dbf280222 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 928731e242..8be964a52a 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} sciigoj", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Agordi mesaĝan privatecon", "privacy.direct.long": "Afiŝi nur al menciitaj uzantoj", "privacy.direct.short": "Rekta", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 8e5648638e..4f73dbba24 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notificaciones", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", "privacy.direct.short": "Directo", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 0f9d8c50f6..0602fbf9e9 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Jarraipenak", "notifications.filter.mentions": "Aipamenak", "notifications.group": "{count} jakinarazpen", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Doitu mezuaren pribatutasuna", "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez", "privacy.direct.short": "Zuzena", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index ae561f3720..b11d88d875 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} اعلان", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "تنظیم حریم خصوصی نوشته‌ها", "privacy.direct.long": "تنها به کاربران نام‌برده‌شده نشان بده", "privacy.direct.short": "مستقیم", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 08bcdfea8d..c8d2586723 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Säädä tuuttauksen näkyvyyttä", "privacy.direct.long": "Julkaise vain mainituille käyttäjille", "privacy.direct.short": "Suora viesti", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 8098790dd9..35e41d7bbb 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Suiveurs", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Ajuster la confidentialité du message", "privacy.direct.long": "N’envoyer qu’aux personnes mentionnées", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 11129ed488..23bbed74d4 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Seguimentos", "notifications.filter.mentions": "Mencións", "notifications.group": "{count} notificacións", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Axustar a intimidade do estado", "privacy.direct.long": "Enviar exclusivamente as usuarias mencionadas", "privacy.direct.short": "Directa", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 64cf778b5c..e27e7f09e6 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "שינוי פרטיות ההודעה", "privacy.direct.long": "הצג רק למי שהודעה זו פונה אליו", "privacy.direct.short": "הודעה ישירה", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 3479ceae2e..71dd5319e7 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Podesi status privatnosti", "privacy.direct.long": "Prikaži samo spomenutim korisnicima", "privacy.direct.short": "Direktno", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 973fa0da83..c2842aea7b 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Státusz láthatóságának módosítása", "privacy.direct.long": "Posztolás csak az említett felhasználóknak", "privacy.direct.short": "Egyenesen", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index bc180410ba..6919948874 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Կարգավորել թթի գաղտնիությունը", "privacy.direct.long": "Թթել միայն նշված օգտատերերի համար", "privacy.direct.short": "Հասցեագրված", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 2dad3dc9ef..eed61af707 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Tentukan privasi status", "privacy.direct.long": "Kirim hanya ke pengguna yang disebut", "privacy.direct.short": "Langsung", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 00b97c294b..b26fa6c4ab 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Aranjar privateso di mesaji", "privacy.direct.long": "Sendar nur a mencionata uzeri", "privacy.direct.short": "Direte", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 265491347a..1f52d37248 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Seguaci", "notifications.filter.mentions": "Menzioni", "notifications.group": "{count} notifiche", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Modifica privacy del post", "privacy.direct.long": "Invia solo a utenti menzionati", "privacy.direct.short": "Diretto", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index db2df61a73..f8a813fbaf 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "フォロー", "notifications.filter.mentions": "返信", "notifications.group": "{count} 件の通知", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "投稿のプライバシーを変更", "privacy.direct.long": "メンションしたユーザーだけに公開", "privacy.direct.short": "ダイレクト", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 9ae97cbb68..93a11027a6 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} შეტყობინება", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "სტატუსის კონფიდენციალურობის მითითება", "privacy.direct.long": "დაიპოსტოს მხოლოდ დასახელებულ მომხმარებლებთან", "privacy.direct.short": "პირდაპირი", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index c828557b7d..0d707afb1c 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "팔로우", "notifications.filter.mentions": "멘션", "notifications.group": "{count} 개의 알림", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "포스트의 프라이버시 설정을 변경", "privacy.direct.long": "멘션한 사용자에게만 공개", "privacy.direct.short": "다이렉트", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 869ebd6561..0d510d011f 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 869ebd6561..0d510d011f 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index e98ce725d1..e5f7b0bdff 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Die jij volgt", "notifications.filter.mentions": "Vermeldingen", "notifications.group": "{count} meldingen", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Zichtbaarheid toot aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 7607d9c1fa..fa08e8d73b 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Justér synlighet", "privacy.direct.long": "Post kun til nevnte brukere", "privacy.direct.short": "Direkte", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 49da66da09..87fbf54c3e 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Seguiments", "notifications.filter.mentions": "Mencions", "notifications.group": "{count} notificacions", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Ajustar la confidencialitat del messatge", "privacy.direct.long": "Mostrar pas qu’a las personas mencionadas", "privacy.direct.short": "Dirècte", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index ca518a7605..73545732e1 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Śledzenia", "notifications.filter.mentions": "Wspomienia", "notifications.group": "{count, number} {count, plural, one {powiadomienie} few {powiadomienia} many {powiadomień} more {powiadomień}}", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Dostosuj widoczność wpisów", "privacy.direct.long": "Widoczny tylko dla wspomnianych", "privacy.direct.short": "Bezpośrednio", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index b0ae94ef53..b0555bd0ca 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Seguidores", "notifications.filter.mentions": "Menções", "notifications.group": "{count} notificações", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Ajustar a privacidade da mensagem", "privacy.direct.long": "Apenas para usuários mencionados", "privacy.direct.short": "Direta", diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json index 5609f0355e..d4126704a2 100644 --- a/app/javascript/mastodon/locales/pt.json +++ b/app/javascript/mastodon/locales/pt.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Ajustar a privacidade da mensagem", "privacy.direct.long": "Apenas para utilizadores mencionados", "privacy.direct.short": "Directo", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index c658d0dc7b..f213f8ea3e 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Urmărește", "notifications.filter.mentions": "Menționări", "notifications.group": "{count} notificări", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Cine vede asta", "privacy.direct.long": "Postează doar pentru utilizatorii menționați", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index a1a31ccad4..cb60108986 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} уведомл.", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Изменить видимость статуса", "privacy.direct.long": "Показать только упомянутым", "privacy.direct.short": "Направленный", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index ec2a53ecf6..d874ed0aa0 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Sledovania", "notifications.filter.mentions": "Spomenutia", "notifications.group": "{count} oznámenia", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Zmeňiť viditeľnosť statusu", "privacy.direct.long": "Poslať priamo iba spomenutým používateľom", "privacy.direct.short": "Súkromne", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 85ce4ec44b..cabad737d6 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 60fe3bef2b..c8513dbe18 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Podesi status privatnosti", "privacy.direct.long": "Objavi samo korisnicima koji su pomenuti", "privacy.direct.short": "Direktno", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 5f7300a64f..6e0ac6eca7 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} обавештења", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Подеси статус приватности", "privacy.direct.long": "Објави само корисницима који су поменути", "privacy.direct.short": "Директно", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index a4571f9a2f..47ce8497a6 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} aviseringar", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Justera sekretess", "privacy.direct.long": "Skicka endast till nämnda användare", "privacy.direct.short": "Direkt", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 869ebd6561..0d510d011f 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 828e59b95f..7306ec0019 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "అనుసరిస్తున్నవి", "notifications.filter.mentions": "పేర్కొన్నవి", "notifications.group": "{count} ప్రకటనలు", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "స్టేటస్ గోప్యతను సర్దుబాటు చేయండి", "privacy.direct.long": "పేర్కొన్న వినియోగదారులకు మాత్రమే పోస్ట్ చేయి", "privacy.direct.short": "ప్రత్యక్ష", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 2e7c24c494..2683284f42 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 0dab743d9c..5d8fc229e6 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} notifications", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Gönderi gizliliğini ayarla", "privacy.direct.long": "Sadece bahsedilen kişilere gönder", "privacy.direct.short": "Direkt", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 484edfdd85..606dda89fc 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} сповіщень", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "Змінити видимість допису", "privacy.direct.long": "Показати тільки згаданим користувачам", "privacy.direct.short": "Направлений", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 5448f50714..dfa261d6e4 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} 条通知", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "设置嘟文可见范围", "privacy.direct.long": "只有被提及的用户能看到", "privacy.direct.short": "私信", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index cdcc5a882f..e57aa6d96d 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} 條通知", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "調整私隱設定", "privacy.direct.long": "只有提及的用戶能看到", "privacy.direct.short": "私人訊息", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 1b233202da..0cbe5da5aa 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -257,27 +257,6 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.group": "{count} 條通知", - "onboarding.done": "Done", - "onboarding.next": "Next", - "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", - "onboarding.page_four.home": "The home timeline shows posts from people you follow.", - "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", - "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", - "onboarding.page_one.full_handle": "Your full handle", - "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", - "onboarding.page_one.welcome": "Welcome to Mastodon!", - "onboarding.page_six.admin": "Your instance's admin is {admin}.", - "onboarding.page_six.almost_done": "Almost done...", - "onboarding.page_six.appetoot": "Bon Appetoot!", - "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", - "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", - "onboarding.page_six.guidelines": "community guidelines", - "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", - "onboarding.page_six.various_app": "mobile apps", - "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", - "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", - "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", - "onboarding.skip": "Skip", "privacy.change": "調整隱私狀態", "privacy.direct.long": "只有被提到的使用者能看到", "privacy.direct.short": "私訊", From a269ffdfa5721c6d51c33a143ed28c740d17f247 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Jan 2019 17:41:27 +0100 Subject: [PATCH 51/64] Change "federation" admin UI link to point to "limited" domains (#9762) --- app/views/admin/instances/_instance.html.haml | 5 ----- config/navigation.rb | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 app/views/admin/instances/_instance.html.haml diff --git a/app/views/admin/instances/_instance.html.haml b/app/views/admin/instances/_instance.html.haml deleted file mode 100644 index 57d3e0b068..0000000000 --- a/app/views/admin/instances/_instance.html.haml +++ /dev/null @@ -1,5 +0,0 @@ -%tr - %td - = link_to instance.domain, admin_instance_path(instance) - %td.count - = instance.accounts_count diff --git a/config/navigation.rb b/config/navigation.rb index 2365191dc2..a9521f956d 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -29,7 +29,7 @@ SimpleNavigation::Configuration.run do |navigation| admin.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url, highlights_on: %r{/admin/accounts} admin.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path admin.item :tags, safe_join([fa_icon('tag fw'), t('admin.tags.title')]), admin_tags_path - admin.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url, highlights_on: %r{/admin/instances|/admin/domain_blocks}, if: -> { current_user.admin? } + admin.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url(limited: '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks}, if: -> { current_user.admin? } admin.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? } end From 6686d2b7a79d611f56711492db281b2442a52cb3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Jan 2019 18:12:10 +0100 Subject: [PATCH 52/64] Update changelog for 2.7.0rc1 (#9763) --- CHANGELOG.md | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e24df451b..0ce92ec001 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,111 @@ Changelog All notable changes to this project will be documented in this file. +## [Unreleased] +### Added + +- Add link for adding a user to a list from their profile (#9062) +- Add joining several hashtags in a single column (#8904) +- Add volume sliders for videos (#9366) +- Add a tooltip explaining what a locked account is (#9403) +- Add preloaded cache for common JSON-LD contexts (#9412) +- Add profile directory (#9427) +- Add setting to not group reblogs in home feed (#9248) +- Add admin ability to remove a user's header image (#9495) +- Add account hashtags to ActivityPub actor JSON (#9450) +- Add error message for avatar image that's too large (#9518) +- Add notification quick-filter bar (#9399) +- Add new first-time tutorial (#9531) +- Add moderation warnings (#9519) +- Add emoji codepoint mappings for v11.0 (#9618) +- Add REST API for creating an account (#9572) +- Add support for Malayalam in language filter (#9624) +- Add exclude_reblogs option to account statuses API (#9640) +- Add local followers page to admin account UI (#9610) +- Add healthcheck commands to docker-compose.yml (#9143) +- Add handler for Move activity to migrate followers (#9629) +- Add CSV export for lists and domain blocks (#9677) +- Add `tootctl accounts follow ACCT` (#9414) +- Add scheduled statuses (#9706) +- Add immutable caching for S3 objects (#9722) +- Add cache to custom emojis API (#9732) +- Add preview cards to non-detailed statuses on public pages (#9714) +- Add `mod` and `moderator` to list of default reserved usernames (#9713) +- Add quick links to the admin interface in the web UI (#8545) + +### Changed + +- Temporarily pause timeline if mouse moved recently (#9200) +- Change the password form order (#9267) +- Redesign admin UI for accounts (#9340, #9643) +- Redesign admin UI for instances/domain blocks (#9645) +- Swap avatar and header input fields in profile page (#9271) +- When posting in mobile mode, go back to previous history location (#9502) +- Split out is_changing_upload from is_submitting (#9536) +- Back to the getting-started when pins the timeline. (#9561) +- Allow unauthenticated REST API access to GET /api/v1/accounts/:id/statuses (#9573) +- Limit maximum visibility of local silenced users to unlisted (#9583) +- Change API error message for unconfirmed accounts (#9625) +- Change the icon to "reply-all" when it's a reply to other accounts (#9378) +- Do not ignore federated reports targetting already-reported accounts (#9534) +- Upgrade default Ruby version to 2.6.0 (#9688) +- Change e-mail digest frequency (#9689) +- Change Docker images for Tor support in docker-compose.yml (#9438) +- Display fallback link card thumbnail when none is given (#9715) +- Change account bio length validation to ignore mention domains and URLs (#9717) +- Use configured contact user for "anonymous" federation activities (#9661) +- Change remote interaction dialog to use specific actions instead of generic "interact" (#9743) +- Always re-fetch public key when signature verification fails to support blind key rotation (#9667) +- Make replies to boosts impossible, connect reply to original status instead (#9129) +- Change e-mail MX validation to check both A and MX records against blacklist (#9489) + +### Removed + +- Remove links to bridge.joinmastodon.org (non-functional) (#9608) +- Remove LD-Signatures from activities that do not need them (#9659) + +### Fixed + +- Remove unused computation of reblog references from updateTimeline (#9244) +- Fix loaded embeds resetting if a status arrives from API again (#9270) +- Fix race condition causing shallow status with only a "favourited" attribute (#9272) +- Remove intermediary arrays when creating hash maps from results (#9291) +- Extract counters from accounts table to account_stats table to improve performance (#9295) +- Change identities id column to a bigint (#9371) +- Fix conversations API pagination (#9407) +- Improve account suspension speed and completeness (#9290) +- Fix thread depth computation in statuses_controller (#9426) +- Fix database deadlocks by moving account stats update outside transaction (#9437) +- Escape HTML in profile name preview in profile settings (#9446) +- Use same CORS policy for /@:username and /users/:username (#9485) +- Make custom emoji domains case insensitive (#9474) +- Various fixes to scrollable lists and media gallery (#9501) +- Fix bootsnap cache directory being declared relatively (#9511) +- Fix timeline pagination in the web UI (#9516) +- Fix padding on dropdown elements in preferences (#9517) +- Make avatar and headers respect GIF autoplay settings (#9515) +- Do no retry Web Push workers if the server returns a 4xx response (#9434) +- Minor scrollable list fixes (#9551) +- Ignore low-confidence CharlockHolmes guesses when parsing link cards (#9510) +- Fix `tootctl accounts rotate` not updating public keys (#9556) +- Fix CSP / X-Frame-Options for media players (#9558) +- Fix unnecessary loadMore calls when the end of a timeline has been reached (#9581) +- Skip mailer job retries when a record no longer exists (#9590) +- Fix composer not getting focus after reply confirmation dialog (#9602) +- Fix signature verification stoplight triggering on non-timeout errors (#9617) +- Fix ThreadResolveWorker getting queued with invalid URLs (#9628) +- Fix crash when clearing uninitialized timeline (#9662) +- Avoid duplicate work by merging ReplyDistributionWorker into DistributionWorker (#9660) +- Skip full text search if it fails, instead of erroring out completely (#9654) +- Fix profile metadata links not verifying correctly sometimes (#9673) +- Ensure blocked user unfollows blocker if Block/Undo-Block activities are processed out of order (#9687) +- Fix unreadable text color in report modal for some statuses (#9716) +- Stop GIFV timeline preview explicitly when it's opened in modal (#9749) + +### Security + +- Sanitize and sandbox toot embeds in web UI (#9552) + ## [2.6.5] - 2018-12-01 ### Changed From bc3a6dd597ab926cba74924bd44372613872b4f5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Jan 2019 18:17:56 +0100 Subject: [PATCH 53/64] Update AUTHORS (#9764) --- AUTHORS.md | 89 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 36 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index b81b6d2455..dfbd2cdcd2 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -4,38 +4,38 @@ and provided thanks to the work of the following contributors: * [Gargron](https://github.com/Gargron) * [ykzts](https://github.com/ykzts) * [akihikodaki](https://github.com/akihikodaki) -* [mjankowski](https://github.com/mjankowski) * [ThibG](https://github.com/ThibG) +* [mjankowski](https://github.com/mjankowski) * [unarist](https://github.com/unarist) * [m4sk1n](https://github.com/m4sk1n) +* [dependabot[bot]](https://github.com/apps/dependabot) * [yiskah](https://github.com/yiskah) * [nolanlawson](https://github.com/nolanlawson) * [sorin-davidoi](https://github.com/sorin-davidoi) +* [ysksn](https://github.com/ysksn) * [abcang](https://github.com/abcang) * [lynlynlynx](https://github.com/lynlynlynx) -* [dependabot[bot]](https://github.com/apps/dependabot) * [alpaca-tc](https://github.com/alpaca-tc) +* [mayaeh](https://github.com/mayaeh) +* [renatolond](https://github.com/renatolond) * [nclm](https://github.com/nclm) * [ineffyble](https://github.com/ineffyble) -* [renatolond](https://github.com/renatolond) * [jeroenpraat](https://github.com/jeroenpraat) -* [mayaeh](https://github.com/mayaeh) * [blackle](https://github.com/blackle) * [Quent-in](https://github.com/Quent-in) * [JantsoP](https://github.com/JantsoP) +* [mabkenar](https://github.com/mabkenar) * [nullkal](https://github.com/nullkal) * [yookoala](https://github.com/yookoala) -* [mabkenar](https://github.com/mabkenar) -* [ysksn](https://github.com/ysksn) +* [Kjwon15](https://github.com/Kjwon15) * [shuheiktgw](https://github.com/shuheiktgw) * [ashfurrow](https://github.com/ashfurrow) -* [Kjwon15](https://github.com/Kjwon15) +* [Quenty31](https://github.com/Quenty31) * [zunda](https://github.com/zunda) * [eramdam](https://github.com/eramdam) -* [masarakki](https://github.com/masarakki) * [takayamaki](https://github.com/takayamaki) +* [masarakki](https://github.com/masarakki) * [ticky](https://github.com/ticky) -* [Quenty31](https://github.com/Quenty31) * [danhunsaker](https://github.com/danhunsaker) * [ThisIsMissEm](https://github.com/ThisIsMissEm) * [hcmiya](https://github.com/hcmiya) @@ -88,16 +88,19 @@ and provided thanks to the work of the following contributors: * [mistydemeo](https://github.com/mistydemeo) * [dunn](https://github.com/dunn) * [xqus](https://github.com/xqus) +* [hugogameiro](https://github.com/hugogameiro) * [pfm-eyesightjp](https://github.com/pfm-eyesightjp) * [fakenine](https://github.com/fakenine) * [tsuwatch](https://github.com/tsuwatch) * [victorhck](https://github.com/victorhck) +* [ashleyhull-versent](https://github.com/ashleyhull-versent) +* [kedamaDQ](https://github.com/kedamaDQ) * [puckipedia](https://github.com/puckipedia) * [fvh-P](https://github.com/fvh-P) * [contraexemplo](https://github.com/contraexemplo) -* [hugogameiro](https://github.com/hugogameiro) * [kazu9su](https://github.com/kazu9su) * [Komic](https://github.com/Komic) +* [lmorchard](https://github.com/lmorchard) * [diomed](https://github.com/diomed) * [ariasuni](https://github.com/ariasuni) * [Neetshin](mailto:neetshin@neetsh.in) @@ -105,7 +108,6 @@ and provided thanks to the work of the following contributors: * [ProgVal](https://github.com/ProgVal) * [valentin2105](https://github.com/valentin2105) * [yuntan](https://github.com/yuntan) -* [ashleyhull-versent](https://github.com/ashleyhull-versent) * [goofy-bz](mailto:goofy@babelzilla.org) * [kadiix](https://github.com/kadiix) * [kodacs](https://github.com/kodacs) @@ -119,35 +121,37 @@ and provided thanks to the work of the following contributors: * [northerner](https://github.com/northerner) * [fhemberger](https://github.com/fhemberger) * [greysteil](https://github.com/greysteil) -* [hnrysmth](https://github.com/hnrysmth) +* [hensmith](https://github.com/hensmith) +* [hinaloe](https://github.com/hinaloe) * [d6rkaiz](https://github.com/d6rkaiz) +* [Reverite](https://github.com/Reverite) * [JMendyk](https://github.com/JMendyk) * [JohnD28](https://github.com/JohnD28) * [znz](https://github.com/znz) * [Naouak](https://github.com/Naouak) +* [pawelngei](https://github.com/pawelngei) * [reneklacan](https://github.com/reneklacan) * [ekiru](https://github.com/ekiru) * [tcitworld](https://github.com/tcitworld) * [geta6](https://github.com/geta6) * [happycoloredbanana](https://github.com/happycoloredbanana) -* [kedamaDQ](https://github.com/kedamaDQ) * [leopku](https://github.com/leopku) * [SansPseudoFix](https://github.com/SansPseudoFix) * [tomfhowe](https://github.com/tomfhowe) * [noraworld](https://github.com/noraworld) * [theboss](https://github.com/theboss) * [178inaba](https://github.com/178inaba) +* [Aditoo17](https://github.com/Aditoo17) * [alyssais](https://github.com/alyssais) * [kodnaplakal](https://github.com/kodnaplakal) * [stalker314314](https://github.com/stalker314314) * [huertanix](https://github.com/huertanix) * [genesixx](https://github.com/genesixx) * [halkeye](https://github.com/halkeye) -* [hinaloe](https://github.com/hinaloe) * [treby](https://github.com/treby) -* [Reverite](https://github.com/Reverite) * [jpdevries](https://github.com/jpdevries) -* [H-C-F](https://github.com/H-C-F) +* [gdpelican](https://github.com/gdpelican) +* [kmichl](https://github.com/kmichl) * [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name) * [saper](https://github.com/saper) * [nevillepark](https://github.com/nevillepark) @@ -157,6 +161,7 @@ and provided thanks to the work of the following contributors: * [Ram Lmn](mailto:ramlmn@users.noreply.github.com) * [harukasan](https://github.com/harukasan) * [stamak](https://github.com/stamak) +* [noellabo](https://github.com/noellabo) * [Technowix](mailto:technowix@users.noreply.github.com) * [Eychics](https://github.com/Eychics) * [Thor Harald Johansen](mailto:thj@thj.no) @@ -165,22 +170,27 @@ and provided thanks to the work of the following contributors: * [Valentin_NC](mailto:valentin.ouvrard@nautile.sarl) * [R0ckweb](https://github.com/R0ckweb) * [caasi](https://github.com/caasi) +* [chr-1x](https://github.com/chr-1x) * [esetomo](https://github.com/esetomo) * [foxiehkins](https://github.com/foxiehkins) * [hoodie](mailto:hoodiekitten@outlook.com) * [luzi82](https://github.com/luzi82) * [duxovni](https://github.com/duxovni) +* [trwnh](https://github.com/trwnh) * [unsmell](https://github.com/unsmell) +* [valerauko](https://github.com/valerauko) * [chriswmartin](https://github.com/chriswmartin) * [vahnj](https://github.com/vahnj) * [ikuradon](https://github.com/ikuradon) * [AndreLewin](https://github.com/AndreLewin) * [rinsuki](https://github.com/rinsuki) +* [0xflotus](https://github.com/0xflotus) * [redtachyons](https://github.com/redtachyons) * [thurloat](https://github.com/thurloat) * [aaribaud](https://github.com/aaribaud) * [Andrew](mailto:andrewlchronister@gmail.com) * [estuans](https://github.com/estuans) +* [BenLubar](https://github.com/BenLubar) * [dissolve](https://github.com/dissolve) * [PurpleBooth](https://github.com/PurpleBooth) * [bradurani](https://github.com/bradurani) @@ -192,7 +202,7 @@ and provided thanks to the work of the following contributors: * [cdutson](https://github.com/cdutson) * [farlistener](https://github.com/farlistener) * [DavidLibeau](https://github.com/DavidLibeau) -* [SirCmpwn](https://github.com/SirCmpwn) +* [ddevault](https://github.com/ddevault) * [Fjoerfoks](https://github.com/Fjoerfoks) * [fmauNeko](https://github.com/fmauNeko) * [gloaec](https://github.com/gloaec) @@ -207,6 +217,7 @@ and provided thanks to the work of the following contributors: * [jasonrhodes](https://github.com/jasonrhodes) * [Jason Snell](mailto:jason@newrelic.com) * [jviide](https://github.com/jviide) +* [YuleZ](https://github.com/YuleZ) * [crakaC](https://github.com/crakaC) * [tkbky](https://github.com/tkbky) * [Kaylee](mailto:kaylee@codethat.sucks) @@ -223,10 +234,12 @@ and provided thanks to the work of the following contributors: * [petzah](https://github.com/petzah) * [ignisf](https://github.com/ignisf) * [raymestalez](https://github.com/raymestalez) +* [remram44](https://github.com/remram44) * [sascha-sl](https://github.com/sascha-sl) * [u1-liquid](https://github.com/u1-liquid) * [sim6](https://github.com/sim6) * [stemid](https://github.com/stemid) +* [sumdog](https://github.com/sumdog) * [ThomasLeister](https://github.com/ThomasLeister) * [mcat-ee](https://github.com/mcat-ee) * [tototoshi](https://github.com/tototoshi) @@ -243,7 +256,6 @@ and provided thanks to the work of the following contributors: * [aus-social](https://github.com/aus-social) * [imbsky](https://github.com/imbsky) * [bsky](mailto:me@imbsky.net) -* [chr-1x](https://github.com/chr-1x) * [codl](https://github.com/codl) * [cpsdqs](https://github.com/cpsdqs) * [barzamin](https://github.com/barzamin) @@ -252,6 +264,7 @@ and provided thanks to the work of the following contributors: * [ik11235](https://github.com/ik11235) * [kawax](https://github.com/kawax) * [007lva](https://github.com/007lva) +* [mbajur](https://github.com/mbajur) * [matsurai25](https://github.com/matsurai25) * [mecab](https://github.com/mecab) * [nicobz25](https://github.com/nicobz25) @@ -259,7 +272,6 @@ and provided thanks to the work of the following contributors: * [pinfort](https://github.com/pinfort) * [rbaumert](https://github.com/rbaumert) * [rhoio](https://github.com/rhoio) -* [trwnh](https://github.com/trwnh) * [usagi-f](https://github.com/usagi-f) * [vidarlee](https://github.com/vidarlee) * [vjackson725](https://github.com/vjackson725) @@ -269,11 +281,11 @@ and provided thanks to the work of the following contributors: * [Awea](https://github.com/Awea) * [halcy](https://github.com/halcy) * [naaaaaaaaaaaf](https://github.com/naaaaaaaaaaaf) -* [NecroTechno](https://github.com/NecroTechno) * [8398a7](https://github.com/8398a7) * [857b](https://github.com/857b) * [insom](https://github.com/insom) -* [Aditoo17](https://github.com/Aditoo17) +* [tachyons](https://github.com/tachyons) +* [Esteth](https://github.com/Esteth) * [unascribed](https://github.com/unascribed) * [Aguay-val](https://github.com/Aguay-val) * [Akihiko Odaki](mailto:nekomanma@pixiv.co.jp) @@ -283,6 +295,7 @@ and provided thanks to the work of the following contributors: * [alxrcs](https://github.com/alxrcs) * [console-cowboy](https://github.com/console-cowboy) * [pointlessone](https://github.com/pointlessone) +* [Alkarex](https://github.com/Alkarex) * [a2](https://github.com/a2) * [0xa](https://github.com/0xa) * [palindromordnilap](https://github.com/palindromordnilap) @@ -299,7 +312,6 @@ and provided thanks to the work of the following contributors: * [ayumin](https://github.com/ayumin) * [BaptisteGelez](https://github.com/BaptisteGelez) * [bzg](https://github.com/bzg) -* [BenLubar](https://github.com/BenLubar) * [benediktg](https://github.com/benediktg) * [blakebarnett](https://github.com/blakebarnett) * [bradj](https://github.com/bradj) @@ -341,6 +353,7 @@ and provided thanks to the work of the following contributors: * [espenronnevik](https://github.com/espenronnevik) * [Finariel](https://github.com/Finariel) * [siuying](https://github.com/siuying) +* [fwenzel](https://github.com/fwenzel) * [GenbuHase](https://github.com/GenbuHase) * [hattori6789](https://github.com/hattori6789) * [algernon](https://github.com/algernon) @@ -375,10 +388,9 @@ and provided thanks to the work of the following contributors: * [jguerder](https://github.com/jguerder) * [Jehops](https://github.com/Jehops) * [joshuap](https://github.com/joshuap) -* [YuleZ](https://github.com/YuleZ) * [Tiwy57](https://github.com/Tiwy57) * [xuv](https://github.com/xuv) -* [Jnsll](https://github.com/Jnsll) +* [June Sallou](mailto:jnsll@users.noreply.github.com) * [j0k3r](https://github.com/j0k3r) * [KEINOS](https://github.com/KEINOS) * [futoase](https://github.com/futoase) @@ -389,7 +401,6 @@ and provided thanks to the work of the following contributors: * [k0ta0uchi](https://github.com/k0ta0uchi) * [KrzysiekJ](https://github.com/KrzysiekJ) * [leowzukw](https://github.com/leowzukw) -* [lmorchard](https://github.com/lmorchard) * [Tak](https://github.com/Tak) * [cacheflow](https://github.com/cacheflow) * [ldidry](https://github.com/ldidry) @@ -426,6 +437,7 @@ and provided thanks to the work of the following contributors: * [lae](https://github.com/lae) * [Nanamachi](https://github.com/Nanamachi) * [orinthe](https://github.com/orinthe) +* [NecroTechno](https://github.com/NecroTechno) * [Dar13](https://github.com/Dar13) * [ngerakines](https://github.com/ngerakines) * [vonneudeck](https://github.com/vonneudeck) @@ -443,7 +455,6 @@ and provided thanks to the work of the following contributors: * [Pangoraw](https://github.com/Pangoraw) * [peterkeen](https://github.com/peterkeen) * [pgate](https://github.com/pgate) -* [remram44](https://github.com/remram44) * [retokromer](https://github.com/retokromer) * [rfwatson](https://github.com/rfwatson) * [rfreebern](https://github.com/rfreebern) @@ -455,19 +466,22 @@ and provided thanks to the work of the following contributors: * [sts10](https://github.com/sts10) * [skoji](https://github.com/skoji) * [ScienJus](https://github.com/ScienJus) -* [larkinscott](https://github.com/larkinscott) -* [imolein](https://github.com/imolein) -* [blinry](https://github.com/blinry) -* [Noiwex](https://github.com/Noiwex) -* [yuki764](https://github.com/yuki764) -* [shnjp](https://github.com/shnjp) -* [ernix](https://github.com/ernix) -* [rosylilly](https://github.com/rosylilly) -* [shouko](https://github.com/shouko) +* [Scott Larkin](mailto:scott@codeclimate.com) +* [Sebastian Hübner](mailto:imolein@users.noreply.github.com) +* [Sebastian Morr](mailto:sebastian@morr.cc) +* [Sergei Č](mailto:noiwex1911@gmail.com) +* [Setuu](mailto:yuki764setuu@gmail.com) +* [Shaun Gillies](mailto:me@shaungillies.net) +* [Shin Adachi](mailto:shn@glucose.jp) +* [Shin Kojima](mailto:shin@kojima.org) +* [Sho Kusano](mailto:rosylilly@aduca.org) +* [Shouko Yu](mailto:imshouko@gmail.com) * [Sina Mashek](mailto:sina@mashek.xyz) -* [sossii](https://github.com/sossii) +* [Sir-Boops](mailto:admin@boops.me) +* [Soshi Kato](mailto:mail@sossii.com) * [Spanky](mailto:2788886+spankyworks@users.noreply.github.com) * [StefOfficiel](mailto:pichard.stephane@free.fr) +* [Steven Tappert](mailto:admin@dark-it.net) * [Svetlozar Todorov](mailto:svetlik@users.noreply.github.com) * [Sébastien Santoro](mailto:dereckson@espace-win.org) * [Tad Thorley](mailto:phaedryx@users.noreply.github.com) @@ -521,11 +535,13 @@ and provided thanks to the work of the following contributors: * [jacob](mailto:jacobherringtondeveloper@gmail.com) * [jenn kaplan](mailto:me@jkap.io) * [jirayudech](mailto:jirayudech@gmail.com) +* [jomo](mailto:github@jomo.tv) * [jooops](mailto:joops@autistici.org) * [jukper](mailto:jukkaperanto@gmail.com) * [jumoru](mailto:jumoru@mailbox.org) * [karlyeurl](mailto:karl.yeurl@gmail.com) * [kedama](mailto:32974885+kedamadq@users.noreply.github.com) +* [kodai](mailto:shirafuta.kodai@gmail.com) * [kuro5hin](mailto:rusty@kuro5hin.org) * [luzpaz](mailto:luzpaz@users.noreply.github.com) * [maxypy](mailto:maxime@mpigou.fr) @@ -533,6 +549,7 @@ and provided thanks to the work of the following contributors: * [mimikun](mailto:dzdzble_effort_311@outlook.jp) * [mshrtkch](mailto:mshrtkch@users.noreply.github.com) * [muan](mailto:muan@github.com) +* [namelessGonbai](mailto:43787036+namelessgonbai@users.noreply.github.com) * [neetshin](mailto:neetshin@neetsh.in) * [nightpool](mailto:nightpool@users.noreply.github.com) * [rch850](mailto:rich850@gmail.com) From af74491bc8ec9a2ca2430754042c7ba14502bd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Wed, 9 Jan 2019 01:52:01 +0100 Subject: [PATCH 54/64] i18n: Update Polish translation (#9674) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * i18n: Update Polish translation Signed-off-by: Marcin Mikołajczak * i18n-tasks normalize * Update config/locales/pl.yml Co-Authored-By: m4sk1n --- app/javascript/mastodon/locales/pl.json | 2 +- config/locales/devise.pl.yml | 1 + config/locales/pl.yml | 36 ++++++++++++++++++++++++- config/locales/simple_form.pl.yml | 19 +++++++++++++ 4 files changed, 56 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 73545732e1..0da30ed334 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -343,7 +343,7 @@ "upload_area.title": "Przeciągnij i upuść aby wysłać", "upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących", - "upload_form.focus": "Przytnij", + "upload_form.focus": "Dopasuj podgląd", "upload_form.undo": "Usuń", "upload_progress.label": "Wysyłanie...", "video.close": "Zamknij film", diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml index 54bae29251..7902274a32 100644 --- a/config/locales/devise.pl.yml +++ b/config/locales/devise.pl.yml @@ -18,6 +18,7 @@ pl: mailer: confirmation_instructions: action: Zweryfikuj adres e-mail + action_with_app: Potwierdź i wróć do %{app} explanation: Utworzyłeś(-aś) konto na %{host} podając ten adres e-mail. Jedno kliknięcie dzieli Cię od aktywacji tego konta. Jeżeli to nie Ty, zignoruj ten e-mail. extra_html: Przeczytaj też regulamin instancji i nasze zasady użytkowania. subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail na %{instance}' diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 7d9a059193..54a06ed326 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -78,6 +78,9 @@ pl: moderator: Moderator unfollow: Przestań śledzić admin: + account_actions: + action: Wykonaj działanie + title: Wykonaj działanie moderacyjne na %{acct} account_moderation_notes: create: Pozostaw notatkę created_msg: Pomyślnie dodano notatkę moderacyjną! @@ -97,6 +100,7 @@ pl: confirm: Potwierdź confirmed: Potwierdzono confirming: Potwierdzanie + deleted: Usunięto demote: Degraduj disable: Dezaktywuj disable_two_factor_authentication: Wyłącz uwierzytelnianie dwuetapowe @@ -110,10 +114,13 @@ pl: enabled: Aktywowano feed_url: Adres kanału followers: Śledzący + followers_local: "(%{local} lokalnych)" followers_url: Adres śledzących follows: Śledzeni inbox_url: Adres skrzynki + invited_by: Zaproszony(-a) przez ip: Adres IP + joined: Dołączył(-a) location: all: Wszystkie local: Lokalne @@ -140,7 +147,7 @@ pl: protocol: Protokół public: Publiczne push_subscription_expires: Subskrypcja PuSH wygasa - redownload: Odśwież awatar + redownload: Odśwież profil remove_avatar: Usun awatar resend_confirmation: already_confirmed: To konto zostało już potwierdzone @@ -172,12 +179,14 @@ pl: undo_suspension: Cofnij zawieszenie unsubscribe: Przestań subskrybować username: Nazwa użytkownika + warn: Ostrzeż web: Sieć action_logs: actions: assigned_to_self_report: "%{name} przypisał(a) sobie zgłoszenie %{target}" change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}" confirm_user: "%{name} potwierdził(a) adres e-mail użytkownika %{target}" + create_account_warning: "%{name} wysłał(a) ostrzeżenie do %{target}" create_custom_emoji: "%{name} dodał(a) nowe emoji %{target}" create_domain_block: "%{name} zablokował(a) domenę %{target}" create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę" @@ -289,6 +298,9 @@ pl: create: Utwórz blokadę title: Nowa blokada domeny e-mail title: Blokowanie domen e-mail + followers: + back_to_account: Wróć do konta + title: Śledzący %{acct} instances: title: Znane instancje invites: @@ -443,6 +455,12 @@ pl: unhide: Pokazuj w katalogu visible: Widoczne title: Administracja + warning_presets: + add_new: Dodaj nowy + delete: Usuń + edit: Edytuj + edit_preset: Edytuj szablon ostrzeżenia + title: Zarządzaj szablonami ostrzeżeń admin_mailer: new_report: body: Użytkownik %{reporter} zgłosił(a) %{target} @@ -915,6 +933,22 @@ pl: explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ona dostępna do pobrania! subject: Twoje archiwum jest gotowe do pobrania title: Odbiór archiwum + warning: + explanation: + disable: Kiedy Twoje konto jest wyłączone, Twoje dane pozostają na serwerze, ale nie możesz wykonywać żadnych działań, zanim zostanie odblokowane. + silence: Kiedy Twoje konto jest ograniczone, tylko osoby które je śledzą będą widzieć Twoje wpisy. Może ono też przestać być widoczne na publicznych listach. Inni wciąż mogą zacząć Cię śledzić. + suspend: Twoje konto zostało zawieszone i wszystkie Twoje wpisy wraz z zawartością multimedialną zostały nieodwracalnie usunięte z tego serwera i serwerów, których użytkownicy śledzili Cię. + review_server_policies: Przejrzyj zasady serwera + subject: + disable: Twoje konto %{acct} zostało wyłączone + none: Ostrzeżenie dla %{acct} + silence: Twoje konto %{acct} zostało ograniczone + suspend: Twoje konto %{acct} zostało zawieszone + title: + disable: Konto wyłączone + none: Ostrzeżenie + silence: Konto ograniczone + suspend: Konto zawieszone welcome: edit_profile_action: Skonfiguruj profil edit_profile_step: Możesz dostować profil wysyłając awatar, obraz nagłówka, zmieniając wyświetlaną nazwę i wiele więcej. Jeżeli chcesz, możesz zablokować konto, aby kontrolować, kto może Cię śledzić. diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index b0bc564aa5..5fd4b90bc5 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -2,6 +2,13 @@ pl: simple_form: hints: + account_warning_preset: + text: Możesz korzystać ze składni której używasz we wpisach, takiej jak adresy URL, hashtagi i wspomnienia + admin_account_action: + send_email_notification: Użytkownik otrzyma informację, co stało się z jego kontem + text_html: Możesz używać składni której używasz we wpisach. Możesz dodać szablon ostrzeżenia aby zaoszczędzić czas + type_html: Wybierz co chcesz zrobić z %{acct} + warning_preset_id: Nieobowiązkowe. Możesz dodać niestandardowy tekst do końcowki szablonu defaults: autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię śledzić avatar: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px @@ -35,6 +42,18 @@ pl: fields: name: Nazwa value: Zawartość + account_warning_preset: + text: Tekst szablonu + admin_account_action: + send_email_notification: Powiadom użytkownika mailem + text: Niestandardowe ostrzeżenie + type: Działanie + types: + disable: Wyłącz + none: Nie rób niczego + silence: Wycisz + suspend: Zawieś i nieodwracalnie usuń dane konta + warning_preset_id: Użyj szablonu ostrzeżenia defaults: autofollow: Zapraszaj do śledzenia swojego konta avatar: Awatar From 61ecda15751a73262903f22c0ac163476b7ae75f Mon Sep 17 00:00:00 2001 From: ysksn Date: Thu, 10 Jan 2019 23:12:31 +0900 Subject: [PATCH 55/64] Not to skip executable specs (#9753) * Not to skip executable specs * Combine specs Combine specs to one to reduce multiple slow http post. --- spec/controllers/api/v1/media_controller_spec.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/spec/controllers/api/v1/media_controller_spec.rb b/spec/controllers/api/v1/media_controller_spec.rb index f01fcd9424..4e30372084 100644 --- a/spec/controllers/api/v1/media_controller_spec.rb +++ b/spec/controllers/api/v1/media_controller_spec.rb @@ -84,19 +84,17 @@ RSpec.describe Api::V1::MediaController, type: :controller do post :create, params: { file: fixture_file_upload('files/attachment.webm', 'video/webm') } end - xit 'returns http success' do + it do + # returns http success expect(response).to have_http_status(200) - end - xit 'creates a media attachment' do + # creates a media attachment expect(MediaAttachment.first).to_not be_nil - end - xit 'uploads a file' do + # uploads a file expect(MediaAttachment.first).to have_attached_file(:file) - end - xit 'returns media ID in JSON' do + # returns media ID in JSON expect(body_as_json[:id]).to eq MediaAttachment.first.id.to_s end end From 5104b61b6bb9a8ddadc1a950fa10aeb43c44515c Mon Sep 17 00:00:00 2001 From: ThibG Date: Thu, 10 Jan 2019 15:13:00 +0100 Subject: [PATCH 56/64] Downgrade react-redux-loading-bar to 4.0.8 to fix media modal (#9771) --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d5dbd19c30..517f52bd4e 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "react-notification": "^6.8.4", "react-overlays": "^0.8.3", "react-redux": "^6.0.0", - "react-redux-loading-bar": "^4.1.0", + "react-redux-loading-bar": "^4.0.8", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", "react-select": "^2.2.0", diff --git a/yarn.lock b/yarn.lock index 0fd1924fee..6f766f2322 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7624,10 +7624,10 @@ react-overlays@^0.8.3: react-transition-group "^2.2.0" warning "^3.0.0" -react-redux-loading-bar@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-4.1.0.tgz#3ca460569d979450d9d1dc992328efa449c10a7a" - integrity sha512-9L51ZvPqnlPs97j44FZLio6maQ/2BMP8xXFPArDWxByyLyGYs2fXpSZw+Lby9qr8Px3SsH9dylfC8HfQrmc/Mw== +react-redux-loading-bar@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-4.0.8.tgz#e84d59d1517b79f53b0f39c8ddb40682af648c1b" + integrity sha512-BpR1tlYrYKFtGhxa7nAKc0dpcV33ZgXJ/jKNLpDDaxu2/cCxbkWQt9YlWT+VLw1x/7qyNYY4DH48bZdtmciSpg== dependencies: prop-types "^15.6.2" react-lifecycles-compat "^3.0.2" From 70801b850c78d7879182eeba4eae509af42fafeb Mon Sep 17 00:00:00 2001 From: ThibG Date: Thu, 10 Jan 2019 15:13:30 +0100 Subject: [PATCH 57/64] Postpone scroll-to-detailed status after react components are loaded (#9773) --- app/javascript/packs/public.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index 6ba37c049f..a9a3d738a9 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -33,6 +33,17 @@ function main() { const Rellax = require('rellax'); const createHistory = require('history').createBrowserHistory; + const scrollToDetailedStatus = () => { + const history = createHistory(); + const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status'); + const location = history.location; + + if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) { + detailedStatuses[0].scrollIntoView(); + history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true }); + } + }; + ready(() => { const locale = document.documentElement.lang; @@ -76,8 +87,14 @@ function main() { ReactDOM.render(, content); document.body.appendChild(content); + scrollToDetailedStatus(); }) - .catch(error => console.error(error)); + .catch(error => { + console.error(error); + scrollToDetailedStatus(); + }); + } else { + scrollToDetailedStatus(); } const parallaxComponents = document.querySelectorAll('.parallax'); @@ -85,15 +102,6 @@ function main() { if (parallaxComponents.length > 0 ) { new Rellax('.parallax', { speed: -1 }); } - - const history = createHistory(); - const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status'); - const location = history.location; - - if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) { - detailedStatuses[0].scrollIntoView(); - history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true }); - } }); delegate(document, '.webapp-btn', 'click', ({ target, button }) => { From fb0c906c717f2b21bb63610742a357850142b522 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Thu, 10 Jan 2019 18:46:17 +0100 Subject: [PATCH 58/64] Revert "Revert "Add handler for Move activity (#9629)"" This reverts commit bb96a7463758687f8187ae4483becd346c2482b3. --- app/lib/activitypub/activity.rb | 2 + app/lib/activitypub/activity/follow.rb | 2 +- app/lib/activitypub/activity/move.rb | 43 +++++++++++++++ app/lib/activitypub/adapter.rb | 1 + app/models/account.rb | 5 ++ .../activitypub/actor_serializer.rb | 5 ++ .../activitypub/process_account_service.rb | 1 + app/services/follow_service.rb | 2 +- app/workers/unfollow_follow_worker.rb | 18 +++++++ ...226021420_add_also_known_as_to_accounts.rb | 5 ++ db/schema.rb | 3 +- spec/lib/activitypub/activity/move_spec.rb | 52 +++++++++++++++++++ 12 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 app/lib/activitypub/activity/move.rb create mode 100644 app/workers/unfollow_follow_worker.rb create mode 100644 db/migrate/20181226021420_add_also_known_as_to_accounts.rb create mode 100644 spec/lib/activitypub/activity/move_spec.rb diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 0a729011f2..87318fb1c5 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -50,6 +50,8 @@ class ActivityPub::Activity ActivityPub::Activity::Add when 'Remove' ActivityPub::Activity::Remove + when 'Move' + ActivityPub::Activity::Move end end end diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb index 5e703dc61d..1e805c0d17 100644 --- a/app/lib/activitypub/activity/follow.rb +++ b/app/lib/activitypub/activity/follow.rb @@ -6,7 +6,7 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity return if target_account.nil? || !target_account.local? || delete_arrived_first?(@json['id']) || @account.requested?(target_account) - if target_account.blocking?(@account) || target_account.domain_blocking?(@account.domain) + if target_account.blocking?(@account) || target_account.domain_blocking?(@account.domain) || target_account.moved? reject_follow_request!(target_account) return end diff --git a/app/lib/activitypub/activity/move.rb b/app/lib/activitypub/activity/move.rb new file mode 100644 index 0000000000..d7a5f595cc --- /dev/null +++ b/app/lib/activitypub/activity/move.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +class ActivityPub::Activity::Move < ActivityPub::Activity + PROCESSING_COOLDOWN = 7.days.seconds + + def perform + return if origin_account.uri != object_uri || processed? + + mark_as_processing! + + target_account = ActivityPub::FetchRemoteAccountService.new.call(target_uri) + + return if target_account.nil? || !target_account.also_known_as.include?(origin_account.uri) + + # In case for some reason we didn't have a redirect for the profile already, set it + origin_account.update(moved_to_account: target_account) if origin_account.moved_to_account_id.nil? + + # Initiate a re-follow for each follower + origin_account.followers.local.select(:id).find_in_batches do |follower_accounts| + UnfollowFollowWorker.push_bulk(follower_accounts.map(&:id)) do |follower_account_id| + [follower_account_id, origin_account.id, target_account.id] + end + end + end + + private + + def origin_account + @account + end + + def target_uri + value_or_id(@json['target']) + end + + def processed? + redis.exists("move_in_progress:#{@account.id}") + end + + def mark_as_processing! + redis.setex("move_in_progress:#{@account.id}", PROCESSING_COOLDOWN, true) + end +end diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb index d35cae889d..99f4d93055 100644 --- a/app/lib/activitypub/adapter.rb +++ b/app/lib/activitypub/adapter.rb @@ -10,6 +10,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', 'sensitive' => 'as:sensitive', 'movedTo' => { '@id' => 'as:movedTo', '@type' => '@id' }, + 'alsoKnownAs' => { '@id' => 'as:alsoKnownAs', '@type' => '@id' }, 'Hashtag' => 'as:Hashtag', 'ostatus' => 'http://ostatus.org#', 'atomUri' => 'ostatus:atomUri', diff --git a/app/models/account.rb b/app/models/account.rb index 722e47d658..67d9a583ec 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -44,6 +44,7 @@ # fields :jsonb # actor_type :string # discoverable :boolean +# also_known_as :string is an Array # class Account < ApplicationRecord @@ -232,6 +233,10 @@ class Account < ApplicationRecord end end + def also_known_as + self[:also_known_as] || [] + end + def fields (self[:fields] || []).map { |f| Field.new(self, f) } end diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb index 72c30dc733..6746c17829 100644 --- a/app/serializers/activitypub/actor_serializer.rb +++ b/app/serializers/activitypub/actor_serializer.rb @@ -14,6 +14,7 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer has_many :virtual_attachments, key: :attachment attribute :moved_to, if: :moved? + attribute :also_known_as, if: :also_known_as? class EndpointsSerializer < ActiveModel::Serializer include RoutingHelper @@ -116,6 +117,10 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer ActivityPub::TagManager.instance.uri_for(object.moved_to_account) end + def also_known_as? + !object.also_known_as.empty? + end + class CustomEmojiSerializer < ActivityPub::EmojiSerializer end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 5c865dae2f..d6480028f4 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -75,6 +75,7 @@ class ActivityPub::ProcessAccountService < BaseService @account.note = @json['summary'] || '' @account.locked = @json['manuallyApprovesFollowers'] || false @account.fields = property_values || {} + @account.also_known_as = as_array(@json['alsoKnownAs'] || []).map { |item| value_or_id(item) } @account.actor_type = actor_type end diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index 24b3e1f702..9d36a1449d 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -10,7 +10,7 @@ class FollowService < BaseService target_account = ResolveAccountService.new.call(target_account, skip_webfinger: true) raise ActiveRecord::RecordNotFound if target_account.nil? || target_account.id == source_account.id || target_account.suspended? - raise Mastodon::NotPermittedError if target_account.blocking?(source_account) || source_account.blocking?(target_account) + raise Mastodon::NotPermittedError if target_account.blocking?(source_account) || source_account.blocking?(target_account) || target_account.moved? if source_account.following?(target_account) # We're already following this account, but we'll call follow! again to diff --git a/app/workers/unfollow_follow_worker.rb b/app/workers/unfollow_follow_worker.rb new file mode 100644 index 0000000000..a2133bb8cf --- /dev/null +++ b/app/workers/unfollow_follow_worker.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class UnfollowFollowWorker + include Sidekiq::Worker + + sidekiq_options queue: 'pull' + + def perform(follower_account_id, old_target_account_id, new_target_account_id) + follower_account = Account.find(follower_account_id) + old_target_account = Account.find(old_target_account_id) + new_target_account = Account.find(new_target_account_id) + + UnfollowService.new.call(follower_account, old_target_account) + FollowService.new.call(follower_account, new_target_account) + rescue ActiveRecord::RecordNotFound + true + end +end diff --git a/db/migrate/20181226021420_add_also_known_as_to_accounts.rb b/db/migrate/20181226021420_add_also_known_as_to_accounts.rb new file mode 100644 index 0000000000..1fd9566803 --- /dev/null +++ b/db/migrate/20181226021420_add_also_known_as_to_accounts.rb @@ -0,0 +1,5 @@ +class AddAlsoKnownAsToAccounts < ActiveRecord::Migration[5.2] + def change + add_column :accounts, :also_known_as, :string, array: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 48ffea3dd8..b8a9f8c580 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2018_12_19_235220) do +ActiveRecord::Schema.define(version: 2018_12_26_021420) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -134,6 +134,7 @@ ActiveRecord::Schema.define(version: 2018_12_19_235220) do t.jsonb "fields" t.string "actor_type" t.boolean "discoverable" + t.string "also_known_as", array: true t.index "(((setweight(to_tsvector('simple'::regconfig, (display_name)::text), 'A'::\"char\") || setweight(to_tsvector('simple'::regconfig, (username)::text), 'B'::\"char\")) || setweight(to_tsvector('simple'::regconfig, (COALESCE(domain, ''::character varying))::text), 'C'::\"char\")))", name: "search_index", using: :gin t.index "lower((username)::text), lower((domain)::text)", name: "index_accounts_on_username_and_domain_lower", unique: true t.index ["moved_to_account_id"], name: "index_accounts_on_moved_to_account_id" diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb new file mode 100644 index 0000000000..3574f273a9 --- /dev/null +++ b/spec/lib/activitypub/activity/move_spec.rb @@ -0,0 +1,52 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::Activity::Move do + let(:follower) { Fabricate(:account) } + let(:old_account) { Fabricate(:account) } + let(:new_account) { Fabricate(:account) } + + before do + follower.follow!(old_account) + + old_account.update!(uri: 'https://example.org/alice', domain: 'example.org', protocol: :activitypub, inbox_url: 'https://example.org/inbox') + new_account.update!(uri: 'https://example.com/alice', domain: 'example.com', protocol: :activitypub, inbox_url: 'https://example.com/inbox', also_known_as: [old_account.uri]) + + stub_request(:post, 'https://example.org/inbox').to_return(status: 200) + stub_request(:post, 'https://example.com/inbox').to_return(status: 200) + + service_stub = double + allow(ActivityPub::FetchRemoteAccountService).to receive(:new).and_return(service_stub) + allow(service_stub).to receive(:call).and_return(new_account) + end + + let(:json) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Move', + actor: old_account.uri, + object: old_account.uri, + target: new_account.uri, + }.with_indifferent_access + end + + describe '#perform' do + subject { described_class.new(json, old_account) } + + before do + subject.perform + end + + it 'sets moved account on old account' do + expect(old_account.reload.moved_to_account_id).to eq new_account.id + end + + it 'makes followers unfollow old account' do + expect(follower.following?(old_account)).to be false + end + + it 'makes followers follow-request the new account' do + expect(follower.requested?(new_account)).to be true + end + end +end From 2b2584a37b50d94ae6a48d90879228fc7e5b0a9d Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Thu, 10 Jan 2019 20:19:45 +0100 Subject: [PATCH 59/64] [Glitch] Display fallback link card thumbnail when none is given Port 1512af2811cb5b2ffccac5452eb291b1af46f89d to glitch-soc --- .../flavours/glitch/features/status/components/card.js | 6 ++++++ .../flavours/glitch/styles/components/status.scss | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/app/javascript/flavours/glitch/features/status/components/card.js b/app/javascript/flavours/glitch/features/status/components/card.js index 743fe779a2..1e1604d5cd 100644 --- a/app/javascript/flavours/glitch/features/status/components/card.js +++ b/app/javascript/flavours/glitch/features/status/components/card.js @@ -195,6 +195,12 @@ export default class Card extends React.PureComponent { {thumbnail}
); + } else { + embed = ( +
+ +
+ ); } return ( diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index 38ead06cf5..7b240224c3 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -740,6 +740,15 @@ a.status-card { flex: 0 0 100px; background: lighten($ui-base-color, 8%); position: relative; + + .fa { + font-size: 21px; + position: absolute; + transform-origin: 50% 50%; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } } .status-card.horizontal { From ec441e029994e8e8e73f06a46ed14b34ae9f8d66 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Thu, 10 Jan 2019 20:21:20 +0100 Subject: [PATCH 60/64] [Glitch] Fix embed play icons regression Port bd5a8c7765102a166ec8909e4a3b7781ec5537d6 to glitch-soc --- app/javascript/flavours/glitch/styles/components/status.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index 7b240224c3..9d2757065e 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -741,7 +741,7 @@ a.status-card { background: lighten($ui-base-color, 8%); position: relative; - .fa { + & > .fa { font-size: 21px; position: absolute; transform-origin: 50% 50%; From 147f4f9fd2163a2f6ebb1e4bb12aae9146835431 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Thu, 10 Jan 2019 20:22:28 +0100 Subject: [PATCH 61/64] [Glitch] refactored account.js Port 57c91fbbed7fa5f44c7144194e313f003c2ef8b3 to glitch-soc --- app/javascript/flavours/glitch/components/account.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/components/account.js b/app/javascript/flavours/glitch/components/account.js index 80f20b8adf..072c601e09 100644 --- a/app/javascript/flavours/glitch/components/account.js +++ b/app/javascript/flavours/glitch/components/account.js @@ -67,10 +67,10 @@ export default class Account extends ImmutablePureComponent { if (hidden) { return ( -
+ {account.get('display_name')} {account.get('username')} -
+ ); } From e03813cf0a6c4261fa97403e453a54ff051a6f87 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Thu, 10 Jan 2019 20:25:12 +0100 Subject: [PATCH 62/64] [Glitch] Stop gifv timeline preview explicitly when open the media gallery Port cf3c0fc38cd2650a421f46a5f221d1d645ef6c7b to glitch-soc --- app/javascript/flavours/glitch/components/media_gallery.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/flavours/glitch/components/media_gallery.js b/app/javascript/flavours/glitch/components/media_gallery.js index 10afeb2eb0..d0226bbbbc 100644 --- a/app/javascript/flavours/glitch/components/media_gallery.js +++ b/app/javascript/flavours/glitch/components/media_gallery.js @@ -71,6 +71,10 @@ class Item extends React.PureComponent { const { index, onClick } = this.props; if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { + if (this.hoverToPlay()) { + e.target.pause(); + e.target.currentTime = 0; + } e.preventDefault(); onClick(index); } From 7cc800d0dff99b9cc5777ab418af0b6afaf7fcc2 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Thu, 10 Jan 2019 20:27:20 +0100 Subject: [PATCH 63/64] [Glitch] Redesign admin instances area Port SCSS changes from 1c6588accca23599ea1537ec527a5be04408b2af --- app/javascript/flavours/glitch/styles/admin.scss | 14 ++++++++++++++ .../flavours/glitch/styles/dashboard.scss | 1 + 2 files changed, 15 insertions(+) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index 8b111a9366..e7124a2c02 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -151,6 +151,20 @@ $no-columns-breakpoint: 600px; font-weight: 500; } + .directory__tag a { + box-shadow: none; + } + + .directory__tag h4 { + font-size: 18px; + font-weight: 700; + color: $primary-text-color; + text-transform: none; + padding-bottom: 0; + margin-bottom: 0; + border-bottom: none; + } + & > p { font-size: 14px; line-height: 18px; diff --git a/app/javascript/flavours/glitch/styles/dashboard.scss b/app/javascript/flavours/glitch/styles/dashboard.scss index 1f96e73684..e4564f062c 100644 --- a/app/javascript/flavours/glitch/styles/dashboard.scss +++ b/app/javascript/flavours/glitch/styles/dashboard.scss @@ -39,6 +39,7 @@ color: $primary-text-color; font-family: $font-display, sans-serif; margin-bottom: 20px; + line-height: 30px; } &__text { From 394525e32994e605093c87d3a9fad2a4202f3401 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Thu, 10 Jan 2019 20:28:24 +0100 Subject: [PATCH 64/64] [Glitch] Postpone scroll-to-detailed status after react components are loaded Port 70801b850c78d7879182eeba4eae509af42fafeb to glitch-soc --- .../flavours/glitch/packs/public.js | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/app/javascript/flavours/glitch/packs/public.js b/app/javascript/flavours/glitch/packs/public.js index 996f8f3d1e..342c5265e9 100644 --- a/app/javascript/flavours/glitch/packs/public.js +++ b/app/javascript/flavours/glitch/packs/public.js @@ -12,6 +12,17 @@ function main() { const Rellax = require('rellax'); const createHistory = require('history').createBrowserHistory; + const scrollToDetailedStatus = () => { + const history = createHistory(); + const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status'); + const location = history.location; + + if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) { + detailedStatuses[0].scrollIntoView(); + history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true }); + } + }; + ready(() => { const locale = document.documentElement.lang; @@ -54,8 +65,14 @@ function main() { ReactDOM.render(, content); document.body.appendChild(content); + scrollToDetailedStatus(); }) - .catch(error => console.error(error)); + .catch(error => { + console.error(error); + scrollToDetailedStatus(); + }); + } else { + scrollToDetailedStatus(); } const parallaxComponents = document.querySelectorAll('.parallax'); @@ -63,15 +80,6 @@ function main() { if (parallaxComponents.length > 0 ) { new Rellax('.parallax', { speed: -1 }); } - - const history = createHistory(); - const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status'); - const location = history.location; - - if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) { - detailedStatuses[0].scrollIntoView(); - history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true }); - } }); }