From 7b63c5469ef0106aebe4151640832378e6d31067 Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 28 Feb 2020 13:49:45 +0100 Subject: [PATCH 001/377] Fix announcements with fully-qualified mention to local user crashing WebUI (#13164) --- app/models/account.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/models/account.rb b/app/models/account.rb index 0eb719d65..778429b0d 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -478,7 +478,16 @@ class Account < ApplicationRecord def from_text(text) return [] if text.blank? - text.scan(MENTION_RE).map { |match| match.first.split('@', 2) }.uniq.map { |(username, domain)| EntityCache.instance.mention(username, domain) } + text.scan(MENTION_RE).map { |match| match.first.split('@', 2) }.uniq.map do |(username, domain)| + domain = begin + if TagManager.instance.local_domain?(domain) + nil + else + TagManager.instance.normalize_domain(domain) + end + end + EntityCache.instance.mention(username, domain) + end.compact end private From 047fde18c3d20dcd74b14613a648a03b573f802d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 29 Feb 2020 02:57:14 +0100 Subject: [PATCH 002/377] [Security] Bump puma from 4.3.1 to 4.3.2 (#13167) Bumps [puma](https://github.com/puma/puma) from 4.3.1 to 4.3.2. **This update includes a security fix.** - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/master/History.md) - [Commits](https://github.com/puma/puma/compare/v4.3.1...v4.3.2) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 788785ef1..7289e1445 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -435,7 +435,7 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.3) - puma (4.3.1) + puma (4.3.2) nio4r (~> 2.0) pundit (2.1.0) activesupport (>= 3.0.0) From ce17cea2210f9ce9dcbaf68074c07633df61bb6f Mon Sep 17 00:00:00 2001 From: ThibG Date: Sat, 29 Feb 2020 03:00:43 +0100 Subject: [PATCH 003/377] Fix installation failing when Redis password contains special characters (#13156) * Add support for special characters in Redis passwords Fixes #13154 * Refactor --- lib/mastodon/redis_config.rb | 4 +++- lib/tasks/mastodon.rake | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/mastodon/redis_config.rb b/lib/mastodon/redis_config.rb index f11d94a45..e9db9122f 100644 --- a/lib/mastodon/redis_config.rb +++ b/lib/mastodon/redis_config.rb @@ -14,7 +14,9 @@ def setup_redis_env_url(prefix = nil, defaults = true) ENV[prefix + 'REDIS_URL'] = if [password, host, port, db].all?(&:nil?) ENV['REDIS_URL'] else - "redis://#{password.blank? ? '' : ":#{password}@"}#{host}:#{port}/#{db}" + Addressable::URI.parse("redis://#{host}:#{port}/#{db}").tap do |uri| + uri.password = password if password.present? + end.normalize.to_str end end diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 2e92e8ded..a873335d4 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -336,7 +336,20 @@ namespace :mastodon do if prompt.yes?('Save configuration?') cmd = TTY::Command.new(printer: :quiet) - File.write(Rails.root.join('.env.production'), "# Generated with mastodon:setup on #{Time.now.utc}\n\n" + env.each_pair.map { |key, value| "#{key}=#{value}" }.join("\n") + "\n") + env_contents = env.each_pair.map do |key, value| + if value.is_a?(String) && value =~ /[\s\#\\"]/ + if value =~ /[']/ + value = value.to_s.gsub(/[\\"\$]/) { |x| "\\#{x}" } + "#{key}=\"#{value}\"" + else + "#{key}='#{value}'" + end + else + "#{key}=#{value}" + end + end.join("\n") + + File.write(Rails.root.join('.env.production'), "# Generated with mastodon:setup on #{Time.now.utc}\n\n" + env_contents + "\n") if using_docker prompt.ok 'Below is your configuration, save it to an .env.production file outside Docker:' From 5393b187c4601966f9be23490dfb1e54f3f3e725 Mon Sep 17 00:00:00 2001 From: ThibG Date: Sat, 29 Feb 2020 03:05:02 +0100 Subject: [PATCH 004/377] Fix elasticsearch-api and faraday incompatibilities (#13166) --- Gemfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7289e1445..59ab2ba7c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -202,14 +202,14 @@ GEM dotenv (= 2.7.5) railties (>= 3.2, < 6.1) e2mmap (0.1.0) - elasticsearch (7.3.0) - elasticsearch-api (= 7.3.0) - elasticsearch-transport (= 7.3.0) - elasticsearch-api (7.3.0) + elasticsearch (7.5.0) + elasticsearch-api (= 7.5.0) + elasticsearch-transport (= 7.5.0) + elasticsearch-api (7.5.0) multi_json elasticsearch-dsl (0.1.8) - elasticsearch-transport (7.3.0) - faraday + elasticsearch-transport (7.5.0) + faraday (>= 0.14, < 1) multi_json encryptor (3.0.0) equatable (0.6.1) @@ -220,7 +220,7 @@ GEM fabrication (2.21.0) faker (2.10.1) i18n (>= 1.6, < 2) - faraday (1.0.0) + faraday (0.17.3) multipart-post (>= 1.2, < 3) fast_blank (1.0.0) fastimage (2.1.7) From 7d575c669e4c67e6044fb48bc4012c10359136bd Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 1 Mar 2020 22:25:13 +0100 Subject: [PATCH 005/377] Bump puma from 4.3.2 to 4.3.3 (#13177) This fixes cookies and devise authentication being broken as a result of upgrading to puma 4.3.2, see https://github.com/puma/puma/issues/2132 --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 59ab2ba7c..6c13a4aa1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -435,7 +435,7 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.3) - puma (4.3.2) + puma (4.3.3) nio4r (~> 2.0) pundit (2.1.0) activesupport (>= 3.0.0) From 74c2490cddd062bde9ede51456da64a47c8f09ff Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 21:44:44 +0900 Subject: [PATCH 006/377] Bump strong_migrations from 0.5.1 to 0.6.2 (#13071) Bumps [strong_migrations](https://github.com/ankane/strong_migrations) from 0.5.1 to 0.6.2. - [Release notes](https://github.com/ankane/strong_migrations/releases) - [Changelog](https://github.com/ankane/strong_migrations/blob/master/CHANGELOG.md) - [Commits](https://github.com/ankane/strong_migrations/compare/v0.5.1...v0.6.2) Signed-off-by: dependabot-preview[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 07959fd3d..5f7ad430b 100644 --- a/Gemfile +++ b/Gemfile @@ -92,7 +92,7 @@ gem 'simple-navigation', '~> 4.1' gem 'simple_form', '~> 5.0' gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' gem 'stoplight', '~> 2.2.0' -gem 'strong_migrations', '~> 0.5' +gem 'strong_migrations', '~> 0.6' gem 'tty-command', '~> 0.9', require: false gem 'tty-prompt', '~> 0.20', require: false gem 'twitter-text', '~> 1.14' diff --git a/Gemfile.lock b/Gemfile.lock index 6c13a4aa1..d815fefc3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -602,7 +602,7 @@ GEM stoplight (2.2.0) streamio-ffmpeg (3.0.2) multi_json (~> 1.8) - strong_migrations (0.5.1) + strong_migrations (0.6.2) activerecord (>= 5) temple (0.8.2) terminal-table (1.8.0) @@ -777,7 +777,7 @@ DEPENDENCIES stackprof stoplight (~> 2.2.0) streamio-ffmpeg (~> 3.0) - strong_migrations (~> 0.5) + strong_migrations (~> 0.6) thor (~> 0.20) thwait (~> 0.1.0) tty-command (~> 0.9) From 95155ecbe7b86c4c180a78d7ef296822ba673d73 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 21:46:56 +0900 Subject: [PATCH 007/377] Bump oj from 3.10.1 to 3.10.3 (#13187) Bumps [oj](https://github.com/ohler55/oj) from 3.10.1 to 3.10.3. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.10.1...v3.10.3) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d815fefc3..9dda8efe5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -383,7 +383,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.10.1) + oj (3.10.3) omniauth (1.9.0) hashie (>= 3.4.6, < 3.7.0) rack (>= 1.6.2, < 3) From 66b014ca50938d3ef725fb63fa3c26e0c6f3d438 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 21:48:02 +0900 Subject: [PATCH 008/377] Bump json-ld-preloaded from 3.1.0 to 3.1.1 (#13143) Bumps [json-ld-preloaded](https://github.com/ruby-rdf/json-ld-preloaded) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/ruby-rdf/json-ld-preloaded/releases) - [Commits](https://github.com/ruby-rdf/json-ld-preloaded/compare/3.1.0...3.1.1) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9dda8efe5..9dcd36f4a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -311,7 +311,7 @@ GEM multi_json (~> 1.14) rack (~> 2.0) rdf (~> 3.1) - json-ld-preloaded (3.1.0) + json-ld-preloaded (3.1.1) json-ld (~> 3.1) rdf (~> 3.1) jsonapi-renderer (0.2.2) From 131c16f0bcc5efd9ccc24f1ca66955e3c0cb7c9c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 21:49:40 +0900 Subject: [PATCH 009/377] Bump @babel/core from 7.8.4 to 7.8.6 (#13185) Bumps [@babel/core](https://github.com/babel/babel) from 7.8.4 to 7.8.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md) - [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 70 ++++++++++++++++++++++++++-------------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 1a873615d..deb5ff8fd 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.8.4", + "@babel/core": "^7.8.6", "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-decorators": "^7.8.3", "@babel/plugin-transform-react-inline-elements": "^7.8.3", diff --git a/yarn.lock b/yarn.lock index 8814eb961..d5ff8afdf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,18 +18,18 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" - integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== +"@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.6.tgz#27d7df9258a45c2e686b6f18b6c659e563aa4636" + integrity sha512-Sheg7yEJD51YHAvLEV/7Uvw95AeWqYPL3Vk3zGujJKIhJ+8oLw2ALaf3hbucILhKsgSoADOvtKRJuNVdcJkOrg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" + "@babel/generator" "^7.8.6" "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.4" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -39,12 +39,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" - integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== +"@babel/generator@^7.0.0", "@babel/generator@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.6.tgz#57adf96d370c9a63c241cd719f9111468578537a" + integrity sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.6" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -261,10 +261,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" - integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.6.tgz#ba5c9910cddb77685a008e3c587af8d27b67962c" + integrity sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -808,34 +808,34 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.0.0", "@babel/template@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" - integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== +"@babel/template@^7.0.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" - integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" + "@babel/generator" "^7.8.6" "@babel/helper-function-name" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.3.0", "@babel/types@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.3.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.6.tgz#629ecc33c2557fcde7126e58053127afdb3e6d01" + integrity sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA== dependencies: esutils "^2.0.2" lodash "^4.17.13" From 3d8a6dc043c0d2c7ff535fa05d3f1ba289851ec7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 21:55:32 +0900 Subject: [PATCH 010/377] Bump webpack-dev-server from 3.10.1 to 3.10.3 (#13184) Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.10.1 to 3.10.3. - [Release notes](https://github.com/webpack/webpack-dev-server/releases) - [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.10.1...v3.10.3) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index deb5ff8fd..3fa2eca52 100644 --- a/package.json +++ b/package.json @@ -184,7 +184,7 @@ "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.12.0", "sass-lint": "^1.13.1", - "webpack-dev-server": "^3.10.1", + "webpack-dev-server": "^3.10.3", "yargs": "^15.1.0" } } diff --git a/yarn.lock b/yarn.lock index d5ff8afdf..b2bccee34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10860,10 +10860,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" - integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== +webpack-dev-server@^3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" From 86c932f79cdf94989721a467c716b1237992a5dc Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 21:55:52 +0900 Subject: [PATCH 011/377] Bump @babel/runtime from 7.8.3 to 7.8.4 (#13183) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.8.3 to 7.8.4. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.8.4/packages/babel-runtime) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3fa2eca52..13a6789a4 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@babel/plugin-transform-runtime": "^7.8.3", "@babel/preset-env": "^7.8.3", "@babel/preset-react": "^7.8.3", - "@babel/runtime": "^7.8.3", + "@babel/runtime": "^7.8.4", "@clusterws/cws": "^0.17.3", "@gamestdio/websocket": "^0.3.2", "array-includes": "^3.1.1", diff --git a/yarn.lock b/yarn.lock index b2bccee34..c0655e71a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -801,10 +801,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" - integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== dependencies: regenerator-runtime "^0.13.2" From 036ba3f51065a96cb9203a9ac5aa71d7d6edeebe Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 5 Mar 2020 15:52:15 +0100 Subject: [PATCH 012/377] Add tooltips to audio/video player buttons (#13203) --- app/javascript/mastodon/features/audio/index.js | 6 +++--- app/javascript/mastodon/features/video/index.js | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/javascript/mastodon/features/audio/index.js b/app/javascript/mastodon/features/audio/index.js index fda5a074f..95c9c7751 100644 --- a/app/javascript/mastodon/features/audio/index.js +++ b/app/javascript/mastodon/features/audio/index.js @@ -214,8 +214,8 @@ class Audio extends React.PureComponent {
- - + +
  @@ -236,7 +236,7 @@ class Audio extends React.PureComponent {
- - + +
  @@ -517,11 +517,11 @@ class Video extends React.PureComponent {
- {(!onCloseVideo && !editable && !fullscreen) && } - {(!fullscreen && onOpenVideo) && } - {onCloseVideo && } - - + {(!onCloseVideo && !editable && !fullscreen) && } + {(!fullscreen && onOpenVideo) && } + {onCloseVideo && } + +
From d081a80cff8e53a0ff48fb4274bc615166478b40 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 5 Mar 2020 15:56:01 +0100 Subject: [PATCH 013/377] Fix "tootctl media remove-orphans" crashing when encountering invalid media (#13170) Fixes #13168 --- app/models/media_attachment.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 42364641f..1e36625ca 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -170,6 +170,7 @@ class MediaAttachment < ApplicationRecord def variant?(other_file_name) return true if file_file_name == other_file_name + return false if file_file_name.nil? formats = file.styles.values.map(&:format).compact From 39453de232e068f58a711b2c052fe74fdd0c40b6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 5 Mar 2020 23:20:49 +0100 Subject: [PATCH 014/377] =?UTF-8?q?Change=20the=20string=20"Hide=20everyth?= =?UTF-8?q?ing=20from=20=E2=80=A6"=20to=20"Block=20domain=20=E2=80=A6"=20i?= =?UTF-8?q?n=20web=20UI=20(#13178)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blocking a domain is closer to blocking all its users than to a mute action. --- .../mastodon/components/status_action_bar.js | 4 ++-- .../features/account/components/header.js | 4 ++-- .../features/status/components/action_bar.js | 4 ++-- .../mastodon/locales/defaultMessages.json | 18 +++++++++--------- app/javascript/mastodon/locales/en.json | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index e2c8d43c9..bebbbcb5a 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -36,8 +36,8 @@ const messages = defineMessages({ 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' }, copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, - blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' }, - unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' }, + blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, + unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, }); diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 8bd7f2db5..35cc3952f 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -29,8 +29,8 @@ const messages = defineMessages({ report: { id: 'account.report', defaultMessage: 'Report @{name}' }, share: { id: 'account.share', defaultMessage: 'Share @{name}\'s profile' }, media: { id: 'account.media', defaultMessage: 'Media' }, - blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' }, - unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' }, + blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, + unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, hideReblogs: { id: 'account.hide_reblogs', defaultMessage: 'Hide boosts from @{name}' }, showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' }, pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 959774da4..ba62d7b10 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -32,8 +32,8 @@ const messages = defineMessages({ 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' }, copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, - blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' }, - unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' }, + blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, + unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, }); diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 0eb054acd..4c1fe94c5 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -142,7 +142,7 @@ { "descriptors": [ { - "defaultMessage": "Unhide {domain}", + "defaultMessage": "Unblock domain {domain}", "id": "account.unblock_domain" } ], @@ -451,11 +451,11 @@ "id": "status.copy" }, { - "defaultMessage": "Hide everything from {domain}", + "defaultMessage": "Block domain {domain}", "id": "account.block_domain" }, { - "defaultMessage": "Unhide {domain}", + "defaultMessage": "Unblock domain {domain}", "id": "account.unblock_domain" }, { @@ -697,11 +697,11 @@ "id": "account.media" }, { - "defaultMessage": "Hide everything from {domain}", + "defaultMessage": "Block domain {domain}", "id": "account.block_domain" }, { - "defaultMessage": "Unhide {domain}", + "defaultMessage": "Unblock domain {domain}", "id": "account.unblock_domain" }, { @@ -1470,7 +1470,7 @@ "id": "column.domain_blocks" }, { - "defaultMessage": "Unhide {domain}", + "defaultMessage": "Unblock domain {domain}", "id": "account.unblock_domain" }, { @@ -2384,11 +2384,11 @@ "id": "status.copy" }, { - "defaultMessage": "Hide everything from {domain}", + "defaultMessage": "Block domain {domain}", "id": "account.block_domain" }, { - "defaultMessage": "Unhide {domain}", + "defaultMessage": "Unblock domain {domain}", "id": "account.unblock_domain" }, { @@ -2944,4 +2944,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] \ No newline at end of file +] diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 5927aeb6c..fff449a51 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -3,7 +3,7 @@ "account.badges.bot": "Bot", "account.badges.group": "Group", "account.block": "Block @{name}", - "account.block_domain": "Hide everything from {domain}", + "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.cancel_follow_request": "Cancel follow request", "account.direct": "Direct message @{name}", @@ -34,7 +34,7 @@ "account.share": "Share @{name}'s profile", "account.show_reblogs": "Show boosts from @{name}", "account.unblock": "Unblock @{name}", - "account.unblock_domain": "Unhide {domain}", + "account.unblock_domain": "Unblock domain {domain}", "account.unendorse": "Don't feature on profile", "account.unfollow": "Unfollow", "account.unmute": "Unmute @{name}", From 0ae5c6312fa4c65b6b7bd7a00eb8960b8a69e951 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 6 Mar 2020 01:29:38 +0100 Subject: [PATCH 015/377] Remove useless `respond_to` calls (#13208) --- .../api/v1/accounts/follower_accounts_controller.rb | 2 -- .../api/v1/accounts/following_accounts_controller.rb | 2 -- app/controllers/api/v1/accounts/identity_proofs_controller.rb | 2 -- app/controllers/api/v1/accounts/lists_controller.rb | 2 -- app/controllers/api/v1/accounts/pins_controller.rb | 2 -- app/controllers/api/v1/accounts/relationships_controller.rb | 2 -- app/controllers/api/v1/accounts/search_controller.rb | 2 -- app/controllers/api/v1/accounts/statuses_controller.rb | 2 -- app/controllers/api/v1/accounts_controller.rb | 2 -- app/controllers/api/v1/apps/credentials_controller.rb | 2 -- app/controllers/api/v1/blocks_controller.rb | 2 -- app/controllers/api/v1/bookmarks_controller.rb | 2 -- app/controllers/api/v1/conversations_controller.rb | 2 -- app/controllers/api/v1/custom_emojis_controller.rb | 2 -- app/controllers/api/v1/domain_blocks_controller.rb | 2 -- app/controllers/api/v1/endorsements_controller.rb | 2 -- app/controllers/api/v1/favourites_controller.rb | 2 -- app/controllers/api/v1/featured_tags/suggestions_controller.rb | 3 --- app/controllers/api/v1/filters_controller.rb | 2 -- app/controllers/api/v1/instances/activity_controller.rb | 2 -- app/controllers/api/v1/instances/peers_controller.rb | 2 -- app/controllers/api/v1/instances_controller.rb | 2 -- app/controllers/api/v1/media_controller.rb | 2 -- app/controllers/api/v1/mutes_controller.rb | 2 -- app/controllers/api/v1/notifications_controller.rb | 2 -- app/controllers/api/v1/polls/votes_controller.rb | 2 -- app/controllers/api/v1/polls_controller.rb | 2 -- app/controllers/api/v1/preferences_controller.rb | 2 -- app/controllers/api/v1/reports_controller.rb | 2 -- app/controllers/api/v1/statuses/bookmarks_controller.rb | 2 -- .../api/v1/statuses/favourited_by_accounts_controller.rb | 2 -- app/controllers/api/v1/statuses/favourites_controller.rb | 2 -- app/controllers/api/v1/statuses/mutes_controller.rb | 2 -- app/controllers/api/v1/statuses/pins_controller.rb | 2 -- .../api/v1/statuses/reblogged_by_accounts_controller.rb | 2 -- app/controllers/api/v1/statuses/reblogs_controller.rb | 2 -- app/controllers/api/v1/statuses_controller.rb | 2 -- app/controllers/api/v1/streaming_controller.rb | 2 -- app/controllers/api/v1/suggestions_controller.rb | 2 -- app/controllers/api/v1/timelines/home_controller.rb | 2 -- app/controllers/api/v1/timelines/public_controller.rb | 2 -- app/controllers/api/v1/timelines/tag_controller.rb | 2 -- app/controllers/api/v1/trends_controller.rb | 2 -- app/controllers/api/v2/search_controller.rb | 2 -- app/controllers/api/web/embeds_controller.rb | 2 -- app/controllers/api/web/push_subscriptions_controller.rb | 2 -- app/controllers/api/web/settings_controller.rb | 2 -- 47 files changed, 95 deletions(-) diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb index e360b8a92..850702cca 100644 --- a/app/controllers/api/v1/accounts/follower_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/follower_accounts_controller.rb @@ -5,8 +5,6 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController before_action :set_account after_action :insert_pagination_headers - respond_to :json - def index @accounts = load_accounts render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/accounts/following_accounts_controller.rb b/app/controllers/api/v1/accounts/following_accounts_controller.rb index a405b365f..830dcd8a1 100644 --- a/app/controllers/api/v1/accounts/following_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/following_accounts_controller.rb @@ -5,8 +5,6 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController before_action :set_account after_action :insert_pagination_headers - respond_to :json - def index @accounts = load_accounts render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/accounts/identity_proofs_controller.rb b/app/controllers/api/v1/accounts/identity_proofs_controller.rb index bea51ae11..8dad6fee9 100644 --- a/app/controllers/api/v1/accounts/identity_proofs_controller.rb +++ b/app/controllers/api/v1/accounts/identity_proofs_controller.rb @@ -4,8 +4,6 @@ class Api::V1::Accounts::IdentityProofsController < Api::BaseController before_action :require_user! before_action :set_account - respond_to :json - def index @proofs = @account.identity_proofs.active render json: @proofs, each_serializer: REST::IdentityProofSerializer diff --git a/app/controllers/api/v1/accounts/lists_controller.rb b/app/controllers/api/v1/accounts/lists_controller.rb index 72392453c..ccb751f8f 100644 --- a/app/controllers/api/v1/accounts/lists_controller.rb +++ b/app/controllers/api/v1/accounts/lists_controller.rb @@ -5,8 +5,6 @@ class Api::V1::Accounts::ListsController < Api::BaseController before_action :require_user! before_action :set_account - respond_to :json - def index @lists = @account.lists.where(account: current_account) render json: @lists, each_serializer: REST::ListSerializer diff --git a/app/controllers/api/v1/accounts/pins_controller.rb b/app/controllers/api/v1/accounts/pins_controller.rb index 0a0239c42..3915b5669 100644 --- a/app/controllers/api/v1/accounts/pins_controller.rb +++ b/app/controllers/api/v1/accounts/pins_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Accounts::PinsController < Api::BaseController before_action :require_user! before_action :set_account - respond_to :json - def create AccountPin.create!(account: current_account, target_account: @account) render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships_presenter diff --git a/app/controllers/api/v1/accounts/relationships_controller.rb b/app/controllers/api/v1/accounts/relationships_controller.rb index ab8a0461f..1d3992a28 100644 --- a/app/controllers/api/v1/accounts/relationships_controller.rb +++ b/app/controllers/api/v1/accounts/relationships_controller.rb @@ -4,8 +4,6 @@ class Api::V1::Accounts::RelationshipsController < Api::BaseController before_action -> { doorkeeper_authorize! :read, :'read:follows' } before_action :require_user! - respond_to :json - def index accounts = Account.where(id: account_ids).select('id') # .where doesn't guarantee that our results are in the same order diff --git a/app/controllers/api/v1/accounts/search_controller.rb b/app/controllers/api/v1/accounts/search_controller.rb index 4217b527a..3061fcb7e 100644 --- a/app/controllers/api/v1/accounts/search_controller.rb +++ b/app/controllers/api/v1/accounts/search_controller.rb @@ -4,8 +4,6 @@ class Api::V1::Accounts::SearchController < Api::BaseController before_action -> { doorkeeper_authorize! :read, :'read:accounts' } before_action :require_user! - respond_to :json - def show @accounts = account_search render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/accounts/statuses_controller.rb b/app/controllers/api/v1/accounts/statuses_controller.rb index 333db9618..114ee0a82 100644 --- a/app/controllers/api/v1/accounts/statuses_controller.rb +++ b/app/controllers/api/v1/accounts/statuses_controller.rb @@ -6,8 +6,6 @@ class Api::V1::Accounts::StatusesController < Api::BaseController after_action :insert_pagination_headers, unless: -> { truthy_param?(:pinned) } - respond_to :json - def index @statuses = load_statuses render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index d68d2715f..f5b06862b 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -14,8 +14,6 @@ class Api::V1::AccountsController < Api::BaseController skip_before_action :require_authenticated_user!, only: :create - respond_to :json - def show render json: @account, serializer: REST::AccountSerializer end diff --git a/app/controllers/api/v1/apps/credentials_controller.rb b/app/controllers/api/v1/apps/credentials_controller.rb index 8b63d0490..0475b2d4a 100644 --- a/app/controllers/api/v1/apps/credentials_controller.rb +++ b/app/controllers/api/v1/apps/credentials_controller.rb @@ -3,8 +3,6 @@ class Api::V1::Apps::CredentialsController < Api::BaseController before_action -> { doorkeeper_authorize! :read } - respond_to :json - def show render json: doorkeeper_token.application, serializer: REST::ApplicationSerializer, fields: %i(name website vapid_key) end diff --git a/app/controllers/api/v1/blocks_controller.rb b/app/controllers/api/v1/blocks_controller.rb index 4cff04cad..a2baeef90 100644 --- a/app/controllers/api/v1/blocks_controller.rb +++ b/app/controllers/api/v1/blocks_controller.rb @@ -5,8 +5,6 @@ class Api::V1::BlocksController < Api::BaseController before_action :require_user! after_action :insert_pagination_headers - respond_to :json - def index @accounts = load_accounts render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/bookmarks_controller.rb b/app/controllers/api/v1/bookmarks_controller.rb index e1b244e76..c15212f0a 100644 --- a/app/controllers/api/v1/bookmarks_controller.rb +++ b/app/controllers/api/v1/bookmarks_controller.rb @@ -5,8 +5,6 @@ class Api::V1::BookmarksController < Api::BaseController before_action :require_user! after_action :insert_pagination_headers - respond_to :json - def index @statuses = load_statuses render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) diff --git a/app/controllers/api/v1/conversations_controller.rb b/app/controllers/api/v1/conversations_controller.rb index b19f27ebf..bc8013379 100644 --- a/app/controllers/api/v1/conversations_controller.rb +++ b/app/controllers/api/v1/conversations_controller.rb @@ -9,8 +9,6 @@ class Api::V1::ConversationsController < Api::BaseController before_action :set_conversation, except: :index after_action :insert_pagination_headers, only: :index - respond_to :json - def index @conversations = paginated_conversations render json: @conversations, each_serializer: REST::ConversationSerializer diff --git a/app/controllers/api/v1/custom_emojis_controller.rb b/app/controllers/api/v1/custom_emojis_controller.rb index 4e6d5d7c6..08b3474cc 100644 --- a/app/controllers/api/v1/custom_emojis_controller.rb +++ b/app/controllers/api/v1/custom_emojis_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::CustomEmojisController < Api::BaseController - respond_to :json - skip_before_action :set_cache_headers def index diff --git a/app/controllers/api/v1/domain_blocks_controller.rb b/app/controllers/api/v1/domain_blocks_controller.rb index af9e7a20f..5bb02d834 100644 --- a/app/controllers/api/v1/domain_blocks_controller.rb +++ b/app/controllers/api/v1/domain_blocks_controller.rb @@ -8,8 +8,6 @@ class Api::V1::DomainBlocksController < Api::BaseController before_action :require_user! after_action :insert_pagination_headers, only: :show - respond_to :json - def show @blocks = load_domain_blocks render json: @blocks.map(&:domain) diff --git a/app/controllers/api/v1/endorsements_controller.rb b/app/controllers/api/v1/endorsements_controller.rb index 2770c7aef..c87dbc4ce 100644 --- a/app/controllers/api/v1/endorsements_controller.rb +++ b/app/controllers/api/v1/endorsements_controller.rb @@ -5,8 +5,6 @@ class Api::V1::EndorsementsController < Api::BaseController before_action :require_user! after_action :insert_pagination_headers - respond_to :json - def index @accounts = load_accounts render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/favourites_controller.rb b/app/controllers/api/v1/favourites_controller.rb index db827f9d4..3e242905d 100644 --- a/app/controllers/api/v1/favourites_controller.rb +++ b/app/controllers/api/v1/favourites_controller.rb @@ -5,8 +5,6 @@ class Api::V1::FavouritesController < Api::BaseController before_action :require_user! after_action :insert_pagination_headers - respond_to :json - def index @statuses = load_statuses render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) diff --git a/app/controllers/api/v1/featured_tags/suggestions_controller.rb b/app/controllers/api/v1/featured_tags/suggestions_controller.rb index fb27ef88b..8c1b81a0f 100644 --- a/app/controllers/api/v1/featured_tags/suggestions_controller.rb +++ b/app/controllers/api/v1/featured_tags/suggestions_controller.rb @@ -2,12 +2,9 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, only: :index - before_action :require_user! before_action :set_most_used_tags, only: :index - respond_to :json - def index render json: @most_used_tags, each_serializer: REST::TagSerializer end diff --git a/app/controllers/api/v1/filters_controller.rb b/app/controllers/api/v1/filters_controller.rb index e5ebaff4d..b0ace3af0 100644 --- a/app/controllers/api/v1/filters_controller.rb +++ b/app/controllers/api/v1/filters_controller.rb @@ -7,8 +7,6 @@ class Api::V1::FiltersController < Api::BaseController before_action :set_filters, only: :index before_action :set_filter, only: [:show, :update, :destroy] - respond_to :json - def index render json: @filters, each_serializer: REST::FilterSerializer end diff --git a/app/controllers/api/v1/instances/activity_controller.rb b/app/controllers/api/v1/instances/activity_controller.rb index b30e8464c..4f6b4bcbf 100644 --- a/app/controllers/api/v1/instances/activity_controller.rb +++ b/app/controllers/api/v1/instances/activity_controller.rb @@ -6,8 +6,6 @@ class Api::V1::Instances::ActivityController < Api::BaseController skip_before_action :set_cache_headers skip_before_action :require_authenticated_user!, unless: :whitelist_mode? - respond_to :json - def show expires_in 1.day, public: true render_with_cache json: :activity, expires_in: 1.day diff --git a/app/controllers/api/v1/instances/peers_controller.rb b/app/controllers/api/v1/instances/peers_controller.rb index cc00d8a6b..9fa440935 100644 --- a/app/controllers/api/v1/instances/peers_controller.rb +++ b/app/controllers/api/v1/instances/peers_controller.rb @@ -6,8 +6,6 @@ class Api::V1::Instances::PeersController < Api::BaseController skip_before_action :set_cache_headers skip_before_action :require_authenticated_user!, unless: :whitelist_mode? - respond_to :json - def index expires_in 1.day, public: true render_with_cache(expires_in: 1.day) { Account.remote.domains } diff --git a/app/controllers/api/v1/instances_controller.rb b/app/controllers/api/v1/instances_controller.rb index c323b60b4..5b5058a7b 100644 --- a/app/controllers/api/v1/instances_controller.rb +++ b/app/controllers/api/v1/instances_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::InstancesController < Api::BaseController - respond_to :json - skip_before_action :set_cache_headers skip_before_action :require_authenticated_user!, unless: :whitelist_mode? diff --git a/app/controllers/api/v1/media_controller.rb b/app/controllers/api/v1/media_controller.rb index 81825db15..d87d7b946 100644 --- a/app/controllers/api/v1/media_controller.rb +++ b/app/controllers/api/v1/media_controller.rb @@ -4,8 +4,6 @@ class Api::V1::MediaController < Api::BaseController before_action -> { doorkeeper_authorize! :write, :'write:media' } before_action :require_user! - respond_to :json - def create @media = current_account.media_attachments.create!(media_params) render json: @media, serializer: REST::MediaAttachmentSerializer diff --git a/app/controllers/api/v1/mutes_controller.rb b/app/controllers/api/v1/mutes_controller.rb index df6c8e86c..65439fe9b 100644 --- a/app/controllers/api/v1/mutes_controller.rb +++ b/app/controllers/api/v1/mutes_controller.rb @@ -5,8 +5,6 @@ class Api::V1::MutesController < Api::BaseController before_action :require_user! after_action :insert_pagination_headers - respond_to :json - def index @accounts = load_accounts render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/notifications_controller.rb b/app/controllers/api/v1/notifications_controller.rb index bf3002e79..8ac227765 100644 --- a/app/controllers/api/v1/notifications_controller.rb +++ b/app/controllers/api/v1/notifications_controller.rb @@ -6,8 +6,6 @@ class Api::V1::NotificationsController < Api::BaseController before_action :require_user! after_action :insert_pagination_headers, only: :index - respond_to :json - DEFAULT_NOTIFICATIONS_LIMIT = 15 def index diff --git a/app/controllers/api/v1/polls/votes_controller.rb b/app/controllers/api/v1/polls/votes_controller.rb index 3fa0b6a76..e1d26106a 100644 --- a/app/controllers/api/v1/polls/votes_controller.rb +++ b/app/controllers/api/v1/polls/votes_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Polls::VotesController < Api::BaseController before_action :require_user! before_action :set_poll - respond_to :json - def create VoteService.new.call(current_account, @poll, vote_params[:choices]) render json: @poll, serializer: REST::PollSerializer diff --git a/app/controllers/api/v1/polls_controller.rb b/app/controllers/api/v1/polls_controller.rb index 031e6d42d..744baf7bb 100644 --- a/app/controllers/api/v1/polls_controller.rb +++ b/app/controllers/api/v1/polls_controller.rb @@ -7,8 +7,6 @@ class Api::V1::PollsController < Api::BaseController before_action :set_poll before_action :refresh_poll - respond_to :json - def show render json: @poll, serializer: REST::PollSerializer, include_results: true end diff --git a/app/controllers/api/v1/preferences_controller.rb b/app/controllers/api/v1/preferences_controller.rb index 077d39f5d..1640a8224 100644 --- a/app/controllers/api/v1/preferences_controller.rb +++ b/app/controllers/api/v1/preferences_controller.rb @@ -4,8 +4,6 @@ class Api::V1::PreferencesController < Api::BaseController before_action -> { doorkeeper_authorize! :read, :'read:accounts' } before_action :require_user! - respond_to :json - def index render json: current_account, serializer: REST::PreferencesSerializer end diff --git a/app/controllers/api/v1/reports_controller.rb b/app/controllers/api/v1/reports_controller.rb index 1b0b4b05b..66c40f6f4 100644 --- a/app/controllers/api/v1/reports_controller.rb +++ b/app/controllers/api/v1/reports_controller.rb @@ -4,8 +4,6 @@ class Api::V1::ReportsController < Api::BaseController before_action -> { doorkeeper_authorize! :write, :'write:reports' }, only: [:create] before_action :require_user! - respond_to :json - def create @report = ReportService.new.call( current_account, diff --git a/app/controllers/api/v1/statuses/bookmarks_controller.rb b/app/controllers/api/v1/statuses/bookmarks_controller.rb index a7f1eed00..3954af3c9 100644 --- a/app/controllers/api/v1/statuses/bookmarks_controller.rb +++ b/app/controllers/api/v1/statuses/bookmarks_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Statuses::BookmarksController < Api::BaseController before_action :require_user! before_action :set_status - respond_to :json - def create current_account.bookmarks.find_or_create_by!(account: current_account, status: @status) render json: @status, serializer: REST::StatusSerializer diff --git a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb index 05f4acc33..8229786d6 100644 --- a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb +++ b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::BaseController before_action :set_status after_action :insert_pagination_headers - respond_to :json - def index @accounts = load_accounts render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/statuses/favourites_controller.rb b/app/controllers/api/v1/statuses/favourites_controller.rb index f18ace996..7afa822ed 100644 --- a/app/controllers/api/v1/statuses/favourites_controller.rb +++ b/app/controllers/api/v1/statuses/favourites_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Statuses::FavouritesController < Api::BaseController before_action :require_user! before_action :set_status - respond_to :json - def create FavouriteService.new.call(current_account, @status) render json: @status, serializer: REST::StatusSerializer diff --git a/app/controllers/api/v1/statuses/mutes_controller.rb b/app/controllers/api/v1/statuses/mutes_controller.rb index b02469b4f..43c7a525a 100644 --- a/app/controllers/api/v1/statuses/mutes_controller.rb +++ b/app/controllers/api/v1/statuses/mutes_controller.rb @@ -8,8 +8,6 @@ class Api::V1::Statuses::MutesController < Api::BaseController before_action :set_status before_action :set_conversation - respond_to :json - def create current_account.mute_conversation!(@conversation) @mutes_map = { @conversation.id => true } diff --git a/app/controllers/api/v1/statuses/pins_controller.rb b/app/controllers/api/v1/statuses/pins_controller.rb index 4118a8ce4..51b1621b6 100644 --- a/app/controllers/api/v1/statuses/pins_controller.rb +++ b/app/controllers/api/v1/statuses/pins_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Statuses::PinsController < Api::BaseController before_action :require_user! before_action :set_status - respond_to :json - def create StatusPin.create!(account: current_account, status: @status) distribute_add_activity! diff --git a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb index fa60e7d84..6c9e49d90 100644 --- a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb +++ b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::BaseController before_action :set_status after_action :insert_pagination_headers - respond_to :json - def index @accounts = load_accounts render json: @accounts, each_serializer: REST::AccountSerializer diff --git a/app/controllers/api/v1/statuses/reblogs_controller.rb b/app/controllers/api/v1/statuses/reblogs_controller.rb index 67106ccbe..9abeb0759 100644 --- a/app/controllers/api/v1/statuses/reblogs_controller.rb +++ b/app/controllers/api/v1/statuses/reblogs_controller.rb @@ -7,8 +7,6 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController before_action :require_user! before_action :set_reblog - respond_to :json - def create @status = ReblogService.new.call(current_account, @reblog, reblog_params) render json: @status, serializer: REST::StatusSerializer diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index bba3c0651..85521fadf 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -8,8 +8,6 @@ class Api::V1::StatusesController < Api::BaseController before_action :require_user!, except: [:show, :context] before_action :set_status, only: [:show, :context] - respond_to :json - # This API was originally unlimited, pagination cannot be introduced without # breaking backwards-compatibility. Arbitrarily high number to cover most # conversations as quasi-unlimited, it would be too much work to render more diff --git a/app/controllers/api/v1/streaming_controller.rb b/app/controllers/api/v1/streaming_controller.rb index ebb17608c..7cd60615a 100644 --- a/app/controllers/api/v1/streaming_controller.rb +++ b/app/controllers/api/v1/streaming_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::StreamingController < Api::BaseController - respond_to :json - def index if Rails.configuration.x.streaming_api_base_url != request.host redirect_to streaming_api_url, status: 301 diff --git a/app/controllers/api/v1/suggestions_controller.rb b/app/controllers/api/v1/suggestions_controller.rb index 9da2b60ae..52054160d 100644 --- a/app/controllers/api/v1/suggestions_controller.rb +++ b/app/controllers/api/v1/suggestions_controller.rb @@ -7,8 +7,6 @@ class Api::V1::SuggestionsController < Api::BaseController before_action :require_user! before_action :set_accounts - respond_to :json - def index render json: @accounts, each_serializer: REST::AccountSerializer end diff --git a/app/controllers/api/v1/timelines/home_controller.rb b/app/controllers/api/v1/timelines/home_controller.rb index ff5ede138..ae6dbcb8b 100644 --- a/app/controllers/api/v1/timelines/home_controller.rb +++ b/app/controllers/api/v1/timelines/home_controller.rb @@ -5,8 +5,6 @@ class Api::V1::Timelines::HomeController < Api::BaseController before_action :require_user!, only: [:show] after_action :insert_pagination_headers, unless: -> { @statuses.empty? } - respond_to :json - def show @statuses = load_statuses diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb index ccc10f966..581befef1 100644 --- a/app/controllers/api/v1/timelines/public_controller.rb +++ b/app/controllers/api/v1/timelines/public_controller.rb @@ -4,8 +4,6 @@ class Api::V1::Timelines::PublicController < Api::BaseController before_action :require_user!, only: [:show], if: :require_auth? after_action :insert_pagination_headers, unless: -> { @statuses.empty? } - respond_to :json - def show @statuses = load_statuses render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) diff --git a/app/controllers/api/v1/timelines/tag_controller.rb b/app/controllers/api/v1/timelines/tag_controller.rb index 9adc4ad29..2d6ad5a80 100644 --- a/app/controllers/api/v1/timelines/tag_controller.rb +++ b/app/controllers/api/v1/timelines/tag_controller.rb @@ -4,8 +4,6 @@ class Api::V1::Timelines::TagController < Api::BaseController before_action :load_tag after_action :insert_pagination_headers, unless: -> { @statuses.empty? } - respond_to :json - def show @statuses = load_statuses render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) diff --git a/app/controllers/api/v1/trends_controller.rb b/app/controllers/api/v1/trends_controller.rb index bcea9857e..c875e9041 100644 --- a/app/controllers/api/v1/trends_controller.rb +++ b/app/controllers/api/v1/trends_controller.rb @@ -3,8 +3,6 @@ class Api::V1::TrendsController < Api::BaseController before_action :set_tags - respond_to :json - def index render json: @tags, each_serializer: REST::TagSerializer end diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index cbd9b551d..f17431dd1 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -8,8 +8,6 @@ class Api::V2::SearchController < Api::BaseController before_action -> { doorkeeper_authorize! :read, :'read:search' } before_action :require_user! - respond_to :json - def index @search = Search.new(search_results) render json: @search, serializer: REST::SearchSerializer diff --git a/app/controllers/api/web/embeds_controller.rb b/app/controllers/api/web/embeds_controller.rb index 4aa31695c..741ba910f 100644 --- a/app/controllers/api/web/embeds_controller.rb +++ b/app/controllers/api/web/embeds_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::Web::EmbedsController < Api::Web::BaseController - respond_to :json - before_action :require_user! def create diff --git a/app/controllers/api/web/push_subscriptions_controller.rb b/app/controllers/api/web/push_subscriptions_controller.rb index f388b17e5..7916b82fa 100644 --- a/app/controllers/api/web/push_subscriptions_controller.rb +++ b/app/controllers/api/web/push_subscriptions_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::Web::PushSubscriptionsController < Api::Web::BaseController - respond_to :json - before_action :require_user! def create diff --git a/app/controllers/api/web/settings_controller.rb b/app/controllers/api/web/settings_controller.rb index e3178bf48..3d65e46ed 100644 --- a/app/controllers/api/web/settings_controller.rb +++ b/app/controllers/api/web/settings_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::Web::SettingsController < Api::Web::BaseController - respond_to :json - before_action :require_user! def update From e69a3f54a10e58d32d7e46c494d98be948dde4b3 Mon Sep 17 00:00:00 2001 From: koyu Date: Fri, 6 Mar 2020 05:31:51 +0100 Subject: [PATCH 016/377] Change GIF label to be displayed even when autoplay is enabled in web UI (#13209) --- app/javascript/styles/mastodon/components.scss | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 653ad8188..1be93dfea 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -5058,12 +5058,6 @@ a.status-card.compact:hover { } .media-gallery__gifv { - &.autoplay { - .media-gallery__gifv__label { - display: none; - } - } - &:hover { .media-gallery__gifv__label { opacity: 1; From 503eab1c1f101e92f163ed4f8457cac9a6193ffc Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 6 Mar 2020 15:20:14 +0100 Subject: [PATCH 017/377] Fix too large announcements not being scrollable in web UI (#13211) --- app/javascript/styles/mastodon/components.scss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 1be93dfea..456929f3a 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -870,6 +870,7 @@ .announcements__item__content { word-wrap: break-word; + overflow-y: auto; .emojione { width: 20px; @@ -6676,17 +6677,21 @@ noscript { box-sizing: border-box; width: 100%; padding: 15px; - padding-right: 15px + 18px; position: relative; font-size: 15px; line-height: 20px; word-wrap: break-word; font-weight: 400; + max-height: 50vh; + overflow: hidden; + display: flex; + flex-direction: column; &__range { display: block; font-weight: 500; margin-bottom: 10px; + padding-right: 18px; } &__unread { From 339ce1c4e90605b736745b1f04493a247b2627ec Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 8 Mar 2020 15:17:39 +0100 Subject: [PATCH 018/377] Add specific rate limits for posting and following (#13172) --- app/controllers/account_follow_controller.rb | 2 +- app/controllers/api/base_controller.rb | 4 + app/controllers/api/v1/accounts_controller.rb | 4 +- .../api/v1/statuses/reblogs_controller.rb | 3 + app/controllers/api/v1/statuses_controller.rb | 5 +- app/controllers/application_controller.rb | 5 ++ .../authorize_interactions_controller.rb | 2 +- .../concerns/rate_limit_headers.rb | 16 +++- app/lib/exceptions.rb | 1 + app/lib/rate_limiter.rb | 64 ++++++++++++++++ app/models/concerns/account_interactions.rb | 16 +++- app/models/concerns/rate_limitable.rb | 36 +++++++++ app/models/follow.rb | 3 + app/models/follow_request.rb | 3 + app/models/status.rb | 3 + app/services/follow_service.rb | 74 +++++++++++-------- app/services/post_status_service.rb | 11 ++- app/services/reblog_service.rb | 16 +++- app/views/errors/429.html.haml | 5 ++ config/initializers/rack_attack.rb | 1 - config/locales/en.yml | 2 +- .../account_follow_controller_spec.rb | 2 +- .../api/v1/statuses_controller_spec.rb | 46 +++++++++++- 23 files changed, 273 insertions(+), 51 deletions(-) create mode 100644 app/lib/rate_limiter.rb create mode 100644 app/models/concerns/rate_limitable.rb create mode 100644 app/views/errors/429.html.haml diff --git a/app/controllers/account_follow_controller.rb b/app/controllers/account_follow_controller.rb index 185a355f8..33394074d 100644 --- a/app/controllers/account_follow_controller.rb +++ b/app/controllers/account_follow_controller.rb @@ -6,7 +6,7 @@ class AccountFollowController < ApplicationController before_action :authenticate_user! def create - FollowService.new.call(current_user.account, @account.acct) + FollowService.new.call(current_user.account, @account, with_rate_limit: true) redirect_to account_path(@account) end end diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 68bf425f4..153ade253 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -44,6 +44,10 @@ class Api::BaseController < ApplicationController render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503 end + rescue_from Mastodon::RateLimitExceededError do + render json: { error: I18n.t('errors.429') }, status: 429 + end + rescue_from ActionController::ParameterMissing do |e| render json: { error: e.to_s }, status: 400 end diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index f5b06862b..0080faf33 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -14,6 +14,8 @@ class Api::V1::AccountsController < Api::BaseController skip_before_action :require_authenticated_user!, only: :create + override_rate_limit_headers :follow, family: :follows + def show render json: @account, serializer: REST::AccountSerializer end @@ -29,7 +31,7 @@ class Api::V1::AccountsController < Api::BaseController end def follow - FollowService.new.call(current_user.account, @account, reblogs: truthy_param?(:reblogs)) + FollowService.new.call(current_user.account, @account, reblogs: truthy_param?(:reblogs), with_rate_limit: true) options = @account.locked? || current_user.account.silenced? ? {} : { following_map: { @account.id => { reblogs: truthy_param?(:reblogs) } }, requested_map: { @account.id => false } } diff --git a/app/controllers/api/v1/statuses/reblogs_controller.rb b/app/controllers/api/v1/statuses/reblogs_controller.rb index 9abeb0759..7fa774a4d 100644 --- a/app/controllers/api/v1/statuses/reblogs_controller.rb +++ b/app/controllers/api/v1/statuses/reblogs_controller.rb @@ -7,8 +7,11 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController before_action :require_user! before_action :set_reblog + override_rate_limit_headers :create, family: :statuses + def create @status = ReblogService.new.call(current_account, @reblog, reblog_params) + render json: @status, serializer: REST::StatusSerializer end diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 85521fadf..2f55e95fd 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -8,6 +8,8 @@ class Api::V1::StatusesController < Api::BaseController before_action :require_user!, except: [:show, :context] before_action :set_status, only: [:show, :context] + override_rate_limit_headers :create, family: :statuses + # This API was originally unlimited, pagination cannot be introduced without # breaking backwards-compatibility. Arbitrarily high number to cover most # conversations as quasi-unlimited, it would be too much work to render more @@ -42,7 +44,8 @@ class Api::V1::StatusesController < Api::BaseController scheduled_at: status_params[:scheduled_at], application: doorkeeper_token.application, poll: status_params[:poll], - idempotency: request.headers['Idempotency-Key']) + idempotency: request.headers['Idempotency-Key'], + with_rate_limit: true) render json: @status, serializer: @status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 0cfa2b386..973db6aca 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -29,6 +29,7 @@ class ApplicationController < ActionController::Base rescue_from Mastodon::NotPermittedError, with: :forbidden rescue_from HTTP::Error, OpenSSL::SSL::SSLError, with: :internal_server_error rescue_from Mastodon::RaceConditionError, with: :service_unavailable + rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests before_action :store_current_location, except: :raise_not_found, unless: :devise_controller? before_action :require_functional!, if: :user_signed_in? @@ -111,6 +112,10 @@ class ApplicationController < ActionController::Base respond_with_error(503) end + def too_many_requests + respond_with_error(429) + end + def single_user_mode? @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.where('id > 0').exists? end diff --git a/app/controllers/authorize_interactions_controller.rb b/app/controllers/authorize_interactions_controller.rb index e27366ea3..29c0288d0 100644 --- a/app/controllers/authorize_interactions_controller.rb +++ b/app/controllers/authorize_interactions_controller.rb @@ -20,7 +20,7 @@ class AuthorizeInteractionsController < ApplicationController end def create - if @resource.is_a?(Account) && FollowService.new.call(current_account, @resource) + if @resource.is_a?(Account) && FollowService.new.call(current_account, @resource, with_rate_limit: true) render :success else render :error diff --git a/app/controllers/concerns/rate_limit_headers.rb b/app/controllers/concerns/rate_limit_headers.rb index b79c558d8..86fe58a71 100644 --- a/app/controllers/concerns/rate_limit_headers.rb +++ b/app/controllers/concerns/rate_limit_headers.rb @@ -3,6 +3,20 @@ module RateLimitHeaders extend ActiveSupport::Concern + class_methods do + def override_rate_limit_headers(method_name, options = {}) + around_action(only: method_name, if: :current_account) do |_controller, block| + begin + block.call + ensure + rate_limiter = RateLimiter.new(current_account, options) + rate_limit_headers = rate_limiter.to_headers + response.headers.merge!(rate_limit_headers) unless response.headers['X-RateLimit-Remaining'].present? && rate_limit_headers['X-RateLimit-Remaining'].to_i > response.headers['X-RateLimit-Remaining'].to_i + end + end + end + end + included do before_action :set_rate_limit_headers, if: :rate_limited_request? end @@ -44,7 +58,7 @@ module RateLimitHeaders end def api_throttle_data - most_limited_type, = request.env['rack.attack.throttle_data'].min_by { |_, v| v[:limit] } + most_limited_type, = request.env['rack.attack.throttle_data'].min_by { |_, v| v[:limit] - v[:count] } request.env['rack.attack.throttle_data'][most_limited_type] end diff --git a/app/lib/exceptions.rb b/app/lib/exceptions.rb index 01346bfe5..3362576b0 100644 --- a/app/lib/exceptions.rb +++ b/app/lib/exceptions.rb @@ -8,6 +8,7 @@ module Mastodon class LengthValidationError < ValidationError; end class DimensionsValidationError < ValidationError; end class RaceConditionError < Error; end + class RateLimitExceededError < Error; end class UnexpectedResponseError < Error def initialize(response = nil) diff --git a/app/lib/rate_limiter.rb b/app/lib/rate_limiter.rb new file mode 100644 index 000000000..68dae9add --- /dev/null +++ b/app/lib/rate_limiter.rb @@ -0,0 +1,64 @@ +# frozen_string_literal: true + +class RateLimiter + include Redisable + + FAMILIES = { + follows: { + limit: 400, + period: 24.hours.freeze, + }.freeze, + + statuses: { + limit: 300, + period: 3.hours.freeze, + }.freeze, + + media: { + limit: 30, + period: 30.minutes.freeze, + }.freeze, + }.freeze + + def initialize(by, options = {}) + @by = by + @family = options[:family] + @limit = FAMILIES[@family][:limit] + @period = FAMILIES[@family][:period].to_i + end + + def record! + count = redis.get(key) + + if count.nil? + redis.set(key, 0) + redis.expire(key, (@period - (last_epoch_time % @period) + 1).to_i) + end + + raise Mastodon::RateLimitExceededError if count.present? && count.to_i >= @limit + + redis.incr(key) + end + + def rollback! + redis.decr(key) + end + + def to_headers(now = Time.now.utc) + { + 'X-RateLimit-Limit' => @limit.to_s, + 'X-RateLimit-Remaining' => (@limit - (redis.get(key) || 0).to_i).to_s, + 'X-RateLimit-Reset' => (now + (@period - now.to_i % @period)).iso8601(6), + } + end + + private + + def key + @key ||= "rate_limit:#{@by.id}:#{@family}:#{(last_epoch_time / @period).to_i}" + end + + def last_epoch_time + @last_epoch_time ||= Time.now.to_i + end +end diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index 14bcf7bb1..32fcb5397 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -87,10 +87,10 @@ module AccountInteractions has_many :announcement_mutes, dependent: :destroy end - def follow!(other_account, reblogs: nil, uri: nil) + def follow!(other_account, reblogs: nil, uri: nil, rate_limit: false) reblogs = true if reblogs.nil? - rel = active_relationships.create_with(show_reblogs: reblogs, uri: uri) + rel = active_relationships.create_with(show_reblogs: reblogs, uri: uri, rate_limit: rate_limit) .find_or_create_by!(target_account: other_account) rel.update!(show_reblogs: reblogs) @@ -99,6 +99,18 @@ module AccountInteractions rel end + def request_follow!(other_account, reblogs: nil, uri: nil, rate_limit: false) + reblogs = true if reblogs.nil? + + rel = follow_requests.create_with(show_reblogs: reblogs, uri: uri, rate_limit: rate_limit) + .find_or_create_by!(target_account: other_account) + + rel.update!(show_reblogs: reblogs) + remove_potential_friendship(other_account) + + rel + end + def block!(other_account, uri: nil) remove_potential_friendship(other_account) block_relationships.create_with(uri: uri) diff --git a/app/models/concerns/rate_limitable.rb b/app/models/concerns/rate_limitable.rb new file mode 100644 index 000000000..ad1b5e44e --- /dev/null +++ b/app/models/concerns/rate_limitable.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module RateLimitable + extend ActiveSupport::Concern + + def rate_limit=(value) + @rate_limit = value + end + + def rate_limit? + @rate_limit + end + + def rate_limiter(by, options = {}) + return @rate_limiter if defined?(@rate_limiter) + + @rate_limiter = RateLimiter.new(by, options) + end + + class_methods do + def rate_limit(options = {}) + after_create do + by = public_send(options[:by]) + + if rate_limit? && by&.local? + rate_limiter(by, options).record! + @rate_limit_recorded = true + end + end + + after_rollback do + rate_limiter(public_send(options[:by]), options).rollback! if @rate_limit_recorded + end + end + end +end diff --git a/app/models/follow.rb b/app/models/follow.rb index 87fa11425..f3e48a2ed 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -15,6 +15,9 @@ class Follow < ApplicationRecord include Paginable include RelationshipCacheable + include RateLimitable + + rate_limit by: :account, family: :follows belongs_to :account belongs_to :target_account, class_name: 'Account' diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb index 96ac7eaa5..3325e264c 100644 --- a/app/models/follow_request.rb +++ b/app/models/follow_request.rb @@ -15,6 +15,9 @@ class FollowRequest < ApplicationRecord include Paginable include RelationshipCacheable + include RateLimitable + + rate_limit by: :account, family: :follows belongs_to :account belongs_to :target_account, class_name: 'Account' diff --git a/app/models/status.rb b/app/models/status.rb index 1e630196b..1610da245 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -32,6 +32,9 @@ class Status < ApplicationRecord include Paginable include Cacheable include StatusThreadingConcern + include RateLimitable + + rate_limit by: :account, family: :statuses self.discard_column = :deleted_at diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index 4d19002c4..311ae7fa6 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -7,54 +7,68 @@ class FollowService < BaseService # Follow a remote user, notify remote user about the follow # @param [Account] source_account From which to follow # @param [String, Account] uri User URI to follow in the form of username@domain (or account record) - # @param [true, false, nil] reblogs Whether or not to show reblogs, defaults to true - def call(source_account, target_account, reblogs: nil, bypass_locked: false) - reblogs = true if reblogs.nil? - target_account = ResolveAccountService.new.call(target_account, skip_webfinger: true) + # @param [Hash] options + # @option [Boolean] :reblogs Whether or not to show reblogs, defaults to true + # @option [Boolean] :bypass_locked + # @option [Boolean] :with_rate_limit + def call(source_account, target_account, options = {}) + @source_account = source_account + @target_account = ResolveAccountService.new.call(target_account, skip_webfinger: true) + @options = { reblogs: true, bypass_locked: false, with_rate_limit: false }.merge(options) - 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) || target_account.moved? || (!target_account.local? && target_account.ostatus?) || source_account.domain_blocking?(target_account.domain) + raise ActiveRecord::RecordNotFound if following_not_possible? + raise Mastodon::NotPermittedError if following_not_allowed? - if source_account.following?(target_account) - # We're already following this account, but we'll call follow! again to - # make sure the reblogs status is set correctly. - return source_account.follow!(target_account, reblogs: reblogs) - elsif source_account.requested?(target_account) - # This isn't managed by a method in AccountInteractions, so we modify it - # ourselves if necessary. - req = source_account.follow_requests.find_by(target_account: target_account) - req.update!(show_reblogs: reblogs) - return req + if @source_account.following?(@target_account) + return change_follow_options! + elsif @source_account.requested?(@target_account) + return change_follow_request_options! end ActivityTracker.increment('activity:interactions') - if (target_account.locked? && !bypass_locked) || source_account.silenced? || target_account.activitypub? - request_follow(source_account, target_account, reblogs: reblogs) - elsif target_account.local? - direct_follow(source_account, target_account, reblogs: reblogs) + if (@target_account.locked? && !@options[:bypass_locked]) || @source_account.silenced? || @target_account.activitypub? + request_follow! + elsif @target_account.local? + direct_follow! end end private - def request_follow(source_account, target_account, reblogs: true) - follow_request = FollowRequest.create!(account: source_account, target_account: target_account, show_reblogs: reblogs) + def following_not_possible? + @target_account.nil? || @target_account.id == @source_account.id || @target_account.suspended? + end - if target_account.local? - LocalNotificationWorker.perform_async(target_account.id, follow_request.id, follow_request.class.name) - elsif target_account.activitypub? - ActivityPub::DeliveryWorker.perform_async(build_json(follow_request), source_account.id, target_account.inbox_url) + def following_not_allowed? + @target_account.blocking?(@source_account) || @source_account.blocking?(@target_account) || @target_account.moved? || (!@target_account.local? && @target_account.ostatus?) || @source_account.domain_blocking?(@target_account.domain) + end + + def change_follow_options! + @source_account.follow!(@target_account, reblogs: @options[:reblogs]) + end + + def change_follow_request_options! + @source_account.request_follow!(@target_account, reblogs: @options[:reblogs]) + end + + def request_follow! + follow_request = @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], rate_limit: @options[:with_rate_limit]) + + if @target_account.local? + LocalNotificationWorker.perform_async(@target_account.id, follow_request.id, follow_request.class.name) + elsif @target_account.activitypub? + ActivityPub::DeliveryWorker.perform_async(build_json(follow_request), @source_account.id, @target_account.inbox_url) end follow_request end - def direct_follow(source_account, target_account, reblogs: true) - follow = source_account.follow!(target_account, reblogs: reblogs) + def direct_follow! + follow = @source_account.follow!(@target_account, reblogs: @options[:reblogs], rate_limit: @options[:with_rate_limit]) - LocalNotificationWorker.perform_async(target_account.id, follow.id, follow.class.name) - MergeWorker.perform_async(target_account.id, source_account.id) + LocalNotificationWorker.perform_async(@target_account.id, follow.id, follow.class.name) + MergeWorker.perform_async(@target_account.id, @source_account.id) follow end diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index a0a650d62..1bbd625b4 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -19,6 +19,7 @@ class PostStatusService < BaseService # @option [Enumerable] :media_ids Optional array of media IDs to attach # @option [Doorkeeper::Application] :application # @option [String] :idempotency Optional idempotency key + # @option [Boolean] :with_rate_limit # @return [Status] def call(account, options = {}) @account = account @@ -160,6 +161,7 @@ class PostStatusService < BaseService visibility: @visibility, language: language_from_option(@options[:language]) || @account.user&.setting_default_language&.presence || LanguageDetector.instance.detect(@text, @account), application: @options[:application], + rate_limit: @options[:with_rate_limit], }.compact end @@ -179,10 +181,11 @@ class PostStatusService < BaseService def scheduled_options @options.tap do |options_hash| - 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 + 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 + options_hash[:with_rate_limit] = false end end end diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb index 3bb460fca..4b5ae9492 100644 --- a/app/services/reblog_service.rb +++ b/app/services/reblog_service.rb @@ -8,6 +8,8 @@ class ReblogService < BaseService # @param [Account] account Account to reblog from # @param [Status] reblogged_status Status to be reblogged # @param [Hash] options + # @option [String] :visibility + # @option [Boolean] :with_rate_limit # @return [Status] def call(account, reblogged_status, options = {}) reblogged_status = reblogged_status.reblog if reblogged_status.reblog? @@ -18,9 +20,15 @@ class ReblogService < BaseService return reblog unless reblog.nil? - visibility = options[:visibility] || account.user&.setting_default_privacy - visibility = reblogged_status.visibility if reblogged_status.hidden? - reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility) + visibility = begin + if reblogged_status.hidden? + reblogged_status.visibility + else + options[:visibility] || account.user&.setting_default_privacy + end + end + + reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility, rate_limit: options[:with_rate_limit]) DistributionWorker.perform_async(reblog.id) ActivityPub::DistributionWorker.perform_async(reblog.id) @@ -45,7 +53,9 @@ class ReblogService < BaseService def bump_potential_friendship(account, reblog) ActivityTracker.increment('activity:interactions') + return if account.following?(reblog.reblog.account_id) + PotentialFriendshipTracker.record(account.id, reblog.reblog.account_id, :reblog) end diff --git a/app/views/errors/429.html.haml b/app/views/errors/429.html.haml new file mode 100644 index 000000000..2df4f4175 --- /dev/null +++ b/app/views/errors/429.html.haml @@ -0,0 +1,5 @@ +- content_for :page_title do + = t('errors.429') + +- content_for :content do + = t('errors.429') diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index 3cd7ea3a6..8bc1104d4 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -70,7 +70,6 @@ class Rack::Attack req.remote_ip if req.post? && req.path == '/api/v1/accounts' end - # Throttle paging, as it is mainly used for public pages and AP collections throttle('throttle_authenticated_paging', limit: 300, period: 15.minutes) do |req| req.authenticated_user_id if req.paging_request? end diff --git a/config/locales/en.yml b/config/locales/en.yml index 1d2580101..99a80431a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -725,7 +725,7 @@ en: '422': content: Security verification failed. Are you blocking cookies? title: Security verification failed - '429': Throttled + '429': Too many requests '500': content: We're sorry, but something went wrong on our end. title: This page is not correct diff --git a/spec/controllers/account_follow_controller_spec.rb b/spec/controllers/account_follow_controller_spec.rb index ac15499be..9a93e1ebe 100644 --- a/spec/controllers/account_follow_controller_spec.rb +++ b/spec/controllers/account_follow_controller_spec.rb @@ -25,7 +25,7 @@ describe AccountFollowController do sign_in(user) subject - expect(service).to have_received(:call).with(user.account, 'alice') + expect(service).to have_received(:call).with(user.account, alice, with_rate_limit: true) expect(response).to redirect_to(account_path(alice)) end end diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb index 9ff5fcd3b..df8037038 100644 --- a/spec/controllers/api/v1/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -39,12 +39,50 @@ RSpec.describe Api::V1::StatusesController, type: :controller do describe 'POST #create' do let(:scopes) { 'write:statuses' } - before do - post :create, params: { status: 'Hello world' } + context do + before do + post :create, params: { status: 'Hello world' } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns rate limit headers' do + expect(response.headers['X-RateLimit-Limit']).to eq RateLimiter::FAMILIES[:statuses][:limit].to_s + expect(response.headers['X-RateLimit-Remaining']).to eq (RateLimiter::FAMILIES[:statuses][:limit] - 1).to_s + end end - it 'returns http success' do - expect(response).to have_http_status(200) + context 'with missing parameters' do + before do + post :create, params: {} + end + + it 'returns http unprocessable entity' do + expect(response).to have_http_status(422) + end + + it 'returns rate limit headers' do + expect(response.headers['X-RateLimit-Limit']).to eq RateLimiter::FAMILIES[:statuses][:limit].to_s + end + end + + context 'when exceeding rate limit' do + before do + rate_limiter = RateLimiter.new(user.account, family: :statuses) + 300.times { rate_limiter.record! } + post :create, params: { status: 'Hello world' } + end + + it 'returns http too many requests' do + expect(response).to have_http_status(429) + end + + it 'returns rate limit headers' do + expect(response.headers['X-RateLimit-Limit']).to eq RateLimiter::FAMILIES[:statuses][:limit].to_s + expect(response.headers['X-RateLimit-Remaining']).to eq '0' + end end end From 2e18b1a2a2976f04f84e92d187b0620223a64fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9lanie=20Chauvel=20=28ariasuni=29?= Date: Sun, 8 Mar 2020 15:36:50 +0100 Subject: [PATCH 019/377] Fix text area above/right of emoji picker being accidentally clickable in web UI (#13148) --- app/javascript/styles/mastodon/components.scss | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 456929f3a..7d3644d16 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -388,8 +388,8 @@ .emoji-picker-dropdown { position: absolute; - top: 5px; - right: 5px; + top: 0; + right: 0; } .compose-form__autosuggest-wrapper { @@ -4061,10 +4061,7 @@ a.status-card.compact:hover { .emoji-button { display: block; - font-size: 24px; - line-height: 24px; - margin-left: 2px; - width: 24px; + padding: 5px 5px 2px 2px; outline: 0; cursor: pointer; @@ -4080,7 +4077,6 @@ a.status-card.compact:hover { margin: 0; width: 22px; height: 22px; - margin-top: 2px; } &:hover, From 4a4cd686c1d556e7b5246ddc309085243b4a051b Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 8 Mar 2020 15:39:13 +0100 Subject: [PATCH 020/377] Add sorting by username, creation and last activity in moderation view (#13076) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add ability to order accounts in moderation view * Display last status date in “Most recent activity” for remote users --- app/models/account.rb | 1 + app/models/account_filter.rb | 27 +++++++++++++++++---- app/views/admin/accounts/_account.html.haml | 2 ++ app/views/admin/accounts/index.html.haml | 6 +++++ 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 778429b0d..a1b4a065b 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -102,6 +102,7 @@ class Account < ApplicationRecord scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).left_outer_joins(:account_stat) } scope :tagged_with, ->(tag) { joins(:accounts_tags).where(accounts_tags: { tag_id: tag }) } scope :by_recent_status, -> { order(Arel.sql('(case when account_stats.last_status_at is null then 1 else 0 end) asc, account_stats.last_status_at desc, accounts.id desc')) } + scope :by_recent_sign_in, -> { order(Arel.sql('(case when users.current_sign_in_at is null then 1 else 0 end) asc, users.current_sign_in_at desc, accounts.id desc')) } scope :popular, -> { order('account_stats.followers_count desc') } scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches('%.' + domain))) } scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) } diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index c7bf07787..7b6012e0f 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -14,6 +14,7 @@ class AccountFilter email ip staff + order ).freeze attr_reader :params @@ -24,7 +25,7 @@ class AccountFilter end def results - scope = Account.recent.includes(:user) + scope = Account.includes(:user).reorder(nil) params.each do |key, value| scope.merge!(scope_for(key, value.to_s.strip)) if value.present? @@ -38,6 +39,7 @@ class AccountFilter def set_defaults! params['local'] = '1' if params['remote'].blank? params['active'] = '1' if params['suspended'].blank? && params['silenced'].blank? && params['pending'].blank? + params['order'] = 'recent' if params['order'].blank? end def scope_for(key, value) @@ -51,9 +53,9 @@ class AccountFilter when 'active' Account.without_suspended when 'pending' - accounts_with_users.merge User.pending + accounts_with_users.merge(User.pending) when 'disabled' - accounts_with_users.merge User.disabled + accounts_with_users.merge(User.disabled) when 'silenced' Account.silenced when 'suspended' @@ -63,16 +65,31 @@ class AccountFilter when 'display_name' Account.matches_display_name(value) when 'email' - accounts_with_users.merge User.matches_email(value) + accounts_with_users.merge(User.matches_email(value)) when 'ip' valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value)) : Account.none when 'staff' - accounts_with_users.merge User.staff + accounts_with_users.merge(User.staff) + when 'order' + order_scope(value) else raise "Unknown filter: #{key}" end end + def order_scope(value) + case value + when 'active' + params['remote'] ? Account.joins(:account_stat).by_recent_status : Account.joins(:user).by_recent_sign_in + when 'recent' + Account.recent + when 'alphabetic' + Account.alphabetic + else + raise "Unknown order: #{value}" + end + end + def accounts_with_users Account.joins(:user) end diff --git a/app/views/admin/accounts/_account.html.haml b/app/views/admin/accounts/_account.html.haml index b057d3e42..44b10af6e 100644 --- a/app/views/admin/accounts/_account.html.haml +++ b/app/views/admin/accounts/_account.html.haml @@ -11,6 +11,8 @@ %td - if account.user_current_sign_in_at %time.time-ago{ datetime: account.user_current_sign_in_at.iso8601, title: l(account.user_current_sign_in_at) }= l account.user_current_sign_in_at + - elsif account.last_status_at.present? + %time.time-ago{ datetime: account.last_status_at.iso8601, title: l(account.last_status_at) }= l account.last_status_at - else \- %td diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index 3a85324c9..7592161c9 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -19,6 +19,12 @@ %ul %li= filter_link_to t('admin.accounts.moderation.all'), staff: nil %li= filter_link_to t('admin.accounts.roles.staff'), staff: '1' + .filter-subset + %strong= t 'generic.order_by' + %ul + %li= filter_link_to t('relationships.most_recent'), order: nil + %li= filter_link_to t('admin.accounts.username'), order: 'alphabetic' + %li= filter_link_to t('relationships.last_active'), order: 'active' = form_tag admin_accounts_url, method: 'GET', class: 'simple_form' do .fields-group From 6185bff4b3c2fec7b84aee8a9d6747d42ad865c0 Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 8 Mar 2020 15:42:20 +0100 Subject: [PATCH 021/377] Fix error when searching for URLs that contain the mention syntax (#13151) Fixes #13150 --- app/services/account_search_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index d217dabb3..493813aab 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -171,7 +171,7 @@ class AccountSearchService < BaseService end def username_complete? - query.include?('@') && "@#{query}" =~ Account::MENTION_RE + query.include?('@') && "@#{query}" =~ /\A#{Account::MENTION_RE}\Z/ end def likely_acct? From 05d83cb07da9edc8df59f7316772e176752110f4 Mon Sep 17 00:00:00 2001 From: David Cook Date: Sun, 8 Mar 2020 09:45:19 -0500 Subject: [PATCH 022/377] Set BUNDLE_PATH in CircleCI (#13214) --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3ba027d95..a343fc654 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,6 +6,7 @@ aliases: - image: circleci/ruby:2.7-buster-node environment: &ruby_environment BUNDLE_APP_CONFIG: ./.bundle/ + BUNDLE_PATH: ./vendor/bundle/ DB_HOST: localhost DB_USER: root RAILS_ENV: test From 4063f9f27805de0a12904071e521094122b9f725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9lanie=20Chauvel=20=28ariasuni=29?= Date: Sun, 8 Mar 2020 15:59:55 +0100 Subject: [PATCH 023/377] Change description of privacy levels to be more intuitive in web UI (#13197) * Improve description of privacy levels in compose interface * Change strings in defaultMessage and source as well as english Co-authored-by: Thibaut Girka --- .../features/compose/components/privacy_dropdown.js | 8 ++++---- app/javascript/mastodon/locales/defaultMessages.json | 8 ++++---- app/javascript/mastodon/locales/en.json | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js index 7cbfe463a..de030b7a2 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js @@ -11,13 +11,13 @@ import Icon from 'mastodon/components/icon'; const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, - public_long: { id: 'privacy.public.long', defaultMessage: 'Post to public timelines' }, + public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all, shown in public timelines' }, unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, - unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Do not show in public timelines' }, + unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but not in public timelines' }, private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, - private_long: { id: 'privacy.private.long', defaultMessage: 'Post to followers only' }, + private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' }, direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, - direct_long: { id: 'privacy.direct.long', defaultMessage: 'Post to mentioned users only' }, + direct_long: { id: 'privacy.direct.long', defaultMessage: 'Visible for mentioned users only' }, change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' }, }); diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 4c1fe94c5..d35fb9eb5 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1073,7 +1073,7 @@ "id": "privacy.public.short" }, { - "defaultMessage": "Post to public timelines", + "defaultMessage": "Visible for all, shown in public timelines", "id": "privacy.public.long" }, { @@ -1081,7 +1081,7 @@ "id": "privacy.unlisted.short" }, { - "defaultMessage": "Do not show in public timelines", + "defaultMessage": "Visible for all, but not in public timelines", "id": "privacy.unlisted.long" }, { @@ -1089,7 +1089,7 @@ "id": "privacy.private.short" }, { - "defaultMessage": "Post to followers only", + "defaultMessage": "Visible for followers only", "id": "privacy.private.long" }, { @@ -1097,7 +1097,7 @@ "id": "privacy.direct.short" }, { - "defaultMessage": "Post to mentioned users only", + "defaultMessage": "Visible for mentioned users only", "id": "privacy.direct.long" }, { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index fff449a51..7457bc3ad 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -319,13 +319,13 @@ "poll_button.add_poll": "Add a poll", "poll_button.remove_poll": "Remove poll", "privacy.change": "Adjust status privacy", - "privacy.direct.long": "Post to mentioned users only", + "privacy.direct.long": "Visible for mentioned users only", "privacy.direct.short": "Direct", - "privacy.private.long": "Post to followers only", + "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all, shown in public timelines", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not post to public timelines", + "privacy.unlisted.long": "Visible for all, but not in public timelines", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", From 2423d2f6772da39c0a76612dd2be299c445eb9f8 Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 8 Mar 2020 16:00:24 +0100 Subject: [PATCH 024/377] Add ability to delete files uploaded for settings in admin UI (#13192) * Allow deleting site uploads * Refactor and move links into hints * Fix i18n tests * Fix HTML output of site_upload_delete_hint --- .../admin/site_uploads_controller.rb | 21 +++++++++++++++++++ app/helpers/admin/settings_helper.rb | 11 ++++++++++ app/policies/settings_policy.rb | 4 ++++ app/views/admin/settings/edit.html.haml | 6 +++--- config/locales/en.yml | 3 +++ config/routes.rb | 1 + 6 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 app/controllers/admin/site_uploads_controller.rb create mode 100644 app/helpers/admin/settings_helper.rb diff --git a/app/controllers/admin/site_uploads_controller.rb b/app/controllers/admin/site_uploads_controller.rb new file mode 100644 index 000000000..cacecedb0 --- /dev/null +++ b/app/controllers/admin/site_uploads_controller.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Admin + class SiteUploadsController < BaseController + before_action :set_site_upload + + def destroy + authorize :settings, :destroy? + + @site_upload.destroy! + + redirect_to edit_admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') + end + + private + + def set_site_upload + @site_upload = SiteUpload.find(params[:id]) + end + end +end diff --git a/app/helpers/admin/settings_helper.rb b/app/helpers/admin/settings_helper.rb new file mode 100644 index 000000000..baf14ab25 --- /dev/null +++ b/app/helpers/admin/settings_helper.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Admin::SettingsHelper + def site_upload_delete_hint(hint, var) + upload = SiteUpload.find_by(var: var.to_s) + return hint unless upload + + link = link_to t('admin.site_uploads.delete'), admin_site_upload_path(upload), data: { method: :delete } + safe_join([hint, link], '
'.html_safe) + end +end diff --git a/app/policies/settings_policy.rb b/app/policies/settings_policy.rb index 2dcb79f51..874f97bab 100644 --- a/app/policies/settings_policy.rb +++ b/app/policies/settings_policy.rb @@ -8,4 +8,8 @@ class SettingsPolicy < ApplicationPolicy def show? admin? end + + def destroy? + admin? + end end diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index d7b493051..dc08f0141 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -30,13 +30,13 @@ .fields-row .fields-row__column.fields-row__column-6.fields-group - = f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: t('admin.settings.thumbnail.desc_html') + = f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: site_upload_delete_hint(t('admin.settings.thumbnail.desc_html'), :thumbnail) .fields-row__column.fields-row__column-6.fields-group - = f.input :hero, as: :file, wrapper: :with_block_label, label: t('admin.settings.hero.title'), hint: t('admin.settings.hero.desc_html') + = f.input :hero, as: :file, wrapper: :with_block_label, label: t('admin.settings.hero.title'), hint: site_upload_delete_hint(t('admin.settings.hero.desc_html'), :hero) .fields-row .fields-row__column.fields-row__column-6.fields-group - = f.input :mascot, as: :file, wrapper: :with_block_label, label: t('admin.settings.mascot.title'), hint: t('admin.settings.mascot.desc_html') + = f.input :mascot, as: :file, wrapper: :with_block_label, label: t('admin.settings.mascot.title'), hint: site_upload_delete_hint(t('admin.settings.mascot.desc_html'), :mascot) %hr.spacer/ diff --git a/config/locales/en.yml b/config/locales/en.yml index 99a80431a..8440b471c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -537,6 +537,9 @@ en: trends: desc_html: Publicly display previously reviewed hashtags that are currently trending title: Trending hashtags + site_uploads: + delete: Delete uploaded file + destroyed_msg: Site upload successfully deleted! statuses: back_to_account: Back to account page batch: diff --git a/config/routes.rb b/config/routes.rb index c22efc1e1..2de31e2db 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -186,6 +186,7 @@ Rails.application.routes.draw do end resource :settings, only: [:edit, :update] + resources :site_uploads, only: [:destroy] resources :invites, only: [:index, :create, :destroy] do collection do From 4e524218d3086e4f930e2005f1ce2d82f29e1a20 Mon Sep 17 00:00:00 2001 From: tateisu Date: Mon, 9 Mar 2020 00:01:07 +0900 Subject: [PATCH 025/377] Add `--skip-media-remove` option to `tootctl statuses remove` (#13080) * Add skip_media_remove option to tootctl statuses remove * Add skip_media_remove option to tootctl statuses remove Co-authored-by: tateisu --- lib/mastodon/statuses_cli.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb index ecaac17e3..b9dccdd8a 100644 --- a/lib/mastodon/statuses_cli.rb +++ b/lib/mastodon/statuses_cli.rb @@ -14,6 +14,7 @@ module Mastodon option :days, type: :numeric, default: 90 option :clean_followed, type: :boolean + option :skip_media_remove, type: :boolean desc 'remove', 'Remove unreferenced statuses' long_desc <<~LONG_DESC Remove statuses that are not referenced by local user activity, such as @@ -58,9 +59,10 @@ module Mastodon scope.in_batches.delete_all - say('Beginning removal of now-orphaned media attachments to free up disk space...') - - Scheduler::MediaCleanupScheduler.new.perform + unless options[:skip_media_remove] + say('Beginning removal of now-orphaned media attachments to free up disk space...') + Scheduler::MediaCleanupScheduler.new.perform + end say("Done after #{Time.now.to_f - start_at}s", :green) ensure From fd76955f3942bbd7ec830ab535bc31621cac14a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A8r=20Kessels?= Date: Sun, 8 Mar 2020 16:02:36 +0100 Subject: [PATCH 026/377] Code style improvements in JavaScript (#13159) * JS-linter: fix trailing comma's * Configure eslinter to ignore this onchange error. --- app/javascript/mastodon/actions/accounts.js | 2 +- .../mastodon/components/intersection_observer_article.js | 2 +- app/javascript/mastodon/features/blocks/index.js | 2 +- .../mastodon/features/compose/components/poll_form.js | 1 + app/javascript/mastodon/features/domain_blocks/index.js | 2 +- app/javascript/mastodon/features/favourites/index.js | 2 +- app/javascript/mastodon/features/follow_requests/index.js | 2 +- app/javascript/mastodon/features/followers/index.js | 2 +- app/javascript/mastodon/features/following/index.js | 2 +- app/javascript/mastodon/features/getting_started/index.js | 8 ++++---- app/javascript/mastodon/features/lists/index.js | 2 +- app/javascript/mastodon/features/mutes/index.js | 2 +- app/javascript/mastodon/features/reblogs/index.js | 2 +- .../mastodon/features/status/components/card.js | 2 +- .../features/ui/components/__tests__/column-test.js | 2 +- app/javascript/mastodon/reducers/notifications.js | 4 ++-- app/javascript/mastodon/reducers/timelines.js | 4 ++-- app/javascript/mastodon/selectors/index.js | 2 +- .../mastodon/service_worker/web_push_notifications.js | 2 +- app/javascript/mastodon/store/configureStore.js | 2 +- config/webpack/development.js | 2 +- config/webpack/shared.js | 4 ++-- 22 files changed, 28 insertions(+), 27 deletions(-) diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index d4a824e2c..4af36e998 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -106,7 +106,7 @@ export function fetchAccount(id) { dispatch, getState, db.transaction('accounts', 'read').objectStore('accounts').index('id'), - id + id, ).then(() => db.close(), error => { db.close(); throw error; diff --git a/app/javascript/mastodon/components/intersection_observer_article.js b/app/javascript/mastodon/components/intersection_observer_article.js index e453730ba..124b34b02 100644 --- a/app/javascript/mastodon/components/intersection_observer_article.js +++ b/app/javascript/mastodon/components/intersection_observer_article.js @@ -44,7 +44,7 @@ export default class IntersectionObserverArticle extends React.Component { intersectionObserverWrapper.observe( id, this.node, - this.handleIntersection + this.handleIntersection, ); this.componentMounted = true; diff --git a/app/javascript/mastodon/features/blocks/index.js b/app/javascript/mastodon/features/blocks/index.js index 051431ed2..870c0de09 100644 --- a/app/javascript/mastodon/features/blocks/index.js +++ b/app/javascript/mastodon/features/blocks/index.js @@ -68,7 +68,7 @@ class Blocks extends ImmutablePureComponent { bindToDocument={!multiColumn} > {accountIds.map(id => - + , )} diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js index 01df31d3a..fa2b0609e 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.js +++ b/app/javascript/mastodon/features/compose/components/poll_form.js @@ -155,6 +155,7 @@ class PollForm extends ImmutablePureComponent {
+ {/* eslint-disable-next-line jsx-a11y/no-onchange */} )} {showResults && - {!!voted && } {Math.round(percent)}% } - + + + {!!voted && + + } + + {showResults && ( + + {({ width }) => + + } + + )} ); } diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js index fa2b0609e..2f37ce64b 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.js +++ b/app/javascript/mastodon/features/compose/components/poll_form.js @@ -75,7 +75,7 @@ class Option extends React.PureComponent { return (
  • -
  • @@ -96,6 +97,7 @@ class Option extends React.PureComponent { onSuggestionsClearRequested={this.onSuggestionsClearRequested} onSuggestionSelected={this.onSuggestionSelected} searchTokens={[':']} + autoFocus={autoFocus} /> @@ -146,10 +148,12 @@ class PollForm extends ImmutablePureComponent { return null; } + const autoFocusIndex = options.indexOf(''); + return (
      - {options.map((title, i) =>
    From 706972b4bab8c5a0a28f66ebf91716786f1e2690 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Tue, 12 May 2020 22:55:25 +0900 Subject: [PATCH 366/377] Fix RedownloadMediaWorker (#13741) --- app/workers/redownload_media_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/redownload_media_worker.rb b/app/workers/redownload_media_worker.rb index 98e995918..071501a49 100644 --- a/app/workers/redownload_media_worker.rb +++ b/app/workers/redownload_media_worker.rb @@ -11,7 +11,7 @@ class RedownloadMediaWorker return if media_attachment.remote_url.blank? - media_attachment.reset_file! + media_attachment.file_remote_url = media_attachment.remote_url media_attachment.save rescue ActiveRecord::RecordNotFound true From be1e2594fbfb4d5ebe7bc0d10d73af7d8ffbf03d Mon Sep 17 00:00:00 2001 From: TheMainOne <50847364+TheEvilSkeleton@users.noreply.github.com> Date: Tue, 12 May 2020 15:38:24 -0400 Subject: [PATCH 367/377] Clarified "missing_also_known_as" (#13746) Fixes the confusion mentioned in https://github.com/tootsuite/mastodon/issues/12216. Suggestion of this fix provided by https://github.com/tootsuite/mastodon/issues/12216#issuecomment-564918757. --- config/locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index cc34b9094..116db4498 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -906,7 +906,7 @@ en: cancelled_msg: Successfully cancelled the redirect. errors: already_moved: is the same account you have already moved to - missing_also_known_as: is not back-referencing this account + missing_also_known_as: is not an alias of this account move_to_self: cannot be current account not_found: could not be found on_cooldown: You are on cooldown From 48503384d00525fe61a038bdb8a55868fdc1db92 Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 13 May 2020 21:20:34 +0200 Subject: [PATCH 368/377] Fix some account avatars on public pages having incorrect size (#13692) * Fix some account avatars on public pages having incorrect size * Remove outdated and overridden width and height attributes * Remove more hardcoded width/height attributes --- app/javascript/styles/mastodon/statuses.scss | 5 +++++ app/views/about/show.html.haml | 2 +- app/views/directories/index.html.haml | 2 +- app/views/statuses/_detailed_status.html.haml | 4 ++-- app/views/statuses/_simple_status.html.haml | 4 ++-- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss index 0b7be7afd..a8fd2936c 100644 --- a/app/javascript/styles/mastodon/statuses.scss +++ b/app/javascript/styles/mastodon/statuses.scss @@ -149,6 +149,11 @@ &__avatar { left: 15px; top: 17px; + + .account__avatar { + width: 48px; + height: 48px; + } } &__content { diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index 07e06100a..565c4ed59 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -27,7 +27,7 @@ .avatar-stack - @instance_presenter.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' + = image_tag current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url, alt: '', class: 'account__avatar' - if Setting.timeline_preview .directory__tag diff --git a/app/views/directories/index.html.haml b/app/views/directories/index.html.haml index bdc1e9d5a..7975ee999 100644 --- a/app/views/directories/index.html.haml +++ b/app/views/directories/index.html.haml @@ -25,7 +25,7 @@ .directory__card__bar = link_to TagManager.instance.url_for(account), class: 'directory__card__bar__name' do .avatar - = image_tag account.avatar.url, alt: '', width: 48, height: 48, class: 'u-photo' + = image_tag account.avatar.url, alt: '', class: 'u-photo' .display-name %bdi diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index 544b92330..33b81c748 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -3,9 +3,9 @@ = link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'detailed-status__display-name u-url', target: stream_link_target, rel: 'noopener' do .detailed-status__display-avatar - if current_account&.user&.setting_auto_play_gif || autoplay - = image_tag status.account.avatar_original_url, width: 48, height: 48, alt: '', class: 'account__avatar u-photo' + = image_tag status.account.avatar_original_url, alt: '', class: 'account__avatar u-photo' - else - = image_tag status.account.avatar_static_url, width: 48, height: 48, alt: '', class: 'account__avatar u-photo' + = image_tag status.account.avatar_static_url, alt: '', class: 'account__avatar u-photo' %span.display-name %bdi %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: autoplay) diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index ff09ab2ee..d7853eca9 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -9,9 +9,9 @@ .status__avatar %div - if current_account&.user&.setting_auto_play_gif || autoplay - = image_tag status.account.avatar_original_url, width: 48, height: 48, alt: '', class: 'u-photo account__avatar' + = image_tag status.account.avatar_original_url, alt: '', class: 'u-photo account__avatar' - else - = image_tag status.account.avatar_static_url, width: 48, height: 48, alt: '', class: 'u-photo account__avatar' + = image_tag status.account.avatar_static_url, alt: '', class: 'u-photo account__avatar' %span.display-name %bdi %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: autoplay) From 92f85bea528c5eca97a2f075c53f7dcafdf5cb41 Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 13 May 2020 21:20:45 +0200 Subject: [PATCH 369/377] =?UTF-8?q?Change=20=E2=80=9Chide/show=20boosts=20?= =?UTF-8?q?from=20=E2=80=A6=E2=80=9D=20menu=20to=20be=20hidden=20when=20th?= =?UTF-8?q?e=20account=20is=20muted=20(#13748)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise, it may mislead users into believing this setting is an exception to the muting behavior. Fixes #13744 --- .../mastodon/features/account/components/header.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 92780a70b..8c85bbc39 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -192,10 +192,12 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' }); } else { if (account.getIn(['relationship', 'following'])) { - if (account.getIn(['relationship', 'showing_reblogs'])) { - menu.push({ text: intl.formatMessage(messages.hideReblogs, { name: account.get('username') }), action: this.props.onReblogToggle }); - } else { - menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle }); + if (!account.getIn(['relationship', 'muting'])) { + if (account.getIn(['relationship', 'showing_reblogs'])) { + menu.push({ text: intl.formatMessage(messages.hideReblogs, { name: account.get('username') }), action: this.props.onReblogToggle }); + } else { + menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle }); + } } menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle }); From af53cfd19e5d8f5ae62b4e5f559f8c4fc2f0038f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 13 May 2020 22:35:20 +0200 Subject: [PATCH 370/377] New Crowdin translations (#13398) * New translations simple_form.en.yml (French) [ci skip] * New translations en.json (Portuguese, Brazilian) [ci skip] * New translations en.json (Portuguese, Brazilian) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.json (Korean) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Greek) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (Icelandic) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.yml (Polish) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations doorkeeper.en.yml (Albanian) [ci skip] * New translations activerecord.en.yml (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations doorkeeper.en.yml (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.yml (Asturian) [ci skip] * New translations en.yml (Welsh) [ci skip] * New translations en.yml (Welsh) [ci skip] * New translations en.json (Welsh) [ci skip] * New translations simple_form.en.yml (Welsh) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations devise.en.yml (Albanian) [ci skip] * New translations simple_form.en.yml (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.yml (Slovak) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations en.json (Indonesian) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations simple_form.en.yml (Danish) [ci skip] * New translations en.json (Danish) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations activerecord.en.yml (Chinese Simplified) [ci skip] * New translations devise.en.yml (Persian) [ci skip] * New translations activerecord.en.yml (Persian) [ci skip] * New translations devise.en.yml (Indonesian) [ci skip] * New translations activerecord.en.yml (Indonesian) [ci skip] * New translations devise.en.yml (Chinese Traditional) [ci skip] * New translations activerecord.en.yml (Chinese Traditional) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations devise.en.yml (Ukrainian) [ci skip] * New translations devise.en.yml (Tamil) [ci skip] * New translations activerecord.en.yml (Ukrainian) [ci skip] * New translations devise.en.yml (Turkish) [ci skip] * New translations activerecord.en.yml (Turkish) [ci skip] * New translations devise.en.yml (Swedish) [ci skip] * New translations activerecord.en.yml (Swedish) [ci skip] * New translations devise.en.yml (Serbian (Cyrillic)) [ci skip] * New translations activerecord.en.yml (Serbian (Cyrillic)) [ci skip] * New translations activerecord.en.yml (Tamil) [ci skip] * New translations activerecord.en.yml (Spanish, Argentina) [ci skip] * New translations activerecord.en.yml (Slovenian) [ci skip] * New translations activerecord.en.yml (Corsican) [ci skip] * New translations devise.en.yml (Occitan) [ci skip] * New translations devise.en.yml (Esperanto) [ci skip] * New translations activerecord.en.yml (Esperanto) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations devise.en.yml (Welsh) [ci skip] * New translations activerecord.en.yml (Welsh) [ci skip] * New translations devise.en.yml (Spanish, Argentina) [ci skip] * New translations devise.en.yml (Estonian) [ci skip] * New translations activerecord.en.yml (Estonian) [ci skip] * New translations devise.en.yml (Kazakh) [ci skip] * New translations activerecord.en.yml (Kazakh) [ci skip] * New translations devise.en.yml (Thai) [ci skip] * New translations activerecord.en.yml (Thai) [ci skip] * New translations devise.en.yml (Bengali) [ci skip] * New translations activerecord.en.yml (Bengali) [ci skip] * New translations devise.en.yml (Slovenian) [ci skip] * New translations activerecord.en.yml (Slovak) [ci skip] * New translations devise.en.yml (Czech) [ci skip] * New translations activerecord.en.yml (Greek) [ci skip] * New translations activerecord.en.yml (German) [ci skip] * New translations doorkeeper.en.yml (Danish) [ci skip] * New translations devise.en.yml (Danish) [ci skip] * New translations activerecord.en.yml (Danish) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.json (Danish) [ci skip] * New translations activerecord.en.yml (Czech) [ci skip] * New translations activerecord.en.yml (Basque) [ci skip] * New translations devise.en.yml (Catalan) [ci skip] * New translations activerecord.en.yml (Catalan) [ci skip] * New translations devise.en.yml (Arabic) [ci skip] * New translations activerecord.en.yml (Arabic) [ci skip] * New translations devise.en.yml (Spanish) [ci skip] * New translations activerecord.en.yml (Spanish) [ci skip] * New translations activerecord.en.yml (French) [ci skip] * New translations devise.en.yml (Greek) [ci skip] * New translations devise.en.yml (Basque) [ci skip] * New translations en.yml (Slovak) [ci skip] * New translations activerecord.en.yml (Dutch) [ci skip] * New translations activerecord.en.yml (Russian) [ci skip] * New translations activerecord.en.yml (Portuguese) [ci skip] * New translations devise.en.yml (Polish) [ci skip] * New translations activerecord.en.yml (Polish) [ci skip] * New translations devise.en.yml (Norwegian) [ci skip] * New translations activerecord.en.yml (Norwegian) [ci skip] * New translations devise.en.yml (Dutch) [ci skip] * New translations devise.en.yml (Korean) [ci skip] * New translations activerecord.en.yml (Finnish) [ci skip] * New translations activerecord.en.yml (Korean) [ci skip] * New translations devise.en.yml (Japanese) [ci skip] * New translations activerecord.en.yml (Japanese) [ci skip] * New translations devise.en.yml (Italian) [ci skip] * New translations activerecord.en.yml (Italian) [ci skip] * New translations devise.en.yml (Armenian) [ci skip] * New translations activerecord.en.yml (Armenian) [ci skip] * New translations devise.en.yml (Finnish) [ci skip] * New translations devise.en.yml (Corsican) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations devise.en.yml (Esperanto) [ci skip] * New translations simple_form.en.yml (Czech) [ci skip] * New translations en.yml (Norwegian) [ci skip] * New translations simple_form.en.yml (Norwegian) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations devise.en.yml (Romanian) [ci skip] * New translations en.json (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations doorkeeper.en.yml (Albanian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.yml (Sardinian) [ci skip] * New translations simple_form.en.yml (Sardinian) [ci skip] * New translations activerecord.en.yml (Sardinian) [ci skip] * New translations devise.en.yml (Sardinian) [ci skip] * New translations doorkeeper.en.yml (Sardinian) [ci skip] * New translations activerecord.en.yml (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations activerecord.en.yml (Sardinian) [ci skip] * New translations simple_form.en.yml (Romanian) [ci skip] * New translations en.json (Slovenian) [ci skip] * New translations en.yml (Slovenian) [ci skip] * New translations en.json (Thai) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations simple_form.en.yml (Romanian) [ci skip] * New translations doorkeeper.en.yml (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations doorkeeper.en.yml (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.json (Romanian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations simple_form.en.yml (Romanian) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.yml (Arabic) [ci skip] * New translations simple_form.en.yml (Arabic) [ci skip] * New translations simple_form.en.yml (Thai) [ci skip] * New translations en.yml (Slovak) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.json (Slovak) [ci skip] * New translations doorkeeper.en.yml (Czech) [ci skip] * New translations simple_form.en.yml (Russian) [ci skip] * New translations simple_form.en.yml (Ukrainian) [ci skip] * New translations en.json (Hungarian) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations simple_form.en.yml (Hungarian) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations en.json (French) [ci skip] * New translations simple_form.en.yml (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.yml (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.yml (Norwegian Nynorsk) [ci skip] * New translations simple_form.en.yml (Norwegian Nynorsk) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations simple_form.en.yml (Russian) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Greek) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Icelandic) [ci skip] * New translations en.yml (Arabic) [ci skip] * New translations devise.en.yml (Arabic) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.yml (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.json (Finnish) [ci skip] * New translations doorkeeper.en.yml (Finnish) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.yml (Ukrainian) [ci skip] * New translations simple_form.en.yml (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.yml (Ukrainian) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * i18n-tasks normalize * yarn manage:translations --- app/javascript/mastodon/locales/ar.json | 3 + app/javascript/mastodon/locales/ast.json | 3 + app/javascript/mastodon/locales/bg.json | 3 + app/javascript/mastodon/locales/bn.json | 3 + app/javascript/mastodon/locales/br.json | 3 + app/javascript/mastodon/locales/ca.json | 3 + app/javascript/mastodon/locales/co.json | 19 +- app/javascript/mastodon/locales/cs.json | 3 + app/javascript/mastodon/locales/cy.json | 3 + app/javascript/mastodon/locales/da.json | 7 +- app/javascript/mastodon/locales/de.json | 3 + .../mastodon/locales/defaultMessages.json | 27 +- app/javascript/mastodon/locales/el.json | 3 + app/javascript/mastodon/locales/en.json | 2 + app/javascript/mastodon/locales/eo.json | 65 +- app/javascript/mastodon/locales/es-AR.json | 3 + app/javascript/mastodon/locales/es.json | 3 + app/javascript/mastodon/locales/et.json | 3 + app/javascript/mastodon/locales/eu.json | 3 + app/javascript/mastodon/locales/fa.json | 3 + app/javascript/mastodon/locales/fi.json | 3 + app/javascript/mastodon/locales/fr.json | 13 +- app/javascript/mastodon/locales/ga.json | 3 + app/javascript/mastodon/locales/gl.json | 13 +- app/javascript/mastodon/locales/he.json | 3 + app/javascript/mastodon/locales/hi.json | 3 + app/javascript/mastodon/locales/hr.json | 3 + app/javascript/mastodon/locales/hu.json | 7 +- app/javascript/mastodon/locales/hy.json | 31 +- app/javascript/mastodon/locales/id.json | 3 + app/javascript/mastodon/locales/io.json | 3 + app/javascript/mastodon/locales/is.json | 3 + app/javascript/mastodon/locales/it.json | 3 + app/javascript/mastodon/locales/ja.json | 3 + app/javascript/mastodon/locales/ka.json | 3 + app/javascript/mastodon/locales/kab.json | 3 + app/javascript/mastodon/locales/kk.json | 3 + app/javascript/mastodon/locales/kn.json | 3 + app/javascript/mastodon/locales/ko.json | 3 + app/javascript/mastodon/locales/lt.json | 3 + app/javascript/mastodon/locales/lv.json | 3 + app/javascript/mastodon/locales/mk.json | 3 + app/javascript/mastodon/locales/ml.json | 3 + app/javascript/mastodon/locales/mr.json | 3 + app/javascript/mastodon/locales/ms.json | 3 + app/javascript/mastodon/locales/nl.json | 3 + app/javascript/mastodon/locales/nn.json | 3 + app/javascript/mastodon/locales/no.json | 3 + app/javascript/mastodon/locales/oc.json | 5 +- app/javascript/mastodon/locales/pl.json | 3 + app/javascript/mastodon/locales/pt-BR.json | 249 +++---- app/javascript/mastodon/locales/pt-PT.json | 63 +- app/javascript/mastodon/locales/ro.json | 389 +++++------ app/javascript/mastodon/locales/ru.json | 5 +- app/javascript/mastodon/locales/sc.json | 445 +++++++++++++ app/javascript/mastodon/locales/sk.json | 5 +- app/javascript/mastodon/locales/sl.json | 11 +- app/javascript/mastodon/locales/sq.json | 187 +++--- app/javascript/mastodon/locales/sr-Latn.json | 3 + app/javascript/mastodon/locales/sr.json | 3 + app/javascript/mastodon/locales/sv.json | 3 + app/javascript/mastodon/locales/ta.json | 15 +- app/javascript/mastodon/locales/te.json | 3 + app/javascript/mastodon/locales/th.json | 3 + app/javascript/mastodon/locales/tr.json | 3 + app/javascript/mastodon/locales/uk.json | 29 +- app/javascript/mastodon/locales/ur.json | 3 + app/javascript/mastodon/locales/vi.json | 3 + .../mastodon/locales/whitelist_sc.json | 2 + app/javascript/mastodon/locales/zh-CN.json | 3 + app/javascript/mastodon/locales/zh-HK.json | 3 + app/javascript/mastodon/locales/zh-TW.json | 3 + config/locales/activerecord.bn.yml | 4 +- config/locales/activerecord.gl.yml | 2 +- config/locales/activerecord.pt-BR.yml | 2 +- config/locales/activerecord.ro.yml | 16 + config/locales/activerecord.ru.yml | 2 +- config/locales/activerecord.sc.yml | 6 + config/locales/activerecord.sq.yml | 6 +- config/locales/ar.yml | 18 + config/locales/ast.yml | 2 + config/locales/ca.yml | 5 +- config/locales/co.yml | 3 + config/locales/cs.yml | 39 ++ config/locales/cy.yml | 45 ++ config/locales/da.yml | 14 + config/locales/devise.ar.yml | 2 + config/locales/devise.da.yml | 2 +- config/locales/devise.el.yml | 18 +- config/locales/devise.eo.yml | 8 + config/locales/devise.it.yml | 4 +- config/locales/devise.pt-BR.yml | 18 +- config/locales/devise.pt-PT.yml | 8 +- config/locales/devise.ro.yml | 98 +++ config/locales/devise.sc.yml | 1 + config/locales/devise.sk.yml | 6 +- config/locales/devise.sq.yml | 4 + config/locales/devise.zh-CN.yml | 16 +- config/locales/doorkeeper.cs.yml | 2 +- config/locales/doorkeeper.da.yml | 1 + config/locales/doorkeeper.fi.yml | 1 + config/locales/doorkeeper.gl.yml | 54 +- config/locales/doorkeeper.pt-PT.yml | 2 +- config/locales/doorkeeper.ro.yml | 150 +++++ config/locales/doorkeeper.sc.yml | 1 + config/locales/doorkeeper.sq.yml | 57 +- config/locales/el.yml | 27 + config/locales/eo.yml | 4 + config/locales/es-AR.yml | 3 + config/locales/es.yml | 3 + config/locales/fa.yml | 2 + config/locales/fr.yml | 5 +- config/locales/gl.yml | 41 +- config/locales/hu.yml | 11 +- config/locales/id.yml | 21 + config/locales/is.yml | 5 +- config/locales/it.yml | 3 + config/locales/ja.yml | 3 + config/locales/ko.yml | 3 + config/locales/nn.yml | 32 + config/locales/no.yml | 34 + config/locales/pl.yml | 1 + config/locales/pt-BR.yml | 73 +- config/locales/pt-PT.yml | 101 +-- config/locales/ro.yml | 627 +++++++++++++++++- config/locales/ru.yml | 16 +- config/locales/sc.yml | 20 + config/locales/simple_form.ar.yml | 1 + config/locales/simple_form.cs.yml | 4 + config/locales/simple_form.cy.yml | 5 + config/locales/simple_form.da.yml | 2 + config/locales/simple_form.el.yml | 3 + config/locales/simple_form.eo.yml | 1 + config/locales/simple_form.eu.yml | 2 +- config/locales/simple_form.fr.yml | 6 +- config/locales/simple_form.gl.yml | 84 +-- config/locales/simple_form.hu.yml | 6 +- config/locales/simple_form.ja.yml | 2 +- config/locales/simple_form.nn.yml | 1 + config/locales/simple_form.no.yml | 1 + config/locales/simple_form.pt-BR.yml | 2 +- config/locales/simple_form.pt-PT.yml | 24 +- config/locales/simple_form.ro.yml | 79 ++- config/locales/simple_form.ru.yml | 36 +- config/locales/simple_form.sc.yml | 1 + config/locales/simple_form.sq.yml | 16 + config/locales/simple_form.th.yml | 2 +- config/locales/simple_form.tr.yml | 1 + config/locales/simple_form.uk.yml | 8 +- config/locales/simple_form.zh-CN.yml | 8 +- config/locales/sk.yml | 32 +- config/locales/sl.yml | 1 + config/locales/sq.yml | 182 +++++ config/locales/ta.yml | 37 ++ config/locales/th.yml | 39 +- config/locales/tr.yml | 6 + config/locales/uk.yml | 61 +- config/locales/zh-CN.yml | 60 +- 158 files changed, 3241 insertions(+), 866 deletions(-) create mode 100644 app/javascript/mastodon/locales/sc.json create mode 100644 app/javascript/mastodon/locales/whitelist_sc.json create mode 100644 config/locales/activerecord.sc.yml create mode 100644 config/locales/devise.sc.yml create mode 100644 config/locales/doorkeeper.sc.yml create mode 100644 config/locales/sc.yml create mode 100644 config/locales/simple_form.sc.yml diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index c71212b85..70868e397 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -74,7 +74,9 @@ "column_header.show_settings": "عرض الإعدادات", "column_header.unpin": "فك التدبيس", "column_subheading.settings": "الإعدادات", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "الوسائط فقط", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "لن يَظهر هذا التبويق إلا للمستخدمين المذكورين.", "compose_form.direct_message_warning_learn_more": "اقرأ المزيد", "compose_form.hashtag_warning": "هذا التبويق لن يُدرَج تحت أي وسم كان بما أنه غير مُدرَج. لا يُسمح بالبحث إلّا عن التبويقات العمومية عن طريق الوسوم.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "الإبلاغ عن خلل", "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "المُطوِّرون", "getting_started.directory": "دليل الصفحات التعريفية", "getting_started.documentation": "الدليل", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 38653e0fe..6c53e33db 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Amosar axustes", "column_header.unpin": "Desfixar", "column_subheading.settings": "Axustes", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Namái multimedia", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Esti barritu namái va unviase a los usuarios mentaos.", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Autorizar", "follow_request.reject": "Refugar", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Desendolcadores", "getting_started.directory": "Direutoriu de perfiles", "getting_started.documentation": "Documentación", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index c1a7bb533..8050326b3 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 9b6449064..20a64b7e3 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -74,7 +74,9 @@ "column_header.show_settings": "সেটিং দেখান", "column_header.unpin": "পিন খুলুন", "column_subheading.settings": "সেটিং", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "শুধুমাত্র ছবি বা ভিডিও", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "শুধুমাত্র যাদেরকে উল্লেখ করা হয়েছে তাদেরকেই এই টুটটি পাঠানো হবে ।", "compose_form.direct_message_warning_learn_more": "আরো জানুন", "compose_form.hashtag_warning": "কোনো হ্যাশট্যাগের ভেতরে এই টুটটি থাকবেনা কারণ এটি তালিকাবহির্ভূত। শুধুমাত্র প্রকাশ্য ঠোটগুলো হ্যাশট্যাগের ভেতরে খুঁজে পাওয়া যাবে।", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "সমস্যার প্রতিবেদন করুন", "follow_request.authorize": "অনুমতি দিন", "follow_request.reject": "প্রত্যাখ্যান করুন", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "তৈরিকারকদের জন্য", "getting_started.directory": "নিজস্ব-পাতাগুলির তালিকা", "getting_started.documentation": "নথিপত্র", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 19a091fa0..d96d78993 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Diskouez an arventennoù", "column_header.unpin": "Dispilhennañ", "column_subheading.settings": "Arventennoù", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Nemet Mediaoù", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "An toud-mañ a vo kaset nemet d'an implijer·ezed·ien meneget.", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", "compose_form.hashtag_warning": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Danevellañ ur fazi", "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Diorroerien", "getting_started.directory": "Roll ar profiloù", "getting_started.documentation": "Teuliadur", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f55420793..00965f153 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Mostra la configuració", "column_header.unpin": "No fixis", "column_subheading.settings": "Configuració", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Només multimèdia", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Aquest tut només serà enviat als usuaris esmentats.", "compose_form.direct_message_warning_learn_more": "Aprèn més", "compose_form.hashtag_warning": "Aquesta tut no es mostrarà en cap etiqueta ja que no està llistat. Només els tuts públics poden ser cercats per etiqueta.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Informa d'un problema", "follow_request.authorize": "Autoritzar", "follow_request.reject": "Rebutjar", + "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes de forma manual.", "getting_started.developers": "Desenvolupadors", "getting_started.directory": "Directori de perfils", "getting_started.documentation": "Documentació", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 7efc9c75e..2e8b8e1a4 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -3,7 +3,7 @@ "account.badges.bot": "Bot", "account.badges.group": "Gruppu", "account.block": "Bluccà @{name}", - "account.block_domain": "Piattà tuttu da {domain}", + "account.block_domain": "Piattà u duminiu {domain}", "account.blocked": "Bluccatu", "account.cancel_follow_request": "Annullà a dumanda d'abbunamentu", "account.direct": "Missaghju direttu @{name}", @@ -74,7 +74,9 @@ "column_header.show_settings": "Mustrà i parametri", "column_header.unpin": "Spuntarulà", "column_subheading.settings": "Parametri", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Solu media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Solu l'utilizatori mintuvati puderenu vede stu statutu.", "compose_form.direct_message_warning_learn_more": "Amparà di più", "compose_form.hashtag_warning": "Stu statutu ùn hè \"Micca listatu\" è ùn sarà micca listatu indè e circate da hashtag. Per esse vistu in quesse, u statutu deve esse \"Pubblicu\".", @@ -100,15 +102,15 @@ "confirmations.block.confirm": "Bluccà", "confirmations.block.message": "Site sicuru·a che vulete bluccà @{name}?", "confirmations.delete.confirm": "Toglie", - "confirmations.delete.message": "Site sicuru·a che vulete supprime stu statutu?", + "confirmations.delete.message": "Site sicuru·a che vulete sguassà stu statutu?", "confirmations.delete_list.confirm": "Toglie", - "confirmations.delete_list.message": "Site sicuru·a che vulete supprime sta lista?", + "confirmations.delete_list.message": "Site sicuru·a che vulete toglie sta lista?", "confirmations.domain_block.confirm": "Piattà tuttu u duminiu", - "confirmations.domain_block.message": "Site sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.", + "confirmations.domain_block.message": "Site veramente sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.", "confirmations.logout.confirm": "Scunnettassi", "confirmations.logout.message": "Site sicuru·a che vulete scunnettà vi?", "confirmations.mute.confirm": "Piattà", - "confirmations.mute.explanation": "Quessu hà da piattà i statuti da sta persona è i posti chì a mintuvanu, mà ellu·a puderà sempre vede i vostri statuti è siguità vi.", + "confirmations.mute.explanation": "Quessu hà da piattà i statuti da sta persona è i posti chì a mintuvanu, ma ellu·a puderà sempre vede i vostri statuti è siguità vi.", "confirmations.mute.message": "Site sicuru·a che vulete piattà @{name}?", "confirmations.redraft.confirm": "Sguassà è riscrive", "confirmations.redraft.message": "Site sicuru·a chè vulete sguassà stu statutu è riscrivelu? I favuriti è spartere saranu persi, è e risposte diventeranu orfane.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Palisà prublemu", "follow_request.authorize": "Auturizà", "follow_request.reject": "Righjittà", + "follow_requests.unlocked_explanation": "U vostru contu ùn hè micca privatu, ma a squadra d'amministrazione di {domain} pensa chì e dumande d'abbunamentu di questi conti anu bisognu d'esse verificate manualmente.", "getting_started.developers": "Sviluppatori", "getting_started.directory": "Annuariu di i prufili", "getting_started.documentation": "Ducumentazione", @@ -205,7 +208,7 @@ "introduction.interactions.reply.text": "Pudete risponde à d'altre persone o a i vostri propii statuti, cio chì i ligarà indè una cunversazione.", "introduction.welcome.action": "Andemu!", "introduction.welcome.headline": "Primi passi", - "introduction.welcome.text": "Benvenutu·a indè u fediverse! In qualchi minuta, puderete diffonde missaghji è parlà à i vostri amichi nant'à una varietà maiò di servori. Mà quess'istanza, {domain}, hè speciale—ghjè induve hè uspitatu u vostru prufile, allora ricurdatevi di u so nome.", + "introduction.welcome.text": "Benvenutu·a indè u fediverse! In qualchi minuta, puderete diffonde missaghji è parlà à i vostri amichi nant'à una varietà maiò di servori. Ma quess'istanza, {domain}, hè speciale—ghjè induve hè uspitatu u vostru prufile, allora ricurdatevi di u so nome.", "keyboard_shortcuts.back": "rivultà", "keyboard_shortcuts.blocked": "per apre una lista d'utilizatori bluccati", "keyboard_shortcuts.boost": "sparte", @@ -245,7 +248,7 @@ "lightbox.view_context": "Vede u cuntestu", "lists.account.add": "Aghjunghje à a lista", "lists.account.remove": "Toglie di a lista", - "lists.delete": "Supprime a lista", + "lists.delete": "Toglie a lista", "lists.edit": "Mudificà a lista", "lists.edit.submit": "Cambià u titulu", "lists.new.create": "Aghjunghje", @@ -413,7 +416,7 @@ "trends.trending_now": "Tindenze d'avà", "ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Mastodon.", "upload_area.title": "Drag & drop per caricà un fugliale", - "upload_button.label": "Aghjunghje un media (JPEG, PNG, GIF, WebM, MP4, MOV)", + "upload_button.label": "Aghjunghje un media ({formats})", "upload_error.limit": "Limita di caricamentu di fugliali trapassata.", "upload_error.poll": "Ùn si pò micca caricà fugliali cù i scandagli.", "upload_form.audio_description": "Discrizzione per i ciochi", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 9df1e0c65..3c51b7f9c 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Zobrazit nastavení", "column_header.unpin": "Odepnout", "column_subheading.settings": "Nastavení", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Pouze média", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Tento toot bude odeslán pouze zmíněným uživatelům.", "compose_form.direct_message_warning_learn_more": "Zjistit více", "compose_form.hashtag_warning": "Tento toot nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné tooty mohou být vyhledány podle hashtagu.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Nahlásit problém", "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Vývojáři", "getting_started.directory": "Adresář profilů", "getting_started.documentation": "Dokumentace", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 0d535cbc2..d8b8b56f4 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Dangos gosodiadau", "column_header.unpin": "Dadbinio", "column_subheading.settings": "Gosodiadau", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Cyfryngau yn unig", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Mi fydd y tŵt hwn ond yn cael ei anfon at y defnyddwyr sy'n cael eu crybwyll.", "compose_form.direct_message_warning_learn_more": "Dysgu mwy", "compose_form.hashtag_warning": "Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem", "follow_request.authorize": "Caniatau", "follow_request.reject": "Gwrthod", + "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", "getting_started.developers": "Datblygwyr", "getting_started.directory": "Cyfeiriadur proffil", "getting_started.documentation": "Dogfennaeth", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 42125a5fc..d93a73dee 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,7 +1,7 @@ { "account.add_or_remove_from_list": "Tilføj eller fjern fra lister", "account.badges.bot": "Robot", - "account.badges.group": "Group", + "account.badges.group": "Gruppe", "account.block": "Bloker @{name}", "account.block_domain": "Skjul alt fra {domain}", "account.blocked": "Blokeret", @@ -74,7 +74,9 @@ "column_header.show_settings": "Vis indstillinger", "column_header.unpin": "Fastgør ikke længere", "column_subheading.settings": "Indstillinger", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Kun medie", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Dette trut vil kun blive sendt til de nævnte brugere.", "compose_form.direct_message_warning_learn_more": "Lær mere", "compose_form.hashtag_warning": "Dette trut vil ikke blive vist under noget hashtag da det ikke er listet. Kun offentlige trut kan blive vist under søgninger med hashtags.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Rapportér problem", "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Udviklere", "getting_started.directory": "Profilliste", "getting_started.documentation": "Dokumentation", @@ -335,7 +338,7 @@ "relative_time.just_now": "nu", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "i dag", "reply_indicator.cancel": "Annuller", "report.forward": "Videresend til {target}", "report.forward_hint": "Kontoen er fra en anden server. Vil du også sende en anonym kopi af anmeldelsen dertil?", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index cf28408c4..35bc3025b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Einstellungen anzeigen", "column_header.unpin": "Lösen", "column_subheading.settings": "Einstellungen", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Nur Medien", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Dieser Beitrag wird nur für die erwähnten Nutzer sichtbar sein.", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Problem melden", "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", + "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Mitarbeiter von {domain} gedacht, dass es besser wäre den Follow manuell zu bestätigen.", "getting_started.developers": "Entwickler", "getting_started.directory": "Profilverzeichnis", "getting_started.documentation": "Dokumentation", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 284232c20..edbd7d6bc 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -471,6 +471,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Show thread", + "id": "status.show_thread" + }, { "defaultMessage": "Read more", "id": "status.read_more" @@ -499,10 +503,6 @@ { "defaultMessage": "{name} boosted", "id": "status.reblogged_by" - }, - { - "defaultMessage": "Show thread", - "id": "status.show_thread" } ], "path": "app/javascript/mastodon/components/status.json" @@ -1706,6 +1706,10 @@ { "defaultMessage": "Include additional tags in this column", "id": "hashtag.column_settings.tag_toggle" + }, + { + "defaultMessage": "Local only", + "id": "community.column_settings.local_only" } ], "path": "app/javascript/mastodon/features/hashtag_timeline/components/column_settings.json" @@ -2267,6 +2271,19 @@ ], "path": "app/javascript/mastodon/features/pinned_statuses/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Media only", + "id": "community.column_settings.media_only" + }, + { + "defaultMessage": "Remote only", + "id": "community.column_settings.remote_only" + } + ], + "path": "app/javascript/mastodon/features/public_timeline/components/column_settings.json" + }, { "descriptors": [ { @@ -2952,4 +2969,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] +] \ No newline at end of file diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index d92a0e35a..202c91f90 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Εμφάνιση ρυθμίσεων", "column_header.unpin": "Ξεκαρφίτσωμα", "column_subheading.settings": "Ρυθμίσεις", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Μόνο πολυμέσα", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Αυτό το τουτ θα σταλεί μόνο στους αναφερόμενους χρήστες.", "compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα", "compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Αναφορά προβλήματος", "follow_request.authorize": "Ενέκρινε", "follow_request.reject": "Απέρριψε", + "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", "getting_started.developers": "Ανάπτυξη", "getting_started.directory": "Κατάλογος λογαριασμών", "getting_started.documentation": "Τεκμηρίωση", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 616780785..3b51b1b5f 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media Only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be sent to 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.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 5138b85a0..e476538be 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Montri agordojn", "column_header.unpin": "Depingli", "column_subheading.settings": "Agordado", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Nur aŭdovidaĵoj", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Tiu mesaĝo estos sendita nur al menciitaj uzantoj.", "compose_form.direct_message_warning_learn_more": "Lerni pli", "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", @@ -158,12 +160,13 @@ "empty_column.mutes": "Vi ne ankoraŭ silentigis iun uzanton.", "empty_column.notifications": "Vi ankoraŭ ne havas sciigojn. Interagu kun aliaj por komenci konversacion.", "empty_column.public": "Estas nenio ĉi tie! Publike skribu ion, aŭ mane sekvu uzantojn de aliaj serviloj por plenigi la publikan tempolinion", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.explanation": "Pro eraro en nia kodo, aŭ problemo de kongruo en via retumilo, ĉi tiu paĝo ne povis esti montrata ĝuste.", + "error.unexpected_crash.next_steps": "Provu refreŝigi la paĝon. Se tio ne helpas, vi ankoraŭ povus uzi Mastodon per malsama retumilo aŭ operaciuma aplikajo.", "errors.unexpected_crash.copy_stacktrace": "Kopii stakspuron en tondujo", "errors.unexpected_crash.report_issue": "Raporti problemon", "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", + "follow_requests.unlocked_explanation": "137/5000\nKvankam via konto ne estas ŝlosita, la dungitaro de {domain} opiniis, ke vi eble volus revizii petojn de sekvadon el ĉi tiuj kontoj permane.", "getting_started.developers": "Programistoj", "getting_started.directory": "Profilujo", "getting_started.documentation": "Dokumentado", @@ -206,39 +209,39 @@ "introduction.welcome.action": "Ek!", "introduction.welcome.headline": "Unuaj paŝoj", "introduction.welcome.text": "Bonvenon en Fediverse! Tre baldaŭ, vi povos disdoni mesaĝojn kaj paroli al viaj amikoj tra granda servila diverseco. Sed ĉi tiu servilo, {domain}, estas speciala: ĝi enhavas vian profilon, do memoru ĝian nomon.", - "keyboard_shortcuts.back": "por reveni", - "keyboard_shortcuts.blocked": "por malfermi la liston de blokitaj uzantoj", - "keyboard_shortcuts.boost": "por diskonigi", - "keyboard_shortcuts.column": "por fokusigi mesaĝon en unu el la kolumnoj", - "keyboard_shortcuts.compose": "por fokusigi la tekstujon", + "keyboard_shortcuts.back": "reveni", + "keyboard_shortcuts.blocked": "malfermi la liston de blokitaj uzantoj", + "keyboard_shortcuts.boost": "diskonigi", + "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", + "keyboard_shortcuts.compose": "enfokusigi la tekstujon", "keyboard_shortcuts.description": "Priskribo", - "keyboard_shortcuts.direct": "por malfermi la kolumnon de rektaj mesaĝoj", - "keyboard_shortcuts.down": "por iri suben en la listo", - "keyboard_shortcuts.enter": "por malfermi mesaĝon", - "keyboard_shortcuts.favourite": "por stelumi", - "keyboard_shortcuts.favourites": "por malfermi la liston de stelumoj", - "keyboard_shortcuts.federated": "por malfermi la frataran tempolinion", + "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj", + "keyboard_shortcuts.down": "iri suben en la listo", + "keyboard_shortcuts.enter": "malfermi mesaĝon", + "keyboard_shortcuts.favourite": "stelumi", + "keyboard_shortcuts.favourites": "malfermi la liston de stelumoj", + "keyboard_shortcuts.federated": "malfermi la frataran tempolinion", "keyboard_shortcuts.heading": "Klavaraj mallongigoj", - "keyboard_shortcuts.home": "por malfermi la hejman tempolinion", + "keyboard_shortcuts.home": "malfermi la hejman tempolinion", "keyboard_shortcuts.hotkey": "Rapidklavo", - "keyboard_shortcuts.legend": "por montri ĉi tiun noton", - "keyboard_shortcuts.local": "por malfermi la lokan tempolinion", + "keyboard_shortcuts.legend": "montri ĉi tiun noton", + "keyboard_shortcuts.local": "malfermi la lokan tempolinion", "keyboard_shortcuts.mention": "por mencii la aŭtoron", - "keyboard_shortcuts.muted": "por malfermi la liston de silentigitaj uzantoj", - "keyboard_shortcuts.my_profile": "por malfermi vian profilon", - "keyboard_shortcuts.notifications": "por malfermi la kolumnon de sciigoj", - "keyboard_shortcuts.open_media": "por malfermi aŭdovidaĵon", - "keyboard_shortcuts.pinned": "por malfermi la liston de alpinglitaj mesaĝoj", - "keyboard_shortcuts.profile": "por malfermi la profilon de la aŭtoro", - "keyboard_shortcuts.reply": "por respondi", - "keyboard_shortcuts.requests": "por malfermi la liston de petoj de sekvado", - "keyboard_shortcuts.search": "por fokusigi la serĉilon", - "keyboard_shortcuts.start": "por malfermi la kolumnon «por komenci»", - "keyboard_shortcuts.toggle_hidden": "por montri/kaŝi tekston malantaŭ enhava averto", - "keyboard_shortcuts.toggle_sensitivity": "por montri/kaŝi aŭdovidaĵojn", - "keyboard_shortcuts.toot": "por komenci tute novan mesaĝon", - "keyboard_shortcuts.unfocus": "por malfokusigi la tekstujon aŭ la serĉilon", - "keyboard_shortcuts.up": "por iri supren en la listo", + "keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj", + "keyboard_shortcuts.my_profile": "malfermi vian profilon", + "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj", + "keyboard_shortcuts.open_media": "malfermi aŭdovidaĵon", + "keyboard_shortcuts.pinned": "malfermi la liston de alpinglitaj mesaĝoj", + "keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro", + "keyboard_shortcuts.reply": "respondi", + "keyboard_shortcuts.requests": "malfermi la liston de petoj de sekvado", + "keyboard_shortcuts.search": "enfokusigi la serĉilon", + "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", + "keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto", + "keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn", + "keyboard_shortcuts.toot": "komenci tute novan mesaĝon", + "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon", + "keyboard_shortcuts.up": "iri supren en la listo", "lightbox.close": "Fermi", "lightbox.next": "Sekva", "lightbox.previous": "Antaŭa", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 4f7a9e59f..15ef9afa9 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Mostrar configuración", "column_header.unpin": "Dejar de fijar", "column_subheading.settings": "Configuración", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Sólo medios", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Este toot sólo será enviado a los usuarios mencionados.", "compose_form.direct_message_warning_learn_more": "Aprendé más", "compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Informar problema", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", + "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no está bloqueada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", "getting_started.developers": "Desarrolladores", "getting_started.directory": "Directorio de perfiles", "getting_started.documentation": "Documentación", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 87873b864..e8767cd35 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Mostrar ajustes", "column_header.unpin": "Dejar de fijar", "column_subheading.settings": "Ajustes", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Solo media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Este toot solo será enviado a los usuarios mencionados.", "compose_form.direct_message_warning_learn_more": "Aprender mas", "compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Informar de un problema/error", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", + "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", "getting_started.developers": "Desarrolladores", "getting_started.directory": "Directorio de perfil", "getting_started.documentation": "Documentación", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 7498962f2..be3ee148b 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Näita sätteid", "column_header.unpin": "Eemalda kinnitus", "column_subheading.settings": "Sätted", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Ainult meedia", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "See tuut saadetakse ainult mainitud kasutajatele.", "compose_form.direct_message_warning_learn_more": "Vaata veel", "compose_form.hashtag_warning": "Seda tuuti ei kuvata ühegi sildi all, sest see on kirjendamata. Ainult avalikud tuutid on sildi järgi otsitavad.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Teavita veast", "follow_request.authorize": "Autoriseeri", "follow_request.reject": "Hülga", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Arendajad", "getting_started.directory": "Profiili kataloog", "getting_started.documentation": "Dokumentatsioon", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 3a44dceb5..7f777eeaf 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Erakutsi ezarpenak", "column_header.unpin": "Desfinkatu", "column_subheading.settings": "Ezarpenak", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Multimedia besterik ez", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Toot hau aipatutako erabiltzaileei besterik ez zaie bidaliko.", "compose_form.direct_message_warning_learn_more": "Ikasi gehiago", "compose_form.hashtag_warning": "Toot hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan toot publikoak besterik ez dira agertzen.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Eman arazoaren berri", "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Garatzaileak", "getting_started.directory": "Profil-direktorioa", "getting_started.documentation": "Dokumentazioa", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index f2e7f300a..7eca45e42 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -74,7 +74,9 @@ "column_header.show_settings": "نمایش تنظیمات", "column_header.unpin": "رهاکردن", "column_subheading.settings": "تنظیمات", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "فقط رسانه", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "این بوق تنها به کاربرانی که از آن‌ها نام برده شده فرستاده خواهد شد.", "compose_form.direct_message_warning_learn_more": "بیشتر بدانید", "compose_form.hashtag_warning": "از آن‌جا که این بوق فهرست‌نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها بوق‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "گزارش مشکل", "follow_request.authorize": "اجازه دهید", "follow_request.reject": "رد کنید", + "follow_requests.unlocked_explanation": "با یان که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.", "getting_started.developers": "توسعه‌دهندگان", "getting_started.directory": "فهرست گزیدهٔ کاربران", "getting_started.documentation": "مستندات", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 32bc8de49..3b7b4e909 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Näytä asetukset", "column_header.unpin": "Poista kiinnitys", "column_subheading.settings": "Asetukset", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Vain media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Tämä tuuttaus näkyy vain mainituille käyttäjille.", "compose_form.direct_message_warning_learn_more": "Lisätietoja", "compose_form.hashtag_warning": "Tämä tuuttaus ei näy hashtag-hauissa, koska se on listaamaton. Hashtagien avulla voi hakea vain julkisia tuuttauksia.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Ilmoita ongelmasta", "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", + "follow_requests.unlocked_explanation": "Vaikka tilisi ei ole lukittu, {domain} ylläpitäjien mielestä haluat tarkistaa näiden tilien seurauspyynnöt manuaalisesti.", "getting_started.developers": "Kehittäjille", "getting_started.directory": "Profiilihakemisto", "getting_started.documentation": "Documentaatio", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index cf07cd3db..5e03386f6 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -34,7 +34,7 @@ "account.share": "Partager le profil de @{name}", "account.show_reblogs": "Afficher les partages de @{name}", "account.unblock": "Débloquer @{name}", - "account.unblock_domain": "Ne plus masquer {domain}", + "account.unblock_domain": "Débloquer le domaine {domain}", "account.unendorse": "Ne plus recommander sur le profil", "account.unfollow": "Ne plus suivre", "account.unmute": "Ne plus masquer @{name}", @@ -57,7 +57,7 @@ "column.community": "Fil public local", "column.direct": "Messages directs", "column.directory": "Parcourir les profils", - "column.domain_blocks": "Domaines cachés", + "column.domain_blocks": "Domaines bloqués", "column.favourites": "Favoris", "column.follow_requests": "Demandes d'abonnement", "column.home": "Accueil", @@ -74,7 +74,9 @@ "column_header.show_settings": "Afficher les paramètres", "column_header.unpin": "Désépingler", "column_subheading.settings": "Paramètres", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Média uniquement", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé aux personnes mentionnées. Cependant, l’administration de votre instance et des instances réceptrices pourront inspecter ce message.", "compose_form.direct_message_warning_learn_more": "En savoir plus", "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur « non listé ». Seuls les pouets avec une visibilité « publique » peuvent être recherchés par hashtag.", @@ -103,7 +105,7 @@ "confirmations.delete.message": "Voulez-vous vraiment supprimer ce pouet ?", "confirmations.delete_list.confirm": "Supprimer", "confirmations.delete_list.message": "Voulez-vous vraiment supprimer définitivement cette liste ?", - "confirmations.domain_block.confirm": "Masquer le domaine entier", + "confirmations.domain_block.confirm": "Bloquer tout le domaine", "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.", "confirmations.logout.confirm": "Se déconnecter", "confirmations.logout.message": "Voulez-vous vraiment vous déconnecter ?", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Signaler le problème", "follow_request.authorize": "Accepter", "follow_request.reject": "Rejeter", + "follow_requests.unlocked_explanation": "Même si votre compte n’est pas verrouillé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.", "getting_started.developers": "Développeur·euse·s", "getting_started.directory": "Annuaire des profils", "getting_started.documentation": "Documentation", @@ -219,7 +222,7 @@ "keyboard_shortcuts.favourites": "ouvrir la liste des favoris", "keyboard_shortcuts.federated": "ouvrir le fil public global", "keyboard_shortcuts.heading": "Raccourcis clavier", - "keyboard_shortcuts.home": "le fil d’accueil", + "keyboard_shortcuts.home": "ouvrir le fil d’accueil", "keyboard_shortcuts.hotkey": "Raccourci clavier", "keyboard_shortcuts.legend": "afficher cet aide-mémoire", "keyboard_shortcuts.local": "ouvrir le fil public local", @@ -265,7 +268,7 @@ "navigation_bar.compose": "Rédiger un nouveau pouet", "navigation_bar.direct": "Messages directs", "navigation_bar.discover": "Découvrir", - "navigation_bar.domain_blocks": "Domaines cachés", + "navigation_bar.domain_blocks": "Domaines bloqués", "navigation_bar.edit_profile": "Modifier le profil", "navigation_bar.favourites": "Favoris", "navigation_bar.filters": "Mots masqués", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index b69ec2b95..15ce45d9c 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index f26b39c21..73a3b744e 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Amosar axustes", "column_header.unpin": "Desapegar", "column_subheading.settings": "Axustes", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Só multimedia", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Este toot só será enviado ás usuarias mencionadas.", "compose_form.direct_message_warning_learn_more": "Coñecer máis", "compose_form.hashtag_warning": "Este toot non aparecerá baixo ningún cancelo (hashtag) porque non está listado. Só se poden procurar toots públicos por cancelos.", @@ -150,7 +152,7 @@ "empty_column.favourited_statuses": "Aínda non tes toots favoritos. Cando che goste algún, aparecerá aquí.", "empty_column.favourites": "A ninguén lle gostou este toot polo momento. Cando a alguén lle goste, aparecerá aquí.", "empty_column.follow_requests": "Non tes peticións de seguimento. Cando recibas unha, amosarase aquí.", - "empty_column.hashtag": "Aínda non hai nada con esta etiqueta.", + "empty_column.hashtag": "Aínda non hai nada con este cancelo.", "empty_column.home": "A túa cronoloxía inicial está baleira! Visita {public} ou emprega a procura para atopar outras usuarias.", "empty_column.home.public_timeline": "a cronoloxía pública", "empty_column.list": "Aínda non hai nada en esta lista. Cando as usuarias incluídas na lista publiquen mensaxes, aparecerán aquí.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Informar sobre un problema", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", + "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", "getting_started.developers": "Desenvolvedoras", "getting_started.directory": "Directorio local", "getting_started.documentation": "Documentación", @@ -176,11 +179,11 @@ "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", "hashtag.column_settings.select.no_options_message": "Non se atoparon suxestións", - "hashtag.column_settings.select.placeholder": "Inserir etiquetas…", + "hashtag.column_settings.select.placeholder": "Inserir cancelos…", "hashtag.column_settings.tag_mode.all": "Todos estes", "hashtag.column_settings.tag_mode.any": "Calquera destes", "hashtag.column_settings.tag_mode.none": "Ningún destes", - "hashtag.column_settings.tag_toggle": "Incluír etiquetas adicionais para esta columna", + "hashtag.column_settings.tag_toggle": "Incluír cancelos adicionais para esta columna", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Amosar compartidos", "home.column_settings.show_replies": "Amosar respostas", @@ -345,10 +348,10 @@ "report.target": "Denunciar a {target}", "search.placeholder": "Procurar", "search_popout.search_format": "Formato de procura avanzada", - "search_popout.tips.full_text": "Texto simple devolve estados que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e etiquetas.", + "search_popout.tips.full_text": "Texto simple devolve estados que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", "search_popout.tips.hashtag": "cancelo", "search_popout.tips.status": "estado", - "search_popout.tips.text": "Texto simple devolve coincidencias con nomes públicos, nomes de usuaria e etiquetas", + "search_popout.tips.text": "Texto simple devolve coincidencias con nomes públicos, nomes de usuaria e cancelos", "search_popout.tips.user": "usuaria", "search_results.accounts": "Persoas", "search_results.hashtags": "Cancelos", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 7e394c112..02fddcc72 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -74,7 +74,9 @@ "column_header.show_settings": "הצגת העדפות", "column_header.unpin": "שחרור קיבוע", "column_subheading.settings": "אפשרויות", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "קבלה", "follow_request.reject": "דחיה", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index ee9d701b0..1fb1062ee 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -74,7 +74,9 @@ "column_header.show_settings": "सेटिंग्स दिखाएँ", "column_header.unpin": "अनपिन", "column_subheading.settings": "सेटिंग्स", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "सिर्फ़ मीडिया", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "और जानें", "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "समस्या सूचित करें", "follow_request.authorize": "अधिकार दें", "follow_request.reject": "अस्वीकार करें", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "डेवॅलपर्स", "getting_started.directory": "प्रोफ़ाइल निर्देशिका", "getting_started.documentation": "प्रलेखन", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index ab6883eff..10daf96f3 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Postavke", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Autoriziraj", "follow_request.reject": "Odbij", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index d2d851436..241f074a6 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Beállítások mutatása", "column_header.unpin": "Kitűzés eltávolítása", "column_subheading.settings": "Beállítások", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Csak média", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Ezt a tülköt csak a benne megemlített felhasználók láthatják majd.", "compose_form.direct_message_warning_learn_more": "Tudj meg többet", "compose_form.hashtag_warning": "Ez a tülköd nem fog megjelenni semmilyen hashtag alatt mivel listázatlan. Csak nyilvános tülkök kereshetőek hashtaggel.", @@ -126,7 +128,7 @@ "directory.recently_active": "Nemrég aktív", "embed.instructions": "Ágyazd be ezt a tülköt a weboldaladba az alábbi kód kimásolásával.", "embed.preview": "Így fog kinézni:", - "emoji_button.activity": "Aktivitás", + "emoji_button.activity": "Tevékenység", "emoji_button.custom": "Egyéni", "emoji_button.flags": "Zászlók", "emoji_button.food": "Étel és Ital", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Probléma jelentése", "follow_request.authorize": "Engedélyezés", "follow_request.reject": "Elutasítás", + "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", "getting_started.developers": "Fejlesztőknek", "getting_started.directory": "Profilok", "getting_started.documentation": "Dokumentáció", @@ -419,7 +422,7 @@ "upload_form.audio_description": "Írja le a hallássérültek számára", "upload_form.description": "Leírás látáskorlátozottak számára", "upload_form.edit": "Szerkesztés", - "upload_form.undo": "Mégsem", + "upload_form.undo": "Törlés", "upload_form.video_description": "Írja le a hallás- vagy látássérültek számára", "upload_modal.analyzing_picture": "Kép elemzése…", "upload_modal.apply": "Alkalmaz", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index b3f1df94c..1cdccd601 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -3,18 +3,18 @@ "account.badges.bot": "Բոտ", "account.badges.group": "Խումբ", "account.block": "Արգելափակել @{name}֊ին", - "account.block_domain": "Թաքցնել ամենը հետեւյալ տիրույթից՝ {domain}", + "account.block_domain": "Թաքցնել ամէնը հետեւեալ տիրոյթից՝ {domain}", "account.blocked": "Արգելափակուած է", "account.cancel_follow_request": "չեղարկել հետեւելու հայցը", - "account.direct": "Direct Message @{name}", - "account.domain_blocked": "Թաքցրած տիրոյթ", + "account.direct": "Նամակ գրել @{name} -ին", + "account.domain_blocked": "Տիրոյթը արգելափակուած է", "account.edit_profile": "Խմբագրել անձնական էջը", "account.endorse": "Ցուցադրել անձնական էջում", "account.follow": "Հետեւել", "account.followers": "Հետեւողներ", "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։", "account.follows": "Հետեւում է", - "account.follows.empty": "Այս օգտատէրն դեռ ոչ մէկի չի հետեւում։", + "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։", "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", "account.last_status": "Վերջին անգամ ակտիւ էր", @@ -22,31 +22,31 @@ "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։", "account.media": "Մեդիա", "account.mention": "Նշել @{name}֊ին", - "account.moved_to": "{name}֊ը տեղափոխվել է՝", + "account.moved_to": "{name}֊ը տեղափոխուել է՝", "account.mute": "Լռեցնել @{name}֊ին", "account.mute_notifications": "Անջատել ծանուցումները @{name}֊ից", "account.muted": "Լռեցուած", "account.never_active": "Երբեք", "account.posts": "Թութ", - "account.posts_with_replies": "Toots with replies", - "account.report": "Բողոքել @{name}֊ից", + "account.posts_with_replies": "Թթեր եւ պատասխաններ", + "account.report": "Բողոքել @{name}֊ի մասին", "account.requested": "Հաստատման կարիք ունի։ Սեղմիր՝ հետեւելու հայցը չեղարկելու համար։", - "account.share": "Կիսվել @{name}֊ի էջով", + "account.share": "Կիսուել @{name}֊ի էջով", "account.show_reblogs": "Ցուցադրել @{name}֊ի տարածածները", "account.unblock": "Ապաարգելափակել @{name}֊ին", - "account.unblock_domain": "Ցուցադրել {domain} թաքցված տիրույթի գրառումները", + "account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները", "account.unendorse": "Չցուցադրել անձնական էջում", - "account.unfollow": "Չհետեւել", + "account.unfollow": "Ապահետեւել", "account.unmute": "Ապալռեցնել @{name}֊ին", "account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից", "alert.rate_limited.message": "Փորձէք որոշ ժամանակ անց՝ {retry_time, time, medium}։", - "alert.rate_limited.title": "Գործողությունների հաճախությունը գերազանցում է թույլատրելին", + "alert.rate_limited.title": "Գործողութիւնների յաճախութիւնը գերազանցում է թոյլատրելին", "alert.unexpected.message": "Անսպասելի սխալ տեղի ունեցաւ։", "alert.unexpected.title": "Վա՜յ", - "announcement.announcement": "Հայտարարություններ", + "announcement.announcement": "Յայտարարութիւններ", "autosuggest_hashtag.per_week": "շաբաթը՝ {count}", - "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա հաջորդ անգամ բաց թողնելու համար", - "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանվեց։", + "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա յաջորդ անգամ բաց թողնելու համար", + "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", "bundle_column_error.retry": "Կրկին փորձել", "bundle_column_error.title": "Ցանցային սխալ", "bundle_modal_error.close": "Փակել", @@ -74,7 +74,9 @@ "column_header.show_settings": "Ցուցադրել կարգավորումները", "column_header.unpin": "Հանել", "column_subheading.settings": "Կարգավորումներ", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Իմանալ ավելին", "compose_form.hashtag_warning": "Այս թութը չի հաշվառվի որեւէ պիտակի տակ, քանզի այն ծածուկ է։ Միայն հրապարակային թթերը հնարավոր է որոնել պիտակներով։", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին", "follow_request.authorize": "Վավերացնել", "follow_request.reject": "Մերժել", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Մշակողներ", "getting_started.directory": "Օգտատերերի շտեմարան", "getting_started.documentation": "Փաստաթղթեր", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 98d0af510..09f5fdee7 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Tampilkan pengaturan", "column_header.unpin": "Lepaskan", "column_subheading.settings": "Pengaturan", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Hanya media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah di set sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Laporkan masalah", "follow_request.authorize": "Izinkan", "follow_request.reject": "Tolak", + "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.", "getting_started.developers": "Pengembang", "getting_started.directory": "Direktori profil", "getting_started.documentation": "Dokumentasi", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index f53c77172..696ef694f 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Yurizar", "follow_request.reject": "Refuzar", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 4c6599b39..5c5c9edad 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Birta stillingar", "column_header.unpin": "Losa", "column_subheading.settings": "Stillingar", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Einungis myndskrár", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Þetta tíst verður aðeins sent á notendur sem minnst er á.", "compose_form.direct_message_warning_learn_more": "Kanna nánar", "compose_form.hashtag_warning": "Þetta tíst verður ekki talið með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum tístum eftir myllumerkjum.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Tilkynna vandamál", "follow_request.authorize": "Heimila", "follow_request.reject": "Hafna", + "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", "getting_started.developers": "Forritarar", "getting_started.directory": "Notandasniðamappa", "getting_started.documentation": "Hjálparskjöl", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index c1b47f860..5ae34551d 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Mostra impostazioni", "column_header.unpin": "Non fissare in cima", "column_subheading.settings": "Impostazioni", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Solo media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Questo toot sarà mandato solo a tutti gli utenti menzionati.", "compose_form.direct_message_warning_learn_more": "Per saperne di più", "compose_form.hashtag_warning": "Questo toot non è listato, quindi non sarà trovato nelle ricerche per hashtag. Solo i toot pubblici possono essere cercati per hashtag.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Segnala il problema", "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", + "follow_requests.unlocked_explanation": "Anche se il tuo account non è bloccato, lo staff di {domain} ha pensato che potresti voler esaminare manualmente le richieste di seguirti di questi account.", "getting_started.developers": "Sviluppatori", "getting_started.directory": "Directory dei profili", "getting_started.documentation": "Documentazione", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 9ce5f52ba..026d32834 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -74,7 +74,9 @@ "column_header.show_settings": "設定を表示", "column_header.unpin": "ピン留めを外す", "column_subheading.settings": "設定", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "メディアのみ表示", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "このトゥートはメンションされた人にのみ送信されます。", "compose_form.direct_message_warning_learn_more": "もっと詳しく", "compose_form.hashtag_warning": "このトゥートは公開設定ではないのでハッシュタグの一覧に表示されません。公開トゥートだけがハッシュタグで検索できます。", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "問題を報告", "follow_request.authorize": "許可", "follow_request.reject": "拒否", + "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain} のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", "getting_started.developers": "開発", "getting_started.directory": "ディレクトリ", "getting_started.documentation": "ドキュメント", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 4e5c8595e..2c487a9b6 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -74,7 +74,9 @@ "column_header.show_settings": "პარამეტრების ჩვენება", "column_header.unpin": "პინის მოხსნა", "column_subheading.settings": "პარამეტრები", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "მხოლოდ მედია", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "ეს ტუტი გაეგზავნება მხოლოდ ნახსენებ მომხმარებლებს.", "compose_form.direct_message_warning_learn_more": "გაიგე მეტი", "compose_form.hashtag_warning": "ეს ტუტი არ მოექცევა ჰეშტეგების ქვეს, რამეთუ ის არაა მითითებული. მხოლოდ ღია ტუტები მოიძებნება ჰეშტეგით.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "ავტორიზაცია", "follow_request.reject": "უარყოფა", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "დეველოპერები", "getting_started.directory": "Profile directory", "getting_started.documentation": "დოკუმენტაცია", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 8ce4c2774..abf6cbbca 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Sken iɣewwaṛen", "column_header.unpin": "Kkes asenteḍ", "column_subheading.settings": "Iγewwaṛen", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Allal n teywalt kan", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Tajewwaqt-a ad d-tettwasken kan i yimseqdacen i d-yettwabedren.", "compose_form.direct_message_warning_learn_more": "Issin ugar", "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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Mmel ugur", "follow_request.authorize": "Ssireg", "follow_request.reject": "Agi", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Ineflayen", "getting_started.directory": "Akaram n imaγnuten", "getting_started.documentation": "Amnir", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 34c702d19..f1782424c 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Баптауларды көрсет", "column_header.unpin": "Алып тастау", "column_subheading.settings": "Баптаулар", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Тек медиа", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Тек аталған қолданушыларға.", "compose_form.direct_message_warning_learn_more": "Көбірек білу", "compose_form.hashtag_warning": "Бұл пост іздеуде хэштегпен шықпайды, өйткені ол бәріне ашық емес. Тек ашық жазбаларды ғана хэштег арқылы іздеп табуға болады.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Мәселені хабарла", "follow_request.authorize": "Авторизация", "follow_request.reject": "Қабылдамау", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Жасаушылар тобы", "getting_started.directory": "Профильдер каталогы", "getting_started.documentation": "Құжаттама", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index eafb7ede7..dd538b7ea 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index cdcce62ff..54a24376c 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -74,7 +74,9 @@ "column_header.show_settings": "설정 보이기", "column_header.unpin": "고정 해제", "column_subheading.settings": "설정", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "미디어만", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "이 툿은 멘션 된 유저들에게만 보여집니다.", "compose_form.direct_message_warning_learn_more": "더 알아보기", "compose_form.hashtag_warning": "이 툿은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 툿만이 해시태그로 검색 될 수 있습니다.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "문제 신고", "follow_request.authorize": "허가", "follow_request.reject": "거부", + "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.", "getting_started.developers": "개발자", "getting_started.directory": "프로필 책자", "getting_started.documentation": "문서", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index eafb7ede7..dd538b7ea 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 82ec3b8e8..bfc9fc8dd 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Rādīt iestatījumus", "column_header.unpin": "Atspraust", "column_subheading.settings": "Iestatījumi", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Tikai mēdiji", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Šis ziņojums tiks nosūtīts tikai pieminētajiem lietotājiem.", "compose_form.direct_message_warning_learn_more": "Papildus informācija", "compose_form.hashtag_warning": "Ziņojumu nebūs iespējams atrast zem haštagiem jo tas nav publisks. Tikai publiskos ziņojumus ir iespējams meklēt pēc tiem.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Autorizēt", "follow_request.reject": "Noraidīt", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index ee8b13ace..ef6895d97 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Прикажи подесувања", "column_header.unpin": "Unpin", "column_subheading.settings": "Подесувања", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Само медиа", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Пријавете проблем", "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Програмери", "getting_started.directory": "Профил директориум", "getting_started.documentation": "Документација", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b3a06d6ed..ca92c18a7 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -74,7 +74,9 @@ "column_header.show_settings": "ക്രമീകരണങ്ങൾ കാണിക്കുക", "column_header.unpin": "ഇളക്കി മാറ്റുക", "column_subheading.settings": "ക്രമീകരണങ്ങള്‍", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "മാധ്യമങ്ങൾ മാത്രം", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "പരാമർശിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോഗ്താക്കൾക്കെ ഈ ടൂട്ട് അയക്കപ്പെടുകയുള്ളു.", "compose_form.direct_message_warning_learn_more": "കൂടുതൽ പഠിക്കുക", "compose_form.hashtag_warning": "ഈ ടൂട്ട് പട്ടികയിൽ ഇല്ലാത്തതിനാൽ ഒരു ചർച്ചാവിഷയത്തിന്റെ പട്ടികയിലും പെടുകയില്ല. പരസ്യമായ ടൂട്ടുകൾ മാത്രമേ ചർച്ചാവിഷയം അടിസ്ഥാനമാക്കി തിരയുവാൻ സാധിക്കുകയുള്ളു.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "പ്രശ്നം അറിയിക്കുക", "follow_request.authorize": "ചുമതലപ്പെടുത്തുക", "follow_request.reject": "നിരസിക്കുക", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "വികസിപ്പിക്കുന്നവർ", "getting_started.directory": "രൂപരേഖ നാമഗൃഹസൂചി", "getting_started.documentation": "രേഖാ സമാഹരണം", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index be5d9a396..1807e064d 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -74,7 +74,9 @@ "column_header.show_settings": "सेटिंग्स दाखवा", "column_header.unpin": "अनपिन करा", "column_subheading.settings": "सेटिंग्ज", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "केवळ मीडिया", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", "compose_form.direct_message_warning_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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 19f3ca257..29cc06704 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 6589c2b1d..6cdd02c02 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Instellingen tonen", "column_header.unpin": "Losmaken", "column_subheading.settings": "Instellingen", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Alleen media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende server(s) kunnen dit bericht mogelijk wel bekijken.", "compose_form.direct_message_warning_learn_more": "Meer leren", "compose_form.hashtag_warning": "Deze toot valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare toots kunnen via hashtags gevonden worden.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Technisch probleem melden", "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afkeuren", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Ontwikkelaars", "getting_started.directory": "Gebruikersgids", "getting_started.documentation": "Documentatie", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 39fe5158e..0c1fd8bbf 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Vis innstillingar", "column_header.unpin": "Løys", "column_subheading.settings": "Innstillingar", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Berre media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Dette tutet vert berre synleg for nemnde brukarar.", "compose_form.direct_message_warning_learn_more": "Lær meir", "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Rapporter problem", "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Utviklarar", "getting_started.directory": "Profilkatalog", "getting_started.documentation": "Dokumentasjon", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 38cff4c91..f7d47f7f7 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Vis innstillinger", "column_header.unpin": "Løsne", "column_subheading.settings": "Innstillinger", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Lær mer", "compose_form.hashtag_warning": "Denne tuten blir ikke listet under noen emneknagger da den er ulistet. Kun offentlige tuter kan søktes etter med emneknagg.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Rapporter en feil", "follow_request.authorize": "Autorisér", "follow_request.reject": "Avvis", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Utviklere", "getting_started.directory": "Profilmappe", "getting_started.documentation": "Dokumentasjon", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 1be047755..5dc7bf61c 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Mostrar los paramètres", "column_header.unpin": "Despenjar", "column_subheading.settings": "Paramètres", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Solament los mèdias", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Sols los mencionats poiràn veire aqueste tut.", "compose_form.direct_message_warning_learn_more": "Ne saber mai", "compose_form.hashtag_warning": "Aqueste tut serà pas ligat a cap d’etiqueta estant qu’es pas listat. Òm pòt pas cercar que los tuts publics per etiqueta.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Senhalar un problèma", "follow_request.authorize": "Acceptar", "follow_request.reject": "Regetar", + "follow_requests.unlocked_explanation": "Encara que vòstre compte siasque pas verrolhat, la còla de {domain} pensèt que volriatz benlèu repassar las demandas d’abonament d’aquestes comptes.", "getting_started.developers": "Desvelopaires", "getting_started.directory": "Annuari de perfils", "getting_started.documentation": "Documentacion", @@ -426,7 +429,7 @@ "upload_modal.description_placeholder": "Lo dròlle bilingüe manja un yaourt de ròcs exagonals e kiwis verds farà un an mai", "upload_modal.detect_text": "Detectar lo tèxt de l’imatge", "upload_modal.edit_media": "Modificar lo mèdia", - "upload_modal.hint": "Clicatz o lissatz lo cercle de l’apercebut per causir lo ponch que serà totjorn visible dins las vinhetas.", + "upload_modal.hint": "Clicatz o lisatz lo cercle de l’apercebut per causir lo ponch que serà totjorn visible dins las vinhetas.", "upload_modal.preview_label": "Apercebut ({ratio})", "upload_progress.label": "Mandadís…", "video.close": "Tampar la vidèo", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index de8365918..30756a5a5 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Pokaż ustawienia", "column_header.unpin": "Cofnij przypięcie", "column_subheading.settings": "Ustawienia", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Tylko zawartość multimedialna", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Ten wpis będzie widoczny tylko dla wszystkich wspomnianych użytkowników.", "compose_form.direct_message_warning_learn_more": "Dowiedz się więcej", "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hashtagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hashtagów.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Zgłoś problem", "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", + "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.", "getting_started.developers": "Dla programistów", "getting_started.directory": "Katalog profilów", "getting_started.documentation": "Dokumentacja", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index a019f39ee..4eb61279a 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -1,9 +1,9 @@ { - "account.add_or_remove_from_list": "Adicionar ou remover das listas", + "account.add_or_remove_from_list": "Adicionar ou Remover de listas", "account.badges.bot": "Robô", "account.badges.group": "Grupo", "account.block": "Bloquear @{name}", - "account.block_domain": "Bloquear {domain}", + "account.block_domain": "Bloquear domínio {domain}", "account.blocked": "Bloqueado", "account.cancel_follow_request": "Cancelar solicitação para seguir", "account.direct": "Enviar toot direto para @{name}", @@ -17,8 +17,8 @@ "account.follows.empty": "Nada aqui.", "account.follows_you": "Segue você", "account.hide_reblogs": "Ocultar boosts de @{name}", - "account.last_status": "Última atividade", - "account.link_verified_on": "O link foi verificado em {date}", + "account.last_status": "Ativo pela última vez", + "account.link_verified_on": "Posse deste link foi verificada em {date}", "account.locked_info": "Esta conta está trancada. Sua solicitação para seguir requer aprovação manual do usuário.", "account.media": "Mídia", "account.mention": "Mencionar @{name}", @@ -34,18 +34,18 @@ "account.share": "Compartilhar perfil de @{name}", "account.show_reblogs": "Mostrar boosts de @{name}", "account.unblock": "Desbloquear @{name}", - "account.unblock_domain": "Desbloquear {domain}", + "account.unblock_domain": "Desbloquear domínio {domain}", "account.unendorse": "Não destacar no perfil", "account.unfollow": "Deixar de seguir", - "account.unmute": "Desfazer silêncio de @{name}", + "account.unmute": "Tirar @{name} do mudo", "account.unmute_notifications": "Mostrar notificações de @{name}", "alert.rate_limited.message": "Por favor tente novamente após {retry_time, time, medium}.", - "alert.rate_limited.title": "Tentativas limitadas", + "alert.rate_limited.title": "Frequência limitada", "alert.unexpected.message": "Ocorreu um erro inesperado.", "alert.unexpected.title": "Eita!", "announcement.announcement": "Anúncio", "autosuggest_hashtag.per_week": "{count} por semana", - "boost_modal.combo": "Pressione {combo} para ignorar este diálogo na próxima vez", + "boost_modal.combo": "Pode pressionar {combo} para pular isto na próxima vez", "bundle_column_error.body": "Ocorreu um problema ao carregar este componente.", "bundle_column_error.retry": "Tente novamente", "bundle_column_error.title": "Erro de rede", @@ -74,19 +74,21 @@ "column_header.show_settings": "Mostrar configurações", "column_header.unpin": "Desafixar", "column_subheading.settings": "Configurações", - "community.column_settings.media_only": "Apenas mídia", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Somente Mídia", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Este toot só será enviado aos usuários mencionados.", "compose_form.direct_message_warning_learn_more": "Saiba mais", - "compose_form.hashtag_warning": "O toot não será listado nas hashtags porque não é público. Somente toots públicos podem ser pesquisados por hashtag. Dica: Poste como Não-listado.", + "compose_form.hashtag_warning": "Este toot não vai estar listado em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "Sua conta não está {locked}. Qualquer pessoa pode te seguir e ver seus toots privados.", "compose_form.lock_disclaimer.lock": "trancada", "compose_form.placeholder": "No que você está pensando?", - "compose_form.poll.add_option": "Adicionar opção", + "compose_form.poll.add_option": "Adicionar uma escolha", "compose_form.poll.duration": "Duração da enquete", - "compose_form.poll.option_placeholder": "Opção {number}", - "compose_form.poll.remove_option": "Remover opção", - "compose_form.poll.switch_to_multiple": "Alterar para múltiplos votos", - "compose_form.poll.switch_to_single": "Alterar para voto único", + "compose_form.poll.option_placeholder": "Escolha {number}", + "compose_form.poll.remove_option": "Remover esta escolha", + "compose_form.poll.switch_to_multiple": "Alterar enquete para permitir múltiplas escolhas", + "compose_form.poll.switch_to_single": "Alterar enquete para permitir uma única escolha", "compose_form.publish": "TOOT", "compose_form.publish_loud": "{publish}!", "compose_form.sensitive.hide": "Marcar mídia como sensível", @@ -103,7 +105,7 @@ "confirmations.delete.message": "Você tem certeza de que deseja excluir este toot?", "confirmations.delete_list.confirm": "Excluir", "confirmations.delete_list.message": "Você tem certeza de que deseja excluir esta lista?", - "confirmations.domain_block.confirm": "Bloquear domínio", + "confirmations.domain_block.confirm": "Bloquear domínio inteiro", "confirmations.domain_block.message": "Você tem certeza de que deseja bloquear tudo de {domain}? Você não verá mais o conteúdo desta instância em nenhuma linha do tempo pública ou nas suas notificações. Seus seguidores desta instância serão removidos.", "confirmations.logout.confirm": "Sair", "confirmations.logout.message": "Você tem certeza de que deseja sair?", @@ -120,16 +122,16 @@ "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", "conversation.with": "Com {names}", - "directory.federated": "Do fediverso", + "directory.federated": "Do fediverso conhecido", "directory.local": "Apenas do {domain}", "directory.new_arrivals": "Acabaram de chegar", "directory.recently_active": "Ativos recentemente", - "embed.instructions": "Incorpore este toot no seu site copiando o código abaixo.", - "embed.preview": "Veja como vai ficar:", - "emoji_button.activity": "Atividades", + "embed.instructions": "Incorpore este status em seu website ao copiar o código abaixo.", + "embed.preview": "Aqui está como vai ficar:", + "emoji_button.activity": "Atividade", "emoji_button.custom": "Personalizados", "emoji_button.flags": "Bandeiras", - "emoji_button.food": "Comidas e Bebidas", + "emoji_button.food": "Comida & Bebida", "emoji_button.label": "Inserir emoji", "emoji_button.nature": "Natureza", "emoji_button.not_found": "Sem emojis! (╯°□°)╯︵ ┻━┻", @@ -139,31 +141,32 @@ "emoji_button.search": "Pesquisar...", "emoji_button.search_results": "Resultados da pesquisa", "emoji_button.symbols": "Símbolos", - "emoji_button.travel": "Viagens e Lugares", + "emoji_button.travel": "Viagem & Lugares", "empty_column.account_timeline": "Nada aqui!", "empty_column.account_unavailable": "Perfil indisponível", "empty_column.blocks": "Nada aqui.", "empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar um toot, ele aparecerá aqui.", - "empty_column.community": "A linha do tempo local está vazia. Poste algo publicamente para começar!", + "empty_column.community": "A linha do tempo local está vazia. Escreva algo publicamente para fazer a bola rolar!", "empty_column.direct": "Nada aqui. Quando você enviar ou receber toots diretos, eles aparecerão aqui.", - "empty_column.domain_blocks": "Nada aqui.", + "empty_column.domain_blocks": "Não há domínios bloqueados ainda.", "empty_column.favourited_statuses": "Nada aqui. Quando você favoritar um toot, ele aparecerá aqui.", "empty_column.favourites": "Nada aqui. Quando alguém favoritar, o autor aparecerá aqui.", "empty_column.follow_requests": "Nada aqui. Quando você receber solicitações de seguidores, elas aparecerão aqui.", "empty_column.hashtag": "Nada aqui.", - "empty_column.home": "Sua linha do tempo está vazia. Visite a linha {public} ou use a pesquisa para conhecer outros usuários!", + "empty_column.home": "Sua linha do tempo está vazia! Visite {public} ou use a pesquisa para começar e conhecer outros usuários.", "empty_column.home.public_timeline": "a linha do tempo pública", "empty_column.list": "Nada aqui. Quando os usuários nesta lista postarem toots, eles aparecerão aqui.", "empty_column.lists": "Nada aqui. Quando você criar listas, elas aparecerão aqui.", "empty_column.mutes": "Nada aqui.", "empty_column.notifications": "Nada aqui. Interaja com outros usuários para começar a conversar.", - "empty_column.public": "Nada aqui! Poste algo publicamente ou siga usuários de outras instâncias", - "error.unexpected_crash.explanation": "Devido a um problema em nosso código ou de compatibilidade com o navegador, esta página não pôde ser exibida corretamente.", - "error.unexpected_crash.next_steps": "Tente atualizar a página. Se não resolver, você ainda pode usar o Mastodon em outro navegador ou aplicativo.", - "errors.unexpected_crash.copy_stacktrace": "Copiar estado da pilha para a área de transferência", - "errors.unexpected_crash.report_issue": "Reportar problema", + "empty_column.public": "Não há nada aqui! Escreva algo publicamente, ou siga manualmente usuários de outros servidores para enchê-la", + "error.unexpected_crash.explanation": "Devido a um bug em nosso código ou um problema de compatibilidade de navegador, esta página não pôde ser exibida corretamente.", + "error.unexpected_crash.next_steps": "Tente atualizar a página. Se não resolver, você ainda pode conseguir usar o Mastodon por meio de um navegador ou app nativo diferente.", + "errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace para área de transferência", + "errors.unexpected_crash.report_issue": "Denunciar problema", "follow_request.authorize": "Aprovar", "follow_request.reject": "Vetar", + "follow_requests.unlocked_explanation": "Embora sua conta não esteja trancada, o staff de {domain} achou que você podia querer revisar pedidos para te seguir destas contas manualmente.", "getting_started.developers": "Desenvolvedores", "getting_started.directory": "Diretório de perfis", "getting_started.documentation": "Documentação", @@ -176,36 +179,36 @@ "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", "hashtag.column_settings.select.no_options_message": "Nenhuma sugestão encontrada", - "hashtag.column_settings.select.placeholder": "Adicione hashtags…", - "hashtag.column_settings.tag_mode.all": "Todas essas", - "hashtag.column_settings.tag_mode.any": "Qualquer uma dessas", - "hashtag.column_settings.tag_mode.none": "Nenhuma dessas", - "hashtag.column_settings.tag_toggle": "Adicionar mais hashtags", + "hashtag.column_settings.select.placeholder": "Insira hashtags…", + "hashtag.column_settings.tag_mode.all": "Todas estas", + "hashtag.column_settings.tag_mode.any": "Qualquer uma destas", + "hashtag.column_settings.tag_mode.none": "Nenhuma destas", + "hashtag.column_settings.tag_toggle": "Incluir tags adicionais para esta coluna", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", - "home.hide_announcements": "Ocultar anúncios", + "home.hide_announcements": "Esconder anúncios", "home.show_announcements": "Mostrar anúncios", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", "introduction.federation.action": "Próximo", - "introduction.federation.federated.headline": "Global", - "introduction.federation.federated.text": "Toots públicos de outras instâncias do fediverso aparecerão na linha global.", - "introduction.federation.home.headline": "Página inicial", - "introduction.federation.home.text": "Os toots das pessoas que você segue aparecerão na página inicial. Você pode seguir pessoas de qualquer instância!", + "introduction.federation.federated.headline": "Federada", + "introduction.federation.federated.text": "Posts públicos de outros servidores do fediverso vão aparecer na linha do tempo federada.", + "introduction.federation.home.headline": "Início", + "introduction.federation.home.text": "Posts de pessoas que você segue vão aparecer no seu feed de início. Você pode seguir qualquer pessoa em qualquer servidor!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Toots públicos de pessoas na mesma instância que você aparecerão na linha local.", - "introduction.interactions.action": "Terminar o tutorial!", + "introduction.federation.local.text": "Posts públicos de pessoas no mesmo servidor que você vão aparecer na linha do tempo local.", + "introduction.interactions.action": "Terminar tutorial!", "introduction.interactions.favourite.headline": "Favoritos", "introduction.interactions.favourite.text": "Ao favoritar, você sinaliza ao autor que você gostou do toot.", "introduction.interactions.reblog.headline": "Boost", "introduction.interactions.reblog.text": "Ao dar boost, você compartilha toots de outras pessoas para seus seguidores.", "introduction.interactions.reply.headline": "Responder", "introduction.interactions.reply.text": "Você pode responder aos toots de outras pessoas e formar uma conversa ou responder aos seus e formar uma sequência.", - "introduction.welcome.action": "É HORA DO SHOW!", + "introduction.welcome.action": "Vamos lá!", "introduction.welcome.headline": "Primeiros passos", - "introduction.welcome.text": "Boas vindas ao fediverso! Logo você vai poder publicar mensagens e falar com pessoas amigas através de uma variedade de instâncias. Mas esta instância, {domain}, é especial — é onde o seu perfil está guardado, então lembre do nome dela com carinho.", + "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 este servidor, {domain}, é especial—é onde seu perfil está hospedado, então lembre do nome dele.", "keyboard_shortcuts.back": "voltar", "keyboard_shortcuts.blocked": "abrir lista de usuários bloqueados", "keyboard_shortcuts.boost": "dar boost", @@ -213,32 +216,32 @@ "keyboard_shortcuts.compose": "focar na composição", "keyboard_shortcuts.description": "Descrição", "keyboard_shortcuts.direct": "abrir Mensagens Diretas", - "keyboard_shortcuts.down": "mover para baixo na linha", - "keyboard_shortcuts.enter": "expandir um toot", + "keyboard_shortcuts.down": "para mover para baixo na lista", + "keyboard_shortcuts.enter": "para abrir status", "keyboard_shortcuts.favourite": "favoritar", "keyboard_shortcuts.favourites": "abrir os favoritos", - "keyboard_shortcuts.federated": "abrir linha global", + "keyboard_shortcuts.federated": "para abrir linha do tempo federada", "keyboard_shortcuts.heading": "Atalhos de teclado", - "keyboard_shortcuts.home": "abrir página inicial", + "keyboard_shortcuts.home": "para abrir linha do tempo de início", "keyboard_shortcuts.hotkey": "Atalho", "keyboard_shortcuts.legend": "mostrar estes atalhos", - "keyboard_shortcuts.local": "abrir linha local", - "keyboard_shortcuts.mention": "mencionar autor", + "keyboard_shortcuts.local": "para abrir linha do tempo local", + "keyboard_shortcuts.mention": "para mencionar autor", "keyboard_shortcuts.muted": "abrir lista de usuários silenciados", - "keyboard_shortcuts.my_profile": "abrir seu perfil", - "keyboard_shortcuts.notifications": "abrir notificações", - "keyboard_shortcuts.open_media": "abrir mídia", + "keyboard_shortcuts.my_profile": "para abrir seu perfil", + "keyboard_shortcuts.notifications": "para abrir coluna de notificações", + "keyboard_shortcuts.open_media": "para abrir mídia", "keyboard_shortcuts.pinned": "abrir toots fixados", - "keyboard_shortcuts.profile": "abrir o perfil do autor", - "keyboard_shortcuts.reply": "responder", - "keyboard_shortcuts.requests": "abrir lista de seguidores pendentes", - "keyboard_shortcuts.search": "focar na pesquisa", - "keyboard_shortcuts.start": "abrir o \"Primeiros passos\"", + "keyboard_shortcuts.profile": "para abrir perfil do autor", + "keyboard_shortcuts.reply": "para responder", + "keyboard_shortcuts.requests": "para abrir lista de pedidos para seguir", + "keyboard_shortcuts.search": "para focar pesquisa", + "keyboard_shortcuts.start": "para abrir coluna \"primeiros passos\"", "keyboard_shortcuts.toggle_hidden": "mostrar/ocultar o toot com Aviso de Conteúdo", "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar mídia", - "keyboard_shortcuts.toot": "compor novo toot", - "keyboard_shortcuts.unfocus": "sair da composição ou da pesquisa", - "keyboard_shortcuts.up": "mover para cima na linha", + "keyboard_shortcuts.toot": "para começar um toot novo em folha", + "keyboard_shortcuts.unfocus": "para desfocar de área de texto de composição/pesquisa", + "keyboard_shortcuts.up": "para mover para cima na lista", "lightbox.close": "Fechar", "lightbox.next": "Próximo", "lightbox.previous": "Anterior", @@ -254,16 +257,16 @@ "lists.subheading": "Suas listas", "load_pending": "{count, plural, one {# novo item} other {# novos items}}", "loading_indicator.label": "Carregando...", - "media_gallery.toggle_visible": "Mostrar/Ocultar", + "media_gallery.toggle_visible": "Esconder mídia", "missing_indicator.label": "Não encontrado", "missing_indicator.sublabel": "Esse recurso não pôde ser encontrado", "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "navigation_bar.apps": "Aplicativos", "navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.bookmarks": "Salvos", - "navigation_bar.community_timeline": "Local", + "navigation_bar.community_timeline": "Linha do tempo local", "navigation_bar.compose": "Compor novo toot", - "navigation_bar.direct": "Mensagens Diretas", + "navigation_bar.direct": "Mensagens diretas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios bloqueados", "navigation_bar.edit_profile": "Editar perfil", @@ -271,7 +274,7 @@ "navigation_bar.filters": "Palavras filtradas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Seguindo e seguidores", - "navigation_bar.info": "Mais informações", + "navigation_bar.info": "Sobre este servidor", "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", @@ -279,7 +282,7 @@ "navigation_bar.personal": "Pessoal", "navigation_bar.pins": "Toots fixados", "navigation_bar.preferences": "Preferências", - "navigation_bar.public_timeline": "Global", + "navigation_bar.public_timeline": "Linha do tempo federada", "navigation_bar.security": "Segurança", "notification.favourite": "{name} favoritou seu toot", "notification.follow": "{name} te seguiu", @@ -302,34 +305,34 @@ "notifications.column_settings.push": "Enviar notificações", "notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.show": "Mostrar nas colunas", - "notifications.column_settings.sound": "Reproduzir som", + "notifications.column_settings.sound": "Tocar som", "notifications.filter.all": "Tudo", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritos", - "notifications.filter.follows": "Seguidores", + "notifications.filter.follows": "Seguindo", "notifications.filter.mentions": "Menções", - "notifications.filter.polls": "Enquetes", + "notifications.filter.polls": "Resultados de enquete", "notifications.group": "{count} notificações", - "poll.closed": "Terminou", + "poll.closed": "Fechou", "poll.refresh": "Atualizar", "poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}", "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", - "poll.voted": "Você votou nesta opção", - "poll_button.add_poll": "Adicionar enquete", + "poll.voted": "Você votou nesta resposta", + "poll_button.add_poll": "Adicionar uma enquete", "poll_button.remove_poll": "Remover enquete", - "privacy.change": "Ajustar privacidade do toot", - "privacy.direct.long": "Postar apenas para usuários mencionados", - "privacy.direct.short": "Direto", - "privacy.private.long": "Postar apenas para seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Postar em linhas públicas", - "privacy.public.short": "Público", - "privacy.unlisted.long": "Não postar em linhas públicas", - "privacy.unlisted.short": "Não-listado", + "privacy.change": "Ajustar privacidade de status", + "privacy.direct.long": "Visível somente para usuários mencionados", + "privacy.direct.short": "Direta", + "privacy.private.long": "Visível somente para seguidores", + "privacy.private.short": "Seguidores-somente", + "privacy.public.long": "Visível para todos, mostrado em linhas do tempo públicas", + "privacy.public.short": "Pública", + "privacy.unlisted.long": "Visível para todos, mas não em linhas do tempo públicas", + "privacy.unlisted.short": "Não-listada", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", - "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!", + "regeneration_indicator.sublabel": "Seu feed de início está sendo preparado!", "relative_time.days": "{number}d", "relative_time.hours": "{number}h", "relative_time.just_now": "agora", @@ -337,18 +340,18 @@ "relative_time.seconds": "{number}s", "relative_time.today": "hoje", "reply_indicator.cancel": "Cancelar", - "report.forward": "Enviar cópia para {target}", - "report.forward_hint": "A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá?", - "report.hint": "A denúncia será enviada aos moderadores da instância. Você pode explicar por que você denunciou a conta:", + "report.forward": "Encaminhar para {target}", + "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anonimizada da denúncia para lá também?", + "report.hint": "Sua denúncia vai ser enviada aos moderadores de seu servidor. Você pode prover uma explicação de por que está denunciando essa conta abaixo:", "report.placeholder": "Comentários adicionais", "report.submit": "Enviar", "report.target": "Denunciando {target}", "search.placeholder": "Pesquisar", - "search_popout.search_format": "Pesquisa avançada", - "search_popout.tips.full_text": "Texto simples retorna seus toots, favoritos, boosts ou toots em que foi mencionado, como também nomes de exibição, usuários e hashtags correspondentes.", + "search_popout.search_format": "Formato de pesquisa avançada", + "search_popout.tips.full_text": "Texto simples retorna statuses que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.", "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "toot", - "search_popout.tips.text": "Texto simples retorna nomes de exibição, usuários e hashtags correspondentes", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Texto simples retorna nomes de exibição e de usuário, e hashtags correspondentes", "search_popout.tips.user": "usuário", "search_results.accounts": "Pessoas", "search_results.hashtags": "Hashtags", @@ -356,36 +359,36 @@ "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "status.admin_account": "Abrir interface de moderação para @{name}", - "status.admin_status": "Abrir o toot na interface de moderação", + "status.admin_status": "Abrir este status na interface de moderação", "status.block": "Bloquear @{name}", "status.bookmark": "Salvar", - "status.cancel_reblog_private": "Desfazer boost", - "status.cannot_reblog": "Não foi possível dar boost", - "status.copy": "Copiar o link do toot", + "status.cancel_reblog_private": "Desboostar", + "status.cannot_reblog": "Este post não pode ser dado boost", + "status.copy": "Copiar link para status", "status.delete": "Excluir", "status.detailed_status": "Visão detalhada da conversa", - "status.direct": "Toot direto para @{name}", + "status.direct": "Enviar mensagem direta para @{name}", "status.embed": "Incorporar", "status.favourite": "Favoritar", "status.filtered": "Filtrado", - "status.load_more": "Ver mais", - "status.media_hidden": "Mídia oculta", + "status.load_more": "Carregar mais", + "status.media_hidden": "Mídia escondida", "status.mention": "Mencionar @{name}", "status.more": "Mais", "status.mute": "Silenciar @{name}", "status.mute_conversation": "Silenciar conversa", - "status.open": "Expandir", + "status.open": "Expandir este status", "status.pin": "Fixar no perfil", "status.pinned": "Toot fixado", "status.read_more": "Ler mais", - "status.reblog": "Dar boost", - "status.reblog_private": "Dar boost para audiência original", - "status.reblogged_by": "{name} deu boost", + "status.reblog": "Boostar", + "status.reblog_private": "Boostar para audiência original", + "status.reblogged_by": "{name} boostou", "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o autor aparecerá aqui.", - "status.redraft": "Excluir e rascunhar", - "status.remove_bookmark": "Remover dos Salvos", + "status.redraft": "Excluir & re-rascunhar", + "status.remove_bookmark": "Remover marcador", "status.reply": "Responder", - "status.replyAll": "Responder à conversa", + "status.replyAll": "Responder a thread", "status.report": "Denunciar @{name}", "status.sensitive_warning": "Conteúdo sensível", "status.share": "Compartilhar", @@ -395,48 +398,48 @@ "status.show_more_all": "Mostrar mais para todos os toots", "status.show_thread": "Mostrar conversa", "status.uncached_media_warning": "Não disponível", - "status.unmute_conversation": "Desativar silêncio desta conversa", + "status.unmute_conversation": "Tirar conversa do mudo", "status.unpin": "Desafixar do perfil", "suggestions.dismiss": "Ignorar sugestão", - "suggestions.header": "Você pode se interessar por…", - "tabs_bar.federated_timeline": "Global", - "tabs_bar.home": "Página inicial", + "suggestions.header": "Você pode estar interessado em…", + "tabs_bar.federated_timeline": "Federada", + "tabs_bar.home": "Início", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificações", "tabs_bar.search": "Pesquisar", "time_remaining.days": "{number, plural, one {# dia restante} other {# dias restantes}}", "time_remaining.hours": "{number, plural, one {# hora restante} other {# horas restantes}}", "time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}", - "time_remaining.moments": "Tempo restante", + "time_remaining.moments": "Momentos faltantes", "time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}", - "trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre", + "trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando", "trends.trending_now": "Em alta no momento", - "ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.", - "upload_area.title": "Arraste e solte para enviar", + "ui.beforeunload": "Seu rascunho vai ser perdido se você sair do Mastodon.", + "upload_area.title": "Arraste & solte para fazer upload", "upload_button.label": "Adicionar mídia ({formats})", - "upload_error.limit": "Limite de envio de arquivos excedido.", - "upload_error.poll": "Não é possível enviar arquivos com enquetes.", - "upload_form.audio_description": "Descrever para deficientes auditivos", - "upload_form.description": "Descrever para deficientes visuais", + "upload_error.limit": "Limite de upload de arquivos excedido.", + "upload_error.poll": "Não é possível fazer upload de arquivos com enquetes.", + "upload_form.audio_description": "Descrever para pessoas com deficiência auditiva", + "upload_form.description": "Descreva para deficientes visuais", "upload_form.edit": "Editar", - "upload_form.undo": "Remover", - "upload_form.video_description": "Descrever para deficientes auditivos e visuais", + "upload_form.undo": "Excluir", + "upload_form.video_description": "Descreva para pessoas com deficiência auditiva ou visual", "upload_modal.analyzing_picture": "Analisando imagem…", "upload_modal.apply": "Aplicar", "upload_modal.description_placeholder": "Um pequeno jabuti xereta viu dez cegonhas felizes", "upload_modal.detect_text": "Detectar texto da imagem", "upload_modal.edit_media": "Editar mídia", - "upload_modal.hint": "Clique ou arraste o círculo na prévia para escolher o ponto focal que ficará visível em todas as miniaturas.", + "upload_modal.hint": "Clique ou arraste o círculo na prévia para escolher o ponto focal que vai estar sempre visível em todas as thumbnails.", "upload_modal.preview_label": "Prévia ({ratio})", - "upload_progress.label": "Enviando...", + "upload_progress.label": "Fazendo upload...", "video.close": "Fechar vídeo", - "video.download": "Baixar arquivo", + "video.download": "Fazer download de arquivo", "video.exit_fullscreen": "Sair da tela cheia", "video.expand": "Expandir vídeo", "video.fullscreen": "Tela cheia", "video.hide": "Ocultar vídeo", - "video.mute": "Silenciar", + "video.mute": "Colocar no mudo", "video.pause": "Pausar", - "video.play": "Reproduzir", - "video.unmute": "Desativar silêncio" + "video.play": "Tocar", + "video.unmute": "Tirar do mudo" } diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index b8902d65e..41433a43f 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -20,7 +20,7 @@ "account.last_status": "Última atividade", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "O estatuto de privacidade desta conta é fechado. O dono revê manualmente quem a pode seguir.", - "account.media": "Média", + "account.media": "Media", "account.mention": "Mencionar @{name}", "account.moved_to": "{name} mudou a sua conta para:", "account.mute": "Silenciar @{name}", @@ -30,7 +30,7 @@ "account.posts": "Publicações", "account.posts_with_replies": "Publicações e respostas", "account.report": "Denunciar @{name}", - "account.requested": "A aguardar aprovação. Clique para cancelar o pedido de seguimento", + "account.requested": "A aguardar aprovação. Clique para cancelar o pedido de seguidor", "account.share": "Partilhar o perfil @{name}", "account.show_reblogs": "Mostrar partilhas de @{name}", "account.unblock": "Desbloquear @{name}", @@ -53,7 +53,7 @@ "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", "column.blocks": "Utilizadores Bloqueados", - "column.bookmarks": "Marcadores", + "column.bookmarks": "Itens salvos", "column.community": "Cronologia local", "column.direct": "Mensagens directas", "column.directory": "Procurar perfis", @@ -74,13 +74,15 @@ "column_header.show_settings": "Mostrar configurações", "column_header.unpin": "Desafixar", "column_subheading.settings": "Configurações", - "community.column_settings.media_only": "Somente média", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Somente media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Esta publicação será enviada apenas para os utilizadores mencionados.", "compose_form.direct_message_warning_learn_more": "Conhecer mais", "compose_form.hashtag_warning": "Este toot não será listado em nenhuma hashtag por ser não listado. Apenas toots públics podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "A tua conta não está {locked}. Qualquer pessoa pode seguir-te e ver as publicações direcionadas apenas a seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", - "compose_form.placeholder": "Em que estás a pensar?", + "compose_form.placeholder": "Em que está a pensar?", "compose_form.poll.add_option": "Adicionar uma opção", "compose_form.poll.duration": "Duração da votação", "compose_form.poll.option_placeholder": "Opção {number}", @@ -89,12 +91,12 @@ "compose_form.poll.switch_to_single": "Alterar a votação para permitir uma única escolha", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.sensitive.hide": "Marcar média como sensível", - "compose_form.sensitive.marked": "Média marcada como sensível", - "compose_form.sensitive.unmarked": "Média não está marcada como sensível", + "compose_form.sensitive.hide": "Marcar media como sensível", + "compose_form.sensitive.marked": "Media marcada como sensível", + "compose_form.sensitive.unmarked": "Media não está marcada como sensível", "compose_form.spoiler.marked": "Texto escondido atrás de aviso", "compose_form.spoiler.unmarked": "O texto não está escondido", - "compose_form.spoiler_placeholder": "Escreve o teu aviso aqui", + "compose_form.spoiler_placeholder": "Escreva o seu aviso aqui", "confirmation_modal.cancel": "Cancelar", "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", @@ -113,7 +115,7 @@ "confirmations.redraft.confirm": "Apagar & redigir", "confirmations.redraft.message": "Tens a certeza que queres apagar e redigir esta publicação? Os favoritos e as partilhas perder-se-ão e as respostas à publicação original ficarão órfãs.", "confirmations.reply.confirm": "Responder", - "confirmations.reply.message": "Responder agora irá reescrever a mensagem que estás a compor actualmente. Tens a certeza que queres continuar?", + "confirmations.reply.message": "Responder agora irá reescrever a mensagem que está a compor actualmente. Tem a certeza que quer continuar?", "confirmations.unfollow.confirm": "Deixar de seguir", "confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?", "conversation.delete": "Eliminar conversa", @@ -149,7 +151,7 @@ "empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.", "empty_column.favourited_statuses": "Ainda não tens quaisquer toots favoritos. Quando tiveres algum, ele irá aparecer aqui.", "empty_column.favourites": "Ainda ninguém marcou este toot como favorito. Quando alguém o fizer, ele irá aparecer aqui.", - "empty_column.follow_requests": "Ainda não tens nenhum pedido de seguimento. Quando receberes algum, ele irá aparecer aqui.", + "empty_column.follow_requests": "Ainda não tens nenhum pedido de seguidor. Quando receberes algum, ele irá aparecer aqui.", "empty_column.hashtag": "Não foram encontradas publicações com essa hashtag.", "empty_column.home": "Ainda não segues qualquer utilizador. Visita {public} ou utiliza a pesquisa para procurar outros utilizadores.", "empty_column.home.public_timeline": "Cronologia pública", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Reportar problema", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", + "follow_requests.unlocked_explanation": "Apesar de a sua não estar bloqueada, a administração de {domain} pensa que poderá querer rever os pedidos dessas contas manualmente.", "getting_started.developers": "Responsáveis pelo desenvolvimento", "getting_started.directory": "Directório de perfil", "getting_started.documentation": "Documentação", @@ -191,11 +194,11 @@ "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", "introduction.federation.action": "Seguinte", "introduction.federation.federated.headline": "Federada", - "introduction.federation.federated.text": "Publicações públicas de outros servidores do fediverse aparecerão na cronologia federativa.", + "introduction.federation.federated.text": "Publicações públicas de outras instâncias do fediverso aparecerão na cronologia federada.", "introduction.federation.home.headline": "Início", - "introduction.federation.home.text": "As publicações das pessoas que tu segues aparecerão na tua coluna inicial. Tu podes seguir qualquer pessoa em qualquer servidor!", + "introduction.federation.home.text": "As publicações das pessoas que você segue aparecerão na sua coluna de início. Você pode seguir qualquer pessoa em qualquer instância!", "introduction.federation.local.headline": "Local", - "introduction.federation.local.text": "Publicações públicas de pessoas que tu segues no teu servidor aparecerão na coluna local.", + "introduction.federation.local.text": "Publicações públicas de pessoas na mesma instância que você aparecerão na coluna local.", "introduction.interactions.action": "Terminar o tutorial!", "introduction.interactions.favourite.headline": "Favorito", "introduction.interactions.favourite.text": "Podes guardar um toot para depois e deixar o autor saber que gostaste dele, marcando-o como favorito.", @@ -205,7 +208,7 @@ "introduction.interactions.reply.text": "Tu podes responder a toots de outras pessoas e aos teus, o que os irá juntar numa conversa.", "introduction.welcome.action": "Vamos!", "introduction.welcome.headline": "Primeiros passos", - "introduction.welcome.text": "Bem-vindo ao fediverso! Em pouco tempo poderás enviar mensagens e falar com os teus amigos numa grande variedade de servidores. Mas este servidor, {domain}, é especial—ele alberga o teu perfil. Por isso, lembra-te do seu nome.", + "introduction.welcome.text": "Bem-vindo ao fediverso! Em pouco tempo poderás enviar mensagens e falar com os seus amigos numa grande variedade de instâncias. Mas esta instância, {domain}, é especial—ela alberga o seu perfil. Por isso, lembre-se do seu nome.", "keyboard_shortcuts.back": "para voltar", "keyboard_shortcuts.blocked": "para abrir a lista de utilizadores bloqueados", "keyboard_shortcuts.boost": "para partilhar", @@ -227,15 +230,15 @@ "keyboard_shortcuts.muted": "para abrir a lista dos utilizadores silenciados", "keyboard_shortcuts.my_profile": "para abrir o teu perfil", "keyboard_shortcuts.notifications": "para abrir a coluna das notificações", - "keyboard_shortcuts.open_media": "para abrir média", + "keyboard_shortcuts.open_media": "para abrir media", "keyboard_shortcuts.pinned": "para abrir a lista dos toots fixados", "keyboard_shortcuts.profile": "para abrir o perfil do autor", "keyboard_shortcuts.reply": "para responder", - "keyboard_shortcuts.requests": "para abrir a lista dos pedidos de seguimento", + "keyboard_shortcuts.requests": "para abrir a lista dos pedidos de seguidor", "keyboard_shortcuts.search": "para focar na pesquisa", "keyboard_shortcuts.start": "para abrir a coluna dos \"primeiros passos\"", "keyboard_shortcuts.toggle_hidden": "para mostrar/esconder texto atrás de CW", - "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar média", + "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar media", "keyboard_shortcuts.toot": "para compor um novo toot", "keyboard_shortcuts.unfocus": "para remover o foco da área de texto/pesquisa", "keyboard_shortcuts.up": "para mover para cima na lista", @@ -260,7 +263,7 @@ "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "navigation_bar.apps": "Aplicações móveis", "navigation_bar.blocks": "Utilizadores bloqueados", - "navigation_bar.bookmarks": "Marcadores", + "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", "navigation_bar.compose": "Escrever novo toot", "navigation_bar.direct": "Mensagens directas", @@ -271,7 +274,7 @@ "navigation_bar.filters": "Palavras silenciadas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Seguindo e seguidores", - "navigation_bar.info": "Sobre este servidor", + "navigation_bar.info": "Sobre esta instância", "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", @@ -286,7 +289,7 @@ "notification.follow_request": "{name} pediu para segui-lo", "notification.mention": "{name} mencionou-te", "notification.own_poll": "A sua votação terminou", - "notification.poll": "Uma votação em participaste chegou ao fim", + "notification.poll": "Uma votação em que participaste chegou ao fim", "notification.reblog": "{name} partilhou a tua publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?", @@ -306,9 +309,9 @@ "notifications.filter.all": "Todas", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritos", - "notifications.filter.follows": "Seguimento", - "notifications.filter.mentions": "Referências", - "notifications.filter.polls": "Resultados da votação", + "notifications.filter.follows": "Seguidores", + "notifications.filter.mentions": "Menções", + "notifications.filter.polls": "Votações", "notifications.group": "{count} notificações", "poll.closed": "Fechado", "poll.refresh": "Recarregar", @@ -338,8 +341,8 @@ "relative_time.today": "hoje", "reply_indicator.cancel": "Cancelar", "report.forward": "Reenviar para {target}", - "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anónima do relatório para lá também?", - "report.hint": "O relatório será enviado para os moderadores do teu servidor. Podes fornecer, em baixo, uma explicação do motivo pelo qual estás a denunciar esta conta:", + "report.forward_hint": "A conta é de outra instância. Enviar uma cópia anónima do relatório para lá também?", + "report.hint": "O relatório será enviado para os moderadores da sua instância. Pode fornecer, em baixo, uma explicação do motivo pelo qual está a denunciar esta conta:", "report.placeholder": "Comentários adicionais", "report.submit": "Enviar", "report.target": "Denunciar", @@ -353,7 +356,7 @@ "search_results.accounts": "Pessoas", "search_results.hashtags": "Hashtags", "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível neste servidor Mastodon.", + "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "status.admin_account": "Abrir a interface de moderação para @{name}", "status.admin_status": "Abrir esta publicação na interface de moderação", @@ -369,7 +372,7 @@ "status.favourite": "Adicionar aos favoritos", "status.filtered": "Filtrada", "status.load_more": "Carregar mais", - "status.media_hidden": "Média escondida", + "status.media_hidden": "Media escondida", "status.mention": "Mencionar @{name}", "status.more": "Mais", "status.mute": "Silenciar @{name}", @@ -413,7 +416,7 @@ "trends.trending_now": "Tendências atuais", "ui.beforeunload": "O teu rascunho será perdido se abandonares o Mastodon.", "upload_area.title": "Arraste e solte para enviar", - "upload_button.label": "Adicionar media", + "upload_button.label": "Adicionar media ({formats})", "upload_error.limit": "Limite máximo do ficheiro a carregar excedido.", "upload_error.poll": "Carregamento de ficheiros não é permitido em votações.", "upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva", @@ -425,7 +428,7 @@ "upload_modal.apply": "Aplicar", "upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente", "upload_modal.detect_text": "Detectar texto na imagem", - "upload_modal.edit_media": "Editar média", + "upload_modal.edit_media": "Editar media", "upload_modal.hint": "Clique ou arraste o círculo na pré-visualização para escolher o ponto focal que será sempre visível em todas as miniaturas.", "upload_modal.preview_label": "Pré-visualizar ({ratio})", "upload_progress.label": "A enviar...", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index e32c308f6..f7143a2e2 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -1,68 +1,68 @@ { "account.add_or_remove_from_list": "Adaugă sau Elimină din liste", - "account.badges.bot": "Bot", - "account.badges.group": "Group", - "account.block": "Blochează @{name}", - "account.block_domain": "Ascunde tot de la {domain}", + "account.badges.bot": "Robot", + "account.badges.group": "Grup", + "account.block": "Blocați @{name}", + "account.block_domain": "Blocați domeniul {domain}", "account.blocked": "Blocat", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Anulați cererea de urmărire", "account.direct": "Mesaj direct @{name}", - "account.domain_blocked": "Domeniu ascuns", - "account.edit_profile": "Editează profilul", - "account.endorse": "Redistribuie pe profil", + "account.domain_blocked": "Domeniu blocat", + "account.edit_profile": "Editați profilul", + "account.endorse": "Promovați pe profil", "account.follow": "Urmărește", "account.followers": "Urmăritori", "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.empty": "Acest utilizator nu urmărește pe nimeni încă.", "account.follows_you": "Te urmărește", - "account.hide_reblogs": "Ascunde redistribuirile de la @{name}", - "account.last_status": "Last active", + "account.hide_reblogs": "Ascunde impulsurile de la @{name}", + "account.last_status": "Ultima activitate", "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.locked_info": "Acest profil este privat. Această persoană gestionează manual cine o urmărește.", "account.media": "Media", - "account.mention": "Menționează @{name}", + "account.mention": "Menționează pe @{name}", "account.moved_to": "{name} a fost mutat la:", - "account.mute": "Oprește @{name}", - "account.mute_notifications": "Oprește notificările de la @{name}", + "account.mute": "Ignoră pe @{name}", + "account.mute_notifications": "Ignoră notificările de la @{name}", "account.muted": "Oprit", - "account.never_active": "Never", + "account.never_active": "Niciodată", "account.posts": "Postări", - "account.posts_with_replies": "Postări și replici", - "account.report": "Raportează @{name}", + "account.posts_with_replies": "Postări și răspunsuri", + "account.report": "Raportează pe @{name}", "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.show_reblogs": "Arată impulsurile de la @{name}", + "account.unblock": "Deblochează pe @{name}", + "account.unblock_domain": "Deblochează domeniul {domain}", "account.unendorse": "Nu promova pe profil", - "account.unfollow": "Nu mai urmări", - "account.unmute": "Activează notificările de la @{name}", + "account.unfollow": "Nu mai urmării", + "account.unmute": "Nu mai ignora pe @{name}", "account.unmute_notifications": "Activează notificările de la @{name}", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", + "alert.rate_limited.message": "Vă rugăm să reîncercați după {retry_time, time, medium}.", + "alert.rate_limited.title": "Rată limitată", "alert.unexpected.message": "A apărut o eroare neașteptată.", "alert.unexpected.title": "Hopa!", - "announcement.announcement": "Announcement", - "autosuggest_hashtag.per_week": "{count} per week", + "announcement.announcement": "Anunț", + "autosuggest_hashtag.per_week": "{count} pe săptămână", "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": "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.message": "Ceva nu a funcționat în timpul încărcării acestei componente.", "bundle_modal_error.retry": "Încearcă din nou", "column.blocks": "Utilizatori blocați", - "column.bookmarks": "Bookmarks", + "column.bookmarks": "Marcaje", "column.community": "Fluxul Local", "column.direct": "Mesaje directe", - "column.directory": "Browse profiles", - "column.domain_blocks": "Domenii ascunse", + "column.directory": "Răsfoiți profiluri", + "column.domain_blocks": "Domenii blocate", "column.favourites": "Favorite", "column.follow_requests": "Cereri de urmărire", "column.home": "Acasă", "column.lists": "Liste", - "column.mutes": "Utilizatori opriți", + "column.mutes": "Utilizatori ignorați", "column.notifications": "Notificări", "column.pins": "Postări fixate", "column.public": "Flux global", @@ -74,96 +74,99 @@ "column_header.show_settings": "Arată setările", "column_header.unpin": "Eliberează", "column_subheading.settings": "Setări", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Doar media", + "community.column_settings.remote_only": "Remote only", "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.hashtag_warning": "Această postare nu va fi listată sub nici un hashtag pentru că este nelistată. Doar postările publice pot fi găsite după un hashtag.", "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.poll.add_option": "Add a choice", - "compose_form.poll.duration": "Poll duration", - "compose_form.poll.option_placeholder": "Choice {number}", - "compose_form.poll.remove_option": "Remove this choice", - "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", - "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.poll.add_option": "Adăugați o opțiune", + "compose_form.poll.duration": "Durata sondajului", + "compose_form.poll.option_placeholder": "Opțiunea {number}", + "compose_form.poll.remove_option": "Îndepărtați acestă opțiune", + "compose_form.poll.switch_to_multiple": "Modificați sondajul pentru a permite multiple opțiuni", + "compose_form.poll.switch_to_single": "Modificați sondajul pentru a permite o singură opțiune", "compose_form.publish": "Postează", "compose_form.publish_loud": "{publish}!", - "compose_form.sensitive.hide": "Mark media as sensitive", + "compose_form.sensitive.hide": "Marcați conținutul media ca sensibil", "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 o avertizare", "compose_form.spoiler.unmarked": "Textul nu este ascuns", - "compose_form.spoiler_placeholder": "Scrie averitzarea aici", + "compose_form.spoiler_placeholder": "Scrie avertizarea aici", "confirmation_modal.cancel": "Anulează", - "confirmations.block.block_and_report": "Block & Report", + "confirmations.block.block_and_report": "Blocați și Raportați", "confirmations.block.confirm": "Blochează", - "confirmations.block.message": "Ești sigur că vrei să blochezi {name}?", + "confirmations.block.message": "Ești sigur că vrei să blochezi pe {name}?", "confirmations.delete.confirm": "Șterge", - "confirmations.delete.message": "Ești șigur că vrei să ștergi asta?", + "confirmations.delete.message": "Ești sigur că vrei să ștergi asta?", "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 eliminați.", - "confirmations.logout.confirm": "Log out", - "confirmations.logout.message": "Are you sure you want to log out?", - "confirmations.mute.confirm": "Oprește", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", - "confirmations.mute.message": "Ești sigur că vrei să oprești {name}?", + "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi complet domeniul {domain}? În cele mai multe cazuri raportarea sau ignorarea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea nici un conținut de la acest domeniu în nici un flux public sau în notificările tale. Urmăritorii tăi de la acele domenii vor fi eliminați.", + "confirmations.logout.confirm": "Deconectare", + "confirmations.logout.message": "Ești sigur că vrei să te deconectezi?", + "confirmations.mute.confirm": "Ignoră", + "confirmations.mute.explanation": "Acest lucru va ascunde postări față de ei și postări în care sunt menționați, dar le vor permite încă să vă vadă postările și să vă urmărească.", + "confirmations.mute.message": "Ești sigur că vrei să ignori pe {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.redraft.message": "Ești sigur că vrei să ștergi această stare și să o faci ciornă? Favoritele și impulsurile se vor pierde, iar răspunsurile către postarea originală vor rămâne orfane.", "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}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", - "embed.instructions": "Inserează această postare pe site-ul tău adăugând codul de mai jos.", + "confirmations.unfollow.message": "Ești sigur că nu mai vrei să urmărești pe {name}?", + "conversation.delete": "Ștergeți conversația", + "conversation.mark_as_read": "Marcați ca citit", + "conversation.open": "Vizualizați conversația", + "conversation.with": "Cu {names}", + "directory.federated": "De la un cunoscut fedivers", + "directory.local": "Doar de la {domain}", + "directory.new_arrivals": "Noi sosiți", + "directory.recently_active": "Recent activi", + "embed.instructions": "Înglobează această postare pe site-ul tău adăugând codul de mai jos.", "embed.preview": "Cam așa va arăta:", "emoji_button.activity": "Activitate", "emoji_button.custom": "Personalizat", "emoji_button.flags": "Marcaje", "emoji_button.food": "Mâncare și Băuturi", - "emoji_button.label": "Inserează un emoji", + "emoji_button.label": "Inserează un zâmbet", "emoji_button.nature": "Natură", - "emoji_button.not_found": "Fară emojiuri (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Fără zâmbete (╯°□°)╯︵ ┻━┻", "emoji_button.objects": "Obiecte", "emoji_button.people": "Persoane", "emoji_button.recent": "Utilizate frecvent", "emoji_button.search": "Caută...", "emoji_button.search_results": "Rezultatele căutării", "emoji_button.symbols": "Simboluri", - "emoji_button.travel": "Călătorii si Locuri", + "emoji_button.travel": "Călătorii și Locuri", "empty_column.account_timeline": "Nici o postare aici!", - "empty_column.account_unavailable": "Profile unavailable", - "empty_column.blocks": "Nu ai blocat nici un utilizator incă.", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", - "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, 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.account_unavailable": "Profil indisponibil", + "empty_column.blocks": "Nu ai blocat nici un utilizator încă.", + "empty_column.bookmarked_statuses": "Nu aveți nici o postare marcată încă. Atunci când veți marca una, va fi afișată aici.", + "empty_column.community": "Fluxul local este gol. Scrie ceva public pentru a sparge gheața!", + "empty_column.direct": "Nu ai nici un mesaj direct încă. Când trimiți sau primești unul, va fi afișat aici.", + "empty_column.domain_blocks": "Nu sunt domenii blocate încă.", + "empty_column.favourited_statuses": "Nu ai nici o postare favorită încă. Când vei favoriza una, va fi afișată 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ă.", + "empty_column.hashtag": "Acest hashtag 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.", "empty_column.lists": "Nu ai încă nici o listă. Când vei crea una, va apărea aici.", - "empty_column.mutes": "Nu ai oprit nici un utilizator incă.", + "empty_column.mutes": "Nu ai ignorat nici un utilizator încă.", "empty_column.notifications": "Nu ai nici o notificare încă. Interacționează cu alții pentru a începe o conversație.", - "empty_column.public": "Nu este nimci aici încă! Scrie ceva public, sau urmărește alți utilizatori din alte instanțe pentru a porni fluxul", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "empty_column.public": "Nu este nimic aici! Scrie ceva public, sau urmărește alți utilizatori din alte instanțe pentru a porni fluxul", + "error.unexpected_crash.explanation": "Din cauza unei erori în codul nostru sau a unei probleme de compatibilitate cu navigatorul, această pagină nu a putut fi afișată corect.", + "error.unexpected_crash.next_steps": "Încercați să reîmprospătați pagina. Dacă acest lucru nu ajută, este posibil să mai puteți folosi site-ul printr-un navigator diferit sau o aplicație nativă.", + "errors.unexpected_crash.copy_stacktrace": "Copiați stiva în clipboard", + "errors.unexpected_crash.report_issue": "Raportați o problemă", "follow_request.authorize": "Autorizează", "follow_request.reject": "Respinge", + "follow_requests.unlocked_explanation": "Chiar dacă contul dvs nu este blocat, personalul {domain} a crezut că ați putea dori să revizuiți cererile de la aceste conturi în mod manual.", "getting_started.developers": "Dezvoltatori", "getting_started.directory": "Explorează", "getting_started.documentation": "Documentație", @@ -175,47 +178,47 @@ "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.select.no_options_message": "No suggestions found", - "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.select.no_options_message": "Nu s-au găsit sugestii", + "hashtag.column_settings.select.placeholder": "Itroduceți hashtag-uri…", "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_mode.none": "Niciuna din acestea", "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_reblogs": "Arată impulsurile", "home.column_settings.show_replies": "Arată răspunsurile", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", - "intervals.full.days": "{number, plural, one {# day} other {# days}}", - "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", - "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "home.hide_announcements": "Ascundeți anunțurile", + "home.show_announcements": "Afișați anunțurile", + "intervals.full.days": "{number, plural,one {# zi} other {# zile}}", + "intervals.full.hours": "{number, plural, one {# oră} other {# ore}}", + "intervals.full.minutes": "{number, plural, one {# minut} other {# minute}}", "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.home.text": "Postările de la persoanele pe care le urmărești vor apărea în fluxul tău \"Acasă\". Poți urmări pe orice de pe orice server!", "introduction.federation.local.headline": "Local", "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.favourite.text": "Poți salva o postare pentru a fi citită mai târziu și poți anunța autorul să știe că iți place adăugând-o la favorite.", + "introduction.interactions.reblog.headline": "Impuls", + "introduction.interactions.reblog.text": "Poți împărtăși postările altora cu urmăritorii tăi impulsionându-le.", "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", + "introduction.welcome.text": "Bun Venit în federație! În câteva momente, vei putea să transmiți mesaje și să participi la discuții cu oameni noi într-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ă înapoi", "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.boost": "să impulsioneze", + "keyboard_shortcuts.column": "să focalizeze o postare în una dintre coloane", + "keyboard_shortcuts.compose": "sa focalizeze zona de compunere", "keyboard_shortcuts.description": "Descriere", "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.down": "să fie mutată jos în lista", + "keyboard_shortcuts.enter": "să deschidă o stare", + "keyboard_shortcuts.favourite": "să favorizeze", "keyboard_shortcuts.favourites": "să deschidă lista cu favorite", "keyboard_shortcuts.federated": "să deschidă fluxul global", "keyboard_shortcuts.heading": "Comenzi rapide", @@ -224,100 +227,100 @@ "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.muted": "să deschidă lista utilizatorilor ignorați", "keyboard_shortcuts.my_profile": "să deschidă profilul tău", "keyboard_shortcuts.notifications": "să deschidă coloana cu notificări", - "keyboard_shortcuts.open_media": "to open media", + "keyboard_shortcuts.open_media": "pentru a deschide media", "keyboard_shortcuts.pinned": "să deschidă lista postărilor fixate", - "keyboard_shortcuts.profile": "să deschidă porfilul autorului", + "keyboard_shortcuts.profile": "să deschidă profilul 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.search": "să focalizeze căutarea", "keyboard_shortcuts.start": "să deschidă coloana \"Începere\"", - "keyboard_shortcuts.toggle_hidden": "să arate/ascundă textul in spatele CW", - "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", + "keyboard_shortcuts.toggle_hidden": "să arate/ascundă textul în spatele CW", + "keyboard_shortcuts.toggle_sensitivity": "pentru a afișa/ascunde media", "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", - "lightbox.view_context": "View context", + "lightbox.view_context": "Vizualizați contextul", "lists.account.add": "Adaugă în listă", "lists.account.remove": "Elimină din listă", "lists.delete": "Șterge lista", "lists.edit": "Editează lista", - "lists.edit.submit": "Change title", + "lists.edit.submit": "Schimbă titlul", "lists.new.create": "Adaugă listă", "lists.new.title_placeholder": "Titlu pentru noua listă", - "lists.search": "Caută printre persoanale pe care le urmărești", + "lists.search": "Caută printre persoanele pe care le urmărești", "lists.subheading": "Listele tale", - "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Încărcare...", - "media_gallery.toggle_visible": "Comutați vizibilitatea", + "load_pending": "{count, plural, one {# element nou} other {# elemente noi}}", + "loading_indicator.label": "Se încarcă...", + "media_gallery.toggle_visible": "Ascunde media", "missing_indicator.label": "Nu a fost găsit", "missing_indicator.sublabel": "Această resursă nu a putut fi găsită", "mute_modal.hide_notifications": "Ascunzi notificările de la acest utilizator?", "navigation_bar.apps": "Aplicații mobile", "navigation_bar.blocks": "Utilizatori blocați", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Flux local", "navigation_bar.compose": "Compune o nouă postare", "navigation_bar.direct": "Mesaje directe", "navigation_bar.discover": "Descoperă", - "navigation_bar.domain_blocks": "Domenii ascunse", + "navigation_bar.domain_blocks": "Domenii blocate", "navigation_bar.edit_profile": "Editează profilul", "navigation_bar.favourites": "Favorite", - "navigation_bar.filters": "Cuvinte oprite", + "navigation_bar.filters": "Cuvinte ignorate", "navigation_bar.follow_requests": "Cereri de urmărire", - "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.follows_and_followers": "Urmăriri și urmăritori", "navigation_bar.info": "Despre această instanță", "navigation_bar.keyboard_shortcuts": "Prescurtări", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Deconectare", - "navigation_bar.mutes": "Utilizatori opriți", - "navigation_bar.personal": "Personal", + "navigation_bar.mutes": "Utilizatori ignorați", + "navigation_bar.personal": "Personale", "navigation_bar.pins": "Postări fixate", "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Flux global", "navigation_bar.security": "Securitate", - "notification.favourite": "{name} a adăugat statusul tău la favorite", + "notification.favourite": "{name} a adăugat postarea ta la favorite", "notification.follow": "{name} te urmărește", - "notification.follow_request": "{name} has requested to follow you", + "notification.follow_request": "{name} a cerut să te urmărească", "notification.mention": "{name} te-a menționat", - "notification.own_poll": "Your poll has ended", - "notification.poll": "A poll you have voted in has ended", - "notification.reblog": "{name} a redistribuit postarea ta", + "notification.own_poll": "Sondajul tău s-a sfârșit", + "notification.poll": "Un sondaj la care ai votat s-a sfârșit", + "notification.reblog": "{name} a impulsionat postarea ta", "notifications.clear": "Șterge notificările", - "notifications.clear_confirmation": "Ești sigur că vrei să ștergi toate notificările?", + "notifications.clear_confirmation": "Ești sigur că vrei să ștergi permanent toate notificările?", "notifications.column_settings.alert": "Notificări pe desktop", "notifications.column_settings.favourite": "Favorite:", "notifications.column_settings.filter_bar.advanced": "Afișează toate categoriile", "notifications.column_settings.filter_bar.category": "Bară de filtrare rapidă", "notifications.column_settings.filter_bar.show": "Arată", "notifications.column_settings.follow": "Noi urmăritori:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow_request": "Noi cereri de urmărire:", "notifications.column_settings.mention": "Mențiuni:", - "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.poll": "Rezultate sondaj:", "notifications.column_settings.push": "Notificări push", - "notifications.column_settings.reblog": "Redistribuite:", + "notifications.column_settings.reblog": "Impulsuri:", "notifications.column_settings.show": "Arată în coloană", "notifications.column_settings.sound": "Redă sunet", "notifications.filter.all": "Toate", - "notifications.filter.boosts": "Redistribuiri", + "notifications.filter.boosts": "Impulsuri", "notifications.filter.favourites": "Favorite", "notifications.filter.follows": "Urmărește", "notifications.filter.mentions": "Menționări", - "notifications.filter.polls": "Poll results", + "notifications.filter.polls": "Rezultate sondaj", "notifications.group": "{count} notificări", - "poll.closed": "Closed", - "poll.refresh": "Refresh", - "poll.total_people": "{count, plural, one {# person} other {# people}}", - "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", - "poll.vote": "Vote", - "poll.voted": "You voted for this answer", - "poll_button.add_poll": "Add a poll", - "poll_button.remove_poll": "Remove poll", + "poll.closed": "Închis", + "poll.refresh": "Reîmprospătează", + "poll.total_people": "{count, plural, one {# persoană} other {# persoane}}", + "poll.total_votes": "{count, plural, one {# vot} other {# voturi}}", + "poll.vote": "Votează", + "poll.voted": "Ai votat pentru acest răspuns", + "poll_button.add_poll": "Adaugă un sondaj", + "poll_button.remove_poll": "Îndepărtează sondajul", "privacy.change": "Cine vede asta", "privacy.direct.long": "Postează doar pentru utilizatorii menționați", "privacy.direct.short": "Direct", @@ -325,76 +328,76 @@ "privacy.private.short": "Doar urmăritorii", "privacy.public.long": "Postează în fluxul public", "privacy.public.short": "Public", - "privacy.unlisted.long": "Nu afisa in fluxul public", + "privacy.unlisted.long": "Nu afișa în fluxul public", "privacy.unlisted.short": "Nelistat", - "refresh": "Refresh", - "regeneration_indicator.label": "Încărcare…", + "refresh": "Reîmprospătează", + "regeneration_indicator.label": "Se încarcă…", "regeneration_indicator.sublabel": "Fluxul tău este în preparare!", "relative_time.days": "{number}z", - "relative_time.hours": "{number}h", + "relative_time.hours": "{number}o", "relative_time.just_now": "acum", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "azi", "reply_indicator.cancel": "Anulează", - "report.forward": "Redirecționează catre {target}", + "report.forward": "Redirecționează către {target}", "report.forward_hint": "Acest cont este de pe un alt server. Trimitem o copie anonimă a raportului și acolo?", - "report.hint": "Sesizarea va fi trimsă către moderatorii acestei instanțe. Poți oferi o explicație pentru această sesizare mai jos:", - "report.placeholder": "Comentarii opționale", + "report.hint": "Sesizarea va fi trimisă către moderatorii acestei instanțe. Poți oferi o explicație pentru această sesizare mai jos:", + "report.placeholder": "Comentarii adiționale", "report.submit": "Trimite", "report.target": "Raportează {target}", "search.placeholder": "Caută", "search_popout.search_format": "Formate pentru căutare avansată", - "search_popout.tips.full_text": "Textele simple returnează statusuri pe care le-ai scris, favorizat, redistribuit, sau în care sunt menționate , deasmenea și utilizatorii sau hastagurile care se potrivesc.", + "search_popout.tips.full_text": "Textele simple returnează postări pe care le-ai scris, favorizat, impulsionat, sau în care sunt menționate, deasemenea și utilizatorii sau hashtag-urile care se potrivesc.", "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "status", - "search_popout.tips.text": "Textele simple returnează nume, nume de utilizarori și hastagurile care se potrivesc", + "search_popout.tips.status": "stare", + "search_popout.tips.text": "Textele simple returnează nume, nume de utilizatori și hashtag-urile care se potrivesc", "search_popout.tips.user": "utilizator", - "search_results.accounts": "Oameni", - "search_results.hashtags": "Hashtaguri", + "search_results.accounts": "Persoane", + "search_results.hashtags": "Hashtag-uri", "search_results.statuses": "Postări", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", - "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "status.admin_account": "Open moderation interface for @{name}", - "status.admin_status": "Open this status in the moderation interface", - "status.block": "Blochează @{name}", - "status.bookmark": "Bookmark", - "status.cancel_reblog_private": "Nedistribuit", - "status.cannot_reblog": "Această postare nu poate fi redistribuită", - "status.copy": "Copy link to status", + "search_results.statuses_fts_disabled": "Căutarea de postări după conținutul lor nu este activată pe acest server.", + "search_results.total": "{count, number}{count, plural, one { rezultat} other { rezultate}}", + "status.admin_account": "Deschide interfața de moderare pentru @{name}", + "status.admin_status": "Deschide această stare în interfața de moderare", + "status.block": "Blochează pe @{name}", + "status.bookmark": "Marchează", + "status.cancel_reblog_private": "Repuls", + "status.cannot_reblog": "Această postare nu poate fi impulsionată", + "status.copy": "Copiează link-ul postării", "status.delete": "Șterge", - "status.detailed_status": "Conversația detailată", - "status.direct": "Mesaj direct @{name}", - "status.embed": "Încorporare", + "status.detailed_status": "Conversația detaliată", + "status.direct": "Mesaj direct către @{name}", + "status.embed": "Înglobează", "status.favourite": "Favorite", "status.filtered": "Sortate", "status.load_more": "Încarcă mai multe", "status.media_hidden": "Media ascunsă", - "status.mention": "Mentionează @{name}", + "status.mention": "Menționează pe @{name}", "status.more": "Mai mult", - "status.mute": "Oprește @{name}", - "status.mute_conversation": "Oprește conversația", - "status.open": "Extinde acest status", + "status.mute": "Ignoră pe @{name}", + "status.mute_conversation": "Ignoră conversația", + "status.open": "Extinde această stare", "status.pin": "Fixează pe profil", "status.pinned": "Postare fixată", "status.read_more": "Citește mai mult", - "status.reblog": "Redistribuie", - "status.reblog_private": "Redistribuie către audiența originală", - "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.reblog": "Impuls", + "status.reblog_private": "Impulsionează către audiența originală", + "status.reblogged_by": "{name} a impulsionat", + "status.reblogs.empty": "Nimeni nu a impulsionat această postare până acum. Când cineva o va face, va apărea aici.", "status.redraft": "Șterge și adaugă la ciorne", - "status.remove_bookmark": "Remove bookmark", + "status.remove_bookmark": "Îndepărtează marcajul", "status.reply": "Răspunde", - "status.replyAll": "Răspunde la topic", - "status.report": "Raportează @{name}", + "status.replyAll": "Răspunde la discuție", + "status.report": "Raportează pe @{name}", "status.sensitive_warning": "Conținut sensibil", "status.share": "Distribuie", "status.show_less": "Arată mai puțin", "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": "Arată topicul", - "status.uncached_media_warning": "Not available", + "status.show_thread": "Arată discuția", + "status.uncached_media_warning": "Indisponibil", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", "suggestions.dismiss": "Omite sugestia", @@ -404,33 +407,33 @@ "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificări", "tabs_bar.search": "Căutare", - "time_remaining.days": "{number, plural, one {# day} other {# days}} left", - "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", - "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", - "time_remaining.moments": "Moments remaining", - "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", - "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} vorbesc", - "trends.trending_now": "Trending now", + "time_remaining.days": "{number, plural, one {# zi} other {# zile}} rămase", + "time_remaining.hours": "{number, plural, one {# oră} other {# ore}} rămase", + "time_remaining.minutes": "{number, plural, one {# minut} other {# minute}} rămase", + "time_remaining.moments": "Momente rămase", + "time_remaining.seconds": "{number, plural, one {# secundă} other {# secunde}} rămase", + "trends.count_by_accounts": "{count} {rawCount, plural, one {persoană} other {persoane}} vorbește/ecs", + "trends.trending_now": "În tendință acum", "ui.beforeunload": "Postarea se va pierde dacă părăsești pagina.", "upload_area.title": "Trage și eliberează pentru a încărca", "upload_button.label": "Adaugă media (JPEG, PNG, GIF, WebM, MP4, MOV)", - "upload_error.limit": "File upload limit exceeded.", - "upload_error.poll": "File upload not allowed with polls.", - "upload_form.audio_description": "Describe for people with hearing loss", + "upload_error.limit": "Limita de încărcare a fișierului a fost depășită.", + "upload_error.poll": "Încărcarea fișierului nu este permisă cu sondaje.", + "upload_form.audio_description": "Descrie pentru persoanele cu deficiență a auzului", "upload_form.description": "Adaugă o descriere pentru persoanele cu deficiențe de vedere", - "upload_form.edit": "Edit", + "upload_form.edit": "Editează", "upload_form.undo": "Șterge", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", - "upload_modal.analyzing_picture": "Analyzing picture…", - "upload_modal.apply": "Apply", + "upload_form.video_description": "Descrie pentru persoanele cu pierdere a auzului sau tulburări de vedere", + "upload_modal.analyzing_picture": "Se analizează imaginea…", + "upload_modal.apply": "Aplică", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", - "upload_modal.detect_text": "Detect text from picture", - "upload_modal.edit_media": "Edit media", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", - "upload_modal.preview_label": "Preview ({ratio})", + "upload_modal.detect_text": "Detectare text din imagine", + "upload_modal.edit_media": "Editați media", + "upload_modal.hint": "Faceţi clic sau trageţi cercul pe previzualizare pentru a alege punctul focal care va fi întotdeauna vizualizat pe toate miniaturile.", + "upload_modal.preview_label": "Previzualizare ({ratio})", "upload_progress.label": "Se Încarcă...", "video.close": "Închide video", - "video.download": "Download file", + "video.download": "Descărcați fișierul", "video.exit_fullscreen": "Închide", "video.expand": "Extinde video", "video.fullscreen": "Ecran întreg", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index ac88661bb..fa81bdc36 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Показать настройки", "column_header.unpin": "Открепить", "column_subheading.settings": "Настройки", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Только с медиафайлами", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Адресованные посты отправляются и видны только упомянутым в них пользователям.", "compose_form.direct_message_warning_learn_more": "Узнать подробнее", "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Сообщить о проблеме", "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", + "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.", "getting_started.developers": "Разработчикам", "getting_started.directory": "Каталог профилей", "getting_started.documentation": "Документация", @@ -371,7 +374,7 @@ "status.load_more": "Загрузить остальное", "status.media_hidden": "Файл скрыт", "status.mention": "Упомянуть @{name}", - "status.more": "Больше", + "status.more": "Ещё", "status.mute": "Игнорировать @{name}", "status.mute_conversation": "Игнорировать обсуждение", "status.open": "Открыть пост", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json new file mode 100644 index 000000000..db2bb0dac --- /dev/null +++ b/app/javascript/mastodon/locales/sc.json @@ -0,0 +1,445 @@ +{ + "account.add_or_remove_from_list": "Agiunghe o boga dae is listas", + "account.badges.bot": "Bot", + "account.badges.group": "Grupu", + "account.block": "Bloca @{name}", + "account.block_domain": "Bloca domìniu{domain}", + "account.blocked": "Blocadu", + "account.cancel_follow_request": "Annulla rechesta de sighidura", + "account.direct": "Messàgiu deretu a @{name}", + "account.domain_blocked": "Domìniu blocadu", + "account.edit_profile": "Modìfica profilu", + "account.endorse": "Cussìgia in su profilu tuo", + "account.follow": "Sighi", + "account.followers": "Sighiduras", + "account.followers.empty": "Nemos sighit ancora custa persone.", + "account.follows": "Sighende", + "account.follows.empty": "Custa persone non sighit ancora a nemos.", + "account.follows_you": "Ti sighit", + "account.hide_reblogs": "Cua is cumpartziduras de @{name}", + "account.last_status": "Ùrtima atividade", + "account.link_verified_on": "Sa propiedade de custu ligàmene est istada controllada su {date}", + "account.locked_info": "Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.", + "account.media": "Cuntenutu multimediale", + "account.mention": "Mentova @{name}", + "account.moved_to": "{name} est istadu trasferidu a:", + "account.mute": "Pone @name a sa muda", + "account.mute_notifications": "Notìficas disativadas dae @{name}", + "account.muted": "A sa muda", + "account.never_active": "Mai", + "account.posts": "Tuts", + "account.posts_with_replies": "Tuts e rispostas", + "account.report": "Signala @{name}", + "account.requested": "Incarca pro annullare sa rechesta de sighidura", + "account.share": "Cumpartzi su profilu de @{name}", + "account.show_reblogs": "Ammustra is cumpartziduras de @{name}", + "account.unblock": "Isbloca @{name}", + "account.unblock_domain": "Isbloca su domìniu {domain}", + "account.unendorse": "Non cussiges in su profilu", + "account.unfollow": "Non sigas prus", + "account.unmute": "Torra a ativare @{name}", + "account.unmute_notifications": "Ativa notìficas pro @{name}", + "alert.rate_limited.message": "Torra·bi a proare a pustis de {retry_time, time, medium}.", + "alert.rate_limited.title": "Màssimu de rechestas barigadu", + "alert.unexpected.message": "B'at àpidu una faddina.", + "alert.unexpected.title": "Oops!", + "announcement.announcement": "Annùntziu", + "autosuggest_hashtag.per_week": "{count} a sa chida", + "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit", + "bundle_column_error.body": "Faddina in su carrigamentu de custu cumponente.", + "bundle_column_error.retry": "Torra·bi a proare", + "bundle_column_error.title": "Faddina de connessione", + "bundle_modal_error.close": "Serra", + "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", + "bundle_modal_error.retry": "Torra·bi a proare", + "column.blocks": "Persones blocadas", + "column.bookmarks": "Marcadores", + "column.community": "Lìnia de tempus locale", + "column.direct": "Messàgios diretos", + "column.directory": "Nàviga in is profilos", + "column.domain_blocks": "Domìnios blocados", + "column.favourites": "Preferidos", + "column.follow_requests": "Rechestas de sighidura", + "column.home": "Printzipale", + "column.lists": "Listas", + "column.mutes": "Persones a sa muda", + "column.notifications": "Notìficas", + "column.pins": "Tuts apicados", + "column.public": "Lìnia de tempus federada", + "column_back_button.label": "In segus", + "column_header.hide_settings": "Cua is cunfiguratziones", + "column_header.moveLeft_settings": "Moe sa colunna a manca", + "column_header.moveRight_settings": "Moe sa colunna a dereta", + "column_header.pin": "Apica", + "column_header.show_settings": "Ammustra is cunfiguratziones", + "column_header.unpin": "Boga dae pitzu", + "column_subheading.settings": "Cunfiguratziones", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Multimediale isceti", + "community.column_settings.remote_only": "Remote only", + "compose_form.direct_message_warning": "Custu tut at a èssere imbiadu isceti a is persones mentovadas.", + "compose_form.direct_message_warning_learn_more": "Àteras informatziones", + "compose_form.hashtag_warning": "Custu tut no at a èssere ammustradu in peruna eticheta, dae chi no est listadu.", + "compose_form.lock_disclaimer": "Cale si siat persone ti podet sighire pro bìdere is messàgios tuos chi imbies a is chi ti sighint.", + "compose_form.lock_disclaimer.lock": "blocadu", + "compose_form.placeholder": "A ite ses pensende?", + "compose_form.poll.add_option": "Agiunghe unu sèberu", + "compose_form.poll.duration": "Longària de su sondàgiu", + "compose_form.poll.option_placeholder": "Optzione {number}", + "compose_form.poll.remove_option": "Boga custa optzione", + "compose_form.poll.switch_to_multiple": "Muda su sondàgiu pro permìtere multi-optziones", + "compose_form.poll.switch_to_single": "Muda su sondàgiu pro permìtere un'optzione isceti", + "compose_form.publish": "Tut", + "compose_form.publish_loud": "{publish}!", + "compose_form.sensitive.hide": "Marca mèdia comente a sensìbile", + "compose_form.sensitive.marked": "Mèdia marcadu comente a sensìbile", + "compose_form.sensitive.unmarked": "Mèdia non marcadu comente a sensìbile", + "compose_form.spoiler.marked": "Su testu est cuadu dae s'avisu", + "compose_form.spoiler.unmarked": "Su testu no est cuadu", + "compose_form.spoiler_placeholder": "Iscrie s'avisu tuo inoghe", + "confirmation_modal.cancel": "Annulla", + "confirmations.block.block_and_report": "Bloca e signala", + "confirmations.block.confirm": "Bloca", + "confirmations.block.message": "Seguru chi boles blocare {name}?", + "confirmations.delete.confirm": "Cantzella", + "confirmations.delete.message": "Seguru chi boles cantzellare custu tut?", + "confirmations.delete_list.confirm": "Cantzella", + "confirmations.delete_list.message": "Seguru chi boles cantzellare custa lista in manera permanente?", + "confirmations.domain_block.confirm": "Cua totu su domìniu", + "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.logout.confirm": "Essi·nche", + "confirmations.logout.message": "Seguru chi boles essire?", + "confirmations.mute.confirm": "A sa muda", + "confirmations.mute.explanation": "Custu at a cuare is publicatziones issoro e is messàgios chi ddos mentovant, ma ant a pòdere bìdere is messàgios tuos e t'ant a pòdere sighire.", + "confirmations.mute.message": "Seguru chi boles pònnere {name} a sa muda?", + "confirmations.redraft.confirm": "Cantzella e torra a fàghere", + "confirmations.redraft.message": "As a pèrdere is preferidos e is cumpartziduras, e is rispostas a su messàgiu originale ant a abarrare òrfanas.", + "confirmations.reply.confirm": "Risponde", + "confirmations.reply.message": "Rispondende immoe as a subraiscrìere su messàgiu chi ses iscriende. Seguru chi boles sighire?", + "confirmations.unfollow.confirm": "Non sigas prus", + "confirmations.unfollow.message": "Seguru chi non boles sighire prus {name}?", + "conversation.delete": "Cantzella arresonada", + "conversation.mark_as_read": "Signala comente lèghidu", + "conversation.open": "Bide arresonada", + "conversation.with": "Cun {names}", + "directory.federated": "Dae unu fediversu connòschidu", + "directory.local": "Isceti dae {domain}", + "directory.new_arrivals": "Arribos noos", + "directory.recently_active": "Ativos dae pagu", + "embed.instructions": "Inserta custu tut in su situ web tuo copiende su còdighe de suta.", + "embed.preview": "At a aparèssere aici:", + "emoji_button.activity": "Atividade", + "emoji_button.custom": "Personalizadu", + "emoji_button.flags": "Banderas", + "emoji_button.food": "Mandigòngiu e bufòngiu", + "emoji_button.label": "Inserta un'emoji", + "emoji_button.nature": "Natura", + "emoji_button.not_found": "Emojis no!! (╯°□°)╯︵ ┻━┻", + "emoji_button.objects": "Ogetos", + "emoji_button.people": "Gente", + "emoji_button.recent": "Impreadu a fitianu", + "emoji_button.search": "Chirca...", + "emoji_button.search_results": "Resurtados de sa chirca", + "emoji_button.symbols": "Sìmbulos", + "emoji_button.travel": "Biàgios e logos", + "empty_column.account_timeline": "Perunu tut inoghe!", + "empty_column.account_unavailable": "Su profilu no est a disponimentu", + "empty_column.blocks": "No as isblocadu ancora nemos.", + "empty_column.bookmarked_statuses": "Non tenes ancora perunu tut in is marcadores. Cando nd'as a agiùnghere unu, at a èssere ammustradu inoghe.", + "empty_column.community": "Sa lìnia de tempus locale est bòida. Iscrie inoghe pro cumintzare sa festa!", + "empty_column.direct": "Non tenes ancora perunu messàgiu deretu. Cando nd'as a imbiare o nd'as a retzire unu, at a èssere ammustradu inoghe.", + "empty_column.domain_blocks": "Non tenes ancora perunu domìniu blocadu.", + "empty_column.favourited_statuses": "Non tenes ancora perunu tut in is marcadores. Cando nd'as a agiùnghere unu, at a èssere ammustradu inoghe.", + "empty_column.favourites": "Nemos at marcadu ancora custu tut comente preferidu. Cando calicunu dd'at a fàghere, at a èssere ammustradu inoghe.", + "empty_column.follow_requests": "Non tenes ancora peruna rechesta de sighidura. Cando nd'as a retzire una, at a èssere ammustrada inoghe.", + "empty_column.hashtag": "Ancora nudda in custa eticheta.", + "empty_column.home": "Sa lìnia de tempus printzipale tua est bòida. Visita {public} o imprea sa chirca pro cumintzare e agatare àteras persones.", + "empty_column.home.public_timeline": "sa lìnia de tempus pùblica", + "empty_column.list": "Nudda ancora in custa lista. Cando is persones de custa lista ant a publicare àteros istados, ant a aparèssere inoghe.", + "empty_column.lists": "Non tenes ancora peruna lista. Cando nd'as a creare una, at a èssere ammustrada inoghe.", + "empty_column.mutes": "No as postu ancora nemos a sa muda.", + "empty_column.notifications": "Non tenes ancora peruna notìfica. Chistiona cun una persone pro cumintzare un'arresonada.", + "empty_column.public": "Nudda inoghe. Iscrie calicuna cosa pùblica, o sighi àteras persones de àteros serbidores pro prenare custu ispàtziu", + "error.unexpected_crash.explanation": "A càusa de una faddina in su còdighe nostru o unu problema de cumpatibilidade de su navigadore, custa pàgina diat pòdere no èssere ammustrada in manera curreta.", + "error.unexpected_crash.next_steps": "Proa de atualizare sa pàgina. Si custu non acontza su problema, podes chircare de impreare Mastodon in unu navigadore diferente o in un'aplicatzione nativa.", + "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace in punta de billete", + "errors.unexpected_crash.report_issue": "Signala unu problema", + "follow_request.authorize": "Autoriza", + "follow_request.reject": "Refuda", + "follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.", + "getting_started.developers": "Iscuadra de isvilupu", + "getting_started.directory": "Diretòriu de profilos", + "getting_started.documentation": "Documentatzione", + "getting_started.heading": "Comente cumintzare", + "getting_started.invite": "Invita gente", + "getting_started.open_source_notice": "Mastodon est de còdighe abertu. Bi podes contribuire o signalare faddinas in {github}.", + "getting_started.security": "Cunfiguratziones de su contu", + "getting_started.terms": "Cunditziones de su servìtziu", + "hashtag.column_header.tag_mode.all": "e {additional}", + "hashtag.column_header.tag_mode.any": "o {additional}", + "hashtag.column_header.tag_mode.none": "sena {additional}", + "hashtag.column_settings.select.no_options_message": "Perunu cussìgiu agatadu", + "hashtag.column_settings.select.placeholder": "Introdue etichetas…", + "hashtag.column_settings.tag_mode.all": "Totu custos", + "hashtag.column_settings.tag_mode.any": "Cale si siat de custos", + "hashtag.column_settings.tag_mode.none": "Perunu de custos", + "hashtag.column_settings.tag_toggle": "Include etichetas additzionales pro custa colunna", + "home.column_settings.basic": "Bàsicu", + "home.column_settings.show_reblogs": "Ammustra is cumpartziduras", + "home.column_settings.show_replies": "Ammustra rispostas", + "home.hide_announcements": "Cua annùntzios", + "home.show_announcements": "Ammustra annùntzios", + "intervals.full.days": "{number, plural, one {# die} other {# die}}", + "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}", + "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}", + "introduction.federation.action": "Sighi", + "introduction.federation.federated.headline": "Federada", + "introduction.federation.federated.text": "Is publicatziones pùblicas de àteros serbidores de su fediversu ant a aparèssere in sa lìnia de tempus federada.", + "introduction.federation.home.headline": "Printzipale", + "introduction.federation.home.text": "Is messàgios de gente chi sighis ant a aparèssere in lìnia de tempus printzipale tua. Podes sighire gente de cale si siat serbidore.", + "introduction.federation.local.headline": "Locale", + "introduction.federation.local.text": "Is publicatziones pùblicas de sa gente de su pròpiu serbidore tuo ant a aparèssere in sa lìnia de tempus locale.", + "introduction.interactions.action": "Acabba su tutoriale!", + "introduction.interactions.favourite.headline": "Preferidos", + "introduction.interactions.favourite.text": "Podes sarvare unu tut pro ddu lèghere prus tardu, e fàghere ischire a chie dd'apat iscritu chi t'est pràghidu marchende·ddu comente a preferidu.", + "introduction.interactions.reblog.headline": "Cumpartzi", + "introduction.interactions.reblog.text": "Cun is cumpartziduras podes fàghere connòschere tuts de àtera gente a chie ti sighit.", + "introduction.interactions.reply.headline": "Risponde", + "introduction.interactions.reply.text": "Podes rispòndere a is tuts de àtera gente e a is tuos pròpios, e ant a èssere unidos in un'arresonada.", + "introduction.welcome.action": "Ajò, andamus!", + "introduction.welcome.headline": "Primos passos", + "introduction.welcome.text": "Ti donamus sa benebènnida a su fediversu. Dae immoe a pagu, as a pòdere publicare messàgios e chistionare cun is amistades tuas in meda serbidores. Però custu serbidore, {domain}, est ispetziale: allògiat su profilu tuo, duncas regorda·nde si nòmine.", + "keyboard_shortcuts.back": "pro navigare in segus", + "keyboard_shortcuts.blocked": "pro abèrrere sa lista de persones blocadas", + "keyboard_shortcuts.boost": "pro cumpartzire", + "keyboard_shortcuts.column": "pro atzentrare un'istadu in una de is colunnas", + "keyboard_shortcuts.compose": "pro atzentrare in s'àrea de cumpositzione de testu", + "keyboard_shortcuts.description": "Descritzione", + "keyboard_shortcuts.direct": "pro abèrrere sa colunna de messàgios diretos", + "keyboard_shortcuts.down": "pro mòere in bàsciu in sa lista", + "keyboard_shortcuts.enter": "pro abèrrere s'istadu", + "keyboard_shortcuts.favourite": "pro marcare comente a preferidu", + "keyboard_shortcuts.favourites": "pro abèrrere sa lista de preferidos", + "keyboard_shortcuts.federated": "pro abèrrere sa lìnia de tempus federada", + "keyboard_shortcuts.heading": "Incurtzaduras de tecladu", + "keyboard_shortcuts.home": "pro abèrrere sa lìnia de tempus printzipale", + "keyboard_shortcuts.hotkey": "Tecla de atzessu diretu", + "keyboard_shortcuts.legend": "pro ammustrare custa didascalia", + "keyboard_shortcuts.local": "pro abèrrere sa lìnia de tempus locale", + "keyboard_shortcuts.mention": "pro mentovare s'atributzione", + "keyboard_shortcuts.muted": "pro abèrrere sa lista de persones a sa muda", + "keyboard_shortcuts.my_profile": "pro abèrrere su profilu tuo", + "keyboard_shortcuts.notifications": "pro abèrrere sa colunna de notificatziones", + "keyboard_shortcuts.open_media": "pro abèrrere mèdia", + "keyboard_shortcuts.pinned": "pro abèrrere lista de tuts apicados", + "keyboard_shortcuts.profile": "pro abèrrere su profilu de s'autore", + "keyboard_shortcuts.reply": "pro rispòndere", + "keyboard_shortcuts.requests": "pro abèrrere sa lista de rechestas de sighidura", + "keyboard_shortcuts.search": "pro atzentrare sa chirca", + "keyboard_shortcuts.start": "pro abèrrere sa colunna \"Cumintza\"", + "keyboard_shortcuts.toggle_hidden": "pro ammustrare o cuare testu de is CW", + "keyboard_shortcuts.toggle_sensitivity": "pro ammustrare o cuare mèdias", + "keyboard_shortcuts.toot": "pro cumintzare a iscrìere unu tut nou", + "keyboard_shortcuts.unfocus": "pro essire de s'àrea de cumpositzione de testu o de chirca", + "keyboard_shortcuts.up": "pro mòere in susu in sa lista", + "lightbox.close": "Serra", + "lightbox.next": "Sighi", + "lightbox.previous": "Pretzedente", + "lightbox.view_context": "Bide su cuntestu", + "lists.account.add": "Agiùnghe a sa lista", + "lists.account.remove": "Boga dae sa lista", + "lists.delete": "Cantzella sa lista", + "lists.edit": "Modìfica sa lista", + "lists.edit.submit": "Muda su tìtulu", + "lists.new.create": "Agiunghe lista", + "lists.new.title_placeholder": "Lista noa", + "lists.search": "Chircare intre sa gente chi ses sighende", + "lists.subheading": "Is listas tuas", + "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}", + "loading_indicator.label": "Carrighende...", + "media_gallery.toggle_visible": "Cua mèdia", + "missing_indicator.label": "Perunu resurtadu", + "missing_indicator.sublabel": "Resursa no agatada", + "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?", + "navigation_bar.apps": "Aplicatziones mòbiles", + "navigation_bar.blocks": "Persones blocadas", + "navigation_bar.bookmarks": "Marcadores", + "navigation_bar.community_timeline": "Lìnia de tempus locale", + "navigation_bar.compose": "Cumpone unu tut nou", + "navigation_bar.direct": "Messàgios diretos", + "navigation_bar.discover": "Iscoberi", + "navigation_bar.domain_blocks": "Domìnios blocados", + "navigation_bar.edit_profile": "Modìfica profilu", + "navigation_bar.favourites": "Preferidos", + "navigation_bar.filters": "Paràulas a sa muda", + "navigation_bar.follow_requests": "Rechestas de sighidura", + "navigation_bar.follows_and_followers": "Persones chi sighis e chi ti sighint", + "navigation_bar.info": "Informatziones de su serbidore", + "navigation_bar.keyboard_shortcuts": "Teclas de atzessu diretu", + "navigation_bar.lists": "Listas", + "navigation_bar.logout": "Essi", + "navigation_bar.mutes": "Persones a sa muda", + "navigation_bar.personal": "Informatziones personales", + "navigation_bar.pins": "Tuts apicados", + "navigation_bar.preferences": "Preferèntzias", + "navigation_bar.public_timeline": "Lìnia de tempus federada", + "navigation_bar.security": "Seguresa", + "notification.favourite": "{name} at marcadu s'istadu tuo comente a preferidu", + "notification.follow": "{name} ti sighit", + "notification.follow_request": "{name} at dimandadu de ti sighire", + "notification.mention": "{name} t'at mentovadu", + "notification.own_poll": "Sondàgiu acabbadu", + "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu", + "notification.reblog": "{name} at cumpartzidu s'istadu tuo", + "notifications.clear": "Lìmpia notìficas", + "notifications.clear_confirmation": "Seguru chi boles isboidare in manera permanente totu is notìficas tuas?", + "notifications.column_settings.alert": "Notìficas de iscrivania", + "notifications.column_settings.favourite": "Preferidos:", + "notifications.column_settings.filter_bar.advanced": "Ammustra totu is categorias", + "notifications.column_settings.filter_bar.category": "Barra lestra de filtros", + "notifications.column_settings.filter_bar.show": "Ammustra", + "notifications.column_settings.follow": "Gente noa chi ti sighit:", + "notifications.column_settings.follow_request": "Rechesta de sighidura noa:", + "notifications.column_settings.mention": "Mentovos:", + "notifications.column_settings.poll": "Resurtados de su sondàgiu:", + "notifications.column_settings.push": "Notìficas push", + "notifications.column_settings.reblog": "Cumpartziduras:", + "notifications.column_settings.show": "Ammustra in sa colunna", + "notifications.column_settings.sound": "Reprodue unu sonu", + "notifications.filter.all": "Totus", + "notifications.filter.boosts": "Cumpartziduras", + "notifications.filter.favourites": "Preferidos", + "notifications.filter.follows": "Sighende", + "notifications.filter.mentions": "Mentovos", + "notifications.filter.polls": "Resurtados dae su sondàgiu", + "notifications.group": "{count} notìficas", + "poll.closed": "Serradu", + "poll.refresh": "Atualiza", + "poll.total_people": "{count, plurale, one {# persone} other {# persones}}", + "poll.total_votes": "{count, plurale, one {# votu} other {# votos}}", + "poll.vote": "Vota", + "poll.voted": "As votadu custa risposta", + "poll_button.add_poll": "Agiunghe unu sondàgiu", + "poll_button.remove_poll": "Cantzella su sondàgiu", + "privacy.change": "Acontza s'istadu de riservadesa", + "privacy.direct.long": "Visìbile isceti pro is persones mentovadas", + "privacy.direct.short": "Deretu", + "privacy.private.long": "Visìbile isceti pro chie ti sighit", + "privacy.private.short": "Isceti pro chie ti sighit", + "privacy.public.long": "Visìbile pro chie si siat, ammustra in lìnias de tempus pùblicas", + "privacy.public.short": "Pùblicu", + "privacy.unlisted.long": "Visìbile pro chie si siat, però no ammustres in lìnias de tempus pùblicas", + "privacy.unlisted.short": "Esclùidu de sa lista", + "refresh": "Atualiza", + "regeneration_indicator.label": "Carrighende…", + "regeneration_indicator.sublabel": "Preparende sa lìnia de tempus printzipale tua.", + "relative_time.days": "{number}d", + "relative_time.hours": "{number}h", + "relative_time.just_now": "immoe", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "relative_time.today": "oe", + "reply_indicator.cancel": "Annulla", + "report.forward": "Torra a imbiare a {target}", + "report.forward_hint": "Custu contu est de un'àteru serbidore. Bi boles imbiare puru una còpia anònima de custu informe?", + "report.hint": "S'informe at a èssere imbiadu a sa moderatzione de su serbidore. Podes frunire un'ispiegatzione de sa signalatzione tua de custu contu:", + "report.placeholder": "Cummentos additzionales", + "report.submit": "Imbia", + "report.target": "Informende de {target}", + "search.placeholder": "Chirca", + "search_popout.search_format": "Formadu de chirca avantzada", + "search_popout.tips.full_text": "Testu sèmplitze pro agatare istados chi as iscritu, marcadu comente a preferidos, cumpartzidu o chi t'ant mentovadu, e fintzas nòmines de utente, nòmines visualizados e etichetas chi ddu includent.", + "search_popout.tips.hashtag": "eticheta", + "search_popout.tips.status": "istadu", + "search_popout.tips.text": "Testu sèmplitze pro agatare nòmines visualizados, nòmines de utente e etichetas", + "search_popout.tips.user": "utente", + "search_results.accounts": "Gente", + "search_results.hashtags": "Etichetas", + "search_results.statuses": "Tuts", + "search_results.statuses_fts_disabled": "Sa chirca de tuts pro su cuntenutu issoro no est abilitada in custu serbidore de Mastodon.", + "search_results.total": "{count, number} {count, plurale, one {resurtadu} other {resurtados}}", + "status.admin_account": "Aberi s'interfache de moderatzione pro @{name}", + "status.admin_status": "Aberi custu istadu in s'interfache de moderatzione", + "status.block": "Bloca @{name}", + "status.bookmark": "Marcadore", + "status.cancel_reblog_private": "Iscontza sa cumpartzidura", + "status.cannot_reblog": "Custa publicatzione non podet èssere cumpartzida", + "status.copy": "Còpia su ligàmene a s'istadu tuo", + "status.delete": "Cantzella", + "status.detailed_status": "Visualizatzione de detàlliu de arresonada", + "status.direct": "Messàgiu deretu a @{name}", + "status.embed": "Afissa", + "status.favourite": "Preferidos", + "status.filtered": "Filtradu", + "status.load_more": "Càrriga·nde àteros", + "status.media_hidden": "Mèdias cuados", + "status.mention": "Mentova @{name}", + "status.more": "Àteru", + "status.mute": "Pone @name a sa muda", + "status.mute_conversation": "Pone s'arresonada a sa muda", + "status.open": "Ismànnia custu istadu", + "status.pin": "Apica in su profilu", + "status.pinned": "Tut apicadu", + "status.read_more": "Lèghe·nde àteru", + "status.reblog": "Cumpartzi", + "status.reblog_private": "Cumpartzi cun is utentes originales", + "status.reblogged_by": "{name} at cumpartzidu", + "status.reblogs.empty": "No one has boosted this toot yet. Cando calicunu dd'at a fàghere, at a èssere ammustradu inoghe.", + "status.redraft": "Cantzella e torra a iscrìere", + "status.remove_bookmark": "Boga su marcadore", + "status.reply": "Risponde", + "status.replyAll": "Risponde a su tema", + "status.report": "Signala @{name}", + "status.sensitive_warning": "Cuntenutu sensìbile", + "status.share": "Cumpartzi", + "status.show_less": "Ammustra·nde prus pagu", + "status.show_less_all": "Ammustra·nde prus pagu pro totus", + "status.show_more": "Ammustra·nde prus", + "status.show_more_all": "Ammustra·nde prus pro totus", + "status.show_thread": "Ammustra su tema", + "status.uncached_media_warning": "No est a disponimentu", + "status.unmute_conversation": "Torra a ativare s'arresonada", + "status.unpin": "Isbloca dae pitzu de su profilu", + "suggestions.dismiss": "Iscarta cussìgiu", + "suggestions.header": "Est possìbile chi tèngias interessu in…", + "tabs_bar.federated_timeline": "Federada", + "tabs_bar.home": "Printzipale", + "tabs_bar.local_timeline": "Locale", + "tabs_bar.notifications": "Notìficas", + "tabs_bar.search": "Chirca", + "time_remaining.days": "{number, plural, one {abarrat # die} other {abarrant # dies}}", + "time_remaining.hours": "{number, plural, one {abarrat # ora} other {abarrant # oras}}", + "time_remaining.minutes": "{number, plural, one {abarrat # minutu} other {abarrant # minutos}}", + "time_remaining.moments": "Abarrant pagu momentos", + "time_remaining.seconds": "{number, plural, one {abarrat # segundu} other {abarrant # segundos}}", + "trends.count_by_accounts": "{count} {rawCount, plural, one {persone} other {persones}} nde sunt chistionende", + "trends.trending_now": "Est tendèntzia immoe", + "ui.beforeunload": "S'abbotzu tuo at a èssere pèrdidu si essis dae Mastodon.", + "upload_area.title": "Traga pro carrigare", + "upload_button.label": "Agiunghe mèdias ({formats})", + "upload_error.limit": "Lìmite de càrriga de archìvios barigadu.", + "upload_error.poll": "Non si permitit s'imbiu de archìvios in is sondàgios.", + "upload_form.audio_description": "Descritzione pro persones cun pèrdida auditiva", + "upload_form.description": "Descritzione pro persones cun problemas visuales", + "upload_form.edit": "Modìfica", + "upload_form.undo": "Cantzella", + "upload_form.video_description": "Descritzione pro persones cun pèrdida auditiva o problemas visuales", + "upload_modal.analyzing_picture": "Analizende immàgine…", + "upload_modal.apply": "Àplica", + "upload_modal.description_placeholder": "Su margiane castàngiu brincat lestru a subra de su cane mandrone", + "upload_modal.detect_text": "Rileva testu de s'immàgine", + "upload_modal.edit_media": "Modìfica su mèdia", + "upload_modal.hint": "Incarca o traga su tzìrculu in sa previsualizatzione pro seberare su puntu focale chi at a èssere semper visìbile in totu is miniaturas.", + "upload_modal.preview_label": "Previsualiza ({ratio})", + "upload_progress.label": "Carrighende...", + "video.close": "Serra su vìdeu", + "video.download": "Iscàrriga archìviu", + "video.exit_fullscreen": "Essi de ischermu in mannària prena", + "video.expand": "Ismànnia su vìdeu", + "video.fullscreen": "Ischermu in mannària prena", + "video.hide": "Cua vìdeu", + "video.mute": "A sa muda", + "video.pause": "Pàusa", + "video.play": "Reprodue", + "video.unmute": "Ativa sonu" +} diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 819496911..ec34bb29e 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -28,7 +28,7 @@ "account.muted": "Utíšený/á", "account.never_active": "Nikdy", "account.posts": "Príspevkov", - "account.posts_with_replies": "Príspevky aj s odpoveďami", + "account.posts_with_replies": "Príspevky, aj s odpoveďami", "account.report": "Nahlás @{name}", "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti", "account.share": "Zdieľaj @{name} profil", @@ -74,7 +74,9 @@ "column_header.show_settings": "Ukáž nastavenia", "column_header.unpin": "Odopni", "column_subheading.settings": "Nastavenia", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Iba médiá", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Tento príspevok bude boslaný iba spomenutým užívateľom.", "compose_form.direct_message_warning_learn_more": "Zisti viac", "compose_form.hashtag_warning": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Nahlás problém", "follow_request.authorize": "Povoľ prístup", "follow_request.reject": "Odmietni", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Vývojári", "getting_started.directory": "Zoznam profilov", "getting_started.documentation": "Dokumentácia", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index dedd4e007..3d8bcc571 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -17,7 +17,7 @@ "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Sledi tebi", "account.hide_reblogs": "Skrij spodbude od @{name}", - "account.last_status": "Last active", + "account.last_status": "Zadnja dejavnost", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", "account.media": "Mediji", @@ -26,7 +26,7 @@ "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obvestila od @{name}", "account.muted": "Utišan", - "account.never_active": "Never", + "account.never_active": "Nikoli", "account.posts": "Tuti", "account.posts_with_replies": "Tuti in odgovori", "account.report": "Prijavi @{name}", @@ -74,7 +74,9 @@ "column_header.show_settings": "Prikaži nastavitve", "column_header.unpin": "Odpni", "column_subheading.settings": "Nastavitve", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Samo mediji", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.", "compose_form.direct_message_warning_learn_more": "Nauči se več", "compose_form.hashtag_warning": "Ta tut ne bo naveden pod nobenim ključnikom, ker ni javen. Samo javne tute lahko iščete s ključniki.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Razvijalci", "getting_started.directory": "Imenik profilov", "getting_started.documentation": "Dokumentacija", @@ -335,7 +338,7 @@ "relative_time.just_now": "zdaj", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "danes", "reply_indicator.cancel": "Prekliči", "report.forward": "Posreduj do {target}", "report.forward_hint": "Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik?", @@ -423,7 +426,7 @@ "upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.apply": "Apply", - "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.description_placeholder": "Pri Jakcu bom vzel šest čudežnih fig", "upload_modal.detect_text": "Detect text from picture", "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 2d1f1c64d..8626b9ce7 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,11 +1,11 @@ { "account.add_or_remove_from_list": "Shtoni ose Hiqni prej listash", "account.badges.bot": "Robot", - "account.badges.group": "Group", + "account.badges.group": "Grup", "account.block": "Blloko @{name}", "account.block_domain": "Fshih gjithçka prej {domain}", "account.blocked": "E bllokuar", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Anulo kërkesën e ndjekjes", "account.direct": "Mesazh i drejtpërdrejt për @{name}", "account.domain_blocked": "Përkatësi e fshehur", "account.edit_profile": "Përpunoni profilin", @@ -17,7 +17,7 @@ "account.follows.empty": "Ky përdorues ende s’ndjek njeri.", "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", - "account.last_status": "Last active", + "account.last_status": "Së fundi aktiv", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", "account.media": "Media", @@ -26,25 +26,25 @@ "account.mute": "Heshtoni @{name}", "account.mute_notifications": "Heshtoji njoftimet prej @{name}", "account.muted": "Heshtuar", - "account.never_active": "Never", + "account.never_active": "Asnjëherë", "account.posts": "Mesazhe", "account.posts_with_replies": "Mesazhe dhe përgjigje", - "account.report": "Raportojeni @{name}", - "account.requested": "Në pritje të miratimit. Klikoni që të anulohet kërkesa për ndjekje", + "account.report": "Raporto @{name}", + "account.requested": "Në pritje të pranimit. Klikoni që të anulosh kërkesën për ndjekje", "account.share": "Ndajeni profilin e @{name} me të tjerët", "account.show_reblogs": "Shfaq përforcime nga @{name}", - "account.unblock": "Zhbllokoje @{name}", - "account.unblock_domain": "Shfshihe {domain}", + "account.unblock": "Ç'bllokoje @{name}", + "account.unblock_domain": "Ç'blloko {domain}", "account.unendorse": "Mos e përfshi në profil", - "account.unfollow": "Resht së ndjekuri", + "account.unfollow": "Mos e ndjek", "account.unmute": "Ktheji zërin @{name}", "account.unmute_notifications": "Hiqua ndalimin e shfaqjes njoftimeve nga @{name}", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", + "alert.rate_limited.message": "Ju lutemi provoni pas {retry_time, time, medium}.", + "alert.rate_limited.title": "Sasi e kufizuar", "alert.unexpected.message": "Ndodhi një gabim të papritur.", "alert.unexpected.title": "Hëm!", - "announcement.announcement": "Announcement", - "autosuggest_hashtag.per_week": "{count} per week", + "announcement.announcement": "Njoftime", + "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Mund të shtypni {combo}, që të anashkalohet kjo herës tjetër", "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_column_error.retry": "Riprovoni", @@ -53,10 +53,10 @@ "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", "column.blocks": "Përdorues të bllokuar", - "column.bookmarks": "Bookmarks", + "column.bookmarks": "Shënjimet", "column.community": "Rrjedhë kohore vendore", "column.direct": "Mesazhe të drejtpërdrejta", - "column.directory": "Browse profiles", + "column.directory": "Shfleto profile", "column.domain_blocks": "Përkatësi të fshehura", "column.favourites": "Të parapëlqyer", "column.follow_requests": "Kërkesa për ndjekje", @@ -74,29 +74,31 @@ "column_header.show_settings": "Shfaq rregullime", "column_header.unpin": "Shfiksoje", "column_subheading.settings": "Rregullime", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Vetëm Media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Ky mesazh do t’u dërgohet përdoruesve të përmendur.", "compose_form.direct_message_warning_learn_more": "Mësoni më tepër", "compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.", "compose_form.lock_disclaimer": "Llogaria juaj s’është {locked}. Mund ta ndjekë cilido, për të parë postimet tuaja vetëm për ndjekësit.", "compose_form.lock_disclaimer.lock": "e bllokuar", "compose_form.placeholder": "Ç’bluani në mendje?", - "compose_form.poll.add_option": "Add a choice", - "compose_form.poll.duration": "Poll duration", - "compose_form.poll.option_placeholder": "Choice {number}", - "compose_form.poll.remove_option": "Remove this choice", - "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", - "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.poll.add_option": "Shto zgjedhje", + "compose_form.poll.duration": "Kohëzgjatja e votimit", + "compose_form.poll.option_placeholder": "Zgjedhja {number}", + "compose_form.poll.remove_option": "Largo këtë zgjedhje", + "compose_form.poll.switch_to_multiple": "Ndrysho votimin për të lejuar shumë zgjedhje", + "compose_form.poll.switch_to_single": "Ndrysho votimin për të lejuar vetëm një zgjedhje", "compose_form.publish": "Mesazh", "compose_form.publish_loud": "{publish}!", - "compose_form.sensitive.hide": "Mark media as sensitive", + "compose_form.sensitive.hide": "Lajmëro media si sensitive", "compose_form.sensitive.marked": "Media është shënuar si rezervat", "compose_form.sensitive.unmarked": "Media s’është shënuar si rezervat", "compose_form.spoiler.marked": "Teksti është fshehur pas sinjalizimit", "compose_form.spoiler.unmarked": "Teksti s’është i fshehur", "compose_form.spoiler_placeholder": "Shkruani këtu sinjalizimin tuaj", "confirmation_modal.cancel": "Anuloje", - "confirmations.block.block_and_report": "Block & Report", + "confirmations.block.block_and_report": "Ndalo dhe Raporto", "confirmations.block.confirm": "Bllokoje", "confirmations.block.message": "Jeni i sigurt se doni të bllokohet {name}?", "confirmations.delete.confirm": "Fshije", @@ -105,10 +107,10 @@ "confirmations.delete_list.message": "Jeni i sigurt që doni të fshihet përgjithmonë kjo listë?", "confirmations.domain_block.confirm": "Fshih krejt përkatësinë", "confirmations.domain_block.message": "Jeni i sigurt, shumë i sigurt se doni të bllokohet krejt {domain}? Në shumicën e rasteve, ndoca bllokime ose heshtime me synim të caktuar janë të mjaftueshme dhe të parapëlqyera. S’keni për të parë lëndë nga kjo përkatësi në ndonjë rrjedhë kohore publike, apo te njoftimet tuaja. Ndjekësit tuaj prej asaj përkatësie do të hiqen.", - "confirmations.logout.confirm": "Log out", - "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.logout.confirm": "Ç'kyçu", + "confirmations.logout.message": "A jeni të sigurt se dëshironi të ç'kyçeni?", "confirmations.mute.confirm": "Heshtoje", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "Kjo do të fsheh postimet nga ata dhe postimet që përmendin ata, megjithatë ende do ti lejojë ata që të shohin postimet e juaja dhe të ju ndjekin.", "confirmations.mute.message": "Jeni i sigurt se doni të heshtohet {name}?", "confirmations.redraft.confirm": "Fshijeni & rihartojeni", "confirmations.redraft.message": "Jeni i sigurt se doni të fshihet kjo gjendje dhe të rihartohet? Parapëlqimet dhe boosts do të humbin, ndërsa përgjigjet te postimi origjinal do të bëhen jetime.", @@ -116,14 +118,14 @@ "confirmations.reply.message": "Përgjigja tani do të shkaktojë mbishkrimin e mesazhit që po hartoni. Jeni i sigurt se doni të vazhdohet më tej?", "confirmations.unfollow.confirm": "Resht së ndjekuri", "confirmations.unfollow.message": "Jeni i sigurt se doni të mos ndiqet më {name}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "conversation.delete": "Fshijë bisedën", + "conversation.mark_as_read": "Shëno si të lexuar", + "conversation.open": "Shfaq bisedën", + "conversation.with": "Me {names}", + "directory.federated": "Nga fediversa e njohur", + "directory.local": "Vetëm nga {domain}", + "directory.new_arrivals": "Arritje të reja", + "directory.recently_active": "Aktive së fundi", "embed.instructions": "Trupëzojeni këtë gjendje në sajtin tuaj duke kopjuar kodin më poshtë.", "embed.preview": "Ja si do të duket:", "emoji_button.activity": "Veprimtari", @@ -141,9 +143,9 @@ "emoji_button.symbols": "Simbole", "emoji_button.travel": "Udhëtime & Vende", "empty_column.account_timeline": "S’ka mesazhe këtu!", - "empty_column.account_unavailable": "Profile unavailable", + "empty_column.account_unavailable": "Profil i pa arritshëm", "empty_column.blocks": "S’keni bllokuar ende ndonjë përdorues.", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "empty_column.bookmarked_statuses": "Nuk keni ndonjë Cicërimë të shënjuar. Kur të shënjoni ndonjë, do të shfaqet këtu.", "empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që t’i hyhet valles!", "empty_column.direct": "S’keni ende ndonjë mesazh të drejtpërdrejt. Kur dërgoni ose merrni një të tillë, ai do të shfaqet këtu.", "empty_column.domain_blocks": "Ende s’ka përkatësi të fshehura.", @@ -158,12 +160,13 @@ "empty_column.mutes": "S’keni heshtuar ende ndonjë përdorues.", "empty_column.notifications": "Ende s’keni ndonjë njoftim. Ndërveproni me të tjerët që të nisë biseda.", "empty_column.public": "S’ka gjë këtu! Shkruani diçka publikisht, ose ndiqni dorazi përdorues prej instancash të tjera, që ta mbushni këtë zonë", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "error.unexpected_crash.explanation": "Për shkak të një gabimi në kodin burimor ose dështimi të shfletuesit, kjo faqe nuk mund të prezentohet saktësisht.", + "error.unexpected_crash.next_steps": "Provoni të freskoni faqen. Nëse kjo nuk ju ndihmon, mund të përdorni Mastodon nga një shfletues tjetër ose nga ndonjë aplikacion.", + "errors.unexpected_crash.copy_stacktrace": "Kopjo vëzhgimin stack në clipboard", + "errors.unexpected_crash.report_issue": "Raporto çështje", "follow_request.authorize": "Autorizoje", "follow_request.reject": "Hidhe tej", + "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj nuk është e ndaluar, ekipi {domain} mendon se ju duhett të rishikoni manualisht kërkesat për ndiqje nga këto llogari.", "getting_started.developers": "Zhvillues", "getting_started.directory": "Drejtori profilesh", "getting_started.documentation": "Dokumentim", @@ -175,8 +178,8 @@ "hashtag.column_header.tag_mode.all": "dhe {additional}", "hashtag.column_header.tag_mode.any": "ose {additional}", "hashtag.column_header.tag_mode.none": "pa {additional}", - "hashtag.column_settings.select.no_options_message": "No suggestions found", - "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.select.no_options_message": "Nuk gjetëm sygjerime", + "hashtag.column_settings.select.placeholder": "Shëno hashtags…", "hashtag.column_settings.tag_mode.all": "Krejt këto", "hashtag.column_settings.tag_mode.any": "Cilëndo prej këtyre", "hashtag.column_settings.tag_mode.none": "Asnjë prej këtyre", @@ -184,11 +187,11 @@ "home.column_settings.basic": "Bazë", "home.column_settings.show_reblogs": "Shfaq përforcime", "home.column_settings.show_replies": "Shfaq përgjigje", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", - "intervals.full.days": "{number, plural, one {# day} other {# days}}", - "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", - "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "home.hide_announcements": "Fsheh lajmërimet", + "home.show_announcements": "Shfaq lajmërimet", + "intervals.full.days": "{number, plural,one { ditë }other { ditë }}", + "intervals.full.hours": "{number, plural,one { orë }other {# orë }}", + "intervals.full.minutes": "{number, plural,one { minuta }other {# minuta }}", "introduction.federation.action": "Pasuesi", "introduction.federation.federated.headline": "Të federuara", "introduction.federation.federated.text": "Postimet publike nga shërbyes të tjerë të fediversit do të shfaqen te rrjedha kohore e të federuarve.", @@ -227,7 +230,7 @@ "keyboard_shortcuts.muted": "për hapje liste përdoruesish të heshtuar", "keyboard_shortcuts.my_profile": "për hapjen e profilit tuaj", "keyboard_shortcuts.notifications": "për hapje shtylle njoftimesh", - "keyboard_shortcuts.open_media": "to open media", + "keyboard_shortcuts.open_media": "për të hapur media", "keyboard_shortcuts.pinned": "për hapje liste mesazhesh të fiksuar", "keyboard_shortcuts.profile": "për hapje të profilit të autorit", "keyboard_shortcuts.reply": "për t’u përgjigjur", @@ -235,24 +238,24 @@ "keyboard_shortcuts.search": "për kalim fokusi te kërkimi", "keyboard_shortcuts.start": "për hapjen e shtyllës \"fillojani\"", "keyboard_shortcuts.toggle_hidden": "për shfaqje/fshehje teksti pas CW", - "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", + "keyboard_shortcuts.toggle_sensitivity": "për të shfaqur/të fshehur media", "keyboard_shortcuts.toot": "për të filluar një mesazh fringo të ri", "keyboard_shortcuts.unfocus": "për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve", "keyboard_shortcuts.up": "për ngjitje sipër nëpër listë", "lightbox.close": "Mbylle", "lightbox.next": "Pasuesja", "lightbox.previous": "E mëparshmja", - "lightbox.view_context": "View context", + "lightbox.view_context": "Shfaq kontekst", "lists.account.add": "Shto në listë", "lists.account.remove": "Hiqe nga lista", "lists.delete": "Fshije listën", "lists.edit": "Përpunoni listën", - "lists.edit.submit": "Change title", + "lists.edit.submit": "Ndrysho titullin", "lists.new.create": "Shtoni listë", "lists.new.title_placeholder": "Titull liste të re", "lists.search": "Kërkoni mes personash që ndiqni", "lists.subheading": "Listat tuaja", - "load_pending": "{count, plural, one {# new item} other {# new items}}", + "load_pending": "{count, plural,one {# artikull i ri }other {# artikuj të ri }}", "loading_indicator.label": "Po ngarkohet…", "media_gallery.toggle_visible": "Ndërroni dukshmërinë", "missing_indicator.label": "S’u gjet", @@ -260,7 +263,7 @@ "mute_modal.hide_notifications": "Të fshihen njoftimet prej këtij përdoruesi?", "navigation_bar.apps": "Aplikacione për celular", "navigation_bar.blocks": "Përdorues të bllokuar", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Shënjimet", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", "navigation_bar.compose": "Hartoni mesazh të ri", "navigation_bar.direct": "Mesazhe të drejtpërdrejta", @@ -270,7 +273,7 @@ "navigation_bar.favourites": "Të parapëlqyer", "navigation_bar.filters": "Fjalë të heshtuara", "navigation_bar.follow_requests": "Kërkesa për ndjekje", - "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.follows_and_followers": "Ndjek dhe ndjekësit", "navigation_bar.info": "Mbi këtë shërbyes", "navigation_bar.keyboard_shortcuts": "Taste përkatës", "navigation_bar.lists": "Lista", @@ -283,10 +286,10 @@ "navigation_bar.security": "Siguri", "notification.favourite": "{name} parapëlqeu gjendjen tuaj", "notification.follow": "{name} zuri t’ju ndjekë", - "notification.follow_request": "{name} has requested to follow you", + "notification.follow_request": "{name} kërkoji që të ju ndiq", "notification.mention": "{name} ju ka përmendur", - "notification.own_poll": "Your poll has ended", - "notification.poll": "A poll you have voted in has ended", + "notification.own_poll": "Votimi juaj mbaroi", + "notification.poll": "Votimi që nisët tanimë ka mbaruar", "notification.reblog": "{name} përforcoi gjendjen tuaj", "notifications.clear": "Pastroji njoftimet", "notifications.clear_confirmation": "Jeni i sigurt se doni të pastrohen përgjithmonë krejt njoftimet tuaja?", @@ -296,9 +299,9 @@ "notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta", "notifications.column_settings.filter_bar.show": "Shfaq", "notifications.column_settings.follow": "Ndjekës të rinj:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow_request": "Kërkesat e reja për ndjekje:", "notifications.column_settings.mention": "Përmendje:", - "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.poll": "Rezultatet e votimit:", "notifications.column_settings.push": "Njoftime Push", "notifications.column_settings.reblog": "Përforcime:", "notifications.column_settings.show": "Shfaq në shtylla", @@ -308,16 +311,16 @@ "notifications.filter.favourites": "Të parapëlqyer", "notifications.filter.follows": "Ndjekje", "notifications.filter.mentions": "Përmendje", - "notifications.filter.polls": "Poll results", + "notifications.filter.polls": "Rezultatet e votimit", "notifications.group": "{count}s njoftime", - "poll.closed": "Closed", - "poll.refresh": "Refresh", - "poll.total_people": "{count, plural, one {# person} other {# people}}", - "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", - "poll.vote": "Vote", - "poll.voted": "You voted for this answer", - "poll_button.add_poll": "Add a poll", - "poll_button.remove_poll": "Remove poll", + "poll.closed": "Mbyllur", + "poll.refresh": "Rifresko", + "poll.total_people": "{count, plural,one {# person }other {# njerëz }}", + "poll.total_votes": "{count, plural,one {# votë }other {# votat }}", + "poll.vote": "Voto", + "poll.voted": "Ju votuat për këtë pyetje", + "poll_button.add_poll": "Shto votim", + "poll_button.remove_poll": "Fshij votim", "privacy.change": "Rregulloni privatësi gjendje", "privacy.direct.long": "Postoja vetëm përdoruesve të përmendur", "privacy.direct.short": "I drejtpërdrejtë", @@ -327,15 +330,15 @@ "privacy.public.short": "Publike", "privacy.unlisted.long": "Mos e postoni në rrjedha publike kohore", "privacy.unlisted.short": "Jo në lista", - "refresh": "Refresh", + "refresh": "Rifresko", "regeneration_indicator.label": "Po ngarkohet…", "regeneration_indicator.sublabel": "Prurja juaj vetjake po përgatiteet!", "relative_time.days": "{number}d", - "relative_time.hours": "{number}h", + "relative_time.hours": "{number}o", "relative_time.just_now": "tani", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "sot", "reply_indicator.cancel": "Anuloje", "report.forward": "Përcillja {target}", "report.forward_hint": "Llogaria është nga një shërbyes tjetër. Të dërgohet edhe një kopje e anonimizuar e raportimit?", @@ -353,12 +356,12 @@ "search_results.accounts": "Persona", "search_results.hashtags": "Hashtagë", "search_results.statuses": "Mesazhe", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.statuses_fts_disabled": "Kërkimi cicërimave në bazë të përmbajtjes nuk është e aktivizuar në këtë server Mastodon.", "search_results.total": "{count, number} {count, plural, një {result} {results} të tjera}", "status.admin_account": "Hap ndërfaqe moderimi për @{name}", "status.admin_status": "Hape këtë gjendje te ndërfaqja e moderimit", "status.block": "Blloko @{name}", - "status.bookmark": "Bookmark", + "status.bookmark": "Shënjim", "status.cancel_reblog_private": "Shpërforcojeni", "status.cannot_reblog": "Ky postim s’mund të përforcohet", "status.copy": "Kopjoje lidhjen te gjendje", @@ -383,7 +386,7 @@ "status.reblogged_by": "{name} përforcoi", "status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.", "status.redraft": "Fshijeni & rihartojeni", - "status.remove_bookmark": "Remove bookmark", + "status.remove_bookmark": "Largo shënjimin", "status.reply": "Përgjigjuni", "status.replyAll": "Përgjigjuni rrjedhës", "status.report": "Raportojeni @{name}", @@ -394,7 +397,7 @@ "status.show_more": "Shfaq më tepër", "status.show_more_all": "Shfaq më tepër për të tërë", "status.show_thread": "Shfaq rrjedhën", - "status.uncached_media_warning": "Not available", + "status.uncached_media_warning": "I padisponueshëm", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", "suggestions.dismiss": "Mos e merr parasysh sugjerimin", @@ -404,33 +407,33 @@ "tabs_bar.local_timeline": "Vendore", "tabs_bar.notifications": "Njoftime", "tabs_bar.search": "Kërkim", - "time_remaining.days": "{number, plural, one {# day} other {# days}} left", - "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", - "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", - "time_remaining.moments": "Moments remaining", - "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "time_remaining.days": "{number, plural,one {# ditë}other {# ditëve}} të mbetur", + "time_remaining.hours": "{number, plural,one {# orë}other {# orëve}} mbetur", + "time_remaining.minutes": "{number, plural,one {# minutë}other {# minuta}} mbetur", + "time_remaining.moments": "Momente të mbetura", + "time_remaining.seconds": "{number, plural,one {# sekond}other {# sekonda}} mbetur", "trends.count_by_accounts": "{count} {rawCount, plural, një {person} {people} të tjerë} po flasin", - "trends.trending_now": "Trending now", + "trends.trending_now": "Në trend", "ui.beforeunload": "Skica juaj do të humbë nëse dilni nga Mastodon-i.", "upload_area.title": "Merreni & vëreni që të ngarkohet", "upload_button.label": "Shtoni media (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_error.limit": "U tejkalua kufi ngarkimi kartelash.", - "upload_error.poll": "File upload not allowed with polls.", - "upload_form.audio_description": "Describe for people with hearing loss", + "upload_error.poll": "Ngarkimi dokumenteve nuk lejohet në votime.", + "upload_form.audio_description": "Shpjego për njerëzit me ndëgjim të kufizuar", "upload_form.description": "Përshkruajeni për persona me probleme shikimi", - "upload_form.edit": "Edit", + "upload_form.edit": "Modifiko", "upload_form.undo": "Fshije", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", - "upload_modal.analyzing_picture": "Analyzing picture…", - "upload_modal.apply": "Apply", + "upload_form.video_description": "Shpjego për njerëzit me ndëgjim të kufizuar ose probleme me të pamurit", + "upload_modal.analyzing_picture": "Duke analizuar fotografinë…", + "upload_modal.apply": "Zbato", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", - "upload_modal.detect_text": "Detect text from picture", - "upload_modal.edit_media": "Edit media", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", - "upload_modal.preview_label": "Preview ({ratio})", + "upload_modal.detect_text": "Detekto tekstin nga fotografia", + "upload_modal.edit_media": "Modifiko media", + "upload_modal.hint": "Kliko ose zhvendos rrethin në shfaqjen e cila do të jetë pika fokusit dhe shfaqet në gjithë tablot.", + "upload_modal.preview_label": "Shiko paraprakisht ({ratio})", "upload_progress.label": "Po ngarkohet…", "video.close": "Mbylle videon", - "video.download": "Download file", + "video.download": "Shkarko të dhënë", "video.exit_fullscreen": "Dil nga mënyra Sa Krejt Ekrani", "video.expand": "Zgjeroje videon", "video.fullscreen": "Sa krejt ekrani", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index ddeca47a6..d1b4ee7ec 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Prikaži postavke", "column_header.unpin": "Otkači", "column_subheading.settings": "Postavke", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "This toot will only be visible 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.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "Odobri", "follow_request.reject": "Odbij", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "Profile directory", "getting_started.documentation": "Documentation", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index b50cc611c..277ef356f 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Прикажи поставке", "column_header.unpin": "Откачи", "column_subheading.settings": "Поставке", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Само Медији", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Ова труба ће бити послата споменутим корисницима.", "compose_form.direct_message_warning_learn_more": "Сазнајте више", "compose_form.hashtag_warning": "Ова труба неће бити излистана под било којом тарабом јер је сакривена. Само јавне трубе могу бити претражене тарабом.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Пријави проблем", "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Програмери", "getting_started.directory": "Профил фасцикле", "getting_started.documentation": "Документација", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 763dae5ef..c83ede5bc 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Visa inställningar", "column_header.unpin": "Ångra fäst", "column_subheading.settings": "Inställningar", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Endast media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Denna tutning kommer endast skickas till de nämnda användarna.", "compose_form.direct_message_warning_learn_more": "Lär dig mer", "compose_form.hashtag_warning": "Denna toot kommer inte att visas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Rapportera problem", "follow_request.authorize": "Godkänn", "follow_request.reject": "Avvisa", + "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.", "getting_started.developers": "Utvecklare", "getting_started.directory": "Profilkatalog", "getting_started.documentation": "Dokumentation", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 003dfaf3b..22d24639f 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -66,7 +66,7 @@ "column.notifications": "அறிவிப்புகள்", "column.pins": "பொருத்தப்பட்ட டூட்டுகள்", "column.public": "ஆலமரத்தில் நிகழ்பவை", - "column_back_button.label": "திரும்பு", + "column_back_button.label": "பின்செல்", "column_header.hide_settings": "அமைப்புகளை மறை", "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்து", "column_header.moveRight_settings": "நெடுவரிசையை வலதுபுறமாக நகர்த்து", @@ -74,7 +74,9 @@ "column_header.show_settings": "அமைப்புகளைக் காட்டு", "column_header.unpin": "கழட்டு", "column_subheading.settings": "அமைப்புகள்", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "படங்கள் மட்டுமே", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "இந்த டூட் இதில் குறிப்பிடப்பட்டுள்ள பயனர்களுக்கு மட்டுமே அனுப்பப்படும்.", "compose_form.direct_message_warning_learn_more": "மேலும் அறிய", "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.", @@ -130,13 +132,13 @@ "emoji_button.custom": "தனிப்பயன்", "emoji_button.flags": "கொடிகள்", "emoji_button.food": "உணவு மற்றும் பானம்", - "emoji_button.label": "குறுப்படங்களை உள்ளிடு", + "emoji_button.label": "எமோஜியை உள்ளிடு", "emoji_button.nature": "இயற்கை", - "emoji_button.not_found": "எமோஜோஸ் இல்லை! (╯°□°)╯︵ ┻━┻", - "emoji_button.objects": "மறுப்ப கூறு", + "emoji_button.not_found": "வேண்டாம் எமோஜோஸ்! (╯°□°)╯︵ ┻━┻", + "emoji_button.objects": "பொருட்கள்", "emoji_button.people": "மக்கள்", - "emoji_button.recent": "அடிக்கடி பயன்படுத்தப்படும்", - "emoji_button.search": "தேடல்...", + "emoji_button.recent": "அடிக்கடி பயன்படுத்தப்படுபவை", + "emoji_button.search": "தேடு...", "emoji_button.search_results": "தேடல் முடிவுகள்", "emoji_button.symbols": "குறியீடுகள்", "emoji_button.travel": "சுற்றுலா மற்றும் இடங்கள்", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "புகாரளி", "follow_request.authorize": "அதிகாரமளி", "follow_request.reject": "விலக்கு", + "follow_requests.unlocked_explanation": "உங்கள் கணக்கு பூட்டப்படவில்லை என்றாலும், இந்தக் கணக்குகளிலிருந்து உங்களைப் பின்தொடர விரும்பும் கோரிக்கைகளை நீங்கள் பரீசீலிப்பது நலம் என்று {domain} ஊழியர் எண்ணுகிறார்.", "getting_started.developers": "உருவாக்குநர்கள்", "getting_started.directory": "சுயவிவர அடைவு", "getting_started.documentation": "ஆவணங்கள்", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 904f62684..031d1fad7 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -74,7 +74,9 @@ "column_header.show_settings": "అమర్పులను చూపించు", "column_header.unpin": "పీకివేయు", "column_subheading.settings": "అమర్పులు", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "మీడియా మాత్రమే", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "ఈ టూట్ పేర్కొన్న వినియోగదారులకు మాత్రమే పంపబడుతుంది.", "compose_form.direct_message_warning_learn_more": "మరింత తెలుసుకోండి", "compose_form.hashtag_warning": "ఈ టూట్ అన్లిస్టెడ్ కాబట్టి ఏ హాష్ ట్యాగ్ క్రిందకూ రాదు. పబ్లిక్ టూట్ లను మాత్రమే హాష్ ట్యాగ్ ద్వారా శోధించవచ్చు.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Report issue", "follow_request.authorize": "అనుమతించు", "follow_request.reject": "తిరస్కరించు", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "డెవలపర్లు", "getting_started.directory": "ప్రొఫైల్ డైరెక్టరీ", "getting_started.documentation": "డాక్యుమెంటేషన్", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 479d0ab31..8ba698e4e 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -74,7 +74,9 @@ "column_header.show_settings": "แสดงการตั้งค่า", "column_header.unpin": "ถอนหมุด", "column_subheading.settings": "การตั้งค่า", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "สื่อเท่านั้น", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "จะส่งโพสต์นี้ไปยังผู้ใช้ที่กล่าวถึงเท่านั้น", "compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม", "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาโดยแฮชแท็ก", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "รายงานปัญหา", "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", + "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", "getting_started.developers": "นักพัฒนา", "getting_started.directory": "ไดเรกทอรีโปรไฟล์", "getting_started.documentation": "เอกสารประกอบ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 54cc0379c..c6c1c8d8c 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Ayarları göster", "column_header.unpin": "Sabitlemeyi kaldır", "column_subheading.settings": "Ayarlar", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Sadece medya", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Bu toot sadece belirtilen kullanıcılara gönderilecektir.", "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin", "compose_form.hashtag_warning": "Bu toot liste dışı olduğu için hiç bir etikette yer almayacak. Sadece herkese açık tootlar etiketlerde bulunabilir.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Sorun bildir", "follow_request.authorize": "Yetkilendir", "follow_request.reject": "Reddet", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Geliştiriciler", "getting_started.directory": "Profil dizini", "getting_started.documentation": "Belgeler", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index b11532d18..2bf264395 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -15,7 +15,7 @@ "account.followers.empty": "Ніхто ще не підписався на цього користувача.", "account.follows": "Підписки", "account.follows.empty": "Цей користувач ще ні на кого не підписався.", - "account.follows_you": "Підписаний(-а) на Вас", + "account.follows_you": "Підписаний(-а) на вас", "account.hide_reblogs": "Сховати передмухи від @{name}", "account.last_status": "Крайня активність", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", @@ -31,7 +31,7 @@ "account.posts_with_replies": "Дмухи й відповіді", "account.report": "Поскаржитися на @{name}", "account.requested": "Очікує підтвердження. Натисніть щоб відмінити запит", - "account.share": "Поширити профіль @{name}", + "account.share": "Поділитися профілем @{name}", "account.show_reblogs": "Показати передмухи від @{name}", "account.unblock": "Розблокувати @{name}", "account.unblock_domain": "Розблокувати {domain}", @@ -53,7 +53,7 @@ "bundle_modal_error.message": "Щось пішло не так під час завантаження компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", "column.blocks": "Заблоковані користувачі", - "column.bookmarks": "Bookmarks", + "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", "column.direct": "Прямі повідомлення", "column.directory": "Переглянути профілі", @@ -74,13 +74,15 @@ "column_header.show_settings": "Показати налаштування", "column_header.unpin": "Відкріпити", "column_subheading.settings": "Налаштування", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Тільки медіа", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Цей дмух буде видимий тільки згаданим користувачам.", "compose_form.direct_message_warning_learn_more": "Дізнатися більше", "compose_form.hashtag_warning": "Цей дмух не буде відображений у жодній стрічці хештеґу, оскільки він прихований. Тільки публічні дмухи можуть бути знайдені за хештеґом.", - "compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Кожен може підписатися на Вас та бачити Ваші приватні пости.", + "compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Будь-який користувач може підписатися на вас та переглядати ваші приватні пости.", "compose_form.lock_disclaimer.lock": "приватний", - "compose_form.placeholder": "Що у Вас на думці?", + "compose_form.placeholder": "Що у вас на думці?", "compose_form.poll.add_option": "Додати варіант", "compose_form.poll.duration": "Тривалість опитування", "compose_form.poll.option_placeholder": "Варіант {number}", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Повідомити про проблему", "follow_request.authorize": "Авторизувати", "follow_request.reject": "Відмовити", + "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, працівники {domain} припускають, що, можливо, ви хотіли б переглянути ці запити на підписку.", "getting_started.developers": "Розробникам", "getting_started.directory": "Каталог профілів", "getting_started.documentation": "Документація", @@ -282,9 +285,9 @@ "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.security": "Безпека", "notification.favourite": "{name} вподобав(-ла) ваш допис", - "notification.follow": "{name} підписався(-лась) на Вас", - "notification.follow_request": "{name} хоче підписатися на Вас", - "notification.mention": "{name} згадав(-ла) Вас", + "notification.follow": "{name} підписався(-лась) на вас", + "notification.follow_request": "{name} відправив(-ла) запит на підписку", + "notification.mention": "{name} згадав(-ла) вас", "notification.own_poll": "Ваше опитування завершено", "notification.poll": "Опитування, у якому ви голосували, закінчилося", "notification.reblog": "{name} передмухнув(-ла) Ваш допис", @@ -338,8 +341,8 @@ "relative_time.today": "сьогодні", "reply_indicator.cancel": "Відмінити", "report.forward": "Надіслати до {target}", - "report.forward_hint": "Це аккаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", - "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на аккаунт нижче:", + "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", + "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на акаунт нижче:", "report.placeholder": "Додаткові коментарі", "report.submit": "Відправити", "report.target": "Скаржимося на {target}", @@ -358,7 +361,7 @@ "status.admin_account": "Відкрити інтерфейс модерації для @{name}", "status.admin_status": "Відкрити цей статус в інтерфейсі модерації", "status.block": "Заблокувати @{name}", - "status.bookmark": "У закладки", + "status.bookmark": "Додати в закладки", "status.cancel_reblog_private": "Відмінити передмухання", "status.cannot_reblog": "Цей допис не може бути передмухнутий", "status.copy": "Копіювати посилання до статусу", @@ -369,7 +372,7 @@ "status.favourite": "Подобається", "status.filtered": "Відфільтровано", "status.load_more": "Завантажити більше", - "status.media_hidden": "Медіаконтент приховано", + "status.media_hidden": "Медіа приховано", "status.mention": "Згадати @{name}", "status.more": "Більше", "status.mute": "Заглушити @{name}", @@ -413,7 +416,7 @@ "trends.trending_now": "Актуальні", "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.", "upload_area.title": "Перетягніть сюди, щоб завантажити", - "upload_button.label": "Додати медіаконтент ({formats})", + "upload_button.label": "Додати медіа ({formats})", "upload_error.limit": "Ліміт завантаження файлів перевищено.", "upload_error.poll": "Не можна завантажувати файли до опитувань.", "upload_form.audio_description": "Опишіть для людей із вадами слуху", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index d625a88bf..a62a1e917 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -74,7 +74,9 @@ "column_header.show_settings": "ترتیبات دکھائیں", "column_header.unpin": "رہا کریں", "column_subheading.settings": "ترتیبات", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "وسائل فقط", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "یہ ٹوٹ صرف مذکورہ صارفین کو بھیجا جائے گا.", "compose_form.direct_message_warning_learn_more": "مزید جانیں", "compose_form.hashtag_warning": "چونکہ یہ ٹوٹ غیر مندرجہ ہے لہذا یہ کسی بھی ہیش ٹیگ کے تحت درج نہیں کیا جائے گا. ہیش ٹیگ کے تحت صرف \nعمومی ٹوٹ تلاش کئے جا سکتے ہیں.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "مسئلہ کی اطلاع کریں", "follow_request.authorize": "اجازت دیں", "follow_request.reject": "انکار کریں", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Developers", "getting_started.directory": "فہرست مشخصات", "getting_started.documentation": "اسناد", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 067a422e6..126fbc561 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -74,7 +74,9 @@ "column_header.show_settings": "Hiển thị cài đặt", "column_header.unpin": "Bỏ ghim", "column_subheading.settings": "Cài đặt", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Chỉ tút có media", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "Tút này sẽ chỉ gửi cho người được nhắc đến.", "compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm", "compose_form.hashtag_warning": "Tút này sẽ không được xuất hiện khi tìm kiếm theo hashtag vì nó không công khai. Chỉ Tút công khai có thể được tìm kiếm theo hashtag.", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "Báo cáo phát hành", "follow_request.authorize": "Cho phép", "follow_request.reject": "Từ chối", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "Nhà phát triển", "getting_started.directory": "Danh mục thành viên", "getting_started.documentation": "Tài liệu", diff --git a/app/javascript/mastodon/locales/whitelist_sc.json b/app/javascript/mastodon/locales/whitelist_sc.json new file mode 100644 index 000000000..0d4f101c7 --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_sc.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 57658706a..ccd69815d 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -74,7 +74,9 @@ "column_header.show_settings": "显示设置", "column_header.unpin": "取消固定", "column_subheading.settings": "设置", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "仅媒体", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "这条嘟文仅对所有被提及的用户可见。", "compose_form.direct_message_warning_learn_more": "了解详情", "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "报告问题", "follow_request.authorize": "同意", "follow_request.reject": "拒绝", + "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核关注请求。", "getting_started.developers": "开发", "getting_started.directory": "用户目录", "getting_started.documentation": "文档", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index a321e5a66..1ae125ba0 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -74,7 +74,9 @@ "column_header.show_settings": "顯示設定", "column_header.unpin": "取下", "column_subheading.settings": "設定", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "僅媒體", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "這文章只有被提及的用戶才可以看到。", "compose_form.direct_message_warning_learn_more": "了解更多", "compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "舉報問題", "follow_request.authorize": "批准", "follow_request.reject": "拒絕", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "開發者", "getting_started.directory": "個人資料目錄", "getting_started.documentation": "文件", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 112d5cb2f..f4862cf86 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -74,7 +74,9 @@ "column_header.show_settings": "顯示設定", "column_header.unpin": "取消釘選", "column_subheading.settings": "設定", + "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "只有媒體", + "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning": "這條嘟文只有被提及的使用者才看得到。", "compose_form.direct_message_warning_learn_more": "了解更多", "compose_form.hashtag_warning": "由於這則嘟文被設定成「不公開」,所以它將不會被列在任何主題標籤下。只有公開的嘟文才能藉主題標籤找到。", @@ -164,6 +166,7 @@ "errors.unexpected_crash.report_issue": "舉報問題", "follow_request.authorize": "授權", "follow_request.reject": "拒絕", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "getting_started.developers": "開發者", "getting_started.directory": "個人資料目錄", "getting_started.documentation": "文件", diff --git a/config/locales/activerecord.bn.yml b/config/locales/activerecord.bn.yml index e0e6ac90c..0ed3c7eea 100644 --- a/config/locales/activerecord.bn.yml +++ b/config/locales/activerecord.bn.yml @@ -3,7 +3,7 @@ bn: activerecord: attributes: poll: - expires_at: শেষ হবে + expires_at: নির্দিষ্ট সময়সীমা options: বিকল্প errors: models: @@ -14,4 +14,4 @@ bn: status: attributes: reblog: - taken: লেখাটি ইতিপূর্বে ছিল + taken: এর লেখাটি ইতিপূর্বে ছিল diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index 0bc27502c..78b5e0f8d 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -3,7 +3,7 @@ gl: activerecord: attributes: poll: - expires_at: Caducidade + expires_at: Remata en options: Opcións errors: models: diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index 5a7d48bc3..f768f0d4f 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -4,7 +4,7 @@ pt-BR: attributes: poll: expires_at: Expira em - options: Opções + options: Escolhas errors: models: account: diff --git a/config/locales/activerecord.ro.yml b/config/locales/activerecord.ro.yml index 79dbaa871..b6ef711d1 100644 --- a/config/locales/activerecord.ro.yml +++ b/config/locales/activerecord.ro.yml @@ -1 +1,17 @@ +--- ro: + activerecord: + attributes: + poll: + expires_at: Termen limită + options: Alegeri + errors: + models: + account: + attributes: + username: + invalid: doar litere, numere și sublinieri + status: + attributes: + reblog: + taken: de stare există deja diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index d4529428a..bff0d9584 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -14,4 +14,4 @@ ru: status: attributes: reblog: - taken: статуса уже существует + taken: поста уже существует diff --git a/config/locales/activerecord.sc.yml b/config/locales/activerecord.sc.yml new file mode 100644 index 000000000..646737269 --- /dev/null +++ b/config/locales/activerecord.sc.yml @@ -0,0 +1,6 @@ +--- +sc: + activerecord: + attributes: + poll: + expires_at: Iscadèntzia diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index e52345978..9fcb7b897 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -1,12 +1,16 @@ --- sq: activerecord: + attributes: + poll: + expires_at: Skadon më + options: Mundësitë errors: models: account: attributes: username: - invalid: vetëm shkronja, numra dhe nënvija + invalid: vetëm shkronja, numra dhe nënvizim status: attributes: reblog: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index c73115e2a..5e23b4f84 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -40,6 +40,7 @@ ar: unavailable_content_description: domain: الخادم reason: السبب + rejecting_media: 'لن يتم معالجة أو تخزين ملفات الوسائط القادمة من هذه الخوادم، ولن يتم عرض أي صور مصغرة، مما يتطلب النقر اليدوي على الملف الأصلي:' silenced: 'سيتم إخفاء المنشورات القادمة من هذه الخوادم في الخيوط الزمنية والمحادثات العامة، ولن يتم إنشاء أي إخطارات من جراء تفاعلات مستخدميها، ما لم تُتَابعهم:' unavailable_content_html: يسمح لك ماستدون عموماً بعرض محتوى المستخدمين القادم من أي خادم آخر في الفديفرس والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادوم بالذات. user_count_after: @@ -183,6 +184,7 @@ ar: staff: الفريق user: مستخدِم search: البحث + search_same_email_domain: مستخدمون آخرون لديهم نفس نطاق البريد الإلكتروني search_same_ip: مستخدِمون آخرون بنفس الـ IP shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد show: @@ -213,6 +215,7 @@ ar: create_custom_emoji: إنشاء إيموجي مخصص destroy_announcement: احذف الإعلان destroy_custom_emoji: احذف الإيموجي المخصص + destroy_status: حذف المنشور disable_2fa_user: تعطيل 2FA disable_custom_emoji: تعطيل الإيموجي المخصص disable_user: تعطيل المستخدم @@ -632,6 +635,7 @@ ar: aliases: add_new: أنشئ كُنية created_msg: تم إنشاء الكُنية الجديدة بنجاح. يمكنكم الآن الشروع في الإنتقال مِن حسابكم القديم. + hint_html: إذا كنت ترغب في الانتقال من حساب آخر إلى هذا الحساب الحالي، يمكنك إنشاء اسم مستعار هنا، والذي هو مطلوب قبل أن تتمكن من المضي قدما في نقل متابِعيك من الحساب القديم إلى هذا الحساب. هذا الإجراء بحد ذاته هو غير مؤذي و قابل للعكس. تتم بداية تهجير الحساب من الحساب القديم. remove: إلغاء ربط الكنية appearance: advanced_web_interface: واجهة الويب المتقدمة @@ -834,6 +838,8 @@ ar: inactive: ليس نشطا publicize_checkbox: 'وقم بتبويق هذا:' publicize_toot: 'متحقق منه! أنا %{username} على %{service}: %{url}' + remove: احذف الدليل مِن الحساب + removed: تم حذف الدليل مِن الحساب بنجاح status: حالة التحقق view_proof: عرض الدليل imports: @@ -887,15 +893,18 @@ ar: migrations: acct: انتقل إلى cancel: ألغِ التوجيه + cancel_explanation: إلغاء إعادة التوجيه سيؤدي إلى إعادة تنشيط حسابك الجاري، ولكن لن يستعيد قائمة المتابِعين الذين تم نقلهم إلى ذلك الحساب. cancelled_msg: تم إلغاء التوجيه بنجاح. errors: already_moved: هو نفسه نفس الحساب الذي قمت بالإنتقال إليه + missing_also_known_as: لا يُشير بالذِكر إلى هذا الحساب move_to_self: لا يمكنه أن يكون الحساب الحالي not_found: تعذر العثور عليه on_cooldown: إنّك في مرحلة الجمود followers_count: المتابِعين عند الإنتقال incoming_migrations: الانتقال مِن حساب آخر incoming_migrations_html: قصد الإنتقال من حساب آخَر إلى هذا يجب عليك أوّلًا إنشاء كُنية حساب. + moved_msg: إنّ حسابك الآن معاد توجيهه إلى %{acct} ويتم نقل متابِعيك نحوه. not_redirecting: حاليا ، حسابك لا يقوم بالتحويل إلى أي حساب آخر. past_migrations: التهجيرات السابقة proceed_with_move: انقل مشارِكيك @@ -977,6 +986,7 @@ ar: duration_too_short: مبكّر جدا expired: لقد انتهى استطلاع الرأي invalid_choice: خيار التصويت الذي قُمتَ يتحديده غير موجود + too_few_options: يجب أن يحتوي على أكثر من عنصر واحد too_many_options: لا يمكنه أن يحتوي أكثر مِن %{max} عناصر preferences: other: إعدادات أخرى @@ -984,6 +994,7 @@ ar: public_timelines: الخيوط الزمنية العامة reactions: errors: + limit_reached: تم بلوغ الحد الأقصى لردود الفعل المختلفة unrecognized_emoji: لم يتم التعرف على أنه إيموجي relationships: activity: نشاط الحساب @@ -1007,6 +1018,7 @@ ar: no_account_html: أليس عندك حساب بعدُ ؟ يُمْكنك التسجيل مِن هنا proceed: أكمل المتابعة prompt: 'إنك بصدد متابعة:' + reason_html: "لماذا هذه الخطوة ضرورية؟ %{instance} قد لا يكون هذا الخادم هو الذي سجلت فيه حيابك، لذا نحن بحاجة إلى إعادة توجيهك إلى خادمك الرئيسي أولاً." remote_interaction: favourite: proceed: المواصلة إلى المفضلة @@ -1018,6 +1030,7 @@ ar: proceed: المواصلة إلى الرد prompt: 'ترغب في الرد على هذا التبويق:' scheduled_statuses: + over_daily_limit: لقد تجاوزتَ حد الـ %{limit} تبويقات مُبَرمَجة المسموح بها لذلك اليوم over_total_limit: لقد بلغت حد الـ %{limit} مِن التبويقات المبرمَجة too_soon: يجب أن يكون تاريخ البرمجة في المستقبَل sessions: @@ -1110,6 +1123,8 @@ ar: other: 'يحتوي على وسوم غير مسموح بها: %{tags}' two: 'يحتوي على وسوم غير مسموح بها: %{tags}' zero: 'يحتوي على وسوم غير مسموح بها: %{tags}' + errors: + in_reply_not_found: إنّ المنشور الذي تحاول الرد عليه غير موجود على ما يبدو. language_detection: اكتشاف اللغة تلقائيا open_in_web: افتح في الويب over_character_limit: تم تجاوز حد الـ %{max} حرف المسموح بها @@ -1174,6 +1189,7 @@ ar: manual_instructions: 'في حالة تعذّر مسح رمز الكيو آر أو طُلب منك إدخال يدوي، يُمْكِنك إدخال هذا النص السري على التطبيق:' recovery_codes: النسخ الاحتياطي لرموز الاسترجاع recovery_codes_regenerated: تم إعادة توليد رموز الاسترجاع الاحتياطية بنجاح + recovery_instructions_html: إن فقدت الوصول إلى هاتفك، يمكنك استخدام أحد رموز الاسترداد أدناه لاستعادة الوصول إلى حسابك. حافظ على رموز الاسترداد بأمان. يمكنك ، على سبيل المثال ، طباعتها وتخزينها مع مستندات أخرى هامة. setup: تنشيط wrong_code: الرمز الذي أدخلته غير صالح! تحقق من صحة الوقت على الخادم و الجهاز؟ user_mailer: @@ -1182,6 +1198,8 @@ ar: subject: نسخة بيانات حسابك جاهزة للتنزيل title: المغادرة بأرشيف الحساب warning: + explanation: + disable: عندما يتم تجميد حسابك، تظل بيانات حسابك سليمة، ولكن لا يمكنك تنفيذ أي إجراءات حتى يتم فتحه. get_in_touch: يمكنك الرد على هذا البريد الإلكتروني للاتصال بفريق %{instance}. review_server_policies: مراجعة شروط السيرفر statuses: 'خصيصا لـ:' diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 1d6c11f13..d2c1a1d72 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -173,6 +173,8 @@ ast: body_remote: Daquién dende %{domain} informó de %{target} new_trending_tag: body: 'Güei la etiqueta #%{name} ye tendencia pero nun se revisó anteriormente. Nun va amosase públicamente a nun ser que lo permitas o guardes el formulariu como ta pa nun saber más d''ello.' + aliases: + empty: Nun tienes nomatos. appearance: advanced_web_interface: Interfaz web avanzada advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol anchor de la pantalla, la interfaz web avanzada permítete configurar munches columnes estremaes pa ver tanta información al empar como quieras: Aniciu, avisos, llinia temporal federada, cualesquier cantidá de llistes y etiquetes...' diff --git a/config/locales/ca.yml b/config/locales/ca.yml index f056bb943..ccb259eb1 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -635,6 +635,7 @@ ca: add_new: Crea un àlies created_msg: Nou àlies creat amb èxit. Ara pots iniciar el moviment des de'l compte vell. deleted_msg: Àlies eliminat amb èxit. Moure't des d'aquell compte a aquests ja no serà possible. + empty: No hi tens cap àlies. hint_html: Si et vols moure des d'un altre compte a aquest, aquí pots crear un àlies, el qual és requerit abans que puguis procedir a moure els seguidors del compte vell a aquest. Aquesta acció és per si mateixa inofensiva i reversible. La migració del compte és iniciada des de'l compte vell. remove: Desvincula l'àlies appearance: @@ -756,7 +757,7 @@ ca: username_unavailable: El teu nom d'usuari quedarà inutilitzable directories: directory: Directori de perfils - explanation: Descobreix usuaris segons els seus interessos + explanation: Descobreix usuaris segons els teus interessos explore_mastodon: Explora %{title} domain_validator: invalid_domain: no es un nom de domini vàlid @@ -849,6 +850,8 @@ ca: inactive: Inactiu publicize_checkbox: 'I envia un tut d''això:' publicize_toot: 'Està provat! Sóc %{username} a %{service}: %{url}' + remove: Elimina prova d’identitat del compte + removed: Prova d’identitat del compte eliminada amb èxit status: Estat de verificació view_proof: Veure la prova imports: diff --git a/config/locales/co.yml b/config/locales/co.yml index 2d50cefd7..2585b550f 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -635,6 +635,7 @@ co: add_new: Creà un pseudonimu created_msg: Novu pseudonimu creatu. Pudete avà inizià u trasferimentu da u vechju contu. deleted_msg: U pseudonimu hè statu sguassatu. Ùn si puderà più migrà da questu contu à quellu. + empty: Ùn avete un pseudonimu. hint_html: Per traslucà da un altru contu à questu, quì pudete creà un pseudonimu o "alias", riquisitu per trasferì l'abbunati da u vechju contu à u novu. St'azzione sola ùn face nunda è pò esse annullata senza prublemi. A migrazione hè principiata dapoi u vechju contu. remove: Sguassà u pseudonimu appearance: @@ -849,6 +850,8 @@ co: inactive: Inattiva publicize_checkbox: 'È mandà stu statutu:' publicize_toot: 'Hè pruvata! Sò %{username} nant’à %{service}: %{url}' + remove: Sguassà a prova da u contu + removed: Prova sguassata da u contu status: Statutu di a verificazione view_proof: Vede a prova imports: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index d7c49279d..cb9eb77fc 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -100,6 +100,7 @@ cs: delete: Smazat destroyed_msg: Moderátorská poznámka byla úspěšně zničena! accounts: + add_email_domain_block: Blokovat e-maily na této doméně approve: Schválit approve_all: Schválit vše are_you_sure: Opravdu? @@ -180,6 +181,7 @@ cs: staff: Člen personálu user: Uživatel search: Hledat + search_same_email_domain: Ostatní uživatelé s e-mailem na stejné doméně search_same_ip: Další uživatelé se stejnou IP adresou shared_inbox_url: URL sdílené příchozí schránky show: @@ -201,6 +203,36 @@ cs: web: Web whitelisted: Na bílé listině action_logs: + action_types: + assigned_to_self_report: Přiřadit hlášení + change_email_user: Změnit uživateli e-mailovou adresu + confirm_user: Potvrdit uživatele + create_account_warning: Vytvořit varování + create_announcement: Nové oznámení + create_custom_emoji: Vytvořit vlastní emoji + create_domain_allow: Povolit doménu + create_domain_block: Zablokovat doménu + create_email_domain_block: Zablokovat e-maily na doméně + demote_user: Snížit roli uživatele + destroy_announcement: Odstranit oznámení + destroy_custom_emoji: Odstranit vlastní emoji + destroy_domain_allow: Odstranit povolenou doménu + destroy_domain_block: Odstranit blokování domény + destroy_email_domain_block: Odstranit blokování e-mailů na doméně + destroy_status: Odstranit stav + disable_2fa_user: Vypnout 2FA + disable_custom_emoji: Zakázat vlastní emoji + disable_user: Deaktivovat uživatele + enable_custom_emoji: Povolit vlastní emoji + enable_user: Povolit uživatele + promote_user: Povýšit uživatele + reopen_report: Znovu otevřít hlášení + reset_password_user: Obnovit heslo + resolve_report: Označit hlášení jako vyřešené + unassigned_report: Zrušit přiřazení hlášení + update_announcement: Aktualizovat oznámení + update_custom_emoji: Aktualizovat vlastní emoji + update_status: Aktualizovat stav actions: assigned_to_self_report: Uživatel %{name} si přidělil hlášení %{target} change_email_user: Uživatel %{name} změnil e-mailovou adresu uživatele %{target} @@ -238,6 +270,8 @@ cs: update_custom_emoji: Uživatel %{name} aktualizoval emoji %{target} update_status: Uživatel %{name} aktualizoval toot uživatele %{target} deleted_status: "(smazaný toot)" + filter_by_action: Filtrovat podle akce + filter_by_user: Filtrovat podle uživatele title: Auditovací protokol announcements: destroyed_msg: Oznámení bylo úspěšně odstraněno @@ -368,6 +402,7 @@ cs: destroyed_msg: E-mailová doména úspěšně odstraněna z černé listiny domain: Doména empty: Na černé listině aktuálně nejsou žádné e-mailové domény. + from_html: z domény %{domain} new: create: Přidat doménu title: Nová položka pro černou listinu e-mailů @@ -553,6 +588,8 @@ cs: trends: desc_html: Veřejně zobrazit populární hashtagy, které byly předtím schváleny title: Populární hashtagy + site_uploads: + delete: Odstranit nahraný soubor statuses: back_to_account: Zpět na stránku účtu batch: @@ -1099,6 +1136,8 @@ cs: many: 'obsahoval nepovolené hashtagy: %{tags}' one: 'obsahoval nepovolený hashtag: %{tags}' other: 'obsahoval nepovolené hashtagy: %{tags}' + errors: + in_reply_not_found: Stav, na který se pokoušíte odpovědět, neexistuje. language_detection: Zjistit jazyk automaticky open_in_web: Otevřít na webu over_character_limit: byl překročen limit %{max} znaků diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 572cf895a..e5a069efa 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -108,6 +108,7 @@ cy: delete: Dileu destroyed_msg: Dinistrwyd nodyn goruwchwylio yn llwyddiannus! accounts: + add_email_domain_block: Cosbrestru parth e-bost approve: Cymeradwyo approve_all: Cymeradwyo pob un are_you_sure: Ydych chi'n siŵr? @@ -188,6 +189,7 @@ cy: staff: Staff user: Defnyddiwr search: Chwilio + search_same_email_domain: Defnyddwyr eraill gyda'r un parth ebost search_same_ip: Defnyddwyr eraill gyda'r un IP shared_inbox_url: URL Mewnflwch wedi ei rannu show: @@ -209,6 +211,42 @@ cy: web: Gwe whitelisted: Rhestredig wen action_logs: + action_types: + assigned_to_self_report: Neilltuo Adroddiad + change_email_user: Newid Ebost ar gyfer Defnyddiwr + confirm_user: Cadarnhau Defnyddiwr + create_account_warning: Creu Rhybydd + create_announcement: Creu Cyhoeddiad + create_custom_emoji: Creu Emoji Addasiedig + create_domain_allow: Creu Alluogiad Parth + create_domain_block: Creu Gwaharddiad Parth + create_email_domain_block: Creu Gwaharddiad Parth Ebost + demote_user: Diraddio Defnyddiwr + destroy_announcement: Dileu Cyhoeddiad + destroy_custom_emoji: Dileu Emoji Addasiedig + destroy_domain_allow: Dileu Alluogiad Parth + destroy_domain_block: Dileu Gwaharddiad Parth + destroy_email_domain_block: Dileu gwaharddiad parth ebost + destroy_status: Dileu Statws + disable_2fa_user: Diffodd 2FA + disable_custom_emoji: Analluogi Emoji Addasiedig + disable_user: Analluogi Defnyddiwr + enable_custom_emoji: Alluogi Emoji Addasiedig + enable_user: Alluogi Defnyddiwr + memorialize_account: Cofadeilio Cyfrif + promote_user: Dyrchafu Defnyddiwr + remove_avatar_user: Tynnu Afatar + reopen_report: Ailagor Adroddiad + reset_password_user: Ailosod Cyfrinair + resolve_report: Datrus Adroddiad + silence_account: Tawelu Cyfrif + suspend_account: Gwahardd Cyfrif Dros Dro + unassigned_report: Dadneilltuo Adroddiad + unsilence_account: Dadawelu Cyfrif + unsuspend_account: Tynnu Gwahardd Cyfrif Dros Dro + update_announcement: Diweddaru Cyhoeddiad + update_custom_emoji: Diweddaru Emoji Addasiedig + update_status: Diweddaru Statws actions: assigned_to_self_report: Aseiniodd %{name} adroddiad %{target} i'w hunan change_email_user: Newidodd %{name} gyfeiriad e-bost y defnyddiwr %{target} @@ -246,6 +284,9 @@ cy: update_custom_emoji: Diweddarodd %{name} emoji %{target} update_status: Diweddarodd %{name} statws gan %{target} deleted_status: "(statws wedi ei ddileu)" + empty: Dim logiau ar gael. + filter_by_action: Hidlo wrth weithred + filter_by_user: Hidlo wrth ddefnyddiwr title: Log archwilio announcements: destroyed_msg: Cyhoeddiad wedi'i ddileu yn llwyddianus! @@ -378,6 +419,7 @@ cy: destroyed_msg: Llwyddwyd i ddileu parth e-bost o'r gosbrestr domain: Parth empty: Dim parthiau ebost ar y rhestr rhwystro. + from_html: o %{domain} new: create: Ychwanegu parth title: Cofnod newydd yng nghosbrestr e-byst @@ -625,6 +667,7 @@ cy: add_new: Creu enw arall created_msg: Wedi creu enw arall yn llwyddianus. Gallwch nawr dechrau'r symudiad o'r hen gyfrif. deleted_msg: Wedi tynnu enw arall yn llwyddianus. Ni fydd symud o'r cyfrif hynny i'r cyfrif hon yn bosib. + empty: Nid oes gennych chi enwau eraill. hint_html: Os hoffech symyd o gyfrif arall i'r cyfrif hon, gallwch creu enw arall fama, sydd yn angenrheidiol cyn i chi dechrau symyd ddilynwyr o'r hen gyfrif i'r cyfrif hon. Mae'r gweithred hon yn ddiniwed ac yn gildroadwy. Caiff symudiad y cyfrif ei dechrau o'r hen gyfrif. remove: Dadgysylltu'r enw arall appearance: @@ -1136,6 +1179,8 @@ cy: other: 'yn cynnwys yr hashnod gwaharddedig: %{tags}' two: 'yn cynnwys yr hashnod gwaharddedig: %{tags}' zero: 'yn cynnwys yr hashnod gwaharddedig: %{tags}' + errors: + in_reply_not_found: Nid yw'r statws rydych yn ceisio ymateb i yn edrych fel ei fod yn bodoli. language_detection: Canfod iaith yn awtomataidd open_in_web: Agor yn y wê over_character_limit: wedi mynd heibio'r uchafswm nodyn o %{max} diff --git a/config/locales/da.yml b/config/locales/da.yml index c978029b3..c7189ae34 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -192,6 +192,12 @@ da: web: Web whitelisted: Hvidlistet action_logs: + action_types: + confirm_user: Bekræft bruger + destroy_status: Slet status + disable_2fa_user: Slet 2FA + disable_user: Deaktiver brugeren + enable_user: Aktiver brugeren actions: assigned_to_self_report: "%{name} tildelte anmeldelsen %{target} til sig selv" change_email_user: "%{name} ændrede email adressen for brugeren %{target}" @@ -226,6 +232,8 @@ da: update_custom_emoji: "%{name} opdaterede humørikonet %{target}" update_status: "%{name} opdaterede status for %{target}" deleted_status: "(slettet status)" + filter_by_action: Filtrer efter handling + filter_by_user: Filtrer efter bruger title: Revisionslog custom_emojis: assign_category: Vælg kategori @@ -314,6 +322,8 @@ da: reject_reports: Afvis anmeldelser rejecting_media: afviser mediefiler rejecting_reports: afviser anmeldelser + severity: + suspend: suspenderet show: affected_accounts: one: En konto i databasen påvirket @@ -331,6 +341,7 @@ da: delete: Slet destroyed_msg: Fjernede succesfuldt email domænet fra sortliste domain: Domæne + from_html: fra %{domain} new: create: Tilføj domæne title: Ny email blokade opslag @@ -614,6 +625,7 @@ da: storage: Medie lager filters: contexts: + account: Profiler home: Hjemme tidslinje notifications: Notifikationer public: Offentlig tidslinje @@ -637,6 +649,7 @@ da: all: Alle changes_saved_msg: Ændringerne blev gemt! copy: Kopier + delete: Slet order_by: Sorter efter save_changes: Gem ændringer validation_errors: @@ -848,6 +861,7 @@ da: poll: vote: Stem show_more: Vis mere + show_thread: Vis tråd sign_in_to_participate: Log ind for at deltage i samtalen visibilities: private: Kun-følgere diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml index 2033e082d..d5763e6bd 100644 --- a/config/locales/devise.ar.yml +++ b/config/locales/devise.ar.yml @@ -49,9 +49,11 @@ ar: subject: 'ماستدون: نظام المصادقة بخطوتين مُعطّل' title: إنّ 2FA معطّل two_factor_enabled: + explanation: تم تفعيل المصادقة بخطوتين على حسابك. سيُطلب منك رمز تم توليده بواسطة تطبيق TOTP المقترن للولوج. subject: 'ماستدون: تم تفعيل نظام المصادقة بخطوتين' title: إنّ 2FA نشِط two_factor_recovery_codes_changed: + explanation: لقد تم إلغاء رموز الاسترداد السابقة وأنشئت رموز جديدة. subject: 'ماستدون: تم إعادة توليد رموز استرجاع المصادقة بخطوتين' title: تم استبدال رموز استرجاع 2FA unlock_instructions: diff --git a/config/locales/devise.da.yml b/config/locales/devise.da.yml index 2cfd24658..75a035935 100644 --- a/config/locales/devise.da.yml +++ b/config/locales/devise.da.yml @@ -11,7 +11,7 @@ da: invalid: Ugyldig %{authentication_keys} eller adgangskode. last_attempt: Du har ét forsøg mere, før din konto bliver låst. locked: Din konto er låst. - not_found_in_database: Ugyldig %{authentication_keys} eller ugyldigt kodeord. + not_found_in_database: Ugyldig %{authentication_keys} eller adgangskode. pending: Din konto er stadig under bedømmelse. timeout: Din session er udløbet. Log venligst ind igen for at fortsætte. unauthenticated: Du er nødt til at logge ind eller oprette dig for at fortsætte. diff --git a/config/locales/devise.el.yml b/config/locales/devise.el.yml index 5dc7658c2..7eb064e5d 100644 --- a/config/locales/devise.el.yml +++ b/config/locales/devise.el.yml @@ -18,10 +18,10 @@ el: unconfirmed: Πρέπει να επιβεβαιώσεις τη διεύθυνση email σου για να συνεχίσεις. mailer: confirmation_instructions: - action: Επιβεβαίωσε διεύθυνση email + action: Επιβεβαίωση διεύθυνσης email action_with_app: Επιβεβαίωση και επιστροφή στο %{app} explanation: Δημιούργησες έναν λογαριασμό στο %{host} με αυτή τη διεύθυνση email. Με ένα κλικ θα τον ενεργοποιήσεις. Αν δεν το έκανες εσύ, παρακαλούμε αγνόησε αυτό το email. - explanation_when_pending: Έχεις υποβάλλει αίτηση πρόσκλησης στο %{host} με αυτή την ηλεκτρονική διεύθυνση email. Μόλις επιβεβαιώσεις το email σου, θα ελέγξουμε την αίτηση σου. Μέχρι τότε δε θα μπορεις να συνδεθείς. Αν απορριφθεί η αίτησή σου, τα στοιχεία σου θα αφαιρεθούν, άρα δε θα χρειαστεί να κάνεις κάτι επιπλέον. Αν δεν υπέβαλες εσύ την αίτηση, αγνόησε αυτό το email. + explanation_when_pending: Έχεις υποβάλλει αίτηση πρόσκλησης στο %{host} με αυτή την ηλεκτρονική διεύθυνση email. Μόλις επιβεβαιώσεις το email σου, θα ελέγξουμε την αίτηση σου. Μέχρι τότε δε θα μπορείς να συνδεθείς. Αν απορριφθεί η αίτησή σου, τα στοιχεία σου θα αφαιρεθούν, άρα δε θα χρειαστεί να κάνεις κάτι επιπλέον. Αν δεν υπέβαλες εσύ την αίτηση, αγνόησε αυτό το email. extra_html: Παρακαλούμε να διαβάσεις του κανόνες αυτού του κόμβου και τους όρους χρήσης της υπηρεσίας μας. subject: 'Mastodon: Οδηγίες επιβεβαίωσης για %{instance}' title: Επιβεβαίωσε διεύθυνση email @@ -47,17 +47,17 @@ el: subject: 'Mastodon: Οδηγίες επαναφοράς συνθηματικού' title: Επαναφορά συνθηματικού two_factor_disabled: - explanation: Ο έλεγχος ταυτότητας δυο παραγόντων (2FA) έχει απενεργοποιηθεί για το λογαριασμό σου. Η σύνδεση γίνεται απλά με το email και το συνθηματικό. - subject: 'Mastodon: Απενεργοποιήθηκε ο έλεγχος ταυτότητας δύο παραγόντων' - title: Απενεργοποιημένο 2FA + explanation: Η επαλήθευση 2 βημάτων (2FA) έχει απενεργοποιηθεί για το λογαριασμό σου. Η σύνδεση γίνεται απλά με το email και το συνθηματικό. + subject: 'Mastodon: Απενεργοποιήθηκε η επαλήθευση 2 βημάτων (2FA)' + title: Επαλήθευση 2 βημάτων ανενεργή (2FA) two_factor_enabled: explanation: Έχει ενεργοποιηθεί η πιστοποίηση 2 παραγόντων για το λογαριασμό σου (2FA). Για να συνδεθείς θα απαιτηθεί πιστοποιημένο τεκμήριο από κάποια ζευγαρωμένη εφαρμογή. - subject: 'Mastodon: Ενεργοποιήθηκε η πιστοποίηση 2 παραγόντων (2FA)' - title: Επαλήθευση δύο βημάτων ενεργή + subject: 'Mastodon: Ενεργοποιήθηκε η επαλήθευση 2 βημάτων (2FA)' + title: Επαλήθευση 2 βημάτων ενεργή (2FA) two_factor_recovery_codes_changed: explanation: Οι προηγούμενοι κωδικοί ανάκτησης ακυρώθηκαν και δημιουργήθηκαν νέοι. subject: 'Mastodon: Δημιουργήθηκαν νέοι κωδικοί ανάκτησης' - title: Οι κωδικοί ανάκτησης 2FA άλλαξαν + title: Οι κωδικοί ανάκτησης επαλήθευσης 2 βημάτων (2FA) άλλαξαν unlock_instructions: subject: 'Mastodon: Οδηγίες ξεκλειδώματος' omniauth_callbacks: @@ -70,7 +70,7 @@ el: updated: Το συνθηματικό σου άλλαξε. Πλέον έχεις συνδεθεί. updated_not_active: Το συνθηματικό σου άλλαξε. registrations: - destroyed: Στο καλό! Ο λογαριασμός σου ακυρώθηκε με επιτυχία. Ελπίζουμε να σε ξαναδούμε σύντομα. + destroyed: Αντίο! Ο λογαριασμός σου ακυρώθηκε με επιτυχία. Ελπίζουμε να σε ξαναδούμε σύντομα. signed_up: Καλώς ήρθες! Εγγράφηκες με επιτυχία. signed_up_but_inactive: Εγγράφηκες με επιτυχία. Όμως δε μπορέσαμε να σε συνδέσουμε γιατί ο λογαριασμός σου δεν έχει ενεργοποιηθεί ακόμα. signed_up_but_locked: Εγγράφηκες με επιτυχία. Όμως δε μπορέσαμε να σε συνδέσουμε γιατί ο λογαριασμός σου είναι κλειδωμένος. diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index 7c67ac8fa..0631d1c07 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -47,9 +47,17 @@ eo: subject: 'Mastodon: Instrukcioj por ŝanĝi pasvorton' title: Pasvorto restarigita two_factor_disabled: + explanation: Dufaktora aŭtentigo por via konto malebligis. Ensalutado nun eblas per nur retpoŝtadreso kaj pasvorto. + subject: 'Mastodon: dufaktora aŭtentigo malebligita' title: la du-etapa aŭtentigo estas malŝaltita two_factor_enabled: + explanation: Dufaktora aŭtentigo sukcese ebligita por via akonto. Vi bezonos ĵetonon kreitan per parigitan aplikaĵon por ensaluti. + subject: 'Mastodon: dufaktora aŭtentigo ebligita' title: la du-etapa aŭtentigo estas ŝaltita + two_factor_recovery_codes_changed: + explanation: La antaŭaj reakiraj kodoj estis nuligitaj kaj novaj estis generitaj. + subject: 'Mastodon: Reakiraj kodoj de dufaktora aŭtentigo rekreitaj' + title: Reakiraj kodoj de 2FA estas ŝanĝitaj unlock_instructions: subject: 'Mastodon: Instrukcioj por malŝlosi' omniauth_callbacks: diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml index 85c010495..aeb4c3f6d 100644 --- a/config/locales/devise.it.yml +++ b/config/locales/devise.it.yml @@ -8,10 +8,10 @@ it: failure: already_authenticated: Hai già effettuato l'accesso. inactive: Non hai ancora attivato il tuo account. - invalid: "%{authentication_keys} o password invalida." + invalid: "%{authentication_keys} o password non valida." last_attempt: Hai un altro tentativo prima che il tuo account venga bloccato. locked: Il tuo account è stato bloccato. - not_found_in_database: "%{authentication_keys} o password invalida." + not_found_in_database: "%{authentication_keys} o password non valida." pending: Il tuo account è ancora in fase di approvazione. timeout: La tua sessione è terminata. Per favore, effettua l'accesso o registrati per continuare. unauthenticated: Devi effettuare l'accesso o registrarti per continuare. diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml index 5f46a4ba1..bb5d5d34b 100644 --- a/config/locales/devise.pt-BR.yml +++ b/config/locales/devise.pt-BR.yml @@ -9,8 +9,8 @@ pt-BR: already_authenticated: Você entrou na sua conta. inactive: Sua conta não foi confirmada ainda. invalid: "%{authentication_keys} ou senha inválida." - last_attempt: Você tem apenas mais uma tentativa sobrando antes que a sua conta seja bloqueada. - locked: Sua conta está bloqueada. + last_attempt: Você tem mais uma tentativa antes de sua conta ser trancada. + locked: Sua conta está trancada. not_found_in_database: "%{authentication_keys} ou senha inválida." pending: Sua conta está sendo revisada. timeout: Você saiu de sua conta. Por favor, entre novamente para continuar. @@ -27,12 +27,12 @@ pt-BR: title: Confirme o endereço de e-mail email_changed: explanation: 'O e-mail vinculado à sua conta será alterado para:' - extra: Se você não alterou seu e-mail, é possível que alguém tenha acessado a sua conta. Altere sua senha imediatamente ou entre em contato com o administrador da sua instância se você perdeu o acesso à sua conta. + extra: Se você não alterou seu email, é provável que alguém tenha ganhado acesso a sua conta. Por favor altere sua senha imediatamente ou entre em contato com o administrador do servidor se você está trancado fora de sua conta. subject: 'Mastodon: Endereço de e-mail alterado' title: Novo endereço de e-mail password_change: explanation: A senha da sua conta foi alterada. - extra: Se você não alterou sua senha, é possível que alguém tenha acessado a sua conta. Altere sua senha imediatamente ou entre em contato com o administrador da sua instância se você perdeu o acesso à sua conta. + extra: Se você não alterou sua senha, é provável que alguém tenha ganhado acesso a sua conta. Por favor altere sua senha imediatamente ou entre em contato com o administrador do servidor se você está trancado fora de sua conta. subject: 'Mastodon: Senha alterada' title: Senha alterada reconfirmation_instructions: @@ -73,7 +73,7 @@ pt-BR: destroyed: Adeus! Sua conta foi cancelada. Talvez um dia possamos nos ver de novo. signed_up: Boas vindas! Conta criada. signed_up_but_inactive: Conta criada! Agora você deve confirmá-la. - signed_up_but_locked: Conta criada! Porém, você deve desbloqueá-la. + signed_up_but_locked: Você se cadastrou com sucesso. Contudo, não pudemos fazer login porque sua conta está trancada. signed_up_but_pending: Um e-mail com um link de confirmação foi enviado para o seu endereço de e-mail. Após você entrar no link, revisaremos sua solicitação e você será notificado caso seja aprovado. signed_up_but_unconfirmed: Um e-mail com instruções para confirmar o seu endereço de e-mail foi enviado. Por favor, verifique sua pasta de spam caso ainda não o tenha recebido. update_needs_confirmation: Você alterou seu endereço de e-mail ou sua senha, porém é preciso confirmar a alteração. Por favor, entre no link que foi enviado para o seu novo endereço de e-mail e verifique sua pasta de spam caso ainda não o tenha recebido. @@ -83,16 +83,16 @@ pt-BR: signed_in: Você entrou na sua conta. signed_out: Você saiu de sua conta. unlocks: - send_instructions: Você receberá um e-mail com instruções para desbloquear a sua conta dentro de alguns minutos. Por favor, verifique sua pasta de spam caso ainda não o tenha recebido. - send_paranoid_instructions: Se a sua conta já existe, você receberá um e-mail com instruções para desbloqueá-la dentro de alguns minutos. Por favor, verifique sua pasta de spam caso ainda não o tenha recebido. - unlocked: Sua conta foi desbloqueada. Por favor, entre na sua conta para continuar. + send_instructions: Você receberá um email com instruções para destrancar a sua conta em alguns minutos. Por favor verifique sua pasta de spam se não recebeu este email. + send_paranoid_instructions: Se a sua conta existe, você vai reveber um email com instruções para destrancá-la em alguns minutos. Por favor verifique sua pasta de spam se você não recebeu este email. + unlocked: Sua conta foi destrancada com sucesso. Por favor entre na sua conta para continuar. errors: messages: already_confirmed: confirmado, agora tente entrar na sua conta confirmation_period_expired: precisa ser confirmada em até %{period}, por favor, solicite novo link de confirmação expired: expirou, por favor solicite uma nova not_found: não encontrado - not_locked: Sua conta não está bloqueada. + not_locked: não foi trancada not_saved: one: '1 erro impediu este %{resource} de ser salvo(a):' other: "%{count} erros impediram este %{resource} de ser salvo(a):" diff --git a/config/locales/devise.pt-PT.yml b/config/locales/devise.pt-PT.yml index c6cfe0c37..935189a16 100644 --- a/config/locales/devise.pt-PT.yml +++ b/config/locales/devise.pt-PT.yml @@ -20,19 +20,19 @@ pt-PT: confirmation_instructions: action: Verificar o endereço de e-mail action_with_app: Confirmar e regressar a %{app} - explanation: Criaste uma conta em %{host} com este endereço de e-mail. Estás a um clique de activá-la. Se não foste tu que fizeste este registo, por favor ignora esta mensagem. + explanation: Criou uma conta em %{host} com este endereço de e-mail. Está a um clique de activá-la. Se não foi você que fez este registo, por favor ignore esta mensagem. explanation_when_pending: Você solicitou um convite para %{host} com este endereço de e-mail. Logo que confirme o seu endereço de e-mail, iremos rever a sua inscrição. Pode iniciar sessão para alterar os seus dados ou eliminar a sua conta, mas não poderá aceder à maioria das funções até que a sua conta seja aprovada. Se a sua inscrição for rejeitada, os seus dados serão removidos, pelo que não será necessária qualquer acção adicional da sua parte. Se não solicitou este convite, por favor, ignore este e-mail. - extra_html: Por favor lê as regras da instância e os nossos termos de serviço. + extra_html: Por favor leia as regras da instância e os nossos termos de serviço. subject: 'Mastodon: Instruções de confirmação %{instance}' title: Verificar o endereço de e-mail email_changed: explanation: 'O e-mail associado à tua conta será alterado para:' - extra: Se não alterou o seu email, é possível que alguém tenha conseguido aceder à sua conta. Por favor altere a sua palavra-passe imediatamente ou entra em contacto com um administrador do servidor se tiver ficado sem acesso à sua conta. + extra: Se não alterou o seu email, é possível que alguém tenha conseguido aceder à sua conta. Por favor altere a sua palavra-passe imediatamente ou entra em contacto com um administrador da instância se tiver ficado sem acesso à sua conta. subject: 'Mastodon: Email alterado' title: Novo endereço de e-mail password_change: explanation: A palavra-passe da tua conta foi alterada. - extra: Se não alterou a sua palavra-passe, é possível que alguém tenha conseguido aceder à sua conta. Por favor altere a sua palavra-passe imediatamente ou entre em contacto com um administrador do servidor se tiver ficado sem acesso à sua conta. + extra: Se não alterou a sua palavra-passe, é possível que alguém tenha conseguido aceder à sua conta. Por favor altere a sua palavra-passe imediatamente ou entre em contacto com um administrador da instância se tiver ficado sem acesso à sua conta. subject: 'Mastodon: Nova palavra-passe' title: Palavra-passe alterada reconfirmation_instructions: diff --git a/config/locales/devise.ro.yml b/config/locales/devise.ro.yml index 79dbaa871..8579d2c64 100644 --- a/config/locales/devise.ro.yml +++ b/config/locales/devise.ro.yml @@ -1 +1,99 @@ +--- ro: + devise: + confirmations: + confirmed: Adresa ta de e-mail a fost confirmată cu succes. + send_instructions: Vei primi un e-mail cu instrucțiuni despre cum să confirmi adresa ta de e-mail în câteva minute. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail. + send_paranoid_instructions: Dacă adresa ta de e-mail există în baza noastră de date, în câteva minute vei primi un e-mail cu instrucțiuni pentru confirmarea adresei tale de e-mail. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail. + failure: + already_authenticated: Ești deja conectat. + inactive: Contul tău nu este încă activat. + invalid: "%{authentication_keys} sau parolă greșită." + last_attempt: Mai ai încă o încercare înainte de a bloca contul. + locked: Contul tău este blocat. + not_found_in_database: "%{authentication_keys} sau parolă greșită." + pending: Contul tău este încă în curs de revizuire. + timeout: Sesiunea ta a expirat. Te rugăm să te conectezi din nou pentru a continua. + unauthenticated: Trebuie să te conectezi sau să te înregistrezi înainte de a continua. + unconfirmed: Trebuie să confirmi adresa ta de e-mail înainte de a continua. + mailer: + confirmation_instructions: + action: Verifică adresa de e-mail + action_with_app: Confirmați și reveniți la %{app} + explanation: Ai creat un cont pe %{host} cu această adresă de e-mail. Ești la un click distanță de a o activa. Dacă nu ai fost tu, ignoră acest e-mail. + explanation_when_pending: Ai solicitat o invitație către %{host} cu această adresă de e-mail. Odată ce îți confirmi adresa de e-mail, îți vom revizui cererea. Te poți autentifica pentru a-ți schimba detaliile sau pentru a-ți șterge contul, dar nu poți accesa majoritatea funcțiilor până când contul tău nu este aprobat. Dacă cererea ta este respinsă, datele tale vor fi șterse, astfel încât nu va fi necesară nicio altă acțiune din partea ta. Dacă nu ai fost tu, ignoră acest e-mail. + extra_html: Te rugăm să verifici și regulile serverului și termenii noștri de serviciu. + subject: 'Mastodon: Instrucțiuni de confirmare pentru %{instance}' + title: Verifică adresa de e-mail + email_changed: + explanation: 'Adresa de e-mail pentru contul tău este schimbată la:' + extra: Dacă nu v-ați schimbat adresa de e-mail, probabil că cineva a obținut acces la contul dvs. Te rugăm să îți schimbi parola imediat sau să contactezi administratorul serverului dacă nu ai acces la contul tău. + subject: E-mail schimbat + title: Noua adresa de e-mail + password_change: + explanation: Parola contului tău a fost schimbată. + extra: Dacă nu v-ați schimbat parola, este posibil ca cineva să fi obținut acces la contul dvs. Te rugăm să îți schimbi parola imediat sau să contactezi administratorul serverului dacă nu ai acces la contul tău. + subject: Parolă schimbată + title: Parolă schimbată + reconfirmation_instructions: + explanation: Confirmă noua adresă pentru a schimba adresa de e-mail. + extra: Dacă această modificare nu a fost inițiată de dvs., vă rugăm să ignorați acest e-mail. Adresa de e-mail pentru contul Mastodon nu se va schimba până când nu accesați link-ul de mai sus. + subject: 'Mastodon: Confirmați e-mailul pentru %{instance}' + title: Verifică adresa de e-mail + reset_password_instructions: + action: Schimbă parola + explanation: Ați solicitat o nouă parolă pentru contul dvs. + extra: Dacă nu ați solicitat acest lucru, ignorați acest e-mail. Parola dvs. nu se va schimba până când nu veți accesa link-ul de mai sus și nu veți crea unul nou. + subject: Instrucțiuni pentru resetarea parolei + title: Resetare parolă + two_factor_disabled: + explanation: Autentificarea în doi pași pentru contul tău a fost dezactivată. Autentificarea este posibilă acum folosind doar adresa de e-mail și parola. + subject: Autentificare cu doi factori dezactivată + title: 2FA dezactivat + two_factor_enabled: + explanation: Autentificarea în doi pași a fost activată pentru contul dvs. Un token generat de aplicația TOTP împerecheată va fi necesar pentru autentificare. + subject: Autentificare în doi pași activată + title: 2FA activat + two_factor_recovery_codes_changed: + explanation: Codurile anterioare de recuperare au fost invalidate și unele noi generate. + subject: Recuperare în doi factori + title: Coduri de recuperare 2FA modificate + unlock_instructions: + subject: Instrucțiuni de deblocare + omniauth_callbacks: + failure: Nu te-am putut autentifica de la %{kind} deoarece "%{reason}". + success: Autentificat cu succes din contul %{kind}. + passwords: + no_token: Nu puteți accesa această pagină fără să veniți dintr-un e-mail de resetare a parolei. Dacă vii dintr-un e-mail de resetare a parolei, te rugăm să te asiguri că ai folosit URL-ul complet furnizat. + send_instructions: Dacă adresa ta de e-mail există în baza noastră de date, vei primi în câteva minute un link de recuperare a parolei la adresa ta de e-mail. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail. + send_paranoid_instructions: Dacă adresa ta de e-mail există în baza noastră de date, vei primi în câteva minute un link de recuperare a parolei la adresa ta de e-mail. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail. + updated: Parola ta a fost schimbată cu succes. Acum ești conectat. + updated_not_active: Parola ta a fost schimbată cu succes. + registrations: + destroyed: La revedere! Contul tău a fost anulat cu succes. Sperăm să te vedem din nou în curând. + signed_up: Bine ați venit! V-ați înregistrat cu succes. + signed_up_but_inactive: V-ați înregistrat cu succes. Cu toate acestea, nu vă putem conecta deoarece contul dvs. nu este încă activat. + signed_up_but_locked: V-ați înregistrat cu succes. Cu toate acestea, nu vă putem conecta deoarece contul dvs. este blocat. + signed_up_but_pending: Un mesaj cu un link de confirmare a fost trimis la adresa ta de e-mail. După ce faceți clic pe link, vă vom revizui cererea. Veți fi notificat dacă este aprobat. + signed_up_but_unconfirmed: Un mesaj cu un link de confirmare a fost trimis la adresa ta de e-mail. Vă rugăm să urmaţi link-ul pentru a vă activa contul. Vă rugăm să verificaţi folderul spam dacă nu aţi primit acest e-mail. + update_needs_confirmation: Ți-ai actualizat contul cu succes, dar trebuie să verificăm noua ta adresă de e-mail. Vă rugăm să verificați adresa de e-mail și să urmați link-ul de confirmare pentru a confirma noua dvs. adresă de e-mail. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail. + updated: Contul dvs. a fost actualizat cu succes. + sessions: + already_signed_out: Deconectat cu succes. + signed_in: Conectat cu succes. + signed_out: Deconectat cu succes. + unlocks: + send_instructions: Veţi primi un e-mail cu instrucţiuni despre cum să vă deblocaţi contul în câteva minute. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail. + send_paranoid_instructions: Dacă contul tău există, vei primi un e-mail cu instrucțiuni pentru cum să-l deblochezi în câteva minute. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail. + unlocked: Contul tău a fost deblocat cu succes. Te rugăm să te autentifici pentru a continua. + errors: + messages: + already_confirmed: a fost deja confirmat, încercați să vă conectați + confirmation_period_expired: trebuie să fie confirmat în %{period}, vă rugăm să solicitați unul nou + expired: a expirat, vă rugăm să solicitaţi unul nou + not_found: nu a fost găsit + not_locked: nu a fost blocat + not_saved: + few: "%{count} erori au împiedicat salvarea acestui %{resource}:" + one: 'O eroare a împiedicat salvarea acestui %{resource}:' + other: "%{count} de erori au împiedicat salvarea acestui %{resource}:" diff --git a/config/locales/devise.sc.yml b/config/locales/devise.sc.yml new file mode 100644 index 000000000..91bd6d92f --- /dev/null +++ b/config/locales/devise.sc.yml @@ -0,0 +1 @@ +sc: diff --git a/config/locales/devise.sk.yml b/config/locales/devise.sk.yml index ba2a64ed0..be85887ce 100644 --- a/config/locales/devise.sk.yml +++ b/config/locales/devise.sk.yml @@ -48,15 +48,15 @@ sk: two_factor_disabled: explanation: Dvojfázové overovanie tvojho účtu bolo vypnuté. Teraz sa môžeš prihlásiť len pomocou emailu a hesla. subject: 'Mastodon: Dvojfázové overovanie vypnuté' - title: 2FA vypnuté + title: Dvoj-faktorové overovanie vypnuté two_factor_enabled: explanation: Dvojfázové overovanie bolo zapnuté pre tvoj účet. Pre prihlásenie budeš potrebovať token vygenerovaný pre TOTP aplikáciu, ktorá je spárovaná. subject: 'Mastodon: Dvojfázové overovanie zapnuté' - title: 2FA zapnuté + title: Dvoj-faktorové overovanie zapnuté two_factor_recovery_codes_changed: explanation: Predošlé obnovovacie kódy boli urobené neplatnými a boli vygenerované nové. subject: 'Mastodon: dvojfázové zálohové kódy boli znovu vygenerované' - title: Obnovovacie kódy 2FA zmenené + title: Obnovovacie kódy pre dvoj-faktorové overovanie zmenené unlock_instructions: subject: 'Mastodon: Pokyny na odomknutie účtu' omniauth_callbacks: diff --git a/config/locales/devise.sq.yml b/config/locales/devise.sq.yml index 0380d962e..0fb59cb48 100644 --- a/config/locales/devise.sq.yml +++ b/config/locales/devise.sq.yml @@ -44,6 +44,10 @@ sq: extra: Nëse këtë s’e kërkuat ju, ju lutemi, shpërfilleni këtë email. Fjalëkalimi juaj s’do të ndryshohet pa hyrë në lidhjen më sipër dhe krijimin e një të riu. subject: 'Mastodon: Udhëzime ricaktimi fjalëkalimi' title: Ricaktim fjalëkalimi + two_factor_disabled: + title: 2FA ç'aktivizuar + two_factor_enabled: + title: 2FA aktivizuar unlock_instructions: subject: 'Mastodon: Udhëzime shkyçjeje' omniauth_callbacks: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 4c75a8816..cc17b6289 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -8,14 +8,14 @@ zh-CN: failure: already_authenticated: 你已经登录。 inactive: 你还没有激活帐户。 - invalid: "%{authentication_keys}或密码错误。" + invalid: 无效的%{authentication_keys}或密码错误。 last_attempt: 你还有最后一次尝试机会,再次失败你的帐户将被锁定。 locked: 你的帐户已被锁定。 not_found_in_database: "%{authentication_keys}或密码错误。" pending: 你的帐号仍在审核中。 - timeout: 你已登录超时,请重新登录。 + timeout: 您的会话已过期。请重新登录再继续操作。 unauthenticated: 继续操作前请注册或者登录。 - unconfirmed: 继续操作前请先确认你的帐户。 + unconfirmed: 您必须先确认您的电子邮件地址才能继续。 mailer: confirmation_instructions: action: 验证电子邮件地址 @@ -26,7 +26,7 @@ zh-CN: subject: Mastodon:确认 %{instance} 帐户信息 title: 验证电子邮件地址 email_changed: - explanation: 你的帐户的电子邮件地址即将变更为: + explanation: 你的帐户的电子邮件地址将变更为: extra: 如果你并没有请求更改你的电子邮件地址,则他人很有可能已经入侵你的帐户。请立即更改你的密码;如果你已经无法访问你的帐户,请联系服务器管理员请求协助。 subject: Mastodon:电子邮件地址已被更改 title: 新电子邮件地址 @@ -80,8 +80,8 @@ zh-CN: updated: 帐户资料更新成功。 sessions: already_signed_out: 已成功登出。 - signed_in: 登录成功。 - signed_out: 登出成功。 + signed_in: 已成功登录。 + signed_out: 已成功登出。 unlocks: send_instructions: 几分钟后,你将收到一封解锁帐户的邮件。如果没有,请检查你的垃圾邮箱。 send_paranoid_instructions: 如果你的邮箱存在于我们的数据库中,你将收到一封解锁帐户的邮件。如果没有,请检查你的垃圾邮箱。 @@ -91,7 +91,7 @@ zh-CN: already_confirmed: 已经确认成功,请尝试登录 confirmation_period_expired: 必须在 %{period}以内确认。请重新发起请求 expired: 已过期。请重新发起请求 - not_found: 找不到 + not_found: 未找到 not_locked: 未被锁定 not_saved: - other: 发生 %{count} 个错误,导致%{resource}保存失败: + other: 发生了 %{count} 个错误, %{resource} 将保存失败: diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml index 00345db76..aecb781c9 100644 --- a/config/locales/doorkeeper.cs.yml +++ b/config/locales/doorkeeper.cs.yml @@ -148,4 +148,4 @@ cs: write:mutes: skrývat lidi a konverzace write:notifications: mazat vaše oznámení write:reports: nahlašovat jiné uživatele - write:statuses: zvařejňovat tooty + write:statuses: zveřejňovat tooty diff --git a/config/locales/doorkeeper.da.yml b/config/locales/doorkeeper.da.yml index 04f524c0a..cf630195f 100644 --- a/config/locales/doorkeeper.da.yml +++ b/config/locales/doorkeeper.da.yml @@ -38,6 +38,7 @@ da: application: Applikation callback_url: Callback-URL delete: Slet + empty: Du har ingen applikationer. name: Navn new: Ny applikation scopes: Omfang diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml index abe1a96b2..34b08dd76 100644 --- a/config/locales/doorkeeper.fi.yml +++ b/config/locales/doorkeeper.fi.yml @@ -38,6 +38,7 @@ fi: application: Sovellus callback_url: Takaisinkutsu-URL delete: Poista + empty: Sinulla ei ole sovelluksia. name: Nimi new: Uusi sovellus scopes: Oikeudet diff --git a/config/locales/doorkeeper.gl.yml b/config/locales/doorkeeper.gl.yml index 281f03f84..c6c347a7f 100644 --- a/config/locales/doorkeeper.gl.yml +++ b/config/locales/doorkeeper.gl.yml @@ -5,7 +5,7 @@ gl: doorkeeper/application: name: Nome do aplicativo redirect_uri: URI a redireccionar - scopes: Permisos + scopes: Ámbitos website: Sitio web da aplicación errors: models: @@ -79,8 +79,8 @@ gl: errors: messages: access_denied: O propietario do recurso ou o servidor autorizado denegaron a petición. - credential_flow_not_configured: O fluxo do Contrasinal de Credenciais do Dono do Recurso fallou debido a que Doorkeeper.configure.resource_owner_from_credentials non están configuradas. - invalid_client: A autenticación do cliente fallou debido a un cliente descoñecido, non se incluíu autenticación do cliente, ou o método de autenticación non está soportado. + credential_flow_not_configured: O fluxo do Contrasinal de Credenciais do Dono do Recurso fallou debido a que Doorkeeper.configure.resource_owner_from_credentials non están configuradas. + invalid_client: A autenticación do cliente fallou por ser un cliente descoñecido, non se incluíu autenticación do cliente, ou o método de autenticación non está soportado. invalid_grant: A validación da autorización proporcionada non é valida, caducou, foi rexeitada, non coincide a redirección URI utilizada na petición de autorización, ou foi proporcionada para outro cliente. invalid_redirect_uri: A uri de redirección incluída non é válida. invalid_request: A petición fáltalle un parámetro requerido, inclúe un valor de parámetro non soportado, ou de algún xeito non ten o formato axeitado. @@ -99,53 +99,53 @@ gl: flash: applications: create: - notice: Aplicativo creado. + notice: Aplicación creada. destroy: - notice: Aplicativo eliminado. + notice: Aplicación eliminada. update: - notice: Aplicativo actualizado. + notice: Aplicación actualizada. authorized_applications: destroy: - notice: Aplicativo rexeitado. + notice: Aplicación revogada. layouts: admin: nav: - applications: Aplicativos - oauth2_provider: Proveedor OAuth2 + applications: Aplicacións + oauth2_provider: Provedor OAuth2 application: title: Precisa autorización OAuth scopes: admin:read: ler todos os datos no servidor admin:read:accounts: ler información sensible de todas as contas - admin:read:reports: ler información sensible de todos os informes e contas reportadas + admin:read:reports: ler información sensible de todos os informes e contas denunciadas admin:write: modificar todos os datos no servidor admin:write:accounts: executar accións de moderación nas contas - admin:write:reports: executar accións de moderación nos informes + admin:write:reports: executar accións de moderación nas denuncias follow: modificar as relacións da conta push: recibir notificacións push - read: ler todos os datos da súa conta + read: ler todos os datos da tua conta read:accounts: ver información das contas - read:blocks: ver a quen bloquea - read:bookmarks: aquí tes os marcadores - read:favourites: ver as súas favoritas - read:filters: ver os seus filtros - read:follows: ver a quen segue - read:lists: ver as súas listas - read:mutes: ver a quen ten acalado + read:blocks: ver a quen bloqueas + read:bookmarks: ver os marcadores + read:favourites: ver os favoritos + read:filters: ver os filtros + read:follows: ver a quen segues + read:lists: ver as tuas listaxes + read:mutes: ver a quen tes acalado read:notifications: ver as notificacións - read:reports: ver os seus informes - read:search: buscar no seu nome + read:reports: ver as túas denuncias + read:search: buscar no teu nome read:statuses: ver todos os estados - write: modificar todos os datos da súa conta - write:accounts: modificar o seu perfil + write: modificar todos os datos da tua conta + write:accounts: modificar o teu perfil write:blocks: bloquear contas e dominios - write:bookmarks: marca os estados + write:bookmarks: marcar os estados write:favourites: estados favoritos write:filters: crear filtros write:follows: seguir usuarias - write:lists: crear listas - write:media: subir ficheiros de medios + write:lists: crear listaxes + write:media: subir ficheiros multimedia write:mutes: acalar usuarias e conversas write:notifications: eliminar as notificacións - write:reports: informe a outras usuarias + write:reports: denunciar usuarias write:statuses: publicar estados diff --git a/config/locales/doorkeeper.pt-PT.yml b/config/locales/doorkeeper.pt-PT.yml index 2433f23e9..d492029b4 100644 --- a/config/locales/doorkeeper.pt-PT.yml +++ b/config/locales/doorkeeper.pt-PT.yml @@ -144,7 +144,7 @@ pt-PT: write:filters: criar filtros write:follows: seguir pessoas write:lists: criar listas - write:media: carregar arquivos de média + write:media: carregar arquivos de media write:mutes: silenciar pessoas e conversas write:notifications: limpar as suas notificações write:reports: reportar outras pessoas diff --git a/config/locales/doorkeeper.ro.yml b/config/locales/doorkeeper.ro.yml index 79dbaa871..3f3077c1e 100644 --- a/config/locales/doorkeeper.ro.yml +++ b/config/locales/doorkeeper.ro.yml @@ -1 +1,151 @@ +--- ro: + activerecord: + attributes: + doorkeeper/application: + name: Numele aplicației + redirect_uri: URI de redirecționare + scopes: Domenii + website: Pagina web a aplicației + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: nu poate conține un fragment. + invalid_uri: trebuie să fie un URI valid. + relative_uri: trebuie să fie un URI absolut. + secured_uri: trebuie să fie un URI HTTPS/SSL. + doorkeeper: + applications: + buttons: + authorize: Autorizează + cancel: Anulează + destroy: Distruge + edit: Editează + submit: Trimite + confirmations: + destroy: Ești sigur? + edit: + title: Editați aplicația + form: + error: Ups! Verificați formularul pentru posibile erori + help: + native_redirect_uri: Utilizați %{native_redirect_uri} pentru teste locale + redirect_uri: Folosește câte o linie per URI + scopes: Separați domeniile cu spații. Lăsați necompletat pentru a utiliza domeniile implicite. + index: + application: Aplicație + callback_url: URL pentru callback + delete: Șterge + empty: Nu aveți aplicații. + name: Nume + new: Aplicație nouă + scopes: Domenii + show: Arată + title: Aplicațiile tale + new: + title: Aplicație nouă + show: + actions: Acțiuni + application_id: Cheie client + callback_urls: URL-uri de callback + scopes: Domenii + secret: Codul secret al clientului + title: 'Aplicație: %{name}' + authorizations: + buttons: + authorize: Autorizează + deny: Interzice + error: + title: A apărut o eroare + new: + able_to: Acesta va putea să + prompt: Aplicația %{client_name} cere acces la contul dvs + title: Autorizare necesară + show: + title: Copiați acest cod de autorizare și lipiți-l în aplicație. + authorized_applications: + buttons: + revoke: Revocați + confirmations: + revoke: Ești sigur? + index: + application: Aplicație + created_at: Autorizat + date_format: "%Y-%m-%d %H:%M:%S" + scopes: Domenii + title: Aplicațiile dvs autorizate + errors: + messages: + access_denied: Proprietarul de resurse sau serverul de autorizare a refuzat cererea. + credential_flow_not_configured: Fluxul Resurselor de Acreditări Parole a eșuat din cauza faptului că Doorkeeper.configure.resource_owner_from_credentials nu este configurat. + invalid_client: Autentificarea clientului a eșuat din cauza unui client necunoscut, nici o autentificare client inclusă, sau metodă de autentificare nesuportată. + invalid_grant: Acordarea autorizației furnizată este invalidă, expirată, revocată, nu corespunde URI-ului de redirecționare folosit în cererea de autorizare, sau a fost eliberat altui client. + invalid_redirect_uri: Uri-ul de redirecționare inclus nu este valid. + invalid_request: Solicitarea îi lipsește un parametru necesar, include o valoare de parametru nesuportată sau este dealtfel formatat incorect. + invalid_resource_owner: Acreditările proprietarului de resurse nu sunt valide sau proprietarul de resurse nu poate fi găsit + invalid_scope: Domeniul de aplicare solicitat este invalid, necunoscut sau incorect. + invalid_token: + expired: Token-ul de acces a expirat + revoked: Token-ul de acces a fost revocat + unknown: Token-ul de acces nu este valid + resource_owner_authenticator_not_configured: Găsirea Proprietarului de Resurse a eșuat deoarece Doorkeeper.configure.resource_owner_authenticator nu a fost configurată. + server_error: Serverul de autorizare a întâmpinat o condiție neașteptată care l-a împiedicat să îndeplinească cererea. + temporarily_unavailable: Serverul de autorizare este în prezent incapabil să gestioneze cererea din cauza unei supraîncărcări sau întrețineri temporare a serverului. + unauthorized_client: Clientul nu este autorizat să efectueze această cerere folosind această metodă. + unsupported_grant_type: Tipul de acordare a autorizației nu este suportat de serverul de autorizare. + unsupported_response_type: Serverul de autorizare nu acceptă acest tip de răspuns. + flash: + applications: + create: + notice: Aplicație creată. + destroy: + notice: Aplicație ștearsă. + update: + notice: Aplicație actualizată. + authorized_applications: + destroy: + notice: Aplicație revocată. + layouts: + admin: + nav: + applications: Aplicaţii + oauth2_provider: Furnizor OAuth2 + application: + title: Este necesară autorizarea OAuth + scopes: + admin:read: citește toate datele de pe server + admin:read:accounts: citește informații sensibile ale tuturor conturilor + admin:read:reports: citește informații sensibile din toate rapoartele și conturile raportate + admin:write: modifică toate datele de pe server + admin:write:accounts: efectuează acțiuni de moderare pe conturi + admin:write:reports: efectuează acțiuni de moderare pe rapoarte + follow: modifică relațiile contului + push: primește notificările tale push + read: citește toate datele contului tău + read:accounts: vede informațiile privind conturile + read:blocks: vede blocurile tale + read:bookmarks: vede marcajele tale + read:favourites: vede favoritele tale + read:filters: vede filtrele tale + read:follows: vede urmăririle tale + read:lists: vede listele tale + read:mutes: vede ignorările tale + read:notifications: vede notificările tale + read:reports: vede raportările tale + read:search: caută în numele tău + read:statuses: vede toate stările + write: modifică toate datele contului tău + write:accounts: modifică profilul tău + write:blocks: blochează conturile și domeniile + write:bookmarks: marchează stările + write:favourites: favorizează stările + write:filters: creează filtre + write:follows: urmărește persoane + write:lists: creează liste + write:media: încarcă fișiere media + write:mutes: ignoră persoane și conversații + write:notifications: curăță notificările + write:reports: raportează alte persoane + write:statuses: publică stări diff --git a/config/locales/doorkeeper.sc.yml b/config/locales/doorkeeper.sc.yml new file mode 100644 index 000000000..91bd6d92f --- /dev/null +++ b/config/locales/doorkeeper.sc.yml @@ -0,0 +1 @@ +sc: diff --git a/config/locales/doorkeeper.sq.yml b/config/locales/doorkeeper.sq.yml index a1f2121f9..1541213d1 100644 --- a/config/locales/doorkeeper.sq.yml +++ b/config/locales/doorkeeper.sq.yml @@ -3,10 +3,10 @@ sq: activerecord: attributes: doorkeeper/application: - name: Emër aplikacioni + name: Emri aplikacionit redirect_uri: URI Ridrejtimi scopes: Fushëveprime - website: Sajt aplikacioni + website: Webi i aplikacionit errors: models: doorkeeper/application: @@ -19,49 +19,50 @@ sq: doorkeeper: applications: buttons: - authorize: Autorizoje - cancel: Anuloje - destroy: Asgjësoje - edit: Përpunoni - submit: Parashtroje + authorize: Autorizo + cancel: Anulo + destroy: Shkatërro + edit: Modifiko + submit: Dërgo confirmations: - destroy: A jeni i sigurt? + destroy: A jeni të sigurt? edit: - title: Përpunoni aplikacion + title: Modifiko aplikacionin form: error: Oh! Kontrolloni formularin tuaj për gabime të mundshme help: - native_redirect_uri: Përdor %{native_redirect_uri} për teste vendore + native_redirect_uri: Përdorni %{native_redirect_uri} për teste lokale redirect_uri: Përdorni një URI për rresht scopes: Ndajini fushëveprimet me hapësira. Që të përdoren fushëveprimet parazgjedhje, lëreni të zbrazët. index: application: Aplikacion - callback_url: URL Callback-u - delete: Fshije - name: Emër + callback_url: URL pasuese + delete: Fshij + empty: Nuk posedoni aplikacione. + name: Emri new: Aplikacion i ri scopes: Fushëveprime - show: Shfaqe + show: Shfaq title: Aplikacionet tuaja new: title: Aplikacion i ri show: actions: Veprime - application_id: Kyç klienti - callback_urls: URL-ra Callback + application_id: Çelësi për klient + callback_urls: URL pasuese scopes: Fushëveprime - secret: E fshehtë klienti - title: 'Aplikacion: %{name}' + secret: Sekreti për klient + title: 'Aplikacioni: %{name}' authorizations: buttons: - authorize: Autorizoje - deny: Mohoje + authorize: Autorizo + deny: Refuzo error: title: Ndodhi një gabim new: - able_to: Do të jetë në gjendje të - prompt: "%{client_name} kërkesa hyrjeje aplikacionesh te llogaria juaj" - title: Lypset autorizim + able_to: Do të jet e mundshme të + prompt: Aplikacioni %{client_name} kërkon të ketë qasje në llogarinë tuaj + title: Autorizim i domosdoshëm show: title: Kopjojeni këtë kod autorizimi dhe ngjiteni te aplikacioni. authorized_applications: @@ -114,11 +115,18 @@ sq: application: title: Lypset autorizim OAuth scopes: + admin:read: lexo gjithë të dhënat në server + admin:read:accounts: lexo të dhëna sensitive të të gjithë llogarive + admin:read:reports: lexo të dhëna sensitive të raporteve dhe të llogarive të raportuara + admin:write: modifiko gjithë të dhënat në server + admin:write:accounts: realizo veprime moderimi në llogaritë + admin:write:reports: realizo veprime moderimi në raporte follow: të ndryshojë marrëdhënies llogarish push: të marrë njoftime push për ju read: të lexojë krejt të dhënat e llogarisë tuaj read:accounts: të shohë të dhëna llogarish read:blocks: të shohë blloqet tuaja + read:bookmarks: shih shënjimet tuaja read:favourites: të shohë të parapëlqyerit tuaj read:filters: të shohë filtrat tuaj read:follows: të shohë ndjekësit tuaj @@ -131,6 +139,7 @@ sq: write: të ndryshojë krejt të dhënat e llogarisë tuaj write:accounts: të ndryshojë profilin tuaj write:blocks: të bllokojë llogari dhe përkatësi + write:bookmarks: shënjo statuse write:favourites: të parapëlqejë gjendje write:filters: të krijojë filtra write:follows: të ndjekë persona @@ -139,4 +148,4 @@ sq: write:mutes: të heshtojë persona dhe biseda write:notifications: të pastrojë njoftimet tuaja write:reports: të raportojë persona të tjerë - write:statuses: të botojë gjendje + write:statuses: publiko statuse diff --git a/config/locales/el.yml b/config/locales/el.yml index e2fe9056b..1e6254c5b 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -196,16 +196,40 @@ el: whitelisted: Εγκεκριμένοι action_logs: action_types: + assigned_to_self_report: Ανάθεση Αναφοράς change_email_user: Αλλαγή email για χρήστη + confirm_user: Επιβεβαίωση Χρήστη + create_account_warning: Δημιουργία Προειδοποίησης + create_announcement: Δημιουργία Ανακοίνωσης + create_custom_emoji: Δημιουργία Προσαρμοσμένου Emoji + create_domain_allow: Δημιουργία Επιτρεπτού Τομέα + create_domain_block: Δημιουργία Αποκλεισμένου Τομέα + create_email_domain_block: Δημουργία Αποκλεισμένου Τομέα email + demote_user: Υποβιβασμός Χρήστη + destroy_announcement: Διαγραφή Ανακοίνωσης + destroy_custom_emoji: Διαγραφή Προσαρμοσμένου Emoji + destroy_domain_allow: Διαγραφή Επιτρεπτού Τομέα + destroy_domain_block: Διαγραφή Αποκλεισμού Τομέα + destroy_email_domain_block: Διαγραφή Αποκλεισμένου Τομέα email destroy_status: Διαγραφή Κατάστασης disable_2fa_user: Απενεργοποίηση 2FA disable_custom_emoji: Απενεργοποίηση Προσαρμοσμένων Emoji disable_user: Απενεργοποίηση Χρήστη enable_custom_emoji: Ενεργοποίηση Προσαρμοσμένων Emoji enable_user: Ενεργοποίηση Χρήστη + memorialize_account: Μετατροπή Λογαριασμού σε Αναμνηστικό promote_user: Προαγωγή Χρήστη remove_avatar_user: Αφαίρεση Avatar + reopen_report: Ξανάνοιγμα Καταγγελίας + reset_password_user: Επαναφορά Συνθηματικού + resolve_report: Επίλυση Καταγγελίας silence_account: Σίγαση Λογαριασμού + suspend_account: Αναστολή Λογαριασμού + unassigned_report: Αποδέσμευση Καταγγελίας + unsilence_account: Άρση Σίγασης Λογαριασμού + unsuspend_account: Άρση Αναστολής Λογαριασμού + update_announcement: Ενημέρωση Ανακοίνωσης + update_custom_emoji: Ενημέρωση Προσαρμοσμένου Emoji update_status: Ενημέρωση Κατάστασης actions: assigned_to_self_report: Ο/Η %{name} ανάθεσε την καταγγελία %{target} στον εαυτό του/της @@ -611,6 +635,7 @@ el: add_new: Δημιουργία ψευδώνυμου created_msg: Δημιουργήθηκε νέο ψευδώνυμο. Τώρα μπορείς να ξεκινήσεις τη μεταφορά από τον παλιό λογαριασμό. deleted_msg: Αφαιρέθηκε το ψευδώνυμο. Η μεταφορά από εκείνον τον λογαριασμό σε αυτόν εδώ δε θα είναι πλέον δυνατή. + empty: Δεν έχεις ψευδώνυμα. hint_html: Αν θέλεις να μετακομίσεις από έναν άλλο λογαριασμό σε αυτόν εδώ, μπορείς εδώ να δημιουργήσεις ένα ψευδώνυμο, πράγμα που απαιτείται πριν προχωρήσεις για να μεταφέρεις τους ακολούθους σου από τον παλιό λογαριασμό σε αυτόν εδώ. Η ενέργεια αυτή είναι ακίνδυνη και αναστρέψιμη.Η μετακόμιση του λογαριασμού ξεκινάει από τον παλιό λογαριασμό. remove: Αφαίρεση ψευδώνυμου appearance: @@ -825,6 +850,8 @@ el: inactive: Ανενεργή publicize_checkbox: 'Και κάνε τουτ αυτό:' publicize_toot: 'Αποδείχτηκε! Λέγομαι %{username} στο %{service}: %{url}' + remove: Αφαίρεση απόδειξης από τον λογαριασμό + removed: Επιτυχής αφαίρεση απόδειξης από τον λογαριασμό status: Κατάσταση επαλήθευσης view_proof: Εμφάνιση απόδειξης imports: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index a558efc51..4f398763f 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -187,6 +187,10 @@ eo: web: Reto whitelisted: En la blanka listo action_logs: + action_types: + disable_user: Malebligi uzanton + enable_user: Ebligi uzanton + reopen_report: Remalfermi signalon actions: assigned_to_self_report: "%{name} asignis signalon %{target} al si mem" change_email_user: "%{name} ŝanĝis retadreson de uzanto %{target}" diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index b71ea5f39..bfed20eab 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -635,6 +635,7 @@ es-AR: add_new: Crear alias created_msg: El nuevo alias se creó exitosamente. Ahora podés empezar la mudanza desde la cuenta vieja. deleted_msg: Eliminaste el alias exitosamente. La mudanza de esa cuenta a esta ya no será posible. + empty: No tenés alias. hint_html: Si querés mudarte desde otra cuenta a esta, acá podés crear un alias, el cual es necesario antes de empezar a mudar seguidores de la cuenta vieja a esta. Esta acción por sí misma es inofensiva y reversible. La migración de la cuenta se inicia desde la cuenta anterior. remove: Desenlazar alias appearance: @@ -849,6 +850,8 @@ es-AR: inactive: Inactiva publicize_checkbox: 'Y tooteá esto:' publicize_toot: "¡Comprobado! Soy %{username} en %{service}: %{url}" + remove: Quitar prueba de cuenta + removed: Se quitó la prueba de cuenta exitosamente status: Estado de verificación view_proof: Ver prueba imports: diff --git a/config/locales/es.yml b/config/locales/es.yml index fac96aadf..f58b44c77 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -635,6 +635,7 @@ es: add_new: Crear alias created_msg: El nuevo alias se ha creado correctamente. Ahora puedes empezar el traslado desde la cuenta antigua. deleted_msg: Elimina el alias correctamente. El traslado de esa cuenta a esta ya no será posible. + empty: No tienes ningún alias. hint_html: Si quieres migrar de otra cuenta a esta, aquí puedes crear un alias, es necesario proceder antes de empezar a mover seguidores de la cuenta anterior a esta. Esta acción por sí misma es inofensiva y reversible. La migración de la cuenta se inicia desde la cuenta antigua. remove: Desvincular alias appearance: @@ -849,6 +850,8 @@ es: inactive: Inactivo publicize_checkbox: 'Y tootee esto:' publicize_toot: "¡Comprobado! Soy %{username} en %{service}: %{url}" + remove: Eliminar prueba de la cuenta + removed: Prueba eliminada con éxito de la cuenta status: Estado de la verificación view_proof: Ver prueba imports: diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 868dd8bcf..fda99a72c 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -219,6 +219,7 @@ fa: disable_user: از کار انداختن کاربر enable_custom_emoji: به کار انداختن اموجی سفارشی enable_user: به کار انداختن کاربر + memorialize_account: یادسپاری حساب promote_user: ترفیع کاربر remove_avatar_user: برداشتن تصویر نمایه reopen_report: بازگشایی گزارش @@ -636,6 +637,7 @@ fa: add_new: ساختن نام مستعار created_msg: نام مستعار تازه با موفقیت ساخته شد. الان می‌توانید انتقال از حساب قدیمی را آغاز کنید. deleted_msg: نام مستعار با موفقیت حذف شد. انتقال از آن حساب به حساب فعلی دیگر ممکن نیست. + empty: هیچ نام مستعاری ندارید. hint_html: اگر می‌خواهید از حساب دیگری به این حساب منتقل شوید، این‌جا می‌توانید یک نام مستعار بسازید که برای انتقال از حساب قدیمی به این حساب لازم است. این کار به تنهایی بی‌ضرر و قابل بازگشت است. فرایند انتقال حساب از حساب قدیمی آغاز خواهد شد. remove: حذف ارتباط نام مستعار appearance: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 1b259d7c9..bc3bc0d2f 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -635,6 +635,7 @@ fr: add_new: Créer un alias created_msg: Un nouvel alias a été créé avec succès. Vous pouvez maintenant déménager depuis l'ancien compte. deleted_msg: Alias supprimé avec succès. Le déménagement de ce compte vers celui-ci ne sera plus possible. + empty: Vous n’avez pas d’alias. hint_html: Si vous voulez déménager d’un autre compte vers celui-ci, vous pouvez créer ici un alias, qui est nécessaire avant de pouvoir migrer les abonné·e·s de l’ancien compte vers celui-ci. Cette action en soi est inoffensive et réversible. La migration du compte est initiée à partir de l’ancien compte. remove: Détacher l'alias appearance: @@ -849,6 +850,8 @@ fr: inactive: Inactive publicize_checkbox: 'Et le poueter :' publicize_toot: 'C’est prouvé ! Je suis %{username} sur %{service}: %{url}' + remove: Retirer une preuve du compte + removed: Preuve retirée du compte avec succès status: État de la vérification view_proof: Voir la preuve imports: @@ -908,7 +911,7 @@ fr: not_found: n'a pas été trouvé on_cooldown: Vous êtes soumis·e à un temps de rechargement followers_count: Abonné·e·s au moment du déménagement - incoming_migrations: Déplacement d'un compte différent + incoming_migrations: Déplacement depuis un compte différent incoming_migrations_html: Pour déménager d'un autre compte à celui-ci, vous devez d'abord créer un alias de compte. moved_msg: Votre compte est maintenant redirigé vers %{acct} et vos abonné·e·s sont en train d'être déplacé·e·s. not_redirecting: Votre compte n'est pas redirigé vers un autre compte actuellement. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 35d8ac2d6..d92e06761 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -51,7 +51,7 @@ gl: accounts: choices_html: 'Escollas de %{name}:' endorsements_hint: Podes suxerir a persoas que segues dende a interface web, e amosaranse aquí. - featured_tags_hint: Podes destacar determinadas etiquetas que se amosarán aquí. + featured_tags_hint: Podes destacar determinados cancelos que se amosarán aquí. follow: Seguir followers: one: Seguidora @@ -197,28 +197,28 @@ gl: action_logs: action_types: assigned_to_self_report: Asignar denuncia - change_email_user: Editar email do usuario - confirm_user: Confirmar usuario + change_email_user: Editar email da usuaria + confirm_user: Confirmar usuaria create_account_warning: Crear aviso create_announcement: Crear anuncio create_custom_emoji: Crear emoticonas personalizadas create_domain_allow: Crear permiso de dominio create_domain_block: Crear bloqueo de dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico - demote_user: Degradar usuario + demote_user: Degradar usuaria destroy_announcement: Eliminar anuncio destroy_custom_emoji: Eliminar emoticona personalizada destroy_domain_allow: Eliminar permiso de dominio destroy_domain_block: Eliminar bloqueo de dominio destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico destroy_status: Eliminar estado - disable_2fa_user: Desactivar autenticación de dous factores - disable_custom_emoji: Deshabilitar emoticona personalizada - disable_user: Deshabilitar usuario - enable_custom_emoji: Habilitar emoticona personalizada - enable_user: Activar usuario + disable_2fa_user: Desactivar 2FA + disable_custom_emoji: Desactivar emoticona personalizada + disable_user: Desactivar usuaria + enable_custom_emoji: Activar emoticona personalizada + enable_user: Activar usuaria memorialize_account: Transformar en conta conmemorativa - promote_user: Promover usuario + promote_user: Promover usuaria remove_avatar_user: Eliminar avatar reopen_report: Reabrir denuncia reset_password_user: Restabelecer contrasinal @@ -270,7 +270,7 @@ gl: deleted_status: "(estado eliminado)" empty: Non se atoparon rexistros. filter_by_action: Filtrar por acción - filter_by_user: Filtrar por usuario + filter_by_user: Filtrar por usuaria title: Rexistro de auditoría announcements: destroyed_msg: Anuncio eliminado de xeito correcto! @@ -530,7 +530,7 @@ gl: title: Activar o directorio de perfil registrations: closed_message: - desc_html: Mostrado na páxina de portada cando o rexistro está pechado. Pode utilizar etiquetas HTML + desc_html: Mostrado na páxina de portada cando o rexistro está pechado. Pode utilizar cancelos HTML title: Mensaxe de rexistro pechado deletion: desc_html: Permitirlle a calquera que elimine a súa conta @@ -551,16 +551,16 @@ gl: desc_html: Mostrar unha insignia de membresía nunha páxina de usuaria title: Mostrar insigna de membresía site_description: - desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar etiquetas HTML, en particular <a> e <em>. + desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar cancelos HTML, en particular <a> e <em>. title: Descrición do servidor site_description_extended: - desc_html: Un bo lugar para o teu código de conduta, regras, guías e outras cousas para diferenciar o teu servidor. Podes empregar etiquetas HTML + desc_html: Un bo lugar para o teu código de conduta, regras, guías e outras cousas para diferenciar o teu servidor. Podes empregar cancelos HTML title: Información extendida da personalización site_short_description: - desc_html: Amosado na barra lateral e nas etiquetas meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor. + desc_html: Amosado na barra lateral e nos cancelos meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor. title: Descrición curta do servidor site_terms: - desc_html: Podes escribir a túa propia política de privacidade, termos de servizo ou aclaracións legais. Podes empregar etiquetas HTML + desc_html: Podes escribir a túa propia política de privacidade, termos de servizo ou aclaracións legais. Podes empregar cancelos HTML title: Termos de servizo personalizados site_title: Nome do servidor spam_check_enabled: @@ -635,6 +635,7 @@ gl: add_new: Crear alcume created_msg: Creou un novo alcume correctamente. Pode iniciar o movemento desde a conta antiga. deleted_msg: Eliminou correctamente o alcume. Xa non será posible mover desde esa conta a esta. + empty: Non tes alcumes. hint_html: Se queres mudarte desde outra conta a esta nova, aquí podes crear un alcume, que é requerido antes de poder proceder a mover os seguidores da conta antiga a esta nova. Esta acción por si mesma é inocua e reversible. A migración da conta iníciase desde a conta antiga. remove: Desligar alcume appearance: @@ -796,7 +797,7 @@ gl: add_new: Engadir novo errors: limit: Xa acadaches o número máximo de cancelos - hint_html: "¿Qué son as etiquetas destacadas? Móstranse destacadas no seu perfil público e permítenlle a outras persoas ver os seus toots públicos nos que as utilizou. Son unha ferramenta moi útil para facer seguimento de traballos creativos e proxectos a longo prazo." + hint_html: "¿Qué son os cancelos destacados? Móstranse destacados no teu perfil público e permítenlle a outras persoas ver os teus toots públicos nos que os utilizaches. Son unha ferramenta moi útil para facer seguimento de traballos creativos e proxectos a longo prazo." filters: contexts: account: Perfís @@ -832,7 +833,7 @@ gl: one: Algo non está ben de todo! Por favor revise abaixo o erro other: Algo aínda non está ben! Por favor revise os %{count} erros abaixo html_validator: - invalid_markup: 'contén etiquetas HTML non válidas: %{error}' + invalid_markup: 'contén cancelos HTML non válidas: %{error}' identity_proofs: active: Activo authorize: Si, autorizar @@ -849,6 +850,8 @@ gl: inactive: Inactiva publicize_checkbox: 'E tootee esto:' publicize_toot: 'Comprobado! Eu son %{username} en %{service}: %{url}' + remove: Quitar a verificación da conta + removed: Quitaches correctamente a verificación da conta status: Estado da validación view_proof: Ver proba imports: @@ -1286,7 +1289,7 @@ gl: edit_profile_step: Podes personalizar o teu perfil subindo un avatar, cabeceira, cambiar o nome público e aínda máis. Se restrinxes a tua conta podes revisar a conta das persoas que solicitan seguirte antes de permitirlles o acceso aos teus toots. explanation: Aquí ten alunhas endereitas para ir aprendendo final_action: Comece a publicar - final_step: 'Publique! Incluso sin seguidoras as súas mensaxes serán vistas por outras, por exemplo na liña temporal local e nas etiquetas. Podería presentarse no #fediverso utilizando a etiqueta #introductions.' + final_step: 'Publica! Incluso sen seguidoras as túas mensaxes serán vistas por outras, por exemplo na liña temporal local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.' full_handle: O seu alcume completo full_handle_hint: Esto é o que lle dirá aos seus amigos para que poidan seguila ou enviarlle mensaxes desde outro servidor. review_preferences_action: Cambiar preferencias diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 30331b2cb..6b444b478 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -111,7 +111,7 @@ hu: deleted: Törölve demote: Lefokozás disable: Kikapcsolás - disable_two_factor_authentication: Kétlépcsős azonosítás kikapcsolása + disable_two_factor_authentication: Kétlépcsős hitelesítés kikapcsolása disabled: Kikapcsolva display_name: Megjelenített név domain: Domain @@ -123,7 +123,7 @@ hu: followers: Követő follows: Követett header: Fejléc - inbox_url: Beérkezett üzenetek URL + inbox_url: Beérkezett üzenetek URL-je invited_by: Meghívta ip: IP joined: Csatlakozott @@ -635,7 +635,8 @@ hu: add_new: Alias készítése created_msg: Elkészült az új aliasod. Most már elkezdheted a költöztetést a régi fiókból. deleted_msg: Sikeresen eltávolítottad az aliast. A fiókról erre a fiókra való áttérés már nem lehetséges. - hint_html: Ha másik fiókról kívánsz átlépni erre a fiókra, itt létrehozhatsz egy aliast, amelyre szükség van, mielőtt folytathatod a követők áthelyezését a régi fiókból erre. Ez az áthelyezés önmagában ártalmatlan és visszafordítható folyamat. A fiók áttelepítését a régi fiókból indul el. + empty: Nincsenek aliasaid. + hint_html: Ha másik fiókról kívánsz átlépni erre a fiókra, itt létrehozhatsz egy aliast, amelyre szükség van, mielőtt folytathatod a követők áthelyezését a régi fiókból erre. Ez az áthelyezés önmagában ártalmatlan és visszafordítható folyamat. A fiók áttelepítése a régi fiókból indul el. remove: Alias szétkapcsolása appearance: advanced_web_interface: Haladó webes felület @@ -849,6 +850,8 @@ hu: inactive: Inaktív publicize_checkbox: 'És ezt tülköld ki:' publicize_toot: 'Tanúsítva! %{username} vagyok %{service}: %{url} szerveren' + remove: Tanúsítás eltávolítása a fiókról + removed: Leszedtük a tanúsítást a fiókról status: Ellenőrzés állapota view_proof: Tanúsítás megtekintése imports: @@ -1240,7 +1243,7 @@ hu: mastodon-light: Mastodon (Világos) time: formats: - default: "%Y %b %d, %H:%M" + default: "%Y. %b %d., %H:%M" month: "%Y %b" two_factor_authentication: code_hint: Megerősítéshez írd be az alkalmazás által generált kódot diff --git a/config/locales/id.yml b/config/locales/id.yml index 27bfccc22..c22c75bd9 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -191,6 +191,27 @@ id: web: Web whitelisted: Masuk daftar putih action_logs: + action_types: + change_email_user: Ubah Surel untuk Pengguna + confirm_user: Konfirmasi Pengguna + create_account_warning: Buat Peringatan + create_announcement: Buat Pengumuman + create_custom_emoji: Buat Emoji Khusus + create_domain_allow: Buat Izin Domain + create_domain_block: Buat Blokir Domain + create_email_domain_block: Buat Surel Blokir Domain + demote_user: Turunkan Pengguna + destroy_announcement: Hapus Pengumuman + destroy_custom_emoji: Hapus Emoji Khusus + destroy_domain_allow: Hapus Izin Domain + destroy_domain_block: Hapus Blokir Domain + destroy_email_domain_block: Hapus surel blokir domain + destroy_status: Hapus Status + disable_2fa_user: Nonaktifkan 2FA + disable_custom_emoji: Nonaktifkan Emoji Khusus + disable_user: Nonaktifkan Pengguna + enable_custom_emoji: Aktifkan Emoji Khusus + enable_user: Aktifkan Pengguna actions: assigned_to_self_report: "%{name} menugaskan laporan %{target} kpd dirinya sendiri" change_email_user: "%{name} mengubah alamat surel pengguna %{target}" diff --git a/config/locales/is.yml b/config/locales/is.yml index 7e681e736..2138068e5 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -635,6 +635,7 @@ is: add_new: Búa til samnefni (alias) created_msg: Tókst að búa til samnefni. Þú getur núna byrjað að færa gögn af gamla aðgangnum. deleted_msg: Tókst að fjarlægja samnefnið. Flutningur af þeim notandaaðgangi yfir á þennan er ekki lengur mögulegur. + empty: Þú ert ekki með nein samnefni. hint_html: Ef þú vilt flytjast af öðrum notandaaðgangi yfir á þennan, þá geturðu búið hér til samnefni, sem er nauðsynlegt áður en þú getur haldið áfram við að flytja fylgjendur af gamla notandaaðgangnum yfir á þennan aðgang. Þessi aðgerð er í sjálfu sér skaðlaus og afturkræf. Yfirfærsla notandaaðgangsins er síðan ræst á gamla notandaaðgangnum. remove: Aftengja samnefni appearance: @@ -849,6 +850,8 @@ is: inactive: Óvirkt publicize_checkbox: 'Og tísti þetta:' publicize_toot: 'Það er búið að sanna þetta! Ég er %{username} á %{service}: %{url}' + remove: Fjarlægja sönnun úr notandaaðgangi + removed: Tókst að fjarlægja sönnun úr notandaaðgangi status: Staða sannvottunar view_proof: Skoða sönnun imports: @@ -1082,7 +1085,7 @@ is: settings: account: Notandaaðgangur account_settings: Stillingar notandaaðgangs - aliases: Samheiti notandaaðgangs + aliases: Samnefni notandaaðgangs appearance: Útlit authorized_apps: Leyfð forrit back: Til baka í Mastodon diff --git a/config/locales/it.yml b/config/locales/it.yml index 2cc6d50d2..4a9fe507a 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -635,6 +635,7 @@ it: add_new: Crea alias created_msg: Hai creato un nuovo alias. Ora puoi iniziare lo spostamento dal vecchio account. deleted_msg: L'alias è stato eliminato. Lo spostamento da quell'account a questo non sarà più possibile. + empty: Non hai alias. hint_html: Se vuoi trasferirti da un altro account a questo, qui puoi creare un alias, che è necessario prima di poter spostare i seguaci dal vecchio account a questo. Questa azione è innocua e reversibile. La migrazione dell'account è avviata dal vecchio account. remove: Scollega alias appearance: @@ -850,6 +851,8 @@ it: inactive: Inattiva publicize_checkbox: 'E posta questo:' publicize_toot: 'É provato! Io sono %{username} su %{service}: %{url}' + remove: Elimina prova dall'account + removed: Prova eliminata dall'account status: Stato della verifica view_proof: Vedi prova imports: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 95a2f69c9..8a8baf764 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -627,6 +627,7 @@ ja: add_new: エイリアスを作成 created_msg: エイリアスを作成しました。これで以前のアカウントから引っ越しを開始できます。 deleted_msg: エイリアスを削除しました。指定されていたアカウントからは引っ越しできなくなります。 + empty: エイリアスがありません。 hint_html: 他のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。エイリアス自体は無害で、取り消すことができます。引っ越しは以前のアカウント側から開始する必要があります。 remove: エイリアスを削除 appearance: @@ -840,6 +841,8 @@ ja: inactive: 非アクティブ publicize_checkbox: 'そしてこれをトゥートします:' publicize_toot: 'It is proven! I am %{username} on %{service}: %{url}' + remove: アカウントから証明書を削除 + removed: アカウントから証明書を削除することに成功しました status: 認証状態 view_proof: 証明を表示 imports: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 2ac3fb39d..e1f543fe0 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -629,6 +629,7 @@ ko: add_new: 별칭 만들기 created_msg: 새 별칭이 성공적으로 만들어졌습니다. 이제 기존 계정에서 이주를 시작할 수 있습니다. deleted_msg: 성공적으로 별칭을 삭제했습니다. 해당 계정에서 이 계정으로의 이주는 더이상 가능하지 않습니다. + empty: 별칭이 없습니다. hint_html: 다른 계정에서 이 계정으로 옮기길 원하는 경우, 여기에서 별칭을 만들 수 있습니다, 기존 계정의 팔로워를 이쪽으로 옮기고 싶은 경우 필요한 과정입니다. 이 행동 자체는 해롭지 않고 되돌리기가 가능합니다.계정 이주는 이전 계정에서 착수하게 됩니다 remove: 별칭 연결 끊기 appearance: @@ -842,6 +843,8 @@ ko: inactive: 비활성 publicize_checkbox: '그리고 이것을 툿 하세요:' publicize_toot: '증명되었습니다! 저는 %{service}에 있는 %{username}입니다: %{url}' + remove: 계정증명을 삭제 + removed: 성공적으로 계정증명을 삭제했습니다 status: 인증 상태 view_proof: 증명 보기 imports: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index f83646a7b..d47956c72 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -90,6 +90,7 @@ nn: delete: Slett destroyed_msg: Moderatormerknad er utsletta! accounts: + add_email_domain_block: Svartelist E-postdomenet approve: Godtak approve_all: Godtak alle are_you_sure: Er du sikker? @@ -170,6 +171,7 @@ nn: staff: Personell user: Brukar search: Søk + search_same_email_domain: Andre brukere med samme E-postdomene search_same_ip: Andre brukarar med same IP shared_inbox_url: Delt Innboks URL show: @@ -191,6 +193,24 @@ nn: web: Nett whitelisted: Kvitlista action_logs: + action_types: + change_email_user: Endre brukerens E-postadresse + confirm_user: Bekreft brukeren + create_account_warning: Opprett en advarsel + create_announcement: Opprett en kunngjøring + create_custom_emoji: Opprett en tilpasset emoji + destroy_announcement: Slett kunngjøringen + destroy_custom_emoji: Slett den tilpassede emojien + destroy_status: Slett statusen + disable_2fa_user: Skru av 2-trinnsinnlogging + disable_user: Deaktiver bruker + enable_user: Aktiver bruker + reopen_report: Gjenåpne rapporten + reset_password_user: Tilbakestill passord + suspend_account: Suspender kontoen + unsuspend_account: Opphev suspensjonen av kontoen + update_announcement: Oppdater kunngjøringen + update_status: Oppdater statusen actions: assigned_to_self_report: "%{name} tilegnet rapport %{target} til seg selv" change_email_user: "%{name} endra e-postadressa til brukaren %{target}" @@ -228,6 +248,9 @@ nn: update_custom_emoji: "%{name} oppdaterte kjensleteiknet %{target}" update_status: "%{name} oppdaterte status for %{target}" deleted_status: "(sletta status)" + empty: Ingen loggføringer ble funnet. + filter_by_action: Sorter etter handling + filter_by_user: Sorter etter bruker title: Revisionslogg announcements: destroyed_msg: Kunngjøringen er slettet! @@ -356,6 +379,7 @@ nn: destroyed_msg: E-postdomenet har blitt fjernet fra blokkeringslisten uten problemer domain: Domene empty: Ingen e-mail-domener er sortelistet på dette tidspunkt. + from_html: fra %{domain} new: create: Legg til domene title: Ny blokkeringsoppføring av e-postdomene @@ -528,6 +552,8 @@ nn: title: Tillat emneknaggar å verta populære utan gjennomgang på førehand trends: title: Populære emneknaggar + site_uploads: + delete: Slett den opplastede filen statuses: back_to_account: Tilbake til kontosida batch: @@ -581,6 +607,7 @@ nn: add_new: Lag psevdonym created_msg: Laga eit nytt kallenamn. No kan du setja i gang med flyttinga frå den gamle kontoen. deleted_msg: Fjerna kallenamnet. No vert det ikkje lenger mogeleg å flytta frå den andre kontoen til denne. + empty: Du har ingen aliaser. hint_html: Dersom du vil flytte fra en annen konto til den, kan du lage et alias her, som er påkrevd før du kan gå videre med å flytte følgere fra den gamle kontoen til den nye. Handlingen i seg selv er harmløs og reversibel. Kontoflyttingen har blitt satt i gang fra den gamle kontoen. remove: Fjern aliaslenking appearance: @@ -838,6 +865,7 @@ nn: already_moved: er den same kontoen som du allereie har flytta til move_to_self: kan ikkje vera denne kontoen not_found: fann ikkje + on_cooldown: Du er i en nedkjølingsperiode followers_count: Fylgjarar då kontoen vart flytta incoming_migrations: Flyttar frå ein annan konto incoming_migrations_html: For å flytta frå ein annnan konto til denne må du fyrst laga eit kallenamn til kontoen. @@ -921,6 +949,7 @@ nn: reactions: errors: limit_reached: Grensen for forskjellige reaksjoner nådd + unrecognized_emoji: er ikke en gjenkjent emoji relationships: activity: Kontoaktivitet dormant: I dvale @@ -1016,6 +1045,8 @@ nn: profile: Profil relationships: Fylgjar og fylgjarar two_factor_authentication: Tostegsautorisering + spam_check: + spam_detected: Dette er en automatisert rapport. Spam har blitt oppdaget. statuses: attached: description: 'Vedlagt: %{attached}' @@ -1047,6 +1078,7 @@ nn: other: "%{count} røyster" vote: Røyst show_more: Vis meir + show_thread: Vis tråden sign_in_to_participate: Logg inn for å verta med i samtalen title: "%{name}: «%{quote}»" visibilities: diff --git a/config/locales/no.yml b/config/locales/no.yml index 4a1b859dc..24dc22284 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -92,6 +92,7 @@ delete: Slett destroyed_msg: Moderasjonsnotat slettet uten problem! accounts: + add_email_domain_block: Svartelist E-postdomenet approve: Godkjenn approve_all: Godkjenn alle are_you_sure: Er du sikker? @@ -172,6 +173,7 @@ staff: Personale user: Bruker search: Søk + search_same_email_domain: Andre brukere med samme E-postdomene search_same_ip: Andre brukere med den samme IP-en shared_inbox_url: Delt Innboks URL show: @@ -193,6 +195,24 @@ web: Nett whitelisted: Hvitelistet action_logs: + action_types: + change_email_user: Endre brukerens E-postadresse + confirm_user: Bekreft brukeren + create_account_warning: Opprett en advarsel + create_announcement: Opprett en kunngjøring + create_custom_emoji: Opprett en tilpasset emoji + destroy_announcement: Slett kunngjøringen + destroy_custom_emoji: Slett den tilpassede emojien + destroy_status: Slett statusen + disable_2fa_user: Skru av 2-trinnsinnlogging + disable_user: Deaktiver bruker + enable_user: Aktiver bruker + reopen_report: Gjenåpne rapporten + reset_password_user: Tilbakestill passord + suspend_account: Suspender kontoen + unsuspend_account: Opphev suspensjonen av kontoen + update_announcement: Oppdater kunngjøringen + update_status: Oppdater statusen actions: assigned_to_self_report: "%{name} tilegnet rapport %{target} til seg selv" change_email_user: "%{name} forandret e-postadressen for bruker %{target}" @@ -230,6 +250,9 @@ update_custom_emoji: "%{name} oppdaterte emoji %{target}" update_status: "%{name} oppdaterte status for %{target}" deleted_status: "(statusen er slettet)" + empty: Ingen loggføringer ble funnet. + filter_by_action: Sorter etter handling + filter_by_user: Sorter etter bruker title: Revisionslogg announcements: destroyed_msg: Kunngjøringen er slettet! @@ -358,6 +381,7 @@ destroyed_msg: E-postdomenet har blitt fjernet fra blokkeringslisten uten problemer domain: Domene empty: Ingen e-mail-domener er sortelistet på dette tidspunkt. + from_html: fra %{domain} new: create: Legg til domene title: Ny blokkeringsoppføring av e-postdomene @@ -527,6 +551,8 @@ title: Nettstedsinnstillinger trends: title: Trendende emneknagger + site_uploads: + delete: Slett den opplastede filen statuses: back_to_account: Tilbake til kontosiden batch: @@ -573,6 +599,7 @@ body: 'Emneknaggen #%{name} trender i dag, men den har ikke blitt gjennomgått tidligere. Den vil ikke bli vist offentlig med mindre du tillater at den blir det, eller du kan bare lagre skjemaet slik det er for å aldri høre om det igjen.' aliases: add_new: Lag et alias + empty: Du har ingen aliaser. hint_html: Dersom du vil flytte fra en annen konto til den, kan du lage et alias her, som er påkrevd før du kan gå videre med å flytte følgere fra den gamle kontoen til den nye. Handlingen i seg selv er harmløs og reversibel. Kontoflyttingen har blitt satt i gang fra den gamle kontoen. remove: Fjern aliaslenking appearance: @@ -828,6 +855,8 @@ already_moved: er den samme kontoen du allerede har flyttet til move_to_self: kan ikke være den nåværende kontoen not_found: ble ikke funnet + on_cooldown: Du er i en nedkjølingsperiode + followers_count: Følgere på flyttetidspunktet incoming_migrations: Flytte fra en annen konto incoming_migrations_html: For å flytte fra en annen konto til denne, må du først sette opp et kontoalias. past_migrations: Tidligere migreringer @@ -895,6 +924,7 @@ polls: errors: already_voted: Du har allerede stemt i denne avstemningen + duplicate_options: inneholder duplikatgjenstander duration_too_long: er for langt frem i tid duration_too_short: er for snart expired: Denne avstemningen er allerede ferdig @@ -909,6 +939,7 @@ reactions: errors: limit_reached: Grensen for forskjellige reaksjoner nådd + unrecognized_emoji: er ikke en gjenkjent emoji relationships: activity: Kontoaktivitet dormant: Dormende @@ -1004,6 +1035,8 @@ profile: Profil relationships: Følginger og følgere two_factor_authentication: Tofaktorautentisering + spam_check: + spam_detected: Dette er en automatisert rapport. Spam har blitt oppdaget. statuses: attached: description: 'Vedlagt: %{attached}' @@ -1031,6 +1064,7 @@ other: "%{count} stemmer" vote: Stem show_more: Vis mer + show_thread: Vis tråden sign_in_to_participate: Logg på for å delta i samtalen title: "%{name}: «%{quote}»" visibilities: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index c8bad6de3..e17986772 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -651,6 +651,7 @@ pl: add_new: Utwórz alias created_msg: Pomyślnie utworzono nowy alias. Możesz teraz rozpocząć przenoszenie ze starego konta. deleted_msg: Pomyślnie usunięto alias. Przenoszenie z tamtego konta na to nie będzie dłużej możliwe. + empty: Nie masz żadnych aliasów. hint_html: Jeżeli chcesz przenieść się z innego konta na to, możesz utworzyć alias, który jest wymagany zanim zaczniesz przenoszenie obserwacji z poprzedniego konta na to. To działanie nie wyrządzi szkód i jest odwracalne. Migracja konta jest inicjowana ze starego konta. remove: Odłącz alias appearance: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 45f2b22d1..bdee8d695 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -92,7 +92,7 @@ pt-BR: delete: Excluir destroyed_msg: Nota de moderação excluída com sucesso! accounts: - add_email_domain_block: Adicionar o domínio de email à lista negra + add_email_domain_block: Adicionar o domínio de e-mail à lista negra approve: Aprovar approve_all: Aprovar tudo are_you_sure: Você tem certeza? @@ -203,14 +203,14 @@ pt-BR: create_announcement: Criar Anúncio create_custom_emoji: Criar Emoji Personalizado create_domain_allow: Adicionar domínio permitido - create_domain_block: Adicionar domínio bloqueado - create_email_domain_block: Adicionar domínio de e-mail bloqueado - demote_user: Despromover Utilizador + create_domain_block: Criar Bloqueio de Domínio + create_email_domain_block: Criar Bloqueio de Domínio de E-mail + demote_user: Rebaixar usuário destroy_announcement: Excluir anúncio destroy_custom_emoji: Excluir emoji personalizado destroy_domain_allow: Excluir domínio permitido - destroy_domain_block: Excluir domínio bloqueado - destroy_email_domain_block: Excluir domínio de e-mail bloqueado + destroy_domain_block: Excluir Bloqueio de Domínio + destroy_email_domain_block: Excluir bloqueio de domínio de e-mail destroy_status: Excluir Status disable_2fa_user: Desativar autenticação de dois fatores disable_custom_emoji: Desativar Emoji Personalizado @@ -226,8 +226,8 @@ pt-BR: silence_account: Silenciar conta suspend_account: Suspender Conta unassigned_report: Remover relatório - unsilence_account: Deixar de Silenciar Conta - unsuspend_account: Retirar Suspensão à Conta + unsilence_account: Desfazer silenciar conta + unsuspend_account: Remover suspensão de conta update_announcement: Editar anúncio update_custom_emoji: Editar Emoji Personalizado update_status: Editar Status @@ -263,7 +263,7 @@ pt-BR: suspend_account: "%{name} baniu a conta de %{target}" unassigned_report: "%{name} largou a denúncia %{target}" unsilence_account: "%{name} desativou o silêncio de %{target}" - unsuspend_account: "%{name} desbaniu %{target}" + unsuspend_account: "%{name} removeu a suspensão da conta de %{target}" update_announcement: "%{name} atualizou o anúncio %{target}" update_custom_emoji: "%{name} atualizou o emoji %{target}" update_status: "%{name} atualizou o status de %{target}" @@ -353,31 +353,31 @@ pt-BR: destroyed_msg: Domínio foi bloqueado undo: Bloquear domain_blocks: - add_new: Novo bloqueio de domínio + add_new: Adicionar novo bloqueio de domínio created_msg: Domínio está sendo bloqueado destroyed_msg: Domínio desbloqueado domain: Domínio edit: Editar bloqueio de domínio - existing_domain_block_html: Você já bloqueou %{name}, é necessário desbloqueá-lo primeiro. + existing_domain_block_html: Você já impôs limites mais estritos em %{name}, você precisa desbloqueá-lo primeiro. new: create: Criar bloqueio - hint: O bloqueio de domínio não prevenirá a criação de entradas de contas na base de dados, mas vai retroativamente e automaticamente aplicar métodos específicos de moderação nestas contas. + hint: O bloqueio de domínio não vai prevenir a criação de entradas de contas na base de dados, mas vai retroativamente e automaticamente aplicar métodos específicos de moderação nessas contas. severity: - desc_html: "Silenciar fará com que os toots da conta fiquem invisíveis para qualquer um que não a esteja seguindo. Banir removerá todo o conteúdo da conta, mídia e dados do perfil. Use Nenhum se você apenas deseja recusar os arquivos de mídia." + desc_html: "Silenciar vai fazer os posts da conta invisíveis para qualquer um que não os esteja seguindo. Suspender vai remover todo o conteúdo, mídia, e dados de perfil da conta. Use Nenhum se você só quer rejeitar arquivos de mídia." noop: Nenhum silence: Silenciar suspend: Banir - title: Bloquear domínio + title: Novo bloqueio de domínio private_comment: Comentário privado private_comment_hint: Comente sobre essa restrição ao domínio para uso interno dos moderadores. public_comment: Comentário público public_comment_hint: Comente sobre essa restrição ao domínio para o público geral, caso a divulgação da lista de bloqueio esteja ativada. - reject_media: Recusar arquivos de mídia - reject_media_hint: Remove arquivos de mídia armazenados localmente e recusa quaisquer outros no futuro. Irrelevante para banimentos - reject_reports: Recusar denúncias - reject_reports_hint: Ignora todas as denúncias vindas deste domínio. Irrelevante para banimentos - rejecting_media: recusando arquivos de mídia - rejecting_reports: recusando denúncias + reject_media: Rejeitar arquivos de mídia + reject_media_hint: Remove arquivos de mídia armazenados localmente e recusa fazer download de qualquer um no futuro. Irrelevante para suspensões + reject_reports: Rejeitar denúncias + reject_reports_hint: Ignora todas as denúncias vindo deste domínio. Irrelevante para suspensões + rejecting_media: rejeitando arquivos de mídia + rejecting_reports: rejeitando denúncias severity: silence: silenciado suspend: banido @@ -386,24 +386,24 @@ pt-BR: one: Uma conta no banco de dados foi afetada other: "%{count} contas no banco de dados foram afetadas" retroactive: - silence: Desativar silêncio de todas as contas desse domínio - suspend: Desbanir todas as contas deste domínio - title: Desbloquear domínio %{domain} + silence: Dessilenciar contas existentes afetadas deste domínio + suspend: Dessuspender contas existentes afetadas deste domínio + title: Desfazer bloqueio de domínio para %{domain} undo: Desfazer - undo: Desbloquear domínio + undo: Desfazer bloqueio de domínio view: Ver domínios bloqueados email_domain_blocks: add_new: Adicionar novo - created_msg: Domínio de e-mail bloqueado + created_msg: Domínio de e-mail adicionado à lista negra com sucesso delete: Excluir - destroyed_msg: Domínio de e-mail desbloqueado + destroyed_msg: Domínio de e-mail excluído da lista negra com sucesso domain: Domínio - empty: Sem domínios de e-mail bloqueados. + empty: Nenhum domínio de e-mail atualmente na lista negra. from_html: de %{domain} new: create: Adicionar domínio - title: Novo domínio de e-mail bloqueado - title: Lista de bloqueio de domínios de e-mail + title: Nova entrada de lista negra de e-mail + title: Lista de negra de e-mail instances: by_domain: Domínio delivery_available: Envio disponível @@ -508,7 +508,7 @@ pt-BR: all: Para todos disabled: Para ninguém title: Mostrar domínios bloqueados - users: Para usuários locais ativos + users: Para usuários locais logados domain_blocks_rationale: title: Mostrar motivo enable_bootstrap_timeline_accounts: @@ -633,8 +633,9 @@ pt-BR: subject: Nova hashtag disponível para revisão em %{instance} (#%{name}) aliases: add_new: Criar alias - created_msg: Um novo alias foi criado com sucesso. Agora você pode se mudar. - deleted_msg: Alias excluído com sucesso. Não será mais possível se mudar para esta conta. + created_msg: Um novo alias foi criado com sucesso. Agora você pode iniciar a mudança da conta antiga. + deleted_msg: Alias removido com sucesso. Não será mais possível se mudar daquela conta para esta conta. + empty: Você não tem alias. hint_html: Se você quiser migrar de uma outra conta para esta, você pode criar um alias aqui, o que é necessário antes que você possa migrar os seguidores da conta antiga para esta. Esta ação por si só é inofensiva e reversível. A migração da conta é iniciada pela conta antiga. remove: Desvincular alias appearance: @@ -767,7 +768,7 @@ pt-BR: '406': Esta página não está disponível no formato solicitado. '410': A página que você procura não existe mais. '422': - content: Falha na verificação de segurança. Você desativou o uso de cookies? + content: Falha na verificação de segurança. Você está bloqueando cookies? title: Falha na verificação de segurança '429': Muitas solicitações '500': @@ -849,6 +850,8 @@ pt-BR: inactive: Inativo publicize_checkbox: 'E toote isso:' publicize_toot: 'Está provado! Eu sou %{username} no %{service}: %{url}' + remove: Remover comprovatido da conta + removed: Comprovativo removido da conta com sucesso status: Status da verificação view_proof: Ver prova imports: @@ -1265,7 +1268,7 @@ pt-BR: title: Baixar arquivo warning: explanation: - disable: Enquanto sua conta está bloqueada, seus dados estão intactos, mas você não pode realizar nenhuma ação até que sua conta seja desbloqueada. + disable: Enquanto sua conta está congelada, seus dados de conta permanecem intactos, mas você não pode realizar nenhuma ação até que esteja destrancada. silence: Enquanto sua conta está silenciada, somente pessoas que já estão seguindo você poderão ver seus toots nessa instância, e você pode ser excluído de várias listas públicas. No entanto, outros ainda podem te seguir manualmente. suspend: Sua conta foi banida e todos os seus toots e mídias foram irreversivelmente excluídos desta instância e das instâncias dos seus seguidores. get_in_touch: Você pode responder a este e-mail para entrar em contato com a equipe de %{instance}. @@ -1283,7 +1286,7 @@ pt-BR: suspend: Conta banida welcome: edit_profile_action: Configurar perfil - edit_profile_step: Você pode personalizar o seu perfil enviando uma imagem de perfil, uma capa, alterando seu nome de exibição e etc. Se você preferir aprovar seus novos seguidores antes de eles verem seus toots, você pode trancar a sua conta. + edit_profile_step: Você pode customizar o seu perfil ao fazer upload de um avatar, header, alterar seu nome de exibição e mais. Se você preferir revisar novos seguidores antes de poderem te seguir, você pode trancar a sua conta. explanation: Aqui estão algumas dicas para você começar final_action: Comece a tootar final_step: 'Comece a tootar! Mesmo sem seguidores, suas mensagens públicas podem ser vistas pelos outros, por exemplo, na linha local e nas hashtags. Você pode querer fazer uma introdução usando a hashtag #introdução, ou em inglês usando a hashtag #introductions.' diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 7bff3bf5c..d17358956 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -11,38 +11,38 @@ pt-PT: apps: Aplicações móveis apps_platforms: Usar o Mastodon a partir do iOS, Android e outras plataformas browse_directory: Navegue pelo directório de perfis e filtre por interesses - browse_local_posts: Visualize as publicações públicas deste servidor em tempo real + browse_local_posts: Visualize as publicações públicas desta instância em tempo real browse_public_posts: Visualize as publicações públicas do Mastodon em tempo real contact: Contacto contact_missing: Não configurado contact_unavailable: n.d. discover_users: Descobrir utilizadores documentation: Documentação - federation_hint_html: Ter uma conta em %{instance} permitirá seguir pessoas em qualquer servidor Mastodon. + federation_hint_html: Ter uma conta em %{instance} permitirá seguir pessoas em qualquer instância Mastodon. get_apps: Experimente uma aplicação hosted_on: Mastodon em %{domain} instance_actor_flash: | - Esta conta é um actor virtual usado para representar o próprio servidor e não um utilizador individual. + Esta conta é um actor virtual usado para representar a própria instância e não um utilizador individual. É usada para motivos de federação e não deve ser bloqueada a não ser que que queira bloquear a instância por completo. Se for esse o caso, deverá usar o bloqueio de domínio. learn_more: Saber mais privacy_policy: Política de privacidade see_whats_happening: Veja o que está a acontecer - server_stats: 'Estatísticas do servidor:' + server_stats: 'Estatísticas da instância:' source_code: Código fonte status_count_after: one: publicação other: publicações status_count_before: Que fizeram tagline: Siga os seus amigos e descubra novas amizades - terms: termos de serviço + terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: - domain: Servidor + domain: Instância reason: Motivo - rejecting_media: 'Arquivos de média destes servidores não serão processados ou armazenados, e nenhuma miniatura será exibida, o que requer que o utilizador clique e abra o arquivo original manualmente:' - silenced: 'Publicações destes servidores serão ocultas em linhas do tempo e conversas públicas, e nenhuma notificação será gerada a partir das interações dos seus utilizadores, a menos que você os esteja a seguir:' - suspended: 'Nenhum dado desses servidores será processado, armazenado ou trocado, tornando qualquer interação ou comunicação com os utilizadores desses servidores impossível:' - unavailable_content_html: Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outro servidor no fediverso. Estas são as exceções deste servidor específico. + rejecting_media: 'Arquivos de media destas instâncias não serão processados ou armazenados, e nenhuma miniatura será exibida, o que requer que o utilizador clique e abra o arquivo original manualmente:' + silenced: 'Publicações destas instâncias serão ocultas em linhas do tempo e conversas públicas, e nenhuma notificação será gerada a partir das interações dos seus utilizadores, a menos que você os esteja a seguir:' + suspended: 'Nenhum dado dessas instâncias será processado, armazenado ou trocado, tornando qualquer interação ou comunicação com os utilizadores dessas instâncias impossível:' + unavailable_content_html: Mastodon geralmente permite que você veja o conteúdo e interaja com utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico. user_count_after: one: utilizador other: utilizadores @@ -60,7 +60,7 @@ pt-PT: joined: Aderiu %{date} last_active: última vez activo link_verified_on: A posse deste link foi verificada em %{date} - media: Média + media: Media moved_html: "%{name} mudou-se para %{new_profile_link}:" network_hidden: Esta informação não está disponível never_active: Nunca @@ -133,7 +133,7 @@ pt-PT: remote: Remoto title: Local login_status: Estado de início de sessão - media_attachments: Anexos de média + media_attachments: Anexos de media memorialize: Converter em memorial moderation: active: Activo @@ -160,7 +160,7 @@ pt-PT: remove_avatar: Remover a imagem de perfil remove_header: Remover o cabeçalho resend_confirmation: - already_confirmed: Este usuário já está confirmado + already_confirmed: Este utilizador já está confirmado send: Reenviar um email de confirmação success: Email de confirmação enviado com sucesso! reset: Restaurar @@ -190,7 +190,7 @@ pt-PT: undo_silenced: Desfazer silenciar undo_suspension: Desfazer supensão unsubscribe: Cancelar inscrição - username: Usuário + username: Utilizador warn: Aviso web: Web whitelisted: Está na lista branca @@ -363,7 +363,7 @@ pt-PT: create: Criar bloqueio hint: O bloqueio de dominio não vai previnir a criação de entradas na base de dados, mas irá retroativamente e automaticamente aplicar métodos de moderação específica nessas contas. severity: - desc_html: "Silenciar irá fazer com que as publicações dessa conta sejam invisíveis para quem não a segue. Supender irá eliminar todo o conteúdo guardado dessa conta, média e informação de perfil. Use Nenhum se apenas deseja rejeitar arquivos de média." + desc_html: "Silenciar irá fazer com que as publicações dessa conta sejam invisíveis para quem não a segue. Supender irá eliminar todo o conteúdo guardado dessa conta, media e informação de perfil. Use Nenhum se apenas deseja rejeitar arquivos de media." noop: Nenhum silence: Silenciar suspend: Suspender @@ -372,11 +372,11 @@ pt-PT: private_comment_hint: Comentário sobre essa limitação de domínio para uso interno pelos moderadores. public_comment: Comentário público public_comment_hint: Comentário sobre essa limitação de domínio para o público geral, se ativada a divulgação da lista de limitações de domínio. - reject_media: Rejeitar ficheiros de média - reject_media_hint: Remove arquivos de média armazenados localmente e rejeita descarregar novos arquivos no futuro. Irrelevante para suspensões + reject_media: Rejeitar ficheiros de media + reject_media_hint: Remove arquivos de media armazenados localmente e rejeita descarregar novos arquivos no futuro. Irrelevante para suspensões reject_reports: Rejeitar relatórios reject_reports_hint: Ignorar todos os relatórios vindos deste domínio. Irrelevantes para efectuar suspensões - rejecting_media: a rejeitar ficheiros de média + rejecting_media: a rejeitar ficheiros de media rejecting_reports: a rejeitar relatórios severity: silence: silenciado @@ -421,7 +421,7 @@ pt-PT: total_followed_by_them: Seguidas por eles total_followed_by_us: Seguidas por nós total_reported: Relatórios sobre eles - total_storage: Anexos de média + total_storage: Anexos de media invites: deactivate_all: Desactivar todos filter: @@ -437,11 +437,11 @@ pt-PT: relays: add_new: Adicionar novo repetidor delete: Apagar - description_html: Um repetidor da federação é um servidor intermediário que troca grandes volumes de publicações públicas entre servidores que o subscrevem e publicam. Ele pode ajudar pequenos e médios servidores a descobrir conteúdo do "fediverse" que, de outro modo, exigiria que os utilizadores locais seguissem manualmente outras pessoas em servidores remotos. + description_html: Um repetidor de federação é um servidor intermediário que troca grandes volumes de publicações públicas entre instâncias que o subscrevem e publicam. Ele pode ajudar pequenas e medias instâncias a descobrir conteúdo do fediverso que, de outro modo, exigiria que os utilizadores locais seguissem manualmente outras pessoas em instâncias remotas. disable: Desactivar disabled: Desactivado enable: Activar - enable_hint: Uma vez activado, o teu servidor irá subscrever a todas as publicações deste repetidor e irá começar a enviar as suas publicações públicas para ele. + enable_hint: Uma vez ativado, a tua instância irá subscrever a todas as publicações deste repetidor e irá começar a enviar as suas publicações públicas para ele. enabled: Ativado inbox_url: URL do repetidor pending: À espera da aprovação do repetidor @@ -514,7 +514,7 @@ pt-PT: enable_bootstrap_timeline_accounts: title: Habilitar seguidores predefinidos para novos utilizadores hero: - desc_html: Apresentado na primeira página. Pelo menos 600x100px recomendados. Quando não é definido, é apresentado o thumbnail do servidor + desc_html: Apresentado na primeira página. Pelo menos 600x100px recomendados. Quando não é definido, é apresentada a miniatura da instância title: Imagem Hero mascot: desc_html: Apresentada em múltiplas páginas. Pelo menos 293x205px recomendados. Quando não é definida, é apresentada a mascote predefinida @@ -523,8 +523,8 @@ pt-PT: desc_html: Nomes de domínio que esta instância encontrou no fediverso title: Publicar lista de instâncias descobertas preview_sensitive_media: - desc_html: A pre-visualização de links noutros sites irá apresentar uma miniatura, mesmo que a média seja marcada como sensível - title: Mostrar média sensível em pre-visualizações OpenGraph + desc_html: A pre-visualização de links noutros sites irá apresentar uma miniatura, mesmo que a media seja marcada como sensível + title: Mostrar media sensível em pre-visualizações OpenGraph profile_directory: desc_html: Permite aos utilizadores serem descobertos title: Ativar directório do perfil @@ -557,11 +557,11 @@ pt-PT: desc_html: Mostrar na página de mais informações
    Podes usar tags HTML title: Página de mais informações site_short_description: - desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que o Mastodon é e o que torna este servidor especial num único parágrafo. Se deixada em branco, remete para a descrição do servidor. - title: Breve descrição do servidor + desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que o Mastodon é e o que torna esta instância especial num único parágrafo. Se deixada em branco, remete para a descrição da instância. + title: Breve descrição da instância site_terms: - desc_html: Podes escrever a tua própria política de privacidade, termos de serviço, entre outras coisas. Podes usar tags HTML - title: Termos de serviço customizados + desc_html: Podes escrever a sua própria política de privacidade, termos de serviço, entre outras coisas. Pode utilizar etiquetas HTML + title: Termos de serviço personalizados site_title: Título do site spam_check_enabled: desc_html: O Mastodon pode reportar automaticamente contas que enviem repetidamente mensagens não solicitadas. Poderão ocorrer alguns falso-positivos. @@ -572,7 +572,7 @@ pt-PT: timeline_preview: desc_html: Exibir a linha temporal pública na página inicial title: Visualização da linha temporal - title: Preferências do site + title: Configurações do site trendable_by_default: desc_html: Afecta as hashtags que ainda não tenham sido proibidas title: Permitir hashtags em tendência sem revisão prévia @@ -591,11 +591,11 @@ pt-PT: deleted: Apagado failed_to_execute: Falhou ao executar media: - title: Média - no_media: Não há média + title: Media + no_media: Não há media no_status_selected: Nenhum estado foi alterado porque nenhum foi selecionado title: Estado das contas - with_media: Com média + with_media: Com media tags: accounts_today: Usos únicos hoje accounts_week: Usos únicos desta semana @@ -635,6 +635,7 @@ pt-PT: add_new: Criar pseudónimo created_msg: Criou com sucesso um novo pseudónimo. Pode agora iniciar a migração da conta antiga. deleted_msg: Removido o pseudónimo com sucesso. Migrar dessa conta para esta não será mais possível. + empty: Não tem pseudónimos. hint_html: Se quiser mudar de outra conta para esta, pode criar aqui um pseudónimo, que é necessário antes de poder prosseguir com a migração de seguidores da conta antiga para esta. Esta ação por si só é inofensiva e reversível. A migração da conta é iniciada a partir da conta antiga. remove: Desvincular pseudónimo appearance: @@ -667,14 +668,14 @@ pt-PT: auth: apply_for_account: Solicitar um convite change_password: Palavra-passe - checkbox_agreement_html: Concordo com as regras do servidor e com os termos de serviço + checkbox_agreement_html: Concordo com as regras da instância e com os termos de serviço checkbox_agreement_without_rules_html: Concordo com os termos do serviço delete_account: Eliminar conta delete_account_html: Se desejas eliminar a conta, podes continua aqui. Uma confirmação será pedida. description: - prefix_invited_by_user: "@%{name} convidou-o a juntar-se a este servidor do Mastodon!" + prefix_invited_by_user: "@%{name} convidou-o a juntar-se a esta instância do Mastodon!" prefix_sign_up: Inscreva-se hoje no Mastodon! - suffix: Com uma conta, poderá seguir pessoas, publicar atualizações e trocar mensagens com utilizadores de qualquer servidor Mastodon e muito mais! + suffix: Com uma conta, poderá seguir pessoas, publicar atualizações e trocar mensagens com utilizadores de qualquer instância Mastodon e muito mais! didnt_get_confirmation: Não recebeu o email de confirmação? forgot_password: Esqueceste a palavra-passe? invalid_reset_password_token: Token de modificação da palavra-passe é inválido ou expirou. Por favor, solicita um novo. @@ -745,7 +746,7 @@ pt-PT: success_msg: A tua conta foi eliminada com sucesso warning: before: 'Antes de continuar, por favor leia cuidadosamente estas notas:' - caches: O conteúdo que foi armazenado em cache por outros servidores pode persistir + caches: O conteúdo que foi armazenado em cache por outras instâncias pode persistir data_removal: As suas publicações e outros dados serão removidos permanentemente email_change_html: Pode alterar o seu endereço de e-mail sem eliminar a sua conta email_contact_html: Se ainda não chegou, pode enviar um e-mail a %{email} para obter ajuda @@ -782,7 +783,7 @@ pt-PT: archive_takeout: date: Data download: Descarregar o teu arquivo - hint_html: Pode pedir um arquivo das suas publicações e ficheiros de média carregados. Os dados no ficheiro exportado estarão no formato ActivityPub, que pode ser lido com qualquer software compatível. Pode solicitar um arquivo a cada 7 dias. + hint_html: Pode pedir um arquivo das suas publicações e ficheiros de media carregados. Os dados no ficheiro exportado estarão no formato ActivityPub, que pode ser lido com qualquer software compatível. Pode solicitar um arquivo a cada 7 dias. in_progress: A compilar o seu arquivo... request: Pede o teu arquivo size: Tamanho @@ -791,7 +792,7 @@ pt-PT: domain_blocks: Bloqueios de domínio lists: Listas mutes: Tens em silêncio - storage: Armazenamento de média + storage: Armazenamento de media featured_tags: add_new: Adicionar nova errors: @@ -842,13 +843,15 @@ pt-PT: keybase: invalid_token: Os tokens Keybase são hashes de assinaturas e devem conter 66 caracteres hexadecimais verification_failed: O Keybase não reconhece este token como uma assinatura do utilizador do Keybase %{kb_username}. Por favor, tente novamente a partir do Keybase. - wrong_user: Não é possível criar uma prova para %{proving} enquanto estiver conetado como %{current}. Inicie sessão como %{proving} e tente novamente. + wrong_user: Não é possível criar um comprovativo para %{proving} enquanto estiver conetado como %{current}. Inicie sessão como %{proving} e tente novamente. explanation_html: Aqui pode conetar criptograficamente as suas outras identidades, tais como um perfil Keybase. Isto permite que outras pessoas lhe enviem mensagens encriptadas e confiar em conteúdo que você lhes envia. i_am_html: Sou %{username} em %{service}. identity: Identidade inactive: Inativo publicize_checkbox: 'E publique isso:' - publicize_toot: 'Está provado! Eu sou %{username} em %{service}: %{url}' + publicize_toot: 'Está comprovado! Eu sou %{username} em %{service}: %{url}' + remove: Remover comprovatido da conta + removed: Comprovativo removido da conta com sucesso status: Estado da verificação view_proof: Ver prova imports: @@ -1018,12 +1021,12 @@ pt-PT: remove_selected_follows: Deixar de seguir os utilizadores selecionados status: Estado da conta remote_follow: - acct: Entre seu usuário@domínio do qual quer seguir + acct: Introduza o seu utilizador@domínio do qual quer seguir missing_resource: Não foi possível achar a URL de redirecionamento para sua conta no_account_html: Não tens uma conta? Tu podes aderir aqui proceed: Prossiga para seguir prompt: 'Você vai seguir:' - reason_html: " Porque é que este passo é necessário? %{instance} pode não ser o servidor onde tu estás registado. Por isso, nós precisamos de te redirecionar para o teu servidor inicial em primeiro lugar." + reason_html: " Porque é este passo necessário? %{instance} pode não ser a instância onde você está registado. Por isso, precisamos de o redirecionar para a sua instância de origem em primeiro lugar." remote_interaction: favourite: proceed: Prosseguir para os favoritos @@ -1266,10 +1269,10 @@ pt-PT: warning: explanation: disable: Enquanto a tua conta está congelada, os seus dados permanecem intactos, mas tu não podes executar quaisquer acções até que ela seja desbloqueada. - silence: Enquanto a tua conta estiver limitada, só pessoas que já estiveres a seguir irão ver as tuas publicações neste servidor e poderás ser excluído de várias listagens públicas. No entanto, outros ainda te poderão seguir de forma manual. - suspend: A tua conta foi suspensa e todas as tuas publicações e os teus ficheiros de media foram irreversivelmente removidos deste servidor e dos servidores onde tinhas seguidores. + silence: Enquanto a sua conta estiver limitada, só pessoas que já estiver a seguir irão ver as suas publicações nesta instância e poderá ser excluído de várias listagens públicas. No entanto, outros ainda o poderão seguir de forma manual. + suspend: A sua conta foi suspensa e todas as suas publicações e os seus ficheiros de media foram irreversivelmente removidos desta instância e das instâncias onde tinhas seguidores. get_in_touch: Pode responder a este e-mail para entrar em contacto com a equipa de %{instance}. - review_server_policies: Revê as políticas do servidor + review_server_policies: Reveja a política da instância statuses: 'Especificamente, para:' subject: disable: A tua conta %{acct} foi congelada @@ -1288,13 +1291,13 @@ pt-PT: final_action: Começa a publicar final_step: 'Começa a publicar! Mesmo sem seguidores, as tuas mensagens públicas podem ser vistas por outros, por exemplo, na cronologia local e em hashtags. Tu podes querer apresentar-te na hashtag #introductions.' full_handle: O teu nome completo - full_handle_hint: Isto é o que tu dirias aos teus amigos para que eles te possam enviar mensagens ou seguir-te a partir de outro servidor. + full_handle_hint: Isto é o que você diria aos seus amigos para que eles lhe possam enviar mensagens ou seguir a partir de outra instância. review_preferences_action: Alterar preferências - review_preferences_step: Certifica-te de configurar as tuas preferências, tais como os e-mails que gostarias de receber ou o nível de privacidade que desejas que as tuas publicações tenham por defeito. Se não sofres de enjoo, podes activar a opção GIF autoplay. + review_preferences_step: Certifica-te de configurar as tuas preferências, tais como os e-mails que gostarias de receber ou o nível de privacidade que desejas que as tuas publicações tenham por defeito. Se não sofres de enjoo, podes ativar a opção de auto-iniciar GIFs. subject: Bem-vindo ao Mastodon tip_federated_timeline: A cronologia federativa é uma visão global da rede Mastodon. Mas só inclui pessoas que os teus vizinhos subscrevem, por isso não é uma visão completa. - tip_following: Tu segues o(s) administrador(es) do teu servidor por defeito. Para encontrares mais pessoas interessantes, procura nas cronologias local e federativa. - tip_local_timeline: A cronologia local é uma visão global das pessoas em %{instance}. Estes são os teus vizinhos mais próximos! + tip_following: Você segue o(s) administrador(es) da sua instância por defeito. Para encontrar mais pessoas interessantes, procure nas cronologias local e federada. + tip_local_timeline: A cronologia local é uma visão global das pessoas em %{instance}. Estes são os seus vizinhos mais próximos! tip_mobile_webapp: Se o teu navegador móvel te oferecer a possibilidade de adicionar o Mastodon ao teu homescreen, tu podes receber notificações push. Ele age como uma aplicação nativa de vários modos! tips: Dicas title: Bem-vindo a bordo, %{name}! diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 3dc2a944d..9d68ad803 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -1,11 +1,258 @@ --- ro: about: + about_hashtag_html: Acestea sunt postări publice etichetate cu #%{hashtag}. Poți interacționa cu ele dacă ai un cont oriunde în rețea. + about_mastodon_html: 'Rețeaua socială a viitorului: Fără reclame, fără supraveghere corporativă, design etic și descentralizare! Dețineți-vă datele cu Mastodon!' + about_this: Despre + active_count_after: activi + active_footnote: Utilizatori activi lunar (UAL) + administered_by: 'Administrat de:' + api: API + apps: Aplicații mobile + apps_platforms: Folosește Mastodon de pe iOS, Android și alte platforme + browse_directory: Răsfoiți directorul de profil și filtrați după interese + browse_local_posts: Răsfoiți un flux live al postărilor publice de pe acest server + browse_public_posts: Răsfoiește un flux live de postări publice pe Mastodon + contact: Contact + contact_missing: Nesetat + contact_unavailable: N/A + discover_users: Descoperă utilizatori + documentation: Documentație + federation_hint_html: Cu un cont pe %{instance} vei putea urmări oameni pe orice server de Mastodon sau mai departe. + get_apps: Încercați o aplicație pentru mobil hosted_on: Mastodon găzduit de %{domain} + instance_actor_flash: | + Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. + Acesta este folosit în scopuri de federație și nu ar trebui blocat decât dacă doriți să blocați întreaga instanță, în ce caz trebuie să utilizaţi un bloc de domeniu. + learn_more: Află mai multe + privacy_policy: Politica de confidenţialitate + see_whats_happening: Vezi ce se întâmplă + server_stats: 'Statistici server:' + source_code: Cod sursă + status_count_after: + few: stări + one: stare + other: de stări + status_count_before: Care au postat + tagline: Urmăriți prietenii și descoperiți alții noi + terms: Termeni de serviciu + unavailable_content: Conținut indisponibil + unavailable_content_description: + domain: Server + reason: Motiv + rejecting_media: 'Fişierele media de pe aceste servere nu vor fi procesate sau stocate şi nici o miniatură nu va fi afişată, necesitând click manual la fişierul original:' + silenced: 'Postările de pe aceste servere vor fi ascunse în cronologii și conversații publice, și nici o notificare nu va fi generată de interacțiunile utilizatorilor lor decât dacă le urmărești:' + suspended: 'Nici o informație de pe aceste servere nu va fi procesată, stocată sau schimbată, ceea ce face imposibilă orice interacțiune sau comunicare cu utilizatorii de pe aceste servere:' + unavailable_content_html: Mastodon vă permite în general să vedeți conținutul din orice alt server și să interacționați cu utilizatorii din rețea. Acestea sunt excepţiile care au fost făcute pe acest server. + user_count_after: + few: utilizatori + one: utilizator + other: de utilizatori + user_count_before: Casa a + what_is_mastodon: Ce este Mastodon? + accounts: + choices_html: 'Alegerile lui %{name}:' + endorsements_hint: Poți promova oameni pe care îi urmărești din interfața web, și ei vor apărea aici. + featured_tags_hint: Puteți promova anumite hashtag-uri care vor fi afișate aici. + follow: Urmărește + followers: + few: Urmăritori + one: Urmăritor + other: De Urmăritori + following: Urmăriți + joined: Înscris %{date} + last_active: ultima activitate + link_verified_on: Proprietatea acestui link a fost verificată la %{date} + media: Media + moved_html: "%{name} s-a mutat la %{new_profile_link}:" + network_hidden: Aceste informaţii nu sunt disponibile + never_active: Niciodată + nothing_here: Nu există nimic aici! + people_followed_by: Persoane pe care %{name} le urmărește + people_who_follow: Persoane care urmăresc pe %{name} + pin_errors: + following: Trebuie să urmăriți deja persoana pe care doriți să o aprobați + posts: + few: Postări + one: Postare + other: De Postări + posts_tab_heading: Postări + posts_with_replies: Postări și răspunsuri + reserved_username: Numele de utilizator este rezervat + roles: + admin: Admin + bot: Robot + group: Grup + moderator: Mod + unavailable: Profil indisponibil + unfollow: Nu mai urmării + admin: + account_actions: + action: Efectuează acțiunea + title: Efectuează acțiune de moderare la %{acct} + account_moderation_notes: + create: Lasă o notă + created_msg: Notă de moderare creată cu succes! + delete: Șterge + destroyed_msg: Notă de moderare distrusă cu succes! + accounts: + add_email_domain_block: Domeniu de e-mail în lista neagră + approve: Aprobă + approve_all: Aprobă toate + are_you_sure: Ești sigur? + avatar: Avatar + by_domain: Domeniu + change_email: + changed_msg: E-mail de cont schimbat cu succes! + current_email: E-mailul curent + label: Schimbă adresa de email + new_email: E-mail nou + submit: Schimbă adresa de email + title: Schimbă e-mailul pentru %{username} + confirm: Confirmă + confirmed: Confirmat + confirming: Confirmare + deleted: Șters + demote: Retrogradează + disable: Dezactivează + disable_two_factor_authentication: Dezactivează 2FA + disabled: Dezactivat + display_name: Nume afișat + domain: Domeniu + edit: Editează + email: E-mail + email_status: Stare e-mail + enable: Activează + enabled: Activat + followers: Urmăritori + follows: Urmăriri + header: Antet + inbox_url: URL mesaje primite + invited_by: Invitat de + ip: IP + joined: Înscris + location: + all: Toate + local: Local + remote: La distanţă + title: Locaţie + login_status: Stare conectare + media_attachments: Atașamente media + memorialize: Transformă în memorie + moderation: + active: Activ + all: Toate + pending: În așteptare + silenced: Ignorate + suspended: Suspendate + title: Moderare + moderation_notes: Note de moderare + most_recent_activity: Cea mai recentă activitate + most_recent_ip: Cel mai recent IP + no_account_selected: Nici un cont nu a fost schimbat deoarece nici unul nu a fost selectat + no_limits_imposed: Nicio limită impusă + not_subscribed: Nesubscrise + pending: În așteptare + perform_full_suspension: Suspendate + promote: Promovează + protocol: Protocol + public: Public + push_subscription_expires: Abonamentul PuSH expiră + redownload: Reîmprospătează profilul + reject: Respinge + reject_all: Respinge toate + remove_avatar: Elimină avatar + remove_header: Elimină antet + resend_confirmation: + already_confirmed: Acest utilizator este deja confirmat + send: Retrimite e-mail de confirmare + success: E-mail de confirmare trimis cu succes! + reset: Resetează + reset_password: Resetează parola + resubscribe: Resubscrie-te + role: Permisiuni + roles: + admin: Administrator + moderator: Moderator + staff: Personal + user: Utilizator + search: Caută + search_same_email_domain: Alţi utilizatori cu acelaşi domeniu de e-mail + search_same_ip: Alţi utilizatori cu acelaşi IP + shared_inbox_url: URL inbox distribuit + show: + created_reports: Rapoarte realizate + targeted_reports: Raportat de alții + silence: Ignoră + silenced: Ignorate + statuses: Stări + subscribe: Subscrie + suspended: Suspendate + time_in_queue: Așteptare în coadă %{time} + title: Conturi + unconfirmed_email: E-mail neconfirmat + undo_silenced: Anulează ignorarea + undo_suspension: Anulați suspendarea + unsubscribe: Dezabonare + username: Nume + warn: Avertizează + web: Web + whitelisted: Excluse la blocare + action_logs: + action_types: + assigned_to_self_report: Atribuie raportul + change_email_user: Schimbă e-mailul pentru utilizator + confirm_user: Confirmare Utilizator + create_account_warning: Crează avertisment + create_announcement: Creează Anunț + create_custom_emoji: Creează Zâmbet Personalizat + create_domain_allow: Creează permis domeniu + create_domain_block: Crează blocare de domenii + create_email_domain_block: Creați blocare de domeniu e-mail + demote_user: Retrogradare Utilizatorul + destroy_announcement: Ștergere anunț + destroy_custom_emoji: Ștergere Zâmbet Personalizat + destroy_domain_allow: Ștergere Permitere Domeniu + destroy_domain_block: Ștergere Blocare Domeniu + aliases: + add_new: Creează un alias + created_msg: A fost creat cu succes un alias nou. Acum puteţi iniţia mutarea din vechiul cont. + deleted_msg: Eliminați cu succes aliasul. Mutarea din acel cont în acesta nu va mai fi posibilă. + empty: Nu ai aliasuri. + hint_html: Dacă doriți să vă mutați dintr-un cont în altul, aici puteți crea un alias, care este necesar înainte de a putea continua mutarea urmăritorilor din vechiul cont în acesta. Această acțiune este inofensivă și reversibilă. Migrarea contului este inițiată din vechiul cont. + remove: Deconectare alias + appearance: + localization: + guide_link: https://crowdin.com/project/mastodon + guide_link_text: Toată lumea poate contribui. + sensitive_content: Conținut sensibil + toot_layout: Aspect postare + application_mailer: + notification_preferences: Modifică preferințe e-mail + salutation: "%{name}," + settings: 'Modifică preferințe e-mail: %{link}' + view: 'Vizualizare:' + view_profile: Vizualizați profilul + view_status: Vezi starea + applications: + created: Aplicație creată cu succes + destroyed: Aplicație ștearsă cu succes + invalid_url: URL-ul furnizat nu este valid + regenerate_token: Regenerează token-ul de acces + token_regenerated: Token de acces regenerat cu succes + warning: Fiți foarte atent cu aceste date. Nu le împărtășiți niciodată cu cineva! + your_token: Token-ul tău de acces auth: + apply_for_account: Solicită o invitație change_password: Parolă + checkbox_agreement_html: Sunt de acord cu regulile serverului şi termenii de serviciu + checkbox_agreement_without_rules_html: Sunt de acord cu termenii serviciului delete_account: Șterge contul delete_account_html: Dacă vrei să ștergi acest cont poți începe aici. Va trebui să confirmi această acțiune. + description: + prefix_invited_by_user: "@%{name} vă invită să vă alăturați acestui server de Mastodon!" + prefix_sign_up: Înscrie-te pe Mastodon astăzi! + suffix: Cu un cont, vei putea să urmărești oameni, să postezi actualizări și să schimbi mesaje cu utilizatorii de pe orice server Mastodon și multe altele! 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. @@ -14,13 +261,29 @@ ro: 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_log_in_with: Sau conectează-te cu + providers: + cas: CAS + saml: SAML register: Înregistrare + registration_closed: "%{instance} nu acceptă membri noi" resend_confirmation: Retrimite instrucțiunile de confirmare reset_password: Resetare parolă security: Securitate set_new_password: Setează o nouă parolă + setup: + email_below_hint_html: Dacă adresa de e-mail de mai jos este incorectă, o puteți schimba aici și puteți primi un nou e-mail de confirmare. + email_settings_hint_html: E-mailul de confirmare a fost trimis la %{email}. Dacă această adresă de e-mail nu este corectă, o puteți schimba în setările contului. + title: Configurare + status: + account_status: Starea contului + confirming: Se așteaptă finalizarea confirmării prin e-mail. + functional: Contul dvs. este complet operațional. + pending: Cererea dvs. este în curs de revizuire de către personalul nostru. Este posibil să dureze ceva timp. Veți primi un e-mail dacă cererea dvs. este aprobată. + redirecting_to: Contul dvs. este inactiv deoarece în prezent se redirecționează către %{acct}. + trouble_logging_in: Probleme la conectare? authorize_follow: already_following: Urmărești deja acest cont + already_requested: Ați trimis deja o cerere de urmărire către acel 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:' @@ -30,6 +293,14 @@ ro: return: Arată profilul utilizatorului web: Mergi la web title: Urmărește %{acct} + challenge: + confirm: Continuă + hint_html: "Sfat: Nu vă vom mai cere parola pentru următoarea oră." + invalid_password: Parolă incorectă + prompt: Confirmă parola pentru a continua + date: + formats: + default: "%d %m, %Y" datetime: distance_in_words: about_x_hours: "%{count}o" @@ -41,11 +312,21 @@ ro: 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: + challenge_not_passed: Informațiile introduse nu au fost corecte confirm_password: Introdu parola curentă pentru a-ți verifica identitatea + confirm_username: Introduceți numele de utilizator pentru a confirma procedura proceed: Șterge contul success_msg: Contul tău a fost șterg. Nu mai poate fi recuperat :D + warning: + before: 'Înainte de a continua, vă rugăm să citiţi aceste note cu atenţie:' + caches: Conținutul care a fost memorat de alte servere poate persista + data_removal: Postările tale și alte date vor fi șterse permanent + email_change_html: Puteți schimba adresa de e-mail fără a șterge contul dvs + email_contact_html: Dacă tot nu ajunge, puteți trimite e-mail la %{email} pentru ajutor directories: explanation: Descoperă oameni și companii în funcție de interesele lor explore_mastodon: Explorează %{title} @@ -91,11 +372,345 @@ ro: title: Filtre new: title: Adaugă un filtru nou + imports: + modes: + overwrite: Suprascrie + overwrite_long: Înlocuiţi înregistrările curente cu cele noi + preface: Puteți importa date pe care le-ați exportat de pe un alt server, cum ar fi o listă a persoanelor pe care le urmăriți sau blocați. + success: Datele dvs. au fost încărcate cu succes și vor fi procesate acum în timp util + types: + blocking: Lista de blocare + domain_blocking: Listă de blocare domenii + following: Lista de urmărire + muting: Lista de ignorare + upload: Încarcă + in_memoriam_html: În Memoria. invites: + delete: Dezactivați + expired: Expirat expires_in: - '1800': 30 minutes - '21600': 6 hours - '3600': 1 hour - '43200': 12 hours - '604800': 1 week - '86400': 1 day + '1800': 30 de minute + '21600': 6 ore + '3600': 1 oră + '43200': 12 ore + '604800': 1 săptămână + '86400': 1 zi + expires_in_prompt: Niciodată + generate: Generează link de invitație + invited_by: 'Ai fost invitat de:' + max_uses: + few: "%{count} utilizări" + one: 1 utilizare + other: "%{count} de utilizări" + max_uses_prompt: Fără limită + prompt: Generați și împărtășiți link-uri cu alții pentru a acorda acces la acest server + table: + expires_at: Expiră + uses: Utilizări + title: Invită persoane + lists: + errors: + limit: Ați atins valoarea maximă a listelor + media_attachments: + validations: + images_and_video: Nu se poate atașa un videoclip la o stare care conține deja imagini + not_ready: Nu se pot ataşa fişiere care nu au terminat procesarea. Încercaţi din nou într-un moment! + too_many: Nu se pot ataşa mai mult de 4 fişiere + migrations: + acct: Mutat la + cancel: Anulează redirecționarea + cancel_explanation: Anularea redirecționării va reactiva contul curent, dar nu va aduce înapoi urmăritorii care au fost mutați în acel cont. + cancelled_msg: Redirecționarea a fost anulată cu succes. + errors: + already_moved: este același cont în care ați fost deja mutat + missing_also_known_as: nu are corelare inversă cu acest cont + move_to_self: nu poate fi contul curent + not_found: nu a putut fi găsit + on_cooldown: Ești în așteptare + followers_count: Urmăritori în momentul mutării + incoming_migrations: Mutarea de la un cont diferit + incoming_migrations_html: Pentru a trece de la un cont la altul, trebuie mai întâi să creați un alias. + moved_msg: Contul tău se redirecționează acum către %{acct} și urmăritorii tăi sunt mutați înapoi. + not_redirecting: Contul dvs. nu se redirecționează către niciun alt cont în prezent. + on_cooldown: Ți-ai migrat recent contul. Această funcție va deveni disponibilă din nou în %{count} zile. + past_migrations: Migrări trecute + proceed_with_move: Mută urmăritorii + redirecting_to: Contul dvs. se redirecționează către %{acct}. + set_redirect: Setați redirecționarea + notification_mailer: + reblog: + body: 'Postarea ta a fost impulsionată de %{name}:' + subject: "%{name} ți-a impulsionat postarea" + title: Impuls nou + polls: + errors: + expired: Sondajul s-a încheiat deja + invalid_choice: Opțiunea aleasă de vot nu există + over_character_limit: nu poate fi mai lung de %{max} caractere + too_few_options: trebuie să aibă mai mult de un element + too_many_options: nu poate conține mai mult de %{max} elemente + preferences: + other: Altele + posting_defaults: Valori prestabilite de postare + public_timelines: Fluxuri publice + reactions: + errors: + limit_reached: S-a atins limita diferitelor reacţii + unrecognized_emoji: nu este un zâmbet recunoscut + relationships: + activity: Activitate cont + dormant: Latente + followers: Urmăritori + following: Urmăriți + invited: Invitați + last_active: Ultima activitate + most_recent: Cei mai recenți + moved: Mutat + mutual: Mutuali + primary: Primar + relationship: Relaţie + remove_selected_domains: Eliminați toți urmăritorii din domeniile selectate + remove_selected_followers: Elimină urmăritorii selectați + remove_selected_follows: Anulează urmărirea utilizatorilor selectați + status: Starea contului + remote_follow: + acct: Introduceți numele@domeniu din care doriți să acționați + missing_resource: Nu s-a putut găsi URL-ul de redirecționare necesar pentru contul dvs + no_account_html: Nu ai un cont? Poți să te înregistrezi aici + proceed: Continuă să urmărești + prompt: 'Vei urmării pe:' + reason_html: "De ce este necesar acest pas? %{instance} ar putea să nu fie serverul în care sunteți înregistrat, așa că trebuie să te redirecționăm către serverul tău de acasă." + remote_interaction: + favourite: + proceed: Continuă să favorizezi + prompt: 'Vrei să favorizezi această postare:' + reblog: + proceed: Continuă să dai impuls + prompt: 'Vrei să impulsionezi această postare:' + reply: + proceed: Continuă să răspunzi + prompt: 'Vrei să răspunzi la această postare:' + scheduled_statuses: + over_daily_limit: Ai depășit limita de %{limit} postări programate pentru acea zi + over_total_limit: Ai depășit limita de %{limit} postări programate + too_soon: Data programată trebuie să fie în viitor + sessions: + activity: Ultima activitate + browser: Navigator + browsers: + alipay: Alipay + blackberry: Blackberry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox + generic: Navigator necunoscut + ie: Internet Explorer + statuses: + attached: + image: + few: "%{count} imagini" + one: "%{count} imagine" + other: "%{count} de imagini" + video: + few: "%{count} videoclipuri" + one: "%{count} video" + other: "%{count} de videoclipuri" + boosted_from_html: Impuls de la %{acct_link} + content_warning: 'Avertisment privind conținutul: %{warning}' + disallowed_hashtags: + few: 'conținea aceste hashtag-uri nepermise: %{tags}' + one: 'conținea un hashtag nepermis: %{tags}' + other: 'conținea aceste hashtag-uri nepermise: %{tags}' + errors: + in_reply_not_found: Postarea la care încercați să răspundeți nu pare să existe. + language_detection: Detectează automat limba + open_in_web: Deschide pe web + over_character_limit: s-a depășit limita de caracter %{max} + pin_errors: + limit: Deja ai fixat numărul maxim de postări + ownership: Postarea altcuiva nu poate fi fixată + private: Postarea non-publică nu poate fi fixată + reblog: Un impuls nu poate fi fixat + poll: + total_people: + few: "%{count} persoane" + one: "%{count} persoană" + other: "%{count} de persoane" + total_votes: + few: "%{count} voturi" + one: "%{count} vot" + other: "%{count} de voturi" + vote: Votează + show_more: Arată mai mult + show_thread: Arată discuția + sign_in_to_participate: Conectează-te pentru a participa la conversație + title: '%{name}: "%{quote}"' + visibilities: + private: Doar urmăritorii + private_long: Arată doar urmăritorilor + public: Public + public_long: Toată lumea poate vedea + unlisted: Nelistat + unlisted_long: Toată lumea poate vedea, dar nu este listată pe fluxurile publice + stream_entries: + pinned: Postare fixată + reblogged: impulsionată + sensitive_content: Conținut sensibil + tags: + does_not_match_previous_name: nu se potrivește cu numele anterior + terms: + body_html: | +

    Politica de confidențialitate

    +

    Ce informații colectăm?

    + +
      +
    • Informații de bază despre cont : dacă vă înregistrați pe acest server, vi se poate cere să introduceți un nume de utilizator, o adresă de e-mail și o parolă. De asemenea, puteți introduce informații suplimentare despre profil, cum ar fi numele afișat și biografie, și puteți încărca o imagine de profil și o imagine de antet. Numele de utilizator, numele afișat, biografia, imaginea de profil și imaginea antetului sunt întotdeauna listate public.
    • +
    • Postări, umăriri și alte informații publice : Lista persoanelor pe care le urmărești este listată public, aceeași este valabilă și pentru urmăritorii tăi. Când trimiteți un mesaj, data și ora sunt stocate, precum și aplicația din care ați trimis mesajul. Mesajele pot conține atașamente media, cum ar fi imagini și videoclipuri. Postările publice și nelistate sunt disponibile public. Când aveți o postare pe profilul dvs., aceasta este, de asemenea, informații disponibile publicului. Postările dvs. sunt livrate urmăritorilor dvs., în unele cazuri înseamnă că sunt livrate pe diferite servere și copiile sunt stocate acolo. Când ștergeți postări, acest lucru este de asemenea livrat urmăritorilor dvs. Acțiunea de a impulsiona sau favoriza o altă postare este întotdeauna publică.
    • +
    • Postări directe și doar pentru urmăritori : toate postările sunt stocate și procesate pe server. Postările destinate numai urmăritorilor sunt livrate urmăritorilor și utilizatorilor dvs. menționați în ele, iar postările directe sunt livrate numai utilizatorilor menționați în ele. În unele cazuri, înseamnă că sunt livrate pe diferite servere și copiile sunt stocate acolo. Facem un efort de bună-credință pentru a limita accesul la aceste postări doar persoanelor autorizate, dar este posibil ca alte servere să nu reușească. Prin urmare, este important să revizuiți serverele de pe care urmăritorii dvs provin. Puteți comuta o opțiune pentru a aproba și respinge manual următorii noi din setări. Vă rugăm să rețineți că operatorii serverului și orice server primitor pot vizualiza astfel de mesaje și că destinatarii pot face captură de ecran, copie sau distribuirea lor. Nu împărtășiți informații periculoase pe servere.
    • +
    • IP-uri și alte metadate : atunci când vă conectați, înregistrăm adresa IP de lacare vă conectați, precum și numele aplicației dvs. de navigare pe internet. Toate sesiunile conectate sunt disponibile pentru revizuire și revocare în setări. Cea mai recentă adresă IP folosită este stocată până la 12 luni. De asemenea, putem păstra jurnalele de server care includ adresa IP a fiecărei solicitări către serverul nostru.
    • + + +
      + +

      Pentru ce folosim informațiile dvs.?

      + +

      Toate informațiile pe care le colectăm de la dvs. pot fi utilizate în următoarele moduri:

      + +
        +
      • Pentru a oferi funcționalitatea de bază a platformei. Puteți interacționa cu conținutul altor persoane și puteți posta propriul conținut atunci când sunteți autentificat. De exemplu, puteți urmări alte persoane pentru a vizualiza postările combinate în fluxul personal.
      • +
      • Pentru a ajuta la moderarea comunității, de exemplu, compararea adresei IP cu altele cunoscute pentru a determina evaziunea interdicției sau alte încălcări.
      • +
      • Adresa de e-mail pe care o furnizați poate fi utilizată pentru a vă trimite informații, notificări despre alte persoane care interacționează cu conținutul dvs. sau pentru a vă trimite mesaje și pentru a răspunde la întrebări și / sau alte solicitări sau întrebări.
      • + + +
        + +

        Cum vă protejăm informațiile?

        + +

        Implementăm o varietate de măsuri de securitate pentru a menține siguranța informațiilor dvs. personale atunci când introduceți, trimiteți sau accesați informațiile dvs. personale. Printre altele, sesiunea navigatorului dvs., precum și traficul dintre aplicațiile dvs. și API-ul, sunt securizate cu SSL, iar parola dvs. este salvată folosind un algoritm puternic unidirecțional. Puteți activa autentificarea în doi pași pentru a asigura accesul suplimentar la contul dvs..

        + +
        + +

        Care este politica noastră de păstrare a datelor?

        + +

        Vom depune eforturi de bună credință pentru:

        + +
          +
        • Păstrarea jurnalelor serverului care conțin adresa IP a tuturor solicitărilor către acest server, în măsura în care se păstrează astfel de jurnale, nu mai mult de 90 de zile.
        • +
        • Păstrarea adreselor IP asociate cu utilizatorii înregistrați nu mai mult de 12 luni.
        • + + +

          Puteți solicita și descărca o arhivă a conținutului dvs., inclusiv postările, atașamentele media, poza de profil și imaginea antetului.

          + +

          Puteți șterge ireversibil contul în orice moment.

          + +
          + +

          Folosim module cookie?

          + +

          Da. Cookie-urile sunt fișiere mici pe care un site sau furnizorul său de servicii le transferă pe hard disk-ul computerului prin intermediul navigatorului dvs. Web (dacă permiteți). Aceste cookie-uri permit site-ului să vă recunoască navigatorul și, dacă aveți un cont înregistrat, să îl asociați cu contul dvs. înregistrat.

          + +

          Folosim cookie-uri pentru a înțelege și salva preferințele pentru vizitele viitoare.

          + +
          + +

          Dezvăluim informații părților din afară?

          + +

          Nu vindem, comercializăm sau nu transferăm în alte părți informațiilor dvs. de identificare personală. Aceasta nu include terți de încredere care ne ajută în operarea site-ului nostru, în desfășurarea activității noastre sau în deservirea dvs., atât timp cât acele părți acceptă să păstreze aceste informații confidențiale. De asemenea, putem elibera informațiile dvs. atunci când considerăm că eliberarea este adecvată pentru a respecta legea, a aplica politicile site-ului nostru sau a proteja drepturile noastre, proprietatea sau siguranța noastră sau a altor persoane.

          + +

          Conținutul dvs. public poate fi descărcat de alte servere din rețea. Postările dvs. publice și cele doar pentru urmăritori sunt livrate pe serverele de unde provin urmăritorii dvs., iar mesajele directe sunt livrate către serverele destinatarilor, în măsura în care acei urmăritori sau destinatari provin de pe un server diferit decât acesta.

          + +

          Atunci când autorizați o aplicație să vă utilizeze contul, în funcție de sfera de autorizare pe care o aprobați, aceasta poate accesa informațiile despre profilul dvs. public, lista dvs. de urmăritori, urmăritorii, listele dvs., toate postările și favorizările dvs. Aplicațiile nu vă pot accesa niciodată adresa de e-mail sau parola.

          + +
          + +

          Utilizarea site-ului de către copii

          + +

          Site-ul nostru, produsele și serviciile noastre sunt destinate tuturor persoanelor care au cel puțin 16 ani. Dacă aveți sub 16 ani, conform cerințelor GDPR ( Regulamentul general privind protecția datelor ) nu utilizați acest site . + +

          Cerințele legii pot fi diferite dacă acest server se află într-o altă jurisdicție.

          + +
          + +

          Modificări ale politicii noastre de confidențialitate

          + +

          Dacă decidem să ne schimbăm politica de confidențialitate, vom posta aceste modificări pe această pagină.

          + +

          Acsta a fost actualizat ultima dată pe 27 aprilie 2020.

          + +

          Adaptat inițial din Politica de confidențialitate Discourse .

          + title: "%{instance} Termeni de utilizare și Politica de confidențialitate" + themes: + contrast: Mastodon (contrast mare) + default: Mastodon (Întunecat) + mastodon-light: Mastodon (Luminat) + time: + formats: + default: "%d %m, %Y, %H:%M" + month: "%m %Y" + two_factor_authentication: + code_hint: Introduceți codul generat de aplicația dvs de autentificare pentru a confirma + description_html: Dacă activați autentificarea în doi pași, autentificarea va necesita ca tu să fii în posesia telefonului tău, ceea ce va genera token-uri pentru ca tu să intri. + disable: Dezactivează + enable: Activează + enabled: Autentificare în doi pași este activată + enabled_success: Autentificarea în doi pași activată cu succes + generate_recovery_codes: Generează coduri de recuperare + instructions_html: "Scanați acest cod QR în Google Authenticator sau o aplicație TOTP similiară de pe telefonul dvs.. De acum înainte, acea aplicație va genera token-uri pe care va trebui să îi introduceți atunci când vă conectați." + lost_recovery_codes: Codurile de recuperare vă permit să redobândiți accesul la contul dvs. dacă vă pierdeți telefonul. Dacă ți-ai pierdut codurile de recuperare, le poți regenera aici. Codurile tale vechi de recuperare vor fi invalidate. + manual_instructions: 'Dacă nu puteți scana codul QR și trebuie să-l introduceți manual, aici este textul simplu pentru cheia secretă:' + recovery_codes: Copie a codurilor de recuperare + recovery_codes_regenerated: Coduri de recuperare regenerate cu succes + recovery_instructions_html: Dacă îți pierzi vreodată accesul la telefon, poți folosi unul dintre codurile de recuperare de mai jos pentru a recâștiga accesul la contul tău. Păstrați codurile de recuperare în condiții de siguranță. De exemplu, le puteți tipări și stoca cu alte documente importante. + setup: Configurare + wrong_code: Codul introdus nu a fost valid! Orele serverului și timpul dispozitivului sunt corecte? + user_mailer: + backup_ready: + explanation: Ai solicitat o copie de rezervă completă a contului tău. Acum este gata pentru descărcare! + subject: Arhiva ta este gata pentru descărcare + title: Preluare arhivă + warning: + explanation: + disable: În timp ce contul tău este înghețat, datele contului tău rămân intacte, dar nu poți efectua nicio acțiune până când acesta este deblocat. + silence: În timp ce contul tău este limitat, doar persoanele care deja te urmăresc îți vor vedea postările pe acest server, și puteți fi exclus de la diverse liste publice. Cu toate acestea, este posibil ca alte persoane să vă urmărească manual. + suspend: Contul tău a fost suspendat și toate postările tale și fișierele media încărcate au fost șterse ireversibil de pe acest server, și servere unde ai avut urmăritori. + get_in_touch: Puteți răspunde la acest e-mail pentru a lua legătura cu personalul din %{instance}. + review_server_policies: Revizuiește politicile serverului + statuses: 'Mai precis, pentru:' + subject: + disable: Contul tău %{acct} a fost înghețat + none: Avertizare pentru %{acct} + silence: Contul tău %{acct} a fost limitat + suspend: Contul tău %{acct} a fost suspendat + title: + disable: Cont înghețat + none: Avertizare + silence: Cont limitat + suspend: Cont suspendat + welcome: + edit_profile_action: Configurare profil + edit_profile_step: Vă puteți personaliza profilul încărcând un avatar, un antet, schimbându-vă numele afișat și multe altele. Dacă dorești să revizuiești noi urmăritori înainte de a primi permisiunea de a te urmări, îți poți bloca contul. + explanation: Iată câteva sfaturi pentru a începe + final_action: Începe să postezi + final_step: 'Începe să postezi! Chiar și fără urmăritori, mesajele publice pot fi văzute de alții, de exemplu pe fluxul local și pe hashtag-uri. Poate doriți să vă prezentați pe hashtag-ul #introducere.' + full_handle: Numele tău complet + full_handle_hint: Asta este ceea ce vei putea spune prietenilor pentru a te putea contacta sau pentru a te urmării de pe un alt server. + review_preferences_action: Schimbă preferințele + review_preferences_step: Asigură-te că setezi preferințele tale, cum ar fi e-mailurile pe care dorești să le primești sau ce nivel de confidențialitate vrei ca mesajele tale să fie implicite. Dacă nu ai rău de mişcare, ai putea alege să activezi imaginile GIF să pornească automat. + subject: Bine ai venit + tip_federated_timeline: Fluxul federat este o vedere de ansamblu a rețelei Mastodon. Dar include doar oameni la care s-au abonat vecinii tăi, așa că nu este completă. + tip_following: Urmăriți implicit administratorul(ii) serverului. Pentru a găsi oameni mai interesanți, verificați fluxurile locale și federalizate. + tip_local_timeline: Fluxul local este o vedere în ansamblu a persoanelor de pe %{instance}. Aceștia sunt vecinii tăi apropiați! + tip_mobile_webapp: Dacă navigatorul tău mobil îți oferă să adaugi Mastodon pe ecranul tău de pornire, poți primi notificări push. Se comportă ca o aplicație nativă în multe moduri! + tips: Sfaturi + title: Bine ai venit la bord, %{name}! + users: + follow_limit_reached: Nu poți urmări mai mult de %{limit} persoane + invalid_email: Adresa de e-mail nu este validă + invalid_otp_token: Cod doi pași nevalid + otp_lost_help_html: Dacă ai pierdut accesul la ambele, poți lua legătura cu %{email} + seamless_external_login: Sunteți autentificat prin intermediul unui serviciu extern, astfel încât parola și setările de e-mail nu sunt disponibile. + signed_in_as: 'Conectat ca:' + verification: + explanation_html: 'Poți să te verifici ca proprietar al link-urilor din metadatele profilului tău. Pentru aceasta, site-ul web asociat trebuie să conțină un link înapoi la profilul tău. Link-ul înapoi trebuie să aibă un atribut rel="me". Conținut textului link-ului nu contează. Iată un exemplu:' + verification: Verificare diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 30f237780..b84da7abf 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -210,11 +210,13 @@ ru: create_account_warning: Выдача предупреждения create_announcement: Создание объявлений create_custom_emoji: Добавление эмодзи + create_domain_allow: Создать разрешение для домена create_domain_block: Блокировка доменов create_email_domain_block: Блокировка e-mail доменов demote_user: Разжалование пользователей destroy_announcement: Удаление объявлений destroy_custom_emoji: Удаление эмодзи + destroy_domain_allow: Удалить разрешение для домена destroy_domain_block: Разблокировка доменов destroy_email_domain_block: Разблокировка e-mail доменов destroy_status: Удаление постов @@ -223,6 +225,7 @@ ru: disable_user: Заморозка пользователей enable_custom_emoji: Включение эмодзи enable_user: Разморозка пользователей + memorialize_account: Сделать мемориалом promote_user: Повышение пользователей remove_avatar_user: Удаление аватаров reopen_report: Возобновление жалоб @@ -653,6 +656,7 @@ ru: add_new: Создать псевдоним created_msg: Новый псевдоним установлен. Теперь мы можете начать миграцию со старой учётной записи. deleted_msg: Псевдоним успешно удалён. Миграция старой учётной записи в текущую более невозможна. + empty: У вас нет псевдонимов. hint_html: Если вы собираетесь мигрировать с другой учётной записи на эту, вы можете настроить псевдоним, что требуется для переноса подписчиков со старой учётной записи. Это действие само по себе безвредно и обратимо. Миграция учётной записи начинается со старой учётной записи. remove: Отвязать псевдоним appearance: @@ -869,14 +873,16 @@ ru: inactive: Неактивно publicize_checkbox: 'И опубликуйте текст:' publicize_toot: 'Подтверждено! Я %{username} на %{service}: %{url}' + remove: Удалить идентификатор + removed: Идентификатор учётной записи удалён status: Статус view_proof: Посмотреть подтверждение imports: modes: merge: Объединить - merge_long: Сохранить имеющиеся данные и добавить новые + merge_long: Сохранить имеющиеся данные и добавить новые. overwrite: Перезаписать - overwrite_long: Перезаписать имеющиеся данные новыми + overwrite_long: Перезаписать имеющиеся данные новыми. preface: Вы можете загрузить некоторые данные, например, списки людей, на которых Вы подписаны или которых блокируете, в Вашу учётную запись на этом узле из файлов, экспортированных с другого узла. success: Ваши данные были успешно загружены и будут обработаны с должной скоростью types: @@ -905,7 +911,7 @@ ru: one: 1 исп other: "%{count} исп" max_uses_prompt: Без ограничения - prompt: Создавайте и делитесь ссылками с другими, чтобы предоставить им доступом к этому узлу + prompt: Создавайте и делитесь ссылками с другими, чтобы предоставить им доступом к этому узлу. table: expires_at: Истекает uses: Исп. @@ -1020,7 +1026,7 @@ ru: too_few_options: должно быть больше 1 варианта too_many_options: может содержать не больше %{max} вариантов preferences: - other: Всё остальное + other: Остальное posting_defaults: Настройки отправки по умолчанию public_timelines: Публичные ленты reactions: @@ -1275,7 +1281,7 @@ ru: default: "%d %b %Y, %H:%M" month: "%m.%Y" two_factor_authentication: - code_hint: Для подтверждения введите код, сгенерированный приложением-аутентификатором + code_hint: Для подтверждения введите код, сгенерированный приложением-аутентификатором. description_html: 'На этой странице можно включить двухфакторную авторизацию: с ней, чтобы войти в свою учётную запись, потребуется ввести небольшой временный код, генерируемый через приложение на своём смартфоне.' disable: Отключить enable: Включить diff --git a/config/locales/sc.yml b/config/locales/sc.yml new file mode 100644 index 000000000..d1b8b43b4 --- /dev/null +++ b/config/locales/sc.yml @@ -0,0 +1,20 @@ +--- +sc: + errors: + '400': The request you submitted was invalid or malformed. + '403': You don't have permission to view this page. + '404': The page you are looking for isn't here. + '406': This page is not available in the requested format. + '410': The page you were looking for doesn't exist here anymore. + '422': + '429': Too many requests + '500': + '503': The page could not be served due to a temporary server failure. + invites: + expires_in: + '1800': 30 minutes + '21600': 6 hours + '3600': 1 hour + '43200': 12 hours + '604800': 1 week + '86400': 1 day diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index a4a77e20f..0be13c8e5 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -10,6 +10,7 @@ ar: text: بإمكانك استخدام نفس القواعد التي نجدها في التبويقات كعناوين الروابط والوسوم والإشارات title: اختياري. غير مرئي للمُستَلِم admin_account_action: + include_statuses: سيرى المستخدم أي مِن التبويقات تسببت في إجراء الإشراف أو التحذير send_email_notification: سوف يتلقى المستخدم رسالة تُفسِّر ما حدث على حسابه type_html: اختر ما تود إجراؤه على %{acct} warning_preset_id: اختياري. يمكنك إضافة نص مخصص إلى نهاية النموذج diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 62d5823fc..7795f43f3 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -8,6 +8,7 @@ cs: acct: Zadejte svůj účet, na který se chcete přesunout, ve formátu přezdívka@doména account_warning_preset: text: Můžete používat syntaxi tootů, jako například URL, hashtagy a zmínky + title: Nepovinné. Není viditelné pro příjemce admin_account_action: include_statuses: Uživatel uvidí, které tooty způsobily moderátorskou akci nebo varování send_email_notification: Uživatel obdrží vysvětlení toho, co se stalo s jeho účtem @@ -78,6 +79,7 @@ cs: acct: Adresa nového účtu account_warning_preset: text: Text předlohy + title: Nadpis admin_account_action: include_statuses: Zahrnout v e-mailu nahlášené tooty send_email_notification: Informovat uživatele e-mailem @@ -150,6 +152,8 @@ cs: username: Uživatelské jméno username_or_email: Uživatelské jméno nebo e-mail whole_word: Celé slovo + email_domain_block: + with_dns_records: Zahrnout MX záznamy a IP adresy domény featured_tag: name: Hashtag interactions: diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index d8e272c8b..d6681e664 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -54,6 +54,9 @@ cy: whole_word: Os yw'r allweddair neu'r ymadrodd yn alffaniwmerig yn unig, mi fydd ond yn cael ei osod os yw'n cyfateb a'r gair cyfan domain_allow: domain: Bydd y parth hwn yn gallu nôl data o'r gweinydd hwn a bydd data sy'n dod i mewn ohono yn cael ei brosesu a'i storio + email_domain_block: + domain: Gall hyn fod yr enw parth sy'n dangos yn yr ebost, y cofnod MX mae'r parth yn adfer i, neu'r cyfeiriad IP o'r gweinydd mae'r cofnod MX yn adfer i. Bydd y rhain yn cael eu gwirio wrth i defnyddiwr cofrestru, a chaiff y cofrestriad ei wrthod. + with_dns_records: Bydd ceisiad i adfer cofnodau DNS y parth penodol yn cael ei wneud, a bydd y canlyniadau hefyd yn cael ei gosbrestru featured_tag: name: 'Efallai hoffech defnyddio un o''r rhain:' form_challenge: @@ -152,6 +155,8 @@ cy: username: Enw defnyddiwr username_or_email: Enw defnyddiwr neu e-bost whole_word: Gair cyfan + email_domain_block: + with_dns_records: Cynnwys cofnodion MX a chyfeiriadau IP y parth featured_tag: name: Hashnod interactions: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 3fadd7fb9..d7a10a4a9 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -39,6 +39,8 @@ da: fields: name: Etiket value: Indhold + account_warning_preset: + title: Titel admin_account_action: include_statuses: Inkluder rapporteret toot i email send_email_notification: Underret brugeren per email diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index bb9033085..841cafbf4 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -54,6 +54,9 @@ el: whole_word: Όταν η λέξη ή η φράση κλειδί είναι μόνο αλφαριθμητική, θα εφαρμοστεί μόνο αν ταιριάζει με ολόκληρη τη λέξη domain_allow: domain: Ο τομέας αυτός θα επιτρέπεται να ανακτά δεδομένα από αυτό τον διακομιστή και τα εισερχόμενα δεδομένα θα επεξεργάζονται και θα αποθηκεύονται + email_domain_block: + domain: Αυτό μπορεί να είναι το όνομα του τομέα που εμφανίζεται στη διεύθυνση email, στην εγγραφή MX στην οποία δείχνει ο τομέας ή την διεύθυνση IP του σέρβερ που δείχνει η εγγραφή MX. Αυτά θα ελεγχθούν κατά την εγγραφή του χρήστη και η εγγραφή θα απορριφθεί αναλόγως. + with_dns_records: Θα γίνει απόπειρα ανάλυσης των εγγραφών DNS του τομέα και τα αποτελέσματα θα μπουν και αυτά σε μαύρη λίστα featured_tag: name: 'Ίσως να θες να χρησιμοποιήσεις μια από αυτές:' form_challenge: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 3bd77a8e8..e3e68b107 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -17,6 +17,7 @@ eo: current_password: Pro sekuraj kialoj, bonvolu enigi la pasvorton de la nuna konto current_username: Por konfirmi, bonvolu enigi la uzantnomon de la nuna konto digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto + discoverable: Montru ĉi tiun profilon en la profilujon por ke la konto estos pli-vaste vidata email: Vi ricevos konfirman retmesaĝon fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index c0f36df77..c3520b072 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -145,7 +145,7 @@ eu: setting_reduce_motion: Murriztu animazioen mugimenduak setting_show_application: Utzi agerian tootak bidaltzeko erabilitako aplikazioa setting_system_font_ui: Erabili sistemako tipografia lehenetsia - setting_theme: Gunearen gaia + setting_theme: Gunearen azala setting_trends: Erakutsi gaurko joerak setting_unfollow_modal: Erakutsi baieztapen elkarrizketa-koadroa inor jarraitzeari utzi aurretik setting_use_blurhash: Erakutsi gradiente koloretsuak ezkutatutako multimediaren ordez diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 77e91329a..bbcd53f5e 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,9 +3,9 @@ fr: simple_form: hints: account_alias: - acct: Spécifiez le nom d’utilisateur@domaine du compte que vous souhaitez migrer + acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez migrer account_migration: - acct: Spécifiez le nom d’utilisateur@domaine du compte vers lequel vous souhaitez déménager + acct: Spécifiez l’identifiant@domaine du compte vers lequel vous souhaitez déménager account_warning_preset: text: Vous pouvez utiliser la syntaxe des pouets, comme les URLs, les hashtags et les mentions title: Facultatif. Invisible pour le destinataire @@ -77,7 +77,7 @@ fr: name: Étiquette value: Contenu account_alias: - acct: L’identifiant de l’ancien compte + acct: Identifiant de l’ancien compte account_migration: acct: L’identifiant du nouveau compte account_warning_preset: diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 86d4bea5f..5c2637342 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -7,13 +7,13 @@ gl: account_migration: acct: Indica o usuaria@servidor da conta a cal queres migrar account_warning_preset: - text: Pódeslle dar formato ao toot, como URLs, etiquetas e mencións + text: Pódeslle dar formato ao toot, como URLs, cancelos e mencións title: Optativo. Non visible para a correspondente admin_account_action: include_statuses: A usuaria verá que toots causaron a acción da moderación ou aviso 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} + text_html: Optativo. Podes utilizar formato no toot. Podes engadir avisos preestablecidos para aforrar tempo + type_html: Escolle que facer con %{acct} warning_preset_id: Optativo. Poderás engadir texto personalizado ao final do preestablecido announcement: all_day: Cando se marca, só serán amosadas as datas do intre de tempo @@ -28,29 +28,29 @@ gl: context: Un ou varios contextos onde se debería aplicar o filtro current_password: Por razóns de seguridade, introduce o contrasinal da conta actual current_username: Para confirmar, introduce o nome de usuaria da conta actual - digest: Enviar só tras un longo período de inactividade e só se recibeu algunha mensaxe directa na súa ausencia - discoverable: O directorio de perfil é outro xeito para que a túa conta alcance unha maior audiencia + digest: Enviar só tras un longo período de inactividade e só se recibiches algunha mensaxe directa na tua ausencia + discoverable: O directorio de perfil é outro xeito de que a túa conta alcance unha maior audiencia email: Ímosche enviar un correo de confirmación - fields: Pode ter ate 4 elementos no seu perfil mostrados como unha táboa + fields: Podes ter ate 4 elementos no teu perfil mostrados como unha táboa header: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px inbox_url: Copiar o URL desde a páxina de inicio do repetidor que queres utilizar - irreversible: Os toots filtrados desaparecerán de xeito irreversible, incluso si despois se elimina o filtro + irreversible: Os toots filtrados desaparecerán de xeito irreversible, incluso se despois se elimina o filtro locale: O idioma da interface de usuaria, correos e notificacións locked: Require que ti aceptes as seguidoras de xeito manual - password: Utilice 8 caracteres ao menos + password: Utiliza 8 caracteres ao menos phrase: Concordará independentemente das maiúsculas ou avisos de contido no toot - scopes: A que APIs terá acceso a aplicación. Se selecciona un ámbito de alto nivel, non precisa seleccionar elementos individuais. + scopes: A que APIs terá acceso a aplicación. Se escolles un ámbito de alto nivel, non precisas seleccionar elementos individuais. setting_aggregate_reblogs: Non mostrar novas promocións de toots que foron promocionados recentemente (só afecta a promocións recén recibidas) setting_default_sensitive: Medios sensibles marcados como ocultos por defecto e móstranse cun click setting_display_media_default: Ocultar medios marcados como sensibles setting_display_media_hide_all: Ocultar sempre os medios setting_display_media_show_all: Mostrar sempre os medios marcados como sensibles - setting_hide_network: Non se mostrará no seu perfil quen a segue e quen a está a seguir - setting_noindex: Afecta ao seu perfil público e páxinas de estado - setting_show_application: A aplicación que está a utilizar para enviar toots mostrarase na vista detallada do toot + setting_hide_network: Non se mostrará no teu perfil quen te segue e a quen estás a seguir + setting_noindex: Afecta ao teu perfil público e páxinas de estado + setting_show_application: A aplicación que estás a utilizar para enviar toots mostrarase na vista detallada do toot setting_use_blurhash: Os gradientes toman as cores da imaxe oculta pero esborranchando todos os detalles setting_use_pending_items: Ocultar as actualizacións da liña temporal tras un click no lugar de desprazar automáticamente os comentarios - username: O seu nome de usuaria será único en %{domain} + username: O teu nome de usuaria será único en %{domain} whole_word: Se a chave ou frase de paso é só alfanumérica, só se aplicará se concorda a palabra completa domain_allow: domain: Este dominio estará en disposición de obter datos desde este servidor e datos de entrada a el poderán ser procesados e gardados @@ -58,17 +58,17 @@ gl: domain: Esto pode ser o nome de dominio que aparece no enderezo do correo, o rexistro MX que resolve o dominio, ou o IP do servidor que resolve o rexistro MX. Estos confrontaranse contra o rexistro da usuaria e o rexistro será rexeitado. with_dns_records: Vaise facer un intento de resolver os rexistros DNS propocionados e os resultados tamén irán a lista negra featured_tag: - name: 'Podería utilizar algunha de estas:' + name: 'Poderías usar algunha destas:' form_challenge: current_password: Estás entrando nun área segura imports: data: Ficheiro CSV exportado desde outro servidor Mastodon invite_request: - text: Esto axudaranos a revisar a súa aplicación + text: Esto axudaranos a revisar a tua aplicación sessions: - otp: 'Introduza o código de dobre-factor creado pola aplicación do seu móbil ou utilice un dos seus códigos de recuperación:' + otp: 'Introduce o código do segundo factor creado pola aplicación do teu móbil ou usa un dos códigos de recuperación:' tag: - name: Só pode cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade + name: Só podes cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade user: chosen_languages: Se ten marca, só os toots nos idiomas seleccionados serán mostrados en liñas temporais públicas labels: @@ -79,17 +79,17 @@ gl: account_alias: acct: Xestiona a conta antiga account_migration: - acct: Xestiona a nova conta + acct: Usuaria na nova conta account_warning_preset: text: Texto preestablecido title: Título admin_account_action: - include_statuses: Incluír toots reportados no correo + include_statuses: Incluír toots denunciados no correo send_email_notification: Notificar a usuaria por correo-e - text: Aviso persoalizado + text: Aviso personalizado type: Acción types: - disable: Desactivar + disable: Desactivar conexión none: Non facer nada silence: Acalar suspend: Suspender e eliminar irreversiblemente datos da conta @@ -101,7 +101,7 @@ gl: starts_at: Comezo do acontecemento text: Anuncio defaults: - autofollow: Convide a seguir a súa conta + autofollow: Convida a seguir a tua conta avatar: Avatar bot: Esta conta é de un bot chosen_languages: Filtrar idiomas @@ -112,8 +112,8 @@ gl: data: Datos discoverable: Incluír esta conta no directorio display_name: Nome mostrado - email: enderezo correo electrónico - expires_in: Caducidade despois de + email: Enderezo de email + expires_in: Caduca tras fields: Metadatos do perfil header: Cabeceira inbox_url: URL da caixa de entrada do repetidor @@ -123,7 +123,7 @@ gl: max_uses: Número máximo de usos new_password: Novo contrasinal note: Acerca de ti - otp_attempt: Código de Dobre-Factor + otp_attempt: Código do Segundo Factor password: Contrasinal phrase: Palabra chave ou frase setting_advanced_layout: Activar interface web avanzada @@ -132,10 +132,10 @@ gl: setting_boost_modal: Pedir confirmación antes de promocionar setting_crop_images: Recortar imaxes a 16x9 en toots non despregados setting_default_language: Idioma de publicación - setting_default_privacy: Intimidade da publicación + setting_default_privacy: Privacidade da publicación setting_default_sensitive: Marcar sempre multimedia como sensible setting_delete_modal: Solicitar confirmación antes de eliminar unha mensaxe - setting_display_media: Mostrar medios + setting_display_media: Mostrar multimedia setting_display_media_default: Por omisión setting_display_media_hide_all: Ocultar todo setting_display_media_show_all: Mostrar todo @@ -158,30 +158,30 @@ gl: email_domain_block: with_dns_records: Incluír rexistros MX e IPs do dominio featured_tag: - name: Etiqueta + name: Cancelo interactions: must_be_follower: Bloquear as notificacións de non-seguidoras - must_be_following: Bloquea as notificacións de persoas que non segue - must_be_following_dm: Bloquea as mensaxes directas de persoas que non segue + must_be_following: Bloquea as notificacións de persoas que non segues + must_be_following_dm: Bloquea as mensaxes directas de persoas que non segues invite: comment: Comentar invite_request: text: Por que queres unirte? notification_emails: digest: Enviar correos con resumos - favourite: Enviar un correo cando alguén marca como favorita unha das súas publicacións - follow: Enviar un correo cando alguén a segue - follow_request: Enviar un correo cando alguén solicita seguila - mention: Enviar un correo cando alguén a menciona - pending_account: Enviar correo-e cando unha nova conta precisa revisión - reblog: Enviar un correo cando alguén promociona a súa mensaxe - report: Enviar un correo cando se envíe un novo informe - trending_tag: Enviar correo cando unha etiqueta non revisada é tendencia + favourite: Enviar un correo cando alguén marca como favorita unha das tuas publicacións + follow: Enviar un correo cando alguén te segue + follow_request: Enviar un correo cando alguén solicita seguirte + mention: Enviar un correo cando alguén te menciona + pending_account: Enviar un correo cando unha nova conta precisa revisión + reblog: Enviar un correo cando alguén promociona a tua mensaxe + report: Enviar un correo cando se envíe unha denuncia + trending_tag: Un cancelo ser revisar está sendo tendencia tag: - listable: Permitir a esta etiqueta aparecer no directorio de perfil - name: Etiqueta - trendable: Permitir a esta etiqueta aparecer baixo Tendencias - usable: Permitir que os toots utilicen esta etiqueta + listable: Permitir que este cancelo apareza en buscas e no directorio de perfil + name: Cancelo + trendable: Permitir que este cancelo apareza en tendencias + usable: Permitir que os toots utilicen este cancelo 'no': Non recommended: Recomendado required: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 2063446f1..5f8c525e1 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -153,10 +153,10 @@ hu: severity: Súlyosság type: Importálás típusa username: Felhasználónév - username_or_email: Felhasználónév vagy E-mail + username_or_email: Felhasználónév vagy e-mail cím whole_word: Teljes szó email_domain_block: - with_dns_records: Domain MX rekordjainak és IP címeinek hozzávétele + with_dns_records: Domain MX rekordjainak és IP-címeinek hozzávétele featured_tag: name: Hashtag interactions: @@ -179,7 +179,7 @@ hu: trending_tag: E-mail küldése, ha egy még nem látott hashtag trendi lett tag: listable: A hashtag megjelenhet a profiladatbázisban - name: Címke + name: Hashtag trendable: A hashtag megjelenhet a trendek között usable: Tülkök használhatják ezt a hashtaget 'no': Nem diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 1e25419cf..a14dc3e04 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -56,7 +56,7 @@ ja: domain: 登録するとこのサーバーからデータを受信したり、このドメインから受信するデータを処理して保存できるようになります email_domain_block: domain: メールアドレスのドメイン名および、名前解決したMXレコード、IPアドレスを指定できます。ユーザー登録時にこれらをチェックし、該当する場合はユーザー登録を拒否します。 - with_dns_records: 指定したドメインの名前解決ができない場合、ブラックリストに登録されます + with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もブラックリストに登録されます featured_tag: name: 'これらを使うといいかもしれません:' form_challenge: diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 5fb0e8fce..8eddd3589 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -78,6 +78,7 @@ nn: acct: Brukernavnet til den nye brukeren account_warning_preset: text: Føreåtstekst + title: Tittel admin_account_action: include_statuses: Inkluder rapporterte tuter i e-mailen send_email_notification: Varsl brukaren med e-post diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 426247676..55b33a281 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -78,6 +78,7 @@ acct: Brukernavnet til den nye brukeren account_warning_preset: text: Forhåndsvalgt tekst + title: Tittel admin_account_action: include_statuses: Inkluder rapporterte tuter i e-mailen send_email_notification: Si ifra til brukeren over E-post diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 1f72f278d..600ebe5c5 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -55,7 +55,7 @@ pt-BR: domain_allow: domain: Este domínio poderá obter dados deste servidor e os dados recebidos dele serão processados e armazenados email_domain_block: - domain: Este pode ser o nome de domínio que aparece no endereço de email, o registro MX para o qual o domínio resolve, ou o IP do servidor para o qual o registro MX resolve. Estes serão verificados no momento da inscrição do usuário e a inscrição será rejeitada. + domain: Este pode ser o nome de domínio que aparece no endereço de e-mail, o registro MX para o qual o domínio resolve, ou o IP do servidor para o qual o registro MX resolve. Esses vão ser verificados no momento da cadastro do usuário e o cadastro será rejeitado. with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: name: 'Você pode querer usar um destes:' diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 3bec60f38..43927893d 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -3,14 +3,14 @@ pt-PT: simple_form: hints: account_alias: - acct: Especifique o nome de usuário@domínio da conta de onde você deseja mover + acct: Especifique o utilizador@domínio da conta de onde você deseja migrar account_migration: - acct: Especifique o nome de usuário@domínio da conta para onde você deseja mover + acct: Especifique o utilizador@domínio da conta para onde você deseja migrar account_warning_preset: text: Tu podes usar sintaxe de escrita, como URLs, hashtags e referências title: Opcional. Não visível para o destinatário admin_account_action: - include_statuses: O usuário verá quais ferramentas causaram a ação de moderação ou aviso + include_statuses: O utilizador verá quais toots causaram a ação de moderação ou aviso send_email_notification: O utilizador receberá uma explicação sobre o que aconteceu com a sua conta text_html: Opcional. Tu podes usar sintaxe de escrita. Tu podes adicionar predefinições de aviso para poupar tempo type_html: Escolhe o que fazer com %{acct} @@ -41,10 +41,10 @@ pt-PT: phrase: Será correspondido independentemente da capitalização ou do aviso de conteúdo duma publicação scopes: Quais as APIs a que será concedido acesso. Se escolheres uma abrangência de nível superior, não precisarás de as seleccionar individualmente. setting_aggregate_reblogs: Não mostrar novas partilhas que foram partilhadas recentemente (só afecta as novas partilhas) - setting_default_sensitive: Média sensível está oculta por padrão e pode ser revelada com um clique - setting_display_media_default: Esconder média marcada como sensível - setting_display_media_hide_all: Esconder sempre toda a média - setting_display_media_show_all: Mostrar sempre a média marcada como sensível + setting_default_sensitive: Media sensível está oculta por padrão e pode ser revelada com um clique + setting_display_media_default: Esconder media marcada como sensível + setting_display_media_hide_all: Esconder sempre toda a media + setting_display_media_show_all: Mostrar sempre a media marcada como sensível setting_hide_network: Quem tu segues e quem te segue não será mostrado no teu perfil setting_noindex: Afecta o teu perfil público e as páginas das tuas publicações setting_show_application: A aplicação que tu usas para publicar será mostrada na vista detalhada das tuas publicações @@ -53,7 +53,7 @@ pt-PT: username: O teu nome de utilizador será único em %{domain} whole_word: Quando a palavra-chave ou expressão-chave é somente alfanumérica, ela só será aplicada se corresponder à palavra completa domain_allow: - domain: Este domínio será capaz de obter dados deste servidor e os dados dele recebidos serão processados e armazenados + domain: Este domínio será capaz de obter dados desta instância e os dados dele recebidos serão processados e armazenados email_domain_block: domain: Este pode ser o nome de domínio que aparece no endereço de email, o registro MX para o qual o domínio resolve, ou o IP do servidor para o qual o registro MX resolve. Estes serão verificados no momento da inscrição do utilizador e a inscrição será rejeitada. with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra @@ -62,7 +62,7 @@ pt-PT: form_challenge: current_password: Está a entrar numa área restrita imports: - data: Arquivo CSV exportado de outro servidor do Mastodon + data: Arquivo CSV exportado de outra instância do Mastodon invite_request: text: Isto vai ajudar-nos a rever o seu pedido sessions: @@ -133,9 +133,9 @@ pt-PT: setting_crop_images: Cortar imagens em toots não expandidos para o formato 16x9 setting_default_language: Língua de publicação setting_default_privacy: Privacidade da publicação - setting_default_sensitive: Sempre marcar média como sensível + setting_default_sensitive: Sempre marcar media como sensível setting_delete_modal: Solicitar confirmação antes de eliminar uma publicação - setting_display_media: Exposição de média + setting_display_media: Visualização de media setting_display_media_default: Pré-definição setting_display_media_hide_all: Esconder todos setting_display_media_show_all: Mostrar todos @@ -148,7 +148,7 @@ pt-PT: setting_theme: Tema do site setting_trends: Mostrar as tendências de hoje setting_unfollow_modal: Solicitar confirmação antes de deixar de seguir alguém - setting_use_blurhash: Mostrar gradientes coloridos para médias ocultas + setting_use_blurhash: Mostrar gradientes coloridos para medias ocultas setting_use_pending_items: Modo lento severity: Gravidade type: Tipo de importação diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index ac4c344f1..aa0b07708 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -2,19 +2,34 @@ ro: simple_form: hints: + account_alias: + acct: Specificați numele de utilizator@domeniu al contului de la care doriți să treceți + account_migration: + acct: Specificați numele de utilizator@domeniu al contului la care doriți să vă mutați account_warning_preset: text: Poți utiliza sintaxe precum URL, hastag sau menționări + title: Opțional. Nu este vizibil pentru destinatar admin_account_action: + include_statuses: Utilizatorul va vedea ce postări au provocat acțiunea de moderare sau avertismentul 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 + announcement: + all_day: Când este bifat, numai datele intervalului de timp vor fi afișate + ends_at: Opțional. Anunțul va fi automat nepublicat în acest moment + scheduled_at: Lăsați necompletat pentru a publica anunțul imediat + starts_at: Opțional. În cazul în care anunțul tău este legat de un anumit interval de timp + text: Poți folosi sintaxa de postare. Te rugăm să fii atent la spațiul pe care anunțul îl va ocupa pe ecranul utilizatorului 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 + current_password: În scopuri de securitate, vă rugăm să introduceţi parola contului curent + current_username: Pentru a confirma, vă rugăm să introduceţi numele de utilizator al contului curent digest: Este trimis doar după o lungă perioadă de inactivitate și numai dacă primești mesaje personale în perioada de absență + discoverable: Directorul de profil este un alt mod prin care contul tău poate ajunge la un public mai larg 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 @@ -25,18 +40,35 @@ ro: 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_aggregate_reblogs: Nu afișa impulsurile noi pentru postările care au fost deja recent impulsionate (afectează doar noile impulsuri primite) + setting_default_sensitive: Fișierele media sensibile sunt ascunse implicit și pot fi dezvăluite cu un clic 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_show_application: Aplicația pe care o utilizați pentru a posta va fi afișată în vizualizarea detaliată a postărilor + setting_use_blurhash: Gradienții sunt bazați pe culorile vizualelor ascunse, dar ofuscă orice detalii + setting_use_pending_items: Ascunde actualizările cronologice din spatele unui click în loc de a derula automat fluxul 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ă + domain_allow: + domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate + email_domain_block: + domain: Acesta poate fi numele domeniului care apare pe adresa de e-mail, înregistrarea MX la care domeniul se rezolvă sau IP-ul serverului la care înregistrează MX rezolvă. Acestea vor fi verificate după înregistrarea utilizatorului, iar înscrierea va fi respinsă. + with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră + featured_tag: + name: 'S-ar putea să vreți să folosiți unul dintre acestea:' + form_challenge: + current_password: Ați intrat într-o zonă securizată imports: data: Fișierul CSV exportat de la o altă instanță + invite_request: + text: Acest lucru ne va ajuta să revizuim cererea dvs sessions: otp: 'Introdu codul pentru dubla protecție generat de telefonul mobil sau unul din codurile de rezervă:' + tag: + name: Poți doar să schimbi caseta literelor, de exemplu, pentru a o face mai lizibilă user: chosen_languages: Doar postările în limbile selectate vor fi afișate în fluxurile publice labels: @@ -44,9 +76,15 @@ ro: fields: name: Etichetă value: Conținut + account_alias: + acct: Manipularea contului vechi + account_migration: + acct: Manipularea contului nou account_warning_preset: text: Text presetat + title: Titlu admin_account_action: + include_statuses: Include postările raportate în e-mail send_email_notification: Notificați utilizatorul prin e-mail text: Avertisment personalizat type: Acțiune @@ -56,6 +94,12 @@ ro: silence: Liniște suspend: Suspendă și șterge ireversibil datele contului warning_preset_id: Utilizează un avertisment predefinit + announcement: + all_day: Eveniment pe toată ziua + ends_at: Sfârșitul evenimentului + scheduled_at: Programare publicare + starts_at: Începerea evenimentului + text: Anunţ defaults: autofollow: Invită să te urmărească avatar: Fotografie de profil @@ -65,6 +109,7 @@ ro: confirm_password: Confirmă parola context: Contextele filtrului current_password: Parola actuală + data: Date discoverable: Listează acest cont in director display_name: Numele afișat email: Adresa de e-mail @@ -81,37 +126,65 @@ ro: otp_attempt: Cod dublă protecție password: Parolă phrase: Cuvânt sau frază + setting_advanced_layout: Activează interfața web avansată + setting_aggregate_reblogs: Grupează impulsurile în fluxuri setting_auto_play_gif: Redă automat animațiile GIF - setting_boost_modal: Arată dialogul de confirmare înainte de a redistribui + setting_boost_modal: Arată dialogul de confirmare înainte de a impulsiona + setting_crop_images: Decupează imaginile în postările non-extinse la 16x9 setting_default_language: În ce limbă postezi 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: Afișare media setting_display_media_default: Standard + setting_display_media_hide_all: Ascunde toate + setting_display_media_show_all: Arată toate + setting_expand_spoilers: Întotdeauna extinde postările marcate cu avertismente referitoare la conținut 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 + setting_show_application: Dezvăluie aplicația folosită pentru a trimite postări setting_system_font_ui: Utilizează fontul standard as sistemului setting_theme: Tema siteului + setting_trends: Arată tendințele de astăzi setting_unfollow_modal: Arată dialogul de confirmare înainte de a nu mai urmări pe cineva + setting_use_blurhash: Arată gradiente colorate pentru media ascunse + setting_use_pending_items: Modul lent severity: Severitate type: Ce importați username: Nume de utilizator username_or_email: Numele de utilizator sau adresa de E-mail whole_word: Cuvânt întreg + email_domain_block: + with_dns_records: Include înregistrările MX și IP-urile domeniului + featured_tag: + name: Hashtag interactions: must_be_follower: Blochează notificările de la persoane care nu te urmăresc must_be_following: Blochează notificările de la persoane pe care nu le urmărești must_be_following_dm: Blochează mesajele directe de la persoane pe care nu le urmărești + invite: + comment: Comentariu + invite_request: + text: De ce vrei să te alături? notification_emails: digest: Trimite rezumate favourite: Trimite e-mail când cineva favorizează unul din statusurile tale follow: Trimite e-mail când cineva te urmărește follow_request: Trimite e-mail când cineva trimite o cerere de urmărire mention: Trimite e-mail când cineva te menționează - reblog: Trimite e-mail când cineva redistribuie unul din statusurile tale + pending_account: Noul cont trebuie revizuit + reblog: Trimite e-mail când cineva impulsionează una din postările tale report: Trimite e-mail când un raport nou este trimis + trending_tag: Un hashtag nerevizuit este în tendință + tag: + listable: Permite acestui hashtag să apară în căutări și în directorul de profil + name: Hashtag + trendable: Permite acestui hashtag să apară sub tendințe + usable: Permite postărilor să folosească acest hashtag 'no': Nu + recommended: Recomandat required: + mark: "*" text: obligatoriu 'yes': Da diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 7bc585c64..15f383b2a 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -22,34 +22,34 @@ ru: starts_at: Необязательно. На случай, если ваше объявление привязано к какому-то временному интервалу text: Вы можете использовать тот же синтаксис, что и в постах. Будьте предусмотрительны насчёт места, которое займёт объявление на экране пользователей defaults: - autofollow: Люди, пришедшие по этому приглашению, автоматически будут подписаны на вас - avatar: Поддерживается PNG, GIF и JPG. Максимальный размер — %{size}. Будет уменьшен до %{dimensions}px - bot: Эта учётная запись обычно выполяет автоматизированные действия и может не просматриваться владельцем + autofollow: Люди, пришедшие по этому приглашению, автоматически будут подписаны на вас. + avatar: Поддерживается PNG, GIF и JPG. Максимальный размер — %{size}. Будет уменьшен до %{dimensions}px. + bot: Отметьте, если с этой учётной записи выполняются автоматизированные действия и она может не просматриваться владельцем. context: Один или несколько контекстов, к которым должны быть применены фильтры current_password: В целях безопасности введите пароль текущей учётной записи current_username: Для подтверждения, пожалуйста, введите имя пользователя текущей учётной записи digest: Если вы долго не заглядывали, отправим вам дайджест событий, которые происходили в период вашего отсутствия. - discoverable: Каталог профилей это один из способов получить охват вашего профиля более обширной аудиторией - email: Вам будет отправлено электронное письмо с подтверждением - fields: В профиле можно отобразить до 4 пунктов в виде таблицы - header: Поддерживается PNG, GIF и JPG. Максимальный размер — %{size}. Будет уменьшена до %{dimensions}px + discoverable: Каталог профилей это один из способов получить охват вашего профиля более обширной аудиторией. + email: Вам будет отправлено электронное письмо с подтверждением. + fields: В профиле можно отобразить до 4 пунктов в виде таблицы. + header: Поддерживается PNG, GIF и JPG. Максимальный размер — %{size}. Будет уменьшена до %{dimensions}px. inbox_url: Копировать URL с главной страницы ретранслятора, который вы хотите использовать irreversible: Отфильтрованные посты будут утеряны навсегда, даже если в будущем фильтр будет убран locale: Язык интерфейса, e-mail писем и push-уведомлений - locked: Подписчиков нужно будет подтверждать самостоятельно - password: Укажите не менее 8 символов + locked: Подписчиков нужно будет подтверждать вручную. + password: Укажите не менее 8 символов. phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании поста scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически. - setting_aggregate_reblogs: Не показывать новые продвижения постов, которые уже были недавно продвинуты (относится только к новым продвижениям) - setting_default_sensitive: Деликатные медиафайлы скрыты по умолчанию и могут быть показаны по нажатию на них + setting_aggregate_reblogs: Не показывать новые продвижения постов, которые уже были недавно продвинуты (относится только к новым продвижениям). + setting_default_sensitive: Деликатные медиафайлы скрыты по умолчанию и могут быть показаны по нажатию на них. setting_display_media_default: Скрывать деликатные медиафайлы setting_display_media_hide_all: Всегда скрывать любые медиафайлы setting_display_media_show_all: Всегда показывать деликатные медиафайлы - setting_hide_network: Другие не смогут видеть ни ваши подписки, ни ваших подписчиков - setting_noindex: Относится к вашему публичному профилю и страницам постов - setting_show_application: При просмотре поста будет видно из какого приложения он отправлен - setting_use_blurhash: Градиенты основаны на цветах скрытых медиа, но скрывают любые детали - setting_use_pending_items: Показывать обновления в ленте только после клика вместо автоматической прокрутки + setting_hide_network: Другие не смогут видеть ни ваши подписки, ни ваших подписчиков. + setting_noindex: Ваш публичный профиль и страницы постов будут скрыты из поисковых движков. + setting_show_application: При просмотре поста будет видно из какого приложения он отправлен. + setting_use_blurhash: Градиенты основаны на цветах скрытых медиа, но скрывают любые детали. + setting_use_pending_items: Показывать обновления в ленте только после клика вместо автоматической прокрутки. username: Ваше имя пользователя будет уникальным на %{domain} whole_word: Если слово или фраза состоит только из букв и цифр, сопоставление произойдёт только по полному совпадению domain_allow: @@ -62,7 +62,7 @@ ru: form_challenge: current_password: Вы входите в зону безопасности imports: - data: Файл CSV, экспортированный с другого узла Mastodon + data: Файл CSV, экспортированный с другого узла Mastodon. invite_request: text: Это поможет нам рассмотреть вашу заявку sessions: @@ -70,7 +70,7 @@ ru: tag: name: Вы можете изменить только регистр букв чтобы, например, сделать тег более читаемым user: - chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках + chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках. labels: account: fields: diff --git a/config/locales/simple_form.sc.yml b/config/locales/simple_form.sc.yml new file mode 100644 index 000000000..91bd6d92f --- /dev/null +++ b/config/locales/simple_form.sc.yml @@ -0,0 +1 @@ +sc: diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index b365bdda8..485f74d24 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -59,8 +59,12 @@ sq: silence: Heshtje suspend: Pezulloje dhe fshi në mënyrë të pakthyeshme të dhënat e llogarisë warning_preset_id: Përdor një sinjalizim të paracaktuar + announcement: + starts_at: Fillimi i ngjarjes + text: Lajmërim defaults: autofollow: Ftesë për ndjekje të llogarisë tuaj + avatar: Foto profili bot: Kjo është një llogari robot chosen_languages: Filtro gjuhë confirm_new_password: Ripohoni fjalëkalimin e ri @@ -84,6 +88,7 @@ sq: otp_attempt: Kod mirëfilltësimi dyfaktorësh password: Fjalëkalim phrase: Fjalëkyç ose frazë + setting_advanced_layout: Aktivizo ueb interface të avancuar setting_aggregate_reblogs: Grupoji përforcimet në rrjedha kohore setting_auto_play_gif: Vetëluaji GIF-et e animuar setting_boost_modal: Shfaq dialog ripohimi përpara përforcimi @@ -102,16 +107,23 @@ sq: setting_show_application: Tregoje aplikacionin e përdorur për të dërguar mesazhe setting_system_font_ui: Përdor shkronja parazgjedhje të sistemit setting_theme: Temë sajti + setting_trends: Shfaq trendet e sodit setting_unfollow_modal: Shfaq dialog ripohimi përpara heqjes së ndjekjes për dikë + setting_use_blurhash: Shfaq ngjyra me pjerrësi për media të fshehura + setting_use_pending_items: Gjendje e ngadalshme severity: Rreptësi type: Lloj importimi username: Emër përdoruesi username_or_email: Emër përdoruesi ose Email whole_word: Krejt fjalën + featured_tag: + name: Hashtag interactions: must_be_follower: Blloko njoftime nga jo-ndjekës must_be_following: Blloko njoftime nga persona që nuk i ndiqni must_be_following_dm: Blloko mesazhe të drejtpërdrejt nga persona që nuk i ndiqni + invite: + comment: Komento notification_emails: digest: Dërgo email-e përmbledhës favourite: Të dërgohet email kur dikush parapëlqen gjendjen tuaj @@ -120,7 +132,11 @@ sq: mention: Të dërgohet email kur dikush ju përmend reblog: Dërgo email kur dikush përforcon gjendjen time report: Dërgo email kur parashtrohet një raportim i ri + tag: + name: Hashtag 'no': Jo + recommended: Rekomanduar required: + mark: "*" text: e domosdoshme 'yes': Po diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 22a2647a3..0f8578bb1 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -24,7 +24,7 @@ th: defaults: autofollow: ผู้คนที่ลงทะเบียนผ่านคำเชิญจะติดตามคุณโดยอัตโนมัติ avatar: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px - bot: บัญชีนี้ทำการกระทำอัตโนมัติเป็นหลักและอาจไม่ได้รับการสังเกตการณ์ + bot: บัญชีนี้ทำการกระทำแบบอัตโนมัติเป็นหลักและอาจไม่ได้รับการสังเกตการณ์ context: บริบทจำนวนหนึ่งหรือมากกว่าที่ตัวกรองควรใช้ current_password: เพื่อวัตถุประสงค์ด้านความปลอดภัย โปรดป้อนรหัสผ่านของบัญชีปัจจุบัน current_username: เพื่อยืนยัน โปรดป้อนชื่อผู้ใช้ของบัญชีปัจจุบัน diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 69ee19f1b..60f7c9eac 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -78,6 +78,7 @@ tr: acct: Yeni hesabın tanıtıcısı account_warning_preset: text: Ön-ayar metni + title: Başlık admin_account_action: include_statuses: Birdirilen tootları e-postaya dahil et send_email_notification: E-postayla kullanıcıyı bilgilendir diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 2fe0461cf..10977aedc 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -8,6 +8,7 @@ uk: acct: Вкажіть ім'я користувача@домен облікового запису, на яку ви хочете переміститися account_warning_preset: text: Ви можете використовувати синтаксис дмухів, наприклад URLи, хештеґи та згадки + title: Необов'язково. Не відображається отримувачу admin_account_action: include_statuses: Користувач побачить, які дмухи призвели до адміністративних дій або попереджень send_email_notification: Користувач отримає роз'яснення, що сталося з його обліковим записом @@ -23,7 +24,7 @@ uk: defaults: autofollow: Люди, що зареєструвалися за вашим запрошенням, автоматично підпишуться на вас avatar: PNG, GIF, або JPG. Максимум - %{size}. Буде зменшено до %{dimensions}px - bot: Цей аккаунт в основному виконує автоматичні дії та може не відстежуватіся + bot: Цей акаунт виконує автоматичні дії та може не відстежуватися context: Один або кілька контекстів, до яких повинні бути застосовані фільтри current_password: Для цілей безпеки, будь ласка, введіть пароль поточного облікового запису current_username: Для підтвердження, будь ласка, введіть ім'я користувача поточного облікового запису @@ -42,8 +43,8 @@ uk: setting_aggregate_reblogs: Не показувати передмухи для дмухів, які нещодавно вже були передмухнуті (не вплине на вже отримані передмухи) setting_default_sensitive: Дражливі медіа приховані за промовчанням та можуть бути розкрити кліком setting_display_media_default: Приховувати медіа, помічені як дражливі - setting_display_media_hide_all: Приховувати будь-які медіа - setting_display_media_show_all: Завжди відображати медіа, помічені як дражливі + setting_display_media_hide_all: Завжди приховувати медіа + setting_display_media_show_all: Завжди показувати медіа setting_hide_network: У вашому профілі не буде відображено підписки та підписників setting_noindex: Впливає на ваш публічний профіль та сторінки статусу setting_show_application: Застосунок, за допомогою якого ви дмухнули, буде відображено серед деталей дмуху @@ -78,6 +79,7 @@ uk: acct: Оброблювач нового облікового запису account_warning_preset: text: Текст шаблону + title: Заголовок admin_account_action: include_statuses: Додати дмухи, на які ви скаржитесь, до електронного листа send_email_notification: Сповістити користувача електронною поштою diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index a617df62e..040e90ef7 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -7,7 +7,7 @@ zh-CN: account_migration: acct: 指定你想迁移过去的帐号的 用户名@站点域名 account_warning_preset: - text: 你可以使用嘟文格式,在嘟文中加入 URL、话题标签和提及“@” + text: 你可以在嘟文中使用特殊格式,例如在嘟文中加入 URL、话题标签和提及“@” title: 可选。对接收者不可见 admin_account_action: include_statuses: 用户将会看到哪些嘟文导致了审核行为或警告 @@ -33,7 +33,7 @@ zh-CN: email: 我们会向你发送一封确认邮件 fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目 header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px - inbox_url: 从你想要使用的中继的主页上复制 URL + inbox_url: 从你想要使用的中继站的主页上复制 URL irreversible: 已过滤的嘟文会不可逆转地消失,即便移除过滤器之后也一样 locale: 用户界面、电子邮件和推送通知中使用的语言 locked: 你需要手动审核所有关注请求 @@ -116,8 +116,8 @@ zh-CN: expires_in: 失效时间 fields: 个人资料附加信息 header: 个人资料页横幅图片 - inbox_url: 中继收件箱的 URL - irreversible: 放弃而非隐藏 + inbox_url: 中继站收件箱的 URL + irreversible: 丢弃而非隐藏 locale: 界面语言 locked: 保护你的帐户(锁嘟) max_uses: 最大使用次数 diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 3a327c1d0..e11fb3e69 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -10,7 +10,7 @@ sk: api: API apps: Aplikácie apps_platforms: Užívaj Mastodon z iOSu, Androidu, a iných platforiem - browse_directory: Prehľadávaj databázu profilov, filtruj podľa záujmov + browse_directory: Prehľadávaj databázu profilov, a filtruj podľa záujmov browse_local_posts: Prebádaj naživo prúd verejných príspevkov z tohto servera browse_public_posts: Sleduj naživo prúd verejných príspevkov na Mastodone contact: Kontakt @@ -76,9 +76,9 @@ sk: following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť posts: few: Príspevkov - many: Príspevkov + many: Príspevky one: Príspevok - other: Príspevky + other: Príspevkov posts_tab_heading: Príspevky posts_with_replies: Príspevky s odpoveďami reserved_username: Prihlasovacie meno je vyhradené @@ -118,7 +118,7 @@ sk: deleted: Vymazané demote: Degraduj disable: Zablokuj - disable_two_factor_authentication: Zakáž 2FA + disable_two_factor_authentication: Vypni dvoj-faktorové overovanie disabled: Blokovaný display_name: Ukáž meno domain: Doména @@ -202,6 +202,28 @@ sk: web: Web whitelisted: Na bielej listine action_logs: + action_types: + assigned_to_self_report: Priraď hlásenie + change_email_user: Zmeň email pre užívateľa + confirm_user: Potvrď užívateľa + create_account_warning: Vytvor výstrahu + create_announcement: Vytvor oboznámenie + create_domain_allow: Vytvor povolenie pre doménu + create_domain_block: Vytvor doménovú blokádu + demote_user: Zniž užívateľskú rolu + destroy_announcement: Vymaž oboznámenie + destroy_domain_allow: Zmaž povolenie pre doménu + destroy_domain_block: Zruš blokovanie domény + destroy_status: Vymaž príspevok + disable_2fa_user: Vypni dvoj-faktorové overovanie + disable_user: Deaktivuj užívateľa + enable_user: Povoľ užívateľa + remove_avatar_user: Vymaž avatar + reopen_report: Znovu otvor hlásenie + reset_password_user: Obnov heslo + silence_account: Utíš účet + suspend_account: Vylúč účet + update_status: Aktualizuj stav actions: 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}" @@ -236,6 +258,8 @@ sk: update_custom_emoji: "%{name} aktualizoval/a emoji %{target}" update_status: "%{name} aktualizoval/a status pre %{target}" deleted_status: "(zmazaný príspevok)" + filter_by_action: Filtruj podľa úkonu + filter_by_user: Trieď podľa užívateľa title: Kontrólny záznam announcements: destroyed_msg: Oboznámenie úspešne vymazané! diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 91720c602..a7cf869a4 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -58,6 +58,7 @@ sl: media: Mediji moved_html: "%{name} se je prestavil na %{new_profile_link}:" network_hidden: Ta informacija ni na voljo + never_active: Nikoli nothing_here: Tukaj ni ničesar! people_followed_by: Ljudje, ki jim sledi %{name} people_who_follow: Ljudje, ki sledijo %{name} diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 0e20902ff..eee431006 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -4,23 +4,37 @@ sq: about_hashtag_html: Këto janë mesazhe publike të etiketuar me #%{hashtag}. Mundeni të ndërveproni me ta, nëse keni një llogari kudo qoftë në fediverse. about_mastodon_html: Mastodon-i është një rrjet shoqëror i bazuar në protokolle web të hapur dhe në software të lirë, me burim të hapur. Është i decentralizuar, si email-ii. about_this: Mbi + active_count_after: aktive + active_footnote: Përdorues Aktivë Mujor (PAM) administered_by: 'Administruar nga:' + api: API apps: Aplikacione për celular contact: Kontakt contact_missing: I parregulluar + contact_unavailable: N/A + discover_users: Zbulo përdoruesit documentation: Dokumentim + get_apps: Provo app mobil hosted_on: Mastodon i strehuar në %{domain} learn_more: Mësoni më tepër privacy_policy: Rregulla privatësie + see_whats_happening: Shih se ç'po ndodhë + server_stats: 'Statistika serveri:' source_code: Kod burim status_count_after: one: gjendje other: gjendje status_count_before: Cili krijoi + tagline: Ndjek shokët/shoqet dhe gjej të ri terms: Kushte shërbimi + unavailable_content: Përmbajtje e pa arritshme + unavailable_content_description: + domain: Server + reason: Arsye user_count_after: one: përdorues other: përdorues + user_count_before: Shtëpi për what_is_mastodon: Ç’është Mastodon-i? accounts: choices_html: 'Zgjedhje të %{name}:' @@ -32,8 +46,10 @@ sq: joined: U bë pjesë më %{date} last_active: aktiv së fundi link_verified_on: Pronësia e kësaj lidhjeje qe kontrolluar më %{date} + media: Media moved_html: "%{name} ka kaluar te %{new_profile_link}:" network_hidden: Këto të dhëna nuk mund të kihen + never_active: Asnjëherë nothing_here: S’ka gjë këtu! people_followed_by: Persona të ndjekur nga %{name} people_who_follow: Persona që ndjekin %{name} @@ -47,6 +63,9 @@ sq: reserved_username: Emri i përdoruesit është i ruajtur për dikë roles: admin: Përgjegjës + bot: Bot + group: Grup + unavailable: Profil i pa arritshëm unfollow: Resht së ndjekuri admin: account_actions: @@ -58,7 +77,11 @@ sq: delete: Fshije destroyed_msg: Shënimi i moderimit u asgjësua me sukses! accounts: + add_email_domain_block: Shto e-mail domain në listën e zezë + approve: Prano + approve_all: Prano të gjithë are_you_sure: A jeni i sigurt? + avatar: Foto profili by_domain: Përkatësi change_email: changed_msg: Email-i i llogarisë u ndryshua me sukses! @@ -78,6 +101,7 @@ sq: display_name: Emër në ekran domain: Përkatësi edit: Përpunojeni + email: Email email_status: Gjendje email-i enable: Aktivizoje enabled: E aktivizuar @@ -86,6 +110,7 @@ sq: header: Krye inbox_url: URL Mesazhesh të Marrë invited_by: Ftuar nga + ip: IP joined: U bë pjesë location: all: Krejt @@ -98,20 +123,25 @@ sq: moderation: active: Aktiv all: Krejt + pending: Në pritje silenced: U heshtua suspended: Të pezulluara title: Moderim moderation_notes: Shënime moderimesh most_recent_activity: Veprimtaria më e freskët most_recent_ip: IP-ja më e freskët + no_account_selected: Asnjë llogari nuk është ndryshuar pasiqë asnjë llogari nuk është zgjedhur no_limits_imposed: Pa imponim kufijsh not_subscribed: Jo i pajtuar + pending: Në pritje për rishikim perform_full_suspension: Pezulloje promote: Promovojeni protocol: Protokoll public: Publike push_subscription_expires: Pajtimi PuSH skadon më redownload: Rifresko profilin + reject: Refuzo + reject_all: Refuzo të gjitha remove_avatar: Hiqe avatarin remove_header: Hiqe kryen resend_confirmation: @@ -124,9 +154,12 @@ sq: role: Leje roles: admin: Përgjegjës + moderator: Moderues staff: Staf user: Përdorues search: Kërkoni + search_same_email_domain: Përdorues tjerë me e-mail domain të ngjajshëm + search_same_ip: Përdorues tjerë me IP të ngjajshme shared_inbox_url: URL kutie të përbashkët mesazesh show: created_reports: Ka bërë raportime @@ -136,6 +169,7 @@ sq: statuses: Gjendje subscribe: Pajtomë suspended: Të pezulluara + time_in_queue: Në pritje në radhë %{time} title: Llogari unconfirmed_email: Email i paripohuar undo_silenced: Zhbëje heshtjen @@ -143,7 +177,28 @@ sq: unsubscribe: Shpajtohuni username: Emër përdoruesi warn: Sinjalizoje + web: Ueb + whitelisted: Lista e bardhë action_logs: + action_types: + assigned_to_self_report: Përcakto Raportin + change_email_user: Ndrysho E-mail për përdoruesin + confirm_user: Konfirmo përdoruesin + create_account_warning: Krijo vërrejtje + create_announcement: Krijo lajmërim + create_custom_emoji: Krijo Emoji të veçantë + create_domain_allow: Lejo krijimin e domain + create_domain_block: Krijo bllokimin e domain + create_email_domain_block: Krijo bllokadë për E-mailët me domain + destroy_status: Fshij gjendjen + disable_2fa_user: Ç'aktivizo 2FA + disable_custom_emoji: Ç'aktivizo Emoji të veçantë + disable_user: Ç'aktivizo përdorues + enable_user: Aktivizo përdorues + promote_user: Promovo përdoruesin + remove_avatar_user: Largo foton e profilit + reopen_report: Rihap rapotin + update_status: Përditëso gjendjen actions: assigned_to_self_report: "%{name} ia kaloi raportimin %{target} në ngarkim vetvetes" change_email_user: "%{name} ndryshoi adresën email të përdoruesit %{target}" @@ -176,21 +231,40 @@ sq: update_custom_emoji: "%{name} përditësoi emotikonin %{target}" update_status: "%{name} përditësoi gjendjen me %{target}" deleted_status: "(fshiu gjendjen)" + empty: Nuk u gjendën regjistrat. + filter_by_action: Filtro sipas veprimit + filter_by_user: Filtro sipas përdoruesit title: Auditim regjistri + announcements: + destroyed_msg: Lajmërimi është fshirë me sukses! + edit: + title: Modifiko lajmërimin + empty: Nuk u gjendën lajmërimet. + live: Drejtpërdrejtë + new: + create: Krijo lajmërim + title: Lajmërimi i ri + published_msg: Lajmërimi u publikua me sukses! + title: Lajmërimet custom_emojis: + assign_category: Përcakto kategori by_domain: Përkatësi copied_msg: Kopja vendore e emotikonëve u krijua me sukses copy: Kopjoje copy_failed_msg: S’u bë dot një kopje vendore e emotikoneve + create_new_category: Krijo kategori të re created_msg: Emotikoni u krijua me sukses! delete: Fshije destroyed_msg: Emotikoni u asgjësua me sukses! disable: Çaktivizoje + disabled: Pamundësuar disabled_msg: Ai emotikon u çaktivizua me sukses emoji: Emotikon enable: Aktivizoje + enabled: Mundësuar enabled_msg: Ai emotikon u aktivizua me sukses image_hint: PNG deri 50KB + list: Listë listed: Në listë new: title: Shtoni emotikon të ri vetjak @@ -198,11 +272,14 @@ sq: shortcode: Kod i shkurtër shortcode_hint: Të paktën 2 shenja, vetëm shenja alfanumerike dhe nënvija title: Emotikone vetjake + uncategorized: E pakategorizuar + unlist: Ç'listo unlisted: Hequr prej liste update_failed_msg: S’u përditësua dot ai emotikon updated_msg: Emotikoni u përditësua me sukses! upload: Ngarkoje dashboard: + authorized_fetch_mode: Gjendja e sigurtë backlog: punë të prapambetura config: Formësim feature_deletions: Fshirje llogarish @@ -210,12 +287,17 @@ sq: feature_profile_directory: Drejtori profilesh feature_registrations: Regjistrime feature_relay: Rele federimi + feature_spam_check: Kundër spam + feature_timeline_preview: Parashikimi kohështrirjes features: Veçori hidden_service: Federim me shërbime të fshehura open_reports: raportime të hapur + pending_tags: hashtag në pritje për rishikim + pending_users: përdorues në pritje për rishikim recent_users: Përdorues së fundi search: Kërko tekstin e plotë single_user_mode: Mënyrë me përdorues të vetëm + software: Softuerë space: Përdorim hapësire title: Pult total_users: përdorues gjithsej @@ -223,6 +305,8 @@ sq: week_interactions: ndërveprime këtë javë week_users_active: aktivë këtë javë week_users_new: përdorues këtë javë + domain_allows: + undo: Largo nga lista e bardhë domain_blocks: add_new: Shtoni bllokim të ri përkatësie created_msg: Bllokimi i përkatësisë tani po përpunohet @@ -237,6 +321,8 @@ sq: silence: Heshtoji suspend: Pezulloje title: Bllokim i ri përkatësie + private_comment: Koment privat + public_comment: Koment publik reject_media: Mos prano kartela media reject_media_hint: Heq kartela media të depozituara lokalisht dhe nuk pranon të shkarkohen të tilla në të ardhmen. Pa peshë për pezullimet reject_reports: Hidh tej raportimet @@ -262,11 +348,13 @@ sq: delete: Fshije destroyed_msg: Përkatësia email u fshi me sukses nga lista e bllokimeve domain: Përkatësi + from_html: nga %{domain} new: create: Shtoni përkatësi title: Zë i ri email në listë bllokimesh title: Listë bllokimesh email-esh instances: + by_domain: Domain delivery_available: Ka shpërndarje të mundshme known_accounts: one: "%{count} llogari e njohur" @@ -275,6 +363,8 @@ sq: all: Krejt limited: E kufizuar title: Moderim + private_comment: Koment privat + public_comment: Koment publik title: Federim total_blocked_by_us: Bllokuar nga ne total_followed_by_them: Ndjekur prej tyre @@ -347,6 +437,9 @@ sq: custom_css: desc_html: Modifikojeni pamjen me CSS të nagrkuar në çdo faqe title: CSS Vetjake + domain_blocks: + all: Për të gjithë + disabled: Për askend hero: desc_html: E shfaqur në faqen ballore. Këshillohet të paktën 600x100px. Kur nuk caktohet gjë, përdoret miniaturë e shërbyesit title: Figurë heroi @@ -404,13 +497,26 @@ sq: delete: Fshije nsfw_off: Vëri shenjë si jo rezervat nsfw_on: Vëri shenjë si rezervat + deleted: Fshirë failed_to_execute: S’u arrit të përmbushej + media: + title: Media no_media: S’ka media no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë title: Gjendje llogarish with_media: Me media tags: + context: Kontekst + directory: Në direktorium + last_active: Aktive së fundi + most_popular: Më e famshmja + most_recent: Të fundit + name: Hashtag + review: Gjendja e rishikimit + reviewed: Rishikuar title: Hashtage + trending_right_now: Në trend tani + unreviewed: E parishikuar title: Administrim warning_presets: add_new: Shtoni të ri @@ -422,8 +528,17 @@ sq: body: "%{reporter} ka raportuar %{target}" body_remote: Dikush nga %{domain} ka raportuar %{target} subject: Raport i ri për %{instance} (#%{id}) + aliases: + add_new: Krijo shkurtesë + remove: Fshijë shkurtesën + appearance: + localization: + guide_link_text: Çdokush mund të kontribuojë. + sensitive_content: Përmbajtje sensitive + toot_layout: Pamja e cicërimës application_mailer: notification_preferences: Ndryshoni parapëlqime email-i + salutation: "%{name}," settings: 'Ndryshoni parapëlqime email-i: %{link}' view: 'Parje:' view_profile: Shihni Profilin @@ -437,6 +552,7 @@ sq: warning: Hapni sytë me ato të dhëna. Mos ia jepni kurrë njeriu! your_token: Token-i juaj për hyrje auth: + apply_for_account: Kërko ftesë change_password: Fjalëkalim delete_account: Fshije llogarinë delete_account_html: Nëse dëshironi të fshihni llogarinë tuaj, mund ta bëni që këtu. Do t’ju kërkohet ta ripohoni. @@ -448,11 +564,18 @@ sq: migrate_account: Kaloni në një tjetër llogari migrate_account_html: Nëse doni ta ridrejtoni këtë llogari te një tjetër, këtë mund ta formësoni këtu. or_log_in_with: Ose bëni hyrjen me + providers: + cas: CAS + saml: SAML register: Regjistrohuni resend_confirmation: Ridërgo udhëzime ripohimi reset_password: Ricaktoni fjalëkalimin security: Siguri set_new_password: Caktoni fjalëkalim të ri + setup: + title: Rregullo + status: + account_status: Gjendja e llogarisë authorize_follow: already_following: E ndiqni tashmë këtë llogari error: Mjerisht, pati një gabim gjatë kërkimit të llogarisë së largët @@ -464,6 +587,8 @@ sq: return: Shfaq profilin e përdoruesit web: Kalo në web title: Ndiq %{acct} + challenge: + confirm: Vazhdo datetime: distance_in_words: about_x_hours: "%{count}o" @@ -537,10 +662,19 @@ sq: generic: changes_saved_msg: Ndryshimet u ruajtën me sukses! copy: Kopjoje + order_by: Rendit sipas save_changes: Ruaji ndryshimet validation_errors: one: Diçka s’është ende si duhet! Ju lutemi, shqyrtoni gabimin më poshtë other: Diçka s’është ende si duhet! Ju lutemi, shqyrtoni %{count} gabimet më poshtë + identity_proofs: + active: Aktive + authorize: Po, autorizoje + identity: Identifiko + inactive: Ç'aktivizo + publicize_checkbox: 'Dhe cicëro këtë:' + status: Gjendja e verifikimit + view_proof: Shfaq evidencë imports: modes: merge: Përzieji @@ -555,6 +689,7 @@ sq: following: Listë ndjekjesh muting: Listë heshtimesh upload: Ngarkoje + in_memoriam_html: Në përkujtim. invites: delete: Çaktivizoje expired: Ka skaduar @@ -586,6 +721,9 @@ sq: too_many: S’mund të bashkëngjiten më shumë se 4 kartela migrations: acct: emërpërdoruesi@përkatësi e llogarisë së re + cancel: Anulo ridrejtimin + proceed_with_move: Lëviz ndjekësit + set_redirect: Cakto ridrejtim moderation: title: Moderim notification_mailer: @@ -626,6 +764,7 @@ sq: human: decimal_units: units: + billion: B quadrillion: K pagination: newer: Më të ri @@ -634,6 +773,18 @@ sq: prev: I mëparshmi preferences: other: Tjetër + relationships: + activity: Aktivitet e llogarisë + dormant: Inaktive + followers: Ndjekësit + following: Të ndjekurit + invited: Të ftuarit + last_active: Së fundi aktiv + most_recent: Të fundit + moved: Lëvizur + mutual: Përbashkët + primary: Primare + relationship: Marrëdhënie remote_follow: acct: Jepni çiftin tuaj emërpërdoruesi@përkatësi prej të cilit doni që të veprohet missing_resource: S’u gjet dot URL-ja e domosdoshme e ridrejtimit për llogarinë tuaj @@ -659,17 +810,48 @@ sq: activity: Veprimtaria e fundit browser: Shfletues browsers: + alipay: Alipay + blackberry: Blackberry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox generic: Shfletues i panjohur + ie: Internet Explorer + micro_messenger: MicroMessenger nokia: Shfletues Nokia S40 Ovi + opera: Opera + otter: Otter + phantom_js: PhantomJS + qq: QQ Browser + safari: Safari + uc_browser: UCBrowser + weibo: Weibo current_session: Sesioni i tanishëm description: "%{browser} në %{platform}" explanation: Këta janë shfletuesit e futur në këtë çast te llogaria juaj Mastodon. + ip: IP platforms: + adobe_air: Adobe Air + android: Android + blackberry: Blackberry + chrome_os: ChromeOS + firefox_os: Firefox OS + ios: iOS + linux: Linux + mac: macOS other: platformë e panjohur + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone revoke: Shfuqizoje revoke_success: Sesioni u shfuqizua me sukses title: Sesione settings: + account: Llogari + account_settings: Rregullimet e llogarisë + aliases: Shkurtesat e llogarisë + appearance: Dukja authorized_apps: Aplikacione të autorizuara back: Mbrapsht te Mastodon delete: Fshirje llogarie diff --git a/config/locales/ta.yml b/config/locales/ta.yml index b4fc2ffac..fa4c1a87b 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -165,10 +165,47 @@ ta: warn: எச்சரி whitelisted: அனுமதிப்பட்டியல் action_logs: + action_types: + change_email_user: பயனரின் மின்னஞ்சலை மாற்று + confirm_user: பயனரை உறுதி செய் + create_account_warning: எச்சரிக்கையை உருவாக்கு + create_announcement: அறிவிப்பை உருவாக்கு + create_custom_emoji: தனிப்பயனான எமோஜியை உருவாக்கு + create_domain_allow: கள அனுமதியை உருவாக்கு + create_domain_block: கள முடக்கத்தை உருவாக்கு + create_email_domain_block: மின்னஞ்சல் கள முடக்கத்தை உருவாக்கு + demote_user: பயனரைப் படியிறக்கு + destroy_announcement: அறிவிப்பை நீக்கு + destroy_custom_emoji: தனிப்பயனான எமோஜியை நீக்கு + destroy_domain_allow: கள அனுமதியை நீக்கு + destroy_domain_block: கள முடக்கத்தை நீக்கு + destroy_email_domain_block: மின்னஞ்சல் கள முடக்கத்தை நீக்கு + destroy_status: பதிவை நீக்கு + disable_2fa_user: 2FA-வை முடக்கு + disable_custom_emoji: தனிப்பயனான எமோஜியை முடக்கு + disable_user: பயனரை முடக்கு + enable_custom_emoji: தனிப்பயனான எமோஜியை அனுமதி + enable_user: பயனரை அனுமதி + memorialize_account: கணக்கை நினைவிடம் ஆக்கு + promote_user: பயனரைப் பதவி உயர்த்து + remove_avatar_user: சுயவிவரப் படத்தை நீக்கு + reopen_report: அறிக்கையை மீண்டும் திற + reset_password_user: கடவுச்சொல்லை மீட்டமை + resolve_report: புகாரை சரிசெய் + silence_account: கணக்கை அமைதியாக்கு + suspend_account: கணக்கை இடைநீக்கு + unsilence_account: கணக்கிலிருந்து மீண்டும் அறிவிப்பைப் பெறு + unsuspend_account: கணக்கின் இடைநீக்கத்தைத் திரும்பப்பெறு + update_announcement: அறிவிப்பைப் புதுப்பி + update_custom_emoji: தனிப்பயனான எமோஜியைப் புதுப்பி + update_status: பதிவைப் புதுப்பி actions: create_announcement: "%{name} %{target} என்றொரு புதிய அறிவிப்பை உருவாக்கியிருக்கிறார்" destroy_announcement: "%{name} %{target} அறிவிப்பை நீக்கிவிட்டார்" update_announcement: "%{name} %{target} அறிவிப்பைப் புதுப்பித்துள்ளார்" + empty: குறிப்புகள் எவையும் காணப்படவில்லை. + filter_by_action: செயலின் அடிப்படையில் வடிகட்டு + filter_by_user: பயனரின் அடிப்படையில் வடிகட்டு announcements: destroyed_msg: அறிவிப்பு வெற்றிகரமாக நீக்கப்பட்டது! edit: diff --git a/config/locales/th.yml b/config/locales/th.yml index 10f25549b..8215f2259 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -77,6 +77,7 @@ th: delete: ลบ destroyed_msg: ทำลายหมายเหตุการควบคุมสำเร็จ! accounts: + add_email_domain_block: ขึ้นบัญชีดำโดเมนอีเมล approve: อนุมัติ approve_all: อนุมัติทั้งหมด are_you_sure: คุณแน่ใจหรือไม่? @@ -154,6 +155,7 @@ th: staff: พนักงาน user: ผู้ใช้ search: ค้นหา + search_same_email_domain: ผู้ใช้อื่น ๆ ที่มีโดเมนอีเมลเดียวกัน search_same_ip: ผู้ใช้อื่น ๆ ที่มี IP เดียวกัน shared_inbox_url: URL กล่องขาเข้าที่แบ่งปัน show: @@ -288,6 +290,7 @@ th: overwrite: เขียนทับ shortcode: รหัสย่อ title: อีโมจิที่กำหนดเอง + uncategorized: ไม่มีหมวดหมู่ unlist: เลิกแสดงรายการ unlisted: ไม่อยู่ในรายการ update_failed_msg: ไม่สามารถอัปเดตอีโมจินั้น @@ -305,6 +308,7 @@ th: feature_spam_check: การป้องกันสแปม feature_timeline_preview: ตัวอย่างเส้นเวลา features: คุณลักษณะ + hidden_service: การติดต่อกับภายนอกกับบริการที่ซ่อนอยู่ open_reports: รายงานที่เปิด pending_tags: แฮชแท็กที่กำลังรอการตรวจทาน pending_users: ผู้ใช้ที่กำลังรอการตรวจทาน @@ -462,6 +466,7 @@ th: mascot: title: ภาพมาสคอต peers_api_enabled: + desc_html: ชื่อโดเมนที่เซิร์ฟเวอร์นี้ได้พบในเฟดิเวิร์ส title: เผยแพร่รายการเซิร์ฟเวอร์ที่ค้นพบ profile_directory: desc_html: อนุญาตให้ผู้ใช้สามารถค้นพบได้ @@ -503,6 +508,9 @@ th: title: การตั้งค่าไซต์ trends: title: แฮชแท็กที่กำลังนิยม + site_uploads: + delete: ลบไฟล์ที่อัปโหลด + destroyed_msg: ลบการอัปโหลดไซต์สำเร็จ! statuses: back_to_account: กลับไปที่หน้าบัญชี batch: @@ -528,6 +536,7 @@ th: trending_right_now: กำลังนิยม unique_uses_today: "%{count} การโพสต์วันนี้" unreviewed: ยังไม่ได้ตรวจทาน + updated_msg: อัปเดตการตั้งค่าแฮชแท็กสำเร็จ title: การดูแล warning_presets: add_new: เพิ่มใหม่ @@ -541,6 +550,7 @@ th: subject: รายงานใหม่สำหรับ %{instance} (#%{id}) aliases: add_new: สร้างนามแฝง + empty: คุณไม่มีนามแฝง remove: เลิกเชื่อมโยงนามแฝง appearance: advanced_web_interface: ส่วนติดต่อเว็บขั้นสูง @@ -597,6 +607,7 @@ th: follow_request: 'คุณได้ส่งคำขอติดตามไปยัง:' following: 'สำเร็จ! คุณกำลังติดตาม:' post_follow: + close: หรือคุณสามารถปิดหน้าต่างนี้ return: แสดงโปรไฟล์ของผู้ใช้ web: ไปยังเว็บ title: ติดตาม %{acct} @@ -623,6 +634,7 @@ th: x_seconds: "%{count} วินาที" deletes: challenge_not_passed: ข้อมูลที่คุณป้อนไม่ถูกต้อง + confirm_password: ป้อนรหัสผ่านปัจจุบันของคุณเพื่อยืนยันตัวตนของคุณ confirm_username: ป้อนชื่อผู้ใช้ของคุณเพื่อยืนยันกระบวนงาน proceed: ลบบัญชี success_msg: ลบบัญชีของคุณสำเร็จ @@ -631,6 +643,8 @@ th: email_change_html: คุณสามารถ เปลี่ยนที่อยู่อีเมลของคุณ โดยไม่ต้องลบบัญชีของคุณ email_reconfirmation_html: หากคุณไม่ได้รับอีเมลยืนยัน คุณสามารถ ขออีเมลอีกครั้ง more_details_html: สำหรับรายละเอียดเพิ่มเติม ดู นโยบายความเป็นส่วนตัว + username_available: ชื่อผู้ใช้ของคุณจะพร้อมใช้งานอีกครั้ง + username_unavailable: ชื่อผู้ใช้ของคุณจะยังคงไม่พร้อมใช้งาน directories: directory: ไดเรกทอรีโปรไฟล์ explanation: ค้นพบผู้ใช้ตามความสนใจของเขา @@ -642,15 +656,16 @@ th: '403': คุณไม่มีสิทธิอนุญาตเพื่อดูหน้านี้ '404': หน้าที่คุณกำลังมองหาไม่ได้อยู่ที่นี่ '406': This page is not available in the requested format. - '410': หน้าที่คุณกำลังมองหาไม่มีอยู่ที่นี่อีกต่อไป + '410': ไม่มีหน้าที่คุณกำลังมองหาอยู่ที่นี่อีกต่อไป '422': content: การตรวจสอบความปลอดภัยล้มเหลว คุณกำลังปิดกั้นคุกกี้หรือไม่? title: การตรวจสอบความปลอดภัยล้มเหลว - '429': Too many requests + '429': คำขอมากเกินไป '500': title: หน้านี้ไม่ถูกต้อง '503': The page could not be served due to a temporary server failure. existing_username_validator: + not_found: ไม่พบผู้ใช้ในเซิร์ฟเวอร์ที่มีชื่อผู้ใช้นั้น not_found_multiple: ไม่พบ %{usernames} exports: archive_takeout: @@ -698,13 +713,18 @@ th: identity_proofs: active: ใช้งานอยู่ authorize: ใช่ อนุญาต + identity: ตัวตน inactive: ไม่ได้ใช้งาน publicize_checkbox: 'และโพสต์สิ่งนี้:' + remove: เอาการพิสูจน์ออกจากบัญชี + removed: เอาการพิสูจน์ออกจากบัญชีสำเร็จ status: สถานะการตรวจสอบ imports: modes: merge: ผสาน + merge_long: เก็บระเบียนที่มีอยู่และเพิ่มระเบียนใหม่ overwrite: เขียนทับ + overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่ types: blocking: รายการปิดกั้น domain_blocking: รายการปิดกั้นโดเมน @@ -738,6 +758,7 @@ th: migrations: acct: ย้ายไปยัง cancel: ยกเลิกการเปลี่ยนเส้นทาง + cancelled_msg: ยกเลิกการเปลี่ยนเส้นทางสำเร็จ errors: move_to_self: ไม่สามารถเป็นบัญชีปัจจุบัน not_found: ไม่พบ @@ -751,6 +772,10 @@ th: digest: action: ดูการแจ้งเตือนทั้งหมด mention: "%{name} ได้กล่าวถึงคุณใน:" + new_followers_summary: + other: นอกจากนี้คุณยังได้รับ %{count} ผู้ติดตามใหม่ขณะที่ไม่อยู่! มหัศจรรย์! + subject: + other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ \U0001F418" title: เมื่อคุณไม่อยู่... favourite: body: 'สถานะของคุณได้รับการชื่นชอบโดย %{name}:' @@ -776,6 +801,7 @@ th: title: การดันใหม่ notifications: email_events: เหตุการณ์สำหรับการแจ้งเตือนอีเมล + email_events_hint: 'เลือกเหตุการณ์ที่คุณต้องการรับการแจ้งเตือน:' other_settings: การตั้งค่าการแจ้งเตือนอื่น ๆ pagination: newer: ใหม่กว่า @@ -787,6 +813,7 @@ th: errors: already_voted: คุณได้ลงคะแนนในการสำรวจความคิดเห็นนี้อยู่แล้ว duplicate_options: มีรายการที่ซ้ำกัน + invalid_choice: ไม่มีตัวเลือกการลงคะแนนที่เลือกอยู่ too_few_options: ต้องมีมากกว่าหนึ่งรายการ too_many_options: ไม่สามารถมีมากกว่า %{max} รายการ preferences: @@ -798,6 +825,7 @@ th: unrecognized_emoji: ไม่ใช่อีโมจิที่รู้จัก relationships: activity: กิจกรรมบัญชี + dormant: ไม่เคลื่อนไหว followers: ผู้ติดตาม following: กำลังติดตาม invited: เชิญแล้ว @@ -870,6 +898,7 @@ th: settings: account: บัญชี account_settings: การตั้งค่าบัญชี + aliases: นามแฝงบัญชี appearance: ลักษณะที่ปรากฏ authorized_apps: แอปที่ได้รับอนุญาต back: กลับไปที่ Mastodon @@ -878,6 +907,7 @@ th: edit_profile: แก้ไขโปรไฟล์ export: การส่งออกข้อมูล featured_tags: แฮชแท็กที่แนะนำ + identity_proofs: การพิสูจน์ตัวตน import: การนำเข้า import_and_export: การนำเข้าและการส่งออก migrate: การโยกย้ายบัญชี @@ -886,6 +916,8 @@ th: profile: โปรไฟล์ relationships: การติดตามและผู้ติดตาม two_factor_authentication: การรับรองความถูกต้องด้วยสองปัจจัย + spam_check: + spam_detected: นี่คือรายงานแบบอัตโนมัติ ตรวจพบสแปม statuses: attached: description: 'แนบอยู่: %{attached}' @@ -936,6 +968,7 @@ th: default: "%d %b %Y, %H:%M" month: "%b %Y" two_factor_authentication: + code_hint: ป้อนรหัสที่สร้างโดยแอปตัวรับรองความถูกต้องของคุณเพื่อยืนยัน disable: ปิดใช้งาน enable: เปิดใช้งาน enabled: เปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยแล้ว @@ -957,10 +990,12 @@ th: review_preferences_action: เปลี่ยนการกำหนดลักษณะ subject: ยินดีต้อนรับสู่ Mastodon tips: เคล็ดลับ + title: ยินดีต้อนรับ %{name}! users: follow_limit_reached: คุณไม่สามารถติดตามมากกว่า %{limit} คน invalid_email: ที่อยู่อีเมลไม่ถูกต้อง invalid_otp_token: รหัสสองปัจจัยไม่ถูกต้อง + seamless_external_login: คุณได้เข้าสู่ระบบผ่านบริการภายนอก ดังนั้นจึงไม่มีการตั้งค่ารหัสผ่านและอีเมล signed_in_as: 'ลงชื่อเข้าเป็น:' verification: verification: การตรวจสอบ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 1dcf9ccea..41c39ba1f 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -193,6 +193,12 @@ tr: web: Web whitelisted: Beyaz listede action_logs: + action_types: + change_email_user: Kullanıcı için e-postayı değiştir + confirm_user: Kullanıcıyı Onayla + create_announcement: Duyuru Oluştur + create_custom_emoji: Özel İfade Oluştur + destroy_status: Durumu Sil actions: assigned_to_self_report: "%{name} kendilerine %{target} adlı raporu verdi" change_email_user: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 3df83e756..6ff21b068 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -100,6 +100,7 @@ uk: delete: Видалити destroyed_msg: Нотатку модератора успішно видалено! accounts: + add_email_domain_block: Додати поштовий домен до чорного списку approve: Схвалити approve_all: Схвалити всіх are_you_sure: Ви впевнені? @@ -180,11 +181,12 @@ uk: staff: Персонал user: Користувач search: Пошук + search_same_email_domain: Інші користувачі з тим самим поштовим доменом search_same_ip: Інші користувачі з тим самим IP shared_inbox_url: URL спільного вхідного кошика show: - created_reports: Скарги, створені цим аккаунтом - targeted_reports: Скарги щодо цього аккаунту + created_reports: Скарги, створені цим акаунтом + targeted_reports: Скарги щодо цього акаунту silence: Глушення silenced: Заглушені statuses: Статуси @@ -201,6 +203,38 @@ uk: web: Веб whitelisted: У білому списку action_logs: + action_types: + change_email_user: Змінити електронну пошту для користувача + confirm_user: Підтвердити користувача + create_account_warning: Створити попередження + create_announcement: Створити оголошення + create_custom_emoji: Створити користувацьке емодзі + create_domain_allow: Створити дозвіл на домен + create_domain_block: Створити блокування домену + create_email_domain_block: Створити блокування поштового домену + demote_user: Понизити користувача + destroy_announcement: Видалити оголошення + destroy_custom_emoji: Видалити користувацьке емодзі + destroy_domain_allow: Видалити дозвіл на домен + destroy_domain_block: Видалити блокування домену + destroy_email_domain_block: Видалити блокування поштового домену + destroy_status: Видалити пост + disable_custom_emoji: Вимкнути користувацькі емодзі + disable_user: Відключити користувача + enable_custom_emoji: Увімкнути користувацькі емодзі + enable_user: Активувати користувача + promote_user: Підвищити користувача + remove_avatar_user: Видалити аватар + reopen_report: Перевідкрити скаргу + reset_password_user: Скинути пароль + resolve_report: Розв'язати скаргу + silence_account: Заглушити обліковий запис + suspend_account: Призупинити обліковий запис + unsilence_account: Розглушити обліковий запис + unsuspend_account: Розморозити обліковий запис + update_announcement: Оновити оголошення + update_custom_emoji: Оновити користувацькі емодзі + update_status: Оновити статус actions: assigned_to_self_report: "%{name} призначив(-ла) скаргу %{target} на себе" change_email_user: "%{name} змінив(-ла) поштову адресу користувача %{target}" @@ -230,14 +264,17 @@ uk: reset_password_user: "%{name} скинув(-ла) пароль користувача %{target}" resolve_report: "%{name} розв'язав(-ла) скаргу %{target}" silence_account: "%{name} заглушив(-ла) обліковий запис %{target}" - suspend_account: "%{name} заморозив обліковий запис користувача %{target}" + suspend_account: "%{name} заморозив(-ла) обліковий запис %{target}" unassigned_report: "%{name} зняв(-ла) призначення скарги %{target}" unsilence_account: "%{name} розглушив(-ла) обліковий запис %{target}" - unsuspend_account: "%{name} розморозив обліковий запис користувача %{target}" + unsuspend_account: "%{name} розморозив(-ла) обліковий запис %{target}" update_announcement: "%{name} оновив оголошення %{target}" update_custom_emoji: "%{name} оновив(-ла) емодзі %{target}" update_status: "%{name} змінив(-ла) статус користуача %{target}" deleted_status: "(видалений статус)" + empty: Не знайдено жодного журналу. + filter_by_action: Фільтрувати за дією + filter_by_user: Фільтрувати за користувачем title: Журнал подій announcements: destroyed_msg: Оголошення успішно видалено! @@ -368,6 +405,7 @@ uk: destroyed_msg: Успішно видалено поштовий домен з чорного списку domain: Домен empty: Ніякі e-mail домени не блокуються. + from_html: з %{domain} new: create: Додати домен title: Нове блокування поштового домену @@ -555,6 +593,8 @@ uk: trends: desc_html: Відображати розглянуті хештеґи, які популярні зараз title: Популярні хештеги + site_uploads: + delete: Видалити завантажений файл statuses: back_to_account: Назад до сторінки облікового запису batch: @@ -608,6 +648,7 @@ uk: add_new: Створити псевдонім created_msg: Новий псевдонім успішно створено. Тепер ви можете починати переміщення зі старого облікового запису. deleted_msg: Псевдонім успішно видалено. Переміщення з того облікового запису до цього більше не можливе. + empty: У вас немає псевдонімів. hint_html: Якщо ви збираєтеся мігрувати з іншого облікового запису на цей, ви можете налаштувати псевдонім, що потрібно для перенесення передплатників зі старою облікового запису. Ця дія саме по собі нешкідливо і оборотно. Міграція облікового запису починається з старого облікового запису. remove: Від'єднати псевдонім appearance: @@ -620,7 +661,7 @@ uk: body: Mastodon перекладено волонтерами. guide_link: https://uk.crowdin.com/project/mastodon guide_link_text: Кожен може взяти участь. - sensitive_content: Дражливий вміст + sensitive_content: Дражливий зміст toot_layout: Зовнішній вигляд дмухів application_mailer: notification_preferences: Змінити налаштування e-mail @@ -678,6 +719,7 @@ uk: trouble_logging_in: Проблема під час входу? authorize_follow: already_following: Ви вже слідкуєте за цим обліковим записом + already_requested: Ви вже надіслали запит на підписку до цього облікового запису error: На жаль, під час пошуку віддаленого облікового запису сталася помилка follow: Підписатися follow_request: 'Вам надіслали запит на підписку:' @@ -823,6 +865,8 @@ uk: inactive: Неактивний publicize_checkbox: 'Та дмухнути це:' publicize_toot: 'Це доведено! Я таки %{username} з %{service}: %{url}' + remove: Видалення підтвердження з облікового запису + removed: Підтвердження видалено з облікового запису status: Стан перевірки view_proof: Переглянути доказ imports: @@ -870,6 +914,7 @@ uk: media_attachments: validations: images_and_video: Не можна додати відео до статусу з зображеннями + not_ready: Не можна прикріпити файли, оброблення яких ще не закінчилося. Спробуйте ще раз через хвилину! too_many: Не можна додати більше 4 файлів migrations: acct: username@domain нового облікового запису @@ -1101,6 +1146,8 @@ uk: many: 'заборонених хештеґів: %{tags}' one: 'заборонений хештеґ: %{tags}' other: 'заборонених хештеґів: %{tags}' + errors: + in_reply_not_found: Статуса, на який ви намагаєтеся відповісти, не існує. language_detection: Автоматично визначати мову open_in_web: Відкрити у вебі over_character_limit: перевищено ліміт символів (%{max}) @@ -1121,7 +1168,7 @@ uk: one: "%{count} голос" other: "%{count} голоси" vote: Проголосувати - show_more: Детальніше + show_more: Розгорнути show_thread: Відкрити обговорення sign_in_to_participate: Увійдіть, щоб брати участь у бесіді title: '%{name}: "%{quote}"' @@ -1135,7 +1182,7 @@ uk: stream_entries: pinned: Закріплений пост reblogged: передмухнув(-ла) - sensitive_content: Дражливий контент + sensitive_content: Дражливий зміст tags: does_not_match_previous_name: не збігається з попереднім ім'ям terms: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 33f25eaa6..be116f6e7 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -138,7 +138,7 @@ zh-CN: silenced: 已隐藏 suspended: 已封禁 title: 帐户状态 - moderation_notes: 管理备忘 + moderation_notes: 管理员备注 most_recent_activity: 最后一次活跃的时间 most_recent_ip: 最后一次活跃的 IP 地址 no_account_selected: 因为没有帐号被选择,所以没有更改 @@ -166,7 +166,7 @@ zh-CN: roles: admin: 管理员 moderator: 监察员 - staff: 管理人员 + staff: 站务人员 user: 普通用户 search: 搜索 search_same_email_domain: 其他具有相同电子邮箱域名的用户 @@ -191,6 +191,42 @@ zh-CN: web: 站内页面 whitelisted: 已加入白名单 action_logs: + action_types: + assigned_to_self_report: 指派举报 + change_email_user: 为用户修改邮箱地址 + confirm_user: 确认用户 + create_account_warning: 创建警告 + create_announcement: 创建公告 + create_custom_emoji: 创建自定义表情符号 + create_domain_allow: 允许新域名 + create_domain_block: 封禁新域名 + create_email_domain_block: 封禁电子邮箱域名 + demote_user: 给用户降职 + destroy_announcement: 删除公告 + destroy_custom_emoji: 删除自定义表情符号 + destroy_domain_allow: 解除域名允许 + destroy_domain_block: 解除域名封禁 + destroy_email_domain_block: 解除电子邮箱域名封禁 + destroy_status: 删除嘟文 + disable_2fa_user: 禁用双重认证 + disable_custom_emoji: 禁用自定义表情符号 + disable_user: 禁用用户 + enable_custom_emoji: 启用自定义表情符号 + enable_user: 启用用户 + memorialize_account: 将账户设为追悼模式 + promote_user: 给用户升任 + remove_avatar_user: 移除头像 + reopen_report: 重开举报 + reset_password_user: 重置密码 + resolve_report: 处理举报 + silence_account: 隐藏用户 + suspend_account: 封禁用户 + unassigned_report: 取消举报的指派 + unsilence_account: 解除账号隐藏 + unsuspend_account: 解除账号封禁 + update_announcement: 更新公告 + update_custom_emoji: 更新自定义表情符号 + update_status: 更新嘟文 actions: assigned_to_self_report: "%{name} 接管了举报 %{target}" change_email_user: "%{name} 更改了用户 %{target} 的电子邮件地址" @@ -228,6 +264,9 @@ zh-CN: update_custom_emoji: "%{name} 更新了自定义表情 %{target}" update_status: "%{name} 刷新了 %{target} 的嘟文" deleted_status: "(嘟文已删除)" + empty: 没有找到日志 + filter_by_action: 根据行为过滤 + filter_by_user: 根据用户过滤 title: 运营日志 announcements: destroyed_msg: 公告已删除! @@ -284,7 +323,7 @@ zh-CN: feature_invites: 邀请链接 feature_profile_directory: 用户目录 feature_registrations: 公开注册 - feature_relay: 中继服务器 + feature_relay: 联邦中继站 feature_spam_check: 反垃圾 feature_timeline_preview: 时间轴预览 features: 功能 @@ -362,7 +401,7 @@ zh-CN: title: 电子邮件域名屏蔽 instances: by_domain: 域名 - delivery_available: 无法投递 + delivery_available: 可投递 known_accounts: other: "%{count} 个已知帐户" moderation: @@ -390,21 +429,21 @@ zh-CN: relationships: title: "%{acct} 的关系" relays: - add_new: 订阅新的中继 + add_new: 订阅新的中继站 delete: 删除 description_html: "中继服务器是一个信息统合服务器,各服务器可以通过订阅中继服务器和向中继服务器推送信息来交换大量公开嘟文。它可以帮助中小型服务器发现联邦宇宙中的其他服务器的内容,而无需本站用户手动关注其他远程服务器上的用户。" disable: 禁用 disabled: 已禁用 enable: 启用 - enable_hint: 启用此功能后,你的实例会订阅此中继的所有公开嘟文,并同时向其推送本服务器的公开嘟文。 + enable_hint: 启用此功能后,你的实例会订阅此中继站的所有公开嘟文,并同时向其推送本服务器的公开嘟文。 enabled: 已启用 - inbox_url: 中继 URL - pending: 等待中继确认 + inbox_url: 中继站 URL + pending: 等待中继站的确认 save_and_enable: 保存并启用 setup: 设置中继连接 signatures_not_enabled: 安全模式或白名单模式启用时,中继将不会正常工作 status: 状态 - title: 中继 + title: 中继站 report_notes: created_msg: 举报记录建立成功! destroyed_msg: 举报记录删除成功! @@ -588,6 +627,7 @@ zh-CN: add_new: 创建别名 created_msg: 成功创建了一个新别名。您现在可以从旧账户开始迁移了。 deleted_msg: 成功移除别名。已经无法从该帐户移动到此帐户了。 + empty: 你没有设置别名 hint_html: 如果你想把另一个帐号迁移到这里,你可以先在这里创建一个别名。如果你想把关注者迁移过来,这一步是必须的。设置别名的操作时无害而且可以恢复的帐号迁移的操作会从旧帐号开始。 remove: 取消关联别名 appearance: @@ -801,6 +841,8 @@ zh-CN: inactive: 失效 publicize_checkbox: 并发一条这样的嘟文: publicize_toot: '证明完毕!我是 %{service} 上的 %{username}: %{url}' + remove: 从帐户中移除凭据 + removed: 成功从帐户中删除凭据 status: 验证状态 view_proof: 查看证明 imports: From cbfb2c0e71fd281e3e8f362d9016944884abc39e Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 14 May 2020 14:45:52 +0900 Subject: [PATCH 371/377] Fix tootctl media refresh (#13751) --- lib/mastodon/media_cli.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 506544446..2b1653335 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -198,7 +198,7 @@ module Mastodon if options[:status] scope = MediaAttachment.where(status_id: options[:status]) elsif options[:account] - username, domain = username.split('@') + username, domain = options[:account].split('@') account = Account.find_remote(username, domain) if account.nil? @@ -217,7 +217,7 @@ module Mastodon next if media_attachment.remote_url.blank? || (!options[:force] && media_attachment.file_file_name.present?) unless options[:dry_run] - media_attachment.reset_file! + media_attachment.file_remote_url = media_attachment.remote_url media_attachment.save end From 06225dee946bdefa5a4e751311c140bdea8a99b2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 14 May 2020 07:46:11 +0200 Subject: [PATCH 372/377] Bump version to 3.1.4 (#13750) --- CHANGELOG.md | 67 +++++++++++++++++++++++++++++++++++++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad353e2ad..7d0110936 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,73 @@ Changelog All notable changes to this project will be documented in this file. +## [v3.1.4] - 2020-05-14 +### Added + +- Add `vi` to available locales ([taicv](https://github.com/tootsuite/mastodon/pull/13542)) +- Add ability to remove identity proofs from account ([Gargron](https://github.com/tootsuite/mastodon/pull/13682)) +- Add ability to exclude local content from federated timeline ([noellabo](https://github.com/tootsuite/mastodon/pull/13504), [noellabo](https://github.com/tootsuite/mastodon/pull/13745)) + - Add `remote` param to `GET /api/v1/timelines/public` REST API + - Add `public/remote` / `public:remote` variants to streaming API + - "Remote only" option in federated timeline column settings in web UI +- Add ability to exclude remote content from hashtag timelines in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/13502)) + - No changes to REST API + - "Local only" option in hashtag column settings in web UI +- Add Capistrano tasks that reload the services after deploying ([berkes](https://github.com/tootsuite/mastodon/pull/12642)) +- Add `invites_enabled` attribute to `GET /api/v1/instance` in REST API ([ThibG](https://github.com/tootsuite/mastodon/pull/13501)) +- Add `tootctl emoji export` command ([lfuelling](https://github.com/tootsuite/mastodon/pull/13534)) +- Add separate cache directory for non-local uploads ([Gargron](https://github.com/tootsuite/mastodon/pull/12821), [Hanage999](https://github.com/tootsuite/mastodon/pull/13593), [mayaeh](https://github.com/tootsuite/mastodon/pull/13551)) + - Add `tootctl upgrade storage-schema` command to move old non-local uploads to the cache directory +- Add buttons to delete header and avatar from profile settings ([sternenseemann](https://github.com/tootsuite/mastodon/pull/13234)) +- Add emoji graphics and shortcodes from Twemoji 12.1.5 ([DeeUnderscore](https://github.com/tootsuite/mastodon/pull/13021)) + +### Changed + +- Change error message when trying to migrate to an account that does not have current account set as an alias to be more clear ([TheEvilSkeleton](https://github.com/tootsuite/mastodon/pull/13746)) +- Change delivery failure tracking to work with hostnames instead of URLs ([Gargron](https://github.com/tootsuite/mastodon/pull/13437), [noellabo](https://github.com/tootsuite/mastodon/pull/13481), [noellabo](https://github.com/tootsuite/mastodon/pull/13482), [noellabo](https://github.com/tootsuite/mastodon/pull/13535)) +- Change Content-Security-Policy to not need unsafe-inline style-src ([ThibG](https://github.com/tootsuite/mastodon/pull/13679), [ThibG](https://github.com/tootsuite/mastodon/pull/13692), [ThibG](https://github.com/tootsuite/mastodon/pull/13576), [ThibG](https://github.com/tootsuite/mastodon/pull/13575), [ThibG](https://github.com/tootsuite/mastodon/pull/13438)) +- Change how RSS items are titled and formatted ([ThibG](https://github.com/tootsuite/mastodon/pull/13592), [ykzts](https://github.com/tootsuite/mastodon/pull/13591)) + +### Fixed + +- Fix dropdown of muted and followed accounts offering option to hide boosts in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13748)) +- Fix "You are already signed in" alert being shown at wrong times ([ThibG](https://github.com/tootsuite/mastodon/pull/13547)) +- Fix retrying of failed-to-download media files not actually working ([noellabo](https://github.com/tootsuite/mastodon/pull/13741)) +- Fix first poll option not being focused when adding a poll in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13740)) +- Fix `sr` locale being selected over `sr-Latn` ([ThibG](https://github.com/tootsuite/mastodon/pull/13693)) +- Fix error within error when limiting backtrace to 3 lines ([Gargron](https://github.com/tootsuite/mastodon/pull/13120)) +- Fix `tootctl media remove-orphans` crashing on "Import" files ([ThibG](https://github.com/tootsuite/mastodon/pull/13685)) +- Fix regression in `tootctl media remove-orphans` ([Gargron](https://github.com/tootsuite/mastodon/pull/13405)) +- Fix old unique jobs digests not having been cleaned up ([Gargron](https://github.com/tootsuite/mastodon/pull/13683)) +- Fix own following/followers not showing muted users ([ThibG](https://github.com/tootsuite/mastodon/pull/13614)) +- Fix list of followed people ignoring sorting on Follows & Followers page ([taras2358](https://github.com/tootsuite/mastodon/pull/13676)) +- Fix wrong pgHero Content-Security-Policy when `CDN_HOST` is set ([ThibG](https://github.com/tootsuite/mastodon/pull/13595)) +- Fix needlessly deduplicating usernames on collisions with remote accounts when signing-up through SAML/CAS ([kaiyou](https://github.com/tootsuite/mastodon/pull/13581)) +- Fix page incorrectly scrolling when bringing up dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13574)) +- Fix messed up z-index when NoScript blocks media/previews in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13449)) +- Fix "See what's happening" page showing public instead of local timeline for logged-in users ([ThibG](https://github.com/tootsuite/mastodon/pull/13499)) +- Fix not being able to resolve public resources in development environment ([Gargron](https://github.com/tootsuite/mastodon/pull/13505)) +- Fix uninformative error message when uploading unsupported image files ([ThibG](https://github.com/tootsuite/mastodon/pull/13540)) +- Fix expanded video player issues in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13541), [eai04191](https://github.com/tootsuite/mastodon/pull/13533)) +- Fix and refactor keyboard navigation in dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13528)) +- Fix uploaded image orientation being messed up in some browsers in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13493)) +- Fix actions log crash when displaying updates of deleted announcements in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13489)) +- Fix search not working due to proxy settings when using hidden services ([Gargron](https://github.com/tootsuite/mastodon/pull/13488)) +- Fix poll refresh button not being debounced in web UI ([rasjonell](https://github.com/tootsuite/mastodon/pull/13485), [ThibG](https://github.com/tootsuite/mastodon/pull/13490)) +- Fix confusing error when failing to add an alias to an unknown account ([ThibG](https://github.com/tootsuite/mastodon/pull/13480)) +- Fix "Email changed" notification sometimes having wrong e-mail ([ThibG](https://github.com/tootsuite/mastodon/pull/13475)) +- Fix varioues issues on the account aliases page ([ThibG](https://github.com/tootsuite/mastodon/pull/13452)) +- Fix API footer link in web UI ([bubblineyuri](https://github.com/tootsuite/mastodon/pull/13441)) +- Fix pagination of following, followers, follow requests, blocks and mutes lists in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13445)) +- Fix styling of polls in JS-less fallback on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/13436)) +- Fix trying to delete already deleted file when post-processing ([Gargron](https://github.com/tootsuite/mastodon/pull/13406)) + +### Security + +- Fix Doorkeeper vulnerability that exposed app secret to users who authorized the app and reset secret of the web UI that could have been exposed ([dependabot-preview[bot]](https://github.com/tootsuite/mastodon/pull/13613), [Gargron](https://github.com/tootsuite/mastodon/pull/13688)) + - For apps that self-register on behalf of every individual user (such as most mobile apps), this is a non-issue + - The issue only affects developers of apps who are shared between multiple users, such as server-side apps like cross-posters + ## [v3.1.3] - 2020-04-05 ### Added diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 00ac7753f..f73b8805a 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 3 + 4 end def flags From c9dcc2d39fb5bd945ecd999e50c08a86cce1aa3e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 14 May 2020 09:01:23 +0200 Subject: [PATCH 373/377] Fix regression in sparkline style in web UI (#13753) --- 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 3a67bde8f..2bd8ee456 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -6576,6 +6576,7 @@ noscript { path:last-child { stroke: lighten($highlight-text-color, 6%) !important; + fill: none !important; } } } From fa3f78e4bf1b5e2b6e8b11f161dd3c02348bf3d4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 23 Jun 2020 02:57:00 +0200 Subject: [PATCH 374/377] Fix other sessions not being logged out on password change While OAuth tokens were immediately revoked, accessing the home controller immediately generated new OAuth tokens and "revived" the session due to a combination of using remember_me tokens and overwriting the `authenticate_user!` method --- app/controllers/auth/passwords_controller.rb | 5 ++++- app/controllers/auth/registrations_controller.rb | 8 +++++++- app/controllers/home_controller.rb | 4 +++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/controllers/auth/passwords_controller.rb b/app/controllers/auth/passwords_controller.rb index b98bcecd0..5db2668f7 100644 --- a/app/controllers/auth/passwords_controller.rb +++ b/app/controllers/auth/passwords_controller.rb @@ -8,7 +8,10 @@ class Auth::PasswordsController < Devise::PasswordsController def update super do |resource| - resource.session_activations.destroy_all if resource.errors.empty? + if resource.errors.empty? + resource.session_activations.destroy_all + resource.forget_me! + end end end diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 78feb1631..d31966248 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class Auth::RegistrationsController < Devise::RegistrationsController + include Devise::Controllers::Rememberable + layout :determine_layout before_action :set_invite, only: [:new, :create] @@ -24,7 +26,11 @@ class Auth::RegistrationsController < Devise::RegistrationsController def update super do |resource| - resource.clear_other_sessions(current_session.session_id) if resource.saved_change_to_encrypted_password? + if resource.saved_change_to_encrypted_password? + resource.clear_other_sessions(current_session.session_id) + resource.forget_me! + remember_me(resource) + end end end diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 7c8a18d17..702889cd0 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class HomeController < ApplicationController + before_action :redirect_unauthenticated_to_permalinks! before_action :authenticate_user! before_action :set_referrer_policy_header @@ -10,7 +11,7 @@ class HomeController < ApplicationController private - def authenticate_user! + def redirect_unauthenticated_to_permalinks! return if user_signed_in? matches = request.path.match(/\A\/web\/(statuses|accounts)\/([\d]+)\z/) @@ -35,6 +36,7 @@ class HomeController < ApplicationController end matches = request.path.match(%r{\A/web/timelines/tag/(?.+)\z}) + redirect_to(matches ? tag_path(CGI.unescape(matches[:tag])) : default_redirect_path) end From 951e997b26cb5bf93539a22221efda97ad70079e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Jun 2020 00:21:03 +0200 Subject: [PATCH 375/377] Change rate limits for various paths - Rate limit login attempts by target account - Rate limit password resets and e-mail re-confirmations by target account - Rate limit sign-up/login attempts, password resets, and e-mail re-confirmations by IP like before --- config/initializers/rack_attack.rb | 37 +++++++++++++++------- config/initializers/rack_attack_logging.rb | 1 + 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index 09458c540..cd29afac5 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -38,15 +38,6 @@ class Rack::Attack end end - PROTECTED_PATHS = %w( - /auth/sign_in - /auth - /auth/password - /auth/confirmation - ).freeze - - PROTECTED_PATHS_REGEX = Regexp.union(PROTECTED_PATHS.map { |path| /\A#{Regexp.escape(path)}/ }) - Rack::Attack.safelist('allow from localhost') do |req| req.remote_ip == '127.0.0.1' || req.remote_ip == '::1' end @@ -86,8 +77,32 @@ class Rack::Attack req.authenticated_user_id if (req.post? && req.path =~ API_DELETE_REBLOG_REGEX) || (req.delete? && req.path =~ API_DELETE_STATUS_REGEX) end - throttle('protected_paths', limit: 25, period: 5.minutes) do |req| - req.remote_ip if req.post? && req.path =~ PROTECTED_PATHS_REGEX + throttle('throttle_sign_up_attempts/ip', limit: 25, period: 5.minutes) do |req| + req.remote_ip if req.post? && req.path == '/auth' + end + + throttle('throttle_password_resets/ip', limit: 25, period: 5.minutes) do |req| + req.remote_ip if req.post? && req.path == '/auth/password' + end + + throttle('throttle_password_resets/email', limit: 5, period: 30.minutes) do |req| + req.params.dig('user', 'email').presence if req.post? && req.path == '/auth/password' + end + + throttle('throttle_email_confirmations/ip', limit: 25, period: 5.minutes) do |req| + req.remote_ip if req.post? && req.path == '/auth/confirmation' + end + + throttle('throttle_email_confirmations/email', limit: 5, period: 30.minutes) do |req| + req.params.dig('user', 'email').presence if req.post? && req.path == '/auth/password' + end + + throttle('throttle_login_attempts/ip', limit: 25, period: 5.minutes) do |req| + req.remote_ip if req.post? && req.path == '/auth/sign_in' + end + + throttle('throttle_login_attempts/email', limit: 25, period: 1.hour) do |req| + req.session[:attempt_user_id] || req.params.dig('user', 'email').presence if req.post? && req.path == '/auth/sign_in' end self.throttled_response = lambda do |env| diff --git a/config/initializers/rack_attack_logging.rb b/config/initializers/rack_attack_logging.rb index c30bd8a64..ab4822e96 100644 --- a/config/initializers/rack_attack_logging.rb +++ b/config/initializers/rack_attack_logging.rb @@ -2,5 +2,6 @@ ActiveSupport::Notifications.subscribe(/rack_attack/) do |_name, _start, _finish req = payload[:request] next unless [:throttle, :blacklist].include? req.env['rack.attack.match_type'] + Rails.logger.info("Rate limit hit (#{req.env['rack.attack.match_type']}): #{req.ip} #{req.request_method} #{req.fullpath}") end From 2d2e3651eee12364b53f658077dae9343aca5e09 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Mon, 22 Jun 2020 21:09:18 +0200 Subject: [PATCH 376/377] Fix media attachment enumeration Signed-off-by: Eugen Rochko --- app/controllers/media_proxy_controller.rb | 5 ++- spec/controllers/media_controller_spec.rb | 3 +- .../media_proxy_controller_spec.rb | 42 +++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 spec/controllers/media_proxy_controller_spec.rb diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb index 014b89de1..e36673fc4 100644 --- a/app/controllers/media_proxy_controller.rb +++ b/app/controllers/media_proxy_controller.rb @@ -2,6 +2,7 @@ class MediaProxyController < ApplicationController include RoutingHelper + include Authorization skip_before_action :store_current_location skip_before_action :require_functional! @@ -10,12 +11,14 @@ class MediaProxyController < ApplicationController rescue_from ActiveRecord::RecordInvalid, with: :not_found rescue_from Mastodon::UnexpectedResponseError, with: :not_found + rescue_from Mastodon::NotPermittedError, with: :not_found rescue_from HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError, with: :internal_server_error def show RedisLock.acquire(lock_options) do |lock| if lock.acquired? - @media_attachment = MediaAttachment.remote.find(params[:id]) + @media_attachment = MediaAttachment.remote.attached.find(params[:id]) + authorize @media_attachment.status, :show? redownload! if @media_attachment.needs_redownload? && !reject_media? else raise Mastodon::RaceConditionError diff --git a/spec/controllers/media_controller_spec.rb b/spec/controllers/media_controller_spec.rb index ac44a76f2..2925aed59 100644 --- a/spec/controllers/media_controller_spec.rb +++ b/spec/controllers/media_controller_spec.rb @@ -28,9 +28,8 @@ describe MediaController do end it 'raises when not permitted to view' do - status = Fabricate(:status) + status = Fabricate(:status, visibility: :direct) media_attachment = Fabricate(:media_attachment, status: status) - allow_any_instance_of(MediaController).to receive(:authorize).and_raise(ActiveRecord::RecordNotFound) get :show, params: { id: media_attachment.to_param } expect(response).to have_http_status(404) diff --git a/spec/controllers/media_proxy_controller_spec.rb b/spec/controllers/media_proxy_controller_spec.rb new file mode 100644 index 000000000..32510cf43 --- /dev/null +++ b/spec/controllers/media_proxy_controller_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe MediaProxyController do + render_views + + before do + stub_request(:get, 'http://example.com/attachment.png').to_return(request_fixture('avatar.txt')) + end + + describe '#show' do + it 'redirects when attached to a status' do + status = Fabricate(:status) + media_attachment = Fabricate(:media_attachment, status: status, remote_url: 'http://example.com/attachment.png') + get :show, params: { id: media_attachment.id } + + expect(response).to have_http_status(302) + end + + it 'responds with missing when there is not an attached status' do + media_attachment = Fabricate(:media_attachment, status: nil, remote_url: 'http://example.com/attachment.png') + get :show, params: { id: media_attachment.id } + + expect(response).to have_http_status(404) + end + + it 'raises when id cant be found' do + get :show, params: { id: 'missing' } + + expect(response).to have_http_status(404) + end + + it 'raises when not permitted to view' do + status = Fabricate(:status, visibility: :direct) + media_attachment = Fabricate(:media_attachment, status: status, remote_url: 'http://example.com/attachment.png') + get :show, params: { id: media_attachment.id } + + expect(response).to have_http_status(404) + end + end +end From 661f3f26b041dd6f1f0ea646e55616f7139bb957 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 7 Jul 2020 15:22:47 +0200 Subject: [PATCH 377/377] Bump version to 3.1.5 --- CHANGELOG.md | 7 +++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d0110936..6296f0016 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ Changelog All notable changes to this project will be documented in this file. +## [v3.1.5] - 2020-07-07 +### Security + +- Fix media attachment enumeration ([ThibG](https://github.com/tootsuite/mastodon/pull/14254)) +- Change rate limits for various paths ([Gargron](https://github.com/tootsuite/mastodon/pull/14253)) +- Fix other sessions not being logged out on password change ([Gargron](https://github.com/tootsuite/mastodon/pull/14252)) + ## [v3.1.4] - 2020-05-14 ### Added diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index f73b8805a..49523520d 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 4 + 5 end def flags