diff --git a/.eslintrc.js b/.eslintrc.js index 7dda01108..2a882f59c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -79,6 +79,11 @@ module.exports = { 'no-irregular-whitespace': 'error', 'no-mixed-spaces-and-tabs': 'warn', 'no-nested-ternary': 'warn', + 'no-restricted-properties': [ + 'error', + { property: 'substring', message: 'Use .slice instead of .substring.' }, + { property: 'substr', message: 'Use .slice instead of .substr.' }, + ], 'no-trailing-spaces': 'warn', 'no-undef': 'error', 'no-unreachable': 'error', diff --git a/CHANGELOG.md b/CHANGELOG.md index dd0ccc5f7..841c01bfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,101 @@ Changelog All notable changes to this project will be documented in this file. +## [3.5.2] - 2022-05-04 +### Added + +- Add warning on direct messages screen in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18289)) + - We already had a warning when composing a direct message, it has now been reworded to be more clear + - Same warning is now displayed when viewing sent and received direct messages +- Add ability to set approval-based registration through tootctl ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18248)) +- Add pre-filling of domain from search filter in domain allow/block admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18172)) + +## Changed + +- Change name of “Direct” visibility to “Mentioned people only” in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18146), [Gargron](https://github.com/mastodon/mastodon/pull/18289), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18291)) +- Change trending posts to only show one post from each account ([Gargron](https://github.com/mastodon/mastodon/pull/18181)) +- Change half-life of trending posts from 6 hours to 2 hours ([Gargron](https://github.com/mastodon/mastodon/pull/18182)) +- Change full-text search feature to also include polls you have voted in ([tribela](https://github.com/mastodon/mastodon/pull/18070)) +- Change Redis from using one connection per process, to using a connection pool ([Gargron](https://github.com/mastodon/mastodon/pull/18135), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18160), [Gargron](https://github.com/mastodon/mastodon/pull/18171)) + - Different threads no longer have to wait on a mutex over a single connection + - However, this does increase the number of Redis connections by a fair amount + - We are planning to optimize Redis use so that the pool can be made smaller in the future + +## Removed + +- Remove IP matching from e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/18190)) + - The IPs of the blocked e-mail domain or its MX records are no longer checked + - Previously it was too easy to block e-mail providers by mistake + +## Fixed + +- Fix compatibility with Friendica's pinned posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18254), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18260)) +- Fix error when looking up handle with surrounding spaces in REST API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18225)) +- Fix double render error when authorizing interaction ([Gargron](https://github.com/mastodon/mastodon/pull/18203)) +- Fix error when a post references an invalid media attachment ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18211)) +- Fix error when trying to revoke OAuth token without supplying a token ([Gargron](https://github.com/mastodon/mastodon/pull/18205)) +- Fix error caused by missing subject in Webfinger response ([Gargron](https://github.com/mastodon/mastodon/pull/18204)) +- Fix error on attempting to delete an account moderation note ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18196)) +- Fix light-mode emoji borders in web UI ([Gaelan](https://github.com/mastodon/mastodon/pull/18131)) +- Fix being able to scroll away from the loading bar in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18170)) +- Fix error when a bookmark or favorite has been reported and deleted ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18174)) +- Fix being offered empty “Server rules violation” report option in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18165)) +- Fix temporary network errors preventing from authorizing interactions with remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18161)) +- Fix incorrect link in "new trending tags" email ([cdzombak](https://github.com/mastodon/mastodon/pull/18156)) +- Fix missing indexes on some foreign keys ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18157)) +- Fix n+1 query on feed merge and populate operations ([Gargron](https://github.com/mastodon/mastodon/pull/18111)) +- Fix feed unmerge worker being exceptionally slow in some conditions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18110)) +- Fix PeerTube videos appearing with an erroneous “Edited at” marker ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18100)) +- Fix instance actor being created incorrectly when running through migrations ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18109)) +- Fix web push notifications containing HTML entities ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18071)) +- Fix inconsistent parsing of `TRUSTED_PROXY_IP` ([ykzts](https://github.com/mastodon/mastodon/pull/18051)) +- Fix error when fetching pinned posts ([tribela](https://github.com/mastodon/mastodon/pull/18030)) +- Fix wrong optimization in feed populate operation ([dogelover911](https://github.com/mastodon/mastodon/pull/18009)) +- Fix error in alias settings page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18004)) + +## [3.5.1] - 2022-04-08 +### Added + +- Add pagination for trending statuses in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17976)) + +### Changed + +- Change e-mail notifications to only be sent when recipient is offline ([Gargron](https://github.com/mastodon/mastodon/pull/17984)) + - Send e-mails for mentions and follows by default again + - But only when recipient does not have push notifications through an app +- Change `website` attribute to be nullable on `Application` entity in REST API ([rinsuki](https://github.com/mastodon/mastodon/pull/17962)) + +### Removed + +- Remove sign-in token authentication, instead send e-mail about new sign-in ([Gargron](https://github.com/mastodon/mastodon/pull/17970)) + - You no longer need to enter a security code sent through e-mail + - Instead you get an e-mail about a new sign-in from an unfamiliar IP address + +### Fixed + +- Fix error resposes for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963)) +- Fix dangling language-specific trends ([Gargron](https://github.com/mastodon/mastodon/pull/17997)) +- Fix extremely rare race condition when deleting a status or account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17994)) +- Fix trends returning less results per page when filtered in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17996)) +- Fix pagination header on empty trends responses in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17986)) +- Fix cookies secure flag being set when served over Tor ([Gargron](https://github.com/mastodon/mastodon/pull/17992)) +- Fix migration error handling ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17991)) +- Fix error when re-running some migrations if they get interrupted at the wrong moment ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17989)) +- Fix potentially missing statuses when reconnecting to streaming API in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17981), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17987), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17980)) +- Fix error when sending warning emails with custom text ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17983)) +- Fix unset `SMTP_RETURN_PATH` environment variable causing e-mail not to send ([Gargron](https://github.com/mastodon/mastodon/pull/17982)) +- Fix possible duplicate statuses in timelines in some edge cases in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17971)) +- Fix spurious edits and require incoming edits to be explicitly marked as such ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17918)) +- Fix error when encountering invalid pinned statuses ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17964)) +- Fix inconsistency in error handling when removing a status ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17974)) +- Fix admin API unconditionally requiring CSRF token ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17975)) +- Fix trending tags endpoint missing `offset` param in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17973)) +- Fix unusual number formatting in some locales ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17929)) +- Fix `S3_FORCE_SINGLE_REQUEST` environment variable not working ([HolgerHuo](https://github.com/mastodon/mastodon/pull/17922)) +- Fix failure to build assets with OpenSSL 3 ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17930)) +- Fix PWA manifest using outdated routes ([HolgerHuo](https://github.com/mastodon/mastodon/pull/17921)) +- Fix error when indexing statuses into Elasticsearch ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17912)) + ## [3.5.0] - 2022-03-30 ### Added diff --git a/Gemfile b/Gemfile index 4c8cd2f5a..f9ff96360 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ # frozen_string_literal: true source 'https://rubygems.org' -ruby '>= 2.5.0', '< 3.1.0' +ruby '>= 2.6.0', '< 3.1.0' gem 'pkg-config', '~> 1.4' gem 'rexml', '~> 3.2' @@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' -gem 'bootsnap', '~> 1.10.3', require: false +gem 'bootsnap', '~> 1.11.1', require: false gem 'browser' gem 'charlock_holmes', '~> 0.7.7' gem 'chewy', '~> 7.2' @@ -40,7 +40,7 @@ end gem 'net-ldap', '~> 0.17' gem 'omniauth-cas', '~> 2.0' gem 'omniauth-saml', '~> 1.10' -gem 'gitlab-omniauth-openid-connect', '~>0.5.0', require: 'omniauth_openid_connect' +gem 'gitlab-omniauth-openid-connect', '~>0.9.1', require: 'omniauth_openid_connect' gem 'omniauth', '~> 1.9' gem 'omniauth-rails_csrf_protection', '~> 0.1' @@ -79,7 +79,7 @@ gem 'ruby-progressbar', '~> 1.11' gem 'sanitize', '~> 6.0' gem 'scenic', '~> 1.6' gem 'sidekiq', '~> 6.4' -gem 'sidekiq-scheduler', '~> 3.1' +gem 'sidekiq-scheduler', '~> 3.2' gem 'sidekiq-unique-jobs', '~> 7.1' gem 'sidekiq-bulk', '~>0.2.0' gem 'simple-navigation', '~> 4.3' @@ -101,9 +101,9 @@ gem 'rdf-normalize', '~> 0.5' gem 'redcarpet', '~> 3.5' group :development, :test do - gem 'fabrication', '~> 2.27' + gem 'fabrication', '~> 2.28' gem 'fuubar', '~> 2.5' - gem 'i18n-tasks', '~> 0.9', require: false + gem 'i18n-tasks', '~> 1.0', require: false gem 'pry-byebug', '~> 3.9' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 5.1' @@ -134,7 +134,7 @@ group :development do gem 'letter_opener', '~> 1.8' gem 'letter_opener_web', '~> 2.0' gem 'memory_profiler' - gem 'rubocop', '~> 1.26', require: false + gem 'rubocop', '~> 1.28', require: false gem 'rubocop-rails', '~> 2.14', require: false gem 'brakeman', '~> 5.2', require: false gem 'bundler-audit', '~> 0.9', require: false @@ -148,7 +148,7 @@ group :development do end group :production do - gem 'lograge', '~> 0.11' + gem 'lograge', '~> 0.12' end gem 'concurrent-ruby', require: false diff --git a/Gemfile.lock b/Gemfile.lock index e784b81cf..5c0a77c56 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,40 +1,40 @@ GEM remote: https://rubygems.org/ specs: - actioncable (6.1.5) - actionpack (= 6.1.5) - activesupport (= 6.1.5) + actioncable (6.1.5.1) + actionpack (= 6.1.5.1) + activesupport (= 6.1.5.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.5) - actionpack (= 6.1.5) - activejob (= 6.1.5) - activerecord (= 6.1.5) - activestorage (= 6.1.5) - activesupport (= 6.1.5) + actionmailbox (6.1.5.1) + actionpack (= 6.1.5.1) + activejob (= 6.1.5.1) + activerecord (= 6.1.5.1) + activestorage (= 6.1.5.1) + activesupport (= 6.1.5.1) mail (>= 2.7.1) - actionmailer (6.1.5) - actionpack (= 6.1.5) - actionview (= 6.1.5) - activejob (= 6.1.5) - activesupport (= 6.1.5) + actionmailer (6.1.5.1) + actionpack (= 6.1.5.1) + actionview (= 6.1.5.1) + activejob (= 6.1.5.1) + activesupport (= 6.1.5.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.5) - actionview (= 6.1.5) - activesupport (= 6.1.5) + actionpack (6.1.5.1) + actionview (= 6.1.5.1) + activesupport (= 6.1.5.1) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.5) - actionpack (= 6.1.5) - activerecord (= 6.1.5) - activestorage (= 6.1.5) - activesupport (= 6.1.5) + actiontext (6.1.5.1) + actionpack (= 6.1.5.1) + activerecord (= 6.1.5.1) + activestorage (= 6.1.5.1) + activesupport (= 6.1.5.1) nokogiri (>= 1.8.5) - actionview (6.1.5) - activesupport (= 6.1.5) + actionview (6.1.5.1) + activesupport (= 6.1.5.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -45,22 +45,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.5) - activesupport (= 6.1.5) + activejob (6.1.5.1) + activesupport (= 6.1.5.1) globalid (>= 0.3.6) - activemodel (6.1.5) - activesupport (= 6.1.5) - activerecord (6.1.5) - activemodel (= 6.1.5) - activesupport (= 6.1.5) - activestorage (6.1.5) - actionpack (= 6.1.5) - activejob (= 6.1.5) - activerecord (= 6.1.5) - activesupport (= 6.1.5) + activemodel (6.1.5.1) + activesupport (= 6.1.5.1) + activerecord (6.1.5.1) + activemodel (= 6.1.5.1) + activesupport (= 6.1.5.1) + activestorage (6.1.5.1) + actionpack (= 6.1.5.1) + activejob (= 6.1.5.1) + activerecord (= 6.1.5.1) + activesupport (= 6.1.5.1) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.5) + activesupport (6.1.5.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -81,34 +81,42 @@ GEM attr_required (1.0.1) awrence (1.1.1) aws-eventstream (1.2.0) - aws-partitions (1.558.0) - aws-sdk-core (3.127.0) + aws-partitions (1.582.0) + aws-sdk-core (3.130.2) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.55.0) + aws-sdk-kms (1.56.0) aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.113.0) + aws-sdk-s3 (1.113.2) aws-sdk-core (~> 3, >= 3.127.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) - aws-sigv4 (1.4.0) + aws-sigv4 (1.5.0) aws-eventstream (~> 1, >= 1.0.2) bcrypt (3.1.17) better_errors (2.9.1) coderay (>= 1.0.0) erubi (>= 1.0.0) rack (>= 0.9.0) + better_html (1.0.16) + actionview (>= 4.0) + activesupport (>= 4.0) + ast (~> 2.0) + erubi (~> 1.4) + html_tokenizer (~> 0.0.6) + parser (>= 2.4) + smart_properties bindata (2.4.10) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) blurhash (0.1.6) ffi (~> 1.14) - bootsnap (1.10.3) + bootsnap (1.11.1) msgpack (~> 1.2) - brakeman (5.2.1) + brakeman (5.2.3) browser (4.2.0) brpoplpush-redis_script (0.1.2) concurrent-ruby (~> 1.0, >= 1.0.5) @@ -208,10 +216,10 @@ GEM multi_json encryptor (3.0.0) erubi (1.10.0) - et-orbi (1.2.6) + et-orbi (1.2.7) tzinfo excon (0.76.0) - fabrication (2.27.0) + fabrication (2.28.0) faker (2.20.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) @@ -256,13 +264,13 @@ GEM fog-json (>= 1.0) ipaddress (>= 0.8) formatador (0.2.5) - fugit (1.5.2) - et-orbi (~> 1.1, >= 1.1.8) + fugit (1.5.3) + et-orbi (~> 1, >= 1.2.7) raabro (~> 1.4) fuubar (2.5.1) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) - gitlab-omniauth-openid-connect (0.5.0) + gitlab-omniauth-openid-connect (0.9.1) addressable (~> 2.7) omniauth (~> 1.9) openid_connect (~> 1.2) @@ -278,12 +286,13 @@ GEM hamlit (>= 1.2.0) railties (>= 4.0.1) hashdiff (1.0.1) - hashie (4.1.0) + hashie (5.0.0) hcaptcha (7.1.0) json highline (2.0.3) hiredis (0.6.3) hkdf (0.3.0) + html_tokenizer (0.0.7) htmlentities (4.3.4) http (5.0.4) addressable (~> 2.8) @@ -300,9 +309,10 @@ GEM rainbow (>= 2.0.0) i18n (1.10.0) concurrent-ruby (~> 1.0) - i18n-tasks (0.9.37) + i18n-tasks (1.0.9) activesupport (>= 4.0.2) ast (>= 2.1.0) + better_html (~> 1.0) erubi highline (>= 2.0.0) i18n @@ -312,7 +322,7 @@ GEM terminal-table (>= 1.5.1) idn-ruby (0.1.4) ipaddress (0.8.3) - jmespath (1.6.0) + jmespath (1.6.1) json (2.5.1) json-canonicalization (0.3.0) json-jwt (1.13.0) @@ -362,12 +372,12 @@ GEM llhttp-ffi (0.4.0) ffi-compiler (~> 1.0) rake (~> 13.0) - lograge (0.11.2) + lograge (0.12.0) actionpack (>= 4) activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.15.0) + loofah (2.17.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) @@ -389,7 +399,7 @@ GEM mini_mime (1.1.2) mini_portile2 (2.8.0) minitest (5.15.0) - msgpack (1.4.4) + msgpack (1.5.1) multi_json (1.15.0) multipart-post (2.1.1) net-ldap (0.17.0) @@ -397,7 +407,7 @@ GEM net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) nio4r (2.5.8) - nokogiri (1.13.3) + nokogiri (1.13.4) mini_portile2 (~> 2.8.0) racc (~> 1.4) nsa (0.2.8) @@ -419,7 +429,7 @@ GEM omniauth-saml (1.10.3) omniauth (~> 1.3, >= 1.3.2) ruby-saml (~> 1.9) - openid_connect (1.2.0) + openid_connect (1.3.0) activemodel attr_required (>= 1.0.0) json-jwt (>= 1.5.0) @@ -432,15 +442,15 @@ GEM openssl (2.2.0) openssl-signature_algorithm (0.4.0) orm_adapter (0.5.0) - ox (2.14.10) + ox (2.14.11) parallel (1.22.1) - parser (3.1.1.0) + parser (3.1.2.0) ast (~> 2.4.1) parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.3.4) - pghero (2.8.2) + pg (1.3.5) + pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.7) posix-spawn (0.3.15) @@ -461,18 +471,18 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.6) - puma (5.6.2) + puma (5.6.4) nio4r (~> 2.0) pundit (2.2.0) activesupport (>= 3.0.0) raabro (1.4.0) racc (1.6.0) rack (2.2.3) - rack-attack (6.6.0) + rack-attack (6.6.1) rack (>= 1.0, < 3) rack-cors (1.1.1) rack (>= 2.0.0) - rack-oauth2 (1.16.0) + rack-oauth2 (1.19.0) activesupport attr_required httpclient @@ -482,20 +492,20 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.1.5) - actioncable (= 6.1.5) - actionmailbox (= 6.1.5) - actionmailer (= 6.1.5) - actionpack (= 6.1.5) - actiontext (= 6.1.5) - actionview (= 6.1.5) - activejob (= 6.1.5) - activemodel (= 6.1.5) - activerecord (= 6.1.5) - activestorage (= 6.1.5) - activesupport (= 6.1.5) + rails (6.1.5.1) + actioncable (= 6.1.5.1) + actionmailbox (= 6.1.5.1) + actionmailer (= 6.1.5.1) + actionpack (= 6.1.5.1) + actiontext (= 6.1.5.1) + actionview (= 6.1.5.1) + activejob (= 6.1.5.1) + activemodel (= 6.1.5.1) + activerecord (= 6.1.5.1) + activestorage (= 6.1.5.1) + activesupport (= 6.1.5.1) bundler (>= 1.15.0) - railties (= 6.1.5) + railties (= 6.1.5.1) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -511,9 +521,9 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.5) - actionpack (= 6.1.5) - activesupport (= 6.1.5) + railties (6.1.5.1) + actionpack (= 6.1.5.1) + activesupport (= 6.1.5.1) method_source rake (>= 12.2) thor (~> 1.0) @@ -527,8 +537,8 @@ GEM redis (4.5.1) redis-namespace (1.8.2) redis (>= 3.0.4) - regexp_parser (2.2.1) - request_store (1.5.0) + regexp_parser (2.3.1) + request_store (1.5.1) rack (>= 1.4) responders (3.0.1) actionpack (>= 5.0) @@ -545,10 +555,10 @@ GEM rspec-expectations (3.11.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-mocks (3.11.0) + rspec-mocks (3.11.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-rails (5.1.1) + rspec-rails (5.1.2) actionpack (>= 5.2) activesupport (>= 5.2) railties (>= 5.2) @@ -562,16 +572,16 @@ GEM rspec-support (3.11.0) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.26.1) + rubocop (1.28.2) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml - rubocop-ast (>= 1.16.0, < 2.0) + rubocop-ast (>= 1.17.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.16.0) + rubocop-ast (1.17.0) parser (>= 3.1.1.0) rubocop-rails (2.14.2) activesupport (>= 4.2.0) @@ -600,14 +610,14 @@ GEM redis (>= 4.2.0) sidekiq-bulk (0.2.0) sidekiq - sidekiq-scheduler (3.1.1) + sidekiq-scheduler (3.2.0) e2mmap redis (>= 3, < 5) rufus-scheduler (~> 3.2) sidekiq (>= 3) thwait tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.15) + sidekiq-unique-jobs (7.1.21) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) @@ -623,6 +633,7 @@ GEM simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) simplecov_json_formatter (0.1.2) + smart_properties (1.17.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -638,7 +649,7 @@ GEM stoplight (2.2.1) strong_migrations (0.7.9) activerecord (>= 5) - swd (1.2.0) + swd (1.3.0) activesupport (>= 3) attr_required (>= 0.0.5) httpclient (>= 2.4) @@ -694,7 +705,7 @@ GEM safety_net_attestation (~> 0.4.0) securecompare (~> 1.0) tpm-key_attestation (~> 0.9.0) - webfinger (1.1.0) + webfinger (1.2.0) activesupport httpclient (>= 2.4) webmock (3.14.0) @@ -730,7 +741,7 @@ DEPENDENCIES better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) - bootsnap (~> 1.10.3) + bootsnap (~> 1.11.1) brakeman (~> 5.2) browser bullet (~> 7.0) @@ -753,14 +764,14 @@ DEPENDENCIES doorkeeper (~> 5.5) dotenv-rails (~> 2.7) ed25519 (~> 1.3) - fabrication (~> 2.27) + fabrication (~> 2.28) faker (~> 2.20) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) fog-openstack (~> 0.3) fuubar (~> 2.5) - gitlab-omniauth-openid-connect (~> 0.5.0) + gitlab-omniauth-openid-connect (~> 0.9.1) hamlit-rails (~> 0.2) hcaptcha (~> 7.1) hiredis (~> 0.6) @@ -768,7 +779,7 @@ DEPENDENCIES http (~> 5.0) http_accept_language (~> 2.1) httplog (~> 1.5.0) - i18n-tasks (~> 0.9) + i18n-tasks (~> 1.0) idn-ruby json-ld json-ld-preloaded (~> 3.2) @@ -777,7 +788,7 @@ DEPENDENCIES letter_opener (~> 1.8) letter_opener_web (~> 2.0) link_header (~> 0.0) - lograge (~> 0.11) + lograge (~> 0.12) makara (~> 0.5) mario-redis-lock (~> 1.2) memory_profiler @@ -819,14 +830,14 @@ DEPENDENCIES rspec-rails (~> 5.1) rspec-sidekiq (~> 3.1) rspec_junit_formatter (~> 0.5) - rubocop (~> 1.26) + rubocop (~> 1.28) rubocop-rails (~> 2.14) ruby-progressbar (~> 1.11) sanitize (~> 6.0) scenic (~> 1.6) sidekiq (~> 6.4) sidekiq-bulk (~> 0.2.0) - sidekiq-scheduler (~> 3.1) + sidekiq-scheduler (~> 3.2) sidekiq-unique-jobs (~> 7.1) simple-navigation (~> 4.3) simple_form (~> 5.1) diff --git a/SECURITY.md b/SECURITY.md index 5531a306e..12f50ed88 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -12,6 +12,7 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through | Version | Supported | | ------- | ------------------ | +| 3.5.x | Yes | | 3.4.x | Yes | | 3.3.x | Yes | | < 3.3 | No | diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb index 1381a96ed..1304aeedb 100644 --- a/app/chewy/statuses_index.rb +++ b/app/chewy/statuses_index.rb @@ -55,6 +55,11 @@ class StatusesIndex < Chewy::Index data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } end + crutch :votes do |collection| + data = ::PollVote.joins(:poll).where(poll: { status_id: collection.map(&:id) }).where(account: Account.local).pluck(:status_id, :account_id) + data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } + end + root date_detection: false do field :id, type: 'long' field :account_id, type: 'long' diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index e376baab2..da9c6dd16 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -2,6 +2,8 @@ module Admin class DashboardController < BaseController + include Redisable + def index @system_checks = Admin::SystemCheck.perform @time_period = (29.days.ago.to_date...Time.now.utc.to_date) @@ -15,10 +17,10 @@ module Admin def redis_info @redis_info ||= begin - if Redis.current.is_a?(Redis::Namespace) - Redis.current.redis.info + if redis.is_a?(Redis::Namespace) + redis.redis.info else - Redis.current.info + redis.info end end end diff --git a/app/controllers/admin/sign_in_token_authentications_controller.rb b/app/controllers/admin/sign_in_token_authentications_controller.rb deleted file mode 100644 index e620ab292..000000000 --- a/app/controllers/admin/sign_in_token_authentications_controller.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SignInTokenAuthenticationsController < BaseController - before_action :set_target_user - - def create - authorize @user, :enable_sign_in_token_auth? - @user.update(skip_sign_in_token: false) - log_action :enable_sign_in_token_auth, @user - redirect_to admin_account_path(@user.account_id) - end - - def destroy - authorize @user, :disable_sign_in_token_auth? - @user.update(skip_sign_in_token: true) - log_action :disable_sign_in_token_auth, @user - redirect_to admin_account_path(@user.account_id) - end - - private - - def set_target_user - @user = User.find(params[:user_id]) - end - end -end diff --git a/app/controllers/api/v1/accounts/lookup_controller.rb b/app/controllers/api/v1/accounts/lookup_controller.rb index aee6be18a..8597f891d 100644 --- a/app/controllers/api/v1/accounts/lookup_controller.rb +++ b/app/controllers/api/v1/accounts/lookup_controller.rb @@ -12,5 +12,7 @@ class Api::V1::Accounts::LookupController < Api::BaseController def set_account @account = ResolveAccountService.new.call(params[:acct], skip_webfinger: true) || raise(ActiveRecord::RecordNotFound) + rescue Addressable::URI::InvalidURIError + raise(ActiveRecord::RecordNotFound) end end diff --git a/app/controllers/api/v1/admin/account_actions_controller.rb b/app/controllers/api/v1/admin/account_actions_controller.rb index 15af50822..6c9e04402 100644 --- a/app/controllers/api/v1/admin/account_actions_controller.rb +++ b/app/controllers/api/v1/admin/account_actions_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::AccountActionsController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:accounts' } before_action :require_staff! before_action :set_account diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb index 4b6dab208..65ed69f7b 100644 --- a/app/controllers/api/v1/admin/accounts_controller.rb +++ b/app/controllers/api/v1/admin/accounts_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::AccountsController < Api::BaseController - protect_from_forgery with: :exception - include Authorization include AccountableConcern @@ -67,8 +65,9 @@ class Api::V1::Admin::AccountsController < Api::BaseController def destroy authorize @account, :destroy? + json = render_to_body json: @account, serializer: REST::Admin::AccountSerializer Admin::AccountDeletionWorker.perform_async(@account.id) - render json: @account, serializer: REST::Admin::AccountSerializer + render json: json end def unsensitive diff --git a/app/controllers/api/v1/admin/dimensions_controller.rb b/app/controllers/api/v1/admin/dimensions_controller.rb index b1f738990..49a5be1c3 100644 --- a/app/controllers/api/v1/admin/dimensions_controller.rb +++ b/app/controllers/api/v1/admin/dimensions_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::DimensionsController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_dimensions diff --git a/app/controllers/api/v1/admin/measures_controller.rb b/app/controllers/api/v1/admin/measures_controller.rb index d64c3cdf7..da95d3422 100644 --- a/app/controllers/api/v1/admin/measures_controller.rb +++ b/app/controllers/api/v1/admin/measures_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::MeasuresController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_measures diff --git a/app/controllers/api/v1/admin/reports_controller.rb b/app/controllers/api/v1/admin/reports_controller.rb index fbfd0ee12..865ba3d23 100644 --- a/app/controllers/api/v1/admin/reports_controller.rb +++ b/app/controllers/api/v1/admin/reports_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::ReportsController < Api::BaseController - protect_from_forgery with: :exception - include Authorization include AccountableConcern diff --git a/app/controllers/api/v1/admin/retention_controller.rb b/app/controllers/api/v1/admin/retention_controller.rb index 4af5a5c4d..98d1a3d81 100644 --- a/app/controllers/api/v1/admin/retention_controller.rb +++ b/app/controllers/api/v1/admin/retention_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::RetentionController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_cohorts diff --git a/app/controllers/api/v1/admin/trends/links_controller.rb b/app/controllers/api/v1/admin/trends/links_controller.rb index 63b3d9358..0a191fe4b 100644 --- a/app/controllers/api/v1/admin/trends/links_controller.rb +++ b/app/controllers/api/v1/admin/trends/links_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::Trends::LinksController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_links diff --git a/app/controllers/api/v1/admin/trends/statuses_controller.rb b/app/controllers/api/v1/admin/trends/statuses_controller.rb index 86633cc74..cb145f165 100644 --- a/app/controllers/api/v1/admin/trends/statuses_controller.rb +++ b/app/controllers/api/v1/admin/trends/statuses_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::Trends::StatusesController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_statuses diff --git a/app/controllers/api/v1/admin/trends/tags_controller.rb b/app/controllers/api/v1/admin/trends/tags_controller.rb index 5cc4c269d..9c28b0412 100644 --- a/app/controllers/api/v1/admin/trends/tags_controller.rb +++ b/app/controllers/api/v1/admin/trends/tags_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Admin::Trends::TagsController < Api::BaseController - protect_from_forgery with: :exception - before_action -> { authorize_if_got_token! :'admin:read' } before_action :require_staff! before_action :set_tags diff --git a/app/controllers/api/v1/bookmarks_controller.rb b/app/controllers/api/v1/bookmarks_controller.rb index aa3fb88f0..0cc231840 100644 --- a/app/controllers/api/v1/bookmarks_controller.rb +++ b/app/controllers/api/v1/bookmarks_controller.rb @@ -21,7 +21,7 @@ class Api::V1::BookmarksController < Api::BaseController end def results - @_results ||= account_bookmarks.eager_load(:status).to_a_paginated_by_id( + @_results ||= account_bookmarks.joins(:status).eager_load(:status).to_a_paginated_by_id( limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id) ) diff --git a/app/controllers/api/v1/favourites_controller.rb b/app/controllers/api/v1/favourites_controller.rb index 21836bc17..2a873696c 100644 --- a/app/controllers/api/v1/favourites_controller.rb +++ b/app/controllers/api/v1/favourites_controller.rb @@ -21,7 +21,7 @@ class Api::V1::FavouritesController < Api::BaseController end def results - @_results ||= account_favourites.eager_load(:status).to_a_paginated_by_id( + @_results ||= account_favourites.joins(:status).eager_load(:status).to_a_paginated_by_id( limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id) ) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 7de446ac4..b2cee3e92 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -79,10 +79,12 @@ class Api::V1::StatusesController < Api::BaseController authorize @status, :destroy? @status.discard - RemovalWorker.perform_async(@status.id, { 'redraft' => true }) @status.account.statuses_count = @status.account.statuses_count - 1 + json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true - render json: @status, serializer: REST::StatusSerializer, source_requested: true + RemovalWorker.perform_async(@status.id, { 'redraft' => true }) + + render json: json end private diff --git a/app/controllers/api/v1/trends/links_controller.rb b/app/controllers/api/v1/trends/links_controller.rb index b1cde5a4b..2385fe438 100644 --- a/app/controllers/api/v1/trends/links_controller.rb +++ b/app/controllers/api/v1/trends/links_controller.rb @@ -36,13 +36,17 @@ class Api::V1::Trends::LinksController < Api::BaseController end def next_path - api_v1_trends_links_url pagination_params(offset: offset_param + limit_param(DEFAULT_LINKS_LIMIT)) + api_v1_trends_links_url pagination_params(offset: offset_param + limit_param(DEFAULT_LINKS_LIMIT)) if records_continue? end def prev_path api_v1_trends_links_url pagination_params(offset: offset_param - limit_param(DEFAULT_LINKS_LIMIT)) if offset_param > limit_param(DEFAULT_LINKS_LIMIT) end + def records_continue? + @links.size == limit_param(DEFAULT_LINKS_LIMIT) + end + def offset_param params[:offset].to_i end diff --git a/app/controllers/api/v1/trends/statuses_controller.rb b/app/controllers/api/v1/trends/statuses_controller.rb index 4977803fb..1f2fff582 100644 --- a/app/controllers/api/v1/trends/statuses_controller.rb +++ b/app/controllers/api/v1/trends/statuses_controller.rb @@ -36,7 +36,7 @@ class Api::V1::Trends::StatusesController < Api::BaseController end def next_path - api_v1_trends_statuses_url pagination_params(offset: offset_param + limit_param(DEFAULT_STATUSES_LIMIT)) + api_v1_trends_statuses_url pagination_params(offset: offset_param + limit_param(DEFAULT_STATUSES_LIMIT)) if records_continue? end def prev_path @@ -46,4 +46,8 @@ class Api::V1::Trends::StatusesController < Api::BaseController def offset_param params[:offset].to_i end + + def records_continue? + @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) + end end diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb index d77857871..38003f599 100644 --- a/app/controllers/api/v1/trends/tags_controller.rb +++ b/app/controllers/api/v1/trends/tags_controller.rb @@ -16,7 +16,7 @@ class Api::V1::Trends::TagsController < Api::BaseController def set_tags @tags = begin if Setting.trends - Trends.tags.query.allowed.limit(limit_param(DEFAULT_TAGS_LIMIT)) + Trends.tags.query.allowed.offset(offset_param).limit(limit_param(DEFAULT_TAGS_LIMIT)) else [] end @@ -32,7 +32,7 @@ class Api::V1::Trends::TagsController < Api::BaseController end def next_path - api_v1_trends_tags_url pagination_params(offset: offset_param + limit_param(DEFAULT_TAGS_LIMIT)) + api_v1_trends_tags_url pagination_params(offset: offset_param + limit_param(DEFAULT_TAGS_LIMIT)) if records_continue? end def prev_path @@ -42,4 +42,8 @@ class Api::V1::Trends::TagsController < Api::BaseController def offset_param params[:offset].to_i end + + def records_continue? + @tags.size == limit_param(DEFAULT_TAGS_LIMIT) + end end diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index ddcf92200..77eeab5b0 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -11,6 +11,10 @@ class Api::V2::SearchController < Api::BaseController def index @search = Search.new(search_results) render json: @search, serializer: REST::SearchSerializer + rescue Mastodon::SyntaxError + unprocessable_entity + rescue ActiveRecord::RecordNotFound + not_found end private diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb index 8607077f7..056f8a9f1 100644 --- a/app/controllers/auth/sessions_controller.rb +++ b/app/controllers/auth/sessions_controller.rb @@ -10,7 +10,6 @@ class Auth::SessionsController < Devise::SessionsController prepend_before_action :set_pack include TwoFactorAuthenticationConcern - include SignInTokenAuthenticationConcern before_action :set_instance_presenter, only: [:new] before_action :set_body_classes @@ -68,7 +67,7 @@ class Auth::SessionsController < Devise::SessionsController end def user_params - params.require(:user).permit(:email, :password, :otp_attempt, :sign_in_token_attempt, credential: {}) + params.require(:user).permit(:email, :password, :otp_attempt, credential: {}) end def after_sign_in_path_for(resource) @@ -148,6 +147,12 @@ class Auth::SessionsController < Devise::SessionsController ip: request.remote_ip, user_agent: request.user_agent ) + + UserMailer.suspicious_sign_in(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later! if suspicious_sign_in?(user) + end + + def suspicious_sign_in?(user) + SuspiciousSignInDetector.new(user).suspicious?(request) end def on_authentication_failure(user, security_measure, failure_reason) diff --git a/app/controllers/authorize_interactions_controller.rb b/app/controllers/authorize_interactions_controller.rb index f0bcac75b..97fe4a9ab 100644 --- a/app/controllers/authorize_interactions_controller.rb +++ b/app/controllers/authorize_interactions_controller.rb @@ -14,7 +14,7 @@ class AuthorizeInteractionsController < ApplicationController if @resource.is_a?(Account) render :show elsif @resource.is_a?(Status) - redirect_to web_url("statuses/#{@resource.id}") + redirect_to web_url("@#{@resource.account.pretty_acct}/#{@resource.id}") else render :error end @@ -26,15 +26,17 @@ class AuthorizeInteractionsController < ApplicationController else render :error end - rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError + rescue ActiveRecord::RecordNotFound render :error end private def set_resource - @resource = located_resource || render(:error) + @resource = located_resource authorize(@resource, :show?) if @resource.is_a?(Status) + rescue Mastodon::NotPermittedError + not_found end def located_resource diff --git a/app/controllers/concerns/sign_in_token_authentication_concern.rb b/app/controllers/concerns/sign_in_token_authentication_concern.rb deleted file mode 100644 index 4eb3d7181..000000000 --- a/app/controllers/concerns/sign_in_token_authentication_concern.rb +++ /dev/null @@ -1,57 +0,0 @@ -# frozen_string_literal: true - -module SignInTokenAuthenticationConcern - extend ActiveSupport::Concern - - included do - prepend_before_action :authenticate_with_sign_in_token, if: :sign_in_token_required?, only: [:create] - end - - def sign_in_token_required? - find_user&.suspicious_sign_in?(request.remote_ip) - end - - def valid_sign_in_token_attempt?(user) - Devise.secure_compare(user.sign_in_token, user_params[:sign_in_token_attempt]) - end - - def authenticate_with_sign_in_token - if user_params[:email].present? - user = self.resource = find_user_from_params - prompt_for_sign_in_token(user) if user&.external_or_valid_password?(user_params[:password]) - elsif session[:attempt_user_id] - user = self.resource = User.find_by(id: session[:attempt_user_id]) - return if user.nil? - - if session[:attempt_user_updated_at] != user.updated_at.to_s - restart_session - elsif user_params.key?(:sign_in_token_attempt) - authenticate_with_sign_in_token_attempt(user) - end - end - end - - def authenticate_with_sign_in_token_attempt(user) - if valid_sign_in_token_attempt?(user) - on_authentication_success(user, :sign_in_token) - else - on_authentication_failure(user, :sign_in_token, :invalid_sign_in_token) - flash.now[:alert] = I18n.t('users.invalid_sign_in_token') - prompt_for_sign_in_token(user) - end - end - - def prompt_for_sign_in_token(user) - if user.sign_in_token_expired? - user.generate_sign_in_token && user.save - UserMailer.sign_in_token(user, request.remote_ip, request.user_agent, Time.now.utc.to_s).deliver_later! - end - - set_attempt_session(user) - use_pack 'auth' - - @body_classes = 'lighter' - - set_locale { render :sign_in_token } - end -end diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index bc291c962..11c6b6d50 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -22,7 +22,10 @@ class FollowingAccountsController < ApplicationController end format.json do - raise Mastodon::NotPermittedError if page_requested? && @account.hide_collections? + if page_requested? && @account.hide_collections? + forbidden + next + end expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?) diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb index 5596e92d1..d2a4cb207 100644 --- a/app/controllers/media_proxy_controller.rb +++ b/app/controllers/media_proxy_controller.rb @@ -3,6 +3,7 @@ class MediaProxyController < ApplicationController include RoutingHelper include Authorization + include Redisable skip_before_action :store_current_location skip_before_action :require_functional! @@ -45,7 +46,7 @@ class MediaProxyController < ApplicationController end def lock_options - { redis: Redis.current, key: "media_download:#{params[:id]}", autorelease: 15.minutes.seconds } + { redis: redis, key: "media_download:#{params[:id]}", autorelease: 15.minutes.seconds } end def reject_media? diff --git a/app/controllers/oauth/tokens_controller.rb b/app/controllers/oauth/tokens_controller.rb index fa6d58f25..34087b20b 100644 --- a/app/controllers/oauth/tokens_controller.rb +++ b/app/controllers/oauth/tokens_controller.rb @@ -2,7 +2,8 @@ class Oauth::TokensController < Doorkeeper::TokensController def revoke - unsubscribe_for_token if authorized? && token.accessible? + unsubscribe_for_token if token.present? && authorized? && token.accessible? + super end diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb index 30138d29e..1638d3412 100644 --- a/app/controllers/settings/exports_controller.rb +++ b/app/controllers/settings/exports_controller.rb @@ -2,6 +2,7 @@ class Settings::ExportsController < Settings::BaseController include Authorization + include Redisable skip_before_action :require_functional! @@ -28,6 +29,6 @@ class Settings::ExportsController < Settings::BaseController end def lock_options - { redis: Redis.current, key: "backup:#{current_user.id}" } + { redis: redis, key: "backup:#{current_user.id}" } end end diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 1fddd087b..669ed00c6 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -57,7 +57,8 @@ class Settings::PreferencesController < Settings::BaseController :setting_use_pending_items, :setting_trends, :setting_crop_images, - notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag trending_link trending_status), + :setting_always_send_emails, + notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag trending_link trending_status appeal), interactions: %i(must_be_follower must_be_following must_be_following_dm) ) end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d482ad1a2..ce25e26f9 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -19,8 +19,11 @@ module ApplicationHelper # is looked up from the locales definition, and rails-i18n comes with # values that don't seem to make much sense for many languages, so # override these values with a default of 3 digits of precision. - options[:precision] = 3 - options[:strip_insignificant_zeros] = true + options = options.merge( + precision: 3, + strip_insignificant_zeros: true, + significant: true + ) number_to_human(number, **options) end diff --git a/app/javascript/core/admin.js b/app/javascript/core/admin.js index d2db89ca7..ef0a8f267 100644 --- a/app/javascript/core/admin.js +++ b/app/javascript/core/admin.js @@ -101,4 +101,14 @@ ready(() => { const registrationMode = document.getElementById('form_admin_settings_registrations_mode'); if (registrationMode) onChangeRegistrationMode(registrationMode); + + document.querySelector('a#add-instance-button')?.addEventListener('click', (e) => { + const domain = document.getElementById('by_domain')?.value; + + if (domain) { + const url = new URL(event.target.href); + url.searchParams.set('_domain', domain); + e.target.href = url; + } + }); }); diff --git a/app/javascript/flavours/glitch/actions/streaming.js b/app/javascript/flavours/glitch/actions/streaming.js index 223924534..90d6a0231 100644 --- a/app/javascript/flavours/glitch/actions/streaming.js +++ b/app/javascript/flavours/glitch/actions/streaming.js @@ -7,6 +7,10 @@ import { expandHomeTimeline, connectTimeline, disconnectTimeline, + fillHomeTimelineGaps, + fillPublicTimelineGaps, + fillCommunityTimelineGaps, + fillListTimelineGaps, } from './timelines'; import { updateNotifications, expandNotifications } from './notifications'; import { updateConversations } from './conversations'; @@ -35,6 +39,7 @@ const randomUpTo = max => * @param {Object.} params * @param {Object} options * @param {function(Function, Function): void} [options.fallback] + * @param {function(): void} [options.fillGaps] * @param {function(object): boolean} [options.accept] * @return {function(): void} */ @@ -61,6 +66,10 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti clearTimeout(pollingId); pollingId = null; } + + if (options.fillGaps) { + dispatch(options.fillGaps()); + } }, onDisconnect() { @@ -119,7 +128,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => { * @return {function(): void} */ export const connectUserStream = () => - connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification }); + connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification, fillGaps: fillHomeTimelineGaps }); /** * @param {Object} options @@ -127,7 +136,7 @@ export const connectUserStream = () => * @return {function(): void} */ export const connectCommunityStream = ({ onlyMedia } = {}) => - connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`); + connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) }); /** * @param {Object} options @@ -137,7 +146,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) => * @return {function(): void} */ export const connectPublicStream = ({ onlyMedia, onlyRemote, allowLocalOnly } = {}) => - connectTimelineStream(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`); + connectTimelineStream(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote, allowLocalOnly }) }); /** * @param {string} columnId @@ -160,4 +169,4 @@ export const connectDirectStream = () => * @return {function(): void} */ export const connectListStream = listId => - connectTimelineStream(`list:${listId}`, 'list', { list: listId }); + connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) }); diff --git a/app/javascript/flavours/glitch/actions/timelines.js b/app/javascript/flavours/glitch/actions/timelines.js index 24cc0d63f..0b36d8ac3 100644 --- a/app/javascript/flavours/glitch/actions/timelines.js +++ b/app/javascript/flavours/glitch/actions/timelines.js @@ -138,6 +138,22 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { }; }; +export function fillTimelineGaps(timelineId, path, params = {}, done = noOp) { + return (dispatch, getState) => { + const timeline = getState().getIn(['timelines', timelineId], ImmutableMap()); + const items = timeline.get('items'); + const nullIndexes = items.map((statusId, index) => statusId === null ? index : null); + const gaps = nullIndexes.map(index => index > 0 ? items.get(index - 1) : null); + + // Only expand at most two gaps to avoid doing too many requests + done = gaps.take(2).reduce((done, maxId) => { + return (() => dispatch(expandTimeline(timelineId, path, { ...params, maxId }, done))); + }, done); + + done(); + }; +} + export const expandHomeTimeline = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done); export const expandPublicTimeline = ({ maxId, onlyMedia, onlyRemote, allowLocalOnly } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, allow_local_only: !!allowLocalOnly, max_id: maxId, only_media: !!onlyMedia }, done); export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done); @@ -156,6 +172,11 @@ export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = }, done); }; +export const fillHomeTimelineGaps = (done = noOp) => fillTimelineGaps('home', '/api/v1/timelines/home', {}, done); +export const fillPublicTimelineGaps = ({ onlyMedia, onlyRemote, allowLocalOnly } = {}, done = noOp) => fillTimelineGaps(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia, allow_local_only: !!allowLocalOnly }, done); +export const fillCommunityTimelineGaps = ({ onlyMedia } = {}, done = noOp) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }, done); +export const fillListTimelineGaps = (id, done = noOp) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}, done); + export function expandTimelineRequest(timeline, isLoadingMore) { return { type: TIMELINE_EXPAND_REQUEST, @@ -199,6 +220,7 @@ export function connectTimeline(timeline) { return { type: TIMELINE_CONNECT, timeline, + usePendingItems: preferPendingItems, }; }; diff --git a/app/javascript/flavours/glitch/components/common_counter.js b/app/javascript/flavours/glitch/components/common_counter.js index e10cd9b76..dd9b62de9 100644 --- a/app/javascript/flavours/glitch/components/common_counter.js +++ b/app/javascript/flavours/glitch/components/common_counter.js @@ -25,7 +25,7 @@ export function counterRenderer(counterType, isBold = true) { return (displayNumber, pluralReady) => ( ); - mediaIcons.push('tasks'); - } + if (usingPiP) { media.push(); mediaIcons.push('video-camera'); @@ -684,6 +681,11 @@ class Status extends ImmutablePureComponent { mediaIcons.push('link'); } + if (status.get('poll')) { + media.push(); + mediaIcons.push('tasks'); + } + // Here we prepare extra data-* attributes for CSS selectors. // Users can use those for theming, hiding avatars etc via UserStyle const selectorAttribs = { diff --git a/app/javascript/flavours/glitch/components/status_prepend.js b/app/javascript/flavours/glitch/components/status_prepend.js index 1661ca8f5..d85009362 100644 --- a/app/javascript/flavours/glitch/components/status_prepend.js +++ b/app/javascript/flavours/glitch/components/status_prepend.js @@ -38,7 +38,7 @@ export default class StatusPrepend extends React.PureComponent { switch (type) { case 'featured': return ( - + ); case 'reblogged_by': return ( diff --git a/app/javascript/flavours/glitch/components/status_visibility_icon.js b/app/javascript/flavours/glitch/components/status_visibility_icon.js index e2e0f30b8..07d56c7a8 100644 --- a/app/javascript/flavours/glitch/components/status_visibility_icon.js +++ b/app/javascript/flavours/glitch/components/status_visibility_icon.js @@ -9,7 +9,7 @@ const messages = defineMessages({ public: { id: 'privacy.public.short', defaultMessage: 'Public' }, unlisted: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, private: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, - direct: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, + direct: { id: 'privacy.direct.short', defaultMessage: 'Mentioned people only' }, }); export default @injectIntl diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index 4b0494fff..68c6bae8e 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -37,7 +37,7 @@ const messages = defineMessages({ showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' }, enableNotifications: { id: 'account.enable_notifications', defaultMessage: 'Notify me when @{name} posts' }, disableNotifications: { id: 'account.disable_notifications', defaultMessage: 'Stop notifying me when @{name} posts' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.js b/app/javascript/flavours/glitch/features/account_timeline/components/header.js index e70f011b7..d6e607a37 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/header.js +++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.js @@ -128,8 +128,8 @@ export default class Header extends ImmutablePureComponent { {!hideTabs && (
- - + +
)} diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.js b/app/javascript/flavours/glitch/features/account_timeline/index.js index 776687486..6d2df5c6f 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.js +++ b/app/javascript/flavours/glitch/features/account_timeline/index.js @@ -44,7 +44,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = }; const RemoteHint = ({ url }) => ( - } /> + } /> ); RemoteHint.propTypes = { @@ -156,7 +156,7 @@ class AccountTimeline extends ImmutablePureComponent { } else if (remote && statusIds.isEmpty()) { emptyMessage = ; } else { - emptyMessage = ; + emptyMessage = ; } const remoteMessage = remote ? : null; diff --git a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js index 58b9e6396..ada8fb068 100644 --- a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js +++ b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js @@ -70,7 +70,7 @@ class Bookmarks extends ImmutablePureComponent { const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props; const pinned = !!columnId; - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js index c8e783d22..14364b0a0 100644 --- a/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js +++ b/app/javascript/flavours/glitch/features/compose/components/privacy_dropdown.js @@ -6,12 +6,12 @@ import Dropdown from './dropdown'; const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, - public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all, shown in public timelines' }, + public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all' }, unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, - unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but not in public timelines' }, - private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, + unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but opted-out of discovery features' }, + private_short: { id: 'privacy.private.short', defaultMessage: 'Followers only' }, private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' }, - direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Only people I mention' }, 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/flavours/glitch/features/compose/components/search_results.js b/app/javascript/flavours/glitch/features/compose/components/search_results.js index cbc1f35e5..d92a6bf6b 100644 --- a/app/javascript/flavours/glitch/features/compose/components/search_results.js +++ b/app/javascript/flavours/glitch/features/compose/components/search_results.js @@ -72,10 +72,10 @@ class SearchResults extends ImmutablePureComponent { } else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) { statuses = (
-
+
- +
); @@ -101,7 +101,7 @@ class SearchResults extends ImmutablePureComponent { count += results.get('statuses').size; statuses = (
-
+
{results.get('statuses').map(statusId => )} diff --git a/app/javascript/flavours/glitch/features/compose/containers/warning_container.js b/app/javascript/flavours/glitch/features/compose/containers/warning_container.js index ab9d2123a..5fccaa442 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/warning_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/warning_container.js @@ -43,13 +43,13 @@ const WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning } if (hashtagWarning) { - return } />; + return } />; } if (directMessageWarning) { const message = ( - {!!termsLink && } + {!!termsLink && } ); diff --git a/app/javascript/flavours/glitch/features/compose/index.js b/app/javascript/flavours/glitch/features/compose/index.js index cb6c54a48..b9a8e0245 100644 --- a/app/javascript/flavours/glitch/features/compose/index.js +++ b/app/javascript/flavours/glitch/features/compose/index.js @@ -16,7 +16,7 @@ import { cycleElefriendCompose } from 'flavours/glitch/actions/compose'; import HeaderContainer from './containers/header_container'; const messages = defineMessages({ - compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new toot' }, + compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new post' }, }); const mapStateToProps = (state, ownProps) => ({ diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.js b/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.js index ce14e2a9d..18c3c7e21 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.js +++ b/app/javascript/flavours/glitch/features/direct_timeline/components/column_settings.js @@ -2,6 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import SettingToggle from 'flavours/glitch/features/notifications/components/setting_toggle'; import SettingText from '../../../components/setting_text'; const messages = defineMessages({ @@ -23,6 +24,12 @@ class ColumnSettings extends React.PureComponent { return (
+ + +
+ } /> +
+
diff --git a/app/javascript/flavours/glitch/features/direct_timeline/index.js b/app/javascript/flavours/glitch/features/direct_timeline/index.js index 7741c6922..75ca19d17 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/index.js +++ b/app/javascript/flavours/glitch/features/direct_timeline/index.js @@ -10,7 +10,6 @@ import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/col import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectDirectStream } from 'flavours/glitch/actions/streaming'; -import { changeSetting } from 'flavours/glitch/actions/settings'; import ConversationsListContainer from './containers/conversations_list_container'; const messages = defineMessages({ @@ -99,14 +98,6 @@ class DirectTimeline extends React.PureComponent { this.props.dispatch(expandConversations({ maxId })); } - handleTimelineClick = () => { - this.props.dispatch(changeSetting(['direct', 'conversations'], false)); - } - - handleConversationsClick = () => { - this.props.dispatch(changeSetting(['direct', 'conversations'], true)); - } - render () { const { intl, hasUnread, columnId, multiColumn, conversationsMode } = this.props; const pinned = !!columnId; @@ -119,6 +110,7 @@ class DirectTimeline extends React.PureComponent { scrollKey={`direct_timeline-${columnId}`} timelineId='direct' onLoadMore={this.handleLoadMore} + prepend={
} emptyMessage={} /> ); @@ -129,6 +121,7 @@ class DirectTimeline extends React.PureComponent { scrollKey={`direct_timeline-${columnId}`} timelineId='direct' onLoadMore={this.handleLoadMoreTimeline} + prepend={
} emptyMessage={} /> ); @@ -149,27 +142,6 @@ class DirectTimeline extends React.PureComponent { -
- - -
- {contents} ); diff --git a/app/javascript/flavours/glitch/features/directory/components/account_card.js b/app/javascript/flavours/glitch/features/directory/components/account_card.js index c9ef5850c..6c554336c 100644 --- a/app/javascript/flavours/glitch/features/directory/components/account_card.js +++ b/app/javascript/flavours/glitch/features/directory/components/account_card.js @@ -191,7 +191,7 @@ class AccountCard extends ImmutablePureComponent {
- +
diff --git a/app/javascript/flavours/glitch/features/favourited_statuses/index.js b/app/javascript/flavours/glitch/features/favourited_statuses/index.js index c6470ba74..4df3aaa64 100644 --- a/app/javascript/flavours/glitch/features/favourited_statuses/index.js +++ b/app/javascript/flavours/glitch/features/favourited_statuses/index.js @@ -70,7 +70,7 @@ class Favourites extends ImmutablePureComponent { const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props; const pinned = !!columnId; - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/flavours/glitch/features/favourites/index.js b/app/javascript/flavours/glitch/features/favourites/index.js index bd6f782ce..a51562e71 100644 --- a/app/javascript/flavours/glitch/features/favourites/index.js +++ b/app/javascript/flavours/glitch/features/favourites/index.js @@ -68,7 +68,7 @@ class Favourites extends ImmutablePureComponent { ); } - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/flavours/glitch/features/getting_started_misc/index.js b/app/javascript/flavours/glitch/features/getting_started_misc/index.js index 570fe78bf..de354d6b1 100644 --- a/app/javascript/flavours/glitch/features/getting_started_misc/index.js +++ b/app/javascript/flavours/glitch/features/getting_started_misc/index.js @@ -18,7 +18,7 @@ const messages = defineMessages({ mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' }, show_me_around: { id: 'getting_started.onboarding', defaultMessage: 'Show me around' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' }, keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Keyboard shortcuts' }, featured_users: { id: 'navigation_bar.featured_users', defaultMessage: 'Featured users' }, diff --git a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js index abc3f468f..481f76763 100644 --- a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js +++ b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js @@ -103,7 +103,7 @@ class KeyboardShortcuts extends ImmutablePureComponent { alt+n - + alt+x diff --git a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js index 0dad079ad..0be2a7e13 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js +++ b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js @@ -146,7 +146,7 @@ export default class ColumnSettings extends React.PureComponent {
- +
diff --git a/app/javascript/flavours/glitch/features/pinned_statuses/index.js b/app/javascript/flavours/glitch/features/pinned_statuses/index.js index 34d8e465f..518d0294b 100644 --- a/app/javascript/flavours/glitch/features/pinned_statuses/index.js +++ b/app/javascript/flavours/glitch/features/pinned_statuses/index.js @@ -10,7 +10,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; const messages = defineMessages({ - heading: { id: 'column.pins', defaultMessage: 'Pinned toot' }, + heading: { id: 'column.pins', defaultMessage: 'Pinned post' }, }); const mapStateToProps = state => ({ diff --git a/app/javascript/flavours/glitch/features/reblogs/index.js b/app/javascript/flavours/glitch/features/reblogs/index.js index d88916d19..ed646c6ed 100644 --- a/app/javascript/flavours/glitch/features/reblogs/index.js +++ b/app/javascript/flavours/glitch/features/reblogs/index.js @@ -68,7 +68,7 @@ class Reblogs extends ImmutablePureComponent { ); } - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/flavours/glitch/features/report/category.js b/app/javascript/flavours/glitch/features/report/category.js index cf63533d0..bea21b1b7 100644 --- a/app/javascript/flavours/glitch/features/report/category.js +++ b/app/javascript/flavours/glitch/features/report/category.js @@ -1,5 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'flavours/glitch/components/button'; import Option from './components/option'; @@ -17,11 +19,17 @@ const messages = defineMessages({ account: { id: 'report.category.title_account', defaultMessage: 'profile' }, }); -export default @injectIntl +const mapStateToProps = state => ({ + rules: state.get('rules'), +}); + +export default @connect(mapStateToProps) +@injectIntl class Category extends React.PureComponent { static propTypes = { onNextStep: PropTypes.func.isRequired, + rules: ImmutablePropTypes.list, category: PropTypes.string, onChangeCategory: PropTypes.func.isRequired, startedFrom: PropTypes.oneOf(['status', 'account']), @@ -53,13 +61,15 @@ class Category extends React.PureComponent { }; render () { - const { category, startedFrom, intl } = this.props; + const { category, startedFrom, rules, intl } = this.props; - const options = [ - 'dislike', + const options = rules.size > 0 ? [ 'spam', 'violation', 'other', + ] : [ + 'spam', + 'other', ]; return ( diff --git a/app/javascript/flavours/glitch/features/status/components/card.js b/app/javascript/flavours/glitch/features/status/components/card.js index 14abe9838..0ca2508e7 100644 --- a/app/javascript/flavours/glitch/features/status/components/card.js +++ b/app/javascript/flavours/glitch/features/status/components/card.js @@ -24,7 +24,7 @@ const trim = (text, len) => { return text; } - return text.substring(0, cut) + (text.length > len ? '…' : ''); + return text.slice(0, cut) + (text.length > len ? '…' : ''); }; const domParser = new DOMParser(); diff --git a/app/javascript/flavours/glitch/features/status/components/detailed_status.js b/app/javascript/flavours/glitch/features/status/components/detailed_status.js index 528d2eb73..f4e6c24c5 100644 --- a/app/javascript/flavours/glitch/features/status/components/detailed_status.js +++ b/app/javascript/flavours/glitch/features/status/components/detailed_status.js @@ -134,10 +134,6 @@ class DetailedStatus extends ImmutablePureComponent { outerStyle.height = `${this.state.height}px`; } - if (status.get('poll')) { - media.push(); - mediaIcons.push('tasks'); - } if (usingPiP) { media.push(); mediaIcons.push('video-camera'); @@ -202,6 +198,11 @@ class DetailedStatus extends ImmutablePureComponent { mediaIcons.push('link'); } + if (status.get('poll')) { + media.push(); + mediaIcons.push('tasks'); + } + if (status.get('application')) { applicationLink = · {status.getIn(['application', 'name'])}; } diff --git a/app/javascript/flavours/glitch/features/ui/components/boost_modal.js b/app/javascript/flavours/glitch/features/ui/components/boost_modal.js index c23aec5ee..8d9496bb9 100644 --- a/app/javascript/flavours/glitch/features/ui/components/boost_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/boost_modal.js @@ -14,14 +14,11 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import PrivacyDropdown from 'flavours/glitch/features/compose/components/privacy_dropdown'; import classNames from 'classnames'; import { changeBoostPrivacy } from 'flavours/glitch/actions/boosts'; +import VisibilityIcon from 'flavours/glitch/components/status_visibility_icon'; const messages = defineMessages({ cancel_reblog: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' }, reblog: { id: 'status.reblog', defaultMessage: 'Boost' }, - public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, - unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, - private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, - direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, }); const mapStateToProps = state => { @@ -85,15 +82,6 @@ class BoostModal extends ImmutablePureComponent { const { status, missingMediaDescription, privacy, intl } = this.props; const buttonText = status.get('reblogged') ? messages.cancel_reblog : messages.reblog; - const visibilityIconInfo = { - 'public': { icon: 'globe', text: intl.formatMessage(messages.public_short) }, - 'unlisted': { icon: 'unlock', text: intl.formatMessage(messages.unlisted_short) }, - 'private': { icon: 'lock', text: intl.formatMessage(messages.private_short) }, - 'direct': { icon: 'envelope', text: intl.formatMessage(messages.direct_short) }, - }; - - const visibilityIcon = visibilityIconInfo[status.get('visibility')]; - return (
@@ -101,7 +89,7 @@ class BoostModal extends ImmutablePureComponent {
diff --git a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js index 9b7f9d1fb..4d02be29b 100644 --- a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js @@ -11,13 +11,10 @@ import AttachmentList from 'flavours/glitch/components/attachment_list'; import Icon from 'flavours/glitch/components/icon'; import ImmutablePureComponent from 'react-immutable-pure-component'; import classNames from 'classnames'; +import VisibilityIcon from 'flavours/glitch/components/status_visibility_icon'; const messages = defineMessages({ favourite: { id: 'status.favourite', defaultMessage: 'Favourite' }, - public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, - unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, - private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, - direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, }); export default @injectIntl @@ -60,15 +57,6 @@ class FavouriteModal extends ImmutablePureComponent { render () { const { status, intl } = this.props; - const visibilityIconInfo = { - 'public': { icon: 'globe', text: intl.formatMessage(messages.public_short) }, - 'unlisted': { icon: 'unlock', text: intl.formatMessage(messages.unlisted_short) }, - 'private': { icon: 'lock', text: intl.formatMessage(messages.private_short) }, - 'direct': { icon: 'envelope', text: intl.formatMessage(messages.direct_short) }, - }; - - const visibilityIcon = visibilityIconInfo[status.get('visibility')]; - return (
@@ -76,7 +64,7 @@ class FavouriteModal extends ImmutablePureComponent {
diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 7ca1adf7c..099ffc69c 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -11,6 +11,7 @@ import { uploadCompose, resetCompose, changeComposeSpoilerness } from 'flavours/ import { expandHomeTimeline } from 'flavours/glitch/actions/timelines'; import { expandNotifications, notificationsSetVisibility } from 'flavours/glitch/actions/notifications'; import { fetchFilters } from 'flavours/glitch/actions/filters'; +import { fetchRules } from 'flavours/glitch/actions/rules'; import { clearHeight } from 'flavours/glitch/actions/height_cache'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'flavours/glitch/actions/markers'; import { WrappedSwitch, WrappedRoute } from 'flavours/glitch/util/react_router_helpers'; @@ -402,6 +403,7 @@ class UI extends React.Component { this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandNotifications()); setTimeout(() => this.props.dispatch(fetchFilters()), 500); + setTimeout(() => this.props.dispatch(fetchRules()), 3000); } componentDidMount () { diff --git a/app/javascript/flavours/glitch/features/video/index.js b/app/javascript/flavours/glitch/features/video/index.js index 53e3dfda3..25c94bb2c 100644 --- a/app/javascript/flavours/glitch/features/video/index.js +++ b/app/javascript/flavours/glitch/features/video/index.js @@ -90,7 +90,7 @@ export const fileNameFromURL = str => { const pathname = url.pathname; const index = pathname.lastIndexOf('/'); - return pathname.substring(index + 1); + return pathname.slice(index + 1); }; export default @injectIntl diff --git a/app/javascript/flavours/glitch/reducers/timelines.js b/app/javascript/flavours/glitch/reducers/timelines.js index 7d815d850..afd9d12cb 100644 --- a/app/javascript/flavours/glitch/reducers/timelines.js +++ b/app/javascript/flavours/glitch/reducers/timelines.js @@ -16,7 +16,7 @@ import { ACCOUNT_MUTE_SUCCESS, ACCOUNT_UNFOLLOW_SUCCESS, } from 'flavours/glitch/actions/accounts'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; +import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; import compareId from 'flavours/glitch/util/compare_id'; const initialState = ImmutableMap(); @@ -32,6 +32,13 @@ const initialTimeline = ImmutableMap({ }); const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, isLoadingRecent, usePendingItems) => { + // This method is pretty tricky because: + // - existing items in the timeline might be out of order + // - the existing timeline may have gaps, most often explicitly noted with a `null` item + // - ideally, we don't want it to reorder existing items of the timeline + // - `statuses` may include items that are already included in the timeline + // - this function can be called either to fill in a gap, or load newer items + return state.update(timeline, initialTimeline, map => map.withMutations(mMap => { mMap.set('isLoading', false); mMap.set('isPartial', isPartial); @@ -45,15 +52,43 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is mMap.update(usePendingItems ? 'pendingItems' : 'items', ImmutableList(), oldIds => { const newIds = statuses.map(status => status.get('id')); - const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1; - const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0); - if (firstIndex < 0) { - return (isPartial ? newIds.unshift(null) : newIds).concat(oldIds.skip(lastIndex)); + // Now this gets tricky, as we don't necessarily know for sure where the gap to fill is + // and some items in the timeline may not be properly ordered. + + // However, we know that `newIds.last()` is the oldest item that was requested and that + // there is no “hole” between `newIds.last()` and `newIds.first()`. + + // First, find the furthest (if properly sorted, oldest) item in the timeline that is + // newer than the oldest fetched one, as it's most likely that it delimits the gap. + // Start the gap *after* that item. + const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1; + + // Then, try to find the furthest (if properly sorted, oldest) item in the timeline that + // is newer than the most recent fetched one, as it delimits a section comprised of only + // items older or within `newIds` (or that were deleted from the server, so should be removed + // anyway). + // Stop the gap *after* that item. + const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0) + 1; + + let insertedIds = ImmutableOrderedSet(newIds).withMutations(insertedIds => { + // It is possible, though unlikely, that the slice we are replacing contains items older + // than the elements we got from the API. Get them and add them back at the back of the + // slice. + const olderIds = oldIds.slice(firstIndex, lastIndex).filter(id => id !== null && compareId(id, newIds.last()) < 0); + insertedIds.union(olderIds); + + // Make sure we aren't inserting duplicates + insertedIds.subtract(oldIds.take(firstIndex), oldIds.skip(lastIndex)); + }).toList(); + + // Finally, insert a gap marker if the data is marked as partial by the server + if (isPartial && (firstIndex === 0 || oldIds.get(firstIndex - 1) !== null)) { + insertedIds = insertedIds.unshift(null); } - return oldIds.take(firstIndex + 1).concat( - isPartial && oldIds.get(firstIndex) !== null ? newIds.unshift(null) : newIds, + return oldIds.take(firstIndex).concat( + insertedIds, oldIds.skip(lastIndex), ); }); @@ -142,6 +177,17 @@ const updateTop = (state, timeline, top) => { })); }; +const reconnectTimeline = (state, usePendingItems) => { + if (state.get('online')) { + return state; + } + + return state.withMutations(mMap => { + mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items); + mMap.set('online', true); + }); +}; + export default function timelines(state = initialState, action) { switch(action.type) { case TIMELINE_LOAD_PENDING: @@ -167,7 +213,7 @@ export default function timelines(state = initialState, action) { case TIMELINE_SCROLL_TOP: return updateTop(state, action.timeline, action.top); case TIMELINE_CONNECT: - return state.update(action.timeline, initialTimeline, map => map.set('online', true)); + return state.update(action.timeline, initialTimeline, map => reconnectTimeline(map, action.usePendingItems)); case TIMELINE_DISCONNECT: return state.update( action.timeline, diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 512a04376..96e292d8b 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -579,7 +579,7 @@ } & > span { - max-width: 400px; + max-width: 500px; } a { diff --git a/app/javascript/flavours/glitch/styles/components/composer.scss b/app/javascript/flavours/glitch/styles/components/composer.scss index 96ea096e1..3137b2dea 100644 --- a/app/javascript/flavours/glitch/styles/components/composer.scss +++ b/app/javascript/flavours/glitch/styles/components/composer.scss @@ -206,7 +206,12 @@ sub { font-size: smaller; - text-align: sub; + vertical-align: sub; + } + + sup { + font-size: smaller; + vertical-align: super; } ul, ol { diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index 016e31c63..373280fc4 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -1566,7 +1566,7 @@ button.icon-button.active i.fa-retweet { .loading-bar { background-color: $ui-highlight-color; height: 3px; - position: absolute; + position: fixed; top: 0; left: 0; z-index: 9999; diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index 0d7dfd64d..1534ba913 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -125,7 +125,7 @@ sub { font-size: smaller; - text-align: sub; + vertical-align: sub; } sup { diff --git a/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js b/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js index e4519a13e..70694ab6d 100644 --- a/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js +++ b/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js @@ -124,7 +124,7 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo for (let id in aPool) { let emoji = aPool[id], { search } = emoji, - sub = value.substr(0, length), + sub = value.slice(0, length), subIndex = search.indexOf(sub); if (subIndex !== -1) { diff --git a/app/javascript/images/alert_badge.png b/app/javascript/images/alert_badge.png new file mode 100644 index 000000000..681f6e651 Binary files /dev/null and b/app/javascript/images/alert_badge.png differ diff --git a/app/javascript/images/icon_bookmarks.png b/app/javascript/images/icon_bookmarks.png new file mode 100644 index 000000000..b0cff1344 Binary files /dev/null and b/app/javascript/images/icon_bookmarks.png differ diff --git a/app/javascript/images/icon_developers.png b/app/javascript/images/icon_developers.png new file mode 100644 index 000000000..c6d2e1829 Binary files /dev/null and b/app/javascript/images/icon_developers.png differ diff --git a/app/javascript/images/icon_direct.png b/app/javascript/images/icon_direct.png new file mode 100644 index 000000000..71e898a98 Binary files /dev/null and b/app/javascript/images/icon_direct.png differ diff --git a/app/javascript/images/icon_docs.png b/app/javascript/images/icon_docs.png new file mode 100644 index 000000000..6af1c8268 Binary files /dev/null and b/app/javascript/images/icon_docs.png differ diff --git a/app/javascript/images/icon_domain_blocks.png b/app/javascript/images/icon_domain_blocks.png new file mode 100644 index 000000000..ed3750485 Binary files /dev/null and b/app/javascript/images/icon_domain_blocks.png differ diff --git a/app/javascript/images/icon_invite.png b/app/javascript/images/icon_invite.png new file mode 100644 index 000000000..21156ec96 Binary files /dev/null and b/app/javascript/images/icon_invite.png differ diff --git a/app/javascript/images/icon_mobile_apps.png b/app/javascript/images/icon_mobile_apps.png new file mode 100644 index 000000000..a7cbd78c1 Binary files /dev/null and b/app/javascript/images/icon_mobile_apps.png differ diff --git a/app/javascript/images/icon_notifications.png b/app/javascript/images/icon_notifications.png new file mode 100644 index 000000000..0aaf5e68d Binary files /dev/null and b/app/javascript/images/icon_notifications.png differ diff --git a/app/javascript/images/icon_profile_directory.png b/app/javascript/images/icon_profile_directory.png new file mode 100644 index 000000000..05a94213a Binary files /dev/null and b/app/javascript/images/icon_profile_directory.png differ diff --git a/app/javascript/images/icon_tos.png b/app/javascript/images/icon_tos.png new file mode 100644 index 000000000..d0dbb13f7 Binary files /dev/null and b/app/javascript/images/icon_tos.png differ diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index 8fbb22271..d76f045c8 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -7,6 +7,10 @@ import { expandHomeTimeline, connectTimeline, disconnectTimeline, + fillHomeTimelineGaps, + fillPublicTimelineGaps, + fillCommunityTimelineGaps, + fillListTimelineGaps, } from './timelines'; import { updateNotifications, expandNotifications } from './notifications'; import { updateConversations } from './conversations'; @@ -35,6 +39,7 @@ const randomUpTo = max => * @param {Object.} params * @param {Object} options * @param {function(Function, Function): void} [options.fallback] + * @param {function(): void} [options.fillGaps] * @param {function(object): boolean} [options.accept] * @return {function(): void} */ @@ -61,6 +66,10 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti clearTimeout(pollingId); pollingId = null; } + + if (options.fillGaps) { + dispatch(options.fillGaps()); + } }, onDisconnect() { @@ -119,7 +128,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => { * @return {function(): void} */ export const connectUserStream = () => - connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification }); + connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification, fillGaps: fillHomeTimelineGaps }); /** * @param {Object} options @@ -127,7 +136,7 @@ export const connectUserStream = () => * @return {function(): void} */ export const connectCommunityStream = ({ onlyMedia } = {}) => - connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`); + connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) }); /** * @param {Object} options @@ -136,7 +145,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) => * @return {function(): void} */ export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) => - connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`); + connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote }) }); /** * @param {string} columnId @@ -159,4 +168,4 @@ export const connectDirectStream = () => * @return {function(): void} */ export const connectListStream = listId => - connectTimelineStream(`list:${listId}`, 'list', { list: listId }); + connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) }); diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index 31ae09e4a..44fedd5c2 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -124,6 +124,22 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { }; }; +export function fillTimelineGaps(timelineId, path, params = {}, done = noOp) { + return (dispatch, getState) => { + const timeline = getState().getIn(['timelines', timelineId], ImmutableMap()); + const items = timeline.get('items'); + const nullIndexes = items.map((statusId, index) => statusId === null ? index : null); + const gaps = nullIndexes.map(index => index > 0 ? items.get(index - 1) : null); + + // Only expand at most two gaps to avoid doing too many requests + done = gaps.take(2).reduce((done, maxId) => { + return (() => dispatch(expandTimeline(timelineId, path, { ...params, maxId }, done))); + }, done); + + done(); + }; +} + export const expandHomeTimeline = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done); export const expandPublicTimeline = ({ maxId, onlyMedia, onlyRemote } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, max_id: maxId, only_media: !!onlyMedia }, done); export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done); @@ -141,6 +157,11 @@ export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = }, done); }; +export const fillHomeTimelineGaps = (done = noOp) => fillTimelineGaps('home', '/api/v1/timelines/home', {}, done); +export const fillPublicTimelineGaps = ({ onlyMedia, onlyRemote } = {}, done = noOp) => fillTimelineGaps(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia }, done); +export const fillCommunityTimelineGaps = ({ onlyMedia } = {}, done = noOp) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }, done); +export const fillListTimelineGaps = (id, done = noOp) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}, done); + export function expandTimelineRequest(timeline, isLoadingMore) { return { type: TIMELINE_EXPAND_REQUEST, @@ -184,6 +205,7 @@ export function connectTimeline(timeline) { return { type: TIMELINE_CONNECT, timeline, + usePendingItems: preferPendingItems, }; }; diff --git a/app/javascript/mastodon/actions/trends.js b/app/javascript/mastodon/actions/trends.js index 304bbebef..edda0b5b5 100644 --- a/app/javascript/mastodon/actions/trends.js +++ b/app/javascript/mastodon/actions/trends.js @@ -1,4 +1,4 @@ -import api from '../api'; +import api, { getLinks } from '../api'; import { importFetchedStatuses } from './importer'; export const TRENDS_TAGS_FETCH_REQUEST = 'TRENDS_TAGS_FETCH_REQUEST'; @@ -13,6 +13,10 @@ export const TRENDS_STATUSES_FETCH_REQUEST = 'TRENDS_STATUSES_FETCH_REQUEST'; export const TRENDS_STATUSES_FETCH_SUCCESS = 'TRENDS_STATUSES_FETCH_SUCCESS'; export const TRENDS_STATUSES_FETCH_FAIL = 'TRENDS_STATUSES_FETCH_FAIL'; +export const TRENDS_STATUSES_EXPAND_REQUEST = 'TRENDS_STATUSES_EXPAND_REQUEST'; +export const TRENDS_STATUSES_EXPAND_SUCCESS = 'TRENDS_STATUSES_EXPAND_SUCCESS'; +export const TRENDS_STATUSES_EXPAND_FAIL = 'TRENDS_STATUSES_EXPAND_FAIL'; + export const fetchTrendingHashtags = () => (dispatch, getState) => { dispatch(fetchTrendingHashtagsRequest()); @@ -68,11 +72,16 @@ export const fetchTrendingLinksFail = error => ({ }); export const fetchTrendingStatuses = () => (dispatch, getState) => { + if (getState().getIn(['status_lists', 'trending', 'isLoading'])) { + return; + } + dispatch(fetchTrendingStatusesRequest()); - api(getState).get('/api/v1/trends/statuses').then(({ data }) => { - dispatch(importFetchedStatuses(data)); - dispatch(fetchTrendingStatusesSuccess(data)); + api(getState).get('/api/v1/trends/statuses').then(response => { + const next = getLinks(response).refs.find(link => link.rel === 'next'); + dispatch(importFetchedStatuses(response.data)); + dispatch(fetchTrendingStatusesSuccess(response.data, next ? next.uri : null)); }).catch(err => dispatch(fetchTrendingStatusesFail(err))); }; @@ -81,9 +90,10 @@ export const fetchTrendingStatusesRequest = () => ({ skipLoading: true, }); -export const fetchTrendingStatusesSuccess = statuses => ({ +export const fetchTrendingStatusesSuccess = (statuses, next) => ({ type: TRENDS_STATUSES_FETCH_SUCCESS, statuses, + next, skipLoading: true, }); @@ -93,3 +103,37 @@ export const fetchTrendingStatusesFail = error => ({ skipLoading: true, skipAlert: true, }); + + +export const expandTrendingStatuses = () => (dispatch, getState) => { + const url = getState().getIn(['status_lists', 'trending', 'next'], null); + + if (url === null || getState().getIn(['status_lists', 'trending', 'isLoading'])) { + return; + } + + dispatch(expandTrendingStatusesRequest()); + + api(getState).get(url).then(response => { + const next = getLinks(response).refs.find(link => link.rel === 'next'); + dispatch(importFetchedStatuses(response.data)); + dispatch(expandTrendingStatusesSuccess(response.data, next ? next.uri : null)); + }).catch(error => { + dispatch(expandTrendingStatusesFail(error)); + }); +}; + +export const expandTrendingStatusesRequest = () => ({ + type: TRENDS_STATUSES_EXPAND_REQUEST, +}); + +export const expandTrendingStatusesSuccess = (statuses, next) => ({ + type: TRENDS_STATUSES_EXPAND_SUCCESS, + statuses, + next, +}); + +export const expandTrendingStatusesFail = error => ({ + type: TRENDS_STATUSES_EXPAND_FAIL, + error, +}); diff --git a/app/javascript/mastodon/components/common_counter.js b/app/javascript/mastodon/components/common_counter.js index e10cd9b76..dd9b62de9 100644 --- a/app/javascript/mastodon/components/common_counter.js +++ b/app/javascript/mastodon/components/common_counter.js @@ -25,7 +25,7 @@ export function counterRenderer(counterType, isBold = true) { return (displayNumber, pluralReady) => (
- +
); } else if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 48ec49d81..2830bee29 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -38,7 +38,7 @@ const messages = defineMessages({ showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' }, enableNotifications: { id: 'account.enable_notifications', defaultMessage: 'Notify me when @{name} posts' }, disableNotifications: { id: 'account.disable_notifications', defaultMessage: 'Stop notifying me when @{name} posts' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index 33bea4c17..507b6c895 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -121,8 +121,8 @@ export default class Header extends ImmutablePureComponent { {!hideTabs && (
- - + +
)} diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 37df2818b..5122aec4e 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -45,7 +45,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = }; const RemoteHint = ({ url }) => ( - } /> + } /> ); RemoteHint.propTypes = { @@ -156,7 +156,7 @@ class AccountTimeline extends ImmutablePureComponent { } else if (remote && statusIds.isEmpty()) { emptyMessage = ; } else { - emptyMessage = ; + emptyMessage = ; } const remoteMessage = remote ? : null; diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.js b/app/javascript/mastodon/features/bookmarked_statuses/index.js index cf067d954..8f41b0f95 100644 --- a/app/javascript/mastodon/features/bookmarked_statuses/index.js +++ b/app/javascript/mastodon/features/bookmarked_statuses/index.js @@ -70,7 +70,7 @@ class Bookmarks extends ImmutablePureComponent { const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props; const pinned = !!columnId; - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/compose/components/action_bar.js b/app/javascript/mastodon/features/compose/components/action_bar.js index 07d92bb7e..4ff0b7b94 100644 --- a/app/javascript/mastodon/features/compose/components/action_bar.js +++ b/app/javascript/mastodon/features/compose/components/action_bar.js @@ -6,7 +6,7 @@ import { defineMessages, injectIntl } from 'react-intl'; const messages = defineMessages({ edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js index 599467cdb..1f0e998d3 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js @@ -11,12 +11,12 @@ import Icon from 'mastodon/components/icon'; const messages = defineMessages({ public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, - public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all, shown in public timelines' }, + public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all' }, unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, - unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but not in public timelines' }, - private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, + unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but opted-out of discovery features' }, + private_short: { id: 'privacy.private.short', defaultMessage: 'Followers only' }, private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' }, - direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Mentioned people only' }, direct_long: { id: 'privacy.direct.long', defaultMessage: 'Visible for mentioned users only' }, change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' }, }); @@ -242,7 +242,7 @@ class PrivacyDropdown extends React.PureComponent { if (!this.props.noDirect) { this.options.push( - { icon: 'envelope', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) }, + { icon: 'at', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) }, ); } } diff --git a/app/javascript/mastodon/features/compose/components/search_results.js b/app/javascript/mastodon/features/compose/components/search_results.js index 9b3d01cfd..e2493a6c6 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.js +++ b/app/javascript/mastodon/features/compose/components/search_results.js @@ -91,7 +91,7 @@ class SearchResults extends ImmutablePureComponent { count += results.get('statuses').size; statuses = (
-
+
{results.get('statuses').map(statusId => )} @@ -101,10 +101,10 @@ class SearchResults extends ImmutablePureComponent { } else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) { statuses = (
-
+
- +
); diff --git a/app/javascript/mastodon/features/compose/containers/warning_container.js b/app/javascript/mastodon/features/compose/containers/warning_container.js index bf0660ea9..571d1d838 100644 --- a/app/javascript/mastodon/features/compose/containers/warning_container.js +++ b/app/javascript/mastodon/features/compose/containers/warning_container.js @@ -42,13 +42,13 @@ const WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning } if (hashtagWarning) { - return } />; + return } />; } if (directMessageWarning) { const message = ( - + ); diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 663dd324f..711a55904 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -26,7 +26,7 @@ const messages = defineMessages({ community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, - compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new toot' }, + compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new post' }, logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' }, }); diff --git a/app/javascript/mastodon/features/direct_timeline/index.js b/app/javascript/mastodon/features/direct_timeline/index.js index 68523666c..debb2d721 100644 --- a/app/javascript/mastodon/features/direct_timeline/index.js +++ b/app/javascript/mastodon/features/direct_timeline/index.js @@ -76,7 +76,7 @@ class DirectTimeline extends React.PureComponent { return (
} emptyMessage={} />
diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js index 31f59cd84..27ba4e7f4 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.js +++ b/app/javascript/mastodon/features/directory/components/account_card.js @@ -191,7 +191,7 @@ class AccountCard extends ImmutablePureComponent {
- +
diff --git a/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js index e4519a13e..70694ab6d 100644 --- a/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js +++ b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js @@ -124,7 +124,7 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo for (let id in aPool) { let emoji = aPool[id], { search } = emoji, - sub = value.substr(0, length), + sub = value.slice(0, length), subIndex = search.indexOf(sub); if (subIndex !== -1) { diff --git a/app/javascript/mastodon/features/explore/results.js b/app/javascript/mastodon/features/explore/results.js index 339f883c5..1286020f5 100644 --- a/app/javascript/mastodon/features/explore/results.js +++ b/app/javascript/mastodon/features/explore/results.js @@ -100,7 +100,7 @@ class Results extends React.PureComponent { - +
diff --git a/app/javascript/mastodon/features/explore/statuses.js b/app/javascript/mastodon/features/explore/statuses.js index 4e5530d84..33e5b4179 100644 --- a/app/javascript/mastodon/features/explore/statuses.js +++ b/app/javascript/mastodon/features/explore/statuses.js @@ -4,11 +4,13 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import StatusList from 'mastodon/components/status_list'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import { fetchTrendingStatuses } from 'mastodon/actions/trends'; +import { fetchTrendingStatuses, expandTrendingStatuses } from 'mastodon/actions/trends'; +import { debounce } from 'lodash'; const mapStateToProps = state => ({ statusIds: state.getIn(['status_lists', 'trending', 'items']), isLoading: state.getIn(['status_lists', 'trending', 'isLoading'], true), + hasMore: !!state.getIn(['status_lists', 'trending', 'next']), }); export default @connect(mapStateToProps) @@ -17,6 +19,7 @@ class Statuses extends React.PureComponent { static propTypes = { statusIds: ImmutablePropTypes.list, isLoading: PropTypes.bool, + hasMore: PropTypes.bool, multiColumn: PropTypes.bool, dispatch: PropTypes.func.isRequired, }; @@ -26,8 +29,13 @@ class Statuses extends React.PureComponent { dispatch(fetchTrendingStatuses()); } + handleLoadMore = debounce(() => { + const { dispatch } = this.props; + dispatch(expandTrendingStatuses()); + }, 300, { leading: true }) + render () { - const { isLoading, statusIds, multiColumn } = this.props; + const { isLoading, hasMore, statusIds, multiColumn } = this.props; const emptyMessage = ; @@ -36,8 +44,9 @@ class Statuses extends React.PureComponent { trackScroll statusIds={statusIds} scrollKey='explore-statuses' - hasMore={false} + hasMore={hasMore} isLoading={isLoading} + onLoadMore={this.handleLoadMore} emptyMessage={emptyMessage} bindToDocument={!multiColumn} withCounters diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.js index 9606a144c..73631946a 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.js +++ b/app/javascript/mastodon/features/favourited_statuses/index.js @@ -70,7 +70,7 @@ class Favourites extends ImmutablePureComponent { const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props; const pinned = !!columnId; - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js index ac94ae18a..f060068a4 100644 --- a/app/javascript/mastodon/features/favourites/index.js +++ b/app/javascript/mastodon/features/favourites/index.js @@ -59,7 +59,7 @@ class Favourites extends ImmutablePureComponent { ); } - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index a9000a3d9..65cee7498 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -30,7 +30,7 @@ const messages = defineMessages({ blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, + pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' }, personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' }, @@ -130,7 +130,7 @@ class GettingStarted extends ImmutablePureComponent { } navItems.push( - , + , , , , diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.js b/app/javascript/mastodon/features/keyboard_shortcuts/index.js index d278d2b26..8f1631d82 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.js +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.js @@ -86,7 +86,7 @@ class KeyboardShortcuts extends ImmutablePureComponent { alt+n - + alt+x @@ -134,7 +134,7 @@ class KeyboardShortcuts extends ImmutablePureComponent { g+p - + g+u diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index 84db04430..1cdb24086 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -145,7 +145,7 @@ export default class ColumnSettings extends React.PureComponent {
- +
diff --git a/app/javascript/mastodon/features/pinned_statuses/index.js b/app/javascript/mastodon/features/pinned_statuses/index.js index f32bd6d23..67b13f10a 100644 --- a/app/javascript/mastodon/features/pinned_statuses/index.js +++ b/app/javascript/mastodon/features/pinned_statuses/index.js @@ -10,7 +10,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; const messages = defineMessages({ - heading: { id: 'column.pins', defaultMessage: 'Pinned toot' }, + heading: { id: 'column.pins', defaultMessage: 'Pinned post' }, }); const mapStateToProps = state => ({ diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js index 0fbd09415..7704a049f 100644 --- a/app/javascript/mastodon/features/reblogs/index.js +++ b/app/javascript/mastodon/features/reblogs/index.js @@ -59,7 +59,7 @@ class Reblogs extends ImmutablePureComponent { ); } - const emptyMessage = ; + const emptyMessage = ; return ( diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.js index a36dc81b1..9215b3f51 100644 --- a/app/javascript/mastodon/features/report/category.js +++ b/app/javascript/mastodon/features/report/category.js @@ -1,5 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; import Option from './components/option'; @@ -17,11 +19,17 @@ const messages = defineMessages({ account: { id: 'report.category.title_account', defaultMessage: 'profile' }, }); -export default @injectIntl +const mapStateToProps = state => ({ + rules: state.get('rules'), +}); + +export default @connect(mapStateToProps) +@injectIntl class Category extends React.PureComponent { static propTypes = { onNextStep: PropTypes.func.isRequired, + rules: ImmutablePropTypes.list, category: PropTypes.string, onChangeCategory: PropTypes.func.isRequired, startedFrom: PropTypes.oneOf(['status', 'account']), @@ -53,13 +61,17 @@ class Category extends React.PureComponent { }; render () { - const { category, startedFrom, intl } = this.props; + const { category, startedFrom, rules, intl } = this.props; - const options = [ + const options = rules.size > 0 ? [ 'dislike', 'spam', 'violation', 'other', + ] : [ + 'dislike', + 'spam', + 'other', ]; return ( diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 3f3ec0e71..edaff959e 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -220,7 +220,6 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); - menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick }); menu.push(null); if (relationship && relationship.get('muting')) { diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index 90f9ae7ae..3d81bcb29 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -32,7 +32,7 @@ const trim = (text, len) => { return text; } - return text.substring(0, cut) + (text.length > len ? '…' : ''); + return text.slice(0, cut) + (text.length > len ? '…' : ''); }; const domParser = new DOMParser(); diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index eb42115b7..fe4ed5d77 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -16,7 +16,7 @@ const NavigationPanel = () => ( - + diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 2d0136992..1ee038223 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -14,6 +14,7 @@ import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../act import { expandHomeTimeline } from '../../actions/timelines'; import { expandNotifications } from '../../actions/notifications'; import { fetchFilters } from '../../actions/filters'; +import { fetchRules } from '../../actions/rules'; import { clearHeight } from '../../actions/height_cache'; import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers'; @@ -368,6 +369,7 @@ class UI extends React.PureComponent { this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandNotifications()); setTimeout(() => this.props.dispatch(fetchFilters()), 500); + setTimeout(() => this.props.dispatch(fetchRules()), 3000); this.hotkeys.__mousetrap__.stopCallback = (e, element) => { return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName); diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js index 8d47e479a..4f90e955f 100644 --- a/app/javascript/mastodon/features/video/index.js +++ b/app/javascript/mastodon/features/video/index.js @@ -91,7 +91,7 @@ export const fileNameFromURL = str => { const pathname = url.pathname; const index = pathname.lastIndexOf('/'); - return pathname.substring(index + 1); + return pathname.slice(index + 1); }; export default @injectIntl diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 42dc3655b..449bcefd0 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,59 +1,59 @@ { - "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Add or Remove from lists", + "account.account_note_header": "Nota", + "account.add_or_remove_from_list": "Voeg by of verwyder van lyste", "account.badges.bot": "Bot", - "account.badges.group": "Group", - "account.block": "Block @{name}", - "account.block_domain": "Block domain {domain}", - "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", - "account.direct": "Direct message @{name}", + "account.badges.group": "Groep", + "account.block": "Blok @{name}", + "account.block_domain": "Blokeer alles van {domain}", + "account.blocked": "Geblok", + "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", + "account.cancel_follow_request": "Kanselleer volgversoek", + "account.direct": "Stuur direkte boodskap aan @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", - "account.edit_profile": "Edit profile", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Feature on profile", - "account.follow": "Follow", - "account.followers": "Followers", - "account.followers.empty": "No one follows this user yet.", + "account.edit_profile": "Redigeer profiel", + "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", + "account.endorse": "Beklemtoon op profiel", + "account.follow": "Volg", + "account.followers": "Volgelinge", + "account.followers.empty": "Niemand volg tans hierdie gebruiker nie.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", - "account.follows_you": "Follows you", - "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.follows_you": "Volg jou", + "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", + "account.joined": "{date} aangesluit", + "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", - "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", - "account.mute": "Mute @{name}", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", + "account.mention": "Noem @{name}", + "account.moved_to": "{name} is geskuif na:", + "account.mute": "Demp @{name}", + "account.mute_notifications": "Demp kennisgewings van @{name}", + "account.muted": "Gedemp", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", - "account.report": "Report @{name}", + "account.report": "Rapporteer @{name}", "account.requested": "Awaiting approval", - "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", + "account.share": "Deel @{name} se profiel", + "account.show_reblogs": "Wys hupstote vanaf @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", - "account.unblock": "Unblock @{name}", - "account.unblock_domain": "Unblock domain {domain}", - "account.unblock_short": "Unblock", - "account.unendorse": "Don't feature on profile", + "account.unblock": "Ontblok @{name}", + "account.unblock_domain": "Ontblok domein {domain}", + "account.unblock_short": "Ontblok", + "account.unendorse": "Moenie beklemtoon op profiel nie", "account.unfollow": "Unfollow", - "account.unmute": "Unmute @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", - "account.unmute_short": "Unmute", + "account.unmute": "Ontdemp @{name}", + "account.unmute_notifications": "Ontdemp kennisgewings vanaf @{name}", + "account.unmute_short": "Ontdemp", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Gemiddeld", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "admin.dashboard.retention.cohort_size": "Nuwe gebruikers", + "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oops!", @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 6580f5d44..ac93bf706 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -2,8 +2,8 @@ "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", "account.badges.bot": "روبوت", - "account.badges.group": "مجموعة", - "account.block": "حظر @{name}", + "account.badges.group": "فريق", + "account.block": "احجب @{name}", "account.block_domain": "حظر اسم النِّطاق {domain}", "account.blocked": "محظور", "account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي", @@ -11,14 +11,14 @@ "account.direct": "مراسلة @{name} بشكل مباشر", "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}", "account.domain_blocked": "اسم النِّطاق محظور", - "account.edit_profile": "تحرير الملف الشخصي", + "account.edit_profile": "تعديل الملف الشخصي", "account.enable_notifications": "أشعرني عندما ينشر @{name}", "account.endorse": "أوصِ به على صفحتك الشخصية", - "account.follow": "المُتابعة", - "account.followers": "المُتابِعون", - "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم حتى الآن.", + "account.follow": "متابعة", + "account.followers": "مُتابِعون", + "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.", "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two{مُتابعانِ اِثنان} few{{counter} مُتابِعين} many{{counter} مُتابِعًا} other {{counter} مُتابع}}", - "account.following": "Following", + "account.following": "الإشتراكات", "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}", "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", @@ -35,18 +35,18 @@ "account.posts": "منشورات", "account.posts_with_replies": "المنشورات والرُدود", "account.report": "الإبلاغ عن @{name}", - "account.requested": "في اِنتظر القُبول. اِنقُر لإلغاء طلب المُتابعة", + "account.requested": "في انتظار القبول. اضغط لإلغاء طلب المُتابعة", "account.share": "مُشاركة الملف الشخصي لـ @{name}", "account.show_reblogs": "عرض مشاركات @{name}", - "account.statuses_counter": "{count, plural, zero {لَا تَبويقات} one {تَبويقةٌ واحدة} two {تَبويقَتانِ اِثنتان} few {{counter} تَبويقات} many {{counter} تَبويقتًا} other {{counter} تَبويقة}}", + "account.statuses_counter": "{count, plural, zero {لَا منشورات} one {منشور واحد} two {منشوران إثنان} few {{counter} منشورات} many {{counter} منشورًا} other {{counter} منشور}}", "account.unblock": "إلغاء الحَظر عن @{name}", "account.unblock_domain": "إلغاء الحَظر عن النِّطاق {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "ألغ الحجب", "account.unendorse": "لا تُرَوِّج لهُ في الملف الشخصي", "account.unfollow": "إلغاء المُتابعة", "account.unmute": "إلغاء الكَتم عن @{name}", "account.unmute_notifications": "إلغاء كَتم الإشعارات عن @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "إلغاء الكتم", "account_note.placeholder": "اضغط لإضافة مُلاحظة", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -70,7 +70,7 @@ "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", "column.community": "الخيط الزمني المحلي", - "column.direct": "الرسائل المباشرة", + "column.conversations": "المحادثات", "column.directory": "تَصَفُّحُ المَلفات الشخصية", "column.domain_blocks": "النِّطاقَاتُ المَحظُورَة", "column.favourites": "المُفَضَّلَة", @@ -78,7 +78,7 @@ "column.home": "الرئيسية", "column.lists": "القوائم", "column.mutes": "المُستَخدِمون المَكتومون", - "column.notifications": "الإشعارَات", + "column.notifications": "الإشعارات", "column.pins": "المنشورات المُثَبَّتَة", "column.public": "الخَطُّ الزَّمَنِيُّ المُوَحَّد", "column_back_button.label": "العودة", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "المحلي فقط", "community.column_settings.media_only": "الوسائط فقط", "community.column_settings.remote_only": "عن بُعد فقط", - "compose_form.direct_message_warning": "سوف تُرسَل هذه التَّبويقة فقط للمُستَخدِمين المَذكورين.", "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.", "compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).", "compose_form.lock_disclaimer.lock": "مُقفَل", @@ -166,7 +166,7 @@ "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.", "empty_column.bookmarked_statuses": "ليس لديك أية منشورات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.", "empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!", - "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.", + "empty_column.conversations": "عندما ترسل أو تستلم منشورًا محصورٌا على الأشخاص المشار إليهم فيه، سيظهر هنا.", "empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "للترقية", "keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة", "keyboard_shortcuts.compose": "للتركيز على نافذة تحرير النصوص", + "keyboard_shortcuts.conversations": "لفتح عمود المحادثات", "keyboard_shortcuts.description": "الوصف", - "keyboard_shortcuts.direct": "لفتح عمود الرسائل المباشرة", "keyboard_shortcuts.down": "للانتقال إلى أسفل القائمة", "keyboard_shortcuts.enter": "لفتح المنشور", "keyboard_shortcuts.favourite": "للإضافة إلى المفضلة", @@ -290,11 +290,10 @@ "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط العام المحلي", "navigation_bar.compose": "لتحرير منشور جديد", - "navigation_bar.direct": "الرسائل المباشِرة", "navigation_bar.discover": "اكتشف", "navigation_bar.domain_blocks": "النطاقات المخفية", "navigation_bar.edit_profile": "عدّل الملف التعريفي", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "استكشف", "navigation_bar.favourites": "المفضلة", "navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.follow_requests": "طلبات المتابعة", @@ -309,16 +308,16 @@ "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.security": "الأمان", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "أنشأ {name} حسابًا", "notification.favourite": "أُعجِب {name} بمنشورك", "notification.follow": "{name} يتابعك", "notification.follow_request": "لقد طلب {name} متابعتك", "notification.mention": "{name} ذكرك", "notification.own_poll": "انتهى استطلاعك للرأي", - "notification.poll": "لقد إنتها تصويت شاركت فيه", + "notification.poll": "لقد انتهى استطلاع رأي شاركتَ فيه", "notification.reblog": "قام {name} بمشاركة منشورك", "notification.status": "{name} نشر للتو", - "notification.update": "{name} edited a post", + "notification.update": "عدّلَ {name} منشورًا", "notifications.clear": "امسح الإخطارات", "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟", "notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "إزالة استطلاع الرأي", "privacy.change": "اضبط خصوصية المنشور", "privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط", - "privacy.direct.short": "مباشر", + "privacy.direct.short": "للمشار إليهم فقط", "privacy.private.long": "أنشر لمتابعيك فقط", - "privacy.private.short": "لمتابعيك فقط", - "privacy.public.long": "أنشر على الخيوط العامة", + "privacy.private.short": "للمتابِعين فقط", + "privacy.public.long": "مرئي للكل", "privacy.public.short": "للعامة", - "privacy.unlisted.long": "لا تقم بإدراجه على الخيوط العامة", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "غير مدرج", "refresh": "أنعِش", "regeneration_indicator.label": "جارٍ التحميل…", @@ -408,9 +407,9 @@ "report.placeholder": "تعليقات إضافية", "report.reasons.dislike": "لايعجبني", "report.reasons.dislike_description": "ألا ترغب برؤيته", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.other": "شيء آخر", + "report.reasons.other_description": "لا تندرج هذه المشكلة ضمن فئات أخرى", + "report.reasons.spam": "إنها رسالة مزعجة", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "ينتهك قواعد الخادم", "report.reasons.violation_description": "You are aware that it breaks specific rules", @@ -456,8 +455,8 @@ "status.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", "status.filtered": "مُصفّى", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "أنشأه {name} {date}", + "status.history.edited": "عدله {name} {date}", "status.load_more": "حمّل المزيد", "status.media_hidden": "الصورة مستترة", "status.mention": "أذكُر @{name}", @@ -470,7 +469,7 @@ "status.read_more": "اقرأ المزيد", "status.reblog": "رَقِّي", "status.reblog_private": "القيام بالترقية إلى الجمهور الأصلي", - "status.reblogged_by": "رقّاه {name}", + "status.reblogged_by": "شارَكَه {name}", "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "status.redraft": "إزالة و إعادة الصياغة", "status.remove_bookmark": "احذفه مِن الفواصل المرجعية", @@ -515,6 +514,7 @@ "upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.", "upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع", "upload_form.description": "وصف للمعاقين بصريا", + "upload_form.description_missing": "لم يُضف وصف", "upload_form.edit": "تعديل", "upload_form.thumbnail": "غيّر الصورة المصغرة", "upload_form.undo": "حذف", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index b4aad9ab6..67d097def 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloquiaos", "column.bookmarks": "Marcadores", "column.community": "Llinia temporal llocal", - "column.direct": "Mensaxes direutos", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Dominios anubríos", "column.favourites": "Favoritos", @@ -92,9 +92,9 @@ "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": "Saber más", - "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", "compose_form.placeholder": "¿En qué pienses?", @@ -166,11 +166,11 @@ "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nuengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va amosase equí.", "empty_column.hashtag": "Entá nun hai nada nesta etiqueta.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "pa compartir un toot", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "Enfocar l'área de composición", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "Abrir la columna de los mensaxes direutos", "keyboard_shortcuts.down": "pa baxar na llista", "keyboard_shortcuts.enter": "p'abrir estaos", "keyboard_shortcuts.favourite": "p'amestar a Favoritos", @@ -289,8 +289,7 @@ "navigation_bar.blocks": "Usuarios bloquiaos", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Llinia temporal llocal", - "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Mensaxes direutos", + "navigation_bar.compose": "Compose new post", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Dominios anubríos", "navigation_bar.edit_profile": "Editar el perfil", @@ -369,10 +368,10 @@ "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", - "privacy.private.short": "Namái siguidores", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Nun apaez nes llinies temporales públiques", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nun llistar", "refresh": "Refresh", "regeneration_indicator.label": "Cargando…", @@ -404,7 +403,7 @@ "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar ellí tamién una copia anónima del informe?", "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", @@ -412,7 +411,7 @@ "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "It's spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", + "report.reasons.violation": "Incumple les regles del sirvidor", "report.reasons.violation_description": "You are aware that it breaks specific rules", "report.rules.subtitle": "Select all that apply", "report.rules.title": "Which rules are being violated?", @@ -420,7 +419,7 @@ "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Unviar", "report.target": "Report {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action": "Equí tan les opciones pa controlar qué ver en Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", @@ -502,7 +501,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.statuses": "Older toots", + "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", "trends.trending_now": "Trending now", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", @@ -515,6 +514,7 @@ "upload_error.poll": "La xuba de ficheros nun ta permitida con encuestes.", "upload_form.audio_description": "Descripción pa persones con perda auditiva", "upload_form.description": "Descripción pa discapacitaos visuales", + "upload_form.description_missing": "No description added", "upload_form.edit": "Editar", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Desaniciar", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index e65681394..42cd08f1f 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -70,7 +70,7 @@ "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална емисия", - "column.direct": "Директни съобщения", + "column.conversations": "Conversations", "column.directory": "Преглед на профили", "column.domain_blocks": "Hidden domains", "column.favourites": "Любими", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Media only", "community.column_settings.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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.", "compose_form.lock_disclaimer": "Вашият акаунт не е {locked}. Всеки може да ви последва, за да прегледа вашите публикации само за последователи.", "compose_form.lock_disclaimer.lock": "заключено", @@ -166,7 +166,7 @@ "empty_column.blocks": "Не сте блокирали потребители все още.", "empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.", "empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!", - "empty_column.direct": "Все още нямате директни съобщения. Когато изпратите или получите някое, то ще се покаже тук.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Все още нямате любими публикации. Когато поставите някоя в любими, тя ще се покаже тук.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "за споделяне", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "за фокусиране на текстовото пространство за композиране", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Описание", - "keyboard_shortcuts.direct": "за отваряне на колона за директни съобщения", "keyboard_shortcuts.down": "за придвижване надолу в списъка", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "за поставяне в любими", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", "navigation_bar.compose": "Композиране на нова публикация", - "navigation_bar.direct": "Директни съобщения", "navigation_bar.discover": "Откриване", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Редактирай профил", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Премахване на анкета", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "Директно", + "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", - "privacy.private.short": "Само за последователи", - "privacy.public.long": "Post to public timelines", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Публично", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Скрито", "refresh": "Опресняване", "regeneration_indicator.label": "Зареждане…", @@ -515,6 +514,7 @@ "upload_error.poll": "Качването на файлове не е позволено с анкети.", "upload_form.audio_description": "Опишете за хора със загуба на слуха", "upload_form.description": "Опишете за хора със зрителни увреждания", + "upload_form.description_missing": "No description added", "upload_form.edit": "Редакция", "upload_form.thumbnail": "Промяна на миниизображението", "upload_form.undo": "Отмяна", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 3542c4e46..b009d5964 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -70,7 +70,7 @@ "column.blocks": "যাদের ব্লক করা হয়েছে", "column.bookmarks": "বুকমার্ক", "column.community": "স্থানীয় সময়সারি", - "column.direct": "সরাসরি লেখা", + "column.conversations": "Conversations", "column.directory": "প্রোফাইল ব্রাউজ করুন", "column.domain_blocks": "লুকোনো ডোমেনগুলি", "column.favourites": "পছন্দের গুলো", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "শুধুমাত্র স্থানীয়", "community.column_settings.media_only": "শুধুমাত্র ছবি বা ভিডিও", "community.column_settings.remote_only": "শুধুমাত্র দূরবর্তী", - "compose_form.direct_message_warning": "শুধুমাত্র যাদেরকে উল্লেখ করা হয়েছে তাদেরকেই এই টুটটি পাঠানো হবে ।", "compose_form.direct_message_warning_learn_more": "আরো জানুন", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "কোনো হ্যাশট্যাগের ভেতরে এই টুটটি থাকবেনা কারণ এটি তালিকাবহির্ভূত। শুধুমাত্র প্রকাশ্য ঠোটগুলো হ্যাশট্যাগের ভেতরে খুঁজে পাওয়া যাবে।", "compose_form.lock_disclaimer": "আপনার নিবন্ধনে তালা দেওয়া নেই, যে কেও আপনাকে অনুসরণ করতে পারবে এবং অনুশারকদের জন্য লেখা দেখতে পারবে।", "compose_form.lock_disclaimer.lock": "তালা দেওয়া", @@ -166,7 +166,7 @@ "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের ব্লক করেন নি।", "empty_column.bookmarked_statuses": "আপনার কাছে এখনও কোনও বুকমার্কড টুট নেই। আপনি যখন একটি বুকমার্ক করেন, এটি এখানে প্রদর্শিত হবে।", "empty_column.community": "স্থানীয় সময়রেখাতে কিছু নেই। প্রকাশ্যভাবে কিছু লিখে লেখালেখির উদ্বোধন করে ফেলুন!", - "empty_column.direct": "আপনার কাছে সরাসরি পাঠানো কোনো লেখা নেই। যদি কেও পাঠায়, সেটা এখানে দেখা যাবে।", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "এখনও কোনও লুকানো ডোমেন নেই।", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "আপনার পছন্দের কোনো টুট এখনো নেই। আপনি কোনো লেখা পছন্দের হিসেবে চিহ্নিত করলে এখানে পাওয়া যাবে।", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "সমর্থন করতে", "keyboard_shortcuts.column": "কোনো কলামএ কোনো লেখা ফোকাস করতে", "keyboard_shortcuts.compose": "লেখা সম্পদনার জায়গায় ফোকাস করতে", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "বিবরণ", - "keyboard_shortcuts.direct": "সরাসরি পাঠানো লেখা দেখতে", "keyboard_shortcuts.down": "তালিকার ভেতরে নিচে যেতে", "keyboard_shortcuts.enter": "অবস্থা দেখতে", "keyboard_shortcuts.favourite": "পছন্দের দেখতে", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "বুকমার্ক", "navigation_bar.community_timeline": "স্থানীয় সময়রেখা", "navigation_bar.compose": "নতুন টুট লিখুন", - "navigation_bar.direct": "সরাসরি লেখাগুলি", "navigation_bar.discover": "ঘুরে দেখুন", "navigation_bar.domain_blocks": "লুকানো ডোমেনগুলি", "navigation_bar.edit_profile": "নিজের পাতা সম্পাদনা করতে", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "নির্বাচন বাদ দিতে", "privacy.change": "লেখার গোপনীয়তা অবস্থা ঠিক করতে", "privacy.direct.long": "শুধুমাত্র উল্লেখিত ব্যবহারকারীদের কাছে লিখতে", - "privacy.direct.short": "সরাসরি", + "privacy.direct.short": "Direct", "privacy.private.long": "শুধুমাত্র আপনার অনুসরণকারীদের লিখতে", - "privacy.private.short": "শুধুমাত্র অনুসরণকারীদের জন্য", - "privacy.public.long": "সর্বজনীন প্রকাশ্য সময়রেখাতে লিখতে", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "সর্বজনীন প্রকাশ্য", - "privacy.unlisted.long": "সর্বজনীন প্রকাশ্য সময়রেখাতে না দেখাতে", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "প্রকাশ্য নয়", "refresh": "সতেজ করা", "regeneration_indicator.label": "আসছে…", @@ -515,6 +514,7 @@ "upload_error.poll": "নির্বাচনক্ষেত্রে কোনো ফাইল যুক্ত করা যাবেনা।", "upload_form.audio_description": "শ্রবণশক্তি লোকদের জন্য বর্ণনা করুন", "upload_form.description": "যারা দেখতে পায়না তাদের জন্য এটা বর্ণনা করতে", + "upload_form.description_missing": "No description added", "upload_form.edit": "সম্পাদন", "upload_form.thumbnail": "থাম্বনেল পরিবর্তন করুন", "upload_form.undo": "মুছে ফেলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 7cec67083..5499130f5 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -70,7 +70,7 @@ "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", "column.community": "Red-amzer lec'hel", - "column.direct": "Kemennadoù prevez", + "column.conversations": "Conversations", "column.directory": "Mont a-dreuz ar profiloù", "column.domain_blocks": "Domani berzet", "column.favourites": "Muiañ-karet", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Nemet lec'hel", "community.column_settings.media_only": "Nemet Mediaoù", "community.column_settings.remote_only": "Nemet a-bell", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal heuliañ ac'hanoc'h evit gwelout ho toudoù prevez.", "compose_form.lock_disclaimer.lock": "prennet", @@ -166,7 +166,7 @@ "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", - "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", @@ -187,12 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Klaskit azbevaat ar bajenn. Ma n'ez a ket en-dro e c'hallit klask ober gant Mastodon dre ur merdeer disheñvel pe dre an arload genidik.", "errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver", "errors.unexpected_crash.report_issue": "Danevellañ ur fazi", - "explore.search_results": "Search results", + "explore.search_results": "Disoc'hoù an enklask", "explore.suggested_follows": "For you", - "explore.title": "Explore", + "explore.title": "Ergerzhit", "explore.trending_links": "News", "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.trending_tags": "Gerioù-klik", "follow_recommendations.done": "Graet", "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.", "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "da skignañ", "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskrivadur", - "keyboard_shortcuts.direct": "Digeriñ bann ar c'hemennadennoù prevez", "keyboard_shortcuts.down": "Diskennañ er roll", "keyboard_shortcuts.enter": "evit digeriñ un toud", "keyboard_shortcuts.favourite": "Lakaat an toud evel muiañ-karet", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", "navigation_bar.compose": "Skrivañ un toud nevez", - "navigation_bar.direct": "Kemennadoù prevez", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", "navigation_bar.edit_profile": "Aozañ ar profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Dilemel ar sontadeg", "privacy.change": "Kemmañ gwelidigezh ar statud", "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken", - "privacy.direct.short": "War-eeun", + "privacy.direct.short": "Direct", "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken", - "privacy.private.short": "Ar re a heuilh ac'hanon hepken", - "privacy.public.long": "Embann war ar redoù-amzer foran", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Na embann war ar redoù-amzer foran", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anlistennet", "refresh": "Freskaat", "regeneration_indicator.label": "O kargañ…", @@ -515,6 +514,7 @@ "upload_error.poll": "Pellgargañ restroù n'eo ket aotreet gant sontadegoù.", "upload_form.audio_description": "Diskrivañ evit tud a zo kollet o c'hlev", "upload_form.description": "Diskrivañ evit tud a zo kollet o gweled", + "upload_form.description_missing": "No description added", "upload_form.edit": "Aozañ", "upload_form.thumbnail": "Kemmañ ar velvenn", "upload_form.undo": "Dilemel", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index de4b50397..aa760cbe9 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,6 +1,6 @@ { "account.account_note_header": "Nota", - "account.add_or_remove_from_list": "Afegir o Treure de les llistes", + "account.add_or_remove_from_list": "Afegeix o treu de les llistes", "account.badges.bot": "Bot", "account.badges.group": "Grup", "account.block": "Bloqueja @{name}", @@ -8,7 +8,7 @@ "account.blocked": "Bloquejat", "account.browse_more_on_origin_server": "Navega més en el perfil original", "account.cancel_follow_request": "Anul·la la sol·licitud de seguiment", - "account.direct": "Missatge directe @{name}", + "account.direct": "Envia missatge directe a @{name}", "account.disable_notifications": "Deixa de notificar-me les publicacions de @{name}", "account.domain_blocked": "Domini bloquejat", "account.edit_profile": "Edita el perfil", @@ -18,49 +18,49 @@ "account.followers": "Seguidors", "account.followers.empty": "Encara ningú no segueix aquest usuari.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}", - "account.following": "Seguint", + "account.following": "Seguits", "account.following_counter": "{count, plural, other {{counter} Seguint}}", - "account.follows.empty": "Aquest usuari encara no segueix a ningú.", + "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", - "account.joined": "Unit des de {date}", + "account.joined": "Membre des de {date}", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", "account.media": "Mèdia", "account.mention": "Esmenta @{name}", - "account.moved_to": "{name} s'ha mogut a:", + "account.moved_to": "{name} s'ha traslladat a:", "account.mute": "Silencia @{name}", - "account.mute_notifications": "Notificacions silenciades de @{name}", + "account.mute_notifications": "Silencia les notificacions de @{name}", "account.muted": "Silenciat", "account.posts": "Publicacions", "account.posts_with_replies": "Publicacions i respostes", - "account.report": "Informar sobre @{name}", - "account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment", + "account.report": "Informa sobre @{name}", + "account.requested": "Esperant aprovació. Fes clic per cancel·lar la petició de seguiment", "account.share": "Comparteix el perfil de @{name}", "account.show_reblogs": "Mostra els impulsos de @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}", + "account.statuses_counter": "{count, plural, one {{counter} Publicació} other {{counter} Publicacions}}", "account.unblock": "Desbloqueja @{name}", "account.unblock_domain": "Desbloqueja el domini {domain}", "account.unblock_short": "Desbloqueja", - "account.unendorse": "No recomanar en el perfil", + "account.unendorse": "No recomanis en el perfil", "account.unfollow": "Deixa de seguir", - "account.unmute": "Treure silenci de @{name}", + "account.unmute": "Deixa de silenciar @{name}", "account.unmute_notifications": "Activar notificacions de @{name}", "account.unmute_short": "Deixa de silenciar", "account_note.placeholder": "Fes clic per afegir una nota", - "admin.dashboard.daily_retention": "Ràtio de retenció per dia després del registre", - "admin.dashboard.monthly_retention": "Ràtio de retenció per mes després del registre", + "admin.dashboard.daily_retention": "Ràtio de retenció d'usuaris nous, per dia, després del registre", + "admin.dashboard.monthly_retention": "Ràtio de retenció d'usuaris nous, per mes, després del registre", "admin.dashboard.retention.average": "Mitjana", - "admin.dashboard.retention.cohort": "Registres mes", + "admin.dashboard.retention.cohort": "Mes del registre", "admin.dashboard.retention.cohort_size": "Nous usuaris", - "alert.rate_limited.message": "Si us plau prova-ho després de {retry_time, time, medium}.", + "alert.rate_limited.message": "Si us plau, torna-ho a provar després de {retry_time, time, medium}.", "alert.rate_limited.title": "Límit de freqüència", "alert.unexpected.message": "S'ha produït un error inesperat.", "alert.unexpected.title": "Vaja!", "announcement.announcement": "Anunci", "attachments_list.unprocessed": "(sense processar)", "autosuggest_hashtag.per_week": "{count} per setmana", - "boost_modal.combo": "Pots prémer {combo} per saltar-te això el proper cop", + "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", "bundle_column_error.retry": "Torna-ho a provar", "bundle_column_error.title": "Error de connexió", @@ -70,8 +70,8 @@ "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", "column.community": "Línia de temps local", - "column.direct": "Missatges directes", - "column.directory": "Navega els perfils", + "column.conversations": "Converses", + "column.directory": "Navega pels perfils", "column.domain_blocks": "Dominis bloquejats", "column.favourites": "Favorits", "column.follow_requests": "Peticions per a seguir-te", @@ -92,50 +92,50 @@ "community.column_settings.local_only": "Només local", "community.column_settings.media_only": "Només multimèdia", "community.column_settings.remote_only": "Només remot", - "compose_form.direct_message_warning": "Aquesta publicació només serà enviat als usuaris esmentats.", - "compose_form.direct_message_warning_learn_more": "Aprèn més", - "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta ja que no està llistada. Només les publicacions públiques poden ser cercades per etiqueta.", - "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges només a seguidors.", + "compose_form.direct_message_warning_learn_more": "Més informació", + "compose_form.encryption_warning": "Les publicacions a Mastodon no estant xifrades punt a punt. No comparteixis informació perillosa mitjançant Mastodon.", + "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta, ja que no està llistada. Només les publicacions públiques es poden cercar per etiqueta.", + "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges només per a seguidors.", "compose_form.lock_disclaimer.lock": "bloquejat", - "compose_form.placeholder": "En què penses?", - "compose_form.poll.add_option": "Afegir una opció", + "compose_form.placeholder": "Què et passa pel cap?", + "compose_form.poll.add_option": "Afegeix una opció", "compose_form.poll.duration": "Durada de l'enquesta", "compose_form.poll.option_placeholder": "Opció {number}", "compose_form.poll.remove_option": "Elimina aquesta opció", "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre diverses opcions", - "compose_form.poll.switch_to_single": "Canvia l’enquesta per a permetre una única opció", - "compose_form.publish": "Publicar", + "compose_form.poll.switch_to_single": "Canvia l’enquesta per permetre una única opció", + "compose_form.publish": "Publica", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Desa els canvis", - "compose_form.sensitive.hide": "{count, plural, one {Marca mèdia com a sensible} other {Marca mèdia com a sensible}}", - "compose_form.sensitive.marked": "{count, plural, one {Mèdia està marcat com a sensible} other {Mèdia estan marcats com a sensible}}", - "compose_form.sensitive.unmarked": "{count, plural, one {Mèdia no està marcada com a sensible} other {Mèdia no estan marcats com a sensibles}}", - "compose_form.spoiler.marked": "Treu l'avís de contingut", + "compose_form.sensitive.hide": "{count, plural, one {Marca contingut com a sensible} other {Marca contingut com a sensible}}", + "compose_form.sensitive.marked": "{count, plural, one {Contingut marcat com a sensible} other {Contingut marcat com a sensible}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Contingut no marcat com a sensible} other {Contingut no marcat com a sensible}}", + "compose_form.spoiler.marked": "Elimina l'avís de contingut", "compose_form.spoiler.unmarked": "Afegeix avís de contingut", "compose_form.spoiler_placeholder": "Escriu l'avís aquí", "confirmation_modal.cancel": "Cancel·la", "confirmations.block.block_and_report": "Bloqueja i informa", "confirmations.block.confirm": "Bloqueja", - "confirmations.block.message": "Estàs segur que vols bloquejar a {name}?", + "confirmations.block.message": "Segur que vols bloquejar a {name}?", "confirmations.delete.confirm": "Suprimeix", - "confirmations.delete.message": "Estàs segur que vols suprimir aquesta publicació?", + "confirmations.delete.message": "Segur que vols suprimir aquesta publicació?", "confirmations.delete_list.confirm": "Suprimeix", - "confirmations.delete_list.message": "Estàs segur que vols suprimir permanentment aquesta llista?", + "confirmations.delete_list.message": "Segur que vols suprimir permanentment aquesta llista?", "confirmations.discard_edit_media.confirm": "Descarta", - "confirmations.discard_edit_media.message": "Tens canvis no desats de la descripciò de mèdia o previsualització, els vols descartar?", + "confirmations.discard_edit_media.message": "Tens canvis no desats en la descripció del contingut o en la previsualització, els vols descartar?", "confirmations.domain_block.confirm": "Bloqueja el domini sencer", - "confirmations.domain_block.message": "Estàs segur, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs contingut d’aquest domini en cap de les línies de temps ni en les notificacions. Els teus seguidors d’aquest domini seran eliminats.", + "confirmations.domain_block.message": "N'estàs segur del tot que vols bloquejar totalment {domain}? En la majoria dels casos, bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs el contingut d’aquest domini en cap de les línies de temps ni en les notificacions. Els teus seguidors d’aquest domini s'elimiran.", "confirmations.logout.confirm": "Tancar sessió", "confirmations.logout.message": "Segur que vols tancar la sessió?", "confirmations.mute.confirm": "Silencia", - "confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen però encara els permetrà veure les teves i seguir-te.", - "confirmations.mute.message": "Estàs segur que vols silenciar {name}?", - "confirmations.redraft.confirm": "Esborrar i refer", - "confirmations.redraft.message": "Estàs segur que vols esborrar aquesta publicació i tornar a redactar-la? Perdràs tots els impulsos i favorits, i les respostes a la publicació original es quedaran orfes.", + "confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen, però encara els permetrà veure les teves i seguir-te.", + "confirmations.mute.message": "Segur que vols silenciar {name}?", + "confirmations.redraft.confirm": "Esborra'l i reescriure-lo", + "confirmations.redraft.message": "Segur que vols esborrar aquesta publicació i tornar-la a escriure? Perdràs tots els impulsos i els favorits, i les respostes a la publicació original es quedaran orfes.", "confirmations.reply.confirm": "Respon", - "confirmations.reply.message": "Responen ara es sobreescriurà el missatge que estàs editant. Estàs segur que vols continuar?", + "confirmations.reply.message": "Si respons ara, sobreescriuràs el missatge que estàs editant. Segur que vols continuar?", "confirmations.unfollow.confirm": "Deixa de seguir", - "confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?", + "confirmations.unfollow.message": "Segur que vols deixar de seguir {name}?", "conversation.delete": "Elimina la conversa", "conversation.mark_as_read": "Marca com a llegida", "conversation.open": "Veure conversa", @@ -144,7 +144,7 @@ "directory.local": "Només de {domain}", "directory.new_arrivals": "Arribades noves", "directory.recently_active": "Recentment actius", - "embed.instructions": "Incrusta aquest tut al lloc web copiant el codi a continuació.", + "embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.", "embed.preview": "Aquí està quin aspecte tindrà:", "emoji_button.activity": "Activitat", "emoji_button.custom": "Personalitzat", @@ -159,32 +159,32 @@ "emoji_button.search": "Cerca...", "emoji_button.search_results": "Resultats de la cerca", "emoji_button.symbols": "Símbols", - "emoji_button.travel": "Viatges i Llocs", + "emoji_button.travel": "Viatges i llocs", "empty_column.account_suspended": "Compte suspès", - "empty_column.account_timeline": "No hi ha publicacions aquí!", + "empty_column.account_timeline": "Aquí no hi ha publicacions!", "empty_column.account_unavailable": "Perfil no disponible", "empty_column.blocks": "Encara no has bloquejat cap usuari.", - "empty_column.bookmarked_statuses": "Encara no tens desada a marcadors cap publicació. Quan desis una apareixerà aquí.", - "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per a fer rodar la pilota!", - "empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.", + "empty_column.bookmarked_statuses": "Encara no has marcat com publicació com a preferida. Quan en marquis una apareixerà aquí.", + "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per posar-ho tot en marxa!", + "empty_column.conversations": "Cada vegada que envies o reps una publicació que és només visible per la gent que hi has mencionat en ella, serà mostrada aquí.", "empty_column.domain_blocks": "Encara no hi ha dominis bloquejats.", - "empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Verifica-ho més tard!", - "empty_column.favourited_statuses": "Encara no has afavorit cap publicació. Quan ho facis, apareixerà aquí.", - "empty_column.favourites": "Ningú no ha afavorit aquesta publicació encara. Quan algú ho faci, apareixerà aquí.", - "empty_column.follow_recommendations": "Sembla que no es poden generar sugerencies per a tu. Pots provar d'emprar la cerca per a trobar gent que voldries conèixer o explorar les etiquetes en tendència.", + "empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Revisa-ho més tard!", + "empty_column.favourited_statuses": "Encara no has marcat cap publicació com a preferida. Quan les marquis, apareixeran aquí.", + "empty_column.favourites": "Encara ningú no ha marcat aquesta publicació com a preferida. Quan algú ho faci, apareixerà aquí.", + "empty_column.follow_recommendations": "Sembla que no s'han pogut generar suggeriments per a tu. Pots provar d'usar la cerca per trobar persones que vulguis conèixer o explorar les etiquetes en tendència.", "empty_column.follow_requests": "Encara no tens cap petició de seguiment. Quan en rebis una, apareixerà aquí.", "empty_column.hashtag": "Encara no hi ha res en aquesta etiqueta.", - "empty_column.home": "La teva línia de temps és buida! Segueix més gent per a emplenar-la. {suggestions}", - "empty_column.home.suggestions": "Mira algunes sugerencies", + "empty_column.home": "La teva línia de temps és buida! Segueix més gent per omplir-la. {suggestions}", + "empty_column.home.suggestions": "Mira algunes suggeriments", "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin noves publicacions, apareixeran aquí.", - "empty_column.lists": "Encara no tens cap llista. Quan en facis una, apareixerà aquí.", + "empty_column.lists": "Encara no tens cap llista. Quan en creïs una, apareixerà aquí.", "empty_column.mutes": "Encara no has silenciat cap usuari.", - "empty_column.notifications": "Encara no tens notificacions. Quan altre gent interactuï amb tu, les veuràs aquí.", - "empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per a omplir-ho", - "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina podria no ser mostrada correctament.", - "error.unexpected_crash.explanation_addons": "Aquesta pàgina podria no mostrar-se correctament. Aquest error és possiblement causat per una extensió del navegador o per eienes automàtiques de traducció.", - "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda, encara podries ser capaç d'utilitzar Mastodon a través d'un navegador diferent o amb una aplicació nativa.", - "error.unexpected_crash.next_steps_addons": "Prova de desactivar-les i refrescant la pàgina. Si això no ajuda, encara pots ser capaç d’utilitzar Mastodon amb un altre navegador o aplicació nativa.", + "empty_column.notifications": "Encara no tens notificacions. Quan altres persones interactuïn amb tu, les veuràs aquí.", + "empty_column.public": "Aquí no hi ha res! Escriu públicament alguna cosa o segueix manualment usuaris d'altres servidors per omplir-ho", + "error.unexpected_crash.explanation": "A causa d'un error en el nostre codi o d'un problema de compatibilitat amb el navegador, aquesta pàgina no s'ha pogut mostrar correctament.", + "error.unexpected_crash.explanation_addons": "Aquesta pàgina no s'ha pogut mostrar correctament. És probable que aquest error sigui causat per un complement del navegador o per eines de traducció automàtica.", + "error.unexpected_crash.next_steps": "Prova d'actualitzar la pàgina. Si això no serveix, és possible que encara puguis fer servir Mastodon a través d'un navegador diferent o amb una aplicació nativa.", + "error.unexpected_crash.next_steps_addons": "Prova de desactivar-los i actualitza la pàgina. Si això no serveix, és possible que encara puguis fer servir Mastodon amb un altre navegador o una aplicació nativa.", "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace al porta-retalls", "errors.unexpected_crash.report_issue": "Informa d'un problema", "explore.search_results": "Resultats de la cerca", @@ -198,7 +198,7 @@ "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", - "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.", + "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 manualment.", "generic.saved": "Desat", "getting_started.developers": "Desenvolupadors", "getting_started.directory": "Directori de perfils", @@ -207,7 +207,7 @@ "getting_started.invite": "Convida gent", "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a the computer lab a {github}.", "getting_started.security": "Configuració del compte", - "getting_started.terms": "Termes del servei", + "getting_started.terms": "Condicions de servei", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -225,20 +225,20 @@ "intervals.full.days": "{number, plural, one {# dia} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", - "keyboard_shortcuts.back": "Navegar enrere", + "keyboard_shortcuts.back": "Anar enrere", "keyboard_shortcuts.blocked": "Obre la llista d'usuaris bloquejats", "keyboard_shortcuts.boost": "Impulsa publicació", - "keyboard_shortcuts.column": "Centra columna", - "keyboard_shortcuts.compose": "Centra l'àrea de composició de text", + "keyboard_shortcuts.column": "Centra la columna", + "keyboard_shortcuts.compose": "Centra l'àrea de composició del text", + "keyboard_shortcuts.conversations": "per a obrir la columna de converses", "keyboard_shortcuts.description": "Descripció", - "keyboard_shortcuts.direct": "Obre la columna de missatges directes", - "keyboard_shortcuts.down": "Baixar en la llista", + "keyboard_shortcuts.down": "Mou-lo avall en la llista", "keyboard_shortcuts.enter": "Obre publicació", "keyboard_shortcuts.favourite": "Afavorir publicació", - "keyboard_shortcuts.favourites": "Obre la llista de favorits", + "keyboard_shortcuts.favourites": "Obre la llista de preferits", "keyboard_shortcuts.federated": "Obre la línia de temps federada", "keyboard_shortcuts.heading": "Dreceres de teclat", - "keyboard_shortcuts.home": "Obre la línia de temps Inici", + "keyboard_shortcuts.home": "Obre la línia de temps de l'Inici", "keyboard_shortcuts.hotkey": "Tecla d'accés directe", "keyboard_shortcuts.legend": "Mostra aquesta llegenda", "keyboard_shortcuts.local": "Obre la línia de temps local", @@ -246,17 +246,17 @@ "keyboard_shortcuts.muted": "Obre la llista d'usuaris silenciats", "keyboard_shortcuts.my_profile": "Obre el teu perfil", "keyboard_shortcuts.notifications": "Obre la columna de notificacions", - "keyboard_shortcuts.open_media": "Obre mèdia", - "keyboard_shortcuts.pinned": "Obre la llista de publicacions fixades", + "keyboard_shortcuts.open_media": "Obre multimèdia", + "keyboard_shortcuts.pinned": "Obrir la llista de publicacions fixades", "keyboard_shortcuts.profile": "Obre el perfil de l'autor", - "keyboard_shortcuts.reply": "Respon publicació", - "keyboard_shortcuts.requests": "Obre la llista de sol·licituds de seguiment", + "keyboard_shortcuts.reply": "Respon a la publicació", + "keyboard_shortcuts.requests": "Obre la llista de les sol·licituds de seguiment", "keyboard_shortcuts.search": "Centra la barra de cerca", "keyboard_shortcuts.spoilers": "Mostra/amaga el camp CW", - "keyboard_shortcuts.start": "Obre la columna \"Primeres passes\"", + "keyboard_shortcuts.start": "Obre la columna \"Primers passos\"", "keyboard_shortcuts.toggle_hidden": "Mostra/oculta el text marcat com a sensible", "keyboard_shortcuts.toggle_sensitivity": "Mostra/amaga contingut multimèdia", - "keyboard_shortcuts.toot": "per a començar un tut nou de trinca", + "keyboard_shortcuts.toot": "Inicia una nova publicació", "keyboard_shortcuts.unfocus": "Descentra l'àrea de composició de text/cerca", "keyboard_shortcuts.up": "Moure amunt en la llista", "lightbox.close": "Tanca", @@ -264,45 +264,44 @@ "lightbox.expand": "Amplia el quadre de visualització de l’imatge", "lightbox.next": "Següent", "lightbox.previous": "Anterior", - "lists.account.add": "Afegir a la llista", - "lists.account.remove": "Treure de la llista", - "lists.delete": "Esborrar llista", - "lists.edit": "Editar llista", - "lists.edit.submit": "Canvi de títol", - "lists.new.create": "Afegir llista", - "lists.new.title_placeholder": "Nou títol de llista", - "lists.replies_policy.followed": "Qualsevol usuari seguit", + "lists.account.add": "Afegeix a la llista", + "lists.account.remove": "Elimina de la llista", + "lists.delete": "Esborra la llista", + "lists.edit": "Edita la llista", + "lists.edit.submit": "Canvia de títol", + "lists.new.create": "Afegeix llista", + "lists.new.title_placeholder": "Nou títol de la llista", + "lists.replies_policy.followed": "Qualsevol usuari que segueixis", "lists.replies_policy.list": "Membres de la llista", "lists.replies_policy.none": "Ningú", "lists.replies_policy.title": "Mostra respostes a:", - "lists.search": "Cercar entre les persones que segueixes", + "lists.search": "Cerca entre les persones que segueixes", "lists.subheading": "Les teves llistes", "load_pending": "{count, plural, one {# element nou} other {# elements nous}}", "loading_indicator.label": "Carregant...", "media_gallery.toggle_visible": "{number, plural, one {Amaga imatge} other {Amaga imatges}}", - "missing_indicator.label": "No trobat", - "missing_indicator.sublabel": "Aquest recurs no pot ser trobat", + "missing_indicator.label": "No s'ha trobat", + "missing_indicator.sublabel": "Aquest recurs no s'ha trobat", "mute_modal.duration": "Durada", - "mute_modal.hide_notifications": "Amagar notificacions d'aquest usuari?", + "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", "navigation_bar.apps": "Aplicacions mòbils", "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.bookmarks": "Marcadors", - "navigation_bar.community_timeline": "Línia de temps Local", + "navigation_bar.community_timeline": "Línia de temps local", "navigation_bar.compose": "Redacta una nova publicació", - "navigation_bar.direct": "Missatges directes", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Dominis bloquejats", - "navigation_bar.edit_profile": "Editar perfil", + "navigation_bar.edit_profile": "Edita el perfil", "navigation_bar.explore": "Explora", - "navigation_bar.favourites": "Favorits", + "navigation_bar.favourites": "Preferits", "navigation_bar.filters": "Paraules silenciades", "navigation_bar.follow_requests": "Sol·licituds de seguiment", "navigation_bar.follows_and_followers": "Seguits i seguidors", - "navigation_bar.info": "Quant a aquest servidor", + "navigation_bar.info": "Sobre aquest servidor", "navigation_bar.keyboard_shortcuts": "Dreceres de teclat", "navigation_bar.lists": "Llistes", - "navigation_bar.logout": "Tancar sessió", + "navigation_bar.logout": "Tanca la sessió", "navigation_bar.mutes": "Usuaris silenciats", "navigation_bar.personal": "Personal", "navigation_bar.pins": "Publicacions fixades", @@ -315,12 +314,12 @@ "notification.follow_request": "{name} ha sol·licitat seguir-te", "notification.mention": "{name} t'ha esmentat", "notification.own_poll": "La teva enquesta ha finalitzat", - "notification.poll": "Ha finalitzat una enquesta en la que has votat", + "notification.poll": "Ha finalitzat una enquesta en què has votat", "notification.reblog": "{name} ha impulsat el teu estat", "notification.status": "ha publicat {name}", "notification.update": "{name} ha editat una publicació", - "notifications.clear": "Netejar notificacions", - "notifications.clear_confirmation": "Estàs segur que vols esborrar permanentment totes les teves notificacions?", + "notifications.clear": "Esborra les notificacions", + "notifications.clear_confirmation": "Segur que vols esborrar permanentment totes les teves notificacions?", "notifications.column_settings.admin.sign_up": "Nous registres:", "notifications.column_settings.alert": "Notificacions d'escriptori", "notifications.column_settings.favourite": "Preferits:", @@ -337,24 +336,24 @@ "notifications.column_settings.sound": "Reproduir so", "notifications.column_settings.status": "Noves publicacions:", "notifications.column_settings.unread_notifications.category": "Notificacions no llegides", - "notifications.column_settings.unread_notifications.highlight": "Destaca notificacions no llegides", + "notifications.column_settings.unread_notifications.highlight": "Destaca les notificacions no llegides", "notifications.column_settings.update": "Edicions:", "notifications.filter.all": "Tots", "notifications.filter.boosts": "Impulsos", - "notifications.filter.favourites": "Favorits", + "notifications.filter.favourites": "Preferits", "notifications.filter.follows": "Seguiments", "notifications.filter.mentions": "Mencions", "notifications.filter.polls": "Resultats de l'enquesta", "notifications.filter.statuses": "Actualitzacions de gent que segueixes", "notifications.grant_permission": "Concedir permís.", "notifications.group": "{count} notificacions", - "notifications.mark_as_read": "Marca cada notificació com a llegida", + "notifications.mark_as_read": "Marca totes les notificacions com a llegides", "notifications.permission_denied": "Les notificacions d’escriptori no estan disponibles perquè prèviament s’ha denegat el permís al navegador", - "notifications.permission_denied_alert": "No es poden activar les notificacions del escriptori perquè el permís del navegador ha estat denegat abans", + "notifications.permission_denied_alert": "No es poden activar les notificacions de l'escriptori perquè el permís del navegador s'ha denegat prèviament", "notifications.permission_required": "Les notificacions d'escriptori no estan disponibles perquè el permís requerit no ha estat concedit.", - "notifications_permission_banner.enable": "Activar les notificacions d’escriptori", - "notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no és obert cal activar les notificacions d’escriptori. Pots controlar amb precisió quins tipus d’interaccions generen notificacions d’escriptori després d’activar el botó {icon} de dalt.", - "notifications_permission_banner.title": "Mai et perdis res", + "notifications_permission_banner.enable": "Activa les notificacions d’escriptori", + "notifications_permission_banner.how_to_control": "Per rebre notificacions quan Mastodon no estigui obert, cal activar les notificacions d’escriptori. Pots controlar exactament quins tipus d’interaccions generen notificacions d’escriptori si actives el botó {icon} de dalt.", + "notifications_permission_banner.title": "No et perdis mai res", "picture_in_picture.restore": "Retorna’l", "poll.closed": "Finalitzada", "poll.refresh": "Actualitza", @@ -363,20 +362,20 @@ "poll.vote": "Vota", "poll.voted": "Vas votar per aquesta resposta", "poll.votes": "{votes, plural, one {# vot} other {# vots}}", - "poll_button.add_poll": "Afegir una enquesta", + "poll_button.add_poll": "Afegeix una enquesta", "poll_button.remove_poll": "Elimina l'enquesta", - "privacy.change": "Ajustar la privacitat de la publicació", + "privacy.change": "Ajusta la privacitat de la publicació", "privacy.direct.long": "Visible només per als usuaris esmentats", - "privacy.direct.short": "Directe", - "privacy.private.long": "Visible només pels seguidors", + "privacy.direct.short": "Només la gent que menciono", + "privacy.private.long": "Visible només per als seguidors", "privacy.private.short": "Només seguidors", - "privacy.public.long": "Visible per a tothom, mostrat en línies de temps públiques", + "privacy.public.long": "Visible per tothom", "privacy.public.short": "Públic", - "privacy.unlisted.long": "Visible per a tothom però no en les línies de temps públiques", + "privacy.unlisted.long": "Visible per tothom però exclosa de les funcions de descobriment", "privacy.unlisted.short": "No llistat", "refresh": "Actualitza", "regeneration_indicator.label": "Carregant…", - "regeneration_indicator.sublabel": "S'està preparant la teva línia de temps Inici!", + "regeneration_indicator.sublabel": "S'està preparant la teva línia de temps d'Inici!", "relative_time.days": "fa {number} dies", "relative_time.full.days": "fa {number, plural, one {# dia} other {# dies}}", "relative_time.full.hours": "fa {number, plural, one {# hora} other {# hores}}", @@ -388,9 +387,9 @@ "relative_time.minutes": "fa {number} minuts", "relative_time.seconds": "fa {number} segons", "relative_time.today": "avui", - "reply_indicator.cancel": "Cancel·lar", + "reply_indicator.cancel": "Cancel·la", "report.block": "Bloqueja", - "report.block_explanation": "No veuràs les seves publicacions. Ell no podran veure les teves publicacions ni seguir-te. Ells podran dir que estan bloquejats.", + "report.block_explanation": "No veuràs les seves publicacions. Ells no podran veure les teves publicacions ni et podran seguir. Podran saber que estan bloquejats.", "report.categories.other": "Altres", "report.categories.spam": "Contingut brossa", "report.categories.violation": "El contingut viola una o més regles del servidor", @@ -399,39 +398,39 @@ "report.category.title_account": "perfil", "report.category.title_status": "publicació", "report.close": "Fet", - "report.comment.title": "Hi ha res més que penses hauriem de saber?", + "report.comment.title": "Hi ha res més que creguis que hauríem de saber?", "report.forward": "Reenvia a {target}", - "report.forward_hint": "Aquest compte és d'un altre servidor. Enviar-hi també una copia anònima del informe?", + "report.forward_hint": "Aquest compte és d'un altre servidor. Vols enviar-li també una còpia anònima de l'informe?", "report.mute": "Silencia", - "report.mute_explanation": "No veuràs les seves publicacions. Ells encara poden seguir-te i veure les teves publicacions però no sabran que han estat silenciats.", + "report.mute_explanation": "No veuràs les seves publicacions. Encara poden seguir-te i veure les teves publicacions, però no sabran que han estat silenciats.", "report.next": "Següent", "report.placeholder": "Comentaris addicionals", "report.reasons.dislike": "No m'agrada", - "report.reasons.dislike_description": "Això no és quelcom que vulguis veure", - "report.reasons.other": "Això és una altre cosa", - "report.reasons.other_description": "El problema no encaixa en altres categories", - "report.reasons.spam": "Això és contingut brossa", - "report.reasons.spam_description": "Enllaços maliciosos, compromís falç o respostes repetitives", + "report.reasons.dislike_description": "No és una cosa que vulguis veure", + "report.reasons.other": "És una altra cosa", + "report.reasons.other_description": "El problema no encaixa a les altres categories", + "report.reasons.spam": "És contingut brossa", + "report.reasons.spam_description": "Enllaços maliciosos, implicació falsa o respostes repetitives", "report.reasons.violation": "Viola les regles del servidor", "report.reasons.violation_description": "Ets conscient que trenca regles especifiques", - "report.rules.subtitle": "Selecciona totes les aplicables", - "report.rules.title": "Quines regles han estat violades?", - "report.statuses.subtitle": "Selecciona tots els aplicables", + "report.rules.subtitle": "Selecciona tot el que correspongui", + "report.rules.title": "Quines regles s'han violat?", + "report.statuses.subtitle": "Selecciona tot el que correspongui", "report.statuses.title": "Hi ha alguna publicació que recolzi aquest informe?", - "report.submit": "Enviar", - "report.target": "Informes {target}", - "report.thanks.take_action": "Aquestes son les teves opcions per a controlar el que veus a Mastodon:", - "report.thanks.take_action_actionable": "Mentre ho revisem, pots pendre mesures contra @{name}:", + "report.submit": "Envia", + "report.target": "Denunciant a {target}", + "report.thanks.take_action": "Aquestes són les teves opcions per controlar el que veus a Mastodon:", + "report.thanks.take_action_actionable": "Mentre ho revisem, pots prendre mesures contra @{name}:", "report.thanks.title": "No vols veure això?", - "report.thanks.title_actionable": "Gràcies per informar, ho investigarem.", - "report.unfollow": "Deixar de seguir @{name}", - "report.unfollow_explanation": "Estàs seguint aquest compte. Per a no veure més les seves publicacions en la teva línia de temps Inici, deixa de seguir-lo.", - "search.placeholder": "Cercar", + "report.thanks.title_actionable": "Gràcies per denunciar-ho. Ho investigarem.", + "report.unfollow": "Deixa de seguir @{name}", + "report.unfollow_explanation": "Estàs seguint aquest compte. Per no veure les seves publicacions a la teva línia de temps d'Inici, deixa de seguir-lo.", + "search.placeholder": "Cerca", "search_popout.search_format": "Format de cerca avançada", - "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les afavorides, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.", + "search_popout.tips.full_text": "El text simple recupera publicacions que has escrit, marcat com a preferides, que has impulsat o on t'han esmentat, així com els usuaris, els noms d'usuaris i les etiquetes.", "search_popout.tips.hashtag": "etiqueta", "search_popout.tips.status": "publicació", - "search_popout.tips.text": "El text simple retorna coincidències amb els noms de visualització, els noms d'usuari i les etiquetes", + "search_popout.tips.text": "El text simple recupera coincidències amb els usuaris, els noms d'usuari i les etiquetes", "search_popout.tips.user": "usuari", "search_results.accounts": "Gent", "search_results.all": "Tots", @@ -443,51 +442,51 @@ "status.admin_account": "Obre l'interfície de moderació per a @{name}", "status.admin_status": "Obre aquesta publicació a la interfície de moderació", "status.block": "Bloqueja @{name}", - "status.bookmark": "Marcador", - "status.cancel_reblog_private": "Desfer l'impuls", - "status.cannot_reblog": "Aquesta publicació no pot ser impulsada", + "status.bookmark": "Afavoreix", + "status.cancel_reblog_private": "Desfés l'impuls", + "status.cannot_reblog": "Aquesta publicació no es pot impulsar", "status.copy": "Copia l'enllaç a l'estat", "status.delete": "Esborra", "status.detailed_status": "Visualització detallada de la conversa", - "status.direct": "Missatge directe @{name}", + "status.direct": "Envia missatge directe a @{name}", "status.edit": "Edita", "status.edited": "Editat {date}", "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", - "status.embed": "Incrustat", + "status.embed": "Incrusta", "status.favourite": "Favorit", "status.filtered": "Filtrat", "status.history.created": "{name} ha creat {date}", "status.history.edited": "{name} ha editat {date}", - "status.load_more": "Carrega més", - "status.media_hidden": "Multimèdia amagat", - "status.mention": "Esmentar @{name}", + "status.load_more": "Carregar-ne més", + "status.media_hidden": "Multimèdia amagada", + "status.mention": "Esmenta @{name}", "status.more": "Més", - "status.mute": "Silenciar @{name}", - "status.mute_conversation": "Silenciar conversació", - "status.open": "Ampliar aquest estat", + "status.mute": "Silencia @{name}", + "status.mute_conversation": "Silencia conversació", + "status.open": "Amplia la publicació", "status.pin": "Fixa en el perfil", "status.pinned": "Publicació fixada", - "status.read_more": "Llegir més", - "status.reblog": "Impuls", - "status.reblog_private": "Impulsar amb la visibilitat original", + "status.read_more": "Més informació", + "status.reblog": "Impulsa", + "status.reblog_private": "Impulsa amb la visibilitat original", "status.reblogged_by": "{name} ha impulsat", "status.reblogs.empty": "Encara ningú no ha impulsat aquesta publicació. Quan algú ho faci, apareixeran aquí.", - "status.redraft": "Esborrar i reescriure", + "status.redraft": "Esborra-la i reescriure-la", "status.remove_bookmark": "Suprimeix el marcador", - "status.reply": "Respondre", - "status.replyAll": "Respondre al fil", - "status.report": "Informar sobre @{name}", + "status.reply": "Respon", + "status.replyAll": "Respon al fil", + "status.report": "Denuncia @{name}", "status.sensitive_warning": "Contingut sensible", - "status.share": "Compartir", - "status.show_less": "Mostra menys", - "status.show_less_all": "Mostra menys per a tot", - "status.show_more": "Mostra més", - "status.show_more_all": "Mostra més per a tot", + "status.share": "Comparteix", + "status.show_less": "Mostrar-ne menys", + "status.show_less_all": "Mostrar-ne menys per a tot", + "status.show_more": "Mostrar-ne més", + "status.show_more_all": "Mostrar-ne més per a tot", "status.show_thread": "Mostra el fil", "status.uncached_media_warning": "No està disponible", - "status.unmute_conversation": "Activar conversació", - "status.unpin": "Deslliga del perfil", - "suggestions.dismiss": "Descartar suggeriment", + "status.unmute_conversation": "No silenciïs la conversa", + "status.unpin": "No fixis al perfil", + "suggestions.dismiss": "Ignora el suggeriment", "suggestions.header": "És possible que estiguis interessat en…", "tabs_bar.federated_timeline": "Federat", "tabs_bar.home": "Inici", @@ -502,23 +501,24 @@ "timeline_hint.remote_resource_not_displayed": "{resource} dels altres servidors no son mostrats.", "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Seguiments", - "timeline_hint.resources.statuses": "Tuts més antics", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-hi", - "trends.trending_now": "Ara en tendència", + "timeline_hint.resources.statuses": "Publicacions més antigues", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-ne", + "trends.trending_now": "En tendència", "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", "units.short.thousand": "{count}K", - "upload_area.title": "Arrossega i deixa anar per a carregar", - "upload_button.label": "Afegir mèdia, un vídeo o un fitxer d'audio", + "upload_area.title": "Arrossega i deixa anar per carregar", + "upload_button.label": "Afegeix imatges, un vídeo o un fitxer d'àudio", "upload_error.limit": "S'ha superat el límit de càrrega d'arxius.", - "upload_error.poll": "No es permet l'enviament de fitxers en les enquestes.", - "upload_form.audio_description": "Descriviu per a les persones amb pèrdua auditiva", - "upload_form.description": "Descriure per els que tenen problemes visuals", + "upload_error.poll": "No es permet carregar fitxers a les enquestes.", + "upload_form.audio_description": "Descripció per a persones amb discapacitat auditiva", + "upload_form.description": "Descripció per a persones amb discapacitat visual", + "upload_form.description_missing": "No s'ha afegit cap descripció", "upload_form.edit": "Edita", "upload_form.thumbnail": "Canvia la miniatura", "upload_form.undo": "Esborra", - "upload_form.video_description": "Descriu per a les persones amb pèrdua auditiva o deficiència visual", + "upload_form.video_description": "Descripció per a persones amb discapacitat auditiva o amb discapacitat visual", "upload_modal.analyzing_picture": "Analitzant imatge…", "upload_modal.apply": "Aplica", "upload_modal.applying": "Aplicant…", @@ -526,18 +526,18 @@ "upload_modal.description_placeholder": "Una ràpida guineu marró salta sobre el gos mandrós", "upload_modal.detect_text": "Detecta el text de l'imatge", "upload_modal.edit_media": "Editar multimèdia", - "upload_modal.hint": "Fes clic o arrossega el cercle en la previsualització per escollir el punt focal que sempre serà visible de totes les miniatures.", + "upload_modal.hint": "Fes clic o arrossega el cercle en la previsualització per escollir el punt focal que sempre serà visible en totes les miniatures.", "upload_modal.preparing_ocr": "Preparant OCR…", "upload_modal.preview_label": "Previsualitza ({ratio})", "upload_progress.label": "Pujant...", - "video.close": "Tancar el vídeo", + "video.close": "Tanca el vídeo", "video.download": "Descarrega l’arxiu", - "video.exit_fullscreen": "Sortir de pantalla completa", - "video.expand": "Ampliar el vídeo", + "video.exit_fullscreen": "Surt de la pantalla completa", + "video.expand": "Amplia el vídeo", "video.fullscreen": "Pantalla completa", - "video.hide": "Amaga vídeo", - "video.mute": "Silenciar el so", + "video.hide": "Amaga el vídeo", + "video.mute": "Silencia el so", "video.pause": "Pausa", - "video.play": "Reproduir", - "video.unmute": "Activar so" + "video.play": "Reprodueix", + "video.unmute": "Activa el so" } diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 7209633ad..5a64eaebb 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -70,7 +70,7 @@ "column.blocks": "بەکارهێنەرە بلۆککراوەکان", "column.bookmarks": "نیشانەکان", "column.community": "هێڵی کاتی ناوخۆیی", - "column.direct": "نامە ڕاستەوخۆکان", + "column.conversations": "Conversations", "column.directory": "گەڕان لە پرۆفایلەکان", "column.domain_blocks": "دۆمەینە داخراوەکان", "column.favourites": "دڵخوازترینەکان", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "تەنها خۆماڵی", "community.column_settings.media_only": "تەنها میدیا", "community.column_settings.remote_only": "تەنها بۆ دوور", - "compose_form.direct_message_warning": "ئەم توتە تەنیا بۆ بەکارهێنەرانی ناوبراو دەنێردرێت.", "compose_form.direct_message_warning_learn_more": "زیاتر فێربه", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "ئەم توتە لە ژێر هیچ هاشتاگییەک دا ناکرێت وەک ئەوەی لە لیستەکەدا نەریزراوە. تەنها توتی گشتی دەتوانرێت بە هاشتاگی بگەڕێت.", "compose_form.lock_disclaimer": "هەژمێرەکەی لە حاڵەتی {locked}. هەر کەسێک دەتوانێت شوێنت بکەوێت بۆ پیشاندانی بابەتەکانی تەنها دوایخۆی.", "compose_form.lock_disclaimer.lock": "قفڵ دراوە", @@ -166,7 +166,7 @@ "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.", "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.", "empty_column.community": "هێڵی کاتی ناوخۆیی بەتاڵە. شتێک بە ئاشکرا بنووسە بۆ ئەوەی تۆپەکە بسووڕێت!", - "empty_column.direct": "تۆ هیچ نامەی ڕاستەوخۆت نیە تا ئێستا. کاتێک دانەیەک دەنێریت یان وەرت دەگرێت، لێرە پیشان دەدات.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "هێشتا هیچ دۆمەینێکی بلۆک کراو نییە.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "تۆ هێشتا هیچ توتێکی دڵخوازت نییە، کاتێک حەزت لە دانەیەکی باشە، لێرە دەرئەکەویت.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "بۆ بەهێزکردن", "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان", "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "وه‌سف", - "keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی نامە ڕاستەوخۆکان", "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا", "keyboard_shortcuts.enter": "بۆ کردنەوەی توت", "keyboard_shortcuts.favourite": "بۆ دڵخواز", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "نیشانکراوەکان", "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", "navigation_bar.compose": "نووسینی توتی نوێ", - "navigation_bar.direct": "نامە ڕاستەوخۆکان", "navigation_bar.discover": "دۆزینەوە", "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان", "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "ده‌نگدان بسڕه‌وه‌‌", "privacy.change": "ڕێکخستنی تایبەتمەندی توت", "privacy.direct.long": "تەنیا بۆ بەکارهێنەرانی ناوبراو", - "privacy.direct.short": "ڕاستەوخۆ", + "privacy.direct.short": "Direct", "privacy.private.long": "بینراو تەنها بۆ شوێنکەوتوان", - "privacy.private.short": "تەنها بۆ شوێنکەوتوان", - "privacy.public.long": "بۆ هەمووان دیاربێت، لە هێڵی کاتی گشتی دا نیشان دەدرێت", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "گشتی", - "privacy.unlisted.long": "بۆ هەمووان دیارە، بەڵام لە هێڵی کاتی گشتیدا نا", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "لە لیست نەکراو", "refresh": "نوێکردنەوە", "regeneration_indicator.label": "بارکردن…", @@ -442,7 +441,7 @@ "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}", "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}", "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر", - "status.block": "بلۆکی @{name}", + "status.block": "@{name} ئاستەنگ بکە", "status.bookmark": "نیشانه", "status.cancel_reblog_private": "بێبەهێزکردن", "status.cannot_reblog": "ئەم بابەتە ناتوانرێت بەرزبکرێتەوە", @@ -458,12 +457,12 @@ "status.filtered": "پاڵاوتن", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", - "status.load_more": "بارکردنی زیاتر", + "status.load_more": "زیاتر بار بکە", "status.media_hidden": "میدیای شاراوە", "status.mention": "ناوبنێ @{name}", "status.more": "زیاتر", - "status.mute": "بێدەنگکردن @{name}", - "status.mute_conversation": "گفتوگۆی بێدەنگ", + "status.mute": "@{name} بێدەنگ بکە", + "status.mute_conversation": "بێدەنگی بکە", "status.open": "ئەم توتە فراوان بکە", "status.pin": "لکاندن لەسەر پرۆفایل", "status.pinned": "توتی چەسپکراو", @@ -478,58 +477,59 @@ "status.replyAll": "بە نووسراوە وەڵام بدەوە", "status.report": "گوزارشت @{name}", "status.sensitive_warning": "ناوەڕۆکی هەستیار", - "status.share": "هاوبەش کردن", + "status.share": "هاوبەشی بکە", "status.show_less": "کەمتر نیشان بدە", - "status.show_less_all": "کەمتر نیشان بدە بۆ هەمووی", - "status.show_more": "زیاتر پیشان بدە", + "status.show_less_all": "هەمووی بچووک بکەوە", + "status.show_more": "زیاتر نیشان بدە", "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی", "status.show_thread": "نیشاندانی گفتوگۆ", "status.uncached_media_warning": "بەردەست نیە", "status.unmute_conversation": "گفتوگۆی بێدەنگ", - "status.unpin": "لابردن لە پرۆفایل", + "status.unpin": "لە سەرەوە لایبە", "suggestions.dismiss": "ڕەتکردنەوەی پێشنیار", "suggestions.header": "لەوانەیە حەزت لەمەش بێت…", "tabs_bar.federated_timeline": "گشتی", "tabs_bar.home": "سەرەتا", "tabs_bar.local_timeline": "ناوخۆیی", "tabs_bar.notifications": "ئاگادارییەکان", - "tabs_bar.search": "گەڕان", + "tabs_bar.search": "بگەڕێ", "time_remaining.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژ}} ماوە", - "time_remaining.hours": "{number, plural, one {# کات} other {# کات}} ماوە", - "time_remaining.minutes": "{number, plural, one {# خۆلەک} other {# خولەک}} ماوە", - "time_remaining.moments": "ئەو ساتانەی ماونەتەوە", + "time_remaining.hours": "{number, plural, one {# کاتژمێر} other {# کاتژمێر}} ماوە", + "time_remaining.minutes": "{number, plural, one {# خولەک} other {# خولەک}} ماوە", + "time_remaining.moments": "کاتی ماوە", "time_remaining.seconds": "{number, plural, one {# چرکە} other {# چرکە}} ماوە", "timeline_hint.remote_resource_not_displayed": "{resource} لە ڕاژەکانی ترەوە پیشان نادرێت.", - "timeline_hint.resources.followers": "شوێنکەوتووان", + "timeline_hint.resources.followers": "شوێنکەوتوو", "timeline_hint.resources.follows": "شوێنکەوتن", - "timeline_hint.resources.statuses": "توتی کۆن", + "timeline_hint.resources.statuses": "نێردراوی کۆن", "trends.counter_by_accounts": "{count, plural, one {{counter} کەس} other {{counter} کەس}} گفتوگۆ دەکا", - "trends.trending_now": "گۆگران", - "ui.beforeunload": "ڕەشنووسەکەت لە دەست دەچێت ئەگەر لە ماستۆدۆن بڕۆیت.", - "units.short.billion": "{count}ملیار", - "units.short.million": "{count}ملیۆن", - "units.short.thousand": "{count}هەزار", - "upload_area.title": "ڕاکێشان & دانان بۆ بارکردن", - "upload_button.label": "زیادکردنی وێنەکان، ڤیدیۆیەک یان فایلێکی دەنگی", - "upload_error.limit": "سنووری بارکردنی فایل تێپەڕیوە.", - "upload_error.poll": "پەڕگەکە ڕێی پێنەدراوە بە ڕاپرسی باربکرێت.", - "upload_form.audio_description": "بۆ ئەو کەسانەی کە گوێ بیستیان هەیە وەسف دەکات", - "upload_form.description": "وەسف بکە بۆ کەمبینایان", + "trends.trending_now": "ڕۆژەڤ", + "ui.beforeunload": "ڕەشنووسەکەت لەدەست دەچێت ئەگەر ماستۆدۆن جێ بهێڵیت.", + "units.short.billion": "{count} ملیار", + "units.short.million": "{count} ملیۆن", + "units.short.thousand": "{count} هەزار", + "upload_area.title": "فایلەکانت ڕابکێشە ئێرە بۆ بەرزکردنەوەیان", + "upload_button.label": "وێنە، ڤیدیۆ یان پەیامی دەنگی زیاد بکە", + "upload_error.limit": "سنووری بەرزکردنەوەت بەزاندووە.", + "upload_error.poll": "فایل و ڕاپرسی پێکەوە ڕێپێنەدراون.", + "upload_form.audio_description": "پەیامەکەت بۆ نابیستەکان", + "upload_form.description": "پەیامەکەت بۆ نابیناکان", + "upload_form.description_missing": "No description added", "upload_form.edit": "دەستکاری", "upload_form.thumbnail": "گۆڕانی وینۆچکە", - "upload_form.undo": "سڕینەوە", - "upload_form.video_description": "بۆ کەم بینایان و کەم بیستان وەسفی بکە", - "upload_modal.analyzing_picture": "شیکردنەوەی وێنە…", - "upload_modal.apply": "جێبەجێ کردن", + "upload_form.undo": "بیسڕەوە", + "upload_form.video_description": "پەیامەکەت بۆ نابیست و نابیناکان", + "upload_modal.analyzing_picture": "وێنەکە شی دەکرێتەوە…", + "upload_modal.apply": "بیسەپێنە", "upload_modal.applying": "Applying…", "upload_modal.choose_image": "وێنە هەڵبژێرە", "upload_modal.description_placeholder": "بە دڵ کەین با بە نەشئەی مەی غوباری میحنەتی دونیا", - "upload_modal.detect_text": "دەقی وێنەکە بدۆزیەوە", + "upload_modal.detect_text": "نووسینی ناو وێنەکە دەستنیشان بکە", "upload_modal.edit_media": "دەستکاریکردنی میدیا", "upload_modal.hint": "گەر وێنە چکۆلە یان بڕاوەبێت، خاڵی ناوەندی دیار دەکەوێت. خاڵی ناوەندی وێنە بە کرتە یان جێبەجیکردنی رێکبخەن.", - "upload_modal.preparing_ocr": "ئامادەکردنی OCR…", - "upload_modal.preview_label": "پێشبینی ({ratio})", - "upload_progress.label": "بارکردن...", + "upload_modal.preparing_ocr": "نووسینەکە دەستنیشان دەکرێت…", + "upload_modal.preview_label": "پێشبینین ({ratio})", + "upload_progress.label": "بار دەکرێت...", "video.close": "داخستنی ڤیدیۆ", "video.download": "داگرتنی فایل", "video.exit_fullscreen": "دەرچوون لە پڕ شاشە", @@ -538,6 +538,6 @@ "video.hide": "شاردنەوەی ڤیدیۆ", "video.mute": "دەنگی کپ", "video.pause": "وەستان", - "video.play": "پەخشکردن", - "video.unmute": "دەنگ لابدە" + "video.play": "لێی بدە", + "video.unmute": "بێدەنگی مەکە" } diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 29c1484c1..cef368231 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -70,7 +70,7 @@ "column.blocks": "Utilizatori bluccati", "column.bookmarks": "Segnalibri", "column.community": "Linea pubblica lucale", - "column.direct": "Missaghji diretti", + "column.conversations": "Conversations", "column.directory": "Percorre i prufili", "column.domain_blocks": "Duminii piattati", "column.favourites": "Favuriti", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Solu lucale", "community.column_settings.media_only": "Solu media", "community.column_settings.remote_only": "Solu distante", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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\".", "compose_form.lock_disclaimer": "U vostru contu ùn hè micca {locked}. Tuttu u mondu pò seguitavi è vede i vostri statuti privati.", "compose_form.lock_disclaimer.lock": "privatu", @@ -166,7 +166,7 @@ "empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.", "empty_column.bookmarked_statuses": "Ùn avete manc'un segnalibru. Quandu aghjunghjerate unu, sarà mustratu quì.", "empty_column.community": "Ùn c'hè nunda indè a linea lucale. Scrivete puru qualcosa!", - "empty_column.direct": "Ùn avete ancu nisun missaghju direttu. S'è voi mandate o ricevete unu, u vidarete quì.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ùn c'hè manc'un duminiu bluccatu avà.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ùn avete manc'unu statutu favuritu. Quandu aghjunghjerate unu à i vostri favuriti, sarà mustratu quì.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "sparte", "keyboard_shortcuts.column": "fucalizà un statutu indè una colonna", "keyboard_shortcuts.compose": "fucalizà nant'à l'area di ridazzione", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descrizzione", - "keyboard_shortcuts.direct": "per apre una culonna di missaghji diretti", "keyboard_shortcuts.down": "falà indè a lista", "keyboard_shortcuts.enter": "apre u statutu", "keyboard_shortcuts.favourite": "aghjunghje à i favuriti", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", "navigation_bar.compose": "Scrive un novu statutu", - "navigation_bar.direct": "Missaghji diretti", "navigation_bar.discover": "Scopre", "navigation_bar.domain_blocks": "Duminii piattati", "navigation_bar.edit_profile": "Mudificà u prufile", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Toglie u scandagliu", "privacy.change": "Mudificà a cunfidenzialità di u statutu", "privacy.direct.long": "Mandà solu à quelli chì so mintuvati", - "privacy.direct.short": "Direttu", + "privacy.direct.short": "Direct", "privacy.private.long": "Mustrà solu à l'abbunati", - "privacy.private.short": "Privatu", - "privacy.public.long": "Mustrà à tuttu u mondu nant'à e linee pubbliche", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Pubblicu", - "privacy.unlisted.long": "Ùn mette micca nant'à e linee pubbliche", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Micca listatu", "refresh": "Attualizà", "regeneration_indicator.label": "Caricamentu…", @@ -515,6 +514,7 @@ "upload_error.poll": "Ùn si pò micca caricà fugliali cù i scandagli.", "upload_form.audio_description": "Discrizzione per i ciochi", "upload_form.description": "Discrizzione per i malvistosi", + "upload_form.description_missing": "No description added", "upload_form.edit": "Mudificà", "upload_form.thumbnail": "Cambià vignetta", "upload_form.undo": "Sguassà", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 7b74c67f8..a92faea2d 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -5,7 +5,7 @@ "account.badges.group": "Skupina", "account.block": "Zablokovat @{name}", "account.block_domain": "Blokovat doménu {domain}", - "account.blocked": "Blokováno", + "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", "account.cancel_follow_request": "Zrušit žádost o sledování", "account.direct": "Poslat @{name} přímou zprávu", @@ -18,7 +18,7 @@ "account.followers": "Sledující", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", "account.followers_counter": "{count, plural, one {{counter} Sledující} few {{counter} Sledující} many {{counter} Sledujících} other {{counter} Sledujících}}", - "account.following": "Following", + "account.following": "Sledujete", "account.following_counter": "{count, plural, one {{counter} Sledovaný} few {{counter} Sledovaní} many {{counter} Sledovaných} other {{counter} Sledovaných}}", "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", @@ -41,15 +41,15 @@ "account.statuses_counter": "{count, plural, one {{counter} Příspěvek} few {{counter} Příspěvky} many {{counter} Příspěvků} other {{counter} Příspěvků}}", "account.unblock": "Odblokovat @{name}", "account.unblock_domain": "Odblokovat doménu {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Odblokovat", "account.unendorse": "Nezvýrazňovat na profilu", "account.unfollow": "Přestat sledovat", - "account.unmute": "Zrušit skrytí @{name}", - "account.unmute_notifications": "Zrušit skrytí oznámení od @{name}", - "account.unmute_short": "Unmute", + "account.unmute": "Odkrýt @{name}", + "account.unmute_notifications": "Odkrýt oznámení od @{name}", + "account.unmute_short": "Odkrýt", "account_note.placeholder": "Klikněte pro přidání poznámky", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Míra udržení uživatelů podle dne po registraci", + "admin.dashboard.monthly_retention": "Míra udržení uživatelů podle měsíce po registraci", "admin.dashboard.retention.average": "Průměr", "admin.dashboard.retention.cohort": "Měsíc registrace", "admin.dashboard.retention.cohort_size": "Noví uživatelé", @@ -70,7 +70,7 @@ "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", "column.community": "Místní časová osa", - "column.direct": "Přímé zprávy", + "column.conversations": "Konverzace", "column.directory": "Prozkoumat profily", "column.domain_blocks": "Blokované domény", "column.favourites": "Oblíbené", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Pouze místní", "community.column_settings.media_only": "Pouze média", "community.column_settings.remote_only": "Pouze vzdálené", - "compose_form.direct_message_warning": "Tento příspěvek bude odeslán pouze zmíněným uživatelům.", "compose_form.direct_message_warning_learn_more": "Zjistit více", + "compose_form.encryption_warning": "Příspěvky na Mastodonu nejsou end-to-end šifrovány. Nesdílejte přes Mastodon žádné nebezpečné informace.", "compose_form.hashtag_warning": "Tento příspěvek nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné příspěvky mohou být vyhledány podle hashtagu.", "compose_form.lock_disclaimer": "Váš účet není {locked}. Kdokoliv vás může sledovat a vidět vaše příspěvky učené pouze pro sledující.", "compose_form.lock_disclaimer.lock": "uzamčen", @@ -106,7 +106,7 @@ "compose_form.poll.switch_to_single": "Povolit u ankety výběr jediné možnosti", "compose_form.publish": "Odeslat", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Uložit změny", "compose_form.sensitive.hide": "{count, plural, one {Označit média za citlivá} few {Označit média za citlivá} many {Označit média za citlivá} other {Označit média za citlivá}}", "compose_form.sensitive.marked": "{count, plural, one {Média jsou označena za citlivá} few {Média jsou označena za citlivá} many {Média jsou označena za citlivá} other {Média jsou označena za citlivá}}", "compose_form.sensitive.unmarked": "{count, plural, one {Média nejsou označena za citlivá} few {Média nejsou označena za citlivá} many {Média nejsou označena za citlivá} other {Média nejsou označena za citlivá}}", @@ -166,9 +166,9 @@ "empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.", "empty_column.bookmarked_statuses": "Ještě nemáte v záložkách žádné příspěvky. Pokud si do nich nějaký přidáte, zobrazí se zde.", "empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!", - "empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.", + "empty_column.conversations": "Jakmile pošlete nebo obdržíte příspěvek, který je viditelný pouze lidem v něm zmíněným, objeví se tady.", "empty_column.domain_blocks": "Ještě nemáte žádné blokované domény.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Momentálně není nic populární. Vraťte se později!", "empty_column.favourited_statuses": "Ještě nemáte žádné oblíbené příspěvky. Pokud si nějaký oblíbíte, zobrazí se zde.", "empty_column.favourites": "Tento příspěvek si ještě nikdo neoblíbil. Pokud to někdo udělá, zobrazí se zde.", "empty_column.follow_recommendations": "Zdá se, že pro vás nelze vygenerovat žádné návrhy. Můžete zkusit přes vyhledávání naleznout lidi, které znáte, nebo prozkoumat populární hashtagy.", @@ -187,18 +187,18 @@ "error.unexpected_crash.next_steps_addons": "Zkuste je vypnout a stránku obnovit. Pokud to nepomůže, zkuste otevřít Mastodon v jiném prohlížeči nebo nativní aplikaci.", "errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky", "errors.unexpected_crash.report_issue": "Nahlásit problém", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Výsledky hledání", + "explore.suggested_follows": "Pro vás", + "explore.title": "Objevování", + "explore.trending_links": "Zprávy", + "explore.trending_statuses": "Příspěvky", + "explore.trending_tags": "Hashtagy", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.", "follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vaší domovské ose. Nebojte se, že uděláte chybu, můžete lidi stejně snadno kdykoliv přestat sledovat!", "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", - "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, {domain} si myslí, že budete chtít následující požadavky na sledování zkontrolovat ručně.", + "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", "generic.saved": "Uloženo", "getting_started.developers": "Vývojáři", "getting_started.directory": "Adresář profilů", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Boostnout příspěvek", "keyboard_shortcuts.column": "Focus na sloupec", "keyboard_shortcuts.compose": "Focus na textové pole nového příspěvku", + "keyboard_shortcuts.conversations": "Otevřít sloupec konverzací", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "Otevřít sloupec přímých zpráv", "keyboard_shortcuts.down": "Posunout dolů v seznamu", "keyboard_shortcuts.enter": "Otevřít příspěvek", "keyboard_shortcuts.favourite": "Oblíbit příspěvek", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Místní časová osa", "navigation_bar.compose": "Vytvořit nový příspěvek", - "navigation_bar.direct": "Přímé zprávy", "navigation_bar.discover": "Objevujte", "navigation_bar.domain_blocks": "Blokované domény", "navigation_bar.edit_profile": "Upravit profil", @@ -309,7 +308,7 @@ "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", "navigation_bar.security": "Zabezpečení", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "Uživatel {name} se zaregistroval", "notification.favourite": "Uživatel {name} si oblíbil váš příspěvek", "notification.follow": "Uživatel {name} vás začal sledovat", "notification.follow_request": "Uživatel {name} požádal o povolení vás sledovat", @@ -318,10 +317,10 @@ "notification.poll": "Anketa, ve které jste hlasovali, skončila", "notification.reblog": "Uživatel {name} boostnul váš příspěvek", "notification.status": "Nový příspěvek od {name}", - "notification.update": "uživatel {name} upravil příspěvek", - "notifications.clear": "Smazat oznámení", + "notification.update": "Uživatel {name} upravil příspěvek", + "notifications.clear": "Vymazat oznámení", "notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nové registrace:", "notifications.column_settings.alert": "Oznámení na počítači", "notifications.column_settings.favourite": "Oblíbení:", "notifications.column_settings.filter_bar.advanced": "Zobrazit všechny kategorie", @@ -366,44 +365,44 @@ "poll_button.add_poll": "Přidat anketu", "poll_button.remove_poll": "Odstranit anketu", "privacy.change": "Změnit soukromí příspěvku", - "privacy.direct.long": "Viditelné pouze pro zmíněné uživatele", - "privacy.direct.short": "Přímý", - "privacy.private.long": "Viditelné pouze pro sledující", - "privacy.private.short": "Pouze pro sledující", - "privacy.public.long": "Viditelné pro všechny, i ve veřejných časových osách", + "privacy.direct.long": "Viditelný pouze pro zmíněné uživatele", + "privacy.direct.short": "Pouze lidé, které zmíním", + "privacy.private.long": "Viditelný pouze pro sledující", + "privacy.private.short": "Pouze sledující", + "privacy.public.long": "Viditelný pro všechny", "privacy.public.short": "Veřejný", - "privacy.unlisted.long": "Viditelné pro všechny, ale ne ve veřejných časových osách", + "privacy.unlisted.long": "Viditelný pro všechny, ale vyňat z funkcí objevování", "privacy.unlisted.short": "Neuvedený", "refresh": "Obnovit", "regeneration_indicator.label": "Načítání…", "regeneration_indicator.sublabel": "Váš domovský kanál se připravuje!", "relative_time.days": "{number} d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.days": "před {number, plural, one {# dnem} few {# dny} many {# dny} other {# dny}}", + "relative_time.full.hours": "před {number, plural, one {# hodinou} few {# hodinami} many {# hodinami} other {# hodinami}}", "relative_time.full.just_now": "právě teď", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.minutes": "před {number, plural, one {# minutou} few {# minutami} many {# minutami} other {# minutami}}", + "relative_time.full.seconds": "před {number, plural, one {# sekundou} few {# sekundami} many {# sekundami} other {# sekundami}}", "relative_time.hours": "{number} h", "relative_time.just_now": "teď", "relative_time.minutes": "{number} m", "relative_time.seconds": "{number} s", "relative_time.today": "dnes", "reply_indicator.cancel": "Zrušit", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Zablokovat", + "report.block_explanation": "Neuvidíte jejich příspěvky. Oni neuvidí vaše příspěvky ani vás nebudou moci sledovat. Poznají, že jsou blokováni.", "report.categories.other": "Ostatní", "report.categories.spam": "Spam", "report.categories.violation": "Obsah porušuje jedno nebo více pravidel serveru", "report.category.subtitle": "Vyberte nejbližší možnost", "report.category.title": "Povězte nám, proč chcete {type} nahlásit", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.title_account": "profil", + "report.category.title_status": "příspěvek", + "report.close": "Hotovo", + "report.comment.title": "Ještě něco jiného, co myslíte, že bychom měli vědět?", "report.forward": "Přeposlat na {target}", "report.forward_hint": "Tento účet je z jiného serveru. Chcete na něj také poslat anonymizovanou kopii hlášení?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute": "Skrýt", + "report.mute_explanation": "Neuvidíte jejich příspěvky. Oni vás mohou nadále sledovat i vidět vaše příspěvky a nebudou vědět, že jsou skryti.", "report.next": "Dále", "report.placeholder": "Dodatečné komentáře", "report.reasons.dislike": "Nelíbí se mi", @@ -420,12 +419,12 @@ "report.statuses.title": "Existují příspěvky dokládající toto hlášení?", "report.submit": "Odeslat", "report.target": "Nahlášení uživatele {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Tady jsou vaše možnosti pro řízení toho, co na Mastodonu vidíte:", + "report.thanks.take_action_actionable": "Zatímco to posuzujeme, můžete podniknout kroky proti @{name}:", + "report.thanks.title": "Nechcete tohle vidět?", + "report.thanks.title_actionable": "Děkujeme za nahlášení, podíváme se na to.", + "report.unfollow": "Přestat sledovat @{name}", + "report.unfollow_explanation": "Tento účet sledujete. Abyste už neviděli jejich příspěvky ve své domácí časové ose, přestaňte je sledovat.", "search.placeholder": "Hledat", "search_popout.search_format": "Pokročilé hledání", "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.", @@ -434,9 +433,9 @@ "search_popout.tips.text": "Jednoduchý text vrací odpovídající zobrazovaná jména, přezdívky a hashtagy", "search_popout.tips.user": "uživatel", "search_results.accounts": "Lidé", - "search_results.all": "All", + "search_results.all": "Vše", "search_results.hashtags": "Hashtagy", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Pro tyto hledané výrazy nebylo nic nenalezeno", "search_results.statuses": "Příspěvky", "search_results.statuses_fts_disabled": "Vyhledávání příspěvků podle jejich obsahu není na tomto Mastodon serveru povoleno.", "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}", @@ -450,14 +449,14 @@ "status.delete": "Smazat", "status.detailed_status": "Podrobné zobrazení konverzace", "status.direct": "Poslat @{name} přímou zprávu", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Upravit", + "status.edited": "Upraven {date}", + "status.edited_x_times": "Upraven {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}", "status.embed": "Vložit na web", "status.favourite": "Oblíbit", "status.filtered": "Filtrováno", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "Uživatel {name} vytvořil {date}", + "status.history.edited": "Uživatel {name} upravil {date}", "status.load_more": "Zobrazit více", "status.media_hidden": "Média skryta", "status.mention": "Zmínit @{name}", @@ -501,7 +500,7 @@ "time_remaining.seconds": "{number, plural, one {Zbývá # sekunda} few {Zbývají # sekundy} many {Zbývá # sekund} other {Zbývá # sekund}}", "timeline_hint.remote_resource_not_displayed": "{resource} z jiných serveru se nezobrazuje.", "timeline_hint.resources.followers": "Sledující", - "timeline_hint.resources.follows": "Sleduje", + "timeline_hint.resources.follows": "Sledovaní", "timeline_hint.resources.statuses": "Starší příspěvky", "trends.counter_by_accounts": "zmiňuje {count, plural, one {{counter} člověk} few {{counter} lidé} many {{counter} lidí} other {{counter} lidí}}", "trends.trending_now": "Právě populární", @@ -515,6 +514,7 @@ "upload_error.poll": "U anket není nahrávání souborů povoleno.", "upload_form.audio_description": "Popis pro sluchově postižené", "upload_form.description": "Popis pro zrakově postižené", + "upload_form.description_missing": "Nebyl přidán popis", "upload_form.edit": "Upravit", "upload_form.thumbnail": "Změnit miniaturu", "upload_form.undo": "Smazat", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index d3ac8d806..7edb1d1cf 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -4,26 +4,26 @@ "account.badges.bot": "Bot", "account.badges.group": "Grŵp", "account.block": "Blocio @{name}", - "account.block_domain": "Cuddio popeth rhag {domain}", + "account.block_domain": "Blocio parth {domain}", "account.blocked": "Blociwyd", "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", "account.cancel_follow_request": "Canslo cais dilyn", "account.direct": "Neges breifat @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Parth wedi ei guddio", + "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", + "account.domain_blocked": "Parth wedi ei flocio", "account.edit_profile": "Golygu proffil", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Arddangos ar fy mhroffil", "account.follow": "Dilyn", "account.followers": "Dilynwyr", - "account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.", - "account.followers_counter": "{count, plural, one {{counter} Ddilynwr} other {{counter} o Ddilynwyr}}", - "account.following": "Following", + "account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.", + "account.followers_counter": "{count, plural, one {{counter} Dilynwr} other {{counter} o Ddilynwyr}}", + "account.following": "Yn dilyn", "account.following_counter": "{count, plural, one {{counter} yn Dilyn} other {{counter} yn Dilyn}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.follows_you": "Yn eich dilyn chi", "account.hide_reblogs": "Cuddio bwstiau o @{name}", - "account.joined": "Joined {date}", + "account.joined": "Ymunodd {date}", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", "account.media": "Cyfryngau", @@ -32,8 +32,8 @@ "account.mute": "Tawelu @{name}", "account.mute_notifications": "Cuddio hysbysiadau o @{name}", "account.muted": "Distewyd", - "account.posts": "Tŵtiau", - "account.posts_with_replies": "Tŵtiau ac atebion", + "account.posts": "Postiadau", + "account.posts_with_replies": "Postiadau ac atebion", "account.report": "Adrodd @{name}", "account.requested": "Aros am gymeradwyaeth. Cliciwch er mwyn canslo cais dilyn", "account.share": "Rhannwch broffil @{name}", @@ -41,24 +41,24 @@ "account.statuses_counter": "{count, plural, one {{counter} Dŵt} other {{counter} o Dŵtiau}}", "account.unblock": "Dadflocio @{name}", "account.unblock_domain": "Dadguddio {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Dad-flocio", "account.unendorse": "Peidio a'i arddangos ar fy mhroffil", "account.unfollow": "Dad-ddilyn", "account.unmute": "Dad-dawelu @{name}", "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Dad-dewi", "account_note.placeholder": "Clicio i ychwanegu nodyn", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.daily_retention": "Cyfradd cadw defnyddwyr fesul diwrnod ar ôl cofrestru", + "admin.dashboard.monthly_retention": "Cyfradd cadw defnyddwyr fesul mis ar ôl cofrestru", + "admin.dashboard.retention.average": "Cyfartaledd", + "admin.dashboard.retention.cohort": "Mis cofrestru", "admin.dashboard.retention.cohort_size": "Defnyddwyr newydd", "alert.rate_limited.message": "Ceisiwch eto ar ôl {retry_time, time, medium}.", "alert.rate_limited.title": "Cyfradd gyfyngedig", "alert.unexpected.message": "Digwyddodd gwall annisgwyl.", "alert.unexpected.title": "Wps!", "announcement.announcement": "Cyhoeddiad", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(heb eu prosesu)", "autosuggest_hashtag.per_week": "{count} yr wythnos", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", @@ -70,7 +70,7 @@ "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", "column.community": "Ffrwd lleol", - "column.direct": "Negeseuon preifat", + "column.conversations": "Sgyrsiau", "column.directory": "Pori proffiliau", "column.domain_blocks": "Parthau cuddiedig", "column.favourites": "Ffefrynnau", @@ -79,7 +79,7 @@ "column.lists": "Rhestrau", "column.mutes": "Defnyddwyr a ddistewyd", "column.notifications": "Hysbysiadau", - "column.pins": "Tŵtiau wedi eu pinio", + "column.pins": "Postiadau wedi eu pinio", "column.public": "Ffrwd y ffederasiwn", "column_back_button.label": "Nôl", "column_header.hide_settings": "Cuddio dewisiadau", @@ -92,10 +92,10 @@ "community.column_settings.local_only": "Lleol yn unig", "community.column_settings.media_only": "Cyfryngau yn unig", "community.column_settings.remote_only": "Anghysbell yn unig", - "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.", - "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich tŵtiau dilynwyr-yn-unig.", + "compose_form.encryption_warning": "Dyw postiadau ar Mastodon ddim wedi'u hamgryptio o ben i ben. Peidiwch â rhannu unrhyw wybodaeth beryglus dros Mastodon.", + "compose_form.hashtag_warning": "Ni fydd y post hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond postiadau cyhoeddus gellid chwilio amdanynt drwy hashnod.", + "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich postiadau dilynwyr-yn-unig.", "compose_form.lock_disclaimer.lock": "wedi ei gloi", "compose_form.placeholder": "Beth sydd ar eich meddwl?", "compose_form.poll.add_option": "Ychwanegu Dewisiad", @@ -106,7 +106,7 @@ "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", "compose_form.publish": "Tŵt", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Cadw newidiadau", "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif", "compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif", "compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif", @@ -118,11 +118,11 @@ "confirmations.block.confirm": "Blocio", "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?", "confirmations.delete.confirm": "Dileu", - "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y tŵt hwn?", + "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y post hwn?", "confirmations.delete_list.confirm": "Dileu", "confirmations.delete_list.message": "Ydych chi'n sicr eich bod eisiau dileu y rhestr hwn am byth?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Gwaredu", + "confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg, eu taflu beth bynnag?", "confirmations.domain_block.confirm": "Cuddio parth cyfan", "confirmations.domain_block.message": "A ydych yn hollol, hollol sicr eich bod am flocio y {domain} cyfan? Yn y nifer helaeth o achosion mae blocio neu tawelu ambell gyfrif yn ddigonol ac yn well. Ni fyddwch yn gweld cynnwys o'r parth hwnnw mewn unrhyw ffrydiau cyhoeddus na chwaith yn eich hysbysiadau. Bydd hyn yn cael gwared o'ch dilynwyr o'r parth hwnnw.", "confirmations.logout.confirm": "Allgofnodi", @@ -131,7 +131,7 @@ "confirmations.mute.explanation": "Bydd hyn yn cuddio pyst oddi wrthynt a physt sydd yn sôn amdanynt, ond bydd hyn dal yn gadael iddyn nhw gweld eich pyst a'ch dilyn.", "confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?", "confirmations.redraft.confirm": "Dileu & ailddrafftio", - "confirmations.redraft.message": "Ydych chi'n siwr eich bod eisiau dileu y tŵt hwn a'i ailddrafftio? Bydd ffefrynnau a bwstiau'n cael ei colli, a bydd ymatebion i'r tŵt gwreiddiol yn cael eu hamddifadu.", + "confirmations.redraft.message": "Ydych chi'n siwr eich bod eisiau dileu y post hwn a'i ailddrafftio? Bydd ffefrynnau a hybiau'n cael ei colli, a bydd ymatebion i'r post gwreiddiol yn cael eu hamddifadu.", "confirmations.reply.confirm": "Ateb", "confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n sicr yr ydych am barhau?", "confirmations.unfollow.confirm": "Dad-ddilynwch", @@ -140,11 +140,11 @@ "conversation.mark_as_read": "Nodi fel wedi'i ddarllen", "conversation.open": "Gweld sgwrs", "conversation.with": "Gyda {names}", - "directory.federated": "O ffedysawd hysbys", + "directory.federated": "O'r ffedysawd cyfan", "directory.local": "O {domain} yn unig", "directory.new_arrivals": "Newydd-ddyfodiaid", "directory.recently_active": "Yn weithredol yn ddiweddar", - "embed.instructions": "Mewnblannwch y tŵt hwn ar eich gwefan drwy gopïo'r côd isod.", + "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.preview": "Dyma sut olwg fydd arno:", "emoji_button.activity": "Gweithgarwch", "emoji_button.custom": "Unigryw", @@ -160,42 +160,42 @@ "emoji_button.search_results": "Canlyniadau chwilio", "emoji_button.symbols": "Symbolau", "emoji_button.travel": "Teithio & Llefydd", - "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "Dim tŵtiau fama!", + "empty_column.account_suspended": "Cyfrif wedi'i atal", + "empty_column.account_timeline": "Dim postiadau yma!", "empty_column.account_unavailable": "Proffil ddim ar gael", "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.", "empty_column.bookmarked_statuses": "Nid oes gennych unrhyw dwtiau tudalnodiedig eto. Pan y byddwch yn tudalnodi un, mi fydd yn ymddangos yma.", "empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!", - "empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.", + "empty_column.conversations": "Unwaith y byddwch chi'n anfon neu'n derbyn post sydd ond yn weladwy i'r bobl a grybwyllir ynddo, bydd yn ymddangos yma.", "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Does dim byd yn trendio ar hyn o bryd. Gwiriwch yn ôl yn nes ymlaen!", "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff dwtiau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.", - "empty_column.favourites": "Nid oes neb wedi hoffi'r tŵt yma eto. Pan bydd rhywun yn ei hoffi, byddent yn ymddangos yma.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.favourites": "Does neb wedi hoffi'r post hwn eto. Pan bydd rhywun yn ei hoffi, byddent yn ymddangos yma.", + "empty_column.follow_recommendations": "Does dim awgrymiadau yma i chi. Gallwch geisio chwilio am bobl yr ydych yn eu hadnabod neu archwilio hashnodau sy'n trendio.", "empty_column.follow_requests": "Nid oes gennych unrhyw geisiadau dilyn eto. Pan dderbyniwch chi un, byddent yn ymddangos yma.", "empty_column.hashtag": "Nid oes dim ar yr hashnod hwn eto.", "empty_column.home": "Mae eich ffrwd gartref yn wag! Ymwelwch a {public} neu defnyddiwch y chwilotwr i ddechrau arni ac i gwrdd a defnyddwyr eraill.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Gweler awgrymiadau", "empty_column.list": "Nid oes dim yn y rhestr yma eto. Pan y bydd aelodau'r rhestr yn cyhoeddi statws newydd, mi fydd yn ymddangos yma.", "empty_column.lists": "Nid oes gennych unrhyw restrau eto. Pan grëwch chi un, mi fydd yn ymddangos yma.", "empty_column.mutes": "Nid ydych wedi tawelu unrhyw ddefnyddwyr eto.", "empty_column.notifications": "Nid oes gennych unrhyw hysbysiadau eto. Rhyngweithiwch ac eraill i ddechrau'r sgwrs.", "empty_column.public": "Does dim byd yma! Ysgrifennwch rhywbeth yn gyhoeddus, neu dilynwch ddefnyddwyr o achosion eraill i'w lenwi", "error.unexpected_crash.explanation": "Oherwydd gwall yn ein cod neu oherwydd problem cysondeb porwr, nid oedd y dudalen hon gallu cael ei dangos yn gywir.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.explanation_addons": "Ni ellid arddangos y dudalen hon yn gywir. Mae'r gwall hwn yn debygol o gael ei achosi gan ategyn porwr neu offer cyfieithu awtomatig.", "error.unexpected_crash.next_steps": "Ceisiwch ail-lwytho y dudalen. Os nad yw hyn yn eich helpu, efallai gallech defnyddio Mastodon trwy borwr neu ap brodorol gwahanol.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Ceisiwch eu hanalluogi ac adnewyddu'r dudalen. Os nad yw hynny'n helpu, efallai y byddwch yn dal i allu defnyddio Mastodon trwy borwr neu ap cynhenid arall.", "errors.unexpected_crash.copy_stacktrace": "Copïo'r olrhain stac i'r clipfwrdd", "errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Canlyniadau chwilio", + "explore.suggested_follows": "I chi", + "explore.title": "Archwilio", + "explore.trending_links": "Newyddion", + "explore.trending_statuses": "Postiau", + "explore.trending_tags": "Hanshnodau", "follow_recommendations.done": "Wedi gorffen", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_recommendations.heading": "Dilynwch y bobl yr hoffech chi weld eu postiadau! Dyma ambell i awgrymiad.", + "follow_recommendations.lead": "Bydd postiadau gan bobl rydych chi'n eu dilyn yn ymddangos mewn trefn amser ar eich ffrwd cartref. Peidiwch â bod ofn gwneud camgymeriadau, gallwch chi ddad-ddilyn pobl yr un mor hawdd unrhyw bryd!", "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.", @@ -218,7 +218,7 @@ "hashtag.column_settings.tag_mode.none": "Dim o'r rhain", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "home.column_settings.basic": "Syml", - "home.column_settings.show_reblogs": "Dangos bŵstiau", + "home.column_settings.show_reblogs": "Dangos hybiau", "home.column_settings.show_replies": "Dangos ymatebion", "home.hide_announcements": "Cuddio cyhoeddiadau", "home.show_announcements": "Dangos cyhoeddiadau", @@ -228,26 +228,26 @@ "keyboard_shortcuts.back": "i lywio nôl", "keyboard_shortcuts.blocked": "i agor rhestr defnyddwyr a flociwyd", "keyboard_shortcuts.boost": "i fŵstio", - "keyboard_shortcuts.column": "i ffocysu tŵt yn un o'r colofnau", + "keyboard_shortcuts.column": "Ffocysu colofn", "keyboard_shortcuts.compose": "i ffocysu yr ardal cyfansoddi testun", + "keyboard_shortcuts.conversations": "i agor colofn sgyrsiau", "keyboard_shortcuts.description": "Disgrifiad", - "keyboard_shortcuts.direct": "i agor colofn negeseuon preifat", "keyboard_shortcuts.down": "i symud lawr yn y rhestr", - "keyboard_shortcuts.enter": "i agor tŵt", + "keyboard_shortcuts.enter": "Agor post", "keyboard_shortcuts.favourite": "i hoffi", "keyboard_shortcuts.favourites": "i agor rhestr hoffi", "keyboard_shortcuts.federated": "i agor ffrwd y ffederasiwn", "keyboard_shortcuts.heading": "Llwybrau byr allweddell", "keyboard_shortcuts.home": "i agor ffrwd cartref", "keyboard_shortcuts.hotkey": "Bysell brys", - "keyboard_shortcuts.legend": "i ddangos yr arwr yma", + "keyboard_shortcuts.legend": "i ddangos y rhestr hon", "keyboard_shortcuts.local": "i agor ffrwd lleol", "keyboard_shortcuts.mention": "i grybwyll yr awdur", "keyboard_shortcuts.muted": "i agor rhestr defnyddwyr a dawelwyd", "keyboard_shortcuts.my_profile": "i agor eich proffil", "keyboard_shortcuts.notifications": "i agor colofn hysbysiadau", "keyboard_shortcuts.open_media": "i agor cyfryngau", - "keyboard_shortcuts.pinned": "i agor rhestr tŵtiau wedi'i pinio", + "keyboard_shortcuts.pinned": "Agor rhestr postiadau wedi'u pinio", "keyboard_shortcuts.profile": "i agor proffil yr awdur", "keyboard_shortcuts.reply": "i ateb", "keyboard_shortcuts.requests": "i agor rhestr ceisiadau dilyn", @@ -256,7 +256,7 @@ "keyboard_shortcuts.start": "i agor colofn \"dechrau arni\"", "keyboard_shortcuts.toggle_hidden": "i ddangos/cuddio testun tu ôl i CW", "keyboard_shortcuts.toggle_sensitivity": "i ddangos/gyddio cyfryngau", - "keyboard_shortcuts.toot": "i ddechrau tŵt newydd sbon", + "keyboard_shortcuts.toot": "Dechrau post newydd", "keyboard_shortcuts.unfocus": "i ddad-ffocysu ardal cyfansoddi testun/chwilio", "keyboard_shortcuts.up": "i symud yn uwch yn y rhestr", "lightbox.close": "Cau", @@ -275,7 +275,7 @@ "lists.replies_policy.list": "Aelodau'r rhestr", "lists.replies_policy.none": "Neb", "lists.replies_policy.title": "Dangos ymatebion i:", - "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn", + "lists.search": "Chwilio ymysg pobl yr ydych yn eu dilyn", "lists.subheading": "Eich rhestrau", "load_pending": "{count, plural, one {# eitem newydd} other {# eitemau newydd}}", "loading_indicator.label": "Llwytho...", @@ -289,12 +289,11 @@ "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", - "navigation_bar.compose": "Cyfansoddi tŵt newydd", - "navigation_bar.direct": "Negeseuon preifat", + "navigation_bar.compose": "Cyfansoddi post newydd", "navigation_bar.discover": "Darganfod", "navigation_bar.domain_blocks": "Parthau cuddiedig", "navigation_bar.edit_profile": "Golygu proffil", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Archwilio", "navigation_bar.favourites": "Ffefrynnau", "navigation_bar.filters": "Geiriau a dawelwyd", "navigation_bar.follow_requests": "Ceisiadau dilyn", @@ -305,28 +304,28 @@ "navigation_bar.logout": "Allgofnodi", "navigation_bar.mutes": "Defnyddwyr a dawelwyd", "navigation_bar.personal": "Personol", - "navigation_bar.pins": "Tŵtiau wedi eu pinio", + "navigation_bar.pins": "Postiadau wedi eu pinio", "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.security": "Diogelwch", - "notification.admin.sign_up": "{name} signed up", - "notification.favourite": "hoffodd {name} eich tŵt", - "notification.follow": "dilynodd {name} chi", + "notification.admin.sign_up": "Cofrestrodd {name}", + "notification.favourite": "Hoffodd {name} eich post", + "notification.follow": "Dilynodd {name} chi", "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn", "notification.mention": "Soniodd {name} amdanoch chi", "notification.own_poll": "Mae eich pôl wedi diweddu", "notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben", - "notification.reblog": "Hysbysebodd {name} eich tŵt", + "notification.reblog": "Hybodd {name} eich post", "notification.status": "{name} newydd ei bostio", - "notification.update": "{name} edited a post", + "notification.update": "Golygodd {name} bost", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Cofrestriadau newydd:", "notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith", "notifications.column_settings.favourite": "Ffefrynnau:", "notifications.column_settings.filter_bar.advanced": "Dangos pob categori", "notifications.column_settings.filter_bar.category": "Bar hidlo", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Dangos bar hidlo", "notifications.column_settings.follow": "Dilynwyr newydd:", "notifications.column_settings.follow_request": "Ceisiadau dilyn newydd:", "notifications.column_settings.mention": "Crybwylliadau:", @@ -336,10 +335,10 @@ "notifications.column_settings.show": "Dangos yn y golofn", "notifications.column_settings.sound": "Chwarae sain", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", - "notifications.filter.all": "Pob", + "notifications.column_settings.unread_notifications.category": "Hysbysiadau heb eu darllen", + "notifications.column_settings.unread_notifications.highlight": "Amlygu hysbysiadau heb eu darllen", + "notifications.column_settings.update": "Golygiadau:", + "notifications.filter.all": "Popeth", "notifications.filter.boosts": "Hybiadau", "notifications.filter.favourites": "Ffefrynnau", "notifications.filter.follows": "Yn dilyn", @@ -362,116 +361,116 @@ "poll.total_votes": "{count, plural, one {# bleidlais} other {# o bleidleisiau}}", "poll.vote": "Pleidleisio", "poll.voted": "Pleidleisioch chi am yr ateb hon", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# bleidlais} other {# o bleidleisiau}}", "poll_button.add_poll": "Ychwanegu pleidlais", "poll_button.remove_poll": "Tynnu pleidlais", - "privacy.change": "Addasu preifatrwdd y tŵt", + "privacy.change": "Addasu preifatrwdd y post", "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig", - "privacy.direct.short": "Uniongyrchol", + "privacy.direct.short": "Dim ond pobl rwy'n eu crybwyll", "privacy.private.long": "Cyhoeddi i ddilynwyr yn unig", - "privacy.private.short": "Dilynwyr-yn-unig", - "privacy.public.long": "Cyhoeddi i ffrydiau cyhoeddus", + "privacy.private.short": "Dilynwyr yn unig", + "privacy.public.long": "Gweladwy i bawb", "privacy.public.short": "Cyhoeddus", - "privacy.unlisted.long": "Peidio a chyhoeddi i ffrydiau cyhoeddus", + "privacy.unlisted.long": "Gweladwy i bawb, ond wedi optio allan o nodweddion darganfod", "privacy.unlisted.short": "Heb ei restru", "refresh": "Adnewyddu", "regeneration_indicator.label": "Llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", "relative_time.days": "{number}dydd", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}awr", + "relative_time.full.days": "{number, plural, one {# dydd} other {# o ddyddiau}} yn ôl", + "relative_time.full.hours": "{number, plural, one {# awr} other {# o oriau}} yn ôl", + "relative_time.full.just_now": "jyst nawr", + "relative_time.full.minutes": "{number, plural, one {# funud} other {# o funudau}} yn ôl", + "relative_time.full.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} yn ôl", + "relative_time.hours": "{number} awr", "relative_time.just_now": "nawr", - "relative_time.minutes": "{number}munud", + "relative_time.minutes": "{number} munud", "relative_time.seconds": "{number}eiliad", "relative_time.today": "heddiw", "reply_indicator.cancel": "Canslo", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Blocio", + "report.block_explanation": "Ni welwch chi eu postiadau. Ni allan nhw weld eich postiadau na'ch dilyn. Byddan nhw'n gallu gweld eu bod nhw wedi'u rhwystro.", "report.categories.other": "Arall", "report.categories.spam": "Sbam", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", + "report.categories.violation": "Mae cynnwys yn torri un neu fwy o reolau'r gweinydd", + "report.category.subtitle": "Dewiswch yr ateb gorau", + "report.category.title": "Beth sy'n bod â'r {type} hwn?", + "report.category.title_account": "proffil", "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.close": "Iawn", + "report.comment.title": "Oes unrhyw beth arall y dylem ei wybod yn eich barn chi?", "report.forward": "Ymlaen i {target}", "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Mudo", + "report.mute_explanation": "Ni fyddwch yn gweld eu postiadau. Gallant eich dilyn o hyd a gweld eich postiadau ac ni fyddant yn gwybod eu bod nhw wedi'u mudo.", + "report.next": "Nesaf", "report.placeholder": "Sylwadau ychwanegol", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Dydw i ddim yn ei hoffi", + "report.reasons.dislike_description": "Nid yw'n rhywbeth yr ydych am ei weld", + "report.reasons.other": "Mae'n rhywbeth arall", + "report.reasons.other_description": "Nid yw'r mater yn ffitio i gategorïau eraill", + "report.reasons.spam": "Sothach yw e", + "report.reasons.spam_description": "Cysylltiadau maleisus, ymgysylltu ffug, neu atebion ailadroddus", + "report.reasons.violation": "Mae'n torri rheolau'r gweinydd", + "report.reasons.violation_description": "Rydych yn ymwybodol ei fod yn torri rheolau penodol", + "report.rules.subtitle": "Dewiswch bob un sy'n berthnasol", + "report.rules.title": "Pa reolau sy'n cael eu torri?", + "report.statuses.subtitle": "Dewiswch bob un sy'n berthnasol", + "report.statuses.title": "Oes postiadau eraill sy'n cefnogi'r adroddiad hwn?", "report.submit": "Cyflwyno", "report.target": "Cwyno am {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Dyma'ch opsiynau ar gyfer rheoli'r hyn a welwch ar Mastodon:", + "report.thanks.take_action_actionable": "Tra byddwn yn edrych ar hyn, gallwch gymryd camau yn erbyn @{name}:", + "report.thanks.title": "Ddim eisiau gweld hwn?", + "report.thanks.title_actionable": "Diolch am adrodd, byddwn yn ymchwilio i hyn.", + "report.unfollow": "Dad-ddilyn @{name}", + "report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich porthiant cartref mwyach, dad-ddilynwch nhw.", "search.placeholder": "Chwilio", "search_popout.search_format": "Fformat chwilio uwch", - "search_popout.tips.full_text": "Mae testun syml yn dychwelyd tŵtiau yr ydych wedi ysgrifennu, hoffi, wedi'u bŵstio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", + "search_popout.tips.full_text": "Mae testun syml yn dychwelyd postiadau yr ydych wedi ysgrifennu, hoffi, wedi'u hybio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", "search_popout.tips.hashtag": "hashnod", - "search_popout.tips.status": "tŵt", + "search_popout.tips.status": "post", "search_popout.tips.text": "Mae testun syml yn dychwelyd enwau arddangos, enwau defnyddwyr a hashnodau sy'n cyfateb", "search_popout.tips.user": "defnyddiwr", "search_results.accounts": "Pobl", - "search_results.all": "All", + "search_results.all": "Popeth", "search_results.hashtags": "Hanshnodau", - "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "Tŵtiau", - "search_results.statuses_fts_disabled": "Nid yw chwilio Tŵtiau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", - "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn", + "search_results.statuses": "Postiadau", + "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", + "search_results.total": "{count, number} {count, plural, zero {canlyniad} one {canlyniad} two {ganlyniad} other {o ganlyniadau}}", "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}", - "status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio", + "status.admin_status": "Agor y post hwn yn y rhyngwyneb goruwchwylio", "status.block": "Blocio @{name}", "status.bookmark": "Tudalnodi", "status.cancel_reblog_private": "Dadfŵstio", - "status.cannot_reblog": "Ni ellir sbarduno'r tŵt hwn", - "status.copy": "Copïo cysylltiad i'r tŵt", + "status.cannot_reblog": "Ni ellir hybio'r post hwn", + "status.copy": "Copïo dolen i'r post", "status.delete": "Dileu", "status.detailed_status": "Golwg manwl o'r sgwrs", "status.direct": "Neges breifat @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Golygu", + "status.edited": "Ymunodd {date}", + "status.edited_x_times": "Golygwyd {count, plural, one {unwaith} two {dwywaith} other {{count} gwaith}}", "status.embed": "Plannu", "status.favourite": "Hoffi", "status.filtered": "Wedi'i hidlo", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} greuodd {date}", + "status.history.edited": "{name} olygodd {date}", "status.load_more": "Llwythwch mwy", "status.media_hidden": "Cyfryngau wedi'u cuddio", "status.mention": "Crybwyll @{name}", "status.more": "Mwy", "status.mute": "Tawelu @{name}", "status.mute_conversation": "Tawelu sgwrs", - "status.open": "Ehangu'r tŵt hwn", + "status.open": "Ehangu'r post hwn", "status.pin": "Pinio ar y proffil", - "status.pinned": "Pinio tŵt", + "status.pinned": "Pinio post", "status.read_more": "Darllen mwy", "status.reblog": "Hybu", "status.reblog_private": "Hybu i'r gynulleidfa wreiddiol", - "status.reblogged_by": "Bŵstio {name}", - "status.reblogs.empty": "Does neb wedi bŵstio'r tŵt yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", + "status.reblogged_by": "Hybio {name}", + "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.redraft": "Dileu & ailddrafftio", "status.remove_bookmark": "Tynnu'r tudalnod", "status.reply": "Ateb", @@ -502,7 +501,7 @@ "timeline_hint.remote_resource_not_displayed": "ni chaiff {resource} o gweinyddion eraill ei ddangos.", "timeline_hint.resources.followers": "Dilynwyr", "timeline_hint.resources.follows": "Yn dilyn", - "timeline_hint.resources.statuses": "Tŵtiau henach", + "timeline_hint.resources.statuses": "Postiadau hŷn", "trends.counter_by_accounts": "{count, plural, one {{counter} berson} other {{counter} o bobl}}", "trends.trending_now": "Yn tueddu nawr", "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.", @@ -515,19 +514,20 @@ "upload_error.poll": "Nid oes modd uwchlwytho ffeiliau â phleidleisiau.", "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw", "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg", + "upload_form.description_missing": "Dim disgrifiad wedi'i ychwanegu", "upload_form.edit": "Golygu", "upload_form.thumbnail": "Newid mân-lun", "upload_form.undo": "Dileu", "upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg", "upload_modal.analyzing_picture": "Dadansoddi llun…", "upload_modal.apply": "Gweithredu", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Gweithio…", "upload_modal.choose_image": "Dewis delwedd", "upload_modal.description_placeholder": "Mae ei phen bach llawn jocs, 'run peth a fy nghot golff, rhai dyddiau", "upload_modal.detect_text": "Canfod testun o'r llun", "upload_modal.edit_media": "Golygu cyfryngau", "upload_modal.hint": "Cliciwch neu llusgwch y cylch ar y rhagolwg i ddewis y canolbwynt a fydd bob amser i'w weld ar bob mân-lunau.", - "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preparing_ocr": "Paratoi OCR…", "upload_modal.preview_label": "Rhagolwg ({ratio})", "upload_progress.label": "Uwchlwytho...", "video.close": "Cau fideo", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 9107e5a27..f18565a7c 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -70,7 +70,7 @@ "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", - "column.direct": "Direkte beskeder", + "column.conversations": "Konversationer", "column.directory": "Tjek profiler", "column.domain_blocks": "Blokerede domæner", "column.favourites": "Favoritter", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Kun medier", "community.column_settings.remote_only": "Kun udefra", - "compose_form.direct_message_warning": "Indlægget sendes kun til de nævnte brugere.", "compose_form.direct_message_warning_learn_more": "Få mere at vide", + "compose_form.encryption_warning": "Indlæg på Mastodon er ikke ende-til-ende krypteret. Del derfor ikke sensitiv information over Mastodon.", "compose_form.hashtag_warning": "Da indlægget ikke er offentligt, vises det ikke under noget hashtag, idet kun offentlige indlæg kan søges via hashtags.", "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Enhver kan følge dig og se indlæg kun beregnet for følgere.", "compose_form.lock_disclaimer.lock": "låst", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ingen brugere blokeret endnu.", "empty_column.bookmarked_statuses": "Du har ingen bogmærkede indlæg endnu. Når du bogmærker ét, vil det dukke op hér.", "empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!", - "empty_column.direct": "Du har endnu ingen direkte beskeder. Når du sender eller modtager én, vil den dukke op hér.", + "empty_column.conversations": "Når der sendes eller modtages indlæg, som kun er synligt for personer nævnt heri, vil de dukke op her.", "empty_column.domain_blocks": "Ingen blokerede domæner endnu.", "empty_column.explore_statuses": "Ingen nye tendensen pt. Tjek igen senere!", "empty_column.favourited_statuses": "Du har endnu ingen favoritindlæg. Når du favoritmarkerer ét, vil det dukke op hér.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Boost indlæg", "keyboard_shortcuts.column": "Fokusér kolonne", "keyboard_shortcuts.compose": "Fokusér skriveområdet", + "keyboard_shortcuts.conversations": "for at åbne konversationskolonnen", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "Åbn Direkte beskeder-kolonnen", "keyboard_shortcuts.down": "Flyt nedad på listen", "keyboard_shortcuts.enter": "Åbn indlæg", "keyboard_shortcuts.favourite": "Favoritmarkér indlæg", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv nyt indlæg", - "navigation_bar.direct": "Direkte beskeder", "navigation_bar.discover": "Opdag", "navigation_bar.domain_blocks": "Blokerede domæner", "navigation_bar.edit_profile": "Redigér profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Fjern afstemning", "privacy.change": "Justér indlægsfortrolighed", "privacy.direct.long": "Kun synlig for nævnte brugere", - "privacy.direct.short": "Direkte", + "privacy.direct.short": "Kun personer, jeg nævner", "privacy.private.long": "Kun synlig for følgere", - "privacy.private.short": "Kun for følgere", - "privacy.public.long": "Synlig for alle, fremgår på offentlige tidslinjer", + "privacy.private.short": "Kun følgere", + "privacy.public.long": "Synlig for alle", "privacy.public.short": "Offentlig", - "privacy.unlisted.long": "Synlig for alle, fremgår ikke på offentlige tidslinjer", + "privacy.unlisted.long": "Synlig for alle, men med fravalgt visning i opdagelsesfunktioner", "privacy.unlisted.short": "Diskret", "refresh": "Genindlæs", "regeneration_indicator.label": "Indlæser…", @@ -506,15 +505,16 @@ "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} taler", "trends.trending_now": "Hot lige nu", "ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.", - "units.short.billion": "{count} MIA", - "units.short.million": "{count} M", - "units.short.thousand": "{count} K", + "units.short.billion": "{count} mia.", + "units.short.million": "{count} mio.", + "units.short.thousand": "{count} tusind", "upload_area.title": "Træk og slip for at uploade", "upload_button.label": "Tilføj billed-, video- eller lydfil(er)", "upload_error.limit": "Grænse for filupload nået.", "upload_error.poll": "Filupload ikke tilladt for afstemninger.", "upload_form.audio_description": "Beskrivelse til hørehæmmede", "upload_form.description": "Beskrivelse til svagtseende", + "upload_form.description_missing": "Ingen beskrivelse tilføjet", "upload_form.edit": "Redigér", "upload_form.thumbnail": "Skift miniature", "upload_form.undo": "Slet", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 4168649e5..8ade26360 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -13,22 +13,22 @@ "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Auf Profil hervorheben", + "account.endorse": "Im Profil anzeigen", "account.follow": "Folgen", "account.followers": "Follower", - "account.followers.empty": "Diesem Profil folgt noch niemand.", + "account.followers.empty": "Diesem Profil folgt bislang niemand.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", "account.following": "Folgt", - "account.following_counter": "{count, plural, one {{counter} Folgender} other {{counter} Folgende}}", + "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", "account.follows.empty": "Dieses Profil folgt noch niemandem.", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined": "Beigetreten am {date}", "account.link_verified_on": "Besitz dieses Links wurde geprüft am {date}", - "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf gesperrt gesetzt. Die Person bestimmt manuell wer ihm/ihr folgen darf.", + "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", "account.mention": "@{name} erwähnen", - "account.moved_to": "{name} ist umgezogen auf:", + "account.moved_to": "{name} ist umgezogen nach:", "account.mute": "@{name} stummschalten", "account.mute_notifications": "Benachrichtigungen von @{name} stummschalten", "account.muted": "Stummgeschaltet", @@ -39,26 +39,26 @@ "account.share": "Profil von @{name} teilen", "account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen", "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", - "account.unblock": "@{name} entblocken", + "account.unblock": "Blockierung von @{name} aufheben", "account.unblock_domain": "{domain} wieder anzeigen", "account.unblock_short": "Blockierung aufheben", - "account.unendorse": "Nicht auf Profil hervorheben", + "account.unendorse": "Nicht mehr im Profil anzeigen", "account.unfollow": "Entfolgen", - "account.unmute": "@{name} nicht mehr stummschalten", + "account.unmute": "Stummschaltung von @{name} aufheben", "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten", - "account.unmute_short": "Nicht mehr stummschalten", + "account.unmute_short": "Stummschaltung aufheben", "account_note.placeholder": "Notiz durch Klicken hinzufügen", "admin.dashboard.daily_retention": "Benutzerverbleibrate nach Tag nach Anmeldung", "admin.dashboard.monthly_retention": "Benutzerverbleibrate nach Monat nach Anmeldung", "admin.dashboard.retention.average": "Durchschnitt", - "admin.dashboard.retention.cohort": "Anmeldemonat", + "admin.dashboard.retention.cohort": "Monat der Anmeldung", "admin.dashboard.retention.cohort_size": "Neue Benutzer", - "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium}.", + "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium} erneut.", "alert.rate_limited.title": "Anfragelimit überschritten", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", "alert.unexpected.title": "Hoppla!", "announcement.announcement": "Ankündigung", - "attachments_list.unprocessed": "(unverarbeitet)", + "attachments_list.unprocessed": "(ausstehend)", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", @@ -70,7 +70,7 @@ "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", "column.community": "Lokale Zeitleiste", - "column.direct": "Direktnachrichten", + "column.conversations": "Konversationen", "column.directory": "Profile durchsuchen", "column.domain_blocks": "Blockierte Domains", "column.favourites": "Favoriten", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Nur lokal", "community.column_settings.media_only": "Nur Medien", "community.column_settings.remote_only": "Nur entfernt", - "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.encryption_warning": "Beiträge auf Mastodon sind nicht Ende-zu-Ende-verschlüsselt. Teile keine sensiblen Informationen über Mastodon.", "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.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "gesperrt", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du hast keine Profile blockiert.", "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.", "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!", - "empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.", + "empty_column.conversations": "Sobald du einen Beitrag sendest oder empfängst, der nur für die in ihm erwähnten Personen sichtbar ist, wird er hier angezeigt.", "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder!", "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", @@ -176,7 +176,7 @@ "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", "empty_column.home": "Deine Startseite ist leer! Besuche {public} oder nutze die Suche, um loszulegen und andere Leute zu finden.", "empty_column.home.suggestions": "Ein paar Vorschläge ansehen", - "empty_column.list": "Diese Liste ist derzeit leer. Wenn Wesen auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", + "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", "empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "teilen", "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren", "keyboard_shortcuts.compose": "fokussiere das Eingabefeld", + "keyboard_shortcuts.conversations": "um die Konversationsspalte zu öffnen", "keyboard_shortcuts.description": "Beschreibung", - "keyboard_shortcuts.direct": "Direct-Message-Spalte öffnen", "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen", "keyboard_shortcuts.enter": "Beitrag öffnen", "keyboard_shortcuts.favourite": "um zu favorisieren", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Lesezeichen", "navigation_bar.community_timeline": "Lokale Zeitleiste", "navigation_bar.compose": "Neuen Beitrag verfassen", - "navigation_bar.direct": "Direktnachrichten", "navigation_bar.discover": "Entdecken", "navigation_bar.domain_blocks": "Versteckte Domains", "navigation_bar.edit_profile": "Profil bearbeiten", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", "privacy.direct.long": "Wird an erwähnte Profile gesendet", - "privacy.direct.short": "Direktnachricht", + "privacy.direct.short": "Nur Leute, die ich erwähne", "privacy.private.long": "Nur für Folgende sichtbar", - "privacy.private.short": "Nur für Folgende", - "privacy.public.long": "Wird in öffentlichen Zeitleisten erscheinen", + "privacy.private.short": "Nur Follower", + "privacy.public.long": "Für alle sichtbar", "privacy.public.short": "Öffentlich", - "privacy.unlisted.long": "Wird in öffentlichen Zeitleisten nicht gezeigt", + "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Entdeckungsfunktionen", "privacy.unlisted.short": "Nicht gelistet", "refresh": "Aktualisieren", "regeneration_indicator.label": "Laden…", @@ -515,6 +514,7 @@ "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.", "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen", "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben", + "upload_form.description_missing": "Keine Beschreibung hinzugefügt", "upload_form.edit": "Bearbeiten", "upload_form.thumbnail": "Miniaturansicht ändern", "upload_form.undo": "Löschen", @@ -523,7 +523,7 @@ "upload_modal.apply": "Übernehmen", "upload_modal.applying": "Anwenden…", "upload_modal.choose_image": "Bild auswählen", - "upload_modal.description_placeholder": "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste", + "upload_modal.description_placeholder": "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich", "upload_modal.detect_text": "Text aus Bild erkennen", "upload_modal.edit_media": "Medien bearbeiten", "upload_modal.hint": "Klicke oder ziehe den Kreis auf die Vorschau, um den Brennpunkt auszuwählen, der immer auf allen Vorschaubilder angezeigt wird.", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index dd9ac029b..3a82eaa14 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -206,7 +206,7 @@ { "descriptors": [ { - "defaultMessage": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "defaultMessage": "{count, plural, one {{counter} Post} other {{counter} Posts}}", "id": "account.statuses_counter" }, { @@ -659,7 +659,7 @@ "id": "privacy.private.short" }, { - "defaultMessage": "Direct", + "defaultMessage": "Mentioned people only", "id": "privacy.direct.short" }, { @@ -671,7 +671,7 @@ "id": "status.filtered" }, { - "defaultMessage": "Pinned toot", + "defaultMessage": "Pinned post", "id": "status.pinned" }, { @@ -773,11 +773,11 @@ { "descriptors": [ { - "defaultMessage": "Toots", + "defaultMessage": "Posts", "id": "account.posts" }, { - "defaultMessage": "Toots and replies", + "defaultMessage": "Posts and replies", "id": "account.posts_with_replies" }, { @@ -820,7 +820,7 @@ { "descriptors": [ { - "defaultMessage": "Older toots", + "defaultMessage": "Older posts", "id": "timeline_hint.resources.statuses" }, { @@ -832,7 +832,7 @@ "id": "empty_column.account_unavailable" }, { - "defaultMessage": "No toots here!", + "defaultMessage": "No posts found", "id": "empty_column.account_timeline" } ], @@ -946,7 +946,7 @@ "id": "account.disable_notifications" }, { - "defaultMessage": "Pinned toots", + "defaultMessage": "Pinned posts", "id": "navigation_bar.pins" }, { @@ -1069,7 +1069,7 @@ "id": "column.bookmarks" }, { - "defaultMessage": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "defaultMessage": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "id": "empty_column.bookmarked_statuses" } ], @@ -1104,7 +1104,7 @@ "id": "account.edit_profile" }, { - "defaultMessage": "Pinned toots", + "defaultMessage": "Pinned posts", "id": "navigation_bar.pins" }, { @@ -1306,7 +1306,7 @@ "id": "privacy.public.short" }, { - "defaultMessage": "Visible for all, shown in public timelines", + "defaultMessage": "Visible for all", "id": "privacy.public.long" }, { @@ -1314,11 +1314,11 @@ "id": "privacy.unlisted.short" }, { - "defaultMessage": "Visible for all, but not in public timelines", + "defaultMessage": "Visible for all, but opted-out of discovery features", "id": "privacy.unlisted.long" }, { - "defaultMessage": "Followers-only", + "defaultMessage": "Followers only", "id": "privacy.private.short" }, { @@ -1326,7 +1326,7 @@ "id": "privacy.private.long" }, { - "defaultMessage": "Direct", + "defaultMessage": "Mentioned people only", "id": "privacy.direct.short" }, { @@ -1364,11 +1364,11 @@ "id": "search_results.accounts" }, { - "defaultMessage": "Toots", + "defaultMessage": "Posts", "id": "search_results.statuses" }, { - "defaultMessage": "Searching toots by their content is not enabled on this Mastodon server.", + "defaultMessage": "Searching posts by their content is not enabled on this Mastodon server.", "id": "search_results.statuses_fts_disabled" }, { @@ -1442,6 +1442,10 @@ { "defaultMessage": "Edit", "id": "upload_form.edit" + }, + { + "defaultMessage": "No description added", + "id": "upload_form.description_missing" } ], "path": "app/javascript/mastodon/features/compose/components/upload.json" @@ -1500,12 +1504,12 @@ "id": "compose_form.lock_disclaimer.lock" }, { - "defaultMessage": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "defaultMessage": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "id": "compose_form.hashtag_warning" }, { - "defaultMessage": "This toot will only be sent to all the mentioned users.", - "id": "compose_form.direct_message_warning" + "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "id": "compose_form.encryption_warning" }, { "defaultMessage": "Learn more", @@ -1545,7 +1549,7 @@ "id": "navigation_bar.logout" }, { - "defaultMessage": "Compose new toot", + "defaultMessage": "Compose new post", "id": "navigation_bar.compose" }, { @@ -1615,6 +1619,14 @@ "defaultMessage": "Direct messages", "id": "column.direct" }, + { + "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "id": "compose_form.encryption_warning" + }, + { + "defaultMessage": "Learn more", + "id": "compose_form.direct_message_warning_learn_more" + }, { "defaultMessage": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "id": "empty_column.direct" @@ -1661,7 +1673,7 @@ "id": "confirmations.unfollow.message" }, { - "defaultMessage": "Toots", + "defaultMessage": "Posts", "id": "account.posts" }, { @@ -1765,7 +1777,7 @@ "id": "search_results.hashtags" }, { - "defaultMessage": "Toots", + "defaultMessage": "Posts", "id": "search_results.statuses" } ], @@ -1787,7 +1799,7 @@ "id": "column.favourites" }, { - "defaultMessage": "You don't have any favourite toots yet. When you favourite one, it will show up here.", + "defaultMessage": "You don't have any favourite posts yet. When you favourite one, it will show up here.", "id": "empty_column.favourited_statuses" } ], @@ -1800,7 +1812,7 @@ "id": "refresh" }, { - "defaultMessage": "No one has favourited this toot yet. When someone does, they will show up here.", + "defaultMessage": "No one has favourited this post yet. When someone does, they will show up here.", "id": "empty_column.favourites" } ], @@ -1993,7 +2005,7 @@ "id": "navigation_bar.mutes" }, { - "defaultMessage": "Pinned toots", + "defaultMessage": "Pinned posts", "id": "navigation_bar.pins" }, { @@ -2182,7 +2194,7 @@ "id": "keyboard_shortcuts.compose" }, { - "defaultMessage": "to start a brand new toot", + "defaultMessage": "to start a brand new post", "id": "keyboard_shortcuts.toot" }, { @@ -2230,7 +2242,7 @@ "id": "keyboard_shortcuts.favourites" }, { - "defaultMessage": "to open pinned toots list", + "defaultMessage": "to open pinned posts list", "id": "keyboard_shortcuts.pinned" }, { @@ -2464,7 +2476,7 @@ "id": "notifications.column_settings.poll" }, { - "defaultMessage": "New toots:", + "defaultMessage": "New posts:", "id": "notifications.column_settings.status" }, { @@ -2686,7 +2698,7 @@ { "descriptors": [ { - "defaultMessage": "Pinned toot", + "defaultMessage": "Pinned post", "id": "column.pins" } ], @@ -2725,7 +2737,7 @@ "id": "refresh" }, { - "defaultMessage": "No one has boosted this toot yet. When someone does, they will show up here.", + "defaultMessage": "No one has boosted this post yet. When someone does, they will show up here.", "id": "status.reblogs.empty" } ], diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index b3d1d0221..632b03be1 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -70,7 +70,7 @@ "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", "column.community": "Τοπική ροή", - "column.direct": "Προσωπικά μηνύματα", + "column.conversations": "Συνομιλίες", "column.directory": "Δες προφίλ", "column.domain_blocks": "Κρυμμένοι τομείς", "column.favourites": "Αγαπημένα", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Τοπικά μόνο", "community.column_settings.media_only": "Μόνο πολυμέσα", "community.column_settings.remote_only": "Απομακρυσμένα μόνο", - "compose_form.direct_message_warning": "Αυτό το τουτ θα σταλεί μόνο στους αναφερόμενους χρήστες.", "compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα", + "compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε επικίνδυνες πληροφορίες μέσω του Mastodon.", "compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.", "compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.", "compose_form.lock_disclaimer.lock": "κλειδωμένο", @@ -166,7 +166,7 @@ "empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.", "empty_column.bookmarked_statuses": "Δεν έχεις κανένα αποθηκευμένο τουτ ακόμα. Μόλις αποθηκεύσεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!", - "empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.", + "empty_column.conversations": "Μόλις στείλετε ή λάβετε μια δημοσίευση που είναι ορατή μόνο σε άτομα που αναφέρονται σε αυτή, θα εμφανιστεί εδώ.", "empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Δεν έχεις κανένα αγαπημένο τουτ ακόμα. Μόλις αγαπήσεις κάποιο, θα εμφανιστεί εδώ.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "προώθηση", "keyboard_shortcuts.column": "εμφάνιση της κατάστασης σε μια από τις στήλες", "keyboard_shortcuts.compose": "εστίαση στην περιοχή συγγραφής", + "keyboard_shortcuts.conversations": "για να ανοίξετε στήλη συνομιλιών", "keyboard_shortcuts.description": "Περιγραφή", - "keyboard_shortcuts.direct": "άνοιγμα στήλης απευθείας μηνυμάτων", "keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "εμφάνιση κατάστασης", "keyboard_shortcuts.favourite": "σημείωση ως αγαπημένο", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", "navigation_bar.compose": "Γράψε νέο τουτ", - "navigation_bar.direct": "Προσωπικά μηνύματα", "navigation_bar.discover": "Ανακάλυψη", "navigation_bar.domain_blocks": "Κρυμμένοι τομείς", "navigation_bar.edit_profile": "Επεξεργασία προφίλ", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Αφαίρεση δημοσκόπησης", "privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης", "privacy.direct.long": "Δημοσίευση μόνο σε όσους και όσες αναφέρονται", - "privacy.direct.short": "Προσωπικά", + "privacy.direct.short": "Μόνο άτομα που αναφέρω", "privacy.private.long": "Δημοσίευση μόνο στους ακόλουθους", "privacy.private.short": "Μόνο ακόλουθοι", - "privacy.public.long": "Δημοσίευσε στις δημόσιες ροές", + "privacy.public.long": "Ορατό σε όλους", "privacy.public.short": "Δημόσιο", - "privacy.unlisted.long": "Μην δημοσιεύσεις στις δημόσιες ροές", + "privacy.unlisted.long": "Ορατό για όλους, αλλά opted-out των χαρακτηριστικών της ανακάλυψης", "privacy.unlisted.short": "Μη καταχωρημένα", "refresh": "Ανανέωση", "regeneration_indicator.label": "Φορτώνει…", @@ -515,6 +514,7 @@ "upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.", "upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής", "upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης", + "upload_form.description_missing": "Δεν προστέθηκε περιγραφή", "upload_form.edit": "Ενημέρωση", "upload_form.thumbnail": "Αλλαγή μικρογραφίας", "upload_form.undo": "Διαγραφή", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 514bda041..b0d8d1d86 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -96,8 +96,8 @@ "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 post will only be sent to the mentioned users.", "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -235,7 +235,7 @@ "keyboard_shortcuts.column": "Focus column", "keyboard_shortcuts.compose": "Focus compose textarea", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "Open direct messages column", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Move down in the list", "keyboard_shortcuts.enter": "Open post", "keyboard_shortcuts.favourite": "Favourite post", @@ -372,12 +372,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Change post privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Mentioned people only", "privacy.private.long": "Visible for followers only", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.private.short": "Followers only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -520,6 +520,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 9d1da06a4..71ab82313 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -70,7 +70,7 @@ "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", - "column.direct": "Rektaj mesaĝoj", + "column.conversations": "Conversations", "column.directory": "Trarigardi profilojn", "column.domain_blocks": "Blokitaj domajnoj", "column.favourites": "Stelumoj", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Nur loka", "community.column_settings.media_only": "Nur aŭdovidaĵoj", "community.column_settings.remote_only": "Nur malproksima", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", "compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.", "compose_form.lock_disclaimer.lock": "ŝlosita", @@ -166,12 +166,12 @@ "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.", "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis mesaĝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.", "empty_column.community": "La loka templinio estas malplena. Skribu ion por plenigi ĝin!", - "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", "empty_column.favourited_statuses": "Vi ankoraŭ ne stelumis mesaĝon. Kiam vi stelumos iun, tiu aperos ĉi tie.", "empty_column.favourites": "Ankoraŭ neniu stelumis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.", "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.", "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", "empty_column.home": "Via hejma tempolinio estas malplena! Vizitu {public} aŭ uzu la serĉilon por renkonti aliajn uzantojn.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "diskonigi", "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Priskribo", - "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", @@ -290,11 +290,10 @@ "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", "navigation_bar.compose": "Skribi novan mesaĝon", - "navigation_bar.direct": "Rektaj mesaĝoj", "navigation_bar.discover": "Esplori", "navigation_bar.domain_blocks": "Blokitaj domajnoj", "navigation_bar.edit_profile": "Redakti profilon", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Esplori", "navigation_bar.favourites": "Stelumoj", "navigation_bar.filters": "Silentigitaj vortoj", "navigation_bar.follow_requests": "Petoj de sekvado", @@ -321,7 +320,7 @@ "notification.update": "{name} redaktis afiŝon", "notifications.clear": "Forviŝi sciigojn", "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Novaj registriĝoj:", "notifications.column_settings.alert": "Retumilaj sciigoj", "notifications.column_settings.favourite": "Stelumoj:", "notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn", @@ -337,7 +336,7 @@ "notifications.column_settings.sound": "Eligi sonon", "notifications.column_settings.status": "Novaj mesaĝoj:", "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn", "notifications.column_settings.update": "Redaktoj:", "notifications.filter.all": "Ĉiuj", "notifications.filter.boosts": "Diskonigoj", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Forigi balotenketon", "privacy.change": "Agordi mesaĝan privatecon", "privacy.direct.long": "Videbla nur al menciitaj uzantoj", - "privacy.direct.short": "Rekta", + "privacy.direct.short": "Direct", "privacy.private.long": "Videbla nur al viaj sekvantoj", - "privacy.private.short": "Nur al sekvantoj", - "privacy.public.long": "Videbla al ĉiuj, afiŝita en publikaj templinioj", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publika", - "privacy.unlisted.long": "Videbla al ĉiuj, sed ne en publikaj templinioj", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nelistigita", "refresh": "Refreŝigu", "regeneration_indicator.label": "Ŝargado…", @@ -394,8 +393,8 @@ "report.categories.other": "Aliaj", "report.categories.spam": "Spamo", "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", + "report.category.subtitle": "Elektu la plej bonan kongruon", + "report.category.title": "Diru al ni kio okazas pri ĉi tiu {type}", "report.category.title_account": "profilo", "report.category.title_status": "afiŝo", "report.close": "Farita", @@ -407,25 +406,25 @@ "report.next": "Sekva", "report.placeholder": "Pliaj komentoj", "report.reasons.dislike": "Mi ne ŝatas ĝin", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.dislike_description": "Ĝi ne estas io, kiun vi volas vidi", + "report.reasons.other": "Io alia", + "report.reasons.other_description": "La problemo ne taŭgas en aliaj kategorioj", + "report.reasons.spam": "Ĝi estas trudaĵo", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "Ĝi malrespektas servilajn regulojn", "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", + "report.rules.subtitle": "Elektu ĉiujn, kiuj validas", "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", + "report.statuses.subtitle": "Elektu ĉiujn, kiuj validas", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Sendi", "report.target": "Signali {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.thanks.title": "Ĉu vi ne volas vidi ĉi tion?", + "report.thanks.title_actionable": "Dankon pro raporti, ni esploros ĉi tion.", "report.unfollow": "Malsekvi @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.unfollow_explanation": "Vi estas sekvanta ĉi tiun konton. Por ne plu vidi ties afiŝojn en via hejma templinio, malsekvu ilin.", "search.placeholder": "Serĉi", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", @@ -436,7 +435,7 @@ "search_results.accounts": "Homoj", "search_results.all": "Ĉiuj", "search_results.hashtags": "Kradvortoj", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Povis trovi nenion por ĉi tiuj serĉaj terminoj", "search_results.statuses": "Mesaĝoj", "search_results.statuses_fts_disabled": "Serĉi mesaĝojn laŭ enhavo ne estas ebligita en ĉi tiu Mastodon-servilo.", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}", @@ -515,6 +514,7 @@ "upload_error.poll": "Alŝuto de dosiero ne permesita kun balotenketo.", "upload_form.audio_description": "Priskribi por homoj kiuj malfacile aŭdi", "upload_form.description": "Priskribi por misvidantaj homoj", + "upload_form.description_missing": "Neniu priskribo aldonita", "upload_form.edit": "Redakti", "upload_form.thumbnail": "Ŝanĝi etigita bildo", "upload_form.undo": "Forigi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index b239c69e6..1eac00cff 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea temporal local", - "column.direct": "Mensajes directos", + "column.conversations": "Conversaciones", "column.directory": "Explorar perfiles", "column.domain_blocks": "Dominios bloqueados", "column.favourites": "Favoritos", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Sólo local", "community.column_settings.media_only": "Sólo medios", "community.column_settings.remote_only": "Sólo remoto", - "compose_form.direct_message_warning": "Este mensaje sólo será enviado a los usuarios mencionados.", "compose_form.direct_message_warning_learn_more": "Aprendé más", + "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información sensible al usar Mastodon.", "compose_form.hashtag_warning": "Este mensaje no se mostrará bajo ninguna etiqueta porque no es público. Sólo los mensajes públicos se pueden buscar por etiquetas.", "compose_form.lock_disclaimer": "Tu cuenta no es {locked}. Todos pueden seguirte para ver tus mensajes marcados como \"Sólo para seguidores\".", "compose_form.lock_disclaimer.lock": "privada", @@ -166,7 +166,7 @@ "empty_column.blocks": "Todavía no bloqueaste a ningún usuario.", "empty_column.bookmarked_statuses": "Todavía no tenés mensajes guardados en \"Marcadores\". Cuando guardés uno en \"Marcadores\", se mostrará acá.", "empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!", - "empty_column.direct": "Todavía no tenés ningún mensaje directo. Cuando enviés o recibás uno, se mostrará acá.", + "empty_column.conversations": "Una vez que enviés o recibás un mensaje que sólo sea visible para la gente mencionada en él, aparecerá aquí.", "empty_column.domain_blocks": "Todavía no hay dominios bloqueados.", "empty_column.explore_statuses": "No hay nada en tendencia ahora mismo. ¡Volvé a revisar más tarde!", "empty_column.favourited_statuses": "Todavía no tenés mensajes favoritos. Cuando marqués uno como favorito, se mostrará acá.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Adherir al mensaje", "keyboard_shortcuts.column": "Enfocar columna", "keyboard_shortcuts.compose": "Enfocar el área de texto de redacción", + "keyboard_shortcuts.conversations": "para abrir la columna de conversaciones", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "Abrir columna de mensajes directos", "keyboard_shortcuts.down": "Bajar en la lista", "keyboard_shortcuts.enter": "Abrir mensaje", "keyboard_shortcuts.favourite": "Marcar mensaje como favorito", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea temporal local", "navigation_bar.compose": "Redactar un nuevo mensaje", - "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios bloqueados", "navigation_bar.edit_profile": "Editar perfil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Quitar encuesta", "privacy.change": "Configurar privacidad del mensaje", "privacy.direct.long": "Visible sólo para los usuarios mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Sólo a las cuentas que menciono", "privacy.private.long": "Visible sólo para los seguidores", "privacy.private.short": "Sólo para seguidores", - "privacy.public.long": "Visible para todos, mostrado en las líneas temporales públicas", + "privacy.public.long": "Visible para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "Visible para todos, pero no en las líneas temporales públicas", + "privacy.unlisted.long": "Visible para todos, pero excluido de las características de descubrimiento", "privacy.unlisted.short": "No listado", "refresh": "Refrescar", "regeneration_indicator.label": "Cargando…", @@ -515,6 +514,7 @@ "upload_error.poll": "No se permite la subida de archivos en encuestas.", "upload_form.audio_description": "Agregá una descripción para personas con dificultades auditivas", "upload_form.description": "Agregá una descripción para personas con dificultades visuales", + "upload_form.description_missing": "No se agregó descripción", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Eliminar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index ccdca8d9c..c51ed52a6 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.direct": "Mensajes directos", + "column.conversations": "Conversations", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Solo local", "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", "compose_form.lock_disclaimer": "Tu cuenta no está bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -166,7 +166,7 @@ "empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.bookmarked_statuses": "Aún no tienes ningún toot guardado como marcador. Cuando guardes uno, se mostrará aquí.", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", - "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", "empty_column.explore_statuses": "Nada es tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes toots preferidos. Cuando marques uno como favorito, aparecerá aquí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "retootear", "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "abrir la columna de mensajes directos", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", "navigation_bar.compose": "Escribir un nuevo toot", - "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Direct", "privacy.private.long": "Sólo mostrar a seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Mostrar en la historia federada", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Público", - "privacy.unlisted.long": "No mostrar en la historia federada", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "No listado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", @@ -515,6 +514,7 @@ "upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para los usuarios con dificultad visual", + "upload_form.description_missing": "Ninguna descripción añadida", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Borrar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index ba33d8a6c..83888e634 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.direct": "Mensajes directos", + "column.conversations": "Conversaciones", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Solo local", "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", - "compose_form.direct_message_warning": "Esta nueva publicación solo será enviada a los usuarios mencionados.", "compose_form.direct_message_warning_learn_more": "Aprender más", + "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información confidencial en Mastodon.", "compose_form.hashtag_warning": "Esta publicación no se mostrará bajo ningún hashtag porque no está listada. Sólo las publicaciones públicas se pueden buscar por hashtag.", "compose_form.lock_disclaimer": "Tu cuenta no está {locked}. Todos pueden seguirte para ver tus publicaciones solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -166,7 +166,7 @@ "empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.bookmarked_statuses": "Aún no tienes ninguna publicación guardada como marcador. Cuando guardes una, se mostrará aquí.", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", - "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", + "empty_column.conversations": "Una vez que envíe o reciba un mensaje que solo sea visible para la gente mencionada en él, aparecerá aquí.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", "empty_column.explore_statuses": "Nada está en tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes publicaciones favoritas. Cuando marques una como favorita, aparecerá aquí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Retootear", "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", + "keyboard_shortcuts.conversations": "para abrir la columna de conversaciones", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "abrir la columna de mensajes directos", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea de tiempo local", "navigation_bar.compose": "Escribir nueva publicación", - "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Solo la gente que yo menciono", "privacy.private.long": "Sólo mostrar a seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Mostrar en la historia federada", + "privacy.private.short": "Solo seguidores", + "privacy.public.long": "Visible para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "No mostrar en la historia federada", + "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento", "privacy.unlisted.short": "No listado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", @@ -515,6 +514,7 @@ "upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para los usuarios con dificultad visual", + "upload_form.description_missing": "Ninguna descripción añadida", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Borrar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 839edb759..5438ae164 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -70,7 +70,7 @@ "column.blocks": "Blokeeritud kasutajad", "column.bookmarks": "Järjehoidjad", "column.community": "Kohalik ajajoon", - "column.direct": "Otsesõnumid", + "column.conversations": "Conversations", "column.directory": "Sirvi profiile", "column.domain_blocks": "Peidetud domeenid", "column.favourites": "Lemmikud", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Ainult kohalik", "community.column_settings.media_only": "Ainult meedia", "community.column_settings.remote_only": "Ainult kaug", - "compose_form.direct_message_warning": "See tuut saadetakse ainult mainitud kasutajatele.", "compose_form.direct_message_warning_learn_more": "Vaata veel", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Seda tuuti ei kuvata ühegi sildi all, sest see on kirjendamata. Ainult avalikud tuutid on sildi järgi otsitavad.", "compose_form.lock_disclaimer": "Teie konto ei ole {locked}. Igaüks saab Teid jälgida ja näha Teie ainult-jälgijatele postitusi.", "compose_form.lock_disclaimer.lock": "lukus", @@ -166,7 +166,7 @@ "empty_column.blocks": "Sa ei ole veel ühtegi kasutajat blokeerinud.", "empty_column.bookmarked_statuses": "Teil pole veel järjehoidjatesse lisatud tuututusi. Kui lisate mõne, näete neid siin.", "empty_column.community": "Kohalik ajajoon on tühi. Kirjutage midagi avalikult, et pall veerema ajada!", - "empty_column.direct": "Teil ei ole veel otsesõnumeid. Kui saadate või võtate mõne vastu, ilmuvad nad siia.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Siin ei ole veel peidetud domeene.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Teil pole veel lemmikuid tuute. Kui märgite mõne, näete neid siin.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "upitamiseks", "keyboard_shortcuts.column": "fokuseerimaks staatust ühele tulpadest", "keyboard_shortcuts.compose": "fokuseerimaks tekstikoostamise alale", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Kirjeldus", - "keyboard_shortcuts.direct": "avamaks otsesõnumite tulpa", "keyboard_shortcuts.down": "liikumaks nimstus alla", "keyboard_shortcuts.enter": "staatuse avamiseks", "keyboard_shortcuts.favourite": "lemmikuks märkimiseks", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", "navigation_bar.compose": "Koosta uus tuut", - "navigation_bar.direct": "Otsesõnumid", "navigation_bar.discover": "Avasta", "navigation_bar.domain_blocks": "Peidetud domeenid", "navigation_bar.edit_profile": "Muuda profiili", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Eemalda küsitlus", "privacy.change": "Muuda staatuse privaatsust", "privacy.direct.long": "Postita ainult mainitud kasutajatele", - "privacy.direct.short": "Otsene", + "privacy.direct.short": "Direct", "privacy.private.long": "Postita ainult jälgijatele", - "privacy.private.short": "Ainult jälgijatele", - "privacy.public.long": "Postita avalikele ajajoontele", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Avalik", - "privacy.unlisted.long": "Ära postita avalikele ajajoontele", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Määramata", "refresh": "Värskenda", "regeneration_indicator.label": "Laeb…", @@ -515,6 +514,7 @@ "upload_error.poll": "Küsitlustes pole faili üleslaadimine lubatud.", "upload_form.audio_description": "Kirjelda kuulmispuudega inimeste jaoks", "upload_form.description": "Kirjelda vaegnägijatele", + "upload_form.description_missing": "No description added", "upload_form.edit": "Redigeeri", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Kustuta", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 78c7c22cb..334290cbb 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -70,7 +70,7 @@ "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", - "column.direct": "Mezu zuzenak", + "column.conversations": "Conversations", "column.directory": "Arakatu profilak", "column.domain_blocks": "Ezkutatutako domeinuak", "column.favourites": "Gogokoak", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Lokala soilik", "community.column_settings.media_only": "Multimedia besterik ez", "community.column_settings.remote_only": "Urrunekoa soilik", - "compose_form.direct_message_warning": "Bidalketa hau aipatutako erabiltzaileei besterik ez zaie bidaliko.", "compose_form.direct_message_warning_learn_more": "Ikasi gehiago", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Bidalketa hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan bidalketa publikoak besterik ez dira agertzen.", "compose_form.lock_disclaimer": "Zure kontua ez dago {locked}. Edonork jarraitu zaitzake zure jarraitzaileentzako soilik diren bidalketak ikusteko.", "compose_form.lock_disclaimer.lock": "giltzapetuta", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.", "empty_column.bookmarked_statuses": "Oraindik ez dituzu bidalketa laster-markatutarik. Bat laster-markatzerakoan, hemen agertuko da.", "empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!", - "empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ez dago ezkutatutako domeinurik oraindik.", "empty_column.explore_statuses": "Ez dago joerarik une honetan. Begiratu beranduago!", "empty_column.favourited_statuses": "Ez duzu gogokorik oraindik. Gogokoren bat duzunean hemen agertuko da.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Bultzatu bidalketa", "keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea", "keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskripzioa", - "keyboard_shortcuts.direct": "mezu zuzenen zutabea irekitzeko", "keyboard_shortcuts.down": "zerrendan behera mugitzea", "keyboard_shortcuts.enter": "Ireki bidalketa", "keyboard_shortcuts.favourite": "Egin gogoko bidalketa", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Laster-markak", "navigation_bar.community_timeline": "Denbora-lerro lokala", "navigation_bar.compose": "Idatzi bidalketa berria", - "navigation_bar.direct": "Mezu zuzenak", "navigation_bar.discover": "Aurkitu", "navigation_bar.domain_blocks": "Ezkutatutako domeinuak", "navigation_bar.edit_profile": "Aldatu profila", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Kendu inkesta", "privacy.change": "Aldatu bidalketaren pribatutasuna", "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez", - "privacy.direct.short": "Zuzena", + "privacy.direct.short": "Direct", "privacy.private.long": "Bidali jarraitzaileei besterik ez", - "privacy.private.short": "Jarraitzaileak soilik", - "privacy.public.long": "Bistaratu denbora-lerro publikoetan", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publikoa", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Zerrendatu gabea", "refresh": "Berritu", "regeneration_indicator.label": "Kargatzen…", @@ -515,6 +514,7 @@ "upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.", "upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat", "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat", + "upload_form.description_missing": "No description added", "upload_form.edit": "Editatu", "upload_form.thumbnail": "Aldatu koadro txikia", "upload_form.undo": "Ezabatu", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 73a65ed78..ae74607ab 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -70,7 +70,7 @@ "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", "column.community": "خط زمانی محلّی", - "column.direct": "پیام‌های مستقیم", + "column.conversations": "Conversations", "column.directory": "مرور نمایه‌ها", "column.domain_blocks": "دامنه‌های مسدود شده", "column.favourites": "پسندیده‌ها", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "فقط محلّی", "community.column_settings.media_only": "فقط رسانه", "community.column_settings.remote_only": "تنها دوردست", - "compose_form.direct_message_warning": "این فرسته تنها به کاربرانی که از آن‌ها نام برده شده فرستاده خواهد شد.", "compose_form.direct_message_warning_learn_more": "بیشتر بدانید", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.", "compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی می‌تواند پی‌گیرتان شده و فرسته‌های ویژهٔ پی‌گیرانتان را ببیند.", "compose_form.lock_disclaimer.lock": "قفل‌شده", @@ -166,7 +166,7 @@ "empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.", "empty_column.bookmarked_statuses": "هنوز هیچ فرستهٔ نشانه‌گذاری شده‌ای ندارید. هنگامی که فرسته‌ای را نشانه‌گذاری کنید، این‌جا نشان داده خواهد شد.", "empty_column.community": "خط زمانی محلّی خالی است. چیزی بنویسید تا چرخش بچرخد!", - "empty_column.direct": "هنوز هیچ پیام مستقیمی ندارید. هنگامی که چنین پیامی بگیرید یا بفرستید این‌جا نشان داده خواهد شد.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "هنوز هیچ دامنه‌ای مسدود نشده است.", "empty_column.explore_statuses": "الآن چیزی پرطرفدار نیست. بعداً دوباره بررسی کنید!", "empty_column.favourited_statuses": "شما هنوز هیچ فرسته‌ای را نپسندیده‌اید. هنگامی که فرسته‌ای را بپسندید، این‌جا نشان داده خواهد شد.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "تقویت فرسته", "keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستون‌ها", "keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "توضیح", - "keyboard_shortcuts.direct": "گشودن ستون پیام‌های مستقیم", "keyboard_shortcuts.down": "پایین بردن در سیاهه", "keyboard_shortcuts.enter": "گشودن فرسته", "keyboard_shortcuts.favourite": "پسندیدن فرسته", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", "navigation_bar.compose": "نوشتن فرستهٔ تازه", - "navigation_bar.direct": "پیام‌های مستقیم", "navigation_bar.discover": "گشت و گذار", "navigation_bar.domain_blocks": "دامنه‌های مسدود شده", "navigation_bar.edit_profile": "ویرایش نمایه", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "برداشتن نظرسنجی", "privacy.change": "تغییر محرمانگی فرسته", "privacy.direct.long": "فقط برای کاربران نام‌برده نمایان است", - "privacy.direct.short": "مستقیم", + "privacy.direct.short": "Direct", "privacy.private.long": "نمایان فقط برای پی‌گیرندگان", - "privacy.private.short": "فقط پی‌گیرندگان", - "privacy.public.long": "نمایان برای همه، در خط‌های زمانی همگانی نمایش داده خواهد شد", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "عمومی", - "privacy.unlisted.long": "نمایان برای همه، ولی در خط‌های زمانی همگانی نمایش داده نخواهد شد", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "فهرست نشده", "refresh": "نوسازی", "regeneration_indicator.label": "در حال بار شدن…", @@ -515,6 +514,7 @@ "upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.", "upload_form.audio_description": "برای ناشنوایان توصیفش کنید", "upload_form.description": "برای کم‌بینایان توصیفش کنید", + "upload_form.description_missing": "No description added", "upload_form.edit": "ویرایش", "upload_form.thumbnail": "تغییر بندانگشتی", "upload_form.undo": "حذف", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index b62acfd56..0f3608f15 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -70,7 +70,7 @@ "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", - "column.direct": "Pikaviestit", + "column.conversations": "Conversations", "column.directory": "Selaa profiileja", "column.domain_blocks": "Piilotetut verkkotunnukset", "column.favourites": "Suosikit", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Vain paikalliset", "community.column_settings.media_only": "Vain media", "community.column_settings.remote_only": "Vain etäkäyttö", - "compose_form.direct_message_warning": "Tämä viesti näkyy vain mainituille käyttäjille.", "compose_form.direct_message_warning_learn_more": "Lisätietoja", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Tätä julkaisua listata minkään hastagin alle, koska se on listaamaton. Ainoastaan julkisia julkaisuja etsiä hastageilla.", "compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.", "compose_form.lock_disclaimer.lock": "lukittu", @@ -166,7 +166,7 @@ "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", - "empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä estetty.", "empty_column.explore_statuses": "Mikään ei ole nyt trendi. Tarkista myöhemmin!", "empty_column.favourited_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Buustaa viestiä", "keyboard_shortcuts.column": "Kohdista sarakkeeseen", "keyboard_shortcuts.compose": "siirry tekstinsyöttöön", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Kuvaus", - "keyboard_shortcuts.direct": "Avaa pikaviestisarake", "keyboard_shortcuts.down": "Siirry listassa alaspäin", "keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.favourite": "Lisää suosikkeihin", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", "navigation_bar.compose": "Luo uusi viesti", - "navigation_bar.direct": "Pikaviestit", "navigation_bar.discover": "Löydä uutta", "navigation_bar.domain_blocks": "Estetyt verkkotunnukset", "navigation_bar.edit_profile": "Muokkaa profiilia", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Poista kysely", "privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.direct.long": "Julkaise vain mainituille käyttäjille", - "privacy.direct.short": "Suora viesti", + "privacy.direct.short": "Direct", "privacy.private.long": "Julkaise vain seuraajille", - "privacy.private.short": "Vain seuraajat", - "privacy.public.long": "Julkaise julkisille aikajanoille", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Julkinen", - "privacy.unlisted.long": "Älä julkaise julkisilla aikajanoilla", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Listaamaton julkinen", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", @@ -515,6 +514,7 @@ "upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.", "upload_form.audio_description": "Kuvaile kuulovammaisille", "upload_form.description": "Anna kuvaus näkörajoitteisia varten", + "upload_form.description_missing": "No description added", "upload_form.edit": "Muokkaa", "upload_form.thumbnail": "Vaihda pikkukuva", "upload_form.undo": "Peru", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 833c41a5c..2dc31e98b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -70,7 +70,7 @@ "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", "column.community": "Fil public local", - "column.direct": "Messages directs", + "column.conversations": "Conversations", "column.directory": "Parcourir les profils", "column.domain_blocks": "Domaines bloqués", "column.favourites": "Favoris", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Local seulement", "community.column_settings.media_only": "Média uniquement", "community.column_settings.remote_only": "Distant seulement", - "compose_form.direct_message_warning": "Ce message 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.encryption_warning": "Les messages sur Mastodon ne sont pas chiffrés de bout en bout. Ne partagez aucune information confidentielle sur Mastodon.", "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.", "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos messages privés.", "compose_form.lock_disclaimer.lock": "verrouillé", @@ -166,7 +166,7 @@ "empty_column.blocks": "Vous n’avez bloqué aucun compte pour le moment.", "empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !", - "empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.", + "empty_column.conversations": "Une fois que vous avez envoyé ou reçu un message qui ne sera visible que par les personnes mentionnées, il apparaîtra ici.", "empty_column.domain_blocks": "Il n’y a aucun domaine bloqué pour le moment.", "empty_column.explore_statuses": "Rien n'est en tendance pour le moment. Revenez plus tard !", "empty_column.favourited_statuses": "Vous n’avez pas encore de message en favori. Lorsque vous en ajouterez un, il apparaîtra ici.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Partager le message", "keyboard_shortcuts.column": "Se placer dans une colonne", "keyboard_shortcuts.compose": "Se placer dans la zone de rédaction", + "keyboard_shortcuts.conversations": "pour ouvrir la colonne des conversations", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "Ouvrir la colonne des messages directs", "keyboard_shortcuts.down": "Descendre dans la liste", "keyboard_shortcuts.enter": "Ouvrir le message", "keyboard_shortcuts.favourite": "Ajouter le message aux favoris", @@ -279,7 +279,7 @@ "lists.subheading": "Vos listes", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", - "media_gallery.toggle_visible": "Intervertir la visibilité", + "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "missing_indicator.label": "Non trouvé", "missing_indicator.sublabel": "Ressource introuvable", "mute_modal.duration": "Durée", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Marque-pages", "navigation_bar.community_timeline": "Fil public local", "navigation_bar.compose": "Rédiger un nouveau message", - "navigation_bar.direct": "Messages directs", "navigation_bar.discover": "Découvrir", "navigation_bar.domain_blocks": "Domaines bloqués", "navigation_bar.edit_profile": "Modifier le profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Supprimer le sondage", "privacy.change": "Ajuster la confidentialité du message", "privacy.direct.long": "Visible uniquement par les comptes mentionnés", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Seulement les personnes mentionnées", "privacy.private.long": "Visible uniquement par vos abonné·e·s", "privacy.private.short": "Abonné·e·s uniquement", - "privacy.public.long": "Visible par tou·te·s, affiché dans les fils publics", + "privacy.public.long": "Visible pour tous", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible par tou·te·s, mais pas dans les fils publics", + "privacy.unlisted.long": "Visible pour tous, mais sans fonctionnalités de découverte", "privacy.unlisted.short": "Non listé", "refresh": "Actualiser", "regeneration_indicator.label": "Chargement…", @@ -515,6 +514,7 @@ "upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.", "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition", "upload_form.description": "Décrire pour les malvoyant·e·s", + "upload_form.description_missing": "Description manquante", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.undo": "Supprimer", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 7796e73be..d8397a574 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,54 +1,54 @@ { - "account.account_note_header": "Your note for @{name}", - "account.add_or_remove_from_list": "Add or Remove from lists", - "account.badges.bot": "Bot", - "account.badges.group": "Group", - "account.block": "Block @{name}", - "account.block_domain": "Hide everything from {domain}", - "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", - "account.direct": "Direct message @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Domain hidden", - "account.edit_profile": "Edit profile", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Feature on profile", - "account.follow": "Follow", - "account.followers": "Followers", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", - "account.follows_you": "Follows you", - "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.account_note_header": "Nóta", + "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí", + "account.badges.bot": "Bota", + "account.badges.group": "Grúpa", + "account.block": "Bac @{name}", + "account.block_domain": "Bac ainm fearainn {domain}", + "account.blocked": "Bactha", + "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", + "account.cancel_follow_request": "Cealaigh iarratas leanúnaí", + "account.direct": "Seol teachtaireacht dhíreach chuig @{name}", + "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", + "account.domain_blocked": "Ainm fearainn bactha", + "account.edit_profile": "Cuir an phróifíl in eagar", + "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", + "account.endorse": "Cuir ar an phróifíl mar ghné", + "account.follow": "Lean", + "account.followers": "Leantóirí", + "account.followers.empty": "Ní leanann éinne an t-úsáideoir seo fós.", + "account.followers_counter": "{count, plural, one {Leantóir amháin} other {{counter} Leantóir}}", + "account.following": "Ag leanúint", + "account.following_counter": "{count, plural, one {Ag leanúint cúntas amháin} other {Ag leanúint {counter} cúntas}}", + "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", + "account.follows_you": "Do do leanúint", + "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", + "account.joined": "Ina bhall ó {date}", "account.link_verified_on": "Ownership of this link was checked on {date}", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", - "account.media": "Media", - "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", - "account.mute": "Mute @{name}", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", - "account.posts": "Toots", - "account.posts_with_replies": "Toots and replies", - "account.report": "Report @{name}", - "account.requested": "Awaiting approval", - "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", - "account.unblock": "Unblock @{name}", - "account.unblock_domain": "Unhide {domain}", - "account.unblock_short": "Unblock", - "account.unendorse": "Don't feature on profile", - "account.unfollow": "Unfollow", - "account.unmute": "Unmute @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", - "account.unmute_short": "Unmute", - "account_note.placeholder": "No comment provided", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", + "account.media": "Ábhair", + "account.mention": "Luaigh @{name}", + "account.moved_to": "Tá {name} bogtha go:", + "account.mute": "Balbhaigh @{name}", + "account.mute_notifications": "Balbhaigh fógraí ó @{name}", + "account.muted": "Balbhaithe", + "account.posts": "Postálacha", + "account.posts_with_replies": "Postálacha agus freagraí", + "account.report": "Tuairiscigh @{name}", + "account.requested": "Ag fanacht le ceadú. Cliceáil chun an iarratas leanúnaí a chealú", + "account.share": "Roinn próifíl @{name}", + "account.show_reblogs": "Taispeáin athphostálacha ó @{name}", + "account.statuses_counter": "{count, plural, one {Postáil amháin} other {{counter} Postáil}}", + "account.unblock": "Bain bac de @{name}", + "account.unblock_domain": "Bain bac den ainm fearainn {domain}", + "account.unblock_short": "Bain bac de", + "account.unendorse": "Ná chuir ar an phróifíl mar ghné", + "account.unfollow": "Ná lean a thuilleadh", + "account.unmute": "Díbhalbhaigh @{name}", + "account.unmute_notifications": "Díbhalbhaigh fógraí ó @{name}", + "account.unmute_short": "Díbhalbhaigh", + "account_note.placeholder": "Cliceáil chun nóta a chuir leis", + "admin.dashboard.daily_retention": "Ráta coinneála an úsáideora de réir an lae tar éis clárú", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", @@ -56,48 +56,48 @@ "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", - "alert.unexpected.title": "Oops!", - "announcement.announcement": "Announcement", + "alert.unexpected.title": "Hiúps!", + "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(unprocessed)", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", - "bundle_column_error.retry": "Try again", + "bundle_column_error.retry": "Bain triail as arís", "bundle_column_error.title": "Network error", - "bundle_modal_error.close": "Close", + "bundle_modal_error.close": "Dún", "bundle_modal_error.message": "Something went wrong while loading this component.", - "bundle_modal_error.retry": "Try again", - "column.blocks": "Blocked users", - "column.bookmarks": "Bookmarks", + "bundle_modal_error.retry": "Bain triail as arís", + "column.blocks": "Cuntais choiscthe", + "column.bookmarks": "Leabharmharcanna", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", - "column.domain_blocks": "Hidden domains", + "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", "column.follow_requests": "Follow requests", - "column.home": "Home", - "column.lists": "Lists", - "column.mutes": "Muted users", + "column.home": "Baile", + "column.lists": "Liostaí", + "column.mutes": "Úsáideoirí balbhaithe", "column.notifications": "Notifications", - "column.pins": "Pinned toot", + "column.pins": "Pinned post", "column.public": "Federated timeline", - "column_back_button.label": "Back", + "column_back_button.label": "Siar", "column_header.hide_settings": "Hide settings", "column_header.moveLeft_settings": "Move column to the left", "column_header.moveRight_settings": "Move column to the right", - "column_header.pin": "Pin", + "column_header.pin": "Greamaigh", "column_header.show_settings": "Show settings", - "column_header.unpin": "Unpin", - "column_subheading.settings": "Settings", + "column_header.unpin": "Díghreamaigh", + "column_subheading.settings": "Socruithe", "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.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", - "compose_form.placeholder": "What is on your mind?", + "compose_form.placeholder": "Cad atá ag tarlú?", "compose_form.poll.add_option": "Add a choice", "compose_form.poll.duration": "Poll duration", "compose_form.poll.option_placeholder": "Choice {number}", @@ -121,20 +121,20 @@ "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Faigh réidh de", + "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?", "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", - "confirmations.logout.confirm": "Log out", + "confirmations.domain_block.message": "An bhfuil tú iontach cinnte gur mhaith leat bac an t-ainm fearainn {domain} in iomlán? I bhformhór na gcásanna, is leor agus is fearr cúpla baic a cur i bhfeidhm nó cúpla úsáideoirí a balbhú. Ní fheicfidh tú ábhair ón t-ainm fearainn sin in amlíne ar bith, nó i d'fhógraí. Scaoilfear do leantóirí ón ainm fearainn sin.", + "confirmations.logout.confirm": "Logáil amach", "confirmations.logout.message": "Are you sure you want to log out?", - "confirmations.mute.confirm": "Mute", + "confirmations.mute.confirm": "Balbhaigh", "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": "Are you sure you want to mute {name}?", + "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?", "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", "confirmations.reply.confirm": "Reply", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.confirm": "Ná lean", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", "conversation.delete": "Delete conversation", "conversation.mark_as_read": "Mark as read", @@ -146,40 +146,40 @@ "directory.recently_active": "Recently active", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", - "emoji_button.activity": "Activity", + "emoji_button.activity": "Gníomhaíocht", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", - "emoji_button.food": "Food & Drink", + "emoji_button.food": "Bia ⁊ Ól", "emoji_button.label": "Insert emoji", - "emoji_button.nature": "Nature", - "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", + "emoji_button.nature": "Nádur", + "emoji_button.not_found": "No matching emojis found", "emoji_button.objects": "Objects", - "emoji_button.people": "People", + "emoji_button.people": "Daoine", "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", + "emoji_button.search": "Cuardaigh...", "emoji_button.search_results": "Search results", "emoji_button.symbols": "Symbols", - "emoji_button.travel": "Travel & Places", + "emoji_button.travel": "Taisteal ⁊ Áiteanna", "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "No toots here!", + "empty_column.account_timeline": "No posts found", "empty_column.account_unavailable": "Profile unavailable", "empty_column.blocks": "You haven't blocked any users yet.", - "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": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", - "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", "empty_column.hashtag": "There is nothing in this hashtag yet.", - "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", "empty_column.home.suggestions": "See some suggestions", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", - "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", + "empty_column.mutes": "Níl aon úsáideoir balbhaithe agat fós.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", @@ -189,15 +189,15 @@ "errors.unexpected_crash.report_issue": "Report issue", "explore.search_results": "Search results", "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", - "follow_recommendations.done": "Done", + "explore.title": "Féach thart", + "explore.trending_links": "Nuacht", + "explore.trending_statuses": "Postálacha", + "explore.trending_tags": "Haischlibeanna", + "follow_recommendations.done": "Déanta", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", - "follow_request.authorize": "Authorize", - "follow_request.reject": "Reject", + "follow_request.authorize": "Ceadaigh", + "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", "getting_started.developers": "Developers", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -243,11 +243,11 @@ "keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.mention": "to mention author", - "keyboard_shortcuts.muted": "to open muted users list", + "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe", "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", + "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -256,7 +256,7 @@ "keyboard_shortcuts.start": "to open \"get started\" column", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", - "keyboard_shortcuts.toot": "to start a brand new toot", + "keyboard_shortcuts.toot": "to start a brand new post", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", "lightbox.close": "Close", @@ -267,8 +267,8 @@ "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", - "lists.edit": "Edit list", - "lists.edit.submit": "Change title", + "lists.edit": "Cuir an liosta in eagar", + "lists.edit.submit": "Athraigh teideal", "lists.new.create": "Add list", "lists.new.title_placeholder": "New list title", "lists.replies_policy.followed": "Any followed user", @@ -279,46 +279,45 @@ "lists.subheading": "Your lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading...", - "media_gallery.toggle_visible": "Hide media", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", - "mute_modal.duration": "Duration", - "mute_modal.hide_notifications": "Hide notifications from this user?", - "mute_modal.indefinite": "Indefinite", + "mute_modal.duration": "Tréimhse", + "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", + "mute_modal.indefinite": "Gan téarma", "navigation_bar.apps": "Mobile apps", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", - "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.compose": "Compose new post", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favourites", - "navigation_bar.filters": "Muted words", + "navigation_bar.filters": "Focail bhalbhaithe", "navigation_bar.follow_requests": "Follow requests", - "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", "navigation_bar.info": "About this server", - "navigation_bar.keyboard_shortcuts": "Hotkeys", - "navigation_bar.lists": "Lists", - "navigation_bar.logout": "Logout", - "navigation_bar.mutes": "Muted users", - "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinned toots", + "navigation_bar.keyboard_shortcuts": "Eochracha Aicearra", + "navigation_bar.lists": "Liostaí", + "navigation_bar.logout": "Logáil Amach", + "navigation_bar.mutes": "Úsáideoirí balbhaithe", + "navigation_bar.personal": "Pearsanta", + "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", - "notification.follow": "{name} followed you", - "notification.follow_request": "{name} has requested to follow you", + "notification.follow": "Lean {name} thú", + "notification.follow_request": "D'iarr {name} ort do chuntas a leanúint", "notification.mention": "{name} mentioned you", "notification.own_poll": "Your poll has ended", "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", - "notification.update": "{name} edited a post", + "notification.update": "Chuir {name} postáil in eagar", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.admin.sign_up": "New sign-ups:", @@ -327,18 +326,18 @@ "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.show_bar": "Show filter bar", - "notifications.column_settings.follow": "New followers:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow": "Leantóirí nua:", + "notifications.column_settings.follow_request": "Iarratais leanúnaí nua:", "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", "notifications.column_settings.push": "Push notifications", "notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "New posts:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Eagair:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", @@ -366,16 +365,16 @@ "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": "Sofheicthe do Leantóirí amháin", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", - "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.public.long": "Visible for all", + "privacy.public.short": "Poiblí", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", - "regeneration_indicator.label": "Loading…", + "regeneration_indicator.label": "Ag lódáil…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", @@ -387,38 +386,38 @@ "relative_time.just_now": "now", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "inniu", "reply_indicator.cancel": "Cancel", "report.block": "Block", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.spam": "Turscar", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "profile", "report.category.title_status": "post", - "report.close": "Done", + "report.close": "Déanta", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute": "Balbhaigh", + "report.mute_explanation": "Ní fheicfidh tú a postálacha. Is féidir an té seo tú a leanúint agus do phostálacha a fheiceáil, agus ní fhios go bhfuil iad balbhaithe.", "report.next": "Next", - "report.placeholder": "Additional comments", - "report.reasons.dislike": "I don't like it", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "Ní maith liom é", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", "report.rules.subtitle": "Select all that apply", "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", @@ -426,19 +425,19 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "search.placeholder": "Search", + "search.placeholder": "Cuardaigh", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", - "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.hashtag": "haischlib", "search_popout.tips.status": "status", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", - "search_results.accounts": "People", + "search_results.accounts": "Daoine", "search_results.all": "All", - "search_results.hashtags": "Hashtags", + "search_results.hashtags": "Haischlibeanna", "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.statuses": "Postálacha", + "search_results.statuses_fts_disabled": "Searching posts 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", @@ -447,31 +446,31 @@ "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", "status.copy": "Copy link to status", - "status.delete": "Delete", + "status.delete": "Scrios", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Cuir in eagar", + "status.edited": "Curtha in eagar in {date}", + "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}", "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.edited": "Curtha in eagar ag {name} in {date}", "status.load_more": "Load more", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", - "status.more": "More", - "status.mute": "Mute @{name}", - "status.mute_conversation": "Mute conversation", + "status.more": "Tuilleadh", + "status.mute": "Balbhaigh @{name}", + "status.mute_conversation": "Balbhaigh comhrá", "status.open": "Expand this status", "status.pin": "Pin on profile", - "status.pinned": "Pinned toot", + "status.pinned": "Pinned post", "status.read_more": "Read more", "status.reblog": "Boost", "status.reblog_private": "Boost with original visibility", "status.reblogged_by": "{name} boosted", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", "status.reply": "Reply", @@ -485,24 +484,24 @@ "status.show_more_all": "Show more for all", "status.show_thread": "Show thread", "status.uncached_media_warning": "Not available", - "status.unmute_conversation": "Unmute conversation", + "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Unpin from profile", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", - "tabs_bar.home": "Home", + "tabs_bar.home": "Baile", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", + "tabs_bar.search": "Cuardaigh", "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", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.followers": "Leantóirí", "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.statuses": "Older toots", + "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", @@ -510,12 +509,13 @@ "units.short.million": "{count}M", "units.short.thousand": "{count}K", "upload_area.title": "Drag & drop to upload", - "upload_button.label": "Add media ({formats})", + "upload_button.label": "Add images, a video or an audio file", "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_form.description": "Describe for the visually impaired", - "upload_form.edit": "Edit", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Cuir in eagar", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", @@ -525,19 +525,19 @@ "upload_modal.choose_image": "Choose image", "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.edit_media": "Cuir gné in eagar", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", "video.fullscreen": "Full screen", "video.hide": "Hide video", - "video.mute": "Mute sound", - "video.pause": "Pause", - "video.play": "Play", - "video.unmute": "Unmute sound" + "video.mute": "Ciúnaigh fuaim", + "video.pause": "Cuir ar sos", + "video.play": "Cuir ar siúl", + "video.unmute": "Díchiúnaigh fuaim" } diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index ecc6f8714..5c67e5447 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -70,7 +70,7 @@ "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", "column.community": "Loidhne-ama ionadail", - "column.direct": "Teachdaireachdan dìreach", + "column.conversations": "Còmhraidhean", "column.directory": "Rùraich sna pròifilean", "column.domain_blocks": "Àrainnean bacte", "column.favourites": "Na h-annsachdan", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Feadhainn ionadail a-mhàin", "community.column_settings.media_only": "Meadhanan a-mhàin", "community.column_settings.remote_only": "Feadhainn chèin a-mhàin", - "compose_form.direct_message_warning": "Cha dèid am post seo a chur ach dha na cleachdaichean air an dug thu iomradh.", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", + "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh cunnartach idir le Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith leantainn ort is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.", "compose_form.lock_disclaimer.lock": "glaiste", @@ -166,7 +166,7 @@ "empty_column.blocks": "Cha do bhac thu cleachdaiche sam bith fhathast.", "empty_column.bookmarked_statuses": "Chan eil comharra-lìn ri post agad fhathast. Nuair a nì thu comharra-lìn de dh’fhear, nochdaidh e an-seo.", "empty_column.community": "Tha an loidhne-ama ionadail falamh. Sgrìobh rudeigin gu poblach airson toiseach-tòiseachaidh a dhèanamh!", - "empty_column.direct": "Chan eil teachdaireachd dhìreach agad fhathast. Nuair a chuireas no a gheibh thu tè, nochdaidh i an-seo.", + "empty_column.conversations": "Nuair a chuireas no gheibh thu post nach fhaic ach an fheadhainn le iomradh orra ann, nochdaidh e an-seo.", "empty_column.domain_blocks": "Cha deach àrainn sam bith a bhacadh fhathast.", "empty_column.explore_statuses": "Chan eil dad a’ treandadh an-dràsta fhèin. Thoir sùil a-rithist an ceann greis!", "empty_column.favourited_statuses": "Chan eil annsachd air post agad fhathast. Nuair a nì thu annsachd de dh’fhear, nochdaidh e an-seo.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Brosnaich post", "keyboard_shortcuts.column": "Cuir am fòcas air colbh", "keyboard_shortcuts.compose": "Cuir am fòcas air raon teacsa an sgrìobhaidh", + "keyboard_shortcuts.conversations": "a dh’fhosgladh colbh nan còmhraidhean", "keyboard_shortcuts.description": "Tuairisgeul", - "keyboard_shortcuts.direct": "Fosgail colbh nan teachdaireachdan dìreach", "keyboard_shortcuts.down": "Gluais sìos air an liosta", "keyboard_shortcuts.enter": "Fosgail post", "keyboard_shortcuts.favourite": "Cuir post ris na h-annsachdan", @@ -290,8 +290,7 @@ "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", "navigation_bar.compose": "Sgrìobh post ùr", - "navigation_bar.direct": "Teachdaireachdan dìreach", - "navigation_bar.discover": "Fidir", + "navigation_bar.discover": "Rùraich", "navigation_bar.domain_blocks": "Àrainnean bacte", "navigation_bar.edit_profile": "Deasaich a’ phròifil", "navigation_bar.explore": "Rùraich", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Thoir air falbh an cunntas-bheachd", "privacy.change": "Cuir gleus air prìobhaideachd a’ phuist", "privacy.direct.long": "Chan fhaic ach na cleachdaichean le iomradh orra seo", - "privacy.direct.short": "Dìreach", + "privacy.direct.short": "Daoine air an dug mi iomradh a-mhàin", "privacy.private.long": "Chan fhaic ach na daoine a tha a’ leantainn ort seo", "privacy.private.short": "Luchd-leantainn a-mhàin", - "privacy.public.long": "Chì a h-uile duine seo ’s e ’ga shealltainn air loidhnichean-ama poblach", + "privacy.public.long": "Chì a h-uile duine e", "privacy.public.short": "Poblach", - "privacy.unlisted.long": "Chì a h-uile duine seo ach cha dèid a shealltainn air loidhnichean-ama poblach", + "privacy.unlisted.long": "Chì a h-uile duine e ach cha nochd e ann an gleusan rùrachaidh", "privacy.unlisted.short": "Falaichte o liostaichean", "refresh": "Ath-nuadhaich", "regeneration_indicator.label": "’Ga luchdadh…", @@ -459,7 +458,7 @@ "status.history.created": "Chruthaich {name} {date} e", "status.history.edited": "Dheasaich {name} {date} e", "status.load_more": "Luchdaich barrachd dheth", - "status.media_hidden": "Meadhanan falaichte", + "status.media_hidden": "Meadhan falaichte", "status.mention": "Thoir iomradh air @{name}", "status.more": "Barrachd", "status.mute": "Mùch @{name}", @@ -515,6 +514,7 @@ "upload_error.poll": "Chan fhaod thu faidhle a luchdadh suas an cois cunntais-bheachd.", "upload_form.audio_description": "Mìnich e dhan fheadhainn le èisteachd bheag", "upload_form.description": "Mìnich e dhan fheadhainn le cion-lèirsinne", + "upload_form.description_missing": "Cha deach tuairisgeul a chur ris", "upload_form.edit": "Deasaich", "upload_form.thumbnail": "Atharraich an dealbhag", "upload_form.undo": "Sguab às", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 2e4c8a449..82e6a8b7a 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -48,8 +48,8 @@ "account.unmute_notifications": "Deixar de silenciar as notificacións de @{name}", "account.unmute_short": "Non silenciar", "account_note.placeholder": "Preme para engadir nota", - "admin.dashboard.daily_retention": "Ratio de retención de usuarias após rexistrarse", - "admin.dashboard.monthly_retention": "Ratio de retención de usuarias após un mes do rexistro", + "admin.dashboard.daily_retention": "Ratio de retención de usuarias diaria após rexistrarse", + "admin.dashboard.monthly_retention": "Ratio de retención de usuarias mensual após o rexistro", "admin.dashboard.retention.average": "Media", "admin.dashboard.retention.cohort": "Mes de rexistro", "admin.dashboard.retention.cohort_size": "Novas usuarias", @@ -70,7 +70,7 @@ "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", "column.community": "Cronoloxía local", - "column.direct": "Mensaxes directas", + "column.conversations": "Conversas", "column.directory": "Procurar perfís", "column.domain_blocks": "Dominios agochados", "column.favourites": "Favoritos", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Só local", "community.column_settings.media_only": "Só multimedia", "community.column_settings.remote_only": "Só remoto", - "compose_form.direct_message_warning": "Esta publicación só será enviada ás usuarias mencionadas.", "compose_form.direct_message_warning_learn_more": "Coñecer máis", + "compose_form.encryption_warning": "As publicacións en Mastodon non están cifradas de extremo-a-extremo. Non compartas información sensible en Mastodon.", "compose_form.hashtag_warning": "Esta publicación non aparecerá baixo ningún cancelo (hashtag) porque non está listada. Só se poden procurar publicacións públicas por cancelos.", "compose_form.lock_disclaimer": "A túa conta non está {locked}. Todas poden seguirte para ollar os teus toots só para seguidoras.", "compose_form.lock_disclaimer.lock": "bloqueada", @@ -166,7 +166,7 @@ "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.", "empty_column.bookmarked_statuses": "Aínda non marcaches ningunha publicación. Cando o fagas, aparecerán aquí.", "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!", - "empty_column.direct": "Aínda non tes mensaxes directas. Cando envíes ou recibas unha, amosarase aquí.", + "empty_column.conversations": "Aquí verás as publicacións que envíes ou recibas é só son visibles para as persoas mencionadas.", "empty_column.domain_blocks": "Aínda non hai dominios agochados.", "empty_column.explore_statuses": "Non hai temas en voga. Volve máis tarde!", "empty_column.favourited_statuses": "Aínda non tes publicacións favoritas. Cando che guste algunha, aparecerá aquí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Promover publicación", "keyboard_shortcuts.column": "Destacar unha columna", "keyboard_shortcuts.compose": "Por o cursor na área de escritura", + "keyboard_shortcuts.conversations": "para abrir a columna das conversas", "keyboard_shortcuts.description": "Descrición", - "keyboard_shortcuts.direct": "Para abrir a columna de mensaxes directas", "keyboard_shortcuts.down": "Para mover cara abaixo na listaxe", "keyboard_shortcuts.enter": "Para abrir publicación", "keyboard_shortcuts.favourite": "Para engadir a favoritos", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronoloxía local", "navigation_bar.compose": "Escribir unha nova publicación", - "navigation_bar.direct": "Mensaxes directas", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios agochados", "navigation_bar.edit_profile": "Editar perfil", @@ -315,7 +314,7 @@ "notification.follow_request": "{name} solicitou seguirte", "notification.mention": "{name} mencionoute", "notification.own_poll": "A túa enquisa rematou", - "notification.poll": "Unha enquisa na que votaches rematou", + "notification.poll": "Rematou a enquisa na que votaches", "notification.reblog": "{name} compartiu a túa publicación", "notification.status": "{name} publicou", "notification.update": "{name} editou unha publicación", @@ -367,19 +366,19 @@ "poll_button.remove_poll": "Eliminar enquisa", "privacy.change": "Axustar privacidade", "privacy.direct.long": "Só para as usuarias mencionadas", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Só para persoas mencionadas", "privacy.private.long": "Só para os seguidoras", "privacy.private.short": "Só para seguidoras", - "privacy.public.long": "Publicar nas cronoloxías públicas", + "privacy.public.long": "Visible por todas", "privacy.public.short": "Público", - "privacy.unlisted.long": "Non publicar nas cronoloxías públicas", + "privacy.unlisted.long": "Visible por todas, pero excluída da sección descubrir", "privacy.unlisted.short": "Non listado", "refresh": "Actualizar", "regeneration_indicator.label": "Estase a cargar…", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", "relative_time.days": "{number}d", "relative_time.full.days": "fai {number, plural, one {# día} other {# días}}", - "relative_time.full.hours": "fai {number, plural, one {# hora} other {# horas}} ago", + "relative_time.full.hours": "fai {number, plural, one {# hora} other {# horas}}", "relative_time.full.just_now": "xusto agora", "relative_time.full.minutes": "fai {number, plural, one {# minuto} other {# minutos}}", "relative_time.full.seconds": "fai {number, plural, one {# segundo} other {# segundos}}", @@ -515,6 +514,7 @@ "upload_error.poll": "Non se poden subir ficheiros nas enquisas.", "upload_form.audio_description": "Describir para persoas con problemas auditivos", "upload_form.description": "Describir para persoas con problemas visuais", + "upload_form.description_missing": "Sen descrición", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar a miniatura", "upload_form.undo": "Eliminar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index db25a33fd..efa740656 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -70,7 +70,7 @@ "column.blocks": "חסימות", "column.bookmarks": "סימניות", "column.community": "ציר זמן מקומי", - "column.direct": "הודעות ישירות", + "column.conversations": "Conversations", "column.directory": "גלוש פרופילים", "column.domain_blocks": "Hidden domains", "column.favourites": "חיבובים", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "מקומי בלבד", "community.column_settings.media_only": "Media only", "community.column_settings.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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", @@ -166,7 +166,7 @@ "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", - "empty_column.direct": "עדיין אין לכם הודעות פרטיות. כאשר תשלחו או תקבלו אחת, היא תופיע כאן.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "להדהד", "keyboard_shortcuts.column": "להתמקד בהודעה באחד מהטורים", "keyboard_shortcuts.compose": "להתמקד בתיבת חיבור ההודעות", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "תיאור", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "לנוע במורד הרשימה", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "לחבב", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ציר זמן מקומי", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "הודעות ישירות", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "עריכת פרופיל", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "שינוי פרטיות ההודעה", "privacy.direct.long": "הצג רק למי שהודעה זו פונה אליו", - "privacy.direct.short": "הודעה ישירה", + "privacy.direct.short": "Direct", "privacy.private.long": "הצג לעוקבים בלבד", - "privacy.private.short": "לעוקבים בלבד", - "privacy.public.long": "פרסם בפומבי", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "פומבי", - "privacy.unlisted.long": "לא יופיע בפידים הציבוריים המשותפים", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "לא לפיד הכללי", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "תיאור לכבדי ראיה", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "ביטול", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 8a464f7ec..d208cf51e 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -70,7 +70,7 @@ "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", "column.community": "लोकल टाइम्लाइन", - "column.direct": "सीधा संदेश", + "column.conversations": "Conversations", "column.directory": "प्रोफाइल्स खोजें", "column.domain_blocks": "छुपे डोमेन्स", "column.favourites": "पसंदीदा", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "स्थानीय ही", "community.column_settings.media_only": "सिर्फ़ मीडिया", "community.column_settings.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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।", "compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।", "compose_form.lock_disclaimer.lock": "लॉक्ड", @@ -166,7 +166,7 @@ "empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।", "empty_column.bookmarked_statuses": "आपके पास अभी तक कोई बुकमार्क नहीं है। जब आप एक बुकमार्क करते हैं, तो यह यहां दिखाई देगा।", "empty_column.community": "लोकल टाइम्लाइन खाली है, कुछ देखने के लिये सार्वजनिक रूप से कुछ लिखें!", - "empty_column.direct": "आपके पास कोई सीधा सन्देश नहीं है, जब आप कोई भेजेंगे प्राप्त करेंगे तो यहाँ दिखेगा।", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "अभी तक कोई छुपा हुआ डोमेन नहीं है।", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "आपके पास अभी कोई भी चहिता टूट नहीं है. जब आप किसी टूट को पसंद (स्टार) करेंगे, तब वो यहाँ दिखेगा।", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "बढ़ावा देने के लिए", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "कंपोज़ टेक्स्ट-एरिया पर ध्यान केंद्रित करने के लिए", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "विवरण", - "keyboard_shortcuts.direct": "सीधा सन्देश कॉलम को खोलने के लिए", "keyboard_shortcuts.down": "सूची में शामिल करने के लिए", "keyboard_shortcuts.enter": "स्टेटस खोलने के लिए", "keyboard_shortcuts.favourite": "पसंदीदा के लिए", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "पुस्तकचिह्न:", "navigation_bar.community_timeline": "लोकल टाइम्लाइन", "navigation_bar.compose": "नया टूट् लिखें", - "navigation_bar.direct": "सीधा संदेश", "navigation_bar.discover": "खोजें", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "प्रोफ़ाइल संपादित करें", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "सीधा", + "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "सार्वजनिक टाइम्लाइन पर भेजें", + "privacy.public.long": "Visible for all", "privacy.public.short": "सार्वजनिक", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "अनलिस्टेड", "refresh": "रीफ्रेश करें", "regeneration_indicator.label": "लोड हो रहा है...", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "संशोधन करें", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "मिटाए", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 2dfe4d80c..5815ea144 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -70,7 +70,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Knjižne oznake", "column.community": "Lokalna vremenska crta", - "column.direct": "Izravne poruke", + "column.conversations": "Conversations", "column.directory": "Pregledavanje profila", "column.domain_blocks": "Blokirane domene", "column.favourites": "Favoriti", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Samo lokalno", "community.column_settings.media_only": "Samo medijski sadržaj", "community.column_settings.remote_only": "Samo udaljeno", - "compose_form.direct_message_warning": "Ovaj toot bit će poslan samo spomenutim korisnicima.", "compose_form.direct_message_warning_learn_more": "Saznajte više", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ovaj toot neće biti prikazan ni pod jednim hashtagom jer je postavljen kao neprikazan. Samo javni tootovi mogu biti pretraživani pomoći hashtagova.", "compose_form.lock_disclaimer": "Vaš račun nije {locked}. Svatko Vas može pratiti kako bi vidjeli objave namijenjene Vašim pratiteljima.", "compose_form.lock_disclaimer.lock": "zaključan", @@ -166,7 +166,7 @@ "empty_column.blocks": "Još niste blokirali nikoga.", "empty_column.bookmarked_statuses": "Još nemaš niti jedan označeni toot. Kada označiš jedan, prikazad će se ovdje.", "empty_column.community": "Lokalna vremenska crta je prazna. Napišite nešto javno da biste pokrenuli stvari!", - "empty_column.direct": "Nemate još niti jedne direktne poruke. Kada ih pošaljete ili primite, prikazati će se ovdje.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Još nema blokiranih domena.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "za boostanje", "keyboard_shortcuts.column": "za fokusiranje na toot u jednom od stupaca", "keyboard_shortcuts.compose": "za fokusiranje na tekstualni okvir za stvaranje", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "za otvaranje stupca s izravnim porukama", "keyboard_shortcuts.down": "za pomak dolje na listi", "keyboard_shortcuts.enter": "za otvaranje toota", "keyboard_shortcuts.favourite": "za označavanje favoritom", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna vremenska crta", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Izravne poruke", "navigation_bar.discover": "Istraživanje", "navigation_bar.domain_blocks": "Blokirane domene", "navigation_bar.edit_profile": "Uredi profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Ukloni anketu", "privacy.change": "Podesi privatnost toota", "privacy.direct.long": "Vidljivo samo spomenutim korisnicima", - "privacy.direct.short": "Izravno", + "privacy.direct.short": "Direct", "privacy.private.long": "Vidljivo samo pratiteljima", - "privacy.private.short": "Samo pratitelji", - "privacy.public.long": "Vidljivo svima, prikazano u javim vremenskim crtama", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Vidljivo svima, ali se ne prikazuje u javnim vremenskim crtama", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Neprikazano", "refresh": "Osvježi", "regeneration_indicator.label": "Učitavanje…", @@ -515,6 +514,7 @@ "upload_error.poll": "Prijenos datoteka nije dopušten kod anketa.", "upload_form.audio_description": "Opišite za ljude sa slabim sluhom", "upload_form.description": "Opišite za ljude sa slabim vidom", + "upload_form.description_missing": "No description added", "upload_form.edit": "Uredi", "upload_form.thumbnail": "Promijeni pretpregled", "upload_form.undo": "Obriši", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index f914d8187..05204fcf1 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -70,7 +70,7 @@ "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", "column.community": "Helyi idővonal", - "column.direct": "Közvetlen üzenetek", + "column.conversations": "Beszélgetések", "column.directory": "Profilok böngészése", "column.domain_blocks": "Rejtett domainek", "column.favourites": "Kedvencek", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Csak helyi", "community.column_settings.media_only": "Csak média", "community.column_settings.remote_only": "Csak távoli", - "compose_form.direct_message_warning": "Ezt a bejegyzést 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.encryption_warning": "A bejegyzések a Mastodonon nem használnak végpontok közötti titkosítást. Ne ossz meg érzékeny információt Mastodonon.", "compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel listázatlan. Csak a nyilvános bejegyzések kereshetők hashtaggel.", "compose_form.lock_disclaimer": "A fiókod nincs {locked}. Bárki követni tud, hogy megtekintse a kizárólag követőknek szánt bejegyzéseket.", "compose_form.lock_disclaimer.lock": "lezárva", @@ -166,7 +166,7 @@ "empty_column.blocks": "Még senkit sem tiltottál le.", "empty_column.bookmarked_statuses": "Még nincs egyetlen könyvjelzőzött bejegyzésed sem. Ha könyvjelzőzöl egyet, itt fog megjelenni.", "empty_column.community": "A helyi idővonal üres. Tégy közzé valamit nyilvánosan, hogy elindítsd az eseményeket!", - "empty_column.direct": "Még nincs egy közvetlen üzeneted sem. Ha küldesz vagy kapsz egyet, itt fog megjelenni.", + "empty_column.conversations": "Ha olyan bejegyzést küldesz vagy fogadsz, melyet csak az abban megemlítettek látnak, itt fog megjelenni.", "empty_column.domain_blocks": "Még nem rejtettél el egyetlen domaint sem.", "empty_column.explore_statuses": "Jelenleg semmi sem felkapott. Nézz vissza később!", "empty_column.favourited_statuses": "Még nincs egyetlen kedvenc bejegyzésed sem. Ha kedvencnek jelölsz egyet, itt fog megjelenni.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Bejegyzés megtolása", "keyboard_shortcuts.column": "Fókuszálás egy oszlopra", "keyboard_shortcuts.compose": "fókuszálás a szerkesztési szövegdobozra", + "keyboard_shortcuts.conversations": "beszélgetések megnyitása", "keyboard_shortcuts.description": "Leírás", - "keyboard_shortcuts.direct": "Közvetlen üzenetek oszlopának megnyitása", "keyboard_shortcuts.down": "lefele navigálás a listában", "keyboard_shortcuts.enter": "Bejegyzés megnyitása", "keyboard_shortcuts.favourite": "Bejegyzés kedvencnek jelölése", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Könyvjelzők", "navigation_bar.community_timeline": "Helyi idővonal", "navigation_bar.compose": "Új bejegyzés írása", - "navigation_bar.direct": "Közvetlen üzenetek", "navigation_bar.discover": "Felfedezés", "navigation_bar.domain_blocks": "Rejtett domainek", "navigation_bar.edit_profile": "Profil szerkesztése", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Szavazás törlése", "privacy.change": "Bejegyzés láthatóságának módosítása", "privacy.direct.long": "Csak a megemlített felhasználóknak látható", - "privacy.direct.short": "Közvetlen", + "privacy.direct.short": "Csak a megemlítettek", "privacy.private.long": "Csak követőknek látható", - "privacy.private.short": "Csak követőknek", - "privacy.public.long": "Mindenki számára látható, nyilvános idővonalakon is szerepel", + "privacy.private.short": "Csak követők", + "privacy.public.long": "Mindenki számára látható", "privacy.public.short": "Nyilvános", - "privacy.unlisted.long": "Ne mutassuk nyilvános idővonalon", + "privacy.unlisted.long": "Mindenki számára látható, de kimarad a felfedezős funkciókból", "privacy.unlisted.short": "Listázatlan", "refresh": "Frissítés", "regeneration_indicator.label": "Töltődik…", @@ -515,6 +514,7 @@ "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.", "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.description_missing": "Nincs leírás megadva", "upload_form.edit": "Szerkesztés", "upload_form.thumbnail": "Előnézet megváltoztatása", "upload_form.undo": "Törlés", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 2b7cdf5ac..c7ba3b852 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -18,8 +18,8 @@ "account.followers": "Հետեւողներ", "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։", "account.followers_counter": "{count, plural, one {{counter} Հետեւորդ} other {{counter} Հետեւորդ}}", - "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} հետեւած} other {{counter} հետեւած}}", + "account.following": "Հետեւած", + "account.following_counter": "{count, plural, one {{counter} Հետեւած} other {{counter} Հետեւած}}", "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։", "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", @@ -41,12 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Գրառում} other {{counter} Գրառումներ}}", "account.unblock": "Ապաարգելափակել @{name}֊ին", "account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները", - "account.unblock_short": "Unblock", + "account.unblock_short": "Արգելաբացել", "account.unendorse": "Չցուցադրել անձնական էջում", "account.unfollow": "Ապահետեւել", "account.unmute": "Ապալռեցնել @{name}֊ին", "account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից", - "account.unmute_short": "Unmute", + "account.unmute_short": "Ապախլացնել", "account_note.placeholder": "Սեղմէ՛ք գրառելու համար\n", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -70,7 +70,7 @@ "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", "column.community": "Տեղական հոսք", - "column.direct": "Հասցէագրուած հաղորդագրութիւններ", + "column.conversations": "Զրոյցներ", "column.directory": "Զննել անձնական էջերը", "column.domain_blocks": "Թաքցուած տիրոյթները", "column.favourites": "Հաւանածներ", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Միայն տեղական", "community.column_settings.media_only": "Միայն մեդիա", "community.column_settings.remote_only": "Միայն հեռակայ", - "compose_form.direct_message_warning": "Այս գրառումը տեսանելի կը լինի միայն նշուած օգտատէրերին։", "compose_form.direct_message_warning_learn_more": "Իմանալ աւելին", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Այս գրառումը չի հաշուառուի որեւէ պիտակի տակ, քանզի այն ծածուկ է։ Միայն հրապարակային թթերը հնարաւոր է որոնել պիտակներով։", "compose_form.lock_disclaimer": "Քո հաշիւը {locked} չէ։ Իւրաքանչիւրութիւն ոք կարող է հետեւել քեզ եւ տեսնել միայն հետեւողների համար նախատեսուած գրառումները։", "compose_form.lock_disclaimer.lock": "փակ", @@ -106,7 +106,7 @@ "compose_form.poll.switch_to_single": "Հարցումը դարձնել եզակի ընտրութեամբ", "compose_form.publish": "Հրապարակել", "compose_form.publish_loud": "Հրապարակե՜լ", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Պահպանել փոփոխութիւնները", "compose_form.sensitive.hide": "Նշել մեդիան որպէս դիւրազգաց", "compose_form.sensitive.marked": "Մեդիան նշուած է որպէս դիւրազգաց", "compose_form.sensitive.unmarked": "Մեդիան նշուած չէ որպէս դիւրազգաց", @@ -166,7 +166,7 @@ "empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։", "empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշուած գրառում։ Երբ էջանշես, դրանք կը երեւան այստեղ։", "empty_column.community": "Տեղական հոսքը դատարկ է։ Հրապարակային մի բան գրի՛ր շարժիչը գործարկելու համար։", - "empty_column.direct": "Դու դեռ չունես ոչ մի հասցէագրուած հաղորդագրութիւն։ Երբ ուղարկես կամ ստանաս որեւէ անձնական նամակ, այն այստեղ կերեւայ։", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Թաքցուած տիրոյթներ դեռ չկան։", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Դու դեռ չունես որեւէ հաւանած գրառում։ Երբ հաւանես, դրանք կերեւան այստեղ։", @@ -187,12 +187,12 @@ "error.unexpected_crash.next_steps_addons": "Փորձիր անջատել յաւելուածները եւ թարմացնել էջը։ Եթե դա չօգնի, կարող ես օգտուել Մաստադոնից այլ դիտարկիչով կամ յաւելուածով։", "errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին", "errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Որոնման արդիւնքներ", + "explore.suggested_follows": "Ձեզ համար", + "explore.title": "Բացայայտել", + "explore.trending_links": "Նորութիւններ", + "explore.trending_statuses": "Գրառումներ", + "explore.trending_tags": "Պիտակներ", "follow_recommendations.done": "Աւարտուած է", "follow_recommendations.heading": "Հետեւիր այն մարդկանց, որոնց գրառումները կը ցանկանաս տեսնել։ Ահա մի քանի առաջարկ։", "follow_recommendations.lead": "Քո հոսքում, ժամանակագրական դասաւորութեամբ կը տեսնես այն մարդկանց գրառումները, որոնց հետեւում ես։ Մի վախեցիր սխալուել, դու միշտ կարող ես հեշտութեամբ ապահետեւել մարդկանց։", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "տարածելու համար", "keyboard_shortcuts.column": "սիւներից մէկի վրայ սեւեռուելու համար", "keyboard_shortcuts.compose": "շարադրման տիրոյթին սեւեռուելու համար", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Նկարագրութիւն", - "keyboard_shortcuts.direct": "հասցէագրուած գրուածքների հոսքը բացելու համար", "keyboard_shortcuts.down": "ցանկով ներքեւ շարժուելու համար", "keyboard_shortcuts.enter": "Գրառումը բացելու համար", "keyboard_shortcuts.favourite": "հաւանելու համար", @@ -290,11 +290,10 @@ "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", "navigation_bar.compose": "Ստեղծել նոր գրառում", - "navigation_bar.direct": "Հասցէագրուած", "navigation_bar.discover": "Բացայայտել", "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ", "navigation_bar.edit_profile": "Խմբագրել անձնական էջը", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Բացայայտել", "navigation_bar.favourites": "Հաւանածներ", "navigation_bar.filters": "Լռեցուած բառեր", "navigation_bar.follow_requests": "Հետեւելու հայցեր", @@ -309,7 +308,7 @@ "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.security": "Անվտանգութիւն", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name}-ը գրանցուած է", "notification.favourite": "{name} հաւանեց գրառումդ", "notification.follow": "{name} սկսեց հետեւել քեզ", "notification.follow_request": "{name} քեզ հետեւելու հայց է ուղարկել", @@ -318,10 +317,10 @@ "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։", "notification.reblog": "{name} տարածեց գրառումդ", "notification.status": "{name} հենց նոր գրառում արեց", - "notification.update": "{name} edited a post", + "notification.update": "{name}-ը փոխել է գրառումը", "notifications.clear": "Մաքրել ծանուցումները", "notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Նոր գրանցումներ՝", "notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ", "notifications.column_settings.favourite": "Հաւանածներից՝", "notifications.column_settings.filter_bar.advanced": "Ցուցադրել բոլոր կատեգորիաները", @@ -338,7 +337,7 @@ "notifications.column_settings.status": "Նոր գրառումներ։", "notifications.column_settings.unread_notifications.category": "Չկարդացուած ծանուցումներ", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Խմբագրածներ՝", "notifications.filter.all": "Բոլորը", "notifications.filter.boosts": "Տարածածները", "notifications.filter.favourites": "Հաւանածները", @@ -362,55 +361,55 @@ "poll.total_votes": "{count, plural, one {# ձայն} other {# ձայն}}", "poll.vote": "Քուէարկել", "poll.voted": "Դու քուէարկել ես այս տարբերակի համար", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# ձայն} other {# ձայն}}", "poll_button.add_poll": "Աւելացնել հարցում", "poll_button.remove_poll": "Հեռացնել հարցումը", "privacy.change": "Կարգաւորել գրառման գաղտնիութիւնը", "privacy.direct.long": "Կը տեսնեն միայն նշուած օգտատէրերը", - "privacy.direct.short": "Հասցէագրուած", + "privacy.direct.short": "Միայն նշածս մարդիկ", "privacy.private.long": "Կը տեսնեն միայն հետեւորդները", - "privacy.private.short": "Միայն հետեւողներին", - "privacy.public.long": "Կը տեսնեն բոլոր, հրապարակային հոսքում", + "privacy.private.short": "Միայն հետեւողները", + "privacy.public.long": "Տեսանելի բոլորին", "privacy.public.short": "Հրապարակային", - "privacy.unlisted.long": "Կը տեսնեն բոլոր, բայց ոչ հրապարակային հոսքում", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ծածուկ", "refresh": "Թարմացնել", "regeneration_indicator.label": "Բեռնւում է…", "regeneration_indicator.sublabel": "պատրաստւում է հիմնական հոսքդ", "relative_time.days": "{number}օր", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# օր} other {# օր}} առաջ", + "relative_time.full.hours": "{number, plural, one {# ժամ} other {# ժամ}} առաջ", + "relative_time.full.just_now": "հէնց նոր", + "relative_time.full.minutes": "{number, plural, one {# րոպէ} other {# րոպէ}} առաջ", + "relative_time.full.seconds": "{number, plural, one {# վայրկեան} other {# վայրկեան}} առաջ", "relative_time.hours": "{number}ժ", "relative_time.just_now": "նոր", "relative_time.minutes": "{number}ր", "relative_time.seconds": "{number}վ", "relative_time.today": "Այսօր", "reply_indicator.cancel": "Չեղարկել", - "report.block": "Block", + "report.block": "Արգելափակել", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.other": "Այլ", + "report.categories.spam": "Սպամ", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "հաշիւ", + "report.category.title_status": "գրառում", + "report.close": "Աւարտել", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Փոխանցել {target}֊ին", "report.forward_hint": "Այս հաշիւ այլ հանգոյցից է։ Ուղարկե՞մ այնտեղ էլ այս բողոքի անոնիմ պատճէնը։", - "report.mute": "Mute", + "report.mute": "Լռեցնել", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Յաջորդ", "report.placeholder": "Լրացուցիչ մեկնաբանութիւններ", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "Ինձ դուր չի գալիս", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.other": "Այլ բան է", "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.spam": "Սպամ է", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", @@ -500,7 +499,7 @@ "time_remaining.moments": "Մնացել է մի քանի վարկեան", "time_remaining.seconds": "{number, plural, one {# վարկեան} other {# վարկեան}} անց", "timeline_hint.remote_resource_not_displayed": "{resource} այլ սպասարկիչներից չեն ցուցադրվել:", - "timeline_hint.resources.followers": "Հետևորդներ", + "timeline_hint.resources.followers": "Հետեւորդ", "timeline_hint.resources.follows": "Հետեւել", "timeline_hint.resources.statuses": "Հին գրառումներ", "trends.counter_by_accounts": "{count, plural, one {{counter} մարդ} other {{counter} մարդիկ}} խօսում են", @@ -515,6 +514,7 @@ "upload_error.poll": "Հարցումների հետ նիշք կցել հնարաւոր չէ։", "upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար", "upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար", + "upload_form.description_missing": "No description added", "upload_form.edit": "Խմբագրել", "upload_form.thumbnail": "Փոխել պատկերակը", "upload_form.undo": "Յետարկել", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index ee7810379..c093688e4 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -70,7 +70,7 @@ "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", - "column.direct": "Pesan langsung", + "column.conversations": "Percakapan", "column.directory": "Jelajahi profil", "column.domain_blocks": "Topik tersembunyi", "column.favourites": "Favorit", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Hanya lokal", "community.column_settings.media_only": "Hanya media", "community.column_settings.remote_only": "Hanya jarak jauh", - "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", + "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi rahasial melalui Mastodon.", "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.", "compose_form.lock_disclaimer.lock": "terkunci", @@ -166,7 +166,7 @@ "empty_column.blocks": "Anda belum memblokir siapapun.", "empty_column.bookmarked_statuses": "Anda belum memiliki toot termarkah. Saat Anda menandainya sebagai markah, ia akan muncul di sini.", "empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!", - "empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", + "empty_column.conversations": "Saat Anda mengirim atau menerima kiriman yang hanya terlihat oleh orang yang disebutkan, itu akan muncul di sini.", "empty_column.domain_blocks": "Tidak ada topik tersembunyi.", "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Silakan mengecek lagi nanti!", "empty_column.favourited_statuses": "Anda belum memiliki toot favorit. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "untuk menyebarkan", "keyboard_shortcuts.column": "untuk fokus kepada sebuah status di sebuah kolom", "keyboard_shortcuts.compose": "untuk fokus ke area penulisan", + "keyboard_shortcuts.conversations": "untuk membuka kolom percakapan", "keyboard_shortcuts.description": "Deskripsi", - "keyboard_shortcuts.direct": "buka kolom pesan langsung", "keyboard_shortcuts.down": "untuk pindah ke bawah dalam sebuah daftar", "keyboard_shortcuts.enter": "untuk membuka status", "keyboard_shortcuts.favourite": "untuk memfavoritkan", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Markah", "navigation_bar.community_timeline": "Linimasa lokal", "navigation_bar.compose": "Tulis toot baru", - "navigation_bar.direct": "Pesan langsung", "navigation_bar.discover": "Temukan", "navigation_bar.domain_blocks": "Domain tersembunyi", "navigation_bar.edit_profile": "Ubah profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Hapus japat", "privacy.change": "Tentukan privasi status", "privacy.direct.long": "Kirim hanya ke pengguna yang disebut", - "privacy.direct.short": "Langsung", + "privacy.direct.short": "Hanya orang yang saya sebut", "privacy.private.long": "Kirim postingan hanya kepada pengikut", - "privacy.private.short": "Pribadi", - "privacy.public.long": "Kirim ke linimasa publik", + "privacy.private.short": "Pengikut saja", + "privacy.public.long": "Terlihat oleh semua", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Tidak ditampilkan di linimasa publik", + "privacy.unlisted.long": "Terlihat oleh semua, tapi jangan tampilkan di fitur jelajah", "privacy.unlisted.short": "Tak Terdaftar", "refresh": "Segarkan", "regeneration_indicator.label": "Memuat…", @@ -515,6 +514,7 @@ "upload_error.poll": "Unggah berkas tak diizinkan di japat ini.", "upload_form.audio_description": "Penjelasan untuk orang dengan gangguan pendengaran", "upload_form.description": "Deskripsikan untuk mereka yang tidak bisa melihat dengan jelas", + "upload_form.description_missing": "Tidak ada deskripsi yang ditambahkan", "upload_form.edit": "Sunting", "upload_form.thumbnail": "Ubah gambar kecil", "upload_form.undo": "Undo", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 33a324499..c38d21f57 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,76 +1,76 @@ { - "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Add or Remove from lists", - "account.badges.bot": "Bot", - "account.badges.group": "Group", + "account.account_note_header": "Noto", + "account.add_or_remove_from_list": "Insertez o removez de listi", + "account.badges.bot": "Boto", + "account.badges.group": "Grupo", "account.block": "Blokusar @{name}", "account.block_domain": "Hide everything from {domain}", - "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.blocked": "Restriktita", + "account.browse_more_on_origin_server": "Videz plu che originala profilo", + "account.cancel_follow_request": "Removez sequodemando", "account.direct": "Direct Message @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "Cesez avizar me kande @{name} postas", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Modifikar profilo", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Feature on profile", + "account.enable_notifications": "Avizez me kande @{name} postas", + "account.endorse": "Traito di profilo", "account.follow": "Sequar", "account.followers": "Sequanti", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.followers.empty": "Nulu sequas ca uzanto til nun.", + "account.followers_counter": "{count, plural, one {{counter} Sequanto} other {{counter} Sequanti}}", + "account.following": "Sequata", + "account.following_counter": "{count, plural, one {{counter} Sequas} other {{counter} Sequanti}}", + "account.follows.empty": "Ca uzanto ne sequa irgu til nun.", "account.follows_you": "Sequas tu", - "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", - "account.link_verified_on": "Ownership of this link was checked on {date}", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", - "account.media": "Media", + "account.hide_reblogs": "Celez busti de @{name}", + "account.joined": "Juntas ye {date}", + "account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}", + "account.locked_info": "La privatesostaco di ca konto fixesas quale lokata. Proprietato manue kontrolas personi qui povas sequar.", + "account.media": "Medio", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} movesis a:", "account.mute": "Celar @{name}", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", + "account.mute_notifications": "Silencigez avizi de @{name}", + "account.muted": "Silencigata", "account.posts": "Mesaji", "account.posts_with_replies": "Toots with replies", "account.report": "Denuncar @{name}", "account.requested": "Vartante aprobo", - "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", + "account.share": "Partigez profilo di @{name}", + "account.show_reblogs": "Montrez busti de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Desblokusar @{name}", "account.unblock_domain": "Unhide {domain}", - "account.unblock_short": "Unblock", - "account.unendorse": "Don't feature on profile", + "account.unblock_short": "Derestriktez", + "account.unendorse": "Ne publikigez che profilo", "account.unfollow": "Ne plus sequar", "account.unmute": "Ne plus celar @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", - "account.unmute_short": "Unmute", + "account.unmute_notifications": "Desilencigez avizi de @{name}", + "account.unmute_short": "Desilencigez", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", - "alert.unexpected.message": "An unexpected error occurred.", - "alert.unexpected.title": "Oops!", - "announcement.announcement": "Announcement", - "attachments_list.unprocessed": "(unprocessed)", - "autosuggest_hashtag.per_week": "{count} per week", + "admin.dashboard.retention.average": "Averajo", + "admin.dashboard.retention.cohort": "Registromonato", + "admin.dashboard.retention.cohort_size": "Nova uzanti", + "alert.rate_limited.message": "Riprobez pos {retry_time, time, medium}.", + "alert.rate_limited.title": "Limitizita multeso", + "alert.unexpected.message": "Neexpektita eroro eventis.", + "alert.unexpected.title": "Problemo!", + "announcement.announcement": "Anunco", + "attachments_list.unprocessed": "(neprocedita)", + "autosuggest_hashtag.per_week": "{count} dum singla semano", "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo", - "bundle_column_error.body": "Something went wrong while loading this component.", - "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", - "bundle_modal_error.close": "Close", - "bundle_modal_error.message": "Something went wrong while loading this component.", - "bundle_modal_error.retry": "Try again", + "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", + "bundle_column_error.retry": "Probez itere", + "bundle_column_error.title": "Rederor", + "bundle_modal_error.close": "Klozez", + "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", + "bundle_modal_error.retry": "Probez itere", "column.blocks": "Blokusita uzeri", "column.bookmarks": "Bookmarks", "column.community": "Lokala tempolineo", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Favorati", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokala tempolineo", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Modifikar profilo", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Aranjar privateso di mesaji", "privacy.direct.long": "Sendar nur a mencionata uzeri", - "privacy.direct.short": "Direte", + "privacy.direct.short": "Direct", "privacy.private.long": "Sendar nur a sequanti", - "privacy.private.short": "Private", - "privacy.public.long": "Sendar a publika tempolinei", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Publike", - "privacy.unlisted.long": "Ne montrar en publika tempolinei", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ne enlistigota", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Desfacar", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index beef03587..6231a84d6 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,7 +1,7 @@ { "account.account_note_header": "Minnispunktur", "account.add_or_remove_from_list": "Bæta við eða fjarlægja af listum", - "account.badges.bot": "Róbót", + "account.badges.bot": "Vélmenni", "account.badges.group": "Hópur", "account.block": "Loka á @{name}", "account.block_domain": "Útiloka lénið {domain}", @@ -31,7 +31,7 @@ "account.moved_to": "{name} hefur verið færður til:", "account.mute": "Þagga niður í @{name}", "account.mute_notifications": "Þagga tilkynningar frá @{name}", - "account.muted": "Þaggað", + "account.muted": "Þaggaður", "account.posts": "Færslur", "account.posts_with_replies": "Færslur og svör", "account.report": "Kæra @{name}", @@ -70,8 +70,8 @@ "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", - "column.direct": "Bein skilaboð", - "column.directory": "Skoða notandasnið", + "column.conversations": "Samtöl", + "column.directory": "Vafra notandasnið", "column.domain_blocks": "Útilokuð lén", "column.favourites": "Eftirlæti", "column.follow_requests": "Beiðnir um að fylgjast með", @@ -92,11 +92,11 @@ "community.column_settings.local_only": "Einungis staðvært", "community.column_settings.media_only": "Einungis myndskrár", "community.column_settings.remote_only": "Einungis fjartengt", - "compose_form.direct_message_warning": "Þessi færsla verður aðeins send á notendur sem minnst er á.", "compose_form.direct_message_warning_learn_more": "Kanna nánar", + "compose_form.encryption_warning": "Færslur á Mastodon eru ekki enda-í-enda dulritaðar. Ekki deila viðkvæmum upplýsingum á Mastodon.", "compose_form.hashtag_warning": "Þessi færsla verður ekki talin með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum færslum eftir myllumerkjum.", - "compose_form.lock_disclaimer": "Aðgangurinn þinn er ekki {locked}. Hver sem er getur fylgst með þeim færslum þínum sem einungis eru til fylgjenda þinna.", - "compose_form.lock_disclaimer.lock": "læst", + "compose_form.lock_disclaimer": "Aðgangurinn þinn er ekki {locked}. Hver sem er getur fylgst með þér til að sjá þær færslur sem einungis eru til fylgjenda þinna.", + "compose_form.lock_disclaimer.lock": "læstur", "compose_form.placeholder": "Hvað varstu að hugsa?", "compose_form.poll.add_option": "Bæta við valkosti", "compose_form.poll.duration": "Tímalengd könnunar", @@ -130,7 +130,7 @@ "confirmations.mute.confirm": "Þagga", "confirmations.mute.explanation": "Þetta mun fela færslur frá þeim og þær færslur þar sem minnst er á þau, en það mun samt sem áður gera þeim kleift að sjá færslurnar þínar og að fylgjast með þér.", "confirmations.mute.message": "Ertu viss um að þú viljir þagga niður í {name}?", - "confirmations.redraft.confirm": "Eyða og enduvinna drög", + "confirmations.redraft.confirm": "Eyða og endurvinna drög", "confirmations.redraft.message": "Ertu viss um að þú viljir eyða þessari færslu og enduvinna drögin? Eftirlæti og endurbirtingar munu glatast og svör við upprunalegu færslunni munu verða munaðarlaus.", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Ef þú svarar núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?", @@ -147,7 +147,7 @@ "embed.instructions": "Felldu þessa færslu inn í vefsvæðið þitt með því að afrita kóðann hér fyrir neðan.", "embed.preview": "Svona mun þetta líta út:", "emoji_button.activity": "Virkni", - "emoji_button.custom": "Sérsniðið", + "emoji_button.custom": "Sérsniðin", "emoji_button.flags": "Flögg", "emoji_button.food": "Matur og drykkur", "emoji_button.label": "Setja inn tjáningartákn", @@ -155,7 +155,7 @@ "emoji_button.not_found": "Engin samsvarandi tjáningartákn fundust", "emoji_button.objects": "Hlutir", "emoji_button.people": "Fólk", - "emoji_button.recent": "Oft notað", + "emoji_button.recent": "Oft notuð", "emoji_button.search": "Leita...", "emoji_button.search_results": "Leitarniðurstöður", "emoji_button.symbols": "Tákn", @@ -166,7 +166,7 @@ "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.", "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með neinar bókamerktar færslur. Þegar þú bókamerkir færslu, mun það birtast hér.", "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!", - "empty_column.direct": "Þú átt ennþá engin bein skilaboð. Þegar þú sendir eða tekur á móti slíkum skilaboðum, munu þau birtast hér.", + "empty_column.conversations": "Þegar þú hefur sent eða móttekið færslu sem er aðeins sýnileg fólki sem nefnt er í henni þá birtist hún hér.", "empty_column.domain_blocks": "Það eru ennþá engin útilokuð lén.", "empty_column.explore_statuses": "Ekkert er á uppleið í augnablikinu. Athugaðu aftur síðar!", "empty_column.favourited_statuses": "Þú ert ekki ennþá með neinar eftirlætisfærslur. Þegar þú setur færslu í eftirlæti, munu þau birtast hér.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Endurbirta færslu", "keyboard_shortcuts.column": "Setja virkni í dálk", "keyboard_shortcuts.compose": "Setja virkni á textainnsetningarreit", + "keyboard_shortcuts.conversations": "að opna samtalsdálka", "keyboard_shortcuts.description": "Lýsing", - "keyboard_shortcuts.direct": "Opna dálk með beinum skilaboðum", "keyboard_shortcuts.down": "Fara neðar í listanum", "keyboard_shortcuts.enter": "Opna færslu", "keyboard_shortcuts.favourite": "Eftirlætisfærsla", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bókamerki", "navigation_bar.community_timeline": "Staðvær tímalína", "navigation_bar.compose": "Semja nýja færslu", - "navigation_bar.direct": "Bein skilaboð", "navigation_bar.discover": "Uppgötva", "navigation_bar.domain_blocks": "Útilokuð lén", "navigation_bar.edit_profile": "Breyta notandasniði", @@ -315,7 +314,7 @@ "notification.follow_request": "{name} hefur beðið um að fylgjast með þér", "notification.mention": "{name} minntist á þig", "notification.own_poll": "Könnuninni þinni er lokið", - "notification.poll": "Könnun sem þú tókst þátt í er lokið", + "notification.poll": "Könnun sem þú tókst þátt í er lokin", "notification.reblog": "{name} endurbirti færsluna þína", "notification.status": "{name} sendi inn rétt í þessu", "notification.update": "{name} breytti færslu", @@ -356,7 +355,7 @@ "notifications_permission_banner.how_to_control": "Til að taka á móti tilkynningum þegar Mastodon er ekki opið, skaltu virkja tilkynningar á skjáborði. Þegar þær eru orðnar virkar geturðu stýrt nákvæmlega hverskonar atvik framleiða tilkynningar með því að nota {icon}-hnappinn hér fyrir ofan.", "notifications_permission_banner.title": "Aldrei missa af neinu", "picture_in_picture.restore": "Setja til baka", - "poll.closed": "Lokað", + "poll.closed": "Lokuð", "poll.refresh": "Endurlesa", "poll.total_people": "{count, plural, one {# aðili} other {# aðilar}}", "poll.total_votes": "{count, plural, one {# atkvæði} other {# atkvæði}}", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Fjarlægja könnun", "privacy.change": "Aðlaga gagnaleynd færslu", "privacy.direct.long": "Senda einungis á notendur sem minnst er á", - "privacy.direct.short": "Beint", + "privacy.direct.short": "Aðeins fólk sem ég minnist á", "privacy.private.long": "Senda einungis á fylgjendur", "privacy.private.short": "Einungis fylgjendur", - "privacy.public.long": "Senda á opinberar tímalínur", + "privacy.public.long": "Sýnilegt fyrir alla", "privacy.public.short": "Opinbert", - "privacy.unlisted.long": "Ekki senda á opinberar tímalínur", + "privacy.unlisted.long": "Sýnilegt öllum, en ekki tekið með í uppgötvunareiginleikum", "privacy.unlisted.short": "Óskráð", "refresh": "Endurlesa", "regeneration_indicator.label": "Hleð inn…", @@ -472,7 +471,7 @@ "status.reblog_private": "Endurbirta til upphaflegra lesenda", "status.reblogged_by": "{name} endurbirti", "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", - "status.redraft": "Eyða og enduvinna drög", + "status.redraft": "Eyða og endurvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", "status.reply": "Svara", "status.replyAll": "Svara þræði", @@ -515,6 +514,7 @@ "upload_error.poll": "Innsending skráa er ekki leyfð í könnunum.", "upload_form.audio_description": "Lýstu þessu fyrir heyrnarskerta", "upload_form.description": "Lýstu þessu fyrir sjónskerta", + "upload_form.description_missing": "Engri lýsingu bætt við", "upload_form.edit": "Breyta", "upload_form.thumbnail": "Skipta um smámynd", "upload_form.undo": "Eyða", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index c057fcde1..e7d720cf9 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -70,7 +70,7 @@ "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", "column.community": "Timeline locale", - "column.direct": "Messaggi diretti", + "column.conversations": "Conversazioni", "column.directory": "Sfoglia profili", "column.domain_blocks": "Domini bloccati", "column.favourites": "Preferiti", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Solo Locale", "community.column_settings.media_only": "Solo Media", "community.column_settings.remote_only": "Solo Remoto", - "compose_form.direct_message_warning": "Questo post sarà inviato solo agli utenti menzionati.", "compose_form.direct_message_warning_learn_more": "Scopri di più", + "compose_form.encryption_warning": "I messaggi su Mastodon non sono crittografati end-to-end. Non condividere alcuna informazione sensibile su Mastodon.", "compose_form.hashtag_warning": "Questo post non sarà elencato sotto alcun hashtag poiché senza elenco. Solo i toot pubblici possono essere ricercati per hashtag.", "compose_form.lock_disclaimer": "Il tuo profilo non è {locked}. Chiunque può seguirti e vedere le tue pubblicazioni visibili solo dai follower.", "compose_form.lock_disclaimer.lock": "bloccato", @@ -148,7 +148,7 @@ "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", "emoji_button.custom": "Personalizzato", - "emoji_button.flags": "Segnalazioni", + "emoji_button.flags": "Bandiere", "emoji_button.food": "Cibo & Bevande", "emoji_button.label": "Inserisci emoji", "emoji_button.nature": "Natura", @@ -166,7 +166,7 @@ "empty_column.blocks": "Non hai ancora bloccato alcun utente.", "empty_column.bookmarked_statuses": "Non hai ancora segnato alcun post. Quando ne segni uno, sarà mostrato qui.", "empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!", - "empty_column.direct": "Non hai ancora nessun messaggio privato. Quando ne manderai o riceverai qualcuno, apparirà qui.", + "empty_column.conversations": "Quando invii o ricevi un post visibile solo alle persone citate in esso, apparirà qui.", "empty_column.domain_blocks": "Non vi sono domini nascosti.", "empty_column.explore_statuses": "Nulla è in tendenza in questo momento. Riprova più tardi!", "empty_column.favourited_statuses": "Non hai ancora segnato nessun post come apprezzato. Quando lo farai, comparirà qui.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Condividi il post", "keyboard_shortcuts.column": "per portare il focus su uno status in una delle colonne", "keyboard_shortcuts.compose": "per portare il focus nell'area di composizione", + "keyboard_shortcuts.conversations": "per aprire la colonna conversazioni", "keyboard_shortcuts.description": "Descrizione", - "keyboard_shortcuts.direct": "per aprire la colonna dei messaggi diretti", "keyboard_shortcuts.down": "Spostati in basso nella lista", "keyboard_shortcuts.enter": "Apri il post", "keyboard_shortcuts.favourite": "Apprezza post", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Timeline locale", "navigation_bar.compose": "Componi nuovo toot", - "navigation_bar.direct": "Messaggi diretti", "navigation_bar.discover": "Scopri", "navigation_bar.domain_blocks": "Domini nascosti", "navigation_bar.edit_profile": "Modifica profilo", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Rimuovi sondaggio", "privacy.change": "Modifica privacy del post", "privacy.direct.long": "Invia solo a utenti menzionati", - "privacy.direct.short": "Diretto in privato", + "privacy.direct.short": "Solo le persone che menziono", "privacy.private.long": "Invia solo ai follower", - "privacy.private.short": "Privato", - "privacy.public.long": "Invia alla timeline pubblica", + "privacy.private.short": "Solo i seguaci", + "privacy.public.long": "Visibile a tutti", "privacy.public.short": "Pubblico", - "privacy.unlisted.long": "Non mostrare sulla timeline pubblica", + "privacy.unlisted.long": "Visibile a tutti, ma escluso dalle funzioni di scoperta", "privacy.unlisted.short": "Non elencato", "refresh": "Aggiorna", "regeneration_indicator.label": "Caricamento in corso…", @@ -460,7 +459,7 @@ "status.history.edited": "{name} ha modificato {date}", "status.load_more": "Mostra di più", "status.media_hidden": "Allegato nascosto", - "status.mention": "Nomina @{name}", + "status.mention": "Menziona @{name}", "status.more": "Altro", "status.mute": "Silenzia @{name}", "status.mute_conversation": "Silenzia conversazione", @@ -483,7 +482,7 @@ "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", - "status.show_thread": "Mostra thread", + "status.show_thread": "Mostra conversazione", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", @@ -503,7 +502,7 @@ "timeline_hint.resources.followers": "Follower", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Post meno recenti", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parla·no", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parlano", "trends.trending_now": "Di tendenza ora", "ui.beforeunload": "La bozza andrà persa se esci da Mastodon.", "units.short.billion": "{count}G", @@ -515,6 +514,7 @@ "upload_error.poll": "Caricamento file non consentito nei sondaggi.", "upload_form.audio_description": "Descrizione per persone con difetti uditivi", "upload_form.description": "Descrizione per utenti con disabilità visive", + "upload_form.description_missing": "Nessuna descrizione inserita", "upload_form.edit": "Modifica", "upload_form.thumbnail": "Cambia miniatura", "upload_form.undo": "Cancella", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 48eb8de14..ce4b072fb 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -9,10 +9,10 @@ "account.browse_more_on_origin_server": "リモートで表示", "account.cancel_follow_request": "フォローリクエストを取り消す", "account.direct": "@{name}さんにダイレクトメッセージ", - "account.disable_notifications": "@{name} の投稿時の通知を停止", + "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", - "account.enable_notifications": "@{name} の投稿時に通知", + "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", "account.follow": "フォロー", "account.followers": "フォロワー", @@ -27,7 +27,7 @@ "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", "account.media": "メディア", - "account.mention": "@{name}さんに投稿", + "account.mention": "@{name}さんにメンション", "account.moved_to": "{name}さんは引っ越しました:", "account.mute": "@{name}さんをミュート", "account.mute_notifications": "@{name}さんからの通知を受け取らない", @@ -70,7 +70,7 @@ "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", "column.community": "ローカルタイムライン", - "column.direct": "ダイレクトメッセージ", + "column.conversations": "会話", "column.directory": "ディレクトリ", "column.domain_blocks": "ブロックしたドメイン", "column.favourites": "お気に入り", @@ -96,8 +96,8 @@ "community.column_settings.local_only": "ローカルのみ表示", "community.column_settings.media_only": "メディアのみ表示", "community.column_settings.remote_only": "リモートのみ表示", - "compose_form.direct_message_warning": "この投稿はメンションされた人にのみ送信されます。", "compose_form.direct_message_warning_learn_more": "もっと詳しく", + "compose_form.encryption_warning": "Mastodonの投稿はエンドツーエンド暗号化に対応していません。安全に送受信されるべき情報をMastodonで共有しないでください。", "compose_form.hashtag_warning": "この投稿は公開設定ではないのでハッシュタグの一覧に表示されません。公開投稿だけがハッシュタグで検索できます。", "compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。", "compose_form.lock_disclaimer.lock": "承認制", @@ -170,7 +170,7 @@ "empty_column.blocks": "まだ誰もブロックしていません。", "empty_column.bookmarked_statuses": "まだ何もブックマーク登録していません。ブックマーク登録するとここに表示されます。", "empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!", - "empty_column.direct": "ダイレクトメッセージはまだありません。ダイレクトメッセージをやりとりすると、ここに表示されます。", + "empty_column.conversations": "メンションした相手にだけ表示されるメッセージを一度でも送受信した場合、ここに表示されます。", "empty_column.domain_blocks": "ブロックしているドメインはありません。", "empty_column.explore_statuses": "まだ何もありません。後で確認してください。", "empty_column.favourited_statuses": "まだ何もお気に入り登録していません。お気に入り登録するとここに表示されます。", @@ -202,7 +202,7 @@ "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!", "follow_request.authorize": "許可", "follow_request.reject": "拒否", - "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain} のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", + "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", "generic.saved": "保存しました", "getting_started.developers": "開発", "getting_started.directory": "ディレクトリ", @@ -212,8 +212,8 @@ "getting_started.open_source_notice": "Mastodonはオープンソースソフトウェアです。誰でもthe computer lab ( {github} ) から開発に参加したり、問題を報告したりできます。", "getting_started.security": "アカウント設定", "getting_started.terms": "プライバシーポリシー", - "hashtag.column_header.tag_mode.all": "と {additional}", - "hashtag.column_header.tag_mode.any": "か {additional}", + "hashtag.column_header.tag_mode.all": "と{additional}", + "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", "hashtag.column_settings.select.no_options_message": "提案はありません", "hashtag.column_settings.select.placeholder": "ハッシュタグを入力してください…", @@ -234,8 +234,8 @@ "keyboard_shortcuts.boost": "ブースト", "keyboard_shortcuts.column": "左からn番目のカラムの最新に移動", "keyboard_shortcuts.compose": "投稿の入力欄に移動", + "keyboard_shortcuts.conversations": "会話カラムを開く", "keyboard_shortcuts.description": "説明", - "keyboard_shortcuts.direct": "ダイレクトメッセージのカラムを開く", "keyboard_shortcuts.down": "カラム内一つ下に移動", "keyboard_shortcuts.enter": "投稿の詳細を表示", "keyboard_shortcuts.favourite": "お気に入り", @@ -281,7 +281,7 @@ "lists.replies_policy.title": "リプライを表示:", "lists.search": "フォローしている人の中から検索", "lists.subheading": "あなたのリスト", - "load_pending": "{count} 件の新着", + "load_pending": "{count}件の新着", "loading_indicator.label": "読み込み中...", "media_gallery.toggle_visible": "メディアを隠す", "missing_indicator.label": "見つかりません", @@ -294,7 +294,6 @@ "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", "navigation_bar.compose": "投稿の新規作成", - "navigation_bar.direct": "ダイレクトメッセージ", "navigation_bar.discover": "見つける", "navigation_bar.domain_blocks": "ブロックしたドメイン", "navigation_bar.edit_profile": "プロフィールを編集", @@ -304,7 +303,7 @@ "navigation_bar.follow_requests": "フォローリクエスト", "navigation_bar.follows_and_followers": "フォロー・フォロワー", "navigation_bar.info": "このサーバーについて", - "navigation_bar.keyboard_shortcuts": "ホットキー", + "navigation_bar.keyboard_shortcuts": "キーボードショートカット", "navigation_bar.lists": "リスト", "navigation_bar.logout": "ログアウト", "navigation_bar.mutes": "ミュートしたユーザー", @@ -314,16 +313,16 @@ "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.misc": "その他", "navigation_bar.security": "セキュリティ", - "notification.admin.sign_up": "{name} がサインアップしました", + "notification.admin.sign_up": "{name}さんがサインアップしました", "notification.favourite": "{name}さんがあなたの投稿をお気に入りに登録しました", "notification.follow": "{name}さんにフォローされました", - "notification.follow_request": "{name} さんがあなたにフォローリクエストしました", + "notification.follow_request": "{name}さんがあなたにフォローリクエストしました", "notification.mention": "{name}さんがあなたに返信しました", "notification.own_poll": "アンケートが終了しました", "notification.poll": "アンケートが終了しました", "notification.reblog": "{name}さんがあなたの投稿をブーストしました", "notification.status": "{name}さんが投稿しました", - "notification.update": "{name} が投稿を編集しました", + "notification.update": "{name}さんが投稿を編集しました", "notifications.clear": "通知を消去", "notifications.clear_confirmation": "本当に通知を消去しますか?", "notifications.column_settings.admin.sign_up": "新規登録:", @@ -352,13 +351,13 @@ "notifications.filter.polls": "アンケート結果", "notifications.filter.statuses": "フォローしている人の新着情報", "notifications.grant_permission": "権限の付与", - "notifications.group": "{count} 件の通知", + "notifications.group": "{count}件の通知", "notifications.mark_as_read": "すべて既読にする", "notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません", "notifications.permission_denied_alert": "ブラウザの通知が拒否されているためデスクトップ通知を有効にできません", "notifications.permission_required": "必要な権限が付与されていないため、デスクトップ通知は利用できません。", "notifications_permission_banner.enable": "デスクトップ通知を有効にする", - "notifications_permission_banner.how_to_control": "Mastodon を閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。", + "notifications_permission_banner.how_to_control": "Mastodonを閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。", "notifications_permission_banner.title": "お見逃しなく", "picture_in_picture.restore": "元に戻す", "poll.closed": "終了", @@ -372,22 +371,22 @@ "poll_button.remove_poll": "アンケートを削除", "privacy.change": "公開範囲を変更", "privacy.direct.long": "送信した相手のみ閲覧可", - "privacy.direct.short": "ダイレクト", + "privacy.direct.short": "メンションした相手のみ", "privacy.private.long": "フォロワーのみ閲覧可", - "privacy.private.short": "フォロワー限定", - "privacy.public.long": "誰でも閲覧可、公開TLに表示", + "privacy.private.short": "フォロワーのみ", + "privacy.public.long": "誰でも閲覧可", "privacy.public.short": "公開", - "privacy.unlisted.long": "誰でも閲覧可、公開TLに非表示", + "privacy.unlisted.long": "誰でも閲覧可、サイレント", "privacy.unlisted.short": "未収載", "refresh": "更新", "regeneration_indicator.label": "読み込み中…", "regeneration_indicator.sublabel": "ホームタイムラインは準備中です!", "relative_time.days": "{number}日前", - "relative_time.full.days": "{number} 日前", - "relative_time.full.hours": "{number} 時間前", + "relative_time.full.days": "{number}日前", + "relative_time.full.hours": "{number}時間前", "relative_time.full.just_now": "今", - "relative_time.full.minutes": "{number} 分前", - "relative_time.full.seconds": "{number} 秒前", + "relative_time.full.minutes": "{number}分前", + "relative_time.full.seconds": "{number}秒前", "relative_time.hours": "{number}時間前", "relative_time.just_now": "今", "relative_time.minutes": "{number}分前", @@ -405,7 +404,7 @@ "report.category.title_status": "投稿", "report.close": "完了", "report.comment.title": "その他に私たちに伝えておくべき事はありますか?", - "report.forward": "{target} に転送する", + "report.forward": "{target}に転送する", "report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?", "report.mute": "ミュート", "report.mute_explanation": "相手の投稿は表示されなくなります。相手は引き続きあなたをフォローして、あなたの投稿を表示することができますが、ミュートされていることはわかりません。", @@ -426,10 +425,10 @@ "report.submit": "通報する", "report.target": "{target}さんを通報する", "report.thanks.take_action": "次のような方法はいかがでしょうか?", - "report.thanks.take_action_actionable": "私達が確認している間でも、あなたは @{name} さんに対して対応することが出来ます:", + "report.thanks.take_action_actionable": "私達が確認している間でも、あなたは@{name}さんに対して対応することが出来ます:", "report.thanks.title": "見えないようにしたいですか?", "report.thanks.title_actionable": "ご報告ありがとうございます、追って確認します。", - "report.unfollow": "@{name}のフォローを解除", + "report.unfollow": "@{name}さんのフォローを解除", "report.unfollow_explanation": "このアカウントをフォローしています。ホームフィードに彼らの投稿を表示しないようにするには、彼らのフォローを外してください。", "search.placeholder": "検索", "search_popout.search_format": "高度な検索フォーマット", @@ -445,7 +444,7 @@ "search_results.statuses": "投稿", "search_results.statuses_fts_disabled": "このサーバーでは投稿本文の検索は利用できません。", "search_results.total": "{count, number}件の結果", - "status.admin_account": "@{name} のモデレーション画面を開く", + "status.admin_account": "@{name}さんのモデレーション画面を開く", "status.admin_status": "この投稿をモデレーション画面で開く", "status.block": "@{name}さんをブロック", "status.bookmark": "ブックマーク", @@ -456,13 +455,13 @@ "status.detailed_status": "詳細な会話ビュー", "status.direct": "@{name}さんにダイレクトメッセージ", "status.edit": "編集", - "status.edited": "{date} 編集済み", - "status.edited_x_times": "{count} 回編集", + "status.edited": "{date}に編集", + "status.edited_x_times": "{count}回編集", "status.embed": "埋め込み", "status.favourite": "お気に入り", "status.filtered": "フィルターされました", - "status.history.created": "{name}さんが {date} に作成", - "status.history.edited": "{name}さんが {date} に編集", + "status.history.created": "{name}さんが{date}に作成", + "status.history.edited": "{name}さんが{date}に編集", "status.load_more": "もっと見る", "status.media_hidden": "非表示のメディア", "status.mention": "@{name}さんに投稿", @@ -508,7 +507,7 @@ "timeline_hint.resources.followers": "フォロワー", "timeline_hint.resources.follows": "フォロー", "timeline_hint.resources.statuses": "以前の投稿", - "trends.counter_by_accounts": "{counter} 人が投稿", + "trends.counter_by_accounts": "{counter}人が投稿", "trends.trending_now": "トレンドタグ", "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。", "units.short.billion": "{count}B", @@ -518,8 +517,9 @@ "upload_button.label": "メディアを追加 (複数の画像または1つの動画か音声ファイル)", "upload_error.limit": "アップロードできる上限を超えています。", "upload_error.poll": "アンケートではファイルをアップロードできません。", - "upload_form.audio_description": "聴取が難しいユーザーへの説明", + "upload_form.audio_description": "聴き取りが難しいユーザーへの説明", "upload_form.description": "閲覧が難しいユーザーへの説明", + "upload_form.description_missing": "説明を追加していません", "upload_form.edit": "編集", "upload_form.thumbnail": "サムネイルを変更", "upload_form.undo": "削除", @@ -532,7 +532,7 @@ "upload_modal.detect_text": "画像からテキストを検出", "upload_modal.edit_media": "メディアを編集", "upload_modal.hint": "サムネイルの焦点にしたい場所をクリックするか円形の枠をその場所にドラッグしてください。", - "upload_modal.preparing_ocr": "OCR の準備中…", + "upload_modal.preparing_ocr": "OCRの準備中…", "upload_modal.preview_label": "プレビュー ({ratio})", "upload_progress.label": "アップロード中...", "video.close": "動画を閉じる", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index f6f3f1e10..6b5fa5c97 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -70,7 +70,7 @@ "column.blocks": "დაბლოკილი მომხმარებლები", "column.bookmarks": "Bookmarks", "column.community": "ლოკალური თაიმლაინი", - "column.direct": "პირდაპირი წერილები", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "დამალული დომენები", "column.favourites": "ფავორიტები", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "ეს ტუტი არ მოექცევა ჰეშტეგების ქვეს, რამეთუ ის არაა მითითებული. მხოლოდ ღია ტუტები მოიძებნება ჰეშტეგით.", "compose_form.lock_disclaimer": "თქვენი ანგარიში არაა {locked}. ნებისმიერს შეიძლია გამოგყვეთ, რომ იხილოს თქვენი მიმდევრებზე გათვლილი პოსტები.", "compose_form.lock_disclaimer.lock": "ჩაკეტილი", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "ლოკალური თაიმლაინი ცარიელია. დაწერეთ რაიმე ღიად ან ქენით რაიმე სხვა!", - "empty_column.direct": "ჯერ პირდაპირი წერილები არ გაქვთ. როდესაც მიიღებთ ან გააგზავნით, გამოჩნდება აქ.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "დასაბუსტად", "keyboard_shortcuts.column": "ერთ-ერთი სვეტში სტატუსზე ფოკუსირებისთვის", "keyboard_shortcuts.compose": "შედგენის ტექსტ-არეაზე ფოკუსირებისთვის", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "აღწერილობა", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "სიაში ქვემოთ გადასაადგილებლად", "keyboard_shortcuts.enter": "სტატუსის გასახსნელად", "keyboard_shortcuts.favourite": "ფავორიტად ქცევისთვის", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "პირდაპირი წერილები", "navigation_bar.discover": "აღმოაჩინე", "navigation_bar.domain_blocks": "დამალული დომენები", "navigation_bar.edit_profile": "შეცვალე პროფილი", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "სტატუსის კონფიდენციალურობის მითითება", "privacy.direct.long": "დაიპოსტოს მხოლოდ დასახელებულ მომხმარებლებთან", - "privacy.direct.short": "პირდაპირი", + "privacy.direct.short": "Direct", "privacy.private.long": "დაიპოსტოს მხოლოდ მიმდევრებთან", - "privacy.private.short": "მხოლოდ-მიმდევრებისთვის", - "privacy.public.long": "დაიპოსტოს საჯარო თაიმლაინებზე", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "საჯარო", - "privacy.unlisted.long": "არ დაიპოსტოს საჯარო თაიმლაინებზე", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "ჩამოუთვლელი", "refresh": "Refresh", "regeneration_indicator.label": "იტვირთება…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "აღწერილობა ვიზუალურად უფასურისთვის", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "გაუქმება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 5b5c1eae8..3589b3c1e 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -70,7 +70,7 @@ "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", "column.community": "Tasuddemt tadigant", - "column.direct": "Iznan usriden", + "column.conversations": "Conversations", "column.directory": "Inig deg imaɣnuten", "column.domain_blocks": "Taɣulin yeffren", "column.favourites": "Ismenyifen", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Adigan kan", "community.column_settings.media_only": "Allal n teywalt kan", "community.column_settings.remote_only": "Anmeggag kan", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Amiḍan-ik ur yelli ara {locked}. Menwala yezmer ad k-yeḍfeṛ akken ad iẓer acu tbeṭṭuḍ akked yimeḍfaṛen-ik.", "compose_form.lock_disclaimer.lock": "yettwacekkel", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.", "empty_column.bookmarked_statuses": "Ulac tijewwaqin i terniḍ ɣer yismenyifen-ik ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.", "empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!", - "empty_column.direct": "Ulac ɣur-k ula yiwen n yizen usrid. Ad d-yettwasken da, ticki tuzneḍ neɣ teṭṭfeḍ-d yiwen.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ulac ula yiwet n tjewwaqt deg yismenyifen-ik ar tura. Ticki Tella-d yiwet, ad d-ban da.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "i beṭṭu tikelt-nniḍen", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Aglam", - "keyboard_shortcuts.direct": "akken ad teldiḍ ajgu n yiznan usriden", "keyboard_shortcuts.down": "i kennu ɣer wadda n tebdart", "keyboard_shortcuts.enter": "i tildin n tsuffeɣt", "keyboard_shortcuts.favourite": "akken ad ternuḍ ɣer yismenyifen", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.compose": "Aru tajewwiqt tamaynut", - "navigation_bar.direct": "Iznan usridden", "navigation_bar.discover": "Ẓer", "navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.edit_profile": "Ẓreg amaɣnu", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Kkes asenqed", "privacy.change": "Seggem tabaḍnit n yizen", "privacy.direct.long": "Bḍu gar yimseqdacen i tbedreḍ kan", - "privacy.direct.short": "Usrid", + "privacy.direct.short": "Direct", "privacy.private.long": "Bḍu i yimeḍfaṛen-ik kan", - "privacy.private.short": "Imeḍfaṛen kan", - "privacy.public.long": "Bḍu deg tsuddemt tazayezt", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Azayez", - "privacy.unlisted.long": "Ur beṭṭu ara deg tsuddemt tazayezt", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "War tabdert", "refresh": "Smiren", "regeneration_indicator.label": "Yessalay-d…", @@ -515,6 +514,7 @@ "upload_error.poll": "Ur ittusireg ara usali n ufaylu s tefranin.", "upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt", "upload_form.description": "Glem-d i yemdaneni yesɛan ugur deg yiẓri", + "upload_form.description_missing": "No description added", "upload_form.edit": "Ẓreg", "upload_form.thumbnail": "Beddel tugna", "upload_form.undo": "Kkes", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 660c9a20e..4cdd21ae9 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -70,7 +70,7 @@ "column.blocks": "Бұғатталғандар", "column.bookmarks": "Бетбелгілер", "column.community": "Жергілікті желі", - "column.direct": "Жеке хаттар", + "column.conversations": "Conversations", "column.directory": "Профильдерді аралау", "column.domain_blocks": "Жасырылған домендер", "column.favourites": "Таңдаулылар", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Тек жергілікті", "community.column_settings.media_only": "Тек медиа", "community.column_settings.remote_only": "Тек сыртқы", - "compose_form.direct_message_warning": "Тек аталған қолданушыларға.", "compose_form.direct_message_warning_learn_more": "Көбірек білу", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Бұл пост іздеуде хэштегпен шықпайды, өйткені ол бәріне ашық емес. Тек ашық жазбаларды ғана хэштег арқылы іздеп табуға болады.", "compose_form.lock_disclaimer": "Аккаунтыңыз {locked} емес. Кез келген адам жазылып, сізді оқи алады.", "compose_form.lock_disclaimer.lock": "жабық", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ешкімді бұғаттамағансыз.", "empty_column.bookmarked_statuses": "Ешқандай жазба Бетбелгілер тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", "empty_column.community": "Жергілікті желі бос. Сіз бастап жазыңыз!", - "empty_column.direct": "Әзірше дым хат жоқ. Өзіңіз жазып көріңіз алдымен.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Бұғатталған домен жоқ.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ешқандай жазба 'Таңдаулылар' тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "жазба бөлісу", "keyboard_shortcuts.column": "бағандардағы жазбаны оқу", "keyboard_shortcuts.compose": "пост жазу", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Сипаттама", - "keyboard_shortcuts.direct": "жеке хаттар бағаны", "keyboard_shortcuts.down": "тізімде төмен түсу", "keyboard_shortcuts.enter": "жазбаны ашу", "keyboard_shortcuts.favourite": "таңдаулыға қосу", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", "navigation_bar.compose": "Жаңа жазба бастау", - "navigation_bar.direct": "Жеке хаттар", "navigation_bar.discover": "шарлау", "navigation_bar.domain_blocks": "Жабық домендер", "navigation_bar.edit_profile": "Профиль түзету", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Сауалнаманы өшіру", "privacy.change": "Құпиялылықты реттеу", "privacy.direct.long": "Аталған адамдарға ғана көрінетін жазба", - "privacy.direct.short": "Тікелей", + "privacy.direct.short": "Direct", "privacy.private.long": "Тек оқырмандарға арналған жазба", - "privacy.private.short": "Оқырмандарға ғана", - "privacy.public.long": "Ашық желіге жібер", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Ашық", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Тізімсіз", "refresh": "Жаңарту", "regeneration_indicator.label": "Жүктеу…", @@ -515,6 +514,7 @@ "upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды.", "upload_form.audio_description": "Есту қабілеті нашар адамдарға сипаттама беріңіз", "upload_form.description": "Көру қабілеті нашар адамдар үшін сипаттаңыз", + "upload_form.description_missing": "No description added", "upload_form.edit": "Түзету", "upload_form.thumbnail": "Суретті өзгерту", "upload_form.undo": "Өшіру", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index c1428c1ab..aeef7315e 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Favourites", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 4fc5aada5..f777d39ae 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -3,7 +3,7 @@ "account.add_or_remove_from_list": "리스트에 추가 혹은 삭제", "account.badges.bot": "봇", "account.badges.group": "그룹", - "account.block": "@{name}을 차단", + "account.block": "@{name} 차단", "account.block_domain": "도메인 {domain}을 차단", "account.blocked": "차단됨", "account.browse_more_on_origin_server": "원본 프로필에서 더 탐색하기", @@ -70,10 +70,10 @@ "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", "column.community": "로컬 타임라인", - "column.direct": "다이렉트 메시지", + "column.conversations": "대화", "column.directory": "프로필 둘러보기", "column.domain_blocks": "차단한 도메인", - "column.favourites": "즐겨찾기", + "column.favourites": "좋아요", "column.follow_requests": "팔로우 요청", "column.home": "홈", "column.lists": "리스트", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "로컬만", "community.column_settings.media_only": "미디어만", "community.column_settings.remote_only": "원격만", - "compose_form.direct_message_warning": "이 게시물은 멘션 된 유저들에게만 보여집니다.", "compose_form.direct_message_warning_learn_more": "더 알아보기", + "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니아. 위험한 정보를 마스토돈을 통해 전달하지 마세요.", "compose_form.hashtag_warning": "이 게시물은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 게시물만이 해시태그로 검색 될 수 있습니다.", "compose_form.lock_disclaimer": "이 계정은 {locked}로 설정 되어 있지 않습니다. 누구나 이 계정을 팔로우 할 수 있으며, 팔로워 공개의 포스팅을 볼 수 있습니다.", "compose_form.lock_disclaimer.lock": "비공개", @@ -128,10 +128,10 @@ "confirmations.logout.confirm": "로그아웃", "confirmations.logout.message": "정말로 로그아웃 하시겠습니까?", "confirmations.mute.confirm": "뮤트", - "confirmations.mute.explanation": "이 동작은 그의 게시물, 그를 멘션하는 게시물을 숨깁니다, 하지만 여전히 그가 당신의 게시물을 보고 팔로우 할 수 있습니다.", + "confirmations.mute.explanation": "이 동작은 해당 계정의 게시물과 해당 계정을 멘션하는 게시물을 숨깁니다, 하지만 여전히 해당 계정이 당신의 게시물을 보고 팔로우 할 수 있습니다.", "confirmations.mute.message": "정말로 {name}를 뮤트하시겠습니까?", "confirmations.redraft.confirm": "삭제하고 다시 쓰기", - "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 포스트에 대한 부스트와 즐겨찾기를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.", + "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 게시물에 대한 부스트와 좋아요를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.", "confirmations.reply.confirm": "답글", "confirmations.reply.message": "답글을 달기 위해 현재 작성 중인 메시지가 덮어 씌워집니다. 진행하시겠습니까?", "confirmations.unfollow.confirm": "팔로우 해제", @@ -140,7 +140,7 @@ "conversation.mark_as_read": "읽은 상태로 표시", "conversation.open": "대화 보기", "conversation.with": "{names} 님과", - "directory.federated": "알려진 별무리로부터", + "directory.federated": "알려진 연합우주로부터", "directory.local": "{domain}에서만", "directory.new_arrivals": "새로운 사람들", "directory.recently_active": "최근 활동", @@ -166,11 +166,11 @@ "empty_column.blocks": "아직 아무도 차단하지 않았습니다.", "empty_column.bookmarked_statuses": "아직 보관한 게시물이 없습니다. 게시물을 보관하면 여기에 나타납니다.", "empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!", - "empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.", + "empty_column.conversations": "멘션한 사람만 볼 수 있는 게시물을 보내거나 받은 경우에, 여기에 나타납니다.", "empty_column.domain_blocks": "아직 차단한 도메인이 없습니다.", "empty_column.explore_statuses": "아직 유행하는 것이 없습니다. 나중에 다시 확인하세요!", - "empty_column.favourited_statuses": "아직 즐겨찾기 한 게시물이 없습니다. 게시물을 즐겨찾기 하면 여기에 나타납니다.", - "empty_column.favourites": "아직 아무도 이 게시물을 즐겨찾기 하지 않았습니다. 누군가 즐겨찾기를 하면 여기에 나타납니다.", + "empty_column.favourited_statuses": "아직 마음에 들어한 게시물이 없습니다. 게시물을 좋아요 하면 여기에 나타납니다.", + "empty_column.favourites": "아직 아무도 이 게시물을 마음에 들어하지 않았습니다. 누군가 좋아요를 하면 여기에 나타납니다.", "empty_column.follow_recommendations": "당신을 위한 제안이 생성될 수 없는 것 같습니다. 알 수도 있는 사람을 검색하거나 유행하는 해시태그를 둘러볼 수 있습니다.", "empty_column.follow_requests": "아직 팔로우 요청이 없습니다. 요청을 받았을 때 여기에 나타납니다.", "empty_column.hashtag": "이 해시태그는 아직 사용되지 않았습니다.", @@ -230,12 +230,12 @@ "keyboard_shortcuts.boost": "게시물 부스트", "keyboard_shortcuts.column": "해당 컬럼에 포커스", "keyboard_shortcuts.compose": "작성창에 포커스", + "keyboard_shortcuts.conversations": "대화 컬럼 열기", "keyboard_shortcuts.description": "설명", - "keyboard_shortcuts.direct": "다이렉트 메시지 컬럼 열기", "keyboard_shortcuts.down": "리스트에서 아래로 이동", "keyboard_shortcuts.enter": "게시물 열기", "keyboard_shortcuts.favourite": "관심글 지정", - "keyboard_shortcuts.favourites": "즐겨찾기 목록 열기", + "keyboard_shortcuts.favourites": "좋아요 목록 열기", "keyboard_shortcuts.federated": "연합 타임라인 열기", "keyboard_shortcuts.heading": "키보드 단축키", "keyboard_shortcuts.home": "홈 타임라인 열기", @@ -290,12 +290,11 @@ "navigation_bar.bookmarks": "보관함", "navigation_bar.community_timeline": "로컬 타임라인", "navigation_bar.compose": "새 게시물 작성", - "navigation_bar.direct": "다이렉트 메시지", "navigation_bar.discover": "발견하기", "navigation_bar.domain_blocks": "차단한 도메인", "navigation_bar.edit_profile": "프로필 편집", "navigation_bar.explore": "탐색하기", - "navigation_bar.favourites": "즐겨찾기", + "navigation_bar.favourites": "좋아요", "navigation_bar.filters": "뮤트한 단어", "navigation_bar.follow_requests": "팔로우 요청", "navigation_bar.follows_and_followers": "팔로우와 팔로워", @@ -310,7 +309,7 @@ "navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.security": "보안", "notification.admin.sign_up": "{name} 님이 가입했습니다", - "notification.favourite": "{name} 님이 즐겨찾기 했습니다", + "notification.favourite": "{name} 님이 당신의 게시물을 마음에 들어합니다", "notification.follow": "{name} 님이 나를 팔로우 했습니다", "notification.follow_request": "{name} 님이 팔로우 요청을 보냈습니다", "notification.mention": "{name} 님이 답글을 보냈습니다", @@ -323,7 +322,7 @@ "notifications.clear_confirmation": "정말로 알림을 삭제하시겠습니까?", "notifications.column_settings.admin.sign_up": "새로운 가입:", "notifications.column_settings.alert": "데스크탑 알림", - "notifications.column_settings.favourite": "즐겨찾기:", + "notifications.column_settings.favourite": "좋아요:", "notifications.column_settings.filter_bar.advanced": "카테고리의 모든 종류를 표시", "notifications.column_settings.filter_bar.category": "퀵 필터 바", "notifications.column_settings.filter_bar.show_bar": "필터 막대 표시", @@ -341,7 +340,7 @@ "notifications.column_settings.update": "수정내역:", "notifications.filter.all": "모두", "notifications.filter.boosts": "부스트", - "notifications.filter.favourites": "즐겨찾기", + "notifications.filter.favourites": "좋아요", "notifications.filter.follows": "팔로우", "notifications.filter.mentions": "멘션", "notifications.filter.polls": "투표 결과", @@ -365,14 +364,14 @@ "poll.votes": "{votes} 표", "poll_button.add_poll": "투표 추가", "poll_button.remove_poll": "투표 삭제", - "privacy.change": "포스트의 프라이버시 설정을 변경", + "privacy.change": "게시물의 프라이버시 설정을 변경", "privacy.direct.long": "멘션한 사용자에게만 공개", - "privacy.direct.short": "다이렉트", + "privacy.direct.short": "내가 멘션한 사람만", "privacy.private.long": "팔로워에게만 공개", - "privacy.private.short": "비공개", - "privacy.public.long": "공개 타임라인에 표시", + "privacy.private.short": "팔로워 전용", + "privacy.public.long": "모두가 볼 수 있음", "privacy.public.short": "공개", - "privacy.unlisted.long": "공개 타임라인에 표시하지 않음", + "privacy.unlisted.long": "모두가 볼 수 있지만, 발견하기 기능에서는 제외됨", "privacy.unlisted.short": "타임라인에 비표시", "refresh": "새로고침", "regeneration_indicator.label": "불러오는 중…", @@ -390,7 +389,7 @@ "relative_time.today": "오늘", "reply_indicator.cancel": "취소", "report.block": "차단", - "report.block_explanation": "당신은 그의 게시물을 보지 않게 됩니다. 그는 당신의 게시물을 보거나 팔로우 할 수 없습니다. 그가 차단되었다는 사실을 알 수 있습니다.", + "report.block_explanation": "당신은 해당 계정의 게시물을 보지 않게 됩니다. 해당 계정은 당신의 게시물을 보거나 팔로우 할 수 없습니다. 해당 계정은 자신이 차단되었다는 사실을 알 수 있습니다.", "report.categories.other": "기타", "report.categories.spam": "스팸", "report.categories.violation": "컨텐츠가 한 개 이상의 서버 규칙을 위반합니다", @@ -403,7 +402,7 @@ "report.forward": "{target}에 포워드 됨", "report.forward_hint": "이 계정은 다른 서버에 있습니다. 익명화 된 사본을 해당 서버에도 전송할까요?", "report.mute": "침묵", - "report.mute_explanation": "당신은 그의 게시물을 보지 않게 됩니다. 그는 여전히 당신을 팔로우 하거나 당신의 게시물을 볼 수 있으며 뮤트 되었는지 알지 못합니다.", + "report.mute_explanation": "당신은 해당 계정의 게시물을 보지 않게 됩니다. 해당 계정은 여전히 당신을 팔로우 하거나 당신의 게시물을 볼 수 있으며 해당 계정은 자신이 뮤트 되었는지 알지 못합니다.", "report.next": "다음", "report.placeholder": "코멘트", "report.reasons.dislike": "마음에 안듭니다", @@ -445,7 +444,7 @@ "status.block": "@{name} 차단", "status.bookmark": "보관", "status.cancel_reblog_private": "부스트 취소", - "status.cannot_reblog": "이 포스트는 부스트 할 수 없습니다", + "status.cannot_reblog": "이 게시물은 부스트 할 수 없습니다", "status.copy": "게시물 링크 복사", "status.delete": "삭제", "status.detailed_status": "대화 자세히 보기", @@ -454,7 +453,7 @@ "status.edited": "{date}에 편집됨", "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", - "status.favourite": "즐겨찾기", + "status.favourite": "좋아요", "status.filtered": "필터로 걸러짐", "status.history.created": "{name} 님이 {date}에 생성함", "status.history.edited": "{name} 님이 {date}에 수정함", @@ -515,6 +514,7 @@ "upload_error.poll": "파일 업로드는 투표와 함께 첨부할 수 없습니다.", "upload_form.audio_description": "청각 장애인을 위한 설명", "upload_form.description": "시각장애인을 위한 설명", + "upload_form.description_missing": "설명이 추가되지 않음", "upload_form.edit": "편집", "upload_form.thumbnail": "썸네일 변경", "upload_form.undo": "삭제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 2bf8fc520..02df9eff6 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -70,7 +70,7 @@ "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", "column.community": "Demnameya herêmî", - "column.direct": "Peyamên taybet", + "column.conversations": "Axaftin", "column.directory": "Li profîlan bigere", "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Tenê herêmî", "community.column_settings.media_only": "Tenê media", "community.column_settings.remote_only": "Tenê ji dûr ve", - "compose_form.direct_message_warning": "Ev şandî tenê ji bikarhênerên qalkirî re wê were şandin.", "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe", + "compose_form.encryption_warning": "Şandiyên li ser Mastodon dawî-bi-dawî ne şîfrekirî ne. Li ser Mastodon zanyariyên talûke parve neke.", "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", "compose_form.lock_disclaimer.lock": "girtî ye", @@ -166,7 +166,7 @@ "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.", "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!", - "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.", + "empty_column.conversations": "Dema tu şandiyekê bişîninî an jî bistînî ku tenê ji kesên qalkirî re xuyabar in, ew ê li vir xuya bibe.", "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.", "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!", "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Şandiyê bilind bike", "keyboard_shortcuts.column": "Stûna balkişandinê", "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", + "keyboard_shortcuts.conversations": "ji bo vekirina stûna axaftinan", "keyboard_shortcuts.description": "Danasîn", - "keyboard_shortcuts.direct": "Ji stûnê peyamên rasterast veke", "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr", "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.favourite": "Şandiya bijarte", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", "navigation_bar.compose": "Şandiyeke nû binivsîne", - "navigation_bar.direct": "Peyamên rasterast", "navigation_bar.discover": "Vekolê", "navigation_bar.domain_blocks": "Navparên astengkirî", "navigation_bar.edit_profile": "Profîl serrast bike", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Rapirsî yê rake", "privacy.change": "Nepênîtiya şandiyan biguherîne", "privacy.direct.long": "Tenê ji bo bikarhênerên qalkirî tê dîtin", - "privacy.direct.short": "Taybet", + "privacy.direct.short": "Tenê mirovên ku min qalkirî", "privacy.private.long": "Tenê bo şopîneran xuyabar e", "privacy.private.short": "Tenê şopîneran", - "privacy.public.long": "Ji bo herkesî li berçav e, di demnameyên gelemperî de dê xûyakirin", + "privacy.public.long": "Ji bo hemûyan xuyabar e", "privacy.public.short": "Gelemperî", - "privacy.unlisted.long": "Ji herkesî ra tê xûya, lê demnameyê gelemperî ra nay xûyakirin", + "privacy.unlisted.long": "Ji bo hemûyan xuyabar e, lê ji taybetmendiyên vekolînê veqetiya ye", "privacy.unlisted.short": "Nerêzok", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", @@ -515,6 +514,7 @@ "upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.", "upload_form.audio_description": "Ji bona kesên kêm dibihîsin re pênase bike", "upload_form.description": "Ji bona astengdarên dîtinê re vebêje", + "upload_form.description_missing": "Ti danasîn nehatiye tevlîkirin", "upload_form.edit": "Serrast bike", "upload_form.thumbnail": "Wêneyê biçûk biguherîne", "upload_form.undo": "Jê bibe", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index de78c462a..07d5e36fc 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -70,7 +70,7 @@ "column.blocks": "Devnydhyoryon lettys", "column.bookmarks": "Folennosow", "column.community": "Amserlin leel", - "column.direct": "Messajys didro", + "column.conversations": "Conversations", "column.directory": "Peuri profilys", "column.domain_blocks": "Gorfarthow lettys", "column.favourites": "Re drudh", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Leel hepken", "community.column_settings.media_only": "Myski hepken", "community.column_settings.remote_only": "A-bell hepken", - "compose_form.direct_message_warning": "An post ma a vydh danvenys dhe'n dhevnydhyoryon menegys hepken.", "compose_form.direct_message_warning_learn_more": "Dyski moy", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ny vydh an post ma diskwedhys yn-dann vòlnos vyth awos y vos mes a rol. Ny yllir hwilas saw poblow postek dre vòlnos.", "compose_form.lock_disclaimer": "Nyns yw agas akont {locked}. Piwpynag a yll agas holya dhe weles agas postow holyoryon-hepken.", "compose_form.lock_disclaimer.lock": "Alhwedhys", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ny wrussowgh lettya devnydhyoryon vyth hwath.", "empty_column.bookmarked_statuses": "Nyns eus dhywgh postow gans folennos hwath. Pan wrewgh gorra onan, ev a wra omdhiskwedhes omma.", "empty_column.community": "An amserlin leel yw gwag. Skrifewgh neppytn yn poblek dh'y lonchya!", - "empty_column.direct": "Nyns eus dhywgh messajys didro hwath. Pan wrewgh dannvon po degemeres onan, ev a wra omdhiskwedhes omma.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Nyns eus gorfarthow lettys hwath.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nyns eus dhywgh postow drudh hwath. Pan wrewgh merkya onan vel drudh, ev a wra omdhiskwedhes omma.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Kenertha post", "keyboard_shortcuts.column": "Fogella koloven", "keyboard_shortcuts.compose": "Fogella tekstva gomposya", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskrifans", - "keyboard_shortcuts.direct": "Ygeri koloven messajys didro", "keyboard_shortcuts.down": "Movya war-nans y'n rol", "keyboard_shortcuts.enter": "Ygeri post", "keyboard_shortcuts.favourite": "Merkya post vel drudh", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", "navigation_bar.compose": "Komposya post nowydh", - "navigation_bar.direct": "Messajys didro", "navigation_bar.discover": "Diskudha", "navigation_bar.domain_blocks": "Gorfarthow lettys", "navigation_bar.edit_profile": "Golegi profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Dilea sondyans", "privacy.change": "Chanjya privetter an post", "privacy.direct.long": "Gweladow dhe'n dhevnydhyoryon menegys hepken", - "privacy.direct.short": "Didro", + "privacy.direct.short": "Direct", "privacy.private.long": "Gweladow dhe holyoryon hepken", - "privacy.private.short": "Holyoryon-hepken", - "privacy.public.long": "Gweladow dhe beub, diskwedhys yn amserlinyow poblek", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Poblek", - "privacy.unlisted.long": "Gweladow dhe beub, a-der yn amserlinyow poblek", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anrelys", "refresh": "Daskarga", "regeneration_indicator.label": "Ow karga…", @@ -515,6 +514,7 @@ "upload_error.poll": "Nyns yw gesys ughkarga restrennow gans sondyansow.", "upload_form.audio_description": "Deskrifewgh rag tus vodharek", "upload_form.description": "Deskrifewgh rag tus dhallek", + "upload_form.description_missing": "No description added", "upload_form.edit": "Golegi", "upload_form.thumbnail": "Chanjya avenik", "upload_form.undo": "Dilea", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 065d4a51e..89a9bd71c 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Mėgstamiausi", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index f16df5423..3bfb7532a 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -70,7 +70,7 @@ "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", "column.community": "Vietējā ziņu līnija", - "column.direct": "Privātās ziņas", + "column.conversations": "Sarunas", "column.directory": "Pārlūkot profilus", "column.domain_blocks": "Bloķētie domēni", "column.favourites": "Izlase", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Tikai vietējie", "community.column_settings.media_only": "Tikai mediji", "community.column_settings.remote_only": "Tikai attālinātie", - "compose_form.direct_message_warning": "Šis ziņojums tiks nosūtīts tikai pieminētajiem lietotājiem.", "compose_form.direct_message_warning_learn_more": "Uzzināt vairāk", + "compose_form.encryption_warning": "Ziņas vietnē Mastodon nav pilnībā šifrētas. Nedalies ar bīstamu informāciju caur Mastodon.", "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.", "compose_form.lock_disclaimer": "Tavs konts nav {locked}. Ikviens var Tev sekot lai apskatītu tikai sekotājiem paredzētos ziņojumus.", "compose_form.lock_disclaimer.lock": "slēgts", @@ -166,7 +166,7 @@ "empty_column.blocks": "Patreiz tu neesi nevienu bloķējis.", "empty_column.bookmarked_statuses": "Patreiz tev nav neviena grāmatzīmēm pievienota ieraksta. Kad tādu pievienosi, tas parādīsies šeit.", "empty_column.community": "Vietējā ziņu lenta ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!", - "empty_column.direct": "Patrez tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.", + "empty_column.conversations": "Kad nosūtīsi vai saņemsi ziņu, kas ir redzama tikai tajā minētajām personām, tā tiks parādīta šeit.", "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.", "empty_column.explore_statuses": "Pašlaik nekas nav tendēts. Pārbaudiet vēlāk!", "empty_column.favourited_statuses": "Patreiz tev nav neviena izceltā ieraksta. Kad kādu izcelsi, tas parādīsies šeit.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Palielināt ziņu", "keyboard_shortcuts.column": "Fokusēt kolonnu", "keyboard_shortcuts.compose": "Fokusēt veidojamā teksta lauku", + "keyboard_shortcuts.conversations": "lai atvērtu sarunu kolonnu", "keyboard_shortcuts.description": "Apraksts", - "keyboard_shortcuts.direct": "Atvērt privāto ziņojumu kolonnu", "keyboard_shortcuts.down": "Pārvietot sarakstā uz leju", "keyboard_shortcuts.enter": "Atvērt ziņu", "keyboard_shortcuts.favourite": "Pievienot izlasei", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā ziņu lenta", "navigation_bar.compose": "Veidot jaunu ziņu", - "navigation_bar.direct": "Privātās ziņas", "navigation_bar.discover": "Atklāt", "navigation_bar.domain_blocks": "Bloķētie domēni", "navigation_bar.edit_profile": "Rediģēt profilu", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Noņemt aptauju", "privacy.change": "Mainīt ziņas privātumu", "privacy.direct.long": "Redzams tikai pieminētajiem lietotājiem", - "privacy.direct.short": "Tiešs", + "privacy.direct.short": "Tikai cilvēki, kurus es pieminu", "privacy.private.long": "Redzams tikai sekotājiem", "privacy.private.short": "Tikai sekotājiem", - "privacy.public.long": "Redzams visiem, rāda publiskajās ziņu lentās", + "privacy.public.long": "Redzama visiem", "privacy.public.short": "Publisks", - "privacy.unlisted.long": "Redzams visiem, bet ne publiskajās ziņu lentās", + "privacy.unlisted.long": "Redzama visiem, bet atteicās no atklāšanas funkcijām", "privacy.unlisted.short": "Neminētie", "refresh": "Atsvaidzināt", "regeneration_indicator.label": "Ielādē…", @@ -515,6 +514,7 @@ "upload_error.poll": "Datņu augšupielādes aptaujās nav atļautas.", "upload_form.audio_description": "Aprakstiet cilvēkiem ar dzirdes zudumu", "upload_form.description": "Aprakstiet vājredzīgajiem", + "upload_form.description_missing": "Apraksts nav pievienots", "upload_form.edit": "Rediģēt", "upload_form.thumbnail": "Nomainīt sīktēlu", "upload_form.undo": "Dzēst", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 10a217873..f8e0694c8 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -70,7 +70,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Bookmarks", "column.community": "Локална временска зона", - "column.direct": "Директна порака", + "column.conversations": "Conversations", "column.directory": "Види профили", "column.domain_blocks": "Скриени домеини", "column.favourites": "Омилени", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "заклучен", @@ -166,7 +166,7 @@ "empty_column.blocks": "Немате сеуште блокирано корисници.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Локалниот времеплов е празен. Објавете нешто јавно за да може да почне шоуто!", - "empty_column.direct": "Немате директни пораки. Кога ќе пратите или примите, ќе се појават тука.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Немате сокриени домеини уште.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Уреди профил", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Избришете анкета", "privacy.change": "Штеловај статус на приватност", "privacy.direct.long": "Објави само на спомнати корисници", - "privacy.direct.short": "Директно", + "privacy.direct.short": "Direct", "privacy.private.long": "Објави само на следбеници", - "privacy.private.short": "Само следбеници", - "privacy.public.long": "Објави во јавни времплови", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Јавно", - "privacy.unlisted.long": "Не објавувај на јавни времеплови", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Необјавено", "refresh": "Освежи", "regeneration_indicator.label": "Вчитување…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index ce09a0a6d..6b78a4dd1 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -70,7 +70,7 @@ "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", "column.community": "പ്രാദേശികമായ സമയരേഖ", - "column.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ", + "column.conversations": "Conversations", "column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", "column.favourites": "പ്രിയപ്പെട്ടവ", @@ -92,8 +92,8 @@ "community.column_settings.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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "ഈ ടൂട്ട് പട്ടികയിൽ ഇല്ലാത്തതിനാൽ ഒരു ചർച്ചാവിഷയത്തിന്റെ പട്ടികയിലും പെടുകയില്ല. പരസ്യമായ ടൂട്ടുകൾ മാത്രമേ ചർച്ചാവിഷയം അടിസ്ഥാനമാക്കി തിരയുവാൻ സാധിക്കുകയുള്ളു.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "ലോക്കുചെയ്തു", @@ -166,7 +166,7 @@ "empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.", "empty_column.bookmarked_statuses": "നിങ്ങൾക് ഇതുവരെ അടയാളപ്പെടുത്തിയ ടൂട്ടുകൾ ഇല്ല. അടയാളപ്പെടുത്തിയാൽ അത് ഇവിടെ വരും.", "empty_column.community": "പ്രാദേശികമായ സമയരേഖ ശൂന്യമാണ്. എന്തെങ്കിലും പരസ്യമായി എഴുതി തുടക്കം കുറിക്കു!", - "empty_column.direct": "നിങ്ങൾക്ക് ഇതുവരെ നേരിട്ടുള്ള സന്ദേശങ്ങൾ ഒന്നുമില്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് അയക്കുകയോ, നിങ്ങൾക്ക് ലഭിക്കുകയോ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "മറയ്ക്കപ്പെട്ടിരിക്കുന്ന മേഖലകൾ ഇതുവരെ ഇല്ല.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "ബൂസ്റ്റ് ചെയ്യുക", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "വിവരണം", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "ടൂട്ട് എടുക്കാൻ", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", "navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക", - "navigation_bar.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ", "navigation_bar.discover": "കണ്ടെത്തുക", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "പോൾ നീക്കംചെയ്യുക", "privacy.change": "ടൂട്ട് സ്വകാര്യത ക്രമീകരിക്കുക", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "നേരിട്ട്", + "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", - "privacy.private.short": "പിന്തുടരുന്നവർക്ക് മാത്രം", - "privacy.public.long": "Post to public timelines", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "എല്ലാവര്‍ക്കും", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "പുതുക്കുക", "regeneration_indicator.label": "ലഭ്യമാക്കുന്നു…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "കേൾവിശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ", "upload_form.description": "കാഴ്ചശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ", + "upload_form.description_missing": "No description added", "upload_form.edit": "തിരുത്തുക", "upload_form.thumbnail": "ലഘുചിത്രം മാറ്റുക", "upload_form.undo": "ഇല്ലാതാക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 58d10971f..88b34a5f9 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -70,7 +70,7 @@ "column.blocks": "ब्लॉक केलेले खातेधारक", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "थेट संदेश", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "गुप्त डोमेन्स", "column.favourites": "आवडते", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 83facdbe1..eb3ef7ef9 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -70,7 +70,7 @@ "column.blocks": "Pengguna yang disekat", "column.bookmarks": "Tanda buku", "column.community": "Garis masa tempatan", - "column.direct": "Mesej terus", + "column.conversations": "Conversations", "column.directory": "Layari profil", "column.domain_blocks": "Domain disekat", "column.favourites": "Kegemaran", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Tempatan sahaja", "community.column_settings.media_only": "Media sahaja", "community.column_settings.remote_only": "Jauh sahaja", - "compose_form.direct_message_warning": "Hantaran ini hanya akan dihantar kepada pengguna yang disebut.", "compose_form.direct_message_warning_learn_more": "Ketahui lebih lanjut", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Hantaran ini tidak akan disenaraikan di bawah mana-mana tanda pagar kerana ia tidak tersenarai. Hanya hantaran awam sahaja boleh dicari menggunakan tanda pagar.", "compose_form.lock_disclaimer": "Akaun anda tidak {locked}. Sesiapa pun boleh mengikuti anda untuk melihat hantaran pengikut-sahaja anda.", "compose_form.lock_disclaimer.lock": "dikunci", @@ -166,7 +166,7 @@ "empty_column.blocks": "Anda belum menyekat sesiapa.", "empty_column.bookmarked_statuses": "Anda belum ada hantaran yang ditanda buku. Apabila anda menanda buku sesuatu, ia akan muncul di sini.", "empty_column.community": "Garis masa tempatan kosong. Tulislah secara awam untuk memulakan sesuatu!", - "empty_column.direct": "Anda tidak mempunyai mesej terus. Apabila anda menghantar atau menerimanya, ia akan muncul di sini.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Belum ada domain yang disekat.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Anda belum ada hantaran yang digemari. Apabila anda menggemari sesuatu, ia akan muncul di sini.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "Tumpu pada lajur", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Keterangan", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "Buka hantaran", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Tanda buku", "navigation_bar.community_timeline": "Garis masa tempatan", "navigation_bar.compose": "Karang hantaran baharu", - "navigation_bar.direct": "Mesej terus", "navigation_bar.discover": "Teroka", "navigation_bar.domain_blocks": "Domain disekat", "navigation_bar.edit_profile": "Sunting profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Buang undian", "privacy.change": "Ubah privasi hantaran", "privacy.direct.long": "Hanya boleh dilihat oleh pengguna disebut", - "privacy.direct.short": "Terus", + "privacy.direct.short": "Direct", "privacy.private.long": "Hanya boleh dilihat oleh pengikut", - "privacy.private.short": "Pengikut sahaja", - "privacy.public.long": "Boleh dilihat oleh semua orang, ditunjukkan di garis masa awam", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Awam", - "privacy.unlisted.long": "Boleh dilihat oleh semua orang, tapi jangan tunjukkan di garis masa awam", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Tidak tersenarai", "refresh": "Muat semula", "regeneration_indicator.label": "Memuatkan…", @@ -515,6 +514,7 @@ "upload_error.poll": "Tidak boleh memuat naik fail bersama undian.", "upload_form.audio_description": "Jelaskan untuk orang yang ada masalah pendengaran", "upload_form.description": "Jelaskan untuk orang yang ada masalah penglihatan", + "upload_form.description_missing": "No description added", "upload_form.edit": "Sunting", "upload_form.thumbnail": "Ubah gambar kecil", "upload_form.undo": "Padam", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 53cfd484b..b0775c1a8 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -70,7 +70,7 @@ "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", - "column.direct": "Directe berichten", + "column.conversations": "Gesprekken", "column.directory": "Gebruikersgids", "column.domain_blocks": "Geblokkeerde domeinen", "column.favourites": "Favorieten", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Alleen lokaal", "community.column_settings.media_only": "Alleen media", "community.column_settings.remote_only": "Alleen andere servers", - "compose_form.direct_message_warning": "Dit bericht wordt alleen naar vermelde gebruikers verstuurd.", "compose_form.direct_message_warning_learn_more": "Meer leren", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Dit bericht valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare berichten kunnen via hashtags gevonden worden.", "compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de berichten zien die je alleen aan jouw volgers hebt gericht.", "compose_form.lock_disclaimer.lock": "besloten", @@ -166,7 +166,7 @@ "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.", "empty_column.bookmarked_statuses": "Jij hebt nog geen berichten aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.", "empty_column.community": "De lokale tijdlijn is nog leeg. Plaats een openbaar bericht om de spits af te bijten!", - "empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, zijn deze hier te zien.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Er zijn nog geen geblokkeerde domeinen.", "empty_column.explore_statuses": "Momenteel zijn er geen trends. Kom later terug!", "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Bericht boosten", "keyboard_shortcuts.column": "Op één van de kolommen focussen", "keyboard_shortcuts.compose": "Tekstveld om een bericht te schrijven focussen", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Omschrijving", - "keyboard_shortcuts.direct": "Jouw directe berichten tonen", "keyboard_shortcuts.down": "Naar beneden in de lijst bewegen", "keyboard_shortcuts.enter": "Volledig bericht tonen", "keyboard_shortcuts.favourite": "Aan jouw favorieten toevoegen", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", "navigation_bar.compose": "Nieuw bericht schrijven", - "navigation_bar.direct": "Directe berichten", "navigation_bar.discover": "Ontdekken", "navigation_bar.domain_blocks": "Geblokkeerde domeinen", "navigation_bar.edit_profile": "Profiel bewerken", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Poll verwijderen", "privacy.change": "Zichtbaarheid van bericht aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Alleen gebruikers die ik noem", "privacy.private.long": "Alleen aan volgers tonen", "privacy.private.short": "Alleen volgers", - "privacy.public.long": "Voor iedereen zichtbaar en op openbare tijdlijnen tonen", + "privacy.public.long": "Voor iedereen zichtbaar", "privacy.public.short": "Openbaar", - "privacy.unlisted.long": "Voor iedereen zichtbaar, maar niet op openbare tijdlijnen tonen", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Minder openbaar", "refresh": "Vernieuwen", "regeneration_indicator.label": "Aan het laden…", @@ -515,6 +514,7 @@ "upload_error.poll": "Het uploaden van bestanden is in polls niet toegestaan.", "upload_form.audio_description": "Omschrijf dit voor mensen met een auditieve beperking", "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking", + "upload_form.description_missing": "Geen omschrijving toegevoegd", "upload_form.edit": "Bewerken", "upload_form.thumbnail": "Miniatuurafbeelding wijzigen", "upload_form.undo": "Verwijderen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 4f9677d7e..ea348b96d 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -18,7 +18,7 @@ "account.followers": "Fylgjarar", "account.followers.empty": "Ingen fylgjer denne brukaren enno.", "account.followers_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}", - "account.following": "Following", + "account.following": "Følger", "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", @@ -41,16 +41,16 @@ "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tut}}", "account.unblock": "Slutt å blokera @{name}", "account.unblock_domain": "Vis {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Opphev blokkering", "account.unendorse": "Ikkje framhev på profil", "account.unfollow": "Slutt å fylgja", "account.unmute": "Av-demp @{name}", "account.unmute_notifications": "Vis varsel frå @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Opphev demping", "account_note.placeholder": "Klikk for å leggja til merknad", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "Nye brukere", "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", @@ -70,7 +70,7 @@ "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", - "column.direct": "Meldingar", + "column.conversations": "Conversations", "column.directory": "Sjå gjennom profilar", "column.domain_blocks": "Gøymde domene", "column.favourites": "Favorittar", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Berre lokalt", "community.column_settings.media_only": "Berre media", "community.column_settings.remote_only": "Berre eksternt", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", "compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for å sjå innlegga dine som berre visast til fylgjarar.", "compose_form.lock_disclaimer.lock": "låst", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.", "empty_column.bookmarked_statuses": "Du har ikkje nokon bokmerkte tut enno. Når du bokmerkjer eit, dukkar det opp her.", "empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!", - "empty_column.direct": "Du har ingen direktemeldingar ennå. Når du sender eller får ein vil den dukke opp her.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Det er ingen gøymde domene ennå.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer ein som favoritt, så dukkar det opp her.", @@ -187,11 +187,11 @@ "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", + "explore.search_results": "Søkeresultater", + "explore.suggested_follows": "For deg", + "explore.title": "Utforsk", + "explore.trending_links": "Nyheter", + "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Ferdig", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "for å framheva", "keyboard_shortcuts.column": "for å fokusera på ein status i ei av kolonnane", "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Skildring", - "keyboard_shortcuts.direct": "for å opna direktemeldingskolonna", "keyboard_shortcuts.down": "for å flytta seg opp og ned i lista", "keyboard_shortcuts.enter": "for å opna status", "keyboard_shortcuts.favourite": "for å merkja som favoritt", @@ -290,11 +290,10 @@ "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", "navigation_bar.compose": "Lag eit nytt tut", - "navigation_bar.direct": "Direktemeldingar", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domene", "navigation_bar.edit_profile": "Rediger profil", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Utforsk", "navigation_bar.favourites": "Favorittar", "navigation_bar.filters": "Målbundne ord", "navigation_bar.follow_requests": "Fylgjeførespurnader", @@ -338,7 +337,7 @@ "notifications.column_settings.status": "Nye tuter:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Redigeringer:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Framhevingar", "notifications.filter.favourites": "Favorittar", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Fjern røyst", "privacy.change": "Juster status-synlegheit", "privacy.direct.long": "Legg berre ut for nemnde brukarar", - "privacy.direct.short": "Direkte", + "privacy.direct.short": "Direct", "privacy.private.long": "Post kun til følgjarar", - "privacy.private.short": "Kun følgjarar", - "privacy.public.long": "Post til offentlege tidslinjer", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Offentleg", - "privacy.unlisted.long": "Ikkje post til offentlege tidslinjer", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", "refresh": "Oppdater", "regeneration_indicator.label": "Lastar…", @@ -389,28 +388,28 @@ "relative_time.seconds": "{number}sek", "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", - "report.block": "Block", + "report.block": "Blokker", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.spam": "Søppelpost", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "profil", + "report.category.title_status": "innlegg", + "report.close": "Utført", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", - "report.mute": "Mute", + "report.mute": "Demp", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Neste", "report.placeholder": "Tilleggskommentarar", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "Jeg liker det ikke", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.spam": "Det er spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", @@ -515,6 +514,7 @@ "upload_error.poll": "Filopplasting ikkje tillate med meiningsmålingar.", "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel", "upload_form.description": "Skildr for synshemja", + "upload_form.description_missing": "Ingen beskrivelse lagt til", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Bytt miniatyrbilete", "upload_form.undo": "Slett", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 344cf3e82..65ffc36e8 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -18,7 +18,7 @@ "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne brukeren ennå.", "account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}", - "account.following": "Following", + "account.following": "Følger", "account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}", "account.follows.empty": "Denne brukeren følger ikke noen enda.", "account.follows_you": "Følger deg", @@ -41,16 +41,16 @@ "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tuter}}", "account.unblock": "Avblokker @{name}", "account.unblock_domain": "Vis {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Opphev blokkering", "account.unendorse": "Ikke vis frem på profilen", "account.unfollow": "Avfølg", "account.unmute": "Avdemp @{name}", "account.unmute_notifications": "Vis varsler fra @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Opphev demping", "account_note.placeholder": "Klikk for å legge til et notat", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "Nye brukere", "alert.rate_limited.message": "Vennligst prøv igjen etter kl. {retry_time, time, medium}.", @@ -70,7 +70,7 @@ "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", - "column.direct": "Direktemeldinger", + "column.conversations": "Conversations", "column.directory": "Bla gjennom profiler", "column.domain_blocks": "Skjulte domener", "column.favourites": "Likt", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Kun eksternt", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.", "compose_form.lock_disclaimer.lock": "låst", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du har ikke blokkert noen brukere enda.", "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.", "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!", - "empty_column.direct": "Du har ingen direktemeldinger enda. Når du mottar eller sender en, vil den dukke opp her.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.", @@ -187,11 +187,11 @@ "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace-en til utklippstavlen", "errors.unexpected_crash.report_issue": "Rapporter en feil", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", + "explore.search_results": "Søkeresultater", + "explore.suggested_follows": "For deg", + "explore.title": "Utforsk", + "explore.trending_links": "Nyheter", + "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Utført", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "å fremheve", "keyboard_shortcuts.column": "å fokusere en status i en av kolonnene", "keyboard_shortcuts.compose": "å fokusere komponeringsfeltet", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "åpne direktemeldingskolonnen", "keyboard_shortcuts.down": "for å flytte ned i listen", "keyboard_shortcuts.enter": "å åpne status", "keyboard_shortcuts.favourite": "for å favorittmarkere", @@ -290,11 +290,10 @@ "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv en ny tut", - "navigation_bar.direct": "Direktemeldinger", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domener", "navigation_bar.edit_profile": "Rediger profil", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Utforsk", "navigation_bar.favourites": "Favoritter", "navigation_bar.filters": "Stilnede ord", "navigation_bar.follow_requests": "Følgeforespørsler", @@ -338,7 +337,7 @@ "notifications.column_settings.status": "Nye tuter:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Redigeringer:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Fremhevinger", "notifications.filter.favourites": "Favoritter", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Fjern avstemningen", "privacy.change": "Justér synlighet", "privacy.direct.long": "Post kun til nevnte brukere", - "privacy.direct.short": "Direkte", + "privacy.direct.short": "Direct", "privacy.private.long": "Post kun til følgere", - "privacy.private.short": "Privat", - "privacy.public.long": "Post kun til offentlige tidslinjer", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Offentlig", - "privacy.unlisted.long": "Ikke vis i offentlige tidslinjer", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", "refresh": "Oppfrisk", "regeneration_indicator.label": "Laster…", @@ -389,28 +388,28 @@ "relative_time.seconds": "{number}s", "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", - "report.block": "Block", + "report.block": "Blokker", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.spam": "Søppelpost", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "profil", + "report.category.title_status": "innlegg", + "report.close": "Utført", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Videresend til {target}", "report.forward_hint": "Denne kontoen er fra en annen tjener. Vil du sende en anonymisert kopi av rapporten dit også?", - "report.mute": "Mute", + "report.mute": "Demp", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Neste", "report.placeholder": "Tilleggskommentarer", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "Jeg liker det ikke", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.spam": "Det er spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", @@ -515,6 +514,7 @@ "upload_error.poll": "Filopplasting inni avstemninger er ikke tillatt.", "upload_form.audio_description": "Beskriv det for folk med hørselstap", "upload_form.description": "Beskriv for synshemmede", + "upload_form.description_missing": "Ingen beskrivelse lagt til", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Endre miniatyrbilde", "upload_form.undo": "Angre", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index e5132646f..7dbaf826f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -70,7 +70,7 @@ "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", "column.community": "Flux public local", - "column.direct": "Messatges dirèctes", + "column.conversations": "Conversations", "column.directory": "Percórrer los perfils", "column.domain_blocks": "Domenis resconduts", "column.favourites": "Favorits", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Sonque local", "community.column_settings.media_only": "Solament los mèdias", "community.column_settings.remote_only": "Sonque alonhat", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", "compose_form.lock_disclaimer": "Vòstre compte es pas {locked}. Tot lo mond pòt vos sègre e veire los estatuts reservats als seguidors.", "compose_form.lock_disclaimer.lock": "clavat", @@ -106,7 +106,7 @@ "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida", "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish} !", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Salvar los cambiaments", "compose_form.sensitive.hide": "Marcar coma sensible", "compose_form.sensitive.marked": "Lo mèdia es marcat coma sensible", "compose_form.sensitive.unmarked": "Lo mèdia es pas marcat coma sensible", @@ -166,7 +166,7 @@ "empty_column.blocks": "Avètz pas blocat degun pel moment.", "empty_column.bookmarked_statuses": "Avètz pas cap de tuts marcats pel moment. Quand ne marquetz un, serà mostrat aquí.", "empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !", - "empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.", @@ -187,9 +187,9 @@ "error.unexpected_crash.next_steps_addons": "Ensajatz de los desactivar o actualizatz la pagina. Se aquò ajuda pas, podètz ensajar d’utilizar Mastodon via un autre navigador o una aplicacion nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar las traças al quichapapièrs", "errors.unexpected_crash.report_issue": "Senhalar un problèma", - "explore.search_results": "Search results", + "explore.search_results": "Resultats de recèrca", "explore.suggested_follows": "For you", - "explore.title": "Explore", + "explore.title": "Explorar", "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "partejar", "keyboard_shortcuts.column": "centrar un estatut a una colomna", "keyboard_shortcuts.compose": "anar al camp tèxte", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "descripcion", - "keyboard_shortcuts.direct": "dobrir la colomna de messatges dirèctes", "keyboard_shortcuts.down": "far davalar dins la lista", "keyboard_shortcuts.enter": "dobrir los estatuts", "keyboard_shortcuts.favourite": "apondre als favorits", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", "navigation_bar.compose": "Escriure un nòu tut", - "navigation_bar.direct": "Messatges dirèctes", "navigation_bar.discover": "Trobar", "navigation_bar.domain_blocks": "Domenis resconduts", "navigation_bar.edit_profile": "Modificar lo perfil", @@ -362,51 +361,51 @@ "poll.total_votes": "{count, plural, one {# vòte} other {# vòtes}}", "poll.vote": "Votar", "poll.voted": "Avètz votat per aquesta responsa", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# vòte} other {# vòtes}}", "poll_button.add_poll": "Ajustar un sondatge", "poll_button.remove_poll": "Levar lo sondatge", "privacy.change": "Ajustar la confidencialitat del messatge", "privacy.direct.long": "Mostrar pas qu’a las personas mencionadas", - "privacy.direct.short": "Dirècte", + "privacy.direct.short": "Direct", "privacy.private.long": "Mostrar pas qu’a vòstres seguidors", - "privacy.private.short": "Privat", - "privacy.public.long": "Mostrar dins los fluxes publics", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Mostrar pas dins los fluxes publics", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Pas-listat", "refresh": "Actualizar", "regeneration_indicator.label": "Cargament…", "regeneration_indicator.sublabel": "Sèm a preparar vòstre flux d’acuèlh !", "relative_time.days": "fa {number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# jorn} other {# jorns}} ago", + "relative_time.full.hours": "fa {number, plural, one {# ora} other {# oras}}", + "relative_time.full.just_now": "ara", + "relative_time.full.minutes": "fa {number, plural, one {# minuta} other {# minutas}}", + "relative_time.full.seconds": "fa {number, plural, one {# segonda} other {# segondas}}", "relative_time.hours": "fa {number}h", "relative_time.just_now": "ara", "relative_time.minutes": "fa {number} min", "relative_time.seconds": "fa {number}s", "relative_time.today": "uèi", "reply_indicator.cancel": "Anullar", - "report.block": "Block", + "report.block": "Blocar", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "perfil", + "report.category.title_status": "publicacion", + "report.close": "Acabat", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Far sègre a {target}", "report.forward_hint": "Lo compte ven d’un autre servidor. Volètz mandar una còpia anonima del rapòrt enlai tanben ?", - "report.mute": "Mute", + "report.mute": "Amudir", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Seguent", "report.placeholder": "Comentaris addicionals", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "M’agrada pas", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", "report.reasons.other_description": "The issue does not fit into other categories", @@ -450,7 +449,7 @@ "status.delete": "Escafar", "status.detailed_status": "Vista detalhada de la convèrsa", "status.direct": "Messatge per @{name}", - "status.edit": "Edit", + "status.edit": "Modificar", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embarcar", @@ -515,6 +514,7 @@ "upload_error.poll": "Lo mandadís de fichièr es pas autorizat pels sondatges.", "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas", "upload_form.description": "Descripcion pels mal vesents", + "upload_form.description_missing": "No description added", "upload_form.edit": "Modificar", "upload_form.thumbnail": "Cambiar la vinheta", "upload_form.undo": "Suprimir", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 42dc3655b..0e0f7fd29 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 44c5a1e20..ebad530eb 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -48,8 +48,8 @@ "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}", "account.unmute_short": "Włącz dźwięki", "account_note.placeholder": "Naciśnij aby dodać notatkę", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Wskaźnik utrzymania użytkowników po dniach od rejestracji", + "admin.dashboard.monthly_retention": "Wskaźnik utrzymania użytkowników po miesiącach od rejestracji", "admin.dashboard.retention.average": "Średnia", "admin.dashboard.retention.cohort": "Miesiąc rejestracji", "admin.dashboard.retention.cohort_size": "Nowi użytkownicy", @@ -70,7 +70,7 @@ "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", - "column.direct": "Wiadomości bezpośrednie", + "column.conversations": "Konwersacje", "column.directory": "Przeglądaj profile", "column.domain_blocks": "Ukryte domeny", "column.favourites": "Ulubione", @@ -96,9 +96,9 @@ "community.column_settings.local_only": "Tylko Lokalne", "community.column_settings.media_only": "Tylko zawartość multimedialna", "community.column_settings.remote_only": "Tylko Zdalne", - "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.", + "compose_form.encryption_warning": "Posty na Mastodon nie są szyfrowane end-to-end. Nie udostępniaj żadnych wrażliwych informacji przez Mastodon.", + "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hasztagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hasztagów.", "compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię śledzi, może wyświetlać Twoje wpisy przeznaczone tylko dla śledzących.", "compose_form.lock_disclaimer.lock": "zablokowane", "compose_form.placeholder": "Co Ci chodzi po głowie?", @@ -170,14 +170,14 @@ "empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.", "empty_column.bookmarked_statuses": "Nie dodałeś(-aś) żadnego wpisu do zakładek. Kiedy to zrobisz, pojawi się on tutaj.", "empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!", - "empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.", + "empty_column.conversations": "Gdy wyślesz lub otrzymasz wpis, który jest widoczny tylko dla osób w nim wymienionych, pojawi się on tutaj.", "empty_column.domain_blocks": "Brak ukrytych domen.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Nic nie jest w tej chwili popularne. Sprawdź później!", "empty_column.favourited_statuses": "Nie dodałeś(-aś) żadnego wpisu do ulubionych. Kiedy to zrobisz, pojawi się on tutaj.", "empty_column.favourites": "Nikt nie dodał tego wpisu do ulubionych. Gdy ktoś to zrobi, pojawi się tutaj.", - "empty_column.follow_recommendations": "Wygląda na to, że nie można wygenerować dla Ciebie żadnych sugestii. Możesz spróbować wyszukać osoby, które znasz, lub przeglądać popularne hashtagi.", + "empty_column.follow_recommendations": "Wygląda na to, że nie można wygenerować dla Ciebie żadnych sugestii. Możesz spróbować wyszukać osoby, które znasz, lub przeglądać popularne hasztagi.", "empty_column.follow_requests": "Nie masz żadnych próśb o możliwość śledzenia. Kiedy ktoś utworzy ją, pojawi się tutaj.", - "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hashtagiem. Możesz napisać pierwszy(-a)!", + "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hasztagiem. Możesz napisać pierwszy(-a).", "empty_column.home": "Nie śledzisz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.", "empty_column.home.suggestions": "Zobacz kilka sugestii", "empty_column.list": "Nie ma nic na tej liście. Kiedy członkowie listy dodadzą nowe wpisy, pojawia się one tutaj.", @@ -191,12 +191,12 @@ "error.unexpected_crash.next_steps_addons": "Spróbuj je wyłączyć lub odświeżyć stronę. Jeśli to nie pomoże, możesz wciąż korzystać z Mastodona w innej przeglądarce lub natywnej aplikacji.", "errors.unexpected_crash.copy_stacktrace": "Skopiuj ślad stosu do schowka", "errors.unexpected_crash.report_issue": "Zgłoś problem", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Wyniki wyszukiwania", + "explore.suggested_follows": "Dla ciebie", + "explore.title": "Odkrywaj", + "explore.trending_links": "Aktualności", + "explore.trending_statuses": "Posty", + "explore.trending_tags": "Hasztagi", "follow_recommendations.done": "Gotowe", "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", @@ -216,7 +216,7 @@ "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", "hashtag.column_settings.select.no_options_message": "Nie odnaleziono sugestii", - "hashtag.column_settings.select.placeholder": "Wprowadź hashtagi…", + "hashtag.column_settings.select.placeholder": "Wprowadź hasztagi…", "hashtag.column_settings.tag_mode.all": "Wszystkie", "hashtag.column_settings.tag_mode.any": "Dowolne", "hashtag.column_settings.tag_mode.none": "Żadne", @@ -234,8 +234,8 @@ "keyboard_shortcuts.boost": "aby podbić wpis", "keyboard_shortcuts.column": "aby przejść do wpisu z jednej z kolumn", "keyboard_shortcuts.compose": "aby przejść do pola tworzenia wpisu", + "keyboard_shortcuts.conversations": "aby otworzyć kolumnę konwersacji", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "aby otworzyć kolumnę wiadomości bezpośrednich", "keyboard_shortcuts.down": "aby przejść na dół listy", "keyboard_shortcuts.enter": "aby otworzyć wpis", "keyboard_shortcuts.favourite": "aby dodać do ulubionych", @@ -294,11 +294,10 @@ "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", "navigation_bar.compose": "Utwórz nowy wpis", - "navigation_bar.direct": "Wiadomości bezpośrednie", "navigation_bar.discover": "Odkrywaj", "navigation_bar.domain_blocks": "Ukryte domeny", "navigation_bar.edit_profile": "Edytuj profil", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Odkrywaj", "navigation_bar.favourites": "Ulubione", "navigation_bar.filters": "Wyciszone słowa", "navigation_bar.follow_requests": "Prośby o śledzenie", @@ -314,7 +313,7 @@ "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.security": "Bezpieczeństwo", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", "notification.follow": "{name} zaczął(-ęła) Cię śledzić", "notification.follow_request": "{name} poprosił(a) o możliwość śledzenia Cię", @@ -326,7 +325,7 @@ "notification.update": "{name} edytował post", "notifications.clear": "Wyczyść powiadomienia", "notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nowe rejestracje:", "notifications.column_settings.alert": "Powiadomienia na pulpicie", "notifications.column_settings.favourite": "Dodanie do ulubionych:", "notifications.column_settings.filter_bar.advanced": "Wyświetl wszystkie kategorie", @@ -372,12 +371,12 @@ "poll_button.remove_poll": "Usuń głosowanie", "privacy.change": "Dostosuj widoczność wpisów", "privacy.direct.long": "Widoczny tylko dla wspomnianych", - "privacy.direct.short": "Bezpośrednio", + "privacy.direct.short": "Tylko wspominane osoby", "privacy.private.long": "Widoczny tylko dla osób, które Cię śledzą", - "privacy.private.short": "Tylko dla śledzących", - "privacy.public.long": "Widoczny na publicznych osiach czasu", + "privacy.private.short": "Tylko śledzący", + "privacy.public.long": "Widoczne dla każdego", "privacy.public.short": "Publiczny", - "privacy.unlisted.long": "Niewidoczny na publicznych osiach czasu", + "privacy.unlisted.long": "Widoczne dla każdego, z wyłączeniem funkcji odkrywania", "privacy.unlisted.short": "Niewidoczny", "refresh": "Odśwież", "regeneration_indicator.label": "Ładuję…", @@ -394,54 +393,54 @@ "relative_time.seconds": "{number} s.", "relative_time.today": "dzisiaj", "reply_indicator.cancel": "Anuluj", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Zablokuj", + "report.block_explanation": "Nie zobaczysz ich postów. Nie będą mogli zobaczyć Twoich postów ani cię śledzić. Będą mogli domyślić się, że są zablokowani.", "report.categories.other": "Inne", "report.categories.spam": "Spam", "report.categories.violation": "Zawartość narusza co najmniej jedną zasadę serwera", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", + "report.category.subtitle": "Wybierz najbardziej pasującą opcję", + "report.category.title": "Powiedz, co się dzieje z tym {type}", + "report.category.title_account": "profil", "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.close": "Gotowe", + "report.comment.title": "Czy jest jeszcze coś, co uważasz, że powinniśmy wiedzieć?", "report.forward": "Przekaż na {target}", "report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Wycisz", + "report.mute_explanation": "Nie zobaczysz ich wpisów. Mimo to będą mogli wciąż śledzić cię i widzieć twoje wpisy, ale nie będą widzieli, że są wyciszeni.", + "report.next": "Dalej", "report.placeholder": "Dodatkowe komentarze", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.dislike": "Nie podoba mi się to", + "report.reasons.dislike_description": "Nie jest to coś, co chciałoby się zobaczyć", + "report.reasons.other": "Coś innego", + "report.reasons.other_description": "Zgłoszenie nie pasuje do żadnej z pozostałych kategorii", + "report.reasons.spam": "To spam", "report.reasons.spam_description": "Niebezpieczne linki, fałszywe zaangażowanie lub powtarzające się odpowiedzi", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.violation": "Narusza to zasady serwera", + "report.reasons.violation_description": "Zdajesz sobie sprawę, że narusza to szczególne zasady", + "report.rules.subtitle": "Wybierz wszystkie pasujące", + "report.rules.title": "Które zasady zostały złamane?", + "report.statuses.subtitle": "Wybierz wszystkie pasujące", + "report.statuses.title": "Czy są jakieś wpisy, które obrazują opisany w zgłoszeniu problem?", "report.submit": "Wyślij", "report.target": "Zgłaszanie {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Oto opcje, dzięki którym możesz kontrolować, co widzisz na Mastodon:", + "report.thanks.take_action_actionable": "W trakcie jak będziemy się przyglądać tej sprawie, możesz podjąć akcje przeciwko @{name}:", + "report.thanks.title": "Nie chcesz tego widzieć?", + "report.thanks.title_actionable": "Dziękujemy za zgłoszenie. Przyjrzymy się tej sprawie.", + "report.unfollow": "Przestań śledzić @{name}", + "report.unfollow_explanation": "Śledzisz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je śledzić.", "search.placeholder": "Szukaj", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", "search_popout.tips.hashtag": "hasztag", "search_popout.tips.status": "wpis", - "search_popout.tips.text": "Proste wyszukiwanie pasujących pseudonimów, nazw użytkowników i hashtagów", + "search_popout.tips.text": "Proste wyszukiwanie pasujących pseudonimów, nazw użytkowników i hasztagów", "search_popout.tips.user": "użytkownik", "search_results.accounts": "Ludzie", - "search_results.all": "All", - "search_results.hashtags": "Hashtagi", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.all": "Wszystkie", + "search_results.hashtags": "Hasztagi", + "search_results.nothing_found": "Nie znaleziono innych wyników dla tego wyszukania", "search_results.statuses": "Wpisy", "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} more {wyników}}", @@ -457,12 +456,12 @@ "status.direct": "Wyślij wiadomość bezpośrednią do @{name}", "status.edit": "Edytuj", "status.edited": "Edytowano {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", "status.filtered": "Filtrowany(-a)", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} utworzył(a) {date}", + "status.history.edited": "{name} edytował(a) {date}", "status.load_more": "Załaduj więcej", "status.media_hidden": "Zawartość multimedialna ukryta", "status.mention": "Wspomnij o @{name}", @@ -520,6 +519,7 @@ "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.", "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących", "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących", + "upload_form.description_missing": "Nie dodano opisu", "upload_form.edit": "Edytuj", "upload_form.thumbnail": "Zmień miniaturę", "upload_form.undo": "Usuń", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 71542b685..e93dac797 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -70,7 +70,7 @@ "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", - "column.direct": "Toots Diretos", + "column.conversations": "Conversations", "column.directory": "Explorar perfis", "column.domain_blocks": "Domínios bloqueados", "column.favourites": "Favoritos", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Somente local", "community.column_settings.media_only": "Somente mídia", "community.column_settings.remote_only": "Somente global", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.", "compose_form.lock_disclaimer.lock": "trancado", @@ -166,7 +166,7 @@ "empty_column.blocks": "Nada aqui.", "empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar um toot, ele aparecerá aqui.", "empty_column.community": "A linha local está vazia. Publique algo para começar!", - "empty_column.direct": "Nada aqui. Quando você enviar ou receber toots diretos, eles aparecerão aqui.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Nada aqui.", "empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!", "empty_column.favourited_statuses": "Nada aqui. Quando você favoritar um toot, ele aparecerá aqui.", @@ -190,7 +190,7 @@ "explore.search_results": "Resultado da pesquisa", "explore.suggested_follows": "Para você", "explore.title": "Explorar", - "explore.trending_links": "Novidades", + "explore.trending_links": "Notícias", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Salvar", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "dar boost", "keyboard_shortcuts.column": "focar na coluna", "keyboard_shortcuts.compose": "focar no compositor", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descrição", - "keyboard_shortcuts.direct": "abrir toots diretos", "keyboard_shortcuts.down": "mover para baixo", "keyboard_shortcuts.enter": "abrir toot", "keyboard_shortcuts.favourite": "favoritar toot", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", "navigation_bar.compose": "Compor novo toot", - "navigation_bar.direct": "Toots diretos", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios bloqueados", "navigation_bar.edit_profile": "Editar perfil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remover enquete", "privacy.change": "Alterar privacidade do toot", "privacy.direct.long": "Postar só para usuários mencionados", - "privacy.direct.short": "Direto", + "privacy.direct.short": "Direct", "privacy.private.long": "Postar só para seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Postar em linhas públicas", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Público", - "privacy.unlisted.long": "Não postar em linhas públicas", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Não-listado", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", @@ -515,6 +514,7 @@ "upload_error.poll": "Mídias não podem ser anexadas em toots com enquetes.", "upload_form.audio_description": "Descrever para deficientes auditivos", "upload_form.description": "Descrever para deficientes visuais", + "upload_form.description_missing": "Nenhuma descrição adicionada", "upload_form.edit": "Editar", "upload_form.thumbnail": "Alterar miniatura", "upload_form.undo": "Excluir", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 1ce27362f..7ba9d4b1f 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -70,7 +70,7 @@ "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", "column.community": "Cronologia local", - "column.direct": "Mensagens diretas", + "column.conversations": "Conversações", "column.directory": "Procurar perfis", "column.domain_blocks": "Domínios escondidos", "column.favourites": "Favoritos", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Local apenas", "community.column_settings.media_only": "Somente media", "community.column_settings.remote_only": "Remoto apenas", - "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.encryption_warning": "As publicações no Mastodon não são criptografadas de ponta a ponta. Não partilhe nenhuma informação sensível através do Mastodon.", "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 sua conta não é {locked}. Qualquer pessoa pode segui-lo e ver as publicações direcionadas apenas a seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.", "empty_column.bookmarked_statuses": "Ainda não adicionou nenhum toot aos Itens salvos. Quando adicionar, eles serão exibidos aqui.", "empty_column.community": "A timeline local está vazia. Escreve algo publicamente para começar!", - "empty_column.direct": "Ainda não tem qualquer mensagem direta. Quando enviar ou receber alguma, ela irá aparecer aqui.", + "empty_column.conversations": "Quando enviar ou receber uma publicação que seja visível apenas para as pessoas nela mencionadas, ela aparecerá aqui.", "empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.", "empty_column.explore_statuses": "Nada em destaque por agora. Volte mais tarde!", "empty_column.favourited_statuses": "Ainda não tens quaisquer toots favoritos. Quando tiveres algum, ele irá aparecer aqui.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "para partilhar", "keyboard_shortcuts.column": "para focar uma publicação numa das colunas", "keyboard_shortcuts.compose": "para focar na área de publicação", + "keyboard_shortcuts.conversations": "para abrir a coluna de conversações", "keyboard_shortcuts.description": "Descrição", - "keyboard_shortcuts.direct": "para abrir a coluna das mensagens diretas", "keyboard_shortcuts.down": "para mover para baixo na lista", "keyboard_shortcuts.enter": "para expandir uma publicação", "keyboard_shortcuts.favourite": "para adicionar aos favoritos", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", "navigation_bar.compose": "Escrever novo toot", - "navigation_bar.direct": "Mensagens diretas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios escondidos", "navigation_bar.edit_profile": "Editar perfil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remover votação", "privacy.change": "Ajustar a privacidade da publicação", "privacy.direct.long": "Apenas para utilizadores mencionados", - "privacy.direct.short": "Directo", + "privacy.direct.short": "Apenas pessoas que menciono", "privacy.private.long": "Apenas para os seguidores", - "privacy.private.short": "Privado", - "privacy.public.long": "Publicar em todos os feeds", + "privacy.private.short": "Apenas seguidores", + "privacy.public.long": "Visível para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "Não publicar nos feeds públicos", + "privacy.unlisted.long": "Visível para todos, mas não incluir em funcionalidades de divulgação", "privacy.unlisted.short": "Não listar", "refresh": "Actualizar", "regeneration_indicator.label": "A carregar…", @@ -515,6 +514,7 @@ "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", "upload_form.description": "Descrição da imagem para pessoas com dificuldades visuais", + "upload_form.description_missing": "Nenhuma descrição adicionada", "upload_form.edit": "Editar", "upload_form.thumbnail": "Alterar miniatura", "upload_form.undo": "Eliminar", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index aa706d993..378f01dad 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -70,7 +70,7 @@ "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", "column.community": "Cronologie locală", - "column.direct": "Mesaje directe", + "column.conversations": "Conversations", "column.directory": "Explorează profiluri", "column.domain_blocks": "Domenii blocate", "column.favourites": "Favorite", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Doar local", "community.column_settings.media_only": "Doar media", "community.column_settings.remote_only": "Doar la distanţă", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Această postare nu va fi listată sub niciun hashtag deoarece este nelistată. Doar postările publice pot fi căutate cu un hashtag.", "compose_form.lock_disclaimer": "Contul tău nu este {locked}. Oricine se poate abona la tine pentru a îți vedea postările numai pentru abonați.", "compose_form.lock_disclaimer.lock": "privat", @@ -166,7 +166,7 @@ "empty_column.blocks": "Momentan nu ai blocat niciun utilizator.", "empty_column.bookmarked_statuses": "Momentan nu ai nicio postare marcată. Când vei marca una, va apărea aici.", "empty_column.community": "Nu există nimic în cronologia locală. Postează ceva public pentru a sparge gheața!", - "empty_column.direct": "Momentan nu ai niciun mesaj direct. Când trimiți sau primești un mesaj, va apărea aici.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Momentan nu există domenii blocate.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Momentan nu ai nicio postare favorită. Când vei adăuga una, va apărea aici.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Distribuie postarea", "keyboard_shortcuts.column": "Focalizează pe coloană", "keyboard_shortcuts.compose": "Focalizează pe zona de text", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descriere", - "keyboard_shortcuts.direct": "Deschide coloana de mesaje directe", "keyboard_shortcuts.down": "Coboară în listă", "keyboard_shortcuts.enter": "Deschide postarea", "keyboard_shortcuts.favourite": "Adaugă postarea la favorite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Cronologie locală", "navigation_bar.compose": "Compune o nouă postare", - "navigation_bar.direct": "Mesaje directe", "navigation_bar.discover": "Descoperă", "navigation_bar.domain_blocks": "Domenii blocate", "navigation_bar.edit_profile": "Modifică profilul", @@ -369,10 +368,10 @@ "privacy.direct.long": "Vizibil doar pentru utilizatorii menționați", "privacy.direct.short": "Direct", "privacy.private.long": "Vizibil doar pentru abonați", - "privacy.private.short": "Doar abonați", - "privacy.public.long": "Vizibil pentru toți, afișat în cronologiile publice", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Vizibil pentru toți, dar nu și în cronologiile publice", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nelistat", "refresh": "Reîncarcă", "regeneration_indicator.label": "Se încarcă…", @@ -515,6 +514,7 @@ "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.description_missing": "No description added", "upload_form.edit": "Modifică", "upload_form.thumbnail": "Schimbă miniatura", "upload_form.undo": "Șterge", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 302399ac9..2d2aa532b 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -70,7 +70,7 @@ "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", "column.community": "Локальная лента", - "column.direct": "Личные сообщения", + "column.conversations": "Диалоги", "column.directory": "Просмотр профилей", "column.domain_blocks": "Заблокированные домены", "column.favourites": "Избранное", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Только локальные", "community.column_settings.media_only": "Только с медиафайлами", "community.column_settings.remote_only": "Только удалённые", - "compose_form.direct_message_warning": "Адресованные посты отправляются и видны только упомянутым в них пользователям.", "compose_form.direct_message_warning_learn_more": "Подробнее", + "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь потенциально опасной информацией.", "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.", "compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.", "compose_form.lock_disclaimer.lock": "не закрыта", @@ -166,7 +166,7 @@ "empty_column.blocks": "Вы ещё никого не заблокировали.", "empty_column.bookmarked_statuses": "У вас пока нет постов в закладках. Как добавите один, он отобразится здесь.", "empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!", - "empty_column.direct": "У вас пока нет личных сообщений. Как только вы отправите или получите одно, оно появится здесь.", + "empty_column.conversations": "Здесь отображаются адресованные посты. Как только вы отправите или получите один, он отобразится здесь.", "empty_column.domain_blocks": "Скрытых доменов пока нет.", "empty_column.explore_statuses": "Нет актуального. Проверьте позже!", "empty_column.favourited_statuses": "Вы не добавили ни один пост в «Избранное». Как только вы это сделаете, он появится здесь.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "продвинуть пост", "keyboard_shortcuts.column": "фокус на одном из столбцов", "keyboard_shortcuts.compose": "фокус на поле ввода", + "keyboard_shortcuts.conversations": "открыть колонку диалогов", "keyboard_shortcuts.description": "Описание", - "keyboard_shortcuts.direct": "чтобы показать колонку личных сообщений", "keyboard_shortcuts.down": "вниз по списку", "keyboard_shortcuts.enter": "открыть пост", "keyboard_shortcuts.favourite": "в избранное", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", "navigation_bar.compose": "Создать новый пост", - "navigation_bar.direct": "Личные сообщения", "navigation_bar.discover": "Изучайте", "navigation_bar.domain_blocks": "Скрытые домены", "navigation_bar.edit_profile": "Изменить профиль", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Удалить опрос", "privacy.change": "Изменить видимость поста", "privacy.direct.long": "Показать только упомянутым", - "privacy.direct.short": "Адресованный", + "privacy.direct.short": "Для упомянутых", "privacy.private.long": "Показать только подписчикам", - "privacy.private.short": "Приватный", - "privacy.public.long": "Показать в публичных лентах", + "privacy.private.short": "Для подписчиков", + "privacy.public.long": "Виден всем", "privacy.public.short": "Публичный", - "privacy.unlisted.long": "Не показывать в публичных лентах", + "privacy.unlisted.long": "Виден всем, но не через функции обзора", "privacy.unlisted.short": "Скрытый", "refresh": "Обновить", "regeneration_indicator.label": "Загрузка…", @@ -436,7 +435,7 @@ "search_results.accounts": "Люди", "search_results.all": "Все", "search_results.hashtags": "Хэштеги", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Ничего не найдено по этому запросу", "search_results.statuses": "Посты", "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным сервером Mastodon.", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", @@ -515,6 +514,7 @@ "upload_error.poll": "К опросам нельзя прикреплять файлы.", "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха", "upload_form.description": "Добавьте описание для людей с нарушениями зрения:", + "upload_form.description_missing": "Описание не добавлено", "upload_form.edit": "Изменить", "upload_form.thumbnail": "Изменить обложку", "upload_form.undo": "Отменить", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 52a0c609c..362350ce5 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -70,7 +70,7 @@ "column.blocks": "निषिद्धभोक्तारः", "column.bookmarks": "पुटचिह्नानि", "column.community": "स्थानीयसमयतालिका", - "column.direct": "प्रत्यक्षसन्देशाः", + "column.conversations": "Conversations", "column.directory": "व्यक्तित्वानि दृश्यन्ताम्", "column.domain_blocks": "निषिद्धप्रदेशाः", "column.favourites": "प्रियाः", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "केवलं स्थानीयम्", "community.column_settings.media_only": "सामग्री केवलम्", "community.column_settings.remote_only": "दर्गमः केवलम्", - "compose_form.direct_message_warning": "दौत्यमेतत्केवलमुल्लेखितजनानां कृते वर्तते", "compose_form.direct_message_warning_learn_more": "अधिकं ज्ञायताम्", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "न कस्मिन्नपि प्रचलितवस्तुषु सूचितमिदं दौत्यम् । केवलं सार्वजनिकदौत्यानि प्रचलितवस्तुचिह्नेन अन्वेषयितुं शक्यते ।", "compose_form.lock_disclaimer": "तव लेखा न प्रवेष्टुमशक्या {locked} । कोऽप्यनुसर्ता ते केवलमनुसर्तृृणां कृते स्थितानि दौत्यानि द्रष्टुं शक्नोति ।", "compose_form.lock_disclaimer.lock": "अवरुद्धः", @@ -166,7 +166,7 @@ "empty_column.blocks": "नैकोऽप्युपभोक्ता निषिद्धो वर्तते", "empty_column.bookmarked_statuses": "नैकमपि पुटचिह्नयुक्तदौत्यानि सन्ति । यदा भविष्यति तदत्र दृश्यते ।", "empty_column.community": "स्थानीयसमयतालिका रिक्ता । सार्वजनिकत्वेनाऽत्र किमपि लिख्यताम् ।", - "empty_column.direct": "नैकोऽपि प्रत्यक्षसन्देशो वर्तते । यदा प्रेष्यते वा प्राप्यतेऽत्र दृश्यते", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "न निषिद्धप्रदेशाः सन्ति ।", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "न प्रियदौत्यानि सन्ति । यदा प्रीतिरित्यङ्क्यतेऽत्र दृश्यते ।", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 1c29dfb79..fe6dd22cf 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -70,7 +70,7 @@ "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", "column.community": "Lìnia de tempus locale", - "column.direct": "Messàgios diretos", + "column.conversations": "Conversations", "column.directory": "Nàviga in is profilos", "column.domain_blocks": "Domìnios blocados", "column.favourites": "Preferidos", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Isceti locale", "community.column_settings.media_only": "Isceti multimediale", "community.column_settings.remote_only": "Isceti remotu", - "compose_form.direct_message_warning": "Custa publicatzione at a èssere imbiada isceti a is persones mentovadas.", "compose_form.direct_message_warning_learn_more": "Àteras informatziones", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Custa publicatzione no at a èssere ammustrada in peruna eticheta, dae chi no est listada. Isceti is publicatziones pùblicas podent èssere chircadas cun etichetas.", "compose_form.lock_disclaimer": "Su contu tuo no est {locked}. Cale si siat persone ti podet sighire pro bìdere is messàgios tuos chi imbies a sa gente chi ti sighit.", "compose_form.lock_disclaimer.lock": "blocadu", @@ -166,7 +166,7 @@ "empty_column.blocks": "No as blocadu ancora nemos.", "empty_column.bookmarked_statuses": "Non tenes ancora peruna publicatzione in is marcadores. Cando nd'as a agiùnghere una, at a èssere ammustrada 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.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Non tenes ancora perunu domìniu blocadu.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Non tenes ancora peruna publicatzione in is preferidos. Cando nd'as a agiùnghere una, at a èssere ammustrada inoghe.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "pro cumpartzire", "keyboard_shortcuts.column": "pro atzentrare una publicatzione in una de is colunnas", "keyboard_shortcuts.compose": "pro atzentrare in s'àrea de cumpositzione de testu", + "keyboard_shortcuts.conversations": "to open conversations column", "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 una publicatzione", "keyboard_shortcuts.favourite": "pro marcare comente a preferidu", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.community_timeline": "Lìnia de tempus locale", "navigation_bar.compose": "Cumpone una publicatzione noa", - "navigation_bar.direct": "Messàgios diretos", "navigation_bar.discover": "Iscoberi", "navigation_bar.domain_blocks": "Domìnios blocados", "navigation_bar.edit_profile": "Modìfica profilu", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Cantzella su sondàgiu", "privacy.change": "Modìfica s'istadu de riservadesa", "privacy.direct.long": "Visìbile isceti pro is persones mentovadas", - "privacy.direct.short": "Deretu", + "privacy.direct.short": "Direct", "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.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "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.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Esclùidu de sa lista", "refresh": "Atualiza", "regeneration_indicator.label": "Carrighende…", @@ -515,6 +514,7 @@ "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.description_missing": "No description added", "upload_form.edit": "Modìfica", "upload_form.thumbnail": "Càmbia sa miniadura", "upload_form.undo": "Cantzella", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index b724c8c2e..0511c534f 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -70,7 +70,7 @@ "column.blocks": "අවහිර කළ පරිශීලකයින්", "column.bookmarks": "පොත් යොමු", "column.community": "Local timeline", - "column.direct": "සෘජු පණිවිඩ", + "column.conversations": "Conversations", "column.directory": "පැතිකඩයන් පිරික්සන්න", "column.domain_blocks": "අවහිර කළ වසම්", "column.favourites": "ප්‍රියතමයන්", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "ස්ථානීයව පමණයි", "community.column_settings.media_only": "මාධ්‍ය පමණයි", "community.column_settings.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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත", @@ -166,7 +166,7 @@ "empty_column.blocks": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "අවහිර කළ වසම් නොමැත.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "සවිස්තරය", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "පොත් යොමු", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "සෘජු පණිවිඩ", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "සෘජු", + "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "ප්‍රසිද්ධ", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "නැවුම් කරන්න", "regeneration_indicator.label": "පූරණය වෙමින්…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "සංස්කරණය", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 7926d7f66..32769acb0 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -70,7 +70,7 @@ "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", "column.community": "Miestna časová os", - "column.direct": "Priame správy", + "column.conversations": "Conversations", "column.directory": "Prehľadávaj profily", "column.domain_blocks": "Skryté domény", "column.favourites": "Obľúbené", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Iba miestna", "community.column_settings.media_only": "Iba médiá", "community.column_settings.remote_only": "Iba odľahlé", - "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", "compose_form.lock_disclaimer": "Tvoj účet nie je {locked}. Ktokoľvek ťa môže nasledovať a vidieť tvoje správy pre sledujúcich.", "compose_form.lock_disclaimer.lock": "zamknutý", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ešte si nikoho nezablokoval/a.", "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.", "empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!", - "empty_column.direct": "Ešte nemáš žiadne priame správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.", @@ -189,8 +189,8 @@ "errors.unexpected_crash.report_issue": "Nahlás problém", "explore.search_results": "Výsledky hľadania", "explore.suggested_follows": "Pre teba", - "explore.title": "Explore", - "explore.trending_links": "News", + "explore.title": "Objavuj", + "explore.trending_links": "Novinky", "explore.trending_statuses": "Príspevky", "explore.trending_tags": "Haštagy", "follow_recommendations.done": "Hotovo", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Vyzdvihni príspevok", "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov", "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "pre otvorenie panelu priamých správ", "keyboard_shortcuts.down": "posunúť sa dole v zozname", "keyboard_shortcuts.enter": "Otvor príspevok", "keyboard_shortcuts.favourite": "pridaj do obľúbených", @@ -290,11 +290,10 @@ "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Miestna časová os", "navigation_bar.compose": "Napíš nový príspevok", - "navigation_bar.direct": "Priame správy", "navigation_bar.discover": "Objavuj", "navigation_bar.domain_blocks": "Skryté domény", "navigation_bar.edit_profile": "Uprav profil", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Objavuj", "navigation_bar.favourites": "Obľúbené", "navigation_bar.filters": "Filtrované slová", "navigation_bar.follow_requests": "Žiadosti o sledovanie", @@ -309,7 +308,7 @@ "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", "navigation_bar.security": "Zabezbečenie", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} sa zaregistroval/a", "notification.favourite": "{name} si obľúbil/a tvoj príspevok", "notification.follow": "{name} ťa začal/a následovať", "notification.follow_request": "{name} žiada ťa následovať", @@ -318,10 +317,10 @@ "notification.poll": "Anketa v ktorej si hlasoval/a sa skončila", "notification.reblog": "{name} zdieľal/a tvoj príspevok", "notification.status": "{name} práve uverejnil/a", - "notification.update": "{name} edited a post", + "notification.update": "{name} upravil/a príspevok", "notifications.clear": "Vyčisti oboznámenia", "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nové registrácie:", "notifications.column_settings.alert": "Oboznámenia na ploche", "notifications.column_settings.favourite": "Obľúbené:", "notifications.column_settings.filter_bar.advanced": "Zobraz všetky kategórie", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Odstráň anketu", "privacy.change": "Uprav súkromie príspevku", "privacy.direct.long": "Pošli iba spomenutým užívateľom", - "privacy.direct.short": "Súkromne", + "privacy.direct.short": "Direct", "privacy.private.long": "Pošli iba následovateľom", - "privacy.private.short": "Iba pre sledujúcich", - "privacy.public.long": "Pošli všetkým verejne", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Verejné", - "privacy.unlisted.long": "Neposielaj do verejných časových osí", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", "refresh": "Obnoviť", "regeneration_indicator.label": "Načítava sa…", @@ -515,6 +514,7 @@ "upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.", "upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu", "upload_form.description": "Opis pre slabo vidiacich", + "upload_form.description_missing": "No description added", "upload_form.edit": "Uprav", "upload_form.thumbnail": "Zmeniť miniatúru", "upload_form.undo": "Vymaž", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index b263549d6..e1e0240e9 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -46,10 +46,10 @@ "account.unfollow": "Prenehaj slediti", "account.unmute": "Odtišaj @{name}", "account.unmute_notifications": "Vklopi obvestila od @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Odtišaj", "account_note.placeholder": "Click to add a note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Mera ohranjanja uporabnikov po dnevih od registracije", + "admin.dashboard.monthly_retention": "Mera ohranjanja uporabnikov po mesecih od registracije", "admin.dashboard.retention.average": "Povprečje", "admin.dashboard.retention.cohort": "Mesec prijave", "admin.dashboard.retention.cohort_size": "Novi uporabniki", @@ -70,7 +70,7 @@ "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", "column.community": "Lokalna časovnica", - "column.direct": "Neposredna sporočila", + "column.conversations": "Conversations", "column.directory": "Prebrskaj profile", "column.domain_blocks": "Skrite domene", "column.favourites": "Priljubljene", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Samo krajevno", "community.column_settings.media_only": "Samo mediji", "community.column_settings.remote_only": "Samo oddaljeno", - "compose_form.direct_message_warning": "Ta tut bo viden le vsem omenjenim uporabnikom.", "compose_form.direct_message_warning_learn_more": "Nauči se več", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", "compose_form.lock_disclaimer": "Vaš račun ni {locked}. Vsakdo vam lahko sledi in si ogleda objave, ki so namenjene samo sledilcem.", "compose_form.lock_disclaimer.lock": "zaklenjen", @@ -166,7 +166,7 @@ "empty_column.blocks": "Niste še blokirali nobenega uporabnika.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!", - "empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga boste poslali ali prejeli, se bo prikazal tukaj.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Še vedno ni skritih domen.", "empty_column.explore_statuses": "Trenutno ni nič v trendu. Preverite znova kasneje!", "empty_column.favourited_statuses": "Nimate priljubljenih tutov. Ko boste vzljubili kakšnega, se bo prikazal tukaj.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "spodbudi", "keyboard_shortcuts.column": "fokusiraj na status v enemu od stolpcev", "keyboard_shortcuts.compose": "fokusiraj na območje za sestavljanje besedila", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "odpri stolpec za neposredna sporočila", "keyboard_shortcuts.down": "premakni se navzdol po seznamu", "keyboard_shortcuts.enter": "odpri status", "keyboard_shortcuts.favourite": "vzljubi", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Lokalna časovnica", "navigation_bar.compose": "Sestavi nov tut", - "navigation_bar.direct": "Neposredna sporočila", "navigation_bar.discover": "Odkrijte", "navigation_bar.domain_blocks": "Skrite domene", "navigation_bar.edit_profile": "Uredi profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Odstrani anketo", "privacy.change": "Prilagodi zasebnost statusa", "privacy.direct.long": "Objavi samo omenjenim uporabnikom", - "privacy.direct.short": "Neposredno", + "privacy.direct.short": "Direct", "privacy.private.long": "Objavi samo sledilcem", - "privacy.private.short": "Samo sledilci", - "privacy.public.long": "Objavi na javne časovnice", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Ne objavi na javne časovnice", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ni prikazano", "refresh": "Osveži", "regeneration_indicator.label": "Nalaganje…", @@ -515,6 +514,7 @@ "upload_error.poll": "Prenos datoteke z anketami ni dovoljen.", "upload_form.audio_description": "Opiši za osebe z okvaro sluha", "upload_form.description": "Opišite za slabovidne", + "upload_form.description_missing": "No description added", "upload_form.edit": "Uredi", "upload_form.thumbnail": "Spremeni sličico", "upload_form.undo": "Izbriši", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index faef7cab3..d4754bafc 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -70,7 +70,7 @@ "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", "column.community": "Rrjedhë kohore vendore", - "column.direct": "Mesazhe të drejtpërdrejtë", + "column.conversations": "Biseda", "column.directory": "Shfletoni profile", "column.domain_blocks": "Përkatësi të bllokuara", "column.favourites": "Të parapëlqyer", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Vetëm vendore", "community.column_settings.media_only": "Vetëm Media", "community.column_settings.remote_only": "Vetëm të largëta", - "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.encryption_warning": "Postimet në Mastodon nuk fshehtëzohen skaj-më-skaj. Mos ndani me të tjerë gjëra me spec në Mastodon.", "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 kyçur", @@ -166,7 +166,7 @@ "empty_column.blocks": "S’keni bllokuar ende ndonjë përdorues.", "empty_column.bookmarked_statuses": "S’keni faqeruajtur ende ndonjë mesazh. Kur faqeruani një të tillë, ai 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.conversations": "Pasi të dërgoni ose merrni një postim që është i dukshëm vetëm për personat e përmendur në të, do të shfaqet këtu.", "empty_column.domain_blocks": "Ende s’ka përkatësi të fshehura.", "empty_column.explore_statuses": "Asgjë në modë tani. Kontrolloni më vonë!", "empty_column.favourited_statuses": "S’keni ende ndonjë mesazh të parapëlqyer. Kur parapëlqeni një të tillë, ai do të shfaqet këtu.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "për përforcim", "keyboard_shortcuts.column": "për kalim fokusi mbi një gjendje te një nga shtyllat", "keyboard_shortcuts.compose": "për kalim fokusi te fusha e hartimit të mesazheve", + "keyboard_shortcuts.conversations": "për të hapur shtyllë bisedash", "keyboard_shortcuts.description": "Përshkrim", - "keyboard_shortcuts.direct": "për hapje shtylle mesazhesh të drejtpërdrejtë", "keyboard_shortcuts.down": "për zbritje poshtë nëpër listë", "keyboard_shortcuts.enter": "për hapje gjendjeje", "keyboard_shortcuts.favourite": "për t’i vënë shenjë si të parapëlqyer", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", "navigation_bar.compose": "Hartoni mesazh të ri", - "navigation_bar.direct": "Mesazhe të drejtpërdrejtë", "navigation_bar.discover": "Zbuloni", "navigation_bar.domain_blocks": "Përkatësi të bllokuara", "navigation_bar.edit_profile": "Përpunoni profilin", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Hiqe pyetësorin", "privacy.change": "Rregulloni privatësi mesazhesh", "privacy.direct.long": "I dukshëm vetëm për përdorues të përmendur", - "privacy.direct.short": "I drejtpërdrejtë", + "privacy.direct.short": "Vetëm persona që përmend", "privacy.private.long": "I dukshëm vetëm për ndjekës", - "privacy.private.short": "Vetëm ndjekësve", - "privacy.public.long": "I dukshëm për të tërë, shfaqur në rrjedha kohore publike", + "privacy.private.short": "Vetëm ndjekës", + "privacy.public.long": "I dukshëm për të tërë", "privacy.public.short": "Publik", - "privacy.unlisted.long": "I dukshëm për të tërë, por jo në rrjedha kohore publike", + "privacy.unlisted.long": "I dukshëm për të tërë, por lënë jashtë nga veçoritë e zbulimit", "privacy.unlisted.short": "Jo në lista", "refresh": "Rifreskoje", "regeneration_indicator.label": "Po ngarkohet…", @@ -515,6 +514,7 @@ "upload_error.poll": "Me pyetësorët s’lejohet ngarkim kartelash.", "upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar", "upload_form.description": "Përshkruajeni për persona me probleme shikimi", + "upload_form.description_missing": "S’u shtua përshkrim", "upload_form.edit": "Përpunoni", "upload_form.thumbnail": "Ndryshoni miniaturën", "upload_form.undo": "Fshije", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index eb1090e60..e7528bb50 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -70,7 +70,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Bookmarks", "column.community": "Lokalna lajna", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Omiljeni", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Vaš nalog nije {locked}. Svako može da Vas zaprati i da vidi objave namenjene samo Vašim pratiocima.", "compose_form.lock_disclaimer.lock": "zaključan", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Lokalna lajna je prazna. Napišite nešto javno da lajna produva!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "da podržite", "keyboard_shortcuts.column": "da se prebacite na status u jednoj od kolona", "keyboard_shortcuts.compose": "da se prebacite na pisanje novog tuta", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "da se pomerite na dole u listi", "keyboard_shortcuts.enter": "da otvorite status", "keyboard_shortcuts.favourite": "da označite kao omiljeno", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna lajna", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Izmeni profil", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Podesi status privatnosti", "privacy.direct.long": "Objavi samo korisnicima koji su pomenuti", - "privacy.direct.short": "Direktno", + "privacy.direct.short": "Direct", "privacy.private.long": "Objavi samo pratiocima", - "privacy.private.short": "Samo za pratioce", - "privacy.public.long": "Objavi na javnoj lajni", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Ne objavljuj na javnim lajnama", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Neizlistano", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Opiši za slabovide osobe", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Opozovi", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index e7f1e54cc..15f8640c6 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -70,7 +70,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Обележивачи", "column.community": "Локална временска линија", - "column.direct": "Директне поруке", + "column.conversations": "Conversations", "column.directory": "Претражи налоге", "column.domain_blocks": "Скривени домени", "column.favourites": "Омиљене", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Само Медији", "community.column_settings.remote_only": "Само удаљено", - "compose_form.direct_message_warning": "Ова труба ће бити послата споменутим корисницима.", "compose_form.direct_message_warning_learn_more": "Сазнајте више", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Ова труба неће бити излистана под било којом тарабом јер је сакривена. Само јавне трубе могу бити претражене тарабом.", "compose_form.lock_disclaimer": "Ваш налог није {locked}. Свако може да Вас запрати и да види објаве намењене само Вашим пратиоцима.", "compose_form.lock_disclaimer.lock": "закључан", @@ -166,7 +166,7 @@ "empty_column.blocks": "Још увек немате блокираних корисника.", "empty_column.bookmarked_statuses": "Још увек немате обележене трубе. Када их обележите, појавиће се овде.", "empty_column.community": "Локална временска линија је празна. Напишите нешто јавно да започнете!", - "empty_column.direct": "Још увек немате директних порука. Када пошаљете или примите једну, појавиће се овде.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Још увек нема сакривених домена.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Још увек немате труба које су вам се свиделе. Када вам се једна свиди, појавиће се овде.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "да подржите", "keyboard_shortcuts.column": "да се пребаците на статус у једној од колона", "keyboard_shortcuts.compose": "да се пребаците на писање новог тута", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.direct": "да отворите колону за директне поруке", "keyboard_shortcuts.down": "да се померите на доле у листи", "keyboard_shortcuts.enter": "да отворите статус", "keyboard_shortcuts.favourite": "да означите као омиљено", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Маркери", "navigation_bar.community_timeline": "Локална временска линија", "navigation_bar.compose": "Саставите нову трубу", - "navigation_bar.direct": "Директне поруке", "navigation_bar.discover": "Откриј", "navigation_bar.domain_blocks": "Сакривени домени", "navigation_bar.edit_profile": "Измени налог", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Уклони анкету", "privacy.change": "Подеси статус приватности", "privacy.direct.long": "Објави само корисницима који су поменути", - "privacy.direct.short": "Директно", + "privacy.direct.short": "Direct", "privacy.private.long": "Објави само пратиоцима", - "privacy.private.short": "Само за пратиоце", - "privacy.public.long": "Објави на јавној лајни", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "Јавно", - "privacy.unlisted.long": "Не објављуј на јавним временским линијама", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Неизлистано", "refresh": "Освежи", "regeneration_indicator.label": "Учитавање…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Опишите за особе са оштећеним видом", + "upload_form.description_missing": "No description added", "upload_form.edit": "Уреди", "upload_form.thumbnail": "Промени приказ слика", "upload_form.undo": "Обриши", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index fe82ad7bc..7bcd27f43 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -32,8 +32,8 @@ "account.mute": "Tysta @{name}", "account.mute_notifications": "Stäng av notifieringar från @{name}", "account.muted": "Tystad", - "account.posts": "Tutningar", - "account.posts_with_replies": "Tutningar och svar", + "account.posts": "Inlägg", + "account.posts_with_replies": "Inlägg och svar", "account.report": "Rapportera @{name}", "account.requested": "Inväntar godkännande. Klicka för att avbryta följarförfrågan", "account.share": "Dela @{name}s profil", @@ -70,7 +70,7 @@ "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", "column.community": "Lokal tidslinje", - "column.direct": "Direktmeddelanden", + "column.conversations": "Konversationer", "column.directory": "Bläddra bland profiler", "column.domain_blocks": "Dolda domäner", "column.favourites": "Favoriter", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Endast lokalt", "community.column_settings.media_only": "Endast media", "community.column_settings.remote_only": "Endast fjärr", - "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.encryption_warning": "Inlägg på Mastodon är inte end-to-end-krypterade. Dela inte någon känslig information över Mastodon.", "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.", "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan följa dig för att se dina inlägg som endast är för följare.", "compose_form.lock_disclaimer.lock": "låst", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du har ännu ej blockerat några användare.", "empty_column.bookmarked_statuses": "Du har inte bokmärkt några tutar än. När du gör ett bokmärke kommer det synas här.", "empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!", - "empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot ett kommer det att visas här.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Det finns ännu inga dolda domäner.", "empty_column.explore_statuses": "Ingenting är trendigt just nu. Kom tillbaka senare!", "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "för att knuffa", "keyboard_shortcuts.column": "för att fokusera en status i en av kolumnerna", "keyboard_shortcuts.compose": "för att fokusera skrivfältet", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Beskrivning", - "keyboard_shortcuts.direct": "för att öppna Direktmeddelanden", "keyboard_shortcuts.down": "för att flytta nedåt i listan", "keyboard_shortcuts.enter": "för att öppna en status", "keyboard_shortcuts.favourite": "för att sätta som favorit", @@ -247,7 +247,7 @@ "keyboard_shortcuts.my_profile": "för att öppna din profil", "keyboard_shortcuts.notifications": "för att öppna Meddelanden", "keyboard_shortcuts.open_media": "öppna media", - "keyboard_shortcuts.pinned": "för att öppna Nålade toots", + "keyboard_shortcuts.pinned": "för att öppna nålade inlägg", "keyboard_shortcuts.profile": "för att öppna skaparens profil", "keyboard_shortcuts.reply": "för att svara", "keyboard_shortcuts.requests": "för att öppna Följförfrågningar", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Författa ny toot", - "navigation_bar.direct": "Direktmeddelanden", "navigation_bar.discover": "Upptäck", "navigation_bar.domain_blocks": "Dolda domäner", "navigation_bar.edit_profile": "Redigera profil", @@ -335,7 +334,7 @@ "notifications.column_settings.reblog": "Knuffar:", "notifications.column_settings.show": "Visa i kolumnen", "notifications.column_settings.sound": "Spela upp ljud", - "notifications.column_settings.status": "Nya tutor:", + "notifications.column_settings.status": "Nya inlägg:", "notifications.column_settings.unread_notifications.category": "O-lästa aviseringar", "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", "notifications.column_settings.update": "Redigeringar:", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Ta bort omröstning", "privacy.change": "Justera sekretess", "privacy.direct.long": "Skicka endast till nämnda användare", - "privacy.direct.short": "Direkt", + "privacy.direct.short": "Bara personer jag nämner", "privacy.private.long": "Endast synligt för följare", "privacy.private.short": "Endast följare", - "privacy.public.long": "Skicka till publik tidslinje", + "privacy.public.long": "Synlig för alla", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Skicka inte till publik tidslinje", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Olistad", "refresh": "Läs om", "regeneration_indicator.label": "Laddar…", @@ -423,7 +422,7 @@ "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Vill du inte se det här?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.thanks.title_actionable": "Tack för att du rapporterar, vi kommer att titta på detta.", "report.unfollow": "Sluta följ @{username}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Sök", @@ -436,8 +435,8 @@ "search_results.accounts": "Människor", "search_results.all": "Alla", "search_results.hashtags": "Hashtaggar", - "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "Tutor", + "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", + "search_results.statuses": "Inlägg", "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", "search_results.total": "{count, number} {count, plural, ett {result} andra {results}}", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", @@ -451,13 +450,13 @@ "status.detailed_status": "Detaljerad samtalsvy", "status.direct": "Direktmeddela @{name}", "status.edit": "Redigera", - "status.edited": "Edited {date}", + "status.edited": "Ändrad {date}", "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", "status.embed": "Bädda in", "status.favourite": "Favorit", "status.filtered": "Filtrerat", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} skapade {date}", + "status.history.edited": "{name} redigerade {date}", "status.load_more": "Ladda fler", "status.media_hidden": "Media dold", "status.mention": "Omnämn @{name}", @@ -515,6 +514,7 @@ "upload_error.poll": "Filuppladdning tillåts inte med omröstningar.", "upload_form.audio_description": "Beskriv för personer med hörselnedsättning", "upload_form.description": "Beskriv för synskadade", + "upload_form.description_missing": "Beskrivning saknas", "upload_form.edit": "Redigera", "upload_form.thumbnail": "Ändra miniatyr", "upload_form.undo": "Radera", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 42dc3655b..0e0f7fd29 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 3c4bcb234..e8c9757ad 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -70,7 +70,7 @@ "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", "column.community": "சுய நிகழ்வு காலவரிசை", - "column.direct": "நேர் சேதிகள்", + "column.conversations": "Conversations", "column.directory": "சுயவிவரங்களை உலாவு", "column.domain_blocks": "மறைந்திருக்கும் திரளங்கள்", "column.favourites": "பிடித்தவைகள்", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "அருகிலிருந்து மட்டுமே", "community.column_settings.media_only": "படங்கள் மட்டுமே", "community.column_settings.remote_only": "தொலைவிலிருந்து மட்டுமே", - "compose_form.direct_message_warning": "இந்த டூட் இதில் குறிப்பிடப்பட்டுள்ள பயனர்களுக்கு மட்டுமே அனுப்பப்படும்.", "compose_form.direct_message_warning_learn_more": "மேலும் அறிய", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.", "compose_form.lock_disclaimer": "உங்கள் கணக்கு {locked} செய்யப்படவில்லை. உங்கள் பதிவுகளை யார் வேண்டுமானாலும் பின்தொடர்ந்து காணலாம்.", "compose_form.lock_disclaimer.lock": "பூட்டப்பட்டது", @@ -166,7 +166,7 @@ "empty_column.blocks": "நீங்கள் இதுவரை எந்தப் பயனர்களையும் முடக்கியிருக்கவில்லை.", "empty_column.bookmarked_statuses": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.", "empty_column.community": "உங்கள் மாஸ்டடான் முச்சந்தியில் யாரும் இல்லை. எதையேனும் எழுதி ஆட்டத்தைத் துவக்குங்கள்!", - "empty_column.direct": "உங்கள் தனிப்பெட்டியில் செய்திகள் ஏதும் இல்லை. செய்தியை நீங்கள் அனுப்பும்போதோ அல்லது பெறும்போதோ, அது இங்கே காண்பிக்கப்படும்.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "தடுக்கப்பட்டக் களங்கள் இதுவரை இல்லை.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "உங்களுக்குப் பிடித்த டூட்டுகள் இதுவரை இல்லை. ஒரு டூட்டில் நீங்கள் விருப்பக்குறி இட்டால், அது இங்கே காண்பிக்கப்படும்.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "பகிர", "keyboard_shortcuts.column": "ஏதேனும் ஒரு நெடுவரிசையில் உள்ள டூட்டுல் கவனம் செலுத்த", "keyboard_shortcuts.compose": "பதிவு எழுதும் பெட்டியில் கவனம் செலுத்த", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "விவரம்", - "keyboard_shortcuts.direct": "தனிப்பெட்டியைத் திறக்க", "keyboard_shortcuts.down": "பட்டியலின் கீழே செல்ல", "keyboard_shortcuts.enter": "டூட்டைத் திறக்க", "keyboard_shortcuts.favourite": "விருப்பக்குறி இட", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", "navigation_bar.compose": "புதியவற்றை எழுதுக toot", - "navigation_bar.direct": "நேரடி செய்திகள்", "navigation_bar.discover": "கண்டு பிடி", "navigation_bar.domain_blocks": "மறைந்த களங்கள்", "navigation_bar.edit_profile": "சுயவிவரத்தைத் திருத்தவும்", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "வாக்கெடுப்பை அகற்று", "privacy.change": "நிலை தனியுரிமை", "privacy.direct.long": "குறிப்பிடப்பட்ட பயனர்களுக்கு மட்டுமே இடுகையிடவும்", - "privacy.direct.short": "நடத்து", + "privacy.direct.short": "Direct", "privacy.private.long": "பின்தொடர்பவர்களுக்கு மட்டுமே இடுகை", - "privacy.private.short": "பின்பற்றுபவர்கள் மட்டும்", - "privacy.public.long": "பொது நேரங்களுக்கான இடுகை", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "பொது", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "பட்டியலிடப்படாத", "refresh": "புதுப்பி", "regeneration_indicator.label": "சுமையேற்றம்…", @@ -515,6 +514,7 @@ "upload_error.poll": "கோப்பு பதிவேற்றம் அனுமதிக்கப்படவில்லை.", "upload_form.audio_description": "செவித்திறன் குறைபாடு உள்ளவர்களுக்காக விளக்குக‌", "upload_form.description": "பார்வையற்ற விவரிக்கவும்", + "upload_form.description_missing": "No description added", "upload_form.edit": "தொகு", "upload_form.thumbnail": "சிறுபடத்தை மாற்ற", "upload_form.undo": "நீக்கு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index e554a04b8..5169600d6 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 1469c71c3..6654567c0 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -70,7 +70,7 @@ "column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "column.bookmarks": "Bookmarks", "column.community": "స్థానిక కాలక్రమం", - "column.direct": "ప్రత్యక్ష సందేశాలు", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "దాచిన డొమైన్లు", "column.favourites": "ఇష్టపడినవి", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "ఈ టూట్ అన్లిస్టెడ్ కాబట్టి ఏ హాష్ ట్యాగ్ క్రిందకూ రాదు. పబ్లిక్ టూట్ లను మాత్రమే హాష్ ట్యాగ్ ద్వారా శోధించవచ్చు.", "compose_form.lock_disclaimer": "మీ ఖాతా {locked} చేయబడలేదు. ఎవరైనా మిమ్మల్ని అనుసరించి మీ అనుచరులకు-మాత్రమే పోస్ట్లను వీక్షించవచ్చు.", "compose_form.lock_disclaimer.lock": "బిగించబడినది", @@ -166,7 +166,7 @@ "empty_column.blocks": "మీరు ఇంకా ఏ వినియోగదారులనూ బ్లాక్ చేయలేదు.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!", - "empty_column.direct": "మీకు ఇంకా ఏ ప్రత్యక్ష సందేశాలు లేవు. మీరు ఒకదాన్ని పంపినప్పుడు లేదా స్వీకరించినప్పుడు, అది ఇక్కడ చూపబడుతుంది.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "దాచబడిన డొమైన్లు ఇంకా ఏమీ లేవు.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "మీకు ఇష్టపడిన టూట్లు ఇంకా ఎమీ లేవు. మీరు ఒకదానిని ఇష్టపడినప్పుడు, అది ఇక్కడ కనిపిస్తుంది.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "బూస్ట్ చేయడానికి", "keyboard_shortcuts.column": "నిలువు వరుసలలో ఒకదానిపై దృష్టి పెట్టడానికి", "keyboard_shortcuts.compose": "కంపోజ్ టెక్స్ట్ఏరియా పై దృష్టి పెట్టడానికి", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "నేరుగా పంపిన సందేశాల నిలువు వరుసను తెరువడానికి", "keyboard_shortcuts.down": "జాబితాలో క్రిందికి వెళ్ళడానికి", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "ఇష్టపడడానికి", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", "navigation_bar.compose": "కొత్త టూట్ను రాయండి", - "navigation_bar.direct": "ప్రత్యక్ష సందేశాలు", "navigation_bar.discover": "కనుగొను", "navigation_bar.domain_blocks": "దాచిన డొమైన్లు", "navigation_bar.edit_profile": "ప్రొఫైల్ని సవరించండి", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "ఎన్నికను తొలగించు", "privacy.change": "స్టేటస్ గోప్యతను సర్దుబాటు చేయండి", "privacy.direct.long": "పేర్కొన్న వినియోగదారులకు మాత్రమే పోస్ట్ చేయి", - "privacy.direct.short": "ప్రత్యక్ష", + "privacy.direct.short": "Direct", "privacy.private.long": "అనుచరులకు మాత్రమే పోస్ట్ చేయి", - "privacy.private.short": "అనుచరులకు మాత్రమే", - "privacy.public.long": "ప్రజా కాలక్రమాలకు పోస్ట్ చేయండి", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "ప్రజా", - "privacy.unlisted.long": "ప్రజా కాలక్రమాలలో చూపించవద్దు", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "జాబితా చేయబడనిది", "refresh": "Refresh", "regeneration_indicator.label": "లోడ్ అవుతోంది…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "దృష్టి లోపమున్న వారి కోసం వివరించండి", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "తొలగించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 8565d3d24..5b2e29066 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -70,7 +70,7 @@ "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", "column.community": "เส้นเวลาในเซิร์ฟเวอร์", - "column.direct": "ข้อความโดยตรง", + "column.conversations": "การสนทนา", "column.directory": "เรียกดูโปรไฟล์", "column.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "column.favourites": "รายการโปรด", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "ในเซิร์ฟเวอร์เท่านั้น", "community.column_settings.media_only": "สื่อเท่านั้น", "community.column_settings.remote_only": "ระยะไกลเท่านั้น", - "compose_form.direct_message_warning": "จะส่งโพสต์นี้ไปยังผู้ใช้ที่กล่าวถึงเท่านั้น", "compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก", "compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ", "compose_form.lock_disclaimer.lock": "ล็อคอยู่", @@ -166,7 +166,7 @@ "empty_column.blocks": "คุณยังไม่ได้ปิดกั้นผู้ใช้ใด ๆ", "empty_column.bookmarked_statuses": "คุณยังไม่มีโพสต์ที่เพิ่มที่คั่นหน้าไว้ใด ๆ เมื่อคุณเพิ่มที่คั่นหน้าโพสต์ โพสต์จะปรากฏที่นี่", "empty_column.community": "เส้นเวลาในเซิร์ฟเวอร์ว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!", - "empty_column.direct": "คุณยังไม่มีข้อความโดยตรงใด ๆ เมื่อคุณส่งหรือรับข้อความ ข้อความจะปรากฏที่นี่", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ปิดกั้นอยู่", "empty_column.explore_statuses": "ไม่มีสิ่งใดที่กำลังนิยมในตอนนี้ กลับมาตรวจสอบในภายหลัง!", "empty_column.favourited_statuses": "คุณยังไม่มีโพสต์ที่ชื่นชอบใด ๆ เมื่อคุณชื่นชอบโพสต์ โพสต์จะปรากฏที่นี่", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "ดันโพสต์", "keyboard_shortcuts.column": "โฟกัสคอลัมน์", "keyboard_shortcuts.compose": "โฟกัสพื้นที่เขียนข้อความ", + "keyboard_shortcuts.conversations": "เพื่อเปิดคอลัมน์การสนทนา", "keyboard_shortcuts.description": "คำอธิบาย", - "keyboard_shortcuts.direct": "เปิดคอลัมน์ข้อความโดยตรง", "keyboard_shortcuts.down": "ย้ายลงในรายการ", "keyboard_shortcuts.enter": "เปิดโพสต์", "keyboard_shortcuts.favourite": "ชื่นชอบโพสต์", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", "navigation_bar.compose": "เขียนโพสต์ใหม่", - "navigation_bar.direct": "ข้อความโดยตรง", "navigation_bar.discover": "ค้นพบ", "navigation_bar.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "navigation_bar.edit_profile": "แก้ไขโปรไฟล์", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "เอาการสำรวจความคิดเห็นออก", "privacy.change": "เปลี่ยนความเป็นส่วนตัวของโพสต์", "privacy.direct.long": "ปรากฏแก่ผู้ใช้ที่กล่าวถึงเท่านั้น", - "privacy.direct.short": "โดยตรง", + "privacy.direct.short": "เฉพาะผู้คนที่ฉันกล่าวถึงเท่านั้น", "privacy.private.long": "ปรากฏแก่ผู้ติดตามเท่านั้น", "privacy.private.short": "ผู้ติดตามเท่านั้น", - "privacy.public.long": "ปรากฏแก่ทุกคน แสดงในเส้นเวลาสาธารณะ", + "privacy.public.long": "ปรากฏแก่ทั้งหมด", "privacy.public.short": "สาธารณะ", - "privacy.unlisted.long": "ปรากฏแก่ทุกคน แต่ไม่อยู่ในเส้นเวลาสาธารณะ", + "privacy.unlisted.long": "ปรากฏแก่ทั้งหมด แต่เลือกไม่รับคุณลักษณะการค้นพบ", "privacy.unlisted.short": "ไม่อยู่ในรายการ", "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", @@ -515,6 +514,7 @@ "upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์กับการลงคะแนน", "upload_form.audio_description": "อธิบายสำหรับผู้สูญเสียการได้ยิน", "upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น", + "upload_form.description_missing": "ไม่มีการเพิ่มคำอธิบาย", "upload_form.edit": "แก้ไข", "upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ", "upload_form.undo": "ลบ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 0bf94094a..1903a4d7f 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -9,11 +9,11 @@ "account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın", "account.cancel_follow_request": "Takip isteğini iptal et", "account.direct": "@{name} adlı kişiye mesaj gönder", - "account.disable_notifications": "@{name} gönderi atınca bana bildirmeyi durdur", + "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", - "account.enable_notifications": "@{name} gönderi atınca bana bildir", - "account.endorse": "Profildeki özellik", + "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", + "account.endorse": "Profilimde öne çıkar", "account.follow": "Takip et", "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", @@ -25,7 +25,7 @@ "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", - "account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini elle inceliyor.", + "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", "account.mention": "@{name} kişisinden bahset", "account.moved_to": "{name} şuraya taşındı:", @@ -42,7 +42,7 @@ "account.unblock": "@{name} adlı kişinin engelini kaldır", "account.unblock_domain": "{domain} alan adının engelini kaldır", "account.unblock_short": "Engeli kaldır", - "account.unendorse": "Profilde gösterme", + "account.unendorse": "Profilimde öne çıkarma", "account.unfollow": "Takibi bırak", "account.unmute": "@{name} adlı kişinin sesini aç", "account.unmute_notifications": "@{name} adlı kişinin bildirimlerini aç", @@ -70,7 +70,7 @@ "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", "column.community": "Yerel zaman tüneli", - "column.direct": "Direkt Mesajlar", + "column.conversations": "Sohbetler", "column.directory": "Profillere göz at", "column.domain_blocks": "Engellenen alan adları", "column.favourites": "Favoriler", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Sadece yerel", "community.column_settings.media_only": "Sadece medya", "community.column_settings.remote_only": "Sadece uzak", - "compose_form.direct_message_warning": "Bu gönderi sadece belirtilen kullanıcılara gönderilecektir.", "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin", + "compose_form.encryption_warning": "Mastodondaki gönderiler uçtan uca şifrelemeli değildir. Mastodon üzerinden hassas olabilecek bir bilginizi paylaşmayın.", "compose_form.hashtag_warning": "Bu gönderi liste dışı olduğu için hiç bir etikette yer almayacak. Sadece herkese açık gönderiler etiketlerde bulunabilir.", "compose_form.lock_disclaimer": "Hesabın {locked} değil. Yalnızca takipçilere özel gönderilerini görüntülemek için herkes seni takip edebilir.", "compose_form.lock_disclaimer.lock": "kilitli", @@ -166,17 +166,17 @@ "empty_column.blocks": "Henüz herhangi bir kullanıcıyı engellemedin.", "empty_column.bookmarked_statuses": "Henüz yer imine eklediğin toot yok. Bir tanesi yer imine eklendiğinde burada görünür.", "empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!", - "empty_column.direct": "Henüz direkt mesajın yok. Bir tane gönderdiğinde veya aldığında burada görünür.", - "empty_column.domain_blocks": "Henüz hiçbir gizli alan adı yok.", + "empty_column.conversations": "Sadece bahsedilen kişilere özel gönderi paylaştığında veya bu gizlilik seçeneğinde bir gönderi aldığında bu sayfada gözükecek.", + "empty_column.domain_blocks": "Henüz engellenmiş bir alan adı yok.", "empty_column.explore_statuses": "Şu an öne çıkan birşey yok. Daha sonra tekrar bakın!", "empty_column.favourited_statuses": "Favori tootun yok. Favori tootun olduğunda burada görünür.", "empty_column.favourites": "Kimse bu gönderiyi favorilerine eklememiş. Biri eklediğinde burada görünecek.", "empty_column.follow_recommendations": "Öyle görünüyor ki sizin için hiçbir öneri oluşturulamıyor. Tanıdığınız kişileri aramak için aramayı kullanabilir veya öne çıkanlara bakabilirsiniz.", "empty_column.follow_requests": "Hiç takip isteğiniz yok. Bir tane aldığınızda burada görünecek.", - "empty_column.hashtag": "Henüz bu hashtag’e sahip hiçbir gönderi yok.", + "empty_column.hashtag": "Henüz bu etikete sahip hiçbir gönderi yok.", "empty_column.home": "Ana zaman tünelin boş! Akışını doldurmak için daha fazla kişiyi takip et. {suggestions}", "empty_column.home.suggestions": "Bazı önerileri görün", - "empty_column.list": "Bu listede henüz hiçbir şey yok.", + "empty_column.list": "Henüz bu listede bir şey yok. Bu listenin üyeleri bir şey paylaşığında burada gözükecek.", "empty_column.lists": "Henüz listen yok. Liste oluşturduğunda burada görünür.", "empty_column.mutes": "Henüz bir kullanıcıyı sessize almadınız.", "empty_column.notifications": "Henüz bildiriminiz yok. Sohbete başlamak için başkalarıyla etkileşim kurun.", @@ -227,21 +227,21 @@ "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}", "keyboard_shortcuts.back": "geriye gitmek için", "keyboard_shortcuts.blocked": "engellenen kullanıcılar listesini açmak için", - "keyboard_shortcuts.boost": "Gönderiyi teşvik et", + "keyboard_shortcuts.boost": "gönderiyi boostla", "keyboard_shortcuts.column": "sütunlardan birindeki duruma odaklanmak için", "keyboard_shortcuts.compose": "yazma alanına odaklanmak için", + "keyboard_shortcuts.conversations": "sohbetler sütununu açmak için", "keyboard_shortcuts.description": "Açıklama", - "keyboard_shortcuts.direct": "direkt mesajlar sütununu açmak için", "keyboard_shortcuts.down": "listede aşağıya inmek için", - "keyboard_shortcuts.enter": "Gönderiyi aç", - "keyboard_shortcuts.favourite": "Gönderiyi beğen", + "keyboard_shortcuts.enter": "gönderiyi aç", + "keyboard_shortcuts.favourite": "gönderiyi favorilerine ekle", "keyboard_shortcuts.favourites": "favoriler listesini açmak için", - "keyboard_shortcuts.federated": "federe edilmiş zaman tünelini açmak için", + "keyboard_shortcuts.federated": "federe akışı aç", "keyboard_shortcuts.heading": "Klavye kısayolları", - "keyboard_shortcuts.home": "anasayfa zaman çizelgesini açmak için", + "keyboard_shortcuts.home": "ana akışı aç", "keyboard_shortcuts.hotkey": "Kısayol tuşu", "keyboard_shortcuts.legend": "bu efsaneyi görüntülemek için", - "keyboard_shortcuts.local": "yerel zaman tünelini açmak için", + "keyboard_shortcuts.local": "yerel akışı aç", "keyboard_shortcuts.mention": "yazardan bahsetmek için", "keyboard_shortcuts.muted": "sessize alınmış kullanıcı listesini açmak için", "keyboard_shortcuts.my_profile": "profilinizi açmak için", @@ -249,7 +249,7 @@ "keyboard_shortcuts.open_media": "medyayı açmak için", "keyboard_shortcuts.pinned": "Sabitlenmiş gönderilerin listesini aç", "keyboard_shortcuts.profile": "yazarın profilini açmak için", - "keyboard_shortcuts.reply": "Gönderiyi yanıtla", + "keyboard_shortcuts.reply": "gönderiyi yanıtla", "keyboard_shortcuts.requests": "takip istekleri listesini açmak için", "keyboard_shortcuts.search": "aramaya odaklanmak için", "keyboard_shortcuts.spoilers": "CW alanını göstermek/gizlemek için", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Yer İmleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", "navigation_bar.compose": "Yeni gönderi yaz", - "navigation_bar.direct": "Direkt Mesajlar", "navigation_bar.discover": "Keşfet", "navigation_bar.domain_blocks": "Engellenen alan adları", "navigation_bar.edit_profile": "Profili düzenle", @@ -310,7 +309,7 @@ "navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.security": "Güvenlik", "notification.admin.sign_up": "{name} kaydoldu", - "notification.favourite": "{name} gönderini beğendi", + "notification.favourite": "{name} gönderini favorilerine ekledi", "notification.follow": "{name} seni takip etti", "notification.follow_request": "{name} size takip isteği gönderdi", "notification.mention": "{name} senden bahsetti", @@ -323,7 +322,7 @@ "notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?", "notifications.column_settings.admin.sign_up": "Yeni kayıtlar:", "notifications.column_settings.alert": "Masaüstü bildirimleri", - "notifications.column_settings.favourite": "Beğeniler:", + "notifications.column_settings.favourite": "Favoriler:", "notifications.column_settings.filter_bar.advanced": "Tüm kategorileri görüntüle", "notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu", "notifications.column_settings.filter_bar.show_bar": "Süzme çubuğunu göster", @@ -341,7 +340,7 @@ "notifications.column_settings.update": "Düzenlemeler:", "notifications.filter.all": "Tümü", "notifications.filter.boosts": "Boostlar", - "notifications.filter.favourites": "Beğeniler", + "notifications.filter.favourites": "Favoriler", "notifications.filter.follows": "Takip edilenler", "notifications.filter.mentions": "Bahsetmeler", "notifications.filter.polls": "Anket sonuçları", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Anketi kaldır", "privacy.change": "Gönderi gizliliğini değiştir", "privacy.direct.long": "Sadece bahsedilen kullanıcılar için görünür", - "privacy.direct.short": "Direkt", + "privacy.direct.short": "Sadece bahsettiğim kişiler", "privacy.private.long": "Sadece takipçiler için görünür", "privacy.private.short": "Sadece takipçiler", - "privacy.public.long": "Herkese görünür, herkese açık zaman çizelgelerinde gösterilir", + "privacy.public.long": "Herkese açık", "privacy.public.short": "Herkese açık", - "privacy.unlisted.long": "Herkese görünür, ancak genel zaman çizelgelerinde gösterilmez", + "privacy.unlisted.long": "Keşfet harici herkese açık", "privacy.unlisted.short": "Listelenmemiş", "refresh": "Yenile", "regeneration_indicator.label": "Yükleniyor…", @@ -383,7 +382,7 @@ "relative_time.full.just_now": "şimdi", "relative_time.full.minutes": "{number, plural, one {# dakika} other {# dakika}} önce", "relative_time.full.seconds": "{number, plural, one {# saniye} other {# saniye}} önce", - "relative_time.hours": "{number}sa", + "relative_time.hours": "{number}s", "relative_time.just_now": "şimdi", "relative_time.minutes": "{number}dk", "relative_time.seconds": "{number}sn", @@ -454,7 +453,7 @@ "status.edited": "{date} tarihinde düzenlenmiş", "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", "status.embed": "Gömülü", - "status.favourite": "Beğen", + "status.favourite": "Favorilerine ekle", "status.filtered": "Filtrelenmiş", "status.history.created": "{name} oluşturdu {date}", "status.history.edited": "{name} düzenledi {date}", @@ -507,14 +506,15 @@ "trends.trending_now": "Şu an gündemde", "ui.beforeunload": "Mastodon'u terk ederseniz taslağınız kaybolacak.", "units.short.billion": "{count}Mr", - "units.short.million": "{count}Mn", - "units.short.thousand": "{count}Mn", + "units.short.million": "{count}M", + "units.short.thousand": "{count}Bin", "upload_area.title": "Karşıya yükleme için sürükle bırak yapınız", "upload_button.label": "Resim, video veya ses dosyası ekleyin", "upload_error.limit": "Dosya yükleme sınırı aşıldı.", "upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.", "upload_form.audio_description": "İşitme kaybı olan kişiler için tarif edin", "upload_form.description": "Görme engelliler için açıklama", + "upload_form.description_missing": "Açıklama eklenmedi", "upload_form.edit": "Düzenle", "upload_form.thumbnail": "Küçük resmi değiştir", "upload_form.undo": "Sil", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index ef14902ad..481bf9fa1 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -4,30 +4,30 @@ "account.badges.bot": "Бот", "account.badges.group": "Төркем", "account.block": "@{name} блоклау", - "account.block_domain": "Block domain {domain}", + "account.block_domain": "{domain} доменын блоклау", "account.blocked": "Блокланган", "account.browse_more_on_origin_server": "Тулырак оригинал профилендә карап була", "account.cancel_follow_request": "Cancel follow request", - "account.direct": "Direct message @{name}", + "account.direct": "@{name} өчен яңа хат", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Профильны үзгәртү", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру", "account.endorse": "Feature on profile", "account.follow": "Языл", - "account.followers": "Followers", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.followers": "Язылучылар", + "account.followers.empty": "Әле беркем дә язылмаган.", + "account.followers_counter": "{count, plural,one {{counter} Язылучы} other {{counter} Язылучы}}", + "account.following": "Язылган", + "account.following_counter": "{count, plural, one {{counter} Язылган} other {{counter} Язылган}}", + "account.follows.empty": "Беркемгә дә язылмаган әле.", "account.follows_you": "Сезгә язылган", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Медиа", - "account.mention": "Mention @{name}", + "account.mention": "@{name} искәртү", "account.moved_to": "{name} has moved to:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Кыстыргычлар", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Тасвирлама", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Кыстыргычлар", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Профильны үзгәртү", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Яңарту", "regeneration_indicator.label": "Йөкләү...", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Үзгәртү", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Бетерү", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 42dc3655b..0e0f7fd29 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -92,8 +92,8 @@ "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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index b64a1d0ec..bc7476d2f 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -29,9 +29,9 @@ "account.media": "Медіа", "account.mention": "Згадати @{name}", "account.moved_to": "{name} переїхав на:", - "account.mute": "Заглушити @{name}", + "account.mute": "Нехтувати @{name}", "account.mute_notifications": "Не показувати сповіщення від @{name}", - "account.muted": "Заглушений", + "account.muted": "Нехтується", "account.posts": "Дмухи", "account.posts_with_replies": "Дмухи й відповіді", "account.report": "Поскаржитися на @{name}", @@ -44,9 +44,9 @@ "account.unblock_short": "Розблокувати", "account.unendorse": "Не публікувати у профілі", "account.unfollow": "Відписатися", - "account.unmute": "Зняти глушення з @{name}", + "account.unmute": "Не нехтувати @{name}", "account.unmute_notifications": "Показувати сповіщення від @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Не нехтувати", "account_note.placeholder": "Коментарі відсутні", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -70,14 +70,14 @@ "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", - "column.direct": "Прямі повідомлення", + "column.conversations": "Бесіди", "column.directory": "Переглянути профілі", "column.domain_blocks": "Приховані домени", "column.favourites": "Вподобане", "column.follow_requests": "Запити на підписку", "column.home": "Головна", "column.lists": "Списки", - "column.mutes": "Заглушені користувачі", + "column.mutes": "Нехтувані користувачі", "column.notifications": "Сповіщення", "column.pins": "Закріплені дмухи", "column.public": "Глобальна стрічка", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Тільки локальні", "community.column_settings.media_only": "Тільки медіа", "community.column_settings.remote_only": "Тільки видалені", - "compose_form.direct_message_warning": "Цей дмух буде видимий тільки згаданим користувачам.", "compose_form.direct_message_warning_learn_more": "Дізнатися більше", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "Цей дмух не буде відображений у жодній стрічці хештеґу, оскільки він прихований. Тільки публічні дмухи можуть бути знайдені за хештеґом.", "compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Будь-який користувач може підписатися на вас та переглядати ваші приватні пости.", "compose_form.lock_disclaimer.lock": "приватний", @@ -124,12 +124,12 @@ "confirmations.discard_edit_media.confirm": "Відкинути", "confirmations.discard_edit_media.message": "У вас є незбережені зміни в описі медіа або попереднього перегляду, все одно відкинути їх?", "confirmations.domain_block.confirm": "Сховати весь домен", - "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", + "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати або нехтувати лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", "confirmations.logout.confirm": "Вийти", "confirmations.logout.message": "Ви впевнені, що хочете вийти?", - "confirmations.mute.confirm": "Заглушити", - "confirmations.mute.explanation": "Це приховає пости від них і пости зі згадками про них, проте вони все одно матимуть змогу бачити ваші пости і підписуватися на вас.", - "confirmations.mute.message": "Ви впевнені, що хочете заглушити {name}?", + "confirmations.mute.confirm": "Нехтуавти", + "confirmations.mute.explanation": "Це сховає дописи від них і дописи зі згадками про них, проте вони все одно матимуть змогу бачити ваші дописи й підписуватися на вас.", + "confirmations.mute.message": "Ви впевнені, що хочете нехтувати {name}?", "confirmations.redraft.confirm": "Видалити та перестворити", "confirmations.redraft.message": "Ви впевнені, що хочете видалити допис і перестворити його? Ви втратите всі відповіді, передмухи та вподобайки допису.", "confirmations.reply.confirm": "Відповісти", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ви ще не заблокували жодного користувача.", "empty_column.bookmarked_statuses": "У вас ще немає дмухів у закладках. Коли ви щось додасте до заклкдок, воно з'явиться тут.", "empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!", - "empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви відправите чи отримаєте якесь, воно з'явиться тут.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "Тут поки немає прихованих доменів.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "У вас ще немає вподобаних дмухів. Коли ви щось вподобаєте, воно з'явиться тут.", @@ -178,7 +178,7 @@ "empty_column.home.suggestions": "Переглянути пропозиції", "empty_column.list": "Немає нічого в цьому списку. Коли його учасники дмухнуть нові статуси, вони з'являться тут.", "empty_column.lists": "У вас ще немає списків. Коли ви їх створите, вони з'являться тут.", - "empty_column.mutes": "Ви ще не заглушили жодного користувача.", + "empty_column.mutes": "Ви ще не нехтуєте жодного користувача.", "empty_column.notifications": "У вас ще немає сповіщень. Переписуйтесь з іншими користувачами, щоб почати розмову.", "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку", "error.unexpected_crash.explanation": "Ця сторінка не може бути коректно відображена через баґ у нашому коді або через проблему сумісності браузера.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "передмухувати", "keyboard_shortcuts.column": "фокусуватися на одній з колонок", "keyboard_shortcuts.compose": "фокусуватися на полі введення", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.direct": "відкрити колонку прямих повідомлень", "keyboard_shortcuts.down": "рухатися вниз стрічкою", "keyboard_shortcuts.enter": "відкрити статус", "keyboard_shortcuts.favourite": "вподобати", @@ -243,7 +243,7 @@ "keyboard_shortcuts.legend": "показати підказку", "keyboard_shortcuts.local": "відкрити локальну стрічку", "keyboard_shortcuts.mention": "згадати автора", - "keyboard_shortcuts.muted": "відкрити список заглушених користувачів", + "keyboard_shortcuts.muted": "Відкрити список нехтуваних користувачів", "keyboard_shortcuts.my_profile": "відкрити ваш профіль", "keyboard_shortcuts.notifications": "відкрити колонку сповіщень", "keyboard_shortcuts.open_media": "відкрити медіа", @@ -283,18 +283,17 @@ "missing_indicator.label": "Не знайдено", "missing_indicator.sublabel": "Ресурс не знайдений", "mute_modal.duration": "Тривалість", - "mute_modal.hide_notifications": "Приховати сповіщення від користувача?", + "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", "navigation_bar.apps": "Мобільні додатки", "navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальна стрічка", "navigation_bar.compose": "Написати новий дмух", - "navigation_bar.direct": "Прямі повідомлення", "navigation_bar.discover": "Знайти", "navigation_bar.domain_blocks": "Приховані домени", "navigation_bar.edit_profile": "Редагувати профіль", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Огляд", "navigation_bar.favourites": "Вподобане", "navigation_bar.filters": "Приховані слова", "navigation_bar.follow_requests": "Запити на підписку", @@ -303,7 +302,7 @@ "navigation_bar.keyboard_shortcuts": "Гарячі клавіші", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Вийти", - "navigation_bar.mutes": "Заглушені користувачі", + "navigation_bar.mutes": "Нехтувані користувачі", "navigation_bar.personal": "Особисте", "navigation_bar.pins": "Закріплені дмухи", "navigation_bar.preferences": "Налаштування", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "Видалити опитування", "privacy.change": "Змінити видимість допису", "privacy.direct.long": "Показати тільки згаданим користувачам", - "privacy.direct.short": "Особисто", + "privacy.direct.short": "Лише люди, яких я згадую", "privacy.private.long": "Показати тільки підписникам", "privacy.private.short": "Тільки для підписників", - "privacy.public.long": "Показувати у публічних стрічках", + "privacy.public.long": "Visible for all", "privacy.public.short": "Публічно", - "privacy.unlisted.long": "Не показувати у публічних стрічках", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Прихований", "refresh": "Оновити", "regeneration_indicator.label": "Завантаження…", @@ -394,7 +393,7 @@ "report.categories.other": "Інше", "report.categories.spam": "Спам", "report.categories.violation": "Контент порушує одне або кілька правил сервера", - "report.category.subtitle": "Choose the best match", + "report.category.subtitle": "Оберіть найкращий збіг", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "профіль", "report.category.title_status": "допис", @@ -402,8 +401,8 @@ "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Надіслати до {target}", "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", - "report.mute": "Заглушити", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute": "Нехтувати", + "report.mute_explanation": "Ви не побачите їхніх дописів. Вони все ще можуть стежити за вами, бачити ваші дописи та не знатимуть про нехтування.", "report.next": "Далі", "report.placeholder": "Додаткові коментарі", "report.reasons.dislike": "Мені це не подобається", @@ -412,9 +411,9 @@ "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "Це спам", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", + "report.reasons.violation": "Порушує правила сервера", + "report.reasons.violation_description": "Ви впевнені, що це порушує певні правила", + "report.rules.subtitle": "Виберіть усі варіанти, що підходять", "report.rules.title": "Які правила порушено?", "report.statuses.subtitle": "Виберіть усі варіанти, що підходять", "report.statuses.title": "Are there any posts that back up this report?", @@ -422,8 +421,8 @@ "report.target": "Скаржимося на {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.thanks.title": "Не хочете це бачити?", + "report.thanks.title_actionable": "Дякуємо за скаргу, ми розглянемо її.", "report.unfollow": "Відписатися від @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Пошук", @@ -436,7 +435,7 @@ "search_results.accounts": "Люди", "search_results.all": "Усе", "search_results.hashtags": "Хештеґи", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Нічого не вдалося знайти за цими пошуковими термінами", "search_results.statuses": "Дмухів", "search_results.statuses_fts_disabled": "Пошук дмухів за вмістом недоступний на цьому сервері Mastodon.", "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}", @@ -462,8 +461,8 @@ "status.media_hidden": "Медіа приховано", "status.mention": "Згадати @{name}", "status.more": "Більше", - "status.mute": "Заглушити @{name}", - "status.mute_conversation": "Заглушити діалог", + "status.mute": "Нехтувати @{name}", + "status.mute_conversation": "Нехтувати діалог", "status.open": "Розгорнути допис", "status.pin": "Закріпити у профілі", "status.pinned": "Закріплений дмух", @@ -485,7 +484,7 @@ "status.show_more_all": "Показувати більше для всіх", "status.show_thread": "Показати ланцюжок", "status.uncached_media_warning": "Недоступно", - "status.unmute_conversation": "Зняти глушення з діалогу", + "status.unmute_conversation": "Не нехтувати діалог", "status.unpin": "Відкріпити від профілю", "suggestions.dismiss": "Відхилити пропозицію", "suggestions.header": "Вас може зацікавити…", @@ -515,6 +514,7 @@ "upload_error.poll": "Не можна завантажувати файли до опитувань.", "upload_form.audio_description": "Опишіть для людей із вадами слуху", "upload_form.description": "Опишіть для людей з вадами зору", + "upload_form.description_missing": "Опису не додано", "upload_form.edit": "Змінити", "upload_form.thumbnail": "Змінити мініатюру", "upload_form.undo": "Видалити", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index e5aad2355..42728af0f 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -70,7 +70,7 @@ "column.blocks": "مسدود صارفین", "column.bookmarks": "بُک مارکس", "column.community": "مقامی زمانی جدول", - "column.direct": "راست پیغام", + "column.conversations": "Conversations", "column.directory": "مشخصات کا مطالعہ کریں", "column.domain_blocks": "پوشیدہ ڈومین", "column.favourites": "پسندیدہ", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "صرف مقامی", "community.column_settings.media_only": "وسائل فقط", "community.column_settings.remote_only": "صرف خارجی", - "compose_form.direct_message_warning": "یہ ٹوٹ صرف مذکورہ صارفین کو بھیجا جائے گا.", "compose_form.direct_message_warning_learn_more": "مزید جانیں", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "چونکہ یہ ٹوٹ غیر مندرجہ ہے لہذا یہ کسی بھی ہیش ٹیگ کے تحت درج نہیں کیا جائے گا. ہیش ٹیگ کے تحت صرف \nعمومی ٹوٹ تلاش کئے جا سکتے ہیں.", "compose_form.lock_disclaimer": "آپ کا اکاؤنٹ {locked} نہیں ہے. کوئی بھی آپ کے مخصوص برائے پیروکار ٹوٹ دیکھنے کی خاطر آپ کی پیروی کر سکتا ہے.", "compose_form.lock_disclaimer.lock": "مقفل", @@ -166,7 +166,7 @@ "empty_column.blocks": "آپ نے ابھی کسی صارف کو مسدود نہیں کیا ہے.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "مقامی جدول خالی ہے. کچھ تحریر کریں تاکہ بات آگے بڑھے!", - "empty_column.direct": "آپ کیلئے کوئی راست پیغام نہیں ہے. جب آپ بھیجیں گے یا وصول کریں گے، یہاں نظر آئےگا.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "ابھی تک کوئی چھپا ہوا ڈومین نہیں ہے.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "آپ کا کوئی پسندیدہ ٹوٹ نہیں ہے. جب آپ پسند کریں گے، یہاں نظر آئےگا.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "بُک مارکس", "navigation_bar.community_timeline": "مقامی ٹائم لائن", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "براہ راست پیغامات", "navigation_bar.discover": "دریافت کریں", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "پروفائل میں ترمیم کریں", @@ -370,9 +369,9 @@ "privacy.direct.short": "Direct", "privacy.private.long": "Post to followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Post to public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "Public", - "privacy.unlisted.long": "Do not show in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index f7384074a..7837ef639 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -9,10 +9,10 @@ "account.browse_more_on_origin_server": "Truy cập trang của người này", "account.cancel_follow_request": "Hủy yêu cầu theo dõi", "account.direct": "Nhắn riêng @{name}", - "account.disable_notifications": "Không thông báo khi @{name} đăng tút", + "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút", "account.domain_blocked": "Người đã chặn", - "account.edit_profile": "Chỉnh sửa trang cá nhân", - "account.enable_notifications": "Thông báo khi @{name} đăng tút", + "account.edit_profile": "Sửa hồ sơ", + "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", "account.follow": "Theo dõi", "account.followers": "Người theo dõi", @@ -22,13 +22,13 @@ "account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}", "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", - "account.hide_reblogs": "Ẩn tút do @{name} đăng lại", + "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined": "Đã tham gia {date}", - "account.link_verified_on": "Liên kết này đã được xác thực vào {date}", + "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", "account.mention": "Nhắc đến @{name}", - "account.moved_to": "{name} đã đổi thành:", + "account.moved_to": "{name} đã chuyển sang:", "account.mute": "Ẩn @{name}", "account.mute_notifications": "Tắt thông báo từ @{name}", "account.muted": "Đã ẩn", @@ -57,7 +57,7 @@ "alert.rate_limited.title": "Vượt giới hạn", "alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.", "alert.unexpected.title": "Ốiii!", - "announcement.announcement": "Thông báo chung", + "announcement.announcement": "Có gì mới?", "attachments_list.unprocessed": "(chưa xử lí)", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", @@ -70,7 +70,7 @@ "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", "column.community": "Máy chủ của bạn", - "column.direct": "Tin nhắn", + "column.conversations": "Thảo luận", "column.directory": "Tìm người cùng sở thích", "column.domain_blocks": "Máy chủ đã chặn", "column.favourites": "Thích", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Chỉ máy chủ của bạn", "community.column_settings.media_only": "Chỉ xem media", "community.column_settings.remote_only": "Chỉ người dùng ở máy chủ khác", - "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.encryption_warning": "Các tút trên Mastodon không được mã hóa đầu cuối. Không chia sẻ bất kỳ thông tin nhạy cảm nào qua Mastodon.", "compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai. Chỉ những tút công khai mới có thể được tìm kiếm thông qua hashtag.", "compose_form.lock_disclaimer": "Tài khoản của bạn không {locked}. Bất cứ ai cũng có thể theo dõi và xem tút riêng tư của bạn.", "compose_form.lock_disclaimer.lock": "khóa", @@ -104,7 +104,7 @@ "compose_form.poll.remove_option": "Xóa lựa chọn này", "compose_form.poll.switch_to_multiple": "Có thể chọn nhiều lựa chọn", "compose_form.poll.switch_to_single": "Chỉ cho phép chọn duy nhất một lựa chọn", - "compose_form.publish": "Đăng tút", + "compose_form.publish": "Đăng", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Lưu thay đổi", "compose_form.sensitive.hide": "{count, plural, other {Đánh dấu nội dung nhạy cảm}}", @@ -112,7 +112,7 @@ "compose_form.sensitive.unmarked": "{count, plural, other {Nội dung này bình thường}}", "compose_form.spoiler.marked": "Hủy nội dung ẩn", "compose_form.spoiler.unmarked": "Tạo nội dung ẩn", - "compose_form.spoiler_placeholder": "Viết nội dung ẩn của bạn ở đây", + "compose_form.spoiler_placeholder": "Lời dẫn cho nội dung ẩn", "confirmation_modal.cancel": "Hủy bỏ", "confirmations.block.block_and_report": "Chặn & Báo cáo", "confirmations.block.confirm": "Chặn", @@ -166,7 +166,7 @@ "empty_column.blocks": "Bạn chưa chặn bất cứ ai.", "empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.", "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!", - "empty_column.direct": "Bạn chưa có tin nhắn nào. Khi bạn gửi hoặc nhận tin nhắn, nó sẽ hiển thị ở đây.", + "empty_column.conversations": "Khi bạn gửi hoặc nhận một tút chỉ hiển thị với những người được nhắc đến trong đó, tút đó sẽ hiển thị ở đây.", "empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.", "empty_column.explore_statuses": "Chưa có xu hướng nào. Kiểm tra lại sau!", "empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.", @@ -220,18 +220,18 @@ "home.column_settings.basic": "Tùy chỉnh", "home.column_settings.show_reblogs": "Hiện những lượt đăng lại", "home.column_settings.show_replies": "Hiện những tút dạng trả lời", - "home.hide_announcements": "Ẩn thông báo", - "home.show_announcements": "Hiện thông báo", + "home.hide_announcements": "Ẩn thông báo máy chủ", + "home.show_announcements": "Hiện thông báo máy chủ", "intervals.full.days": "{number, plural, other {# ngày}}", "intervals.full.hours": "{number, plural, other {# giờ}}", "intervals.full.minutes": "{number, plural, other {# phút}}", "keyboard_shortcuts.back": "trở lại", "keyboard_shortcuts.blocked": "mở danh sách người đã chặn", - "keyboard_shortcuts.boost": "Đăng lại", + "keyboard_shortcuts.boost": "đăng lại", "keyboard_shortcuts.column": "mở các mục", "keyboard_shortcuts.compose": "mở khung soạn tút", + "keyboard_shortcuts.conversations": "mở mục thảo luận", "keyboard_shortcuts.description": "Mô tả", - "keyboard_shortcuts.direct": "mở mục tin nhắn", "keyboard_shortcuts.down": "di chuyển xuống dưới danh sách", "keyboard_shortcuts.enter": "viết tút mới", "keyboard_shortcuts.favourite": "thích", @@ -244,11 +244,11 @@ "keyboard_shortcuts.local": "mở máy chủ của bạn", "keyboard_shortcuts.mention": "nhắc đến ai đó", "keyboard_shortcuts.muted": "mở danh sách người đã ẩn", - "keyboard_shortcuts.my_profile": "mở trang cá nhân của bạn", + "keyboard_shortcuts.my_profile": "mở hồ sơ của bạn", "keyboard_shortcuts.notifications": "mở mục thông báo", "keyboard_shortcuts.open_media": "mở ảnh hoặc video", "keyboard_shortcuts.pinned": "mở danh sách tút ghim", - "keyboard_shortcuts.profile": "mở trang cá nhân của người viết tút", + "keyboard_shortcuts.profile": "mở hồ sơ của người viết tút", "keyboard_shortcuts.reply": "trả lời", "keyboard_shortcuts.requests": "mở danh sách yêu cầu theo dõi", "keyboard_shortcuts.search": "mở tìm kiếm", @@ -290,10 +290,9 @@ "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", "navigation_bar.compose": "Viết tút mới", - "navigation_bar.direct": "Tin nhắn", "navigation_bar.discover": "Khám phá", "navigation_bar.domain_blocks": "Máy chủ đã ẩn", - "navigation_bar.edit_profile": "Trang cá nhân", + "navigation_bar.edit_profile": "Sửa hồ sơ", "navigation_bar.explore": "Xu hướng", "navigation_bar.favourites": "Thích", "navigation_bar.filters": "Bộ lọc từ ngữ", @@ -367,22 +366,22 @@ "poll_button.remove_poll": "Hủy cuộc bình chọn", "privacy.change": "Thay đổi quyền riêng tư", "privacy.direct.long": "Chỉ người được nhắc đến mới thấy", - "privacy.direct.short": "Nhắn riêng", + "privacy.direct.short": "Chỉ người tôi nhắc đến", "privacy.private.long": "Dành riêng cho người theo dõi", - "privacy.private.short": "Riêng tư", - "privacy.public.long": "Hiện trên bảng tin máy chủ", + "privacy.private.short": "Chỉ người theo dõi", + "privacy.public.long": "Hiển thị với mọi người", "privacy.public.short": "Công khai", - "privacy.unlisted.long": "Không hiện trên bảng tin máy chủ", + "privacy.unlisted.long": "Hiển thị với mọi người, nhưng không hiện trong tính năng khám phá", "privacy.unlisted.short": "Hạn chế", "refresh": "Làm mới", "regeneration_indicator.label": "Đang tải…", "regeneration_indicator.sublabel": "Bảng tin của bạn đang được cập nhật!", "relative_time.days": "{number} ngày", - "relative_time.full.days": "{number, plural, other {# ngày}} trước", - "relative_time.full.hours": "{number, plural, other {# giờ}} trước", + "relative_time.full.days": "{number, plural, other {# ngày}}", + "relative_time.full.hours": "{number, plural, other {# giờ}}", "relative_time.full.just_now": "vừa xong", - "relative_time.full.minutes": "{number, plural, other {# phút}} trước", - "relative_time.full.seconds": "{number, plural, other {# giây}} trước", + "relative_time.full.minutes": "{number, plural, other {# phút}}", + "relative_time.full.seconds": "{number, plural, other {#s}}", "relative_time.hours": "{number} giờ", "relative_time.just_now": "vừa xong", "relative_time.minutes": "{number} phút", @@ -414,9 +413,9 @@ "report.reasons.spam_description": "Liên kết độc hại, tạo tương tác giả hoặc trả lời lặp đi lặp lại", "report.reasons.violation": "Vi phạm quy tắc máy chủ", "report.reasons.violation_description": "Bạn nhận thấy nó vi phạm quy tắc máy chủ", - "report.rules.subtitle": "Chọn tất cả những áp dụng", + "report.rules.subtitle": "Chọn tất cả những gì phù hợp", "report.rules.title": "Vi phạm quy tắc nào?", - "report.statuses.subtitle": "Chọn tất cả những áp dụng", + "report.statuses.subtitle": "Chọn tất cả những gì phù hợp", "report.statuses.title": "Bạn muốn gửi tút nào kèm báo cáo này?", "report.submit": "Gửi đi", "report.target": "Báo cáo {target}", @@ -458,14 +457,14 @@ "status.filtered": "Bộ lọc", "status.history.created": "{name} tạo lúc {date}", "status.history.edited": "{name} sửa lúc {date}", - "status.load_more": "Xem thêm", + "status.load_more": "Tải thêm", "status.media_hidden": "Đã ẩn", "status.mention": "Nhắc đến @{name}", "status.more": "Thêm", "status.mute": "Ẩn @{name}", "status.mute_conversation": "Không quan tâm nữa", "status.open": "Xem nguyên văn", - "status.pin": "Ghim lên trang cá nhân", + "status.pin": "Ghim lên hồ sơ", "status.pinned": "Tút đã ghim", "status.read_more": "Đọc tiếp", "status.reblog": "Đăng lại", @@ -486,7 +485,7 @@ "status.show_thread": "Xem chuỗi tút này", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", - "status.unpin": "Bỏ ghim trên trang cá nhân", + "status.unpin": "Bỏ ghim trên hồ sơ", "suggestions.dismiss": "Tắt đề xuất", "suggestions.header": "Có thể bạn quan tâm…", "tabs_bar.federated_timeline": "Thế giới", @@ -515,6 +514,7 @@ "upload_error.poll": "Không cho phép đính kèm tập tin.", "upload_form.audio_description": "Mô tả cho người mất thính giác", "upload_form.description": "Mô tả cho người khiếm thị", + "upload_form.description_missing": "Chưa thêm mô tả", "upload_form.edit": "Biên tập", "upload_form.thumbnail": "Đổi ảnh thumbnail", "upload_form.undo": "Xóa bỏ", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 36a461aaf..8f10df753 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -70,7 +70,7 @@ "column.blocks": "ⵉⵏⵙⵙⵎⵔⵙⵏ ⵜⵜⵓⴳⴷⵍⵏⵉⵏ", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.direct": "Direct messages", + "column.conversations": "Conversations", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "ⵜⵓⴼⵓⵜⵉⵏ", @@ -92,8 +92,8 @@ "community.column_settings.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.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "ⵉⵜⵜⵓⵔⴳⵍ", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", - "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "ⵜⵓⵣⵉⵏⵉⵏ ⵜⵓⵙⵔⵉⴷⵉⵏ", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "ⵙⵙⵉⵜⵢ ⵉⴷⵣ", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "ⵜⵓⵔⴷⵉⵜ", + "privacy.direct.short": "Direct", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all, shown in public timelines", + "privacy.public.long": "Visible for all", "privacy.public.short": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ", - "privacy.unlisted.long": "Visible for all, but not in public timelines", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", "refresh": "Refresh", "regeneration_indicator.label": "ⴰⵣⴷⴰⵎ…", @@ -515,6 +514,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", "upload_form.edit": "ⵙⵏⴼⵍ", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "ⴽⴽⵙ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 97b7e6170..cee083975 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,6 +1,6 @@ { "account.account_note_header": "备注", - "account.add_or_remove_from_list": "从列表中添加或删除", + "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", "account.badges.group": "群组", "account.block": "屏蔽 @{name}", @@ -22,36 +22,36 @@ "account.following_counter": "正在关注 {counter} 人", "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", - "account.hide_reblogs": "隐藏来自 @{name} 的转嘟", + "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", - "account.link_verified_on": "此链接的所有权已在 {date} 检查", - "account.locked_info": "此账户已锁嘟。账户的主人会手动审核关注者。", + "account.link_verified_on": "此链接的所有权已在 {date} 被检查", + "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注申请。", "account.media": "媒体", "account.mention": "提及 @{name}", "account.moved_to": "{name} 已经迁移到:", "account.mute": "隐藏 @{name}", "account.mute_notifications": "隐藏来自 @{name} 的通知", "account.muted": "已隐藏", - "account.posts": "嘟文", - "account.posts_with_replies": "嘟文和回复", + "account.posts": "帖子", + "account.posts_with_replies": "帖子和回复", "account.report": "举报 @{name}", - "account.requested": "正在等待对方同意。点击以取消发送关注请求", - "account.share": "分享 @{name} 的个人资料", + "account.requested": "正在等待对方通过关注申请。点击以取消发送关注申请", + "account.share": "分享 @{name} 的用户简介", "account.show_reblogs": "显示来自 @{name} 的转嘟", "account.statuses_counter": "{counter} 条嘟文", - "account.unblock": "解除屏蔽 @{name}", + "account.unblock": "取消屏蔽 @{name}", "account.unblock_domain": "不再屏蔽 {domain} 实例", - "account.unblock_short": "移出黑名单", + "account.unblock_short": "取消屏蔽", "account.unendorse": "不在个人资料中推荐此用户", "account.unfollow": "取消关注", "account.unmute": "不再隐藏 @{name}", "account.unmute_notifications": "不再隐藏来自 @{name} 的通知", - "account.unmute_short": "恢复消息提醒", + "account.unmute_short": "取消静音", "account_note.placeholder": "点击添加备注", "admin.dashboard.daily_retention": "注册后用户留存率(按日计算)", "admin.dashboard.monthly_retention": "注册后用户留存率(按月计算)", "admin.dashboard.retention.average": "平均", - "admin.dashboard.retention.cohort": "注册月", + "admin.dashboard.retention.cohort": "注册月份", "admin.dashboard.retention.cohort_size": "新用户", "alert.rate_limited.message": "请在{retry_time, time, medium}后重试。", "alert.rate_limited.title": "频率受限", @@ -68,19 +68,19 @@ "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", "column.blocks": "已屏蔽的用户", - "column.bookmarks": "书签", + "column.bookmarks": "收藏夹", "column.community": "本站时间轴", - "column.direct": "私信", + "column.conversations": "会话", "column.directory": "浏览用户资料", - "column.domain_blocks": "已屏蔽的网站", + "column.domain_blocks": "已屏蔽的域名", "column.favourites": "喜欢", - "column.follow_requests": "关注请求", + "column.follow_requests": "关注申请", "column.home": "主页", "column.lists": "列表", "column.mutes": "已隐藏的用户", "column.notifications": "通知", - "column.pins": "置顶嘟文", - "column.public": "跨站公共时间轴", + "column.pins": "置顶帖子", + "column.public": "跨站时间轴", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", "column_header.moveLeft_settings": "将此栏左移", @@ -89,51 +89,51 @@ "column_header.show_settings": "显示设置", "column_header.unpin": "取消置顶", "column_subheading.settings": "设置", - "community.column_settings.local_only": "只显示本站", - "community.column_settings.media_only": "仅媒体", - "community.column_settings.remote_only": "只显示外站", - "compose_form.direct_message_warning": "这条嘟文仅对所有被提及的用户可见。", - "compose_form.direct_message_warning_learn_more": "了解详情", - "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。", - "compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", - "compose_form.lock_disclaimer.lock": "开启保护", - "compose_form.placeholder": "在想啥?", - "compose_form.poll.add_option": "添加选项", + "community.column_settings.local_only": "仅在本站显示", + "community.column_settings.media_only": "仅限媒体", + "community.column_settings.remote_only": "仅限外部", + "compose_form.direct_message_warning_learn_more": "了解更多", + "compose_form.encryption_warning": "Mastodon 上的嘟文并未端到端加密。请不要在 Mastodon 上分享敏感信息。", + "compose_form.hashtag_warning": "此帖子被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开帖子才能通过话题标签进行搜索。", + "compose_form.lock_disclaimer": "你的账号没有{locked}。任何人在关注你后都能立即查看仅关注者可见的帖子。", + "compose_form.lock_disclaimer.lock": "锁嘟", + "compose_form.placeholder": "在想些什么?", + "compose_form.poll.add_option": "添加一个选项", "compose_form.poll.duration": "投票持续时间", "compose_form.poll.option_placeholder": "选项 {number}", - "compose_form.poll.remove_option": "移除这个选项", + "compose_form.poll.remove_option": "移除此选项", "compose_form.poll.switch_to_multiple": "将投票改为多选", "compose_form.poll.switch_to_single": "将投票改为单选", "compose_form.publish": "嘟嘟", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "保存更改", - "compose_form.sensitive.hide": "标记媒体为敏感内容", + "compose_form.sensitive.hide": "将媒体标记为敏感内容", "compose_form.sensitive.marked": "媒体已被标记为敏感内容", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", - "compose_form.spoiler.marked": "正文已被折叠在警告信息之后", - "compose_form.spoiler.unmarked": "正文未被折叠", - "compose_form.spoiler_placeholder": "折叠部分的警告消息", + "compose_form.spoiler.marked": "移除内容警告", + "compose_form.spoiler.unmarked": "添加内容警告", + "compose_form.spoiler_placeholder": "在此处写下内容警告", "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", "confirmations.delete.confirm": "删除", - "confirmations.delete.message": "你确定要删除这条嘟文吗?", + "confirmations.delete.message": "你确定要删除这个帖子吗?", "confirmations.delete_list.confirm": "删除", - "confirmations.delete_list.message": "你确定要永久删除这个列表吗?", + "confirmations.delete_list.message": "你确定要永久删除此列表吗?", "confirmations.discard_edit_media.confirm": "丢弃", - "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?", - "confirmations.domain_block.confirm": "隐藏整个网站的内容", - "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。", + "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然要丢弃它们吗?", + "confirmations.domain_block.confirm": "隐藏所有来自此域名的内容", + "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该域名的内容将不再出现在你的公共时间轴或通知列表里。来自该域名的关注者将会被移除。", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "你确定要登出吗?", "confirmations.mute.confirm": "隐藏", "confirmations.mute.explanation": "这将隐藏他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。", "confirmations.mute.message": "你确定要隐藏 {name} 吗?", "confirmations.redraft.confirm": "删除并重新编辑", - "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。", + "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将失去与这条嘟文的关联。", "confirmations.reply.confirm": "回复", - "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", + "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。仍要继续吗?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", "conversation.delete": "删除对话", @@ -142,7 +142,7 @@ "conversation.with": "与 {names}", "directory.federated": "来自联邦宇宙的已知部分", "directory.local": "仅来自 {domain}", - "directory.new_arrivals": "新来者", + "directory.new_arrivals": "新用户", "directory.recently_active": "最近活跃", "embed.instructions": "要在你的网站上嵌入此嘟文,请复制以下代码。", "embed.preview": "它会像这样显示出来:", @@ -150,37 +150,37 @@ "emoji_button.custom": "自定义", "emoji_button.flags": "旗帜", "emoji_button.food": "食物和饮料", - "emoji_button.label": "加入表情符号", + "emoji_button.label": "插入表情符号", "emoji_button.nature": "自然", - "emoji_button.not_found": "木有这个表情符号!(╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "没有找到匹配的表情符号", "emoji_button.objects": "物体", "emoji_button.people": "人物", "emoji_button.recent": "常用", - "emoji_button.search": "搜索…", + "emoji_button.search": "搜索……", "emoji_button.search_results": "搜索结果", "emoji_button.symbols": "符号", "emoji_button.travel": "旅行和地点", - "empty_column.account_suspended": "账户被封禁", - "empty_column.account_timeline": "这里没有嘟文!", - "empty_column.account_unavailable": "个人资料不可用", - "empty_column.blocks": "你目前没有屏蔽任何用户。", - "empty_column.bookmarked_statuses": "你还没有给任何嘟文添加过书签。在你添加书签后,嘟文就会显示在这里。", + "empty_column.account_suspended": "账户已停用", + "empty_column.account_timeline": "这里没有帖子!", + "empty_column.account_unavailable": "用户资料不可用", + "empty_column.blocks": "你还未屏蔽任何用户。", + "empty_column.bookmarked_statuses": "你还未将任何帖子加入收藏夹。在你加入收藏夹后,帖子将显示在此。", "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", - "empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。", + "empty_column.conversations": "发送或收到仅对提及对象可见的嘟文后,就会显示在这里。", "empty_column.domain_blocks": "目前没有被隐藏的站点。", "empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!", - "empty_column.favourited_statuses": "你还没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。", + "empty_column.favourited_statuses": "你还未喜欢过任何帖子。当你喜欢帖子时,它将显示在此。", "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。", "empty_column.follow_recommendations": "似乎无法为你生成任何建议。你可以尝试使用搜索寻找你可能知道的人或探索热门标签。", - "empty_column.follow_requests": "你没有收到新的关注请求。收到了之后就会显示在这里。", + "empty_column.follow_requests": "你没有收到新的关注申请。收到后将显示在此。", "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你的主页时间线是空的!快去关注更多人吧。 {suggestions}", "empty_column.home.suggestions": "查看一些建议", - "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。", - "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", + "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会显示在这里。", + "empty_column.lists": "你还没有创建过列表。你创建的列表会显示在这里。", "empty_column.mutes": "你没有隐藏任何用户。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", - "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了", + "empty_column.public": "这里什么都没有!写一些公开帖子,或者关注来自其他服务器的用户后,这里就会有嘟文出现了", "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。", "error.unexpected_crash.explanation_addons": "此页面无法正确显示,这个错误很可能是由浏览器附加组件或自动翻译工具造成的。", "error.unexpected_crash.next_steps": "刷新一下页面试试。如果没用,你可以换个浏览器或者用本地应用。", @@ -188,17 +188,17 @@ "errors.unexpected_crash.copy_stacktrace": "把堆栈跟踪信息复制到剪贴板", "errors.unexpected_crash.report_issue": "报告问题", "explore.search_results": "搜索结果", - "explore.suggested_follows": "为您推荐", + "explore.suggested_follows": "为你推荐", "explore.title": "探索", - "explore.trending_links": "最新消息", - "explore.trending_statuses": "嘟文", + "explore.trending_links": "新闻", + "explore.trending_statuses": "帖子", "explore.trending_tags": "话题标签", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", - "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", - "follow_request.authorize": "同意", + "follow_recommendations.lead": "你关注的人的帖子将按时间顺序显示在你的主页。 别担心,你可以随时取消关注!", + "follow_request.authorize": "授权", "follow_request.reject": "拒绝", - "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核关注请求。", + "follow_requests.unlocked_explanation": "虽然你没有锁嘟,但是 {domain} 的管理人员觉得你可能想人工审核这些账号的关注申请。", "generic.saved": "已保存", "getting_started.developers": "开发", "getting_started.directory": "用户目录", @@ -212,10 +212,10 @@ "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", "hashtag.column_settings.select.no_options_message": "没有找到建议", - "hashtag.column_settings.select.placeholder": "输入话题标签…", + "hashtag.column_settings.select.placeholder": "输入话题标签……", "hashtag.column_settings.tag_mode.all": "全部", "hashtag.column_settings.tag_mode.any": "任一", - "hashtag.column_settings.tag_mode.none": "全都不要", + "hashtag.column_settings.tag_mode.none": "无一", "hashtag.column_settings.tag_toggle": "在此栏加入额外的标签", "home.column_settings.basic": "基本设置", "home.column_settings.show_reblogs": "显示转嘟", @@ -226,38 +226,38 @@ "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", "keyboard_shortcuts.back": "返回上一页", - "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", + "keyboard_shortcuts.blocked": "打开已屏蔽用户列表", "keyboard_shortcuts.boost": "转嘟", - "keyboard_shortcuts.column": "选择某一栏中的嘟文", - "keyboard_shortcuts.compose": "选择嘟文撰写框", + "keyboard_shortcuts.column": "选择某栏", + "keyboard_shortcuts.compose": "选择输入框", + "keyboard_shortcuts.conversations": "打开对话栏", "keyboard_shortcuts.description": "说明", - "keyboard_shortcuts.direct": "打开私信栏", "keyboard_shortcuts.down": "在列表中让光标下移", - "keyboard_shortcuts.enter": "展开嘟文", - "keyboard_shortcuts.favourite": "喜欢嘟文", - "keyboard_shortcuts.favourites": "打开喜欢的嘟文列表", + "keyboard_shortcuts.enter": "展开帖子", + "keyboard_shortcuts.favourite": "喜欢帖子", + "keyboard_shortcuts.favourites": "打开喜欢的帖子列表", "keyboard_shortcuts.federated": "打开跨站时间轴", "keyboard_shortcuts.heading": "快捷键列表", "keyboard_shortcuts.home": "打开主页时间轴", "keyboard_shortcuts.hotkey": "快捷键", "keyboard_shortcuts.legend": "显示此列表", "keyboard_shortcuts.local": "打开本站时间轴", - "keyboard_shortcuts.mention": "提及嘟文作者", + "keyboard_shortcuts.mention": "提及作者", "keyboard_shortcuts.muted": "打开已隐藏用户列表", "keyboard_shortcuts.my_profile": "打开你的个人资料", "keyboard_shortcuts.notifications": "打开通知栏", "keyboard_shortcuts.open_media": "打开媒体", - "keyboard_shortcuts.pinned": "打开置顶嘟文列表", + "keyboard_shortcuts.pinned": "打开置顶帖子列表", "keyboard_shortcuts.profile": "打开作者的个人资料", - "keyboard_shortcuts.reply": "回复嘟文", - "keyboard_shortcuts.requests": "打开关注请求列表", + "keyboard_shortcuts.reply": "回复帖子", + "keyboard_shortcuts.requests": "打开关注申请列表", "keyboard_shortcuts.search": "选择搜索框", "keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文", "keyboard_shortcuts.start": "打开“开始使用”栏", "keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文", "keyboard_shortcuts.toggle_sensitivity": "显示/隐藏媒体", - "keyboard_shortcuts.toot": "发送新嘟文", - "keyboard_shortcuts.unfocus": "取消输入", + "keyboard_shortcuts.toot": "发布新帖子", + "keyboard_shortcuts.unfocus": "取消输入/搜索", "keyboard_shortcuts.up": "在列表中让光标上移", "lightbox.close": "关闭", "lightbox.compress": "返回图片全览", @@ -279,68 +279,67 @@ "lists.subheading": "你的列表", "load_pending": "{count} 项", "loading_indicator.label": "加载中……", - "media_gallery.toggle_visible": "隐藏 {number} 张图片", + "media_gallery.toggle_visible": "隐藏图片", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", - "mute_modal.duration": "持续期间", - "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", + "mute_modal.duration": "持续时长", + "mute_modal.hide_notifications": "是否同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", "navigation_bar.apps": "移动应用", "navigation_bar.blocks": "已屏蔽的用户", - "navigation_bar.bookmarks": "书签", + "navigation_bar.bookmarks": "收藏夹", "navigation_bar.community_timeline": "本站时间轴", - "navigation_bar.compose": "撰写新嘟文", - "navigation_bar.direct": "私信", + "navigation_bar.compose": "撰写新帖子", "navigation_bar.discover": "发现", - "navigation_bar.domain_blocks": "已屏蔽的网站", + "navigation_bar.domain_blocks": "已屏蔽的域名", "navigation_bar.edit_profile": "修改个人资料", "navigation_bar.explore": "探索", "navigation_bar.favourites": "喜欢", "navigation_bar.filters": "隐藏关键词", - "navigation_bar.follow_requests": "关注请求", + "navigation_bar.follow_requests": "关注申请", "navigation_bar.follows_and_followers": "关注管理", - "navigation_bar.info": "关于本站", + "navigation_bar.info": "关于此服务", "navigation_bar.keyboard_shortcuts": "快捷键列表", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "已隐藏的用户", "navigation_bar.personal": "个人", - "navigation_bar.pins": "置顶嘟文", - "navigation_bar.preferences": "首选项", - "navigation_bar.public_timeline": "跨站公共时间轴", + "navigation_bar.pins": "置顶帖子", + "navigation_bar.preferences": "偏好", + "navigation_bar.public_timeline": "跨站时间轴", "navigation_bar.security": "安全", - "notification.admin.sign_up": "{name} 注册了", - "notification.favourite": "{name} 喜欢了你的嘟文", + "notification.admin.sign_up": "{name} 已被注册", + "notification.favourite": "{name} 喜欢了你的帖子", "notification.follow": "{name} 开始关注你", "notification.follow_request": "{name} 向你发送了关注请求", "notification.mention": "{name} 提及了你", "notification.own_poll": "你的投票已经结束", "notification.poll": "你参与的一个投票已经结束", - "notification.reblog": "{name} 转嘟了你的嘟文", - "notification.status": "{name} 刚刚发嘟", - "notification.update": "{name} 编辑了嘟文", + "notification.reblog": "{name} 转发了你的帖子", + "notification.status": "{name} 刚刚发帖", + "notification.update": "{name} 编辑了帖子", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", - "notifications.column_settings.favourite": "当你的嘟文被喜欢时:", + "notifications.column_settings.favourite": "喜欢:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", "notifications.column_settings.filter_bar.category": "快速过滤栏", "notifications.column_settings.filter_bar.show_bar": "显示过滤栏", - "notifications.column_settings.follow": "当有人关注你时:", - "notifications.column_settings.follow_request": "新的关注请求:", - "notifications.column_settings.mention": "当有人在嘟文中提及你时:", + "notifications.column_settings.follow": "新关注者:", + "notifications.column_settings.follow_request": "新关注申请:", + "notifications.column_settings.mention": "提及:", "notifications.column_settings.poll": "投票结果:", "notifications.column_settings.push": "推送通知", - "notifications.column_settings.reblog": "当有人转嘟了你的嘟文时:", + "notifications.column_settings.reblog": "转发:", "notifications.column_settings.show": "在通知栏显示", "notifications.column_settings.sound": "播放音效", - "notifications.column_settings.status": "新嘟文:", + "notifications.column_settings.status": "新帖:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", "notifications.column_settings.update": "编辑:", "notifications.filter.all": "全部", - "notifications.filter.boosts": "转嘟", + "notifications.filter.boosts": "转发", "notifications.filter.favourites": "喜欢", "notifications.filter.follows": "关注", "notifications.filter.mentions": "提及", @@ -349,61 +348,61 @@ "notifications.grant_permission": "授予权限", "notifications.group": "{count} 条通知", "notifications.mark_as_read": "将所有通知标为已读", - "notifications.permission_denied": "由于权限被拒绝,无法启用桌面通知。", + "notifications.permission_denied": "由于权限不可用,无法启用桌面通知。", "notifications.permission_denied_alert": "由于在此之前浏览器权限请求就已被拒绝,所以启用桌面通知失败", - "notifications.permission_required": "所需权限未被授予,所以桌面通知不可用", + "notifications.permission_required": "未授予所需权限,所以桌面通知不可用", "notifications_permission_banner.enable": "启用桌面通知", "notifications_permission_banner.how_to_control": "启用桌面通知以在 Mastodon 未打开时接收通知。你可以通过交互通过上面的 {icon} 按钮来精细控制可以发送桌面通知的交互类型。", "notifications_permission_banner.title": "精彩不容错过", "picture_in_picture.restore": "恢复", "poll.closed": "已关闭", "poll.refresh": "刷新", - "poll.total_people": "{count}人", + "poll.total_people": "{count} 人", "poll.total_votes": "{count} 票", "poll.vote": "投票", "poll.voted": "你已经对这个答案投过票了", "poll.votes": "{votes, plural, one {# 票} other {# 票}}", "poll_button.add_poll": "发起投票", "poll_button.remove_poll": "移除投票", - "privacy.change": "设置嘟文的可见范围", + "privacy.change": "设置帖子的可见范围", "privacy.direct.long": "只有被提及的用户能看到", - "privacy.direct.short": "私信", - "privacy.private.long": "只有关注你的用户能看到", - "privacy.private.short": "仅关注者", - "privacy.public.long": "所有人可见,并会出现在公共时间轴上", + "privacy.direct.short": "仅对提及的人可见", + "privacy.private.long": "仅关注者可见", + "privacy.private.short": "仅对关注者可见", + "privacy.public.long": "所有人可见", "privacy.public.short": "公开", - "privacy.unlisted.long": "所有人可见,但不会出现在公共时间轴上", - "privacy.unlisted.short": "不公开", + "privacy.unlisted.long": "对所有人可见,但不加入探索功能", + "privacy.unlisted.short": "非公开", "refresh": "刷新", "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", - "relative_time.days": "{number}天", + "relative_time.days": "{number} 天", "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", "relative_time.full.hours": "{number, plural, one {# 小时} other {# 小时}}前", "relative_time.full.just_now": "刚刚", "relative_time.full.minutes": "{number, plural, one {# 分钟} other {# 分钟}}前", "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", - "relative_time.hours": "{number}时", + "relative_time.hours": "{number} 时", "relative_time.just_now": "刚刚", - "relative_time.minutes": "{number}分", - "relative_time.seconds": "{number}秒", + "relative_time.minutes": "{number} 分", + "relative_time.seconds": "{number} 秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", "report.block": "屏蔽", - "report.block_explanation": "你不会看到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断他们被屏蔽了。", + "report.block_explanation": "你将看不到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断他们被屏蔽了。", "report.categories.other": "其他", "report.categories.spam": "垃圾信息", "report.categories.violation": "内容违反一条或多条服务器规则", "report.category.subtitle": "选择最佳匹配", "report.category.title": "告诉我们这个 {type} 的情况", "report.category.title_account": "个人资料", - "report.category.title_status": "嘟文", + "report.category.title_status": "帖子", "report.close": "完成", "report.comment.title": "还有什么你认为我们应该知道的吗?", "report.forward": "转发举报至 {target}", "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?", "report.mute": "静音", - "report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的嘟文,但他们不会知道他们被静音了。", + "report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的帖子,但他们不会知道他们被静音了。", "report.next": "下一步", "report.placeholder": "备注", "report.reasons.dislike": "我不喜欢它", @@ -417,7 +416,7 @@ "report.rules.subtitle": "选择所有适用选项", "report.rules.title": "哪些规则被违反了?", "report.statuses.subtitle": "选择所有适用选项", - "report.statuses.title": "是否有任何嘟文可以支持这一报告?", + "report.statuses.title": "有任何帖子可以支持此报告吗?", "report.submit": "提交", "report.target": "举报 {target}", "report.thanks.take_action": "以下是您控制您在 Mastodon 上能看到哪些内容的选项:", @@ -425,31 +424,31 @@ "report.thanks.title": "不想看到这个内容?", "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", "report.unfollow": "取消关注 @{name}", - "report.unfollow_explanation": "你正在关注这个账户。如果要想在你的主页上不再看到他们的嘟文,请取消对他们的关注。", + "report.unfollow_explanation": "你正在关注此账户。如果要想在你的主页上不再看到他们的帖子,取消对他们的关注即可。", "search.placeholder": "搜索", "search_popout.search_format": "高级搜索格式", - "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的嘟文,以及其他用户公开的用户名、昵称和话题标签。", + "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", "search_popout.tips.hashtag": "话题标签", - "search_popout.tips.status": "嘟文", + "search_popout.tips.status": "帖子", "search_popout.tips.text": "输入关键词检索昵称、用户名和话题标签", "search_popout.tips.user": "用户", "search_results.accounts": "用户", "search_results.all": "全部", "search_results.hashtags": "话题标签", "search_results.nothing_found": "无法找到符合这些搜索词的任何内容", - "search_results.statuses": "嘟文", - "search_results.statuses_fts_disabled": "此Mastodon服务器未启用嘟文内容搜索。", + "search_results.statuses": "帖子", + "search_results.statuses_fts_disabled": "此 Mastodon 服务器未启用帖子内容搜索。", "search_results.total": "共 {count, number} 个结果", "status.admin_account": "打开 @{name} 的管理界面", - "status.admin_status": "打开这条嘟文的管理界面", + "status.admin_status": "打开此帖的管理界面", "status.block": "屏蔽 @{name}", "status.bookmark": "添加到书签", - "status.cancel_reblog_private": "取消转嘟", - "status.cannot_reblog": "这条嘟文不允许被转嘟", - "status.copy": "复制嘟文链接", + "status.cancel_reblog_private": "取消转贴", + "status.cannot_reblog": "此贴不允许被转贴", + "status.copy": "复制帖子链接", "status.delete": "删除", - "status.detailed_status": "对话详情", - "status.direct": "发送私信给 @{name}", + "status.detailed_status": "详细的对话视图", + "status.direct": "私信 @{name}", "status.edit": "编辑", "status.edited": "编辑于 {date}", "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", @@ -464,14 +463,14 @@ "status.more": "更多", "status.mute": "隐藏 @{name}", "status.mute_conversation": "将此对话静音", - "status.open": "展开嘟文", + "status.open": "展开此贴", "status.pin": "在个人资料页面置顶", - "status.pinned": "置顶嘟文", - "status.read_more": "阅读全文", - "status.reblog": "转嘟", - "status.reblog_private": "转嘟(可见者不变)", - "status.reblogged_by": "{name} 转嘟了", - "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", + "status.pinned": "置顶帖子", + "status.read_more": "查看更多", + "status.reblog": "转贴", + "status.reblog_private": "转贴(可见者不变)", + "status.reblogged_by": "{name} 转贴了", + "status.reblogs.empty": "没有人转贴过此贴。如果有人转贴了将显示在此。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "移除书签", "status.reply": "回复", @@ -480,9 +479,9 @@ "status.sensitive_warning": "敏感内容", "status.share": "分享", "status.show_less": "隐藏内容", - "status.show_less_all": "隐藏所有内容", + "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", - "status.show_more_all": "显示所有内容", + "status.show_more_all": "显示全部内容", "status.show_thread": "显示全部对话", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "将此对话解除静音", @@ -491,7 +490,7 @@ "suggestions.header": "你可能会感兴趣…", "tabs_bar.federated_timeline": "跨站", "tabs_bar.home": "主页", - "tabs_bar.local_timeline": "本站", + "tabs_bar.local_timeline": "本地", "tabs_bar.notifications": "通知", "tabs_bar.search": "搜索", "time_remaining.days": "剩余 {number, plural, one {# 天} other {# 天}}", @@ -502,19 +501,20 @@ "timeline_hint.remote_resource_not_displayed": "不会显示来自其它服务器的 {resource}", "timeline_hint.resources.followers": "关注者", "timeline_hint.resources.follows": "关注", - "timeline_hint.resources.statuses": "更早的嘟文", + "timeline_hint.resources.statuses": "更早的帖子", "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}正在讨论", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "units.short.billion": "{count} B", + "units.short.million": "{count} M", + "units.short.thousand": "{count} K", "upload_area.title": "将文件拖放到此处开始上传", "upload_button.label": "上传图片、视频或音频", "upload_error.limit": "文件大小超过限制。", "upload_error.poll": "投票中不允许上传文件。", "upload_form.audio_description": "为听障人士添加文字描述", "upload_form.description": "为视觉障碍人士添加文字说明", + "upload_form.description_missing": "没有添加描述", "upload_form.edit": "编辑", "upload_form.thumbnail": "更改缩略图", "upload_form.undo": "删除", @@ -523,13 +523,13 @@ "upload_modal.apply": "应用", "upload_modal.applying": "正在应用…", "upload_modal.choose_image": "选择图像", - "upload_modal.description_placeholder": "天地玄黄 宇宙洪荒 日月盈仄 辰宿列张", + "upload_modal.description_placeholder": "快狐跨懒狗", "upload_modal.detect_text": "从图片中检测文本", "upload_modal.edit_media": "编辑媒体", "upload_modal.hint": "在预览图上点击或拖动圆圈,以选择缩略图的焦点。", - "upload_modal.preparing_ocr": "正在准备文字识别……", + "upload_modal.preparing_ocr": "正在准备文字识别…", "upload_modal.preview_label": "预览 ({ratio})", - "upload_progress.label": "上传中……", + "upload_progress.label": "上传中…", "video.close": "关闭视频", "video.download": "下载文件", "video.exit_fullscreen": "退出全屏", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index ba93b6aa1..9c309ebd7 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -70,7 +70,7 @@ "column.blocks": "封鎖名單", "column.bookmarks": "書籤", "column.community": "本站時間軸", - "column.direct": "個人訊息", + "column.conversations": "Conversations", "column.directory": "瀏覽個人資料", "column.domain_blocks": "封鎖的服務站", "column.favourites": "最愛的文章", @@ -92,8 +92,8 @@ "community.column_settings.local_only": "只顯示本站", "community.column_settings.media_only": "只顯示多媒體", "community.column_settings.remote_only": "只顯示外站", - "compose_form.direct_message_warning": "這文章只有被提及的使用者才可以看到。", "compose_form.direct_message_warning_learn_more": "了解更多", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。", "compose_form.lock_disclaimer": "你的用戶狀態沒有{locked},任何人都能立即關注你,然後看到「只有關注者能看」的文章。", "compose_form.lock_disclaimer.lock": "鎖定", @@ -166,7 +166,7 @@ "empty_column.blocks": "你還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。", "empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!", - "empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。", + "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", "empty_column.domain_blocks": "尚未隱藏任何網域。", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "你還沒收藏任何文章。這裡將會顯示你收藏的嘟文。", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "轉推", "keyboard_shortcuts.column": "把標示移動到其中一列", "keyboard_shortcuts.compose": "把標示移動到文字輸入區", + "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "描述", - "keyboard_shortcuts.direct": "開啟私訊欄", "keyboard_shortcuts.down": "在列表往下移動", "keyboard_shortcuts.enter": "打開文章", "keyboard_shortcuts.favourite": "收藏文章", @@ -290,7 +290,6 @@ "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新文章", - "navigation_bar.direct": "個人訊息", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "封鎖的服務站", "navigation_bar.edit_profile": "修改個人資料", @@ -367,12 +366,12 @@ "poll_button.remove_poll": "移除投票", "privacy.change": "調整私隱設定", "privacy.direct.long": "只有提及的使用者能看到", - "privacy.direct.short": "私人訊息", + "privacy.direct.short": "Direct", "privacy.private.long": "只有你的關注者能看到", - "privacy.private.short": "關注者", - "privacy.public.long": "在公共時間軸顯示", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", "privacy.public.short": "公共", - "privacy.unlisted.long": "公開,但不在公共時間軸顯示", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "公開", "refresh": "重新整理", "regeneration_indicator.label": "載入中……", @@ -515,6 +514,7 @@ "upload_error.poll": "不允許在投票上傳檔案。", "upload_form.audio_description": "簡單描述內容給聽障人士", "upload_form.description": "為視覺障礙人士添加文字說明", + "upload_form.description_missing": "No description added", "upload_form.edit": "編輯", "upload_form.thumbnail": "更改預覽圖", "upload_form.undo": "刪除", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index dae3dc1f1..06a52f053 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,19 +1,19 @@ { "account.account_note_header": "備註", - "account.add_or_remove_from_list": "從名單中新增或移除", + "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機器人", "account.badges.group": "群組", "account.block": "封鎖 @{name}", "account.block_domain": "封鎖來自 {domain} 網域的所有內容", "account.blocked": "已封鎖", - "account.browse_more_on_origin_server": "在該伺服器的個人檔案頁上瀏覽更多", + "account.browse_more_on_origin_server": "於該伺服器的個人檔案頁上瀏覽更多", "account.cancel_follow_request": "取消跟隨請求", "account.direct": "傳私訊給 @{name}", "account.disable_notifications": "取消來自 @{name} 嘟文的通知", "account.domain_blocked": "已封鎖網域", - "account.edit_profile": "編輯個人資料", + "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", - "account.endorse": "在個人資料推薦對方", + "account.endorse": "在個人檔案推薦對方", "account.follow": "跟隨", "account.followers": "跟隨者", "account.followers.empty": "尚未有人跟隨這位使用者。", @@ -36,13 +36,13 @@ "account.posts_with_replies": "嘟文與回覆", "account.report": "檢舉 @{name}", "account.requested": "正在等待核准。按一下以取消跟隨請求", - "account.share": "分享 @{name} 的個人資料", + "account.share": "分享 @{name} 的個人檔案", "account.show_reblogs": "顯示來自 @{name} 的嘟文", "account.statuses_counter": "{count, plural,one {{counter} 則}other {{counter} 則}}嘟文", "account.unblock": "取消封鎖 @{name}", "account.unblock_domain": "取消封鎖域名 {domain}", "account.unblock_short": "解除封鎖", - "account.unendorse": "不再於個人資料頁面推薦對方", + "account.unendorse": "不再於個人檔案頁面推薦對方", "account.unfollow": "取消跟隨", "account.unmute": "取消靜音 @{name}", "account.unmute_notifications": "重新接收來自 @{name} 的通知", @@ -53,7 +53,7 @@ "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "註冊月份", "admin.dashboard.retention.cohort_size": "新使用者", - "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試", + "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試。", "alert.rate_limited.title": "已限速", "alert.unexpected.message": "發生了非預期的錯誤。", "alert.unexpected.title": "哎呀!", @@ -69,14 +69,14 @@ "bundle_modal_error.retry": "重試", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", - "column.community": "本機時間軸", - "column.direct": "私訊", - "column.directory": "瀏覽個人資料", + "column.community": "本站時間軸", + "column.conversations": "對話", + "column.directory": "瀏覽個人檔案", "column.domain_blocks": "已封鎖的網域", "column.favourites": "最愛", "column.follow_requests": "跟隨請求", "column.home": "首頁", - "column.lists": "名單", + "column.lists": "列表", "column.mutes": "已靜音的使用者", "column.notifications": "通知", "column.pins": "釘選的嘟文", @@ -89,13 +89,13 @@ "column_header.show_settings": "顯示設定", "column_header.unpin": "取消釘選", "column_subheading.settings": "設定", - "community.column_settings.local_only": "只有本機", + "community.column_settings.local_only": "只有本站", "community.column_settings.media_only": "只有媒體", "community.column_settings.remote_only": "只有遠端", - "compose_form.direct_message_warning": "這條嘟文只有被提及的使用者才看得到。", "compose_form.direct_message_warning_learn_more": "了解更多", + "compose_form.encryption_warning": "Mastodon 上的嘟文並未端到端加密。請不要透過 Mastodon 分享任何敏感資訊。", "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。", - "compose_form.lock_disclaimer": "您的帳戶尚未{locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。", + "compose_form.lock_disclaimer": "您的帳戶尚未 {locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。", "compose_form.lock_disclaimer.lock": "上鎖", "compose_form.placeholder": "正在想些什麼嗎?", "compose_form.poll.add_option": "新增選項", @@ -116,26 +116,26 @@ "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.confirm": "封鎖", - "confirmations.block.message": "確定要封鎖 {name} 嗎?", + "confirmations.block.message": "您確定要封鎖 {name} ?", "confirmations.delete.confirm": "刪除", "confirmations.delete.message": "您確定要刪除這則嘟文?", "confirmations.delete_list.confirm": "刪除", - "confirmations.delete_list.message": "確定永久刪除此名單?", + "confirmations.delete_list.message": "您確定要永久刪除此列表?", "confirmations.discard_edit_media.confirm": "捨棄", "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?", "confirmations.domain_block.confirm": "隱藏整個域名", "confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳帳戶能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。", "confirmations.logout.confirm": "登出", - "confirmations.logout.message": "確定要登出嗎?", + "confirmations.logout.message": "您確定要登出嗎?", "confirmations.mute.confirm": "靜音", "confirmations.mute.explanation": "這將會隱藏來自他們的嘟文與通知,但是他們還是可以查閱您的嘟文與跟隨您。", - "confirmations.mute.message": "確定靜音 {name} ?", + "confirmations.mute.message": "您確定要靜音 {name} ?", "confirmations.redraft.confirm": "刪除並重新編輯", - "confirmations.redraft.message": "確定刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及最愛,且回覆這則的嘟文將會變成獨立的嘟文。", + "confirmations.redraft.message": "您確定要刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及最愛,且回覆這則的嘟文將會變成獨立的嘟文。", "confirmations.reply.confirm": "回覆", "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?", "confirmations.unfollow.confirm": "取消跟隨", - "confirmations.unfollow.message": "確定要取消跟隨 {name} 嗎?", + "confirmations.unfollow.message": "您確定要取消跟隨 {name} 嗎?", "conversation.delete": "刪除對話", "conversation.mark_as_read": "標記為已讀", "conversation.open": "檢視對話", @@ -162,11 +162,11 @@ "emoji_button.travel": "旅遊與地點", "empty_column.account_suspended": "帳戶被暫停", "empty_column.account_timeline": "這裡還沒有嘟文!", - "empty_column.account_unavailable": "無法取得個人資料", + "empty_column.account_unavailable": "無法取得個人檔案", "empty_column.blocks": "您還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書簽時,它將於此顯示。", - "empty_column.community": "本機時間軸是空的。快公開嘟些文搶頭香啊!", - "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", + "empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!", + "empty_column.conversations": "一旦您傳送或收到僅對其中提到之人可見的嘟文,就會在這邊顯示。", "empty_column.domain_blocks": "尚未封鎖任何網域。", "empty_column.explore_statuses": "目前沒有熱門討論,請稍候再回來看看!", "empty_column.favourited_statuses": "您還沒加過任何嘟文至最愛。當您收藏嘟文時,它將於此顯示。", @@ -176,8 +176,8 @@ "empty_column.hashtag": "這個主題標籤下什麼也沒有。", "empty_column.home": "您的首頁時間軸是空的!前往 {suggestions} 或使用搜尋功能來認識其他人。", "empty_column.home.suggestions": "檢視部份建議", - "empty_column.list": "這份名單還沒有東西。當此名單的成員嘟出了新的嘟文時,它們就會顯示於此。", - "empty_column.lists": "您還沒有建立任何名單。這裡將會顯示您所建立的名單。", + "empty_column.list": "這份列表下什麼也沒有。當此列表的成員嘟出了新的嘟文時,它們就會顯示於此。", + "empty_column.lists": "您還沒有建立任何列表。這裡將會顯示您所建立的列表。", "empty_column.mutes": "您尚未靜音任何使用者。", "empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。", "empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己跟隨其他伺服器的使用者後就會有嘟文出現了", @@ -194,14 +194,14 @@ "explore.trending_statuses": "嘟文", "explore.trending_tags": "主題標籤", "follow_recommendations.done": "完成", - "follow_recommendations.heading": "跟隨您想檢視其貼文的人!這裡有一些建議。", - "follow_recommendations.lead": "來自您跟隨的人的貼文將會按時間順序顯示在您的家 feed 上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", + "follow_recommendations.heading": "跟隨您想檢視其嘟文的人!這裡有一些建議。", + "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", "follow_request.authorize": "授權", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即便您的帳戶未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳戶的跟隨請求。", "generic.saved": "已儲存", "getting_started.developers": "開發者", - "getting_started.directory": "個人資料目錄", + "getting_started.directory": "個人檔案目錄", "getting_started.documentation": "文件", "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", @@ -230,70 +230,69 @@ "keyboard_shortcuts.boost": "轉嘟", "keyboard_shortcuts.column": "將焦點放在其中一欄的嘟文", "keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊", + "keyboard_shortcuts.conversations": "開啟對話欄", "keyboard_shortcuts.description": "說明", - "keyboard_shortcuts.direct": "開啟私訊欄", - "keyboard_shortcuts.down": "在名單中往下移動", + "keyboard_shortcuts.down": "在列表中往下移動", "keyboard_shortcuts.enter": "檢視嘟文", "keyboard_shortcuts.favourite": "加到最愛", - "keyboard_shortcuts.favourites": "開啟最愛名單", + "keyboard_shortcuts.favourites": "開啟最愛列表", "keyboard_shortcuts.federated": "開啟聯邦時間軸", "keyboard_shortcuts.heading": "鍵盤快速鍵", "keyboard_shortcuts.home": "開啟首頁時間軸", "keyboard_shortcuts.hotkey": "快速鍵", "keyboard_shortcuts.legend": "顯示此圖例", - "keyboard_shortcuts.local": "開啟本機時間軸", + "keyboard_shortcuts.local": "開啟本站時間軸", "keyboard_shortcuts.mention": "提及作者", - "keyboard_shortcuts.muted": "開啟靜音使用者名單", - "keyboard_shortcuts.my_profile": "開啟個人資料頁面", + "keyboard_shortcuts.muted": "開啟靜音使用者列表", + "keyboard_shortcuts.my_profile": "開啟個人檔案頁面", "keyboard_shortcuts.notifications": "開啟通知欄", "keyboard_shortcuts.open_media": "開啟媒體", - "keyboard_shortcuts.pinned": "開啟釘選的嘟文名單", - "keyboard_shortcuts.profile": "開啟作者的個人資料頁面", + "keyboard_shortcuts.pinned": "開啟釘選的嘟文列表", + "keyboard_shortcuts.profile": "開啟作者的個人檔案頁面", "keyboard_shortcuts.reply": "回應嘟文", - "keyboard_shortcuts.requests": "開啟跟隨請求名單", + "keyboard_shortcuts.requests": "開啟跟隨請求列表", "keyboard_shortcuts.search": "將焦點移至搜尋框", "keyboard_shortcuts.spoilers": "顯示或隱藏被折疊的正文", "keyboard_shortcuts.start": "開啟「開始使用」欄位", - "keyboard_shortcuts.toggle_hidden": "顯示/隱藏在內容警告之後的正文", - "keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體", + "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的正文", + "keyboard_shortcuts.toggle_sensitivity": "顯示或隱藏媒體", "keyboard_shortcuts.toot": "開始發出新嘟文", "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點", - "keyboard_shortcuts.up": "在名單中往上移動", + "keyboard_shortcuts.up": "在列表中往上移動", "lightbox.close": "關閉", "lightbox.compress": "折疊圖片檢視框", "lightbox.expand": "展開圖片檢視框", "lightbox.next": "下一步", "lightbox.previous": "上一步", - "lists.account.add": "新增至名單", - "lists.account.remove": "從名單中移除", - "lists.delete": "刪除名單", - "lists.edit": "編輯名單", + "lists.account.add": "新增至列表", + "lists.account.remove": "從列表中移除", + "lists.delete": "刪除列表", + "lists.edit": "編輯列表", "lists.edit.submit": "變更標題", - "lists.new.create": "新增名單", - "lists.new.title_placeholder": "新名單標題", + "lists.new.create": "新增列表", + "lists.new.title_placeholder": "新列表標題", "lists.replies_policy.followed": "任何跟隨的使用者", - "lists.replies_policy.list": "名單成員", + "lists.replies_policy.list": "列表成員", "lists.replies_policy.none": "沒有人", "lists.replies_policy.title": "顯示回覆:", "lists.search": "搜尋您跟隨的使用者", - "lists.subheading": "您的名單", + "lists.subheading": "您的列表", "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}", "loading_indicator.label": "讀取中...", "media_gallery.toggle_visible": "切換可見性", "missing_indicator.label": "找不到", "missing_indicator.sublabel": "找不到此資源", "mute_modal.duration": "持續時間", - "mute_modal.hide_notifications": "隱藏來自這位使用者的通知?", + "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", "navigation_bar.apps": "行動應用程式", "navigation_bar.blocks": "封鎖使用者", "navigation_bar.bookmarks": "書籤", - "navigation_bar.community_timeline": "本機時間軸", + "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新嘟文", - "navigation_bar.direct": "私訊", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "隱藏的網域", - "navigation_bar.edit_profile": "編輯個人資料", + "navigation_bar.edit_profile": "編輯個人檔案", "navigation_bar.explore": "探索", "navigation_bar.favourites": "最愛", "navigation_bar.filters": "靜音詞彙", @@ -301,7 +300,7 @@ "navigation_bar.follows_and_followers": "跟隨中與跟隨者", "navigation_bar.info": "關於此伺服器", "navigation_bar.keyboard_shortcuts": "快速鍵", - "navigation_bar.lists": "名單", + "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "靜音的使用者", "navigation_bar.personal": "個人", @@ -320,7 +319,7 @@ "notification.status": "{name} 剛剛嘟文", "notification.update": "{name} 編輯了嘟文", "notifications.clear": "清除通知", - "notifications.clear_confirmation": "確定要永久清除您的通知嗎?", + "notifications.clear_confirmation": "您確定要永久清除您的通知嗎?", "notifications.column_settings.admin.sign_up": "新註冊帳號:", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "最愛:", @@ -345,13 +344,13 @@ "notifications.filter.follows": "跟隨的使用者", "notifications.filter.mentions": "提及", "notifications.filter.polls": "投票結果", - "notifications.filter.statuses": "已跟隨使用者的最新動態", + "notifications.filter.statuses": "您跟隨的使用者之最新動態", "notifications.grant_permission": "授予權限", "notifications.group": "{count} 條通知", "notifications.mark_as_read": "將所有通知都標記為已讀", "notifications.permission_denied": "由於之前拒絕了瀏覽器請求,因此桌面通知不可用", - "notifications.permission_denied_alert": "因為之前瀏覽器權限被拒絕,無法啟用桌面通知", - "notifications.permission_required": "因為尚未授予所需的權限,所以桌面通知不可用。", + "notifications.permission_denied_alert": "由於之前瀏覽器權限被拒絕,無法啟用桌面通知", + "notifications.permission_required": "由於尚未授予所需的權限,所以桌面通知不可用。", "notifications_permission_banner.enable": "啟用桌面通知", "notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,您可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。", "notifications_permission_banner.title": "不要錯過任何東西!", @@ -367,30 +366,30 @@ "poll_button.remove_poll": "移除投票", "privacy.change": "調整嘟文隱私狀態", "privacy.direct.long": "只有被提及的使用者能看到", - "privacy.direct.short": "私訊", + "privacy.direct.short": "僅限於我提及的人", "privacy.private.long": "只有跟隨您的使用者能看到", - "privacy.private.short": "僅跟隨者", - "privacy.public.long": "公開,且顯示於公開時間軸", + "privacy.private.short": "僅限跟隨者", + "privacy.public.long": "對所有人可見", "privacy.public.short": "公開", - "privacy.unlisted.long": "公開,但不會顯示在公開時間軸", + "privacy.unlisted.long": "對所有人可見,但選擇退出探索功能", "privacy.unlisted.short": "不公開", "refresh": "重新整理", "regeneration_indicator.label": "載入中…", - "regeneration_indicator.sublabel": "您的主頁時間軸正在準備中!", + "regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!", "relative_time.days": "{number} 天", "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", "relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}}前", "relative_time.full.just_now": "剛剛", "relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}前", "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", - "relative_time.hours": "{number}小時前", + "relative_time.hours": "{number} 小時前", "relative_time.just_now": "剛剛", - "relative_time.minutes": "{number} 分前", + "relative_time.minutes": "{number} 分鐘前", "relative_time.seconds": "{number} 秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", "report.block": "封鎖", - "report.block_explanation": "您將不再看到他們的嘟文。他們將無法看到您的嘟文或是跟隨您。他們會被告知他們已被封鎖。", + "report.block_explanation": "您將不再看到他們的嘟文。他們將無法看到您的嘟文或是跟隨您。他們會發現他們已被封鎖。", "report.categories.other": "其他", "report.categories.spam": "垃圾訊息", "report.categories.violation": "內容違反一項或多項伺服器條款", @@ -401,7 +400,7 @@ "report.close": "已完成", "report.comment.title": "有什麼其他您想讓我們知道的嗎?", "report.forward": "轉寄到 {target}", - "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?", + "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?", "report.mute": "靜音", "report.mute_explanation": "您將不再看到他們的嘟文。他們仍能可以跟隨您以及察看您的嘟文,並且不會知道他們已被靜音。", "report.next": "繼續", @@ -425,7 +424,7 @@ "report.thanks.title": "不想再看到這個?", "report.thanks.title_actionable": "感謝您的檢舉,我們將會著手處理。", "report.unfollow": "取消跟隨 @{name}", - "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁再見到他們的嘟文,請取消跟隨。", + "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。", "search.placeholder": "搜尋", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳戶顯示名稱和主題標籤。", @@ -465,14 +464,14 @@ "status.mute": "靜音 @{name}", "status.mute_conversation": "靜音對話", "status.open": "展開此嘟文", - "status.pin": "釘選到個人資料頁", + "status.pin": "釘選到個人檔案頁面", "status.pinned": "釘選的嘟文", "status.read_more": "閱讀更多", "status.reblog": "轉嘟", "status.reblog_private": "轉嘟給原有關注者", "status.reblogged_by": "{name} 轉嘟了", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", - "status.redraft": "刪除 & 編輯", + "status.redraft": "刪除並重新編輯", "status.remove_bookmark": "移除書籤", "status.reply": "回覆", "status.replyAll": "回覆討論串", @@ -486,17 +485,17 @@ "status.show_thread": "顯示討論串", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", - "status.unpin": "從個人頁面解除釘選", + "status.unpin": "從個人檔案頁面解除釘選", "suggestions.dismiss": "關閉建議", "suggestions.header": "您可能對這些東西有興趣…", "tabs_bar.federated_timeline": "聯邦宇宙", "tabs_bar.home": "首頁", - "tabs_bar.local_timeline": "本機", + "tabs_bar.local_timeline": "本站", "tabs_bar.notifications": "通知", "tabs_bar.search": "搜尋", - "time_remaining.days": "剩餘{number, plural, one {# 天} other {# 天}}", - "time_remaining.hours": "剩餘{number, plural, one {# 小時} other {# 小時}}", - "time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}", + "time_remaining.days": "剩餘 {number, plural, one {# 天} other {# 天}}", + "time_remaining.hours": "剩餘 {number, plural, one {# 小時} other {# 小時}}", + "time_remaining.minutes": "剩餘 {number, plural, one {# 分鐘} other {# 分鐘}}", "time_remaining.moments": "剩餘時間", "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}", "timeline_hint.remote_resource_not_displayed": "不會顯示來自其他伺服器的 {resource}", @@ -504,7 +503,7 @@ "timeline_hint.resources.follows": "正在跟隨", "timeline_hint.resources.statuses": "更早的嘟文", "trends.counter_by_accounts": "{count, plural,one {{counter} 人}other {{counter} 人}}正在討論", - "trends.trending_now": "目前趨勢", + "trends.trending_now": "現正熱門", "ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -515,10 +514,11 @@ "upload_error.poll": "不允許在投票中上傳檔案。", "upload_form.audio_description": "描述內容給聽障人士", "upload_form.description": "為視障人士增加文字說明", + "upload_form.description_missing": "沒有任何描述", "upload_form.edit": "編輯", "upload_form.thumbnail": "更改預覽圖", "upload_form.undo": "刪除", - "upload_form.video_description": "描述給聽障或視障人士", + "upload_form.video_description": "描述內容給聽障或視障人士", "upload_modal.analyzing_picture": "正在分析圖片…", "upload_modal.apply": "套用", "upload_modal.applying": "正在套用⋯⋯", diff --git a/app/javascript/mastodon/reducers/status_lists.js b/app/javascript/mastodon/reducers/status_lists.js index 49bc94a40..a7c56cc19 100644 --- a/app/javascript/mastodon/reducers/status_lists.js +++ b/app/javascript/mastodon/reducers/status_lists.js @@ -21,6 +21,9 @@ import { TRENDS_STATUSES_FETCH_REQUEST, TRENDS_STATUSES_FETCH_SUCCESS, TRENDS_STATUSES_FETCH_FAIL, + TRENDS_STATUSES_EXPAND_REQUEST, + TRENDS_STATUSES_EXPAND_SUCCESS, + TRENDS_STATUSES_EXPAND_FAIL, } from '../actions/trends'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { @@ -111,11 +114,15 @@ export default function statusLists(state = initialState, action) { case BOOKMARKED_STATUSES_EXPAND_SUCCESS: return appendToList(state, 'bookmarks', action.statuses, action.next); case TRENDS_STATUSES_FETCH_REQUEST: + case TRENDS_STATUSES_EXPAND_REQUEST: return state.setIn(['trending', 'isLoading'], true); case TRENDS_STATUSES_FETCH_FAIL: + case TRENDS_STATUSES_EXPAND_FAIL: return state.setIn(['trending', 'isLoading'], false); case TRENDS_STATUSES_FETCH_SUCCESS: return normalizeList(state, 'trending', action.statuses, action.next); + case TRENDS_STATUSES_EXPAND_SUCCESS: + return appendToList(state, 'trending', action.statuses, action.next); case FAVOURITE_SUCCESS: return prependOneToList(state, 'favourites', action.status); case UNFAVOURITE_SUCCESS: diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js index b66c19fd5..d72109e69 100644 --- a/app/javascript/mastodon/reducers/timelines.js +++ b/app/javascript/mastodon/reducers/timelines.js @@ -16,7 +16,7 @@ import { ACCOUNT_MUTE_SUCCESS, ACCOUNT_UNFOLLOW_SUCCESS, } from '../actions/accounts'; -import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; +import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable'; import compareId from '../compare_id'; const initialState = ImmutableMap(); @@ -32,6 +32,13 @@ const initialTimeline = ImmutableMap({ }); const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, isLoadingRecent, usePendingItems) => { + // This method is pretty tricky because: + // - existing items in the timeline might be out of order + // - the existing timeline may have gaps, most often explicitly noted with a `null` item + // - ideally, we don't want it to reorder existing items of the timeline + // - `statuses` may include items that are already included in the timeline + // - this function can be called either to fill in a gap, or load newer items + return state.update(timeline, initialTimeline, map => map.withMutations(mMap => { mMap.set('isLoading', false); mMap.set('isPartial', isPartial); @@ -46,15 +53,42 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is mMap.update(usePendingItems ? 'pendingItems' : 'items', ImmutableList(), oldIds => { const newIds = statuses.map(status => status.get('id')); - const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1; - const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0); + // Now this gets tricky, as we don't necessarily know for sure where the gap to fill is + // and some items in the timeline may not be properly ordered. - if (firstIndex < 0) { - return (isPartial ? newIds.unshift(null) : newIds).concat(oldIds.skip(lastIndex)); + // However, we know that `newIds.last()` is the oldest item that was requested and that + // there is no “hole” between `newIds.last()` and `newIds.first()`. + + // First, find the furthest (if properly sorted, oldest) item in the timeline that is + // newer than the oldest fetched one, as it's most likely that it delimits the gap. + // Start the gap *after* that item. + const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1; + + // Then, try to find the furthest (if properly sorted, oldest) item in the timeline that + // is newer than the most recent fetched one, as it delimits a section comprised of only + // items older or within `newIds` (or that were deleted from the server, so should be removed + // anyway). + // Stop the gap *after* that item. + const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0) + 1; + + let insertedIds = ImmutableOrderedSet(newIds).withMutations(insertedIds => { + // It is possible, though unlikely, that the slice we are replacing contains items older + // than the elements we got from the API. Get them and add them back at the back of the + // slice. + const olderIds = oldIds.slice(firstIndex, lastIndex).filter(id => id !== null && compareId(id, newIds.last()) < 0); + insertedIds.union(olderIds); + + // Make sure we aren't inserting duplicates + insertedIds.subtract(oldIds.take(firstIndex), oldIds.skip(lastIndex)); + }).toList(); + + // Finally, insert a gap marker if the data is marked as partial by the server + if (isPartial && (firstIndex === 0 || oldIds.get(firstIndex - 1) !== null)) { + insertedIds = insertedIds.unshift(null); } - return oldIds.take(firstIndex + 1).concat( - isPartial && oldIds.get(firstIndex) !== null ? newIds.unshift(null) : newIds, + return oldIds.take(firstIndex).concat( + insertedIds, oldIds.skip(lastIndex), ); }); @@ -137,6 +171,17 @@ const updateTop = (state, timeline, top) => { })); }; +const reconnectTimeline = (state, usePendingItems) => { + if (state.get('online')) { + return state; + } + + return state.withMutations(mMap => { + mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items); + mMap.set('online', true); + }); +}; + export default function timelines(state = initialState, action) { switch(action.type) { case TIMELINE_LOAD_PENDING: @@ -162,7 +207,7 @@ export default function timelines(state = initialState, action) { case TIMELINE_SCROLL_TOP: return updateTop(state, action.timeline, action.top); case TIMELINE_CONNECT: - return state.update(action.timeline, initialTimeline, map => map.set('online', true)); + return state.update(action.timeline, initialTimeline, map => reconnectTimeline(map, action.usePendingItems)); case TIMELINE_DISCONNECT: return state.update( action.timeline, diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss index 34852178e..18fe522eb 100644 --- a/app/javascript/styles/mailer.scss +++ b/app/javascript/styles/mailer.scss @@ -435,6 +435,10 @@ h5 { background: $success-green; } + &.warning-icon td { + background: $gold-star; + } + &.alert-icon td { background: $error-red; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 442ffd2c0..694f5e928 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4053,7 +4053,7 @@ a.status-card.compact:hover { } & > span { - max-width: 400px; + max-width: 500px; } a { @@ -5598,7 +5598,7 @@ a.status-card.compact:hover { .loading-bar { background-color: $highlight-text-color; height: 3px; - position: absolute; + position: fixed; top: 0; left: 0; z-index: 9999; diff --git a/app/javascript/styles/win95.scss b/app/javascript/styles/win95.scss index fdf2e59b6..66d451303 100644 --- a/app/javascript/styles/win95.scss +++ b/app/javascript/styles/win95.scss @@ -9,6 +9,7 @@ $win95-mid-grey: #808080; $win95-window-header: #00007f; $win95-tooltip-yellow: #ffffcc; $win95-blue: blue; +$win95-cyan: #008080; $ui-base-lighter-color: $win95-dark-grey; $ui-highlight-color: $win95-window-header; @@ -21,6 +22,12 @@ $ui-highlight-color: $win95-window-header; border-radius:0px; } +@mixin win95-border-outset-sides-only() { + border-left: 2px solid #efefef; + border-right: 2px solid #404040; + border-radius:0px; +} + @mixin win95-outset() { box-shadow: inset -1px -1px 0px #000000, inset 1px 1px 0px #ffffff, @@ -29,6 +36,12 @@ $ui-highlight-color: $win95-window-header; border-radius:0px; } +@mixin win95-outset-no-highlight() { + box-shadow: inset -1px -1px 0px #000000, + inset -2px -2px 0px #808080; + border-radius:0px; +} + @mixin win95-border-inset() { border-left: 2px solid #404040; border-top: 2px solid #404040; @@ -54,6 +67,7 @@ $ui-highlight-color: $win95-window-header; border-radius:0px; } + @mixin win95-tab() { box-shadow: inset -1px 0px 0px #000000, inset 1px 0px 0px #ffffff, @@ -66,8 +80,14 @@ $ui-highlight-color: $win95-window-header; border-top-right-radius: 1px; } +@mixin win95-border-groove() { + border-radius: 0px; + border: 2px groove #bfbfbf; +} + @mixin win95-reset() { box-shadow: unset; + border: 0px solid transparent; } @font-face { @@ -80,49 +100,98 @@ $ui-highlight-color: $win95-window-header; /* borrowed from cybrespace style: wider columns and full column width images */ @media screen and (min-width: 1300px) { - .column { - flex-grow: 1 !important; - max-width: 400px; - } - .drawer { - width: 17%; + width: 17%; /* Not part of the flex fun */ max-width: 400px; min-width: 330px; } + .layout-multiple-columns .column { + flex-grow: 1 !important; + max-width: 400px; + } } -.media-gallery, -.video-player { - max-height:30vh; - height:30vh !important; +/* Don't show outline around statuses if we're in + * mouse or touch mode (rather than keyboard) */ +[data-whatinput="mouse"], [data-whatinput="touch"] { + .status__content:focus, .status:focus, + .status__wrapper:focus, .status__content__text:focus { + outline: none; + } +} + +/* Less emphatic show more */ +.status__content__read-more-button { + font-size: 14px; + color: $dark-text-color; + + .status__prepend-icon { + padding-right: 4px; + } +} + +/* Show a little arrowey thing after the time in a + * status to signal that you can click it to see + * a detailed view */ +.status time:after, +.detailed-status__datetime span:after { + font: normal normal normal 14px/1 FontAwesome; + content: "\00a0\00a0\f08e"; +} + +/* Don't display the elephant mascot (we have our + * own, thanks) */ +.drawer__inner__mastodon { + display: none; +} + +/* Let the compose area/drawer be short, but + * expand if necessary */ +.drawer .drawer__inner { + overflow: visible; + height:inherit; + background-image: none; +} +.drawer__pager { + overflow-y:auto; +} + +/* Put a reasonable background on the single-column compose form */ +.layout-single-column .compose-panel { + background-color: $ui-base-color; + height: auto; + max-height: 100%; + overflow-y: visible; + margin-top: 65px; +} + +/* Better distinguish the search bar */ +.layout-single-column .compose-panel .search { position:relative; - margin-top:20px; - margin-left:-68px; - width: calc(100% + 80px) !important; - max-width: calc(100% + 80px); + top: -55px; + margin-bottom: -55px; } -.detailed-status .media-gallery, -.detailed-status .video-player { - margin-left:-5px; - width: calc(100% + 9px); - max-width: calc(100% + 9px); +/* Use display: none instead of visibility:hidden + * to hide the suggested follows list on non-mobile */ +@media screen and (min-width: 630px) { + .search-results .trends { + display:none; + } } -.video-player video { - transform: unset; - top: unset; -} - -.detailed-status .media-spoiler, -.status .media-spoiler { - height: 100%!important; - vertical-align: middle; +/* Don't display the weird triangles on the modal layout, + * because they look strange on cybrespace themes. */ +.modal-layout__mastodon { + display:none; } /* main win95 style */ +html { + scrollbar-color: $win95-mid-grey transparent; +} + body { font-size:13px; font-family: "MS Sans Serif", "premillenium", sans-serif; @@ -132,7 +201,7 @@ body { .ui, .ui .columns-area, body.admin { - background: #008080; + background: $win95-cyan; } .loading-bar { @@ -140,6 +209,10 @@ body.admin { background-color: #000080; } +.tabs-bar__wrapper { + background-color: $win95-cyan; +} + .tabs-bar { background: $win95-bg; @include win95-outset(); @@ -214,10 +287,6 @@ body.admin { z-index:2; } -.column { - max-height:100vh; -} - .column > .scrollable { background: $win95-bg; @include win95-border-outset(); @@ -231,7 +300,7 @@ body.admin { } .column-header { - padding:2px; + padding:0px; font-size:13px; background:#7f7f7f; @include win95-border-outset(); @@ -239,6 +308,12 @@ body.admin { color:white; font-weight:bold; align-items:baseline; + min-height: 24px; +} + +.column-header > button { + padding: 0px; + min-height: 22px; } .column-header__wrapper.active { @@ -259,18 +334,22 @@ body.admin { .column-header__buttons { max-height: 20px; - margin-right:0px; + margin: 2px; + margin-left: -2px; +} + +.column-header__buttons button { + margin-left: 2px; } .column-header__button { background: $win95-bg; color: black; + @include win95-outset(); + line-height:0px; font-size:14px; - max-height:20px; - padding:0px 2px; - margin-top:2px; - @include win95-outset(); + padding:0px 4px; &:hover { color: black; @@ -282,24 +361,34 @@ body.admin { background-color:#7f7f7f; } -.column-header__back-button { +// selectivity -- needs to override .column-header > button +.column-header .column-header__back-button { background: $win95-bg; color: black; padding:2px; - max-height:20px; - margin-top:2px; + padding-right: 4px; + max-height: 20px; + min-height: unset; + margin: 2px; @include win95-outset(); - font-size:13px; + font-size: 13px; + line-height: 17px; font-weight:bold; } +.column-header__buttons .column-header__back-button { + margin: 0; +} + .column-back-button { background:$win95-bg; color:black; @include win95-outset(); - padding:2px; font-size:13px; font-weight:bold; + + padding: 2px; + height: 26px; } .column-back-button--slim-button { @@ -307,8 +396,8 @@ body.admin { top:-22px; right:4px; max-height:20px; - max-width:60px; - padding:0px 2px; + padding: 1px 6px 0 2px; + box-sizing: border-box; } .column-back-button__icon { @@ -331,10 +420,9 @@ body.admin { } .column-header__collapsible__extra div[role="group"] { - border: 2px groove $win95-bg; - border-radius:4px; - margin-bottom:8px; - padding:4px; + border: 2px groove #eee; + margin-bottom: 11px; + padding: 4px; } .column-inline-form { @@ -342,19 +430,37 @@ body.admin { @include win95-border-outset(); border-bottom-width:0px; border-top-width:0px; + + align-items: baseline; +} + +.column-inline-form .icon-button { + font-size: 14px!important; + line-height: 17px!important; +} + +.column-inline-form .setting-text { + line-height: 17px; + padding-left: 4px; } .column-settings__section { color:black; font-weight:bold; font-size:11px; - position:relative; - top: -12px; - left:4px; - background-color:$win95-bg; +} + +[role="group"] .column-settings__section { display:inline-block; - padding:0px 4px; - margin-bottom:0px; + background-color:$win95-bg; + position:relative; + + top: -14px; + top: calc(-1em - 0.5ex); + left: 4px; + + padding: 0px 4px; + margin-bottom: 0px; } .setting-meta__label, .setting-toggle__label { @@ -448,8 +554,7 @@ body.admin { } .missing-indicator > div { - background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAF3pUWHRUaXRsZQAACJnLyy9Jyy/NSwEAD5IDblIFOhoAAAAXelRYdEF1dGhvcgAACJlLzijKz0vMAQALmgLoDsFj8gAAAQpJREFUOMuVlD0OwjAMhd2oQl04Axfo0IGBgYELcAY6cqQuSO0ZOEAZGBg6VKg74gwsEaoESRVHjusI8aQqzY8/PbtOEz1qkFSn2YevlaNOpLMJh2DwvixhuXtOa6/LCh51DUMEFkAsgAZD207Doin8mQ562JpRE5CHBAAhmIqD1L8AqzUUUJkxc6kr3AgAJ+NuvIWRdk7WcrKl0AUqcIBBHOiEbpS4m27mIL5Onfg3k0rgggeQuS2sDOGSahKR+glgqaGLgUJs951NN1q9D72cQqQWR9cr3sm9YcEssEuz6eEuZh2bu0aSOhQ1MBezu2O/+TVSvEFII3qLsZWrSA2AAUQIh1HpyP/kC++zjVSMj6ntAAAAAElFTkSuQmCC') - no-repeat; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAF3pUWHRUaXRsZQAACJnLyy9Jyy/NSwEAD5IDblIFOhoAAAAXelRYdEF1dGhvcgAACJlLzijKz0vMAQALmgLoDsFj8gAAAQpJREFUOMuVlD0OwjAMhd2oQl04Axfo0IGBgYELcAY6cqQuSO0ZOEAZGBg6VKg74gwsEaoESRVHjusI8aQqzY8/PbtOEz1qkFSn2YevlaNOpLMJh2DwvixhuXtOa6/LCh51DUMEFkAsgAZD207Doin8mQ562JpRE5CHBAAhmIqD1L8AqzUUUJkxc6kr3AgAJ+NuvIWRdk7WcrKl0AUqcIBBHOiEbpS4m27mIL5Onfg3k0rgggeQuS2sDOGSahKR+glgqaGLgUJs951NN1q9D72cQqQWR9cr3sm9YcEssEuz6eEuZh2bu0aSOhQ1MBezu2O/+TVSvEFII3qLsZWrSA2AAUQIh1HpyP/kC++zjVSMj6ntAAAAAElFTkSuQmCC') no-repeat; background-position:center center; } @@ -459,6 +564,34 @@ body.admin { color: black; } +.notification__filter-bar { + background: $win95-bg; + @include win95-border-outset-sides-only(); + padding-top: 10px; + padding-left: 10px; + padding-right: 10px; + border-bottom: 2px solid #efefef; + overflow-y: visible; + + button { + background: transparent; + color: black; + padding: 8px 0; + align-self: end; + @include win95-tab(); + + &.active { + color: black; + top: 2px; + background-color: $win95-bg; + + &::before, &::after { + display:none; + } + } + } +} + .status__wrapper { border: 2px groove $win95-bg; margin:4px; @@ -473,11 +606,37 @@ body.admin { } .status.status-direct { - background-color:$win95-bg; + background:$win95-bg; + &:focus, &:active { + background:$win95-bg; + } + + &:not(.read) { + background: white; + } +} +.focusable:focus .status.status-direct { + background:$win95-bg; } -.status__content { +[data-whatinput="mouse"], [data-whatinput="touch"] { + .status__content:focus, .status:focus, + .status__wrapper:focus, .status__content__text:focus { + background-color: $win95-bg; + } + + .status.status-direct, .detailed-status { + &:not(.read) { + .status__content:focus { + background-color: white; + } + } + } +} + +.status__content, .reply-indicator__content { font-size:13px; + color: black; } .status.light .status__relative-time, @@ -573,6 +732,7 @@ body.admin { justify-items:left; padding-left:4px; } + .icon-button { background:$win95-bg; @include win95-border-outset(); @@ -636,15 +796,15 @@ body.admin { padding-right:25px; } -.status-card { +.status-card, .status-card.compact, a.status-card, a.status-card.compact { border-radius:0px; background:white; border: 1px solid black; color:black; -} -.status-card:hover { - background-color:white; + &:hover { + background-color:white; + } } .status-card__title { @@ -681,7 +841,7 @@ body.admin { } .account { - border-bottom: 2px groove $win95-bg; + border-bottom: none; } .reply-indicator__content .status__content__spoiler-link, .status__content .status__content__spoiler-link { @@ -715,6 +875,7 @@ body.admin { font-weight:bold; } + .drawer__header { background: $win95-bg; @include win95-border-outset(); @@ -819,6 +980,23 @@ body.admin { color:blue; } +.search-results__section h5:before { + display: none; +} + +.search-results__section h5 { + background: #bfbfbf; + span { + color: black; + padding: 0px 2px; + } +} + +.search-results__section { + border: 3px groove white; + margin: 11px 6px 9px 3px; +} + .search-results__section .account:hover, .search-results__section .account:hover .account__display-name, .search-results__section .account:hover .account__display-name strong, @@ -839,6 +1017,11 @@ body.admin { } } +.trends__item__name a, +.trends__item__current { + color: black; +} + .drawer__inner, .drawer__inner.darker { background-color:$win95-bg; @@ -893,6 +1076,10 @@ body.admin { border-left: 2px groove $win95-bg; } +.compose-form__poll-wrapper .icon-button.disabled { + color: $win95-mid-grey; +} + .privacy-dropdown.active .privacy-dropdown__value.active, .advanced-options-dropdown.open .advanced-options-dropdown__value { background: $win95-bg; @@ -932,32 +1119,34 @@ body.admin { font-weight:bold; } -.compose-form__warning::before { - content:"Tip:"; - font-weight:bold; - display:block; - position:absolute; - top:-10px; - background-color:$win95-bg; - font-size:11px; - padding: 0px 5px; -} +.compose-form { + .compose-form__warning::before { + content:"Tip:"; + font-weight:bold; + display:block; + position:absolute; + top:-10px; + background-color:$win95-bg; + font-size:11px; + padding: 0px 5px; + } -.compose-form__warning { - position:relative; - box-shadow:unset; - border:2px groove $win95-bg; - background-color:$win95-bg; - color:black; -} + .compose-form__warning { + position:relative; + box-shadow:unset; + border:2px groove $win95-bg; + background-color:$win95-bg; + color:black; + } -.compose-form__warning a { - color:blue; -} + .compose-form__warning a { + color:blue; + } -.compose-form__warning strong { - color:black; - text-decoration:underline; + .compose-form__warning strong { + color:black; + text-decoration:underline; + } } .compose-form__buttons button.active:last-child { @@ -1052,44 +1241,8 @@ body.admin { } -#Getting-started { - background-color:$win95-bg; - @include win95-inset(); - border-bottom-width:0px; -} - -#Getting-started::before { - content:"Start"; - color:black; - font-weight:bold; - font-size:15px; - width:80%; - text-align:center; - display:block; - position:absolute; - right:2px; -} - -#Getting-started { - position:relative; - padding:5px 15px; - width:60px; - font-size:0px; - color:$win95-bg; - - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAIAAACpTQvdAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAF3pUWHRBdXRob3IAAAiZS84oys9LzAEAC5oC6A7BY/IAAACWSURBVCiRhVJJDsQgDEuqOfRZ7a1P5gbP4uaJaEjTADMWQhHYjlk4p0wLnNdptdF4KvBUDyGzVwc2xO+uKtH+1o0ytEEmqFpuxlvFCGCxKbNIT56QCi2MzaA/2Mz+mERSOeqzJG2RUxkjdTabgPtFoZ1bZxcKvgPcLZVufAyR9Ni8v5dWDzfFx0giC1RvZFv6l35QQ/Mvv39XXgGzQpoAAAAASUVORK5CYII="); - background-repeat:no-repeat; - background-position:8%; - background-clip:padding-box; - background-size:auto 50%; -} - -.column-subheading { - background-color:$win95-bg; - color:black; - border-bottom: 2px groove $win95-bg; - text-transform: none; - font-size: 16px; +.button.button-secondary { + background-color: $win95-bg; } .column-link { @@ -1101,18 +1254,82 @@ body.admin { } } +.column-link__badge { + background-image: url('~images/alert_badge.png'); + background-repeat: no-repeat; + background-size:contain; + background-color:transparent; + border-radius:0; + box-sizing: border-box; + width: 24px; + height:24px; + padding-top:4px; + padding-left:0px; + padding-right:1px; + text-align:center; + position:relative; + top:2px; +} + +.column-link:hover .column-link__badge { + color:black; +} + +.column-subheading { + background-color:$win95-bg; + color:black; + @include win95-border-outset-sides-only; +} + +.column { + overflow-y:auto; +} + +.getting-started { + background: none; + position:relative; + top:-30px; + padding-top:30px; + z-index:10; + overflow-y:auto; + background-color: $win95-cyan; +} + .getting-started__wrapper { + padding-top:0px; + + box-shadow: inset -1px 0px 0px #000000, + inset 1px 1px 0px #ffffff, + inset -2px 0px 0px #808080, + inset 2px 2px 0px #dfdfdf; + border-radius:0px; + + background-color:$win95-bg; + border-bottom: 2px groove $win95-bg; + + height: unset !important; + + .navigation-bar { + padding-left: 45px; + } + .column-subheading { font-size:0px; margin:0px; padding:0px; + background-color: transparent; + color:black; + border-bottom: 2px groove $win95-bg; + text-transform: none; } - .column-link { +} + +.column-link { background-size:32px 32px; background-repeat:no-repeat; background-position: 36px 50%; - padding-left:40px; + padding-left:45px; &:hover { background-size:32px 32px; @@ -1125,8 +1342,144 @@ body.admin { width:32px; } } + +.getting-started__wrapper::before { + content: "Start"; + display:block; + color:black; + font-weight:bold; + font-size:15px; + position:absolute; + top:0px; + left:0px; + padding:5px 15px; + width:50px; + font-size:16px; + padding-left:25px; + background-color:$win95-bg; + z-index:12; + + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAIAAACpTQvdAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAF3pUWHRBdXRob3IAAAiZS84oys9LzAEAC5oC6A7BY/IAAACWSURBVCiRhVJJDsQgDEuqOfRZ7a1P5gbP4uaJaEjTADMWQhHYjlk4p0wLnNdptdF4KvBUDyGzVwc2xO+uKtH+1o0ytEEmqFpuxlvFCGCxKbNIT56QCi2MzaA/2Mz+mERSOeqzJG2RUxkjdTabgPtFoZ1bZxcKvgPcLZVufAyR9Ni8v5dWDzfFx0giC1RvZFv6l35QQ/Mvv39XXgGzQpoAAAAASUVORK5CYII="); + background-repeat:no-repeat; + background-position:8%; + background-clip:padding-box; + background-size:auto 50%; + + @include win95-border-inset(); } + +@media screen and (min-width: 360px) { + .getting-started__wrapper{ + margin-bottom:0px; + } +} + +@media screen and (max-width: 360px) { + .getting-started { + top:0px; + padding-top:0px; + } + + .getting-started__wrapper::before { + display:none; + } +} + +.getting-started__footer { + background-color: $win95-bg; + padding:0px; + padding-bottom:10px; + position:relative; + top:0px; + + @include win95-outset-no-highlight(); + + p { + margin-left: 45px; + } + + ul { + display:block; + li { + cursor:pointer; + display:block; + font-size:0px; + padding:0px; + line-height:0; + a { + padding:15px; + padding-left:77px; + line-height:1em; + font-size:16px; + display:block; + color:black; + background-size:32px 32px; + background-repeat:no-repeat; + background-position: 36px 50%; + &:hover { + text-decoration:none; + } + } + + &:hover { + background-color: $win95-window-header; + a { + color:white; + } + } + } + } +} + +.getting-started__footer::after { + content:"Mastodon 95"; + font-weight:bold; + font-size:23px; + color:white; + line-height:30px; + padding-left:20px; + padding-right:40px; + + left:0px; + box-sizing:border-box; + bottom:-32px; + display:block; + position:absolute; + background-color:#7f7f7f; + width:1000px; + height:32px; + + z-index:11; + + border-left: 2px solid #404040; + border-top: 2px solid #efefef; + border-right: 2px solid #efefef; + border-radius:0px; + + -ms-transform: rotate(-90deg); + + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); + transform-origin:top left; +} + +.layout-single-column .getting-started__footer::after { + display: none; +} + +.getting-started__wrapper + .flex-spacer { + display:none; +} + +.column-link[href="/web/timelines/home"] { + background-image: url("~images/icon_home.png"); + &:hover { background-image: url("~images/icon_home.png"); } +} +.column-link[href="/web/notifications"] { + background-image: url("~images/icon_notifications.png"); + &:hover { background-image: url("~images/icon_notifications.png"); } +} .column-link[href="/web/timelines/public"] { background-image: url("~images/icon_public.png"); &:hover { background-image: url("~images/icon_public.png"); } @@ -1135,6 +1488,10 @@ body.admin { background-image: url("~images/icon_local.png"); &:hover { background-image: url("~images/icon_local.png"); } } +.column-link[href="/web/timelines/direct"] { + background-image: url("~images/icon_direct.png"); + &:hover { background-image: url("~images/icon_direct.png"); } +} .column-link[href="/web/pinned"] { background-image: url("~images/icon_pin.png"); &:hover { background-image: url("~images/icon_pin.png"); } @@ -1151,62 +1508,62 @@ body.admin { background-image: url("~images/icon_follow_requests.png"); &:hover { background-image: url("~images/icon_follow_requests.png"); } } -.column-link[href="/web/keyboard-shortcuts"] { - background-image: url("~images/icon_keyboard_shortcuts.png"); - &:hover { background-image: url("~images/icon_keyboard_shortcuts.png"); } -} .column-link[href="/web/blocks"] { background-image: url("~images/icon_blocks.png"); &:hover { background-image: url("~images/icon_blocks.png"); } } +.column-link[href="/web/domain_blocks"] { + background-image: url("~images/icon_domain_blocks.png"); + &:hover { background-image: url("~images/icon_domain_blocks.png"); } +} .column-link[href="/web/mutes"] { background-image: url("~images/icon_mutes.png"); &:hover { background-image: url("~images/icon_mutes.png"); } } -.column-link[href="/settings/preferences"] { - background-image: url("~images/icon_settings.png"); - &:hover { background-image: url("~images/icon_settings.png"); } +.column-link[href="/web/directory"] { + background-image: url("~images/icon_profile_directory.png"); + &:hover { background-image: url("~images/icon_profile_directory.png"); } } -.column-link[href="/about/more"] { +.column-link[href="/web/bookmarks"] { + background-image: url("~images/icon_bookmarks.png"); + &:hover { background-image: url("~images/icon_bookmarks.png"); } +} + +.getting-started__footer ul li a[href="/web/keyboard-shortcuts"] { + background-image: url("~images/icon_keyboard_shortcuts.png"); + &:hover { background-image: url("~images/icon_keyboard_shortcuts.png"); } +} +.getting-started__footer ul li a[href="/invites"] { + background-image: url("~images/icon_invite.png"); + &:hover { background-image: url("~images/icon_invite.png"); } +} +.getting-started__footer ul li a[href="/terms"] { + background-image: url("~images/icon_tos.png"); + &:hover { background-image: url("~images/icon_tos.png"); } +} +.getting-started__footer ul li a[href="https://docs.joinmastodon.org"] { + background-image: url("~images/icon_docs.png"); + &:hover { background-image: url("~images/icon_docs.png"); } +} +.getting-started__footer ul li a[href="/about/more"] { background-image: url("~images/icon_about.png"); &:hover { background-image: url("~images/icon_about.png"); } } -.column-link[href="/auth/sign_out"] { +.getting-started__footer ul li a[href="/auth/sign_out"] { background-image: url("~images/icon_logout.png"); &:hover { background-image: url("~images/icon_logout.png"); } } - -.getting-started__footer { - display:none; +.getting-started__footer ul li a[href="https://joinmastodon.org/apps"] { + background-image: url("~images/icon_mobile_apps.png"); + &:hover { background-image: url("~images/icon_mobile_apps.png"); } } - -.getting-started__wrapper::before { - content:"Mastodon 95"; - font-weight:bold; - font-size:23px; - color:white; - line-height:30px; - padding-left:20px; - padding-right:40px; - - left:0px; - bottom:-30px; - display:block; - position:absolute; - background-color:#7f7f7f; - width:200%; - height:30px; - - -ms-transform: rotate(-90deg); - - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - transform-origin:top left; +.getting-started__footer ul li a[href="/settings/applications"] { + background-image: url("~images/icon_developers.png"); + &:hover { background-image: url("~images/icon_developers.png"); } } - -.getting-started__wrapper { - @include win95-border-outset(); - background-color:$win95-bg; +.getting-started__footer ul li a[href="/auth/edit"] { + background-image: url("~images/icon_settings.png"); + &:hover { background-image: url("~images/icon_settings.png"); } } .column .static-content.getting-started { @@ -1225,12 +1582,37 @@ body.admin { color:white; } +.account__header__fields { + border-left: 1px solid black; + border-top: 1px solid black; + + dt { + background-color:$win95-bg; + color:black; + border-top: 1px solid #ffffff; + border-bottom: 1px solid $win95-mid-grey; + border-right: 1px solid $win95-mid-grey; + } + dd { + background-color:white; + border: 1px solid $win95-bg; + color:black; + } + dd,dt { + padding: 5px 8px; + } +} + .account-authorize__wrapper { border: 2px groove $win95-bg; margin: 2px; padding:2px; } +.domain .domain__domain-name strong { + color: black; +} + .account--panel { background-color: $win95-bg; border:0px; @@ -1263,18 +1645,75 @@ body.admin { @include win95-inset(); } +.account__section-headline { + background: $win95-bg; + margin-top: 5px; + + & > a { + @include win95-tab(); + color: black; + padding: 5px; + + &.active { + background: $win95-bg; + @include win95-inset(); + color: black; + + &:before, &:after { + display: none; + } + } + } +} + .dropdown--active .dropdown__content > ul, .dropdown-menu { background:$win95-tooltip-yellow; border-radius:0px; border:1px solid black; box-shadow:unset; + margin-top: 6px; } .dropdown-menu a { background-color:transparent; } +.dropdown-menu__arrow { + &.bottom { + border-bottom-color: $win95-tooltip-yellow; + } + + &.top { + border-top-color: $win95-tooltip-yellow; + } + + &:before { + position: relative; + border: 0 solid transparent; + display: block; + content: ''; + left: -8px; + z-index: -1; + } + + &.bottom::before { + border-bottom-color: black; + border-width: 0 8px 6px; + bottom: 1px; + } + + &.top::before { + border-top-color: black; + border-width: 6px 8px 0; + top: -5px; + } +} + +.dropdown-menu { + margin-top: 6px; +} + .dropdown--active::after { display:none; } @@ -1301,11 +1740,11 @@ body.admin { } .detailed-status__action-bar-dropdown .dropdown--active .dropdown__content.dropdown__left { - left:unset; + left: unset; } -.dropdown > .icon-button, .detailed-status__button > .icon-button, -.status__action-bar > .icon-button, .star-icon i { +.dropdown > .icon-button, .detailed-status__action-bar .icon-button, +.status__action-bar .icon-button, .star-icon i { /* i don't know what's going on with the inline styles someone should look at the react code */ height: 25px !important; @@ -1313,39 +1752,52 @@ body.admin { box-sizing: border-box; } +.icon-button { + height: auto!important; + width: auto!important; +} + +.status__action-bar-dropdown .icon-button { + position: relative; + top: -1px; +} + +.fa-user-plus, .fa-user-times { + padding: 2px 0px 2px 1px; +} + +.fa-ellipsis-h { + padding-top: 3px; +} + .status__action-bar-button .fa-floppy-o { - padding-top: 2px; -} - -.status__action-bar-dropdown { - position: relative; - top: -3px; -} - -.detailed-status__action-bar-dropdown .dropdown { - position: relative; - top: -4px; + padding-top: 2px; } .notification .status__action-bar { - border-bottom: none; + border-bottom: none; } .notification .status { - margin-bottom: 4px; + margin-bottom: 4px; } .status__wrapper .status { - margin-bottom: 3px; + margin-bottom: 3px; } .status__wrapper { - margin-bottom: 8px; + margin-bottom: 8px; +} + +.status__prepend { + color: black; + font-size: 13px; } .icon-button .fa-retweet { - position: relative; - top: -1px; + position: relative; + top: -1px; } .embed-modal, .error-modal, .onboarding-modal, @@ -1389,6 +1841,13 @@ body.admin { text-align:left; } +.media-modal .media-modal__close { + font-size: 14px!important; + line-height: 17px!important; + margin-right: 4vw; + margin-top: 4vh; +} + .confirmation-modal__action-bar { .confirmation-modal__cancel-button { color:black; @@ -1412,11 +1871,42 @@ body.admin { @include win95-inset(); } +.report-modal__target .media-modal__close { + top: 3px; + right: 0px; + font-size: 12px!important; + line-height: 13px!important; +} + +.report-modal__comment p { + font-size: 12px; + margin-bottom: 1em; + padding-left: 3px; +} + +.report-modal__comment .setting-text.light { + border-radius: 0; +} + +.report-modal__container { + margin-right: 2px; +} + +.report-modal::before { + height: 22px; + line-height: 23px; +} + +.status-check-box__status .media-gallery { + margin: unset; +} + .modal-root__overlay, .account__header > div { background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAFnpUWHRUaXRsZQAACJnLzU9JzElKBwALgwLXaCRlPwAAABd6VFh0QXV0aG9yAAAImUvOKMrPS8wBAAuaAugOwWPyAAAAEUlEQVQImWNgYGD4z4AE/gMADwMB/414xEUAAAAASUVORK5CYII='); } + .admin-wrapper::before { position:absolute; top:0px; @@ -1439,6 +1929,7 @@ body.admin { @include win95-outset(); width:70vw; height:80vh; + min-height:80vh; margin:10vh auto; color: black; padding-top:24px; @@ -1466,6 +1957,7 @@ body.admin { .admin-wrapper .sidebar-wrapper { position:static; height:auto; + min-height:auto; flex: 0 0 auto; margin:2px; } @@ -1473,12 +1965,15 @@ body.admin { .admin-wrapper .content-wrapper { flex: 1 1 auto; width:calc(100% - 20px); + max-width:calc(100% - 20px); @include win95-border-outset(); position:relative; margin-left:10px; margin-right:10px; margin-bottom:40px; box-sizing:border-box; + overflow-y:scroll; + height: 100%; } .admin-wrapper .content { @@ -1489,6 +1984,9 @@ body.admin { box-sizing:border-box; position:relative; } +.admin-wrapper .content h4 { + color: black; +} .admin-wrapper .sidebar { position:static; @@ -1611,6 +2109,10 @@ body.admin { } } +.admin-wrapper .sidebar ul .simple-navigation-active-leaf a:hover { + background: $win95-bg; +} + @media screen and (max-width: 1520px) { .admin-wrapper .sidebar > ul > li > ul { max-width:1000px; @@ -1657,7 +2159,20 @@ body.admin { @include win95-border-slight-inset(); } +.admin-wrapper .table th, .table td { + background-color:transparent; +} + +.admin-wrapper button.table-action-link, +.admin-wrapper a.table-action-link, +.admin-wrapper button.table-action-link:hover, +.admin-wrapper a.table-action-link:hover, +.admin-wrapper a.name-tag, +.admin-wrapper .name-tag, +.admin-wrapper a.inline-name-tag, +.admin-wrapper .inline-name-tag, .admin-wrapper .content h2, +.admin-wrapper .content h3, .simple_form .input.with_label .label_input > label, .admin-wrapper .content h6, .admin-wrapper .content > p, @@ -1671,10 +2186,48 @@ body.admin { a.table-action-link, a.table-action-link:hover, .simple_form .input.with_block_label > label, -.simple_form p.hint { +.simple_form p.hint, +.admin-wrapper .content > p strong, +.simple_form .input.with_floating_label .label_input > label, +.admin-wrapper .content .fields-group h6 { color:black; } +.report-card { + background: white; + border: 1px solid black; + border-radius: 0px; +} + +.report-card__summary__item:hover { + background: white; +} + +.report-card__summary__item__content a { + color: black; +} + +.directory__tag > a, .directory__tag > div, +.directory__tag > a:hover, .directory__tag > a:active, .directory__tag > a:focus { + background: white; + border: 1px solid black; + border-radius: 0px; +} + +.admin-wrapper .content .directory__tag h4 { + color: black; +} + +.simple_form .hint code { + background: $win95-bg; + border-radius: 0px; +} + +.input-copy { + background: transparent; + border: 0px solid transparent; +} + .table > tbody > tr:nth-child(2n+1) > td, .table > tbody > tr:nth-child(2n+1) > th { background-color:white; @@ -1729,6 +2282,12 @@ a.table-action-link:hover, background: $win95-bg; } +.simple_form select { + background: white; + border-radius: 0px; + color: black; +} + .filters .filter-subset { border: 2px groove $win95-bg; padding:2px; @@ -1761,3 +2320,365 @@ a.table-action-link:hover, color:black; border-bottom: 0px solid transparent; } + +.drawer__inner__mastodon { + display: none; +} + +.list-editor h4 { + padding: 2px; + color: white; + font-size: 14px; + font-weight: bold; + background: #00007f; + border-radius: 0; +} + +.list-editor { + @include win95-border-outset(); + box-shadow: unset; +} + +.list-editor .drawer__inner { + @include win95-inset(); + border-radius: 0; +} + +.batch-table__toolbar { + border-radius: 0px; + background-color:white; + border: 1px solid black; +} + +.batch-table__row { + border: 1px solid black; + background-color: white; + + &:hover { + background-color: white; + } +} + +.batch-table__row:nth-child(2n) { + background-color: white; +} + +.dashboard__counters > div > div, +.dashboard__counters > div > a { + background-color: $win95-bg; + border: 1px solid black; + border-radius: 1px; + color:black; + + &:hover { + background-color: $win95-bg; + } +} + +.dashboard__counters__label, +.dashboard__widgets a:not(.name-tag), +.dashboard__counters__num { + color:black; +} + +.card { + & > a, & > a:hover { + box-shadow: none; + + .card__img { + border-radius: 0px; + border: 1px solid black; + } + + .card__bar { + @include win95-outset(); + background-color: $win95-bg; + + .display-name { + strong, span { + color:black; + } + } + } + } +} + +/* Public layout stuff */ +body { + background: $win95-cyan; +} + +.public-layout { + max-width: 960px; + margin:10px auto; + background: $win95-bg; + padding:0px; + @include win95-outset(); + + .header { + background: $win95-window-header; + @include win95-border-outset(); + height: 22px; + margin: 0px; + padding:0px; + border-radius: 0px; + + .brand { + padding: 2px; + } + + .nav-button { + @include win95-outset(); + background: $win95-bg; + color:black; + margin: 2px; + margin-bottom: 0px; + &:hover { + background: $win95-bg; + color:black; + } + } + } + .footer { + background: none; + &, h4, ul a, .grid .column-2 h4 a { + color: black; + } + } + + .button.logo-button { + @include win95-outset(); + background: $win95-bg; + color:black; + &:hover { + background: $win95-bg; + color:black; + } + svg { + visibility:hidden; + } + &, &:hover { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAIAAACpTQvdAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAF3pUWHRBdXRob3IAAAiZS84oys9LzAEAC5oC6A7BY/IAAACWSURBVCiRhVJJDsQgDEuqOfRZ7a1P5gbP4uaJaEjTADMWQhHYjlk4p0wLnNdptdF4KvBUDyGzVwc2xO+uKtH+1o0ytEEmqFpuxlvFCGCxKbNIT56QCi2MzaA/2Mz+mERSOeqzJG2RUxkjdTabgPtFoZ1bZxcKvgPcLZVufAyR9Ni8v5dWDzfFx0giC1RvZFv6l35QQ/Mvv39XXgGzQpoAAAAASUVORK5CYII="); + background-repeat:no-repeat; + background-position:8%; + background-clip:padding-box; + background-size:auto 50%; + } + } + + .public-account-header { + @include win95-reset(); + padding: 4px; + .public-account-header__image { + @include win95-border-slight-inset(); + border-radius: 0px; + } + } + + .public-account-header__bar { + &, &:before { + background: transparent; + } + .avatar img { + @include win95-border-slight-inset(); + filter: saturate(1.8) brightness(1.1); + border-radius: 0px; + background: darken($win95-bg, 9.09%); + } + } + .public-account-header__extra__links { + margin-top: 0px; + a, a strong { + color: black; + } + } + + .public-account-header__tabs { + position: relative; + } + + .public-account-header__tabs__name { + display: inline-block; + position: relative; + background: $win95-tooltip-yellow; + border: 1px solid black; + padding: 4px; + + h1, h1 small { + color:black; + text-shadow: unset; + text-overflow: unset; + } + + margin-bottom: 24px; + + &:after { + content: ""; + display:block; + position:absolute; + left: 0px; + bottom: -20px; + width: 0px; + height: 0px; + border-left: 20px solid $win95-tooltip-yellow; + border-bottom: 20px solid transparent; + } + &:before { + content: ""; + display:block; + position:absolute; + left: -1px; + bottom: -22px; + width: 0px; + height: 0px; + border-left: 22px solid black; + border-bottom: 22px solid transparent; + } + } + + .public-account-header__tabs__tabs { + .details-counters { + @include win95-border-groove(); + .counter { + .counter-number, .counter-label { + color: black; + } + &:after { + border-bottom-width: 0px; + } + &.active { + @include win95-border-slight-inset(); + } + } + } + } + + .public-account-bio { + @include win95-reset(); + @include win95-border-groove(); + background: $win95-bg; + margin-right: 10px; + .account__header__content, .roles { + color: black; + } + } + .public-account-bio__extra { + color: black; + } + + .status__prepend { + padding-top:5px; + } + .status__content , + .reply-indicator__content { + .status__content__spoiler-link { + color: $win95-dark-grey; + } + } + .account__section-headline { + margin-left: 10px; + } + .card-grid { + margin-left: 10px; + } + .status { + padding: 15px 15px 55px 78px; + } +} + +@media screen and (max-width: 1255px) { + .container { + width: 100%; + padding: 0px; + } +} + +.hero-widget { + box-shadow: none; + @include win95-border-groove(); + background: $win95-bg; + padding: 8px; + margin-right: 10px; + margin-top: 10px; +} +.hero-widget__text { + background: none; + color: black; +} +.hero-widget__img { + background: none; + border-radius: 0px; + border: 1px solid black; + img { + border-radius: 0px; + } +} + +.activity-stream { + @include win95-reset(); + @include win95-border-groove(); + + background: $win95-bg; + margin-top: 10px; + margin-left: 10px; + .entry { + background: none; + &:first-child:last-child, &:first-child { + .detailed-status, .status, .load-more { + border-radius: 0px; + } + } + } +} + +.nothing-here { + @include win95-reset(); + background: transparent; + color: black; +} + +.flash-message.notice { + border: 1px solid black; + background: $win95-tooltip-yellow; + color:black; +} + +.layout-single-column .compose-panel { + background: $win95-bg; +} + +.layout-single-column .status__wrapper .status { + padding-bottom: 50px; +} + +::-webkit-scrollbar { + width: 14px; +} + +::-webkit-scrollbar-track { + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAAAAABX3VL4AAAADklEQVQIW2P4f4DhwH8ACoADf0PlskQAAAAASUVORK5CYII='); + + &:hover { + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAAAAABX3VL4AAAADklEQVQIW2P4f4DhwH8ACoADf0PlskQAAAAASUVORK5CYII='); + } +} + +::-webkit-scrollbar-thumb { + background: #bfbfbf; + border-color: #efefef #404040 #404040 #efefef; + border-style: solid; + border-width: 2px; + + &:hover { + background: #bfbfbf; + border-color: #efefef #404040 #404040 #efefef; + border-style: solid; + border-width: 2px; + } + + &:active { + background: #bfbfbf; + border-color: #404040 #efefef #efefef #404040; + } +} + diff --git a/app/lib/access_token_extension.rb b/app/lib/access_token_extension.rb index 2cafaaa20..f51bde492 100644 --- a/app/lib/access_token_extension.rb +++ b/app/lib/access_token_extension.rb @@ -4,6 +4,8 @@ module AccessTokenExtension extend ActiveSupport::Concern included do + include Redisable + after_commit :push_to_streaming_api end @@ -16,6 +18,6 @@ module AccessTokenExtension end def push_to_streaming_api - Redis.current.publish("timeline:access_token:#{id}", Oj.dump(event: :kill)) if revoked? || destroyed? + redis.publish("timeline:access_token:#{id}", Oj.dump(event: :kill)) if revoked? || destroyed? end end diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index f599e1b58..3c51a7a51 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -164,7 +164,7 @@ class ActivityPub::Activity end def lock_or_fail(key, expire_after = 15.minutes.seconds) - RedisLock.acquire({ redis: Redis.current, key: key, autorelease: expire_after }) do |lock| + RedisLock.acquire({ redis: redis, key: key, autorelease: expire_after }) do |lock| if lock.acquired? yield else diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 1ac509f18..09fe08d45 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -117,7 +117,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity language: @status_parser.language, spoiler_text: converted_object_type? ? '' : (@status_parser.spoiler_text || ''), created_at: @status_parser.created_at, - edited_at: @status_parser.edited_at, + edited_at: @status_parser.edited_at && @status_parser.edited_at != @status_parser.created_at ? @status_parser.edited_at : nil, override_timestamps: @options[:override_timestamps], reply: @status_parser.reply, sensitive: @account.sensitized? || @status_parser.sensitive || false, diff --git a/app/lib/delivery_failure_tracker.rb b/app/lib/delivery_failure_tracker.rb index 7b800fc0b..7c4e28eb7 100644 --- a/app/lib/delivery_failure_tracker.rb +++ b/app/lib/delivery_failure_tracker.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class DeliveryFailureTracker + include Redisable + FAILURE_DAYS_THRESHOLD = 7 def initialize(url_or_host) @@ -8,21 +10,21 @@ class DeliveryFailureTracker end def track_failure! - Redis.current.sadd(exhausted_deliveries_key, today) + redis.sadd(exhausted_deliveries_key, today) UnavailableDomain.create(domain: @host) if reached_failure_threshold? end def track_success! - Redis.current.del(exhausted_deliveries_key) + redis.del(exhausted_deliveries_key) UnavailableDomain.find_by(domain: @host)&.destroy end def clear_failures! - Redis.current.del(exhausted_deliveries_key) + redis.del(exhausted_deliveries_key) end def days - Redis.current.scard(exhausted_deliveries_key) || 0 + redis.scard(exhausted_deliveries_key) || 0 end def available? @@ -30,12 +32,14 @@ class DeliveryFailureTracker end def exhausted_deliveries_days - @exhausted_deliveries_days ||= Redis.current.smembers(exhausted_deliveries_key).sort.map { |date| Date.new(date.slice(0, 4).to_i, date.slice(4, 2).to_i, date.slice(6, 2).to_i) } + @exhausted_deliveries_days ||= redis.smembers(exhausted_deliveries_key).sort.map { |date| Date.new(date.slice(0, 4).to_i, date.slice(4, 2).to_i, date.slice(6, 2).to_i) } end alias reset! track_success! class << self + include Redisable + def without_unavailable(urls) unavailable_domains_map = Rails.cache.fetch('unavailable_domains') { UnavailableDomain.pluck(:domain).index_with(true) } @@ -54,7 +58,7 @@ class DeliveryFailureTracker end def warning_domains - domains = Redis.current.keys(exhausted_deliveries_key_by('*')).map do |key| + domains = redis.keys(exhausted_deliveries_key_by('*')).map do |key| key.delete_prefix(exhausted_deliveries_key_by('')) end @@ -62,7 +66,7 @@ class DeliveryFailureTracker end def warning_domains_map - warning_domains.index_with { |domain| Redis.current.scard(exhausted_deliveries_key_by(domain)) } + warning_domains.index_with { |domain| redis.scard(exhausted_deliveries_key_by(domain)) } end private diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 02ecb403d..235d6fedd 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -132,7 +132,7 @@ class FeedManager def merge_into_home(from_account, into_account) timeline_key = key(:home, into_account.id) aggregate = into_account.user&.aggregates_reblogs? - query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) + query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 oldest_home_score = redis.zrange(timeline_key, 0, 0, with_scores: true).first.last.to_i @@ -158,7 +158,7 @@ class FeedManager def merge_into_list(from_account, list) timeline_key = key(:list, list.id) aggregate = list.account.user&.aggregates_reblogs? - query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) + query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 oldest_home_score = redis.zrange(timeline_key, 0, 0, with_scores: true).first.last.to_i @@ -182,10 +182,10 @@ class FeedManager # @param [Account] into_account # @return [void] def unmerge_from_home(from_account, into_account) - timeline_key = key(:home, into_account.id) - oldest_home_score = redis.zrange(timeline_key, 0, 0, with_scores: true)&.first&.last&.to_i || 0 + timeline_key = key(:home, into_account.id) + timeline_status_ids = redis.zrange(timeline_key, 0, -1) - from_account.statuses.select('id, reblog_of_id').where('id > ?', oldest_home_score).reorder(nil).find_each do |status| + from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| remove_from_feed(:home, into_account.id, status, into_account.user&.aggregates_reblogs?) end end @@ -195,10 +195,10 @@ class FeedManager # @param [List] list # @return [void] def unmerge_from_list(from_account, list) - timeline_key = key(:list, list.id) - oldest_list_score = redis.zrange(timeline_key, 0, 0, with_scores: true)&.first&.last&.to_i || 0 + timeline_key = key(:list, list.id) + timeline_status_ids = redis.zrange(timeline_key, 0, -1) - from_account.statuses.select('id, reblog_of_id').where('id > ?', oldest_list_score).reorder(nil).find_each do |status| + from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| remove_from_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?) end end @@ -268,7 +268,7 @@ class FeedManager account.following.includes(:account_stat).find_each do |target_account| if redis.zcard(timeline_key) >= limit oldest_home_score = redis.zrange(timeline_key, 0, 0, with_scores: true).first.last.to_i - last_status_score = Mastodon::Snowflake.id_at(account.last_status_at) + last_status_score = Mastodon::Snowflake.id_at(target_account.last_status_at) # If the feed is full and this account has not posted more recently # than the last item on the feed, then we can skip the whole account @@ -276,7 +276,7 @@ class FeedManager next if last_status_score < oldest_home_score end - statuses = target_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, reblog: :account).limit(limit) + statuses = target_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(limit) crutches = build_crutches(account.id, statuses) statuses.each do |status| diff --git a/app/lib/redis_configuration.rb b/app/lib/redis_configuration.rb new file mode 100644 index 000000000..e14d6c8b6 --- /dev/null +++ b/app/lib/redis_configuration.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class RedisConfiguration + class << self + def establish_pool(new_pool_size) + @pool&.shutdown(&:close) + @pool = ConnectionPool.new(size: new_pool_size) { new.connection } + end + + def with + pool.with { |redis| yield redis } + end + + def pool + @pool ||= establish_pool(pool_size) + end + + def pool_size + if Sidekiq.server? + Sidekiq.options[:concurrency] + else + ENV['MAX_THREADS'] || 5 + end + end + end + + def connection + if namespace? + Redis::Namespace.new(namespace, redis: raw_connection) + else + raw_connection + end + end + + def namespace? + namespace.present? + end + + def namespace + ENV.fetch('REDIS_NAMESPACE', nil) + end + + def url + ENV['REDIS_URL'] + end + + private + + def raw_connection + Redis.new(url: url, driver: :hiredis) + end +end diff --git a/app/lib/search_query_transformer.rb b/app/lib/search_query_transformer.rb index c685d7b6f..aef05e9d9 100644 --- a/app/lib/search_query_transformer.rb +++ b/app/lib/search_query_transformer.rb @@ -88,14 +88,14 @@ class SearchQueryTransformer < Parslet::Transform case prefix when 'from' @filter = :account_id - username, domain = term.split('@') - account = Account.find_remote(username, domain) - raise "Account not found: #{term}" unless account + username, domain = term.gsub(/\A@/, '').split('@') + domain = nil if TagManager.instance.local_domain?(domain) + account = Account.find_remote!(username, domain) @term = account.id else - raise "Unknown prefix: #{prefix}" + raise Mastodon::SyntaxError end end end diff --git a/app/lib/suspicious_sign_in_detector.rb b/app/lib/suspicious_sign_in_detector.rb new file mode 100644 index 000000000..1af5188c6 --- /dev/null +++ b/app/lib/suspicious_sign_in_detector.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +class SuspiciousSignInDetector + IPV6_TOLERANCE_MASK = 64 + IPV4_TOLERANCE_MASK = 16 + + def initialize(user) + @user = user + end + + def suspicious?(request) + !sufficient_security_measures? && !freshly_signed_up? && !previously_seen_ip?(request) + end + + private + + def sufficient_security_measures? + @user.otp_required_for_login? + end + + def previously_seen_ip?(request) + @user.ips.where('ip <<= ?', masked_ip(request)).exists? + end + + def freshly_signed_up? + @user.current_sign_in_at.blank? + end + + def masked_ip(request) + masked_ip_addr = begin + ip_addr = IPAddr.new(request.remote_ip) + + if ip_addr.ipv6? + ip_addr.mask(IPV6_TOLERANCE_MASK) + else + ip_addr.mask(IPV4_TOLERANCE_MASK) + end + end + + "#{masked_ip_addr}/#{masked_ip_addr.prefix}" + end +end diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb index d8015e50d..d339e078c 100644 --- a/app/lib/user_settings_decorator.rb +++ b/app/lib/user_settings_decorator.rb @@ -43,6 +43,7 @@ class UserSettingsDecorator user.settings['use_pending_items'] = use_pending_items_preference if change?('setting_use_pending_items') user.settings['trends'] = trends_preference if change?('setting_trends') user.settings['crop_images'] = crop_images_preference if change?('setting_crop_images') + user.settings['always_send_emails'] = always_send_emails_preference if change?('setting_always_send_emails') end def merged_notification_emails @@ -157,6 +158,10 @@ class UserSettingsDecorator boolean_cast_setting 'setting_crop_images' end + def always_send_emails_preference + boolean_cast_setting 'setting_always_send_emails' + end + def boolean_cast_setting(key) ActiveModel::Type::Boolean.new.cast(settings[key]) end diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb index 1ffb5b4bf..a681e0815 100644 --- a/app/lib/webfinger.rb +++ b/app/lib/webfinger.rb @@ -6,8 +6,13 @@ class Webfinger class RedirectError < StandardError; end class Response - def initialize(body) + attr_reader :uri + + def initialize(uri, body) + @uri = uri @json = Oj.load(body, mode: :strict) + + validate_response! end def subject @@ -23,6 +28,10 @@ class Webfinger def links @links ||= @json['links'].index_by { |link| link['rel'] } end + + def validate_response! + raise Webfinger::Error, "Missing subject in response for #{@uri}" if subject.blank? + end end def initialize(uri) @@ -34,7 +43,7 @@ class Webfinger end def perform - Response.new(body_from_webfinger) + Response.new(@uri, body_from_webfinger) rescue Oj::ParseError raise Webfinger::Error, "Invalid JSON in response for #{@uri}" rescue Addressable::URI::InvalidURIError diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 1a823328c..e47bedec6 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -7,6 +7,7 @@ class UserMailer < Devise::Mailer helper :application helper :instance helper :statuses + helper :formatting helper RoutingHelper @@ -167,9 +168,7 @@ class UserMailer < Devise::Mailer @statuses = @warning.statuses.includes(:account, :preloadable_poll, :media_attachments, active_mentions: [:account]) I18n.with_locale(@resource.locale || I18n.default_locale) do - mail to: @resource.email, - subject: I18n.t("user_mailer.warning.subject.#{@warning.action}", acct: "@#{user.account.local_username_and_domain}"), - reply_to: ENV['SMTP_REPLY_TO'] + mail to: @resource.email, subject: I18n.t("user_mailer.warning.subject.#{@warning.action}", acct: "@#{user.account.local_username_and_domain}") end end @@ -193,7 +192,7 @@ class UserMailer < Devise::Mailer end end - def sign_in_token(user, remote_ip, user_agent, timestamp) + def suspicious_sign_in(user, remote_ip, user_agent, timestamp) @resource = user @instance = Rails.configuration.x.local_domain @remote_ip = remote_ip @@ -201,12 +200,8 @@ class UserMailer < Devise::Mailer @detection = Browser.new(user_agent) @timestamp = timestamp.to_time.utc - return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do - mail to: @resource.email, - subject: I18n.t('user_mailer.sign_in_token.subject'), - reply_to: ENV['SMTP_REPLY_TO'] + mail to: @resource.email, subject: I18n.t('user_mailer.suspicious_sign_in.subject') end end end diff --git a/app/models/account.rb b/app/models/account.rb index 1966c5a48..068ee7ae9 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -561,6 +561,12 @@ class Account < ApplicationRecord before_validation :prepare_username, on: :create before_destroy :clean_feed_manager + def ensure_keys! + return unless local? && private_key.blank? && public_key.blank? + generate_keys + save! + end + private def prepare_contents diff --git a/app/models/account_alias.rb b/app/models/account_alias.rb index 3d659142a..b421c66e2 100644 --- a/app/models/account_alias.rb +++ b/app/models/account_alias.rb @@ -28,6 +28,11 @@ class AccountAlias < ApplicationRecord super(val.start_with?('@') ? val[1..-1] : val) end + def pretty_acct + username, domain = acct.split('@') + domain.nil? ? username : "#{username}@#{Addressable::IDNA.to_unicode(domain)}" + end + private def set_uri diff --git a/app/models/account_conversation.rb b/app/models/account_conversation.rb index 56fd13543..45e74bbeb 100644 --- a/app/models/account_conversation.rb +++ b/app/models/account_conversation.rb @@ -14,6 +14,8 @@ # class AccountConversation < ApplicationRecord + include Redisable + after_commit :push_to_streaming_api belongs_to :account @@ -109,7 +111,7 @@ class AccountConversation < ApplicationRecord end def subscribed_to_timeline? - Redis.current.exists?("subscribed:#{streaming_channel}") + redis.exists?("subscribed:#{streaming_channel}") end def streaming_channel diff --git a/app/models/account_suggestions/global_source.rb b/app/models/account_suggestions/global_source.rb index 7bca530d4..651041d67 100644 --- a/app/models/account_suggestions/global_source.rb +++ b/app/models/account_suggestions/global_source.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class AccountSuggestions::GlobalSource < AccountSuggestions::Source + include Redisable + def key :global end @@ -28,7 +30,7 @@ class AccountSuggestions::GlobalSource < AccountSuggestions::Source end def account_ids_for_locale(locale) - Redis.current.zrevrange("follow_recommendations:#{locale}", 0, -1).map(&:to_i) + redis.zrevrange("follow_recommendations:#{locale}", 0, -1).map(&:to_i) end def to_ordered_list_key(account) diff --git a/app/models/concerns/account_finder_concern.rb b/app/models/concerns/account_finder_concern.rb index 0dadddad1..e8b804934 100644 --- a/app/models/concerns/account_finder_concern.rb +++ b/app/models/concerns/account_finder_concern.rb @@ -13,7 +13,7 @@ module AccountFinderConcern end def representative - Account.find(-99) + Account.find(-99).tap(&:ensure_keys!) rescue ActiveRecord::RecordNotFound Account.create!(id: -99, actor_type: 'Application', locked: true, username: Rails.configuration.x.local_domain) end diff --git a/app/models/concerns/redisable.rb b/app/models/concerns/redisable.rb index c6cf97359..8d76b6b82 100644 --- a/app/models/concerns/redisable.rb +++ b/app/models/concerns/redisable.rb @@ -6,6 +6,6 @@ module Redisable private def redis - Redis.current + Thread.current[:redis] ||= RedisConfiguration.pool.checkout end end diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb index 9d0f3729b..8e3476794 100644 --- a/app/models/custom_filter.rb +++ b/app/models/custom_filter.rb @@ -24,6 +24,7 @@ class CustomFilter < ApplicationRecord ).freeze include Expireable + include Redisable belongs_to :account @@ -51,7 +52,7 @@ class CustomFilter < ApplicationRecord def remove_cache Rails.cache.delete("filters:#{account_id}") - Redis.current.publish("timeline:#{account_id}", Oj.dump(event: :filters_changed)) + redis.publish("timeline:#{account_id}", Oj.dump(event: :filters_changed)) end def context_must_be_valid diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index 36e7e62ab..0e1e663c1 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -3,16 +3,19 @@ # # Table name: email_domain_blocks # -# id :bigint(8) not null, primary key -# domain :string default(""), not null -# created_at :datetime not null -# updated_at :datetime not null -# parent_id :bigint(8) -# ips :inet is an Array -# last_refresh_at :datetime +# id :bigint(8) not null, primary key +# domain :string default(""), not null +# created_at :datetime not null +# updated_at :datetime not null +# parent_id :bigint(8) # class EmailDomainBlock < ApplicationRecord + self.ignored_columns = %w( + ips + last_refresh_at + ) + include DomainNormalizable belongs_to :parent, class_name: 'EmailDomainBlock', optional: true @@ -27,7 +30,7 @@ class EmailDomainBlock < ApplicationRecord @history ||= Trends::History.new('email_domain_blocks', id) end - def self.block?(domain_or_domains, ips: [], attempt_ip: nil) + def self.block?(domain_or_domains, attempt_ip: nil) domains = Array(domain_or_domains).map do |str| domain = begin if str.include?('@') @@ -48,10 +51,7 @@ class EmailDomainBlock < ApplicationRecord blocked = domains.any?(&:nil?) - scope = where(domain: domains) - scope = scope.or(where('ips && ARRAY[?]::inet[]', ips)) if ips.any? - - scope.find_each do |block| + where(domain: domains).find_each do |block| blocked = true block.history.add(attempt_ip) if attempt_ip.present? end diff --git a/app/models/encrypted_message.rb b/app/models/encrypted_message.rb index aa4182b4e..7b4e32283 100644 --- a/app/models/encrypted_message.rb +++ b/app/models/encrypted_message.rb @@ -19,6 +19,7 @@ class EncryptedMessage < ApplicationRecord self.inheritance_column = nil include Paginable + include Redisable scope :up_to, ->(id) { where(arel_table[:id].lteq(id)) } @@ -38,7 +39,7 @@ class EncryptedMessage < ApplicationRecord end def subscribed_to_timeline? - Redis.current.exists?("subscribed:#{streaming_channel}") + redis.exists?("subscribed:#{streaming_channel}") end def streaming_channel diff --git a/app/models/follow_recommendation_filter.rb b/app/models/follow_recommendation_filter.rb index acf03cd84..531332614 100644 --- a/app/models/follow_recommendation_filter.rb +++ b/app/models/follow_recommendation_filter.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class FollowRecommendationFilter + include Redisable + KEYS = %i( language status @@ -17,7 +19,7 @@ class FollowRecommendationFilter if params['status'] == 'suppressed' Account.joins(:follow_recommendation_suppression).order(FollowRecommendationSuppression.arel_table[:id].desc).to_a else - account_ids = Redis.current.zrevrange("follow_recommendations:#{@language}", 0, -1).map(&:to_i) + account_ids = redis.zrevrange("follow_recommendations:#{@language}", 0, -1).map(&:to_i) accounts = Account.where(id: account_ids).index_by(&:id) account_ids.map { |id| accounts[id] }.compact diff --git a/app/models/status.rb b/app/models/status.rb index 9eaf85668..75b464a70 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -150,11 +150,13 @@ class Status < ApplicationRecord ids += favourites.where(account: Account.local).pluck(:account_id) ids += reblogs.where(account: Account.local).pluck(:account_id) ids += bookmarks.where(account: Account.local).pluck(:account_id) + ids += poll.votes.where(account: Account.local).pluck(:account_id) if poll.present? else ids += preloaded.mentions[id] || [] ids += preloaded.favourites[id] || [] ids += preloaded.reblogs[id] || [] ids += preloaded.bookmarks[id] || [] + ids += preloaded.votes[id] || [] end ids.uniq @@ -257,7 +259,7 @@ class Status < ApplicationRecord media_attachments else map = media_attachments.index_by(&:id) - ordered_media_attachment_ids.map { |media_attachment_id| map[media_attachment_id] } + ordered_media_attachment_ids.filter_map { |media_attachment_id| map[media_attachment_id] } end end diff --git a/app/models/trends/base.rb b/app/models/trends/base.rb index 7ed13228d..047111248 100644 --- a/app/models/trends/base.rb +++ b/app/models/trends/base.rb @@ -37,12 +37,12 @@ class Trends::Base Trends::Query.new(key_prefix, klass) end - def score(id) - redis.zscore("#{key_prefix}:all", id) || 0 + def score(id, locale: nil) + redis.zscore([key_prefix, 'all', locale].compact.join(':'), id) || 0 end - def rank(id) - redis.zrevrank("#{key_prefix}:allowed", id) + def rank(id, locale: nil) + redis.zrevrank([key_prefix, 'allowed', locale].compact.join(':'), id) end def currently_trending_ids(allowed, limit) @@ -64,33 +64,38 @@ class Trends::Base redis.expire(used_key(at_time), 1.day.seconds) end - def trim_older_items - redis.zremrangebyscore("#{key_prefix}:all", '-inf', '(1') - redis.zremrangebyscore("#{key_prefix}:allowed", '-inf', '(1') - end - def score_at_rank(rank) redis.zrevrange("#{key_prefix}:allowed", 0, rank, with_scores: true).last&.last || 0 end - # @param [Integer] id - # @param [Float] score - # @param [Hash] subsets - def add_to_and_remove_from_subsets(id, score, subsets = {}) - subsets.each_key do |subset| - key = [key_prefix, subset].compact.join(':') + def replace_items(suffix, items) + tmp_prefix = "#{key_prefix}:tmp:#{SecureRandom.alphanumeric(6)}#{suffix}" + allowed_items = filter_for_allowed_items(items) - if score.positive? && subsets[subset] - redis.zadd(key, score, id) - else - redis.zrem(key, id) - end + redis.pipelined do |pipeline| + items.each { |item| pipeline.zadd("#{tmp_prefix}:all", item[:score], item[:item].id) } + allowed_items.each { |item| pipeline.zadd("#{tmp_prefix}:allowed", item[:score], item[:item].id) } + + rename_set(pipeline, "#{tmp_prefix}:all", "#{key_prefix}:all#{suffix}", items) + rename_set(pipeline, "#{tmp_prefix}:allowed", "#{key_prefix}:allowed#{suffix}", allowed_items) end end + def filter_for_allowed_items(items) + raise NotImplementedError + end + private def used_key(at_time) "#{key_prefix}:used:#{at_time.beginning_of_day.to_i}" end + + def rename_set(pipeline, from_key, to_key, set_items) + if set_items.empty? + pipeline.del(to_key) + else + pipeline.rename(from_key, to_key) + end + end end diff --git a/app/models/trends/links.rb b/app/models/trends/links.rb index 62308e706..604894cd6 100644 --- a/app/models/trends/links.rb +++ b/app/models/trends/links.rb @@ -8,14 +8,15 @@ class Trends::Links < Trends::Base review_threshold: 3, max_score_cooldown: 2.days.freeze, max_score_halflife: 8.hours.freeze, + decay_threshold: 1, } def register(status, at_time = Time.now.utc) - original_status = status.reblog? ? status.reblog : status + original_status = status.proper - return unless original_status.public_visibility? && status.public_visibility? && - !original_status.account.silenced? && !status.account.silenced? && - !original_status.spoiler_text? + return unless (original_status.public_visibility? && status.public_visibility?) && + !(original_status.account.silenced? || status.account.silenced?) && + !(original_status.spoiler_text? || original_status.sensitive?) original_status.preview_cards.each do |preview_card| add(preview_card, status.account_id, at_time) if preview_card.appropriate_for_trends? @@ -30,7 +31,6 @@ class Trends::Links < Trends::Base def refresh(at_time = Time.now.utc) preview_cards = PreviewCard.where(id: (recently_used_ids(at_time) + currently_trending_ids(false, -1)).uniq) calculate_scores(preview_cards, at_time) - trim_older_items end def request_review @@ -62,6 +62,9 @@ class Trends::Links < Trends::Base private def calculate_scores(preview_cards, at_time) + global_items = [] + locale_items = Hash.new { |h, key| h[key] = [] } + preview_cards.each do |preview_card| expected = preview_card.history.get(at_time - 1.day).accounts.to_f expected = 1.0 if expected.zero? @@ -88,31 +91,23 @@ class Trends::Links < Trends::Base decaying_score = max_score * (0.5**((at_time.to_f - max_time.to_f) / options[:max_score_halflife].to_f)) - add_to_and_remove_from_subsets(preview_card.id, decaying_score, { - all: true, - allowed: preview_card.trendable?, - }) + next unless decaying_score >= options[:decay_threshold] - next unless valid_locale?(preview_card.language) - - add_to_and_remove_from_subsets(preview_card.id, decaying_score, { - "all:#{preview_card.language}" => true, - "allowed:#{preview_card.language}" => preview_card.trendable?, - }) + global_items << { score: decaying_score, item: preview_card } + locale_items[preview_card.language] << { score: decaying_score, item: preview_card } if valid_locale?(preview_card.language) end - # Clean up localized sets by calculating the intersection with the main - # set. We do this instead of just deleting the localized sets to avoid - # having moments where the API returns empty results + replace_items('', global_items) - redis.pipelined do - Trends.available_locales.each do |locale| - redis.zinterstore("#{key_prefix}:all:#{locale}", ["#{key_prefix}:all:#{locale}", "#{key_prefix}:all"], aggregate: 'max') - redis.zinterstore("#{key_prefix}:allowed:#{locale}", ["#{key_prefix}:allowed:#{locale}", "#{key_prefix}:all"], aggregate: 'max') - end + Trends.available_locales.each do |locale| + replace_items(":#{locale}", locale_items[locale]) end end + def filter_for_allowed_items(items) + items.select { |item| item[:item].trendable? } + end + def would_be_trending?(id) score(id) > score_at_rank(options[:review_threshold] - 1) end diff --git a/app/models/trends/query.rb b/app/models/trends/query.rb index 231b65228..cd5571bc6 100644 --- a/app/models/trends/query.rb +++ b/app/models/trends/query.rb @@ -14,8 +14,8 @@ class Trends::Query @records = [] @loaded = false @allowed = false - @limit = -1 - @offset = 0 + @limit = nil + @offset = nil end def allowed! @@ -59,7 +59,7 @@ class Trends::Query @records end - delegate :each, :empty?, :first, :last, to: :records + delegate :each, :empty?, :first, :last, :size, to: :records def to_ary records.dup @@ -73,7 +73,10 @@ class Trends::Query if tmp_ids.empty? klass.none else - klass.joins("join unnest(array[#{tmp_ids.join(',')}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id").reorder('x.ordering') + scope = klass.joins("join unnest(array[#{tmp_ids.join(',')}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id").reorder('x.ordering') + scope = scope.offset(@offset) if @offset.present? + scope = scope.limit(@limit) if @limit.present? + scope end end @@ -93,7 +96,7 @@ class Trends::Query end def ids - redis.zrevrange(key, @offset, @limit.positive? ? @limit - 1 : @limit).map(&:to_i) + redis.zrevrange(key, 0, -1).map(&:to_i) end def perform_queries diff --git a/app/models/trends/statuses.rb b/app/models/trends/statuses.rb index e9c48a06b..1b9e9259a 100644 --- a/app/models/trends/statuses.rb +++ b/app/models/trends/statuses.rb @@ -7,6 +7,7 @@ class Trends::Statuses < Trends::Base threshold: 5, review_threshold: 3, score_halflife: 2.hours.freeze, + decay_threshold: 0.3, } class Query < Trends::Query @@ -22,30 +23,16 @@ class Trends::Statuses < Trends::Base private def apply_scopes(scope) - scope.includes(:account) - end - - def perform_queries - return super if @account.nil? - - statuses = super - account_ids = statuses.map(&:account_id) - account_domains = statuses.map(&:account_domain) - - preloaded_relations = { - blocking: Account.blocking_map(account_ids, @account.id), - blocked_by: Account.blocked_by_map(account_ids, @account.id), - muting: Account.muting_map(account_ids, @account.id), - following: Account.following_map(account_ids, @account.id), - domain_blocking_by_domain: Account.domain_blocking_map_by_domain(account_domains, @account.id), - } - - statuses.reject { |status| StatusFilter.new(status, @account, preloaded_relations).filtered? } + if @account.nil? + scope + else + scope.not_excluded_by_account(@account).not_domain_blocked_by_account(@account) + end end end def register(status, at_time = Time.now.utc) - add(status.proper, status.account_id, at_time) if eligible?(status) + add(status.proper, status.account_id, at_time) if eligible?(status.proper) end def add(status, _account_id, at_time = Time.now.utc) @@ -62,7 +49,6 @@ class Trends::Statuses < Trends::Base def refresh(at_time = Time.now.utc) statuses = Status.where(id: (recently_used_ids(at_time) + currently_trending_ids(false, -1)).uniq).includes(:account, :media_attachments) calculate_scores(statuses, at_time) - trim_older_items end def request_review @@ -89,51 +75,45 @@ class Trends::Statuses < Trends::Base private def eligible?(status) - original_status = status.proper - - original_status.public_visibility? && - original_status.account.discoverable? && !original_status.account.silenced? && - (original_status.spoiler_text.blank? || Setting.trending_status_cw) && !original_status.sensitive? && !original_status.reply? + status.public_visibility? && status.account.discoverable? && !status.account.silenced? && (status.spoiler_text.blank? || Setting.trending_status_cw) && !status.sensitive? && !status.reply? end def calculate_scores(statuses, at_time) - redis.pipelined do - statuses.each do |status| - expected = 1.0 - observed = (status.reblogs_count + status.favourites_count).to_f + global_items = [] + locale_items = Hash.new { |h, key| h[key] = [] } - score = begin - if expected > observed || observed < options[:threshold] - 0 - else - ((observed - expected)**2) / expected - end + statuses.each do |status| + expected = 1.0 + observed = (status.reblogs_count + status.favourites_count).to_f + + score = begin + if expected > observed || observed < options[:threshold] + 0 + else + ((observed - expected)**2) / expected end - - decaying_score = score * (0.5**((at_time.to_f - status.created_at.to_f) / options[:score_halflife].to_f)) - - add_to_and_remove_from_subsets(status.id, decaying_score, { - all: true, - allowed: status.trendable? && status.account.discoverable?, - }) - - next unless valid_locale?(status.language) - - add_to_and_remove_from_subsets(status.id, decaying_score, { - "all:#{status.language}" => true, - "allowed:#{status.language}" => status.trendable? && status.account.discoverable?, - }) end - # Clean up localized sets by calculating the intersection with the main - # set. We do this instead of just deleting the localized sets to avoid - # having moments where the API returns empty results + decaying_score = score * (0.5**((at_time.to_f - status.created_at.to_f) / options[:score_halflife].to_f)) - Trends.available_locales.each do |locale| - redis.zinterstore("#{key_prefix}:all:#{locale}", ["#{key_prefix}:all:#{locale}", "#{key_prefix}:all"], aggregate: 'max') - redis.zinterstore("#{key_prefix}:allowed:#{locale}", ["#{key_prefix}:allowed:#{locale}", "#{key_prefix}:all"], aggregate: 'max') - end + next unless decaying_score >= options[:decay_threshold] + + global_items << { score: decaying_score, item: status } + locale_items[status.language] << { account_id: status.account_id, score: decaying_score, item: status } if valid_locale?(status.language) end + + replace_items('', global_items) + + Trends.available_locales.each do |locale| + replace_items(":#{locale}", locale_items[locale]) + end + end + + def filter_for_allowed_items(items) + # Show only one status per account, pick the one with the highest score + # that's also eligible to trend + + items.group_by { |item| item[:account_id] }.values.filter_map { |account_items| account_items.select { |item| item[:item].trendable? && item[:item].account.discoverable? }.max_by { |item| item[:score] } } end def would_be_trending?(id) diff --git a/app/models/trends/tags.rb b/app/models/trends/tags.rb index 3caa58815..19ade52ba 100644 --- a/app/models/trends/tags.rb +++ b/app/models/trends/tags.rb @@ -8,6 +8,7 @@ class Trends::Tags < Trends::Base review_threshold: 3, max_score_cooldown: 2.days.freeze, max_score_halflife: 4.hours.freeze, + decay_threshold: 1, } def register(status, at_time = Time.now.utc) @@ -26,7 +27,6 @@ class Trends::Tags < Trends::Base def refresh(at_time = Time.now.utc) tags = Tag.where(id: (recently_used_ids(at_time) + currently_trending_ids(false, -1)).uniq) calculate_scores(tags, at_time) - trim_older_items end def request_review @@ -53,6 +53,8 @@ class Trends::Tags < Trends::Base private def calculate_scores(tags, at_time) + items = [] + tags.each do |tag| expected = tag.history.get(at_time - 1.day).accounts.to_f expected = 1.0 if expected.zero? @@ -79,11 +81,16 @@ class Trends::Tags < Trends::Base decaying_score = max_score * (0.5**((at_time.to_f - max_time.to_f) / options[:max_score_halflife].to_f)) - add_to_and_remove_from_subsets(tag.id, decaying_score, { - all: true, - allowed: tag.trendable?, - }) + next unless decaying_score >= options[:decay_threshold] + + items << { score: decaying_score, item: tag } end + + replace_items('', items) + end + + def filter_for_allowed_items(items) + items.select { |item| item[:item].trendable? } end def would_be_trending?(id) diff --git a/app/models/user.rb b/app/models/user.rb index 76ad7d1b2..b38de74b8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -47,10 +47,12 @@ class User < ApplicationRecord remember_token current_sign_in_ip last_sign_in_ip + skip_sign_in_token ) include Settings::Extend include UserRoles + include Redisable # The home and list feeds will be stored in Redis for this amount # of time, and status fan-out to followers will include only people @@ -129,10 +131,10 @@ class User < ApplicationRecord :reduce_motion, :system_font_ui, :noindex, :flavour, :skin, :display_media, :hide_followers_count, :expand_spoilers, :default_language, :aggregate_reblogs, :show_application, :advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images, - :disable_swiping, :default_content_type, :system_emoji_font, + :disable_swiping, :always_send_emails, :default_content_type, :system_emoji_font, to: :settings, prefix: :setting, allow_nil: false - attr_reader :invite_code, :sign_in_token_attempt + attr_reader :invite_code attr_writer :external, :bypass_invite_request_check def confirmed? @@ -200,10 +202,6 @@ class User < ApplicationRecord !account.memorial? end - def suspicious_sign_in?(ip) - !otp_required_for_login? && !skip_sign_in_token? && current_sign_in_at.present? && !ips.where(ip: ip).exists? - end - def functional? confirmed? && approved? && !disabled? && !account.suspended? && !account.memorial? end @@ -376,15 +374,6 @@ class User < ApplicationRecord setting_display_media == 'hide_all' end - def sign_in_token_expired? - sign_in_token_sent_at.nil? || sign_in_token_sent_at < 5.minutes.ago - end - - def generate_sign_in_token - self.sign_in_token = Devise.friendly_token(6) - self.sign_in_token_sent_at = Time.now.utc - end - protected def send_devise_notification(notification, *args, **kwargs) @@ -476,7 +465,7 @@ class User < ApplicationRecord end def regenerate_feed! - RegenerationWorker.perform_async(account_id) if Redis.current.set("account:#{account_id}:regeneration", true, nx: true, ex: 1.day.seconds) + RegenerationWorker.perform_async(account_id) if redis.set("account:#{account_id}:regeneration", true, nx: true, ex: 1.day.seconds) end def needs_feed_update? diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb index 92e2c4f4b..140905e1f 100644 --- a/app/policies/user_policy.rb +++ b/app/policies/user_policy.rb @@ -13,14 +13,6 @@ class UserPolicy < ApplicationPolicy admin? && !record.staff? end - def disable_sign_in_token_auth? - staff? - end - - def enable_sign_in_token_auth? - staff? - end - def confirm? staff? && !record.confirmed? end diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index 4786aa760..ad05fdf6b 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -44,7 +44,7 @@ class ManifestSerializer < ActiveModel::Serializer end def start_url - '/web/timelines/home' + '/web/home' end def scope @@ -69,7 +69,7 @@ class ManifestSerializer < ActiveModel::Serializer [ { name: 'New toot', - url: '/web/statuses/new', + url: '/web/publish', icons: [ { src: '/shortcuts/new-status.png', @@ -91,7 +91,7 @@ class ManifestSerializer < ActiveModel::Serializer }, { name: 'Direct messages', - url: '/web/timelines/direct', + url: '/web/conversations', icons: [ { src: '/shortcuts/direct.png', diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index daa7de7ea..ef2c6c6e5 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -139,6 +139,10 @@ class REST::StatusSerializer < ActiveModel::Serializer class ApplicationSerializer < ActiveModel::Serializer attributes :name, :website + + def website + object.website.presence + end end class MentionSerializer < ActiveModel::Serializer diff --git a/app/serializers/web/notification_serializer.rb b/app/serializers/web/notification_serializer.rb index ee83ec8b2..c5a908b19 100644 --- a/app/serializers/web/notification_serializer.rb +++ b/app/serializers/web/notification_serializer.rb @@ -34,6 +34,6 @@ class Web::NotificationSerializer < ActiveModel::Serializer def body str = strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note) - truncate(HTMLEntities.new.decode(str.to_str), length: 140) # Do not encode entities, since this value will not be used in HTML + truncate(HTMLEntities.new.decode(str.to_str), length: 140, escape: false) # Do not encode entities, since this value will not be used in HTML end end diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index 780741feb..37d05e055 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -7,24 +7,48 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService return if account.featured_collection_url.blank? || account.suspended? || account.local? @account = account - @json = fetch_resource(@account.featured_collection_url, true) + @json = fetch_resource(@account.featured_collection_url, true, local_follower) - return unless supported_context? + return unless supported_context?(@json) - case @json['type'] - when 'Collection', 'CollectionPage' - process_items @json['items'] - when 'OrderedCollection', 'OrderedCollectionPage' - process_items @json['orderedItems'] - end + process_items(collection_items(@json)) end private + def collection_items(collection) + collection = fetch_collection(collection['first']) if collection['first'].present? + return unless collection.is_a?(Hash) + + case collection['type'] + when 'Collection', 'CollectionPage' + collection['items'] + when 'OrderedCollection', 'OrderedCollectionPage' + collection['orderedItems'] + end + end + + def fetch_collection(collection_or_uri) + return collection_or_uri if collection_or_uri.is_a?(Hash) + return if invalid_origin?(collection_or_uri) + + fetch_resource_without_id_validation(collection_or_uri, local_follower, true) + end + def process_items(items) - status_ids = items.map { |item| value_or_id(item) } - .filter_map { |uri| ActivityPub::FetchRemoteStatusService.new.call(uri, on_behalf_of: local_follower) unless ActivityPub::TagManager.instance.local_uri?(uri) } - .filter_map { |status| status.id if status.account_id == @account.id } + status_ids = items.filter_map do |item| + uri = value_or_id(item) + next if ActivityPub::TagManager.instance.local_uri?(uri) + + status = ActivityPub::FetchRemoteStatusService.new.call(uri, on_behalf_of: local_follower) + next unless status&.account_id == @account.id + + status.id + rescue ActiveRecord::RecordInvalid => e + Rails.logger.debug "Invalid pinned status #{uri}: #{e.message}" + nil + end + to_remove = [] to_add = status_ids @@ -43,11 +67,9 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService end end - def supported_context? - super(@json) - end - def local_follower - @local_follower ||= @account.followers.local.without_suspended.first + return @local_follower if defined?(@local_follower) + + @local_follower = @account.followers.local.without_suspended.first end end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index ec5140720..5649153ee 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -3,6 +3,7 @@ class ActivityPub::ProcessAccountService < BaseService include JsonLdHelper include DomainControlHelper + include Redisable # Should be called with confirmed valid JSON # and WebFinger-resolved username and domain @@ -289,7 +290,7 @@ class ActivityPub::ProcessAccountService < BaseService end def lock_options - { redis: Redis.current, key: "process_account:#{@uri}", autorelease: 15.minutes.seconds } + { redis: redis, key: "process_account:#{@uri}", autorelease: 15.minutes.seconds } end def process_tags diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 6dc14d8c2..fb6e44c6d 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -2,6 +2,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService include JsonLdHelper + include Redisable def call(status, json) raise ArgumentError, 'Status has unsaved changes' if status.changed? @@ -17,10 +18,19 @@ class ActivityPub::ProcessStatusUpdateService < BaseService # Only native types can be updated at the moment return @status if !expected_type? || already_updated_more_recently? - last_edit_date = status.edited_at.presence || status.created_at + if @status_parser.edited_at.present? && (@status.edited_at.nil? || @status_parser.edited_at > @status.edited_at) + handle_explicit_update! + else + handle_implicit_update! + end - # Since we rely on tracking of previous changes, ensure clean slate - status.clear_changes_information + @status + end + + private + + def handle_explicit_update! + last_edit_date = @status.edited_at.presence || @status.created_at # Only allow processing one create/update per status at a time RedisLock.acquire(lock_options) do |lock| @@ -45,12 +55,20 @@ class ActivityPub::ProcessStatusUpdateService < BaseService end end - forward_activity! if significant_changes? && @status_parser.edited_at.present? && @status_parser.edited_at > last_edit_date - - @status + forward_activity! if significant_changes? && @status_parser.edited_at > last_edit_date end - private + def handle_implicit_update! + RedisLock.acquire(lock_options) do |lock| + if lock.acquired? + update_poll!(allow_significant_changes: false) + else + raise Mastodon::RaceConditionError + end + end + + queue_poll_notifications! + end def update_media_attachments! previous_media_attachments = @status.media_attachments.to_a @@ -98,7 +116,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @media_attachments_changed = true if @status.ordered_media_attachment_ids != previous_media_attachments_ids end - def update_poll! + def update_poll!(allow_significant_changes: true) previous_poll = @status.preloadable_poll @previous_expires_at = previous_poll&.expires_at poll_parser = ActivityPub::Parser::PollParser.new(@json) @@ -109,6 +127,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService # If for some reasons the options were changed, it invalidates all previous # votes, so we need to remove them @poll_changed = true if poll_parser.significantly_changes?(poll) + return if @poll_changed && !allow_significant_changes poll.last_fetched_at = Time.now.utc poll.options = poll_parser.options @@ -121,6 +140,8 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @status.poll_id = poll.id elsif previous_poll.present? + return unless allow_significant_changes + previous_poll.destroy! @poll_changed = true @status.poll_id = nil @@ -132,7 +153,10 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @status.spoiler_text = @status_parser.spoiler_text || '' @status.sensitive = @account.sensitized? || @status_parser.sensitive || false @status.language = @status_parser.language - @status.edited_at = @status_parser.edited_at || Time.now.utc if significant_changes? + + @significant_changes = text_significantly_changed? || @status.spoiler_text_changed? || @media_attachments_changed || @poll_changed + + @status.edited_at = @status_parser.edited_at if significant_changes? @status.save! end @@ -218,7 +242,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService end def lock_options - { redis: Redis.current, key: "create:#{@uri}", autorelease: 15.minutes.seconds } + { redis: redis, key: "create:#{@uri}", autorelease: 15.minutes.seconds } end def record_previous_edit! @@ -243,7 +267,14 @@ class ActivityPub::ProcessStatusUpdateService < BaseService end def significant_changes? - @status.text_changed? || @status.text_previously_changed? || @status.spoiler_text_changed? || @status.spoiler_text_previously_changed? || @media_attachments_changed || @poll_changed + @significant_changes + end + + def text_significantly_changed? + return false unless @status.text_changed? + + old, new = @status.text_change + HtmlAwareFormatter.new(old, false).to_s != HtmlAwareFormatter.new(new, false).to_s end def already_updated_more_recently? diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index f182cb83e..9d6d7e784 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class FanOutOnWriteService < BaseService + include Redisable + # Push a status into home and mentions feeds # @param [Status] status # @param [Hash] options @@ -107,20 +109,20 @@ class FanOutOnWriteService < BaseService def broadcast_to_hashtag_streams! @status.tags.pluck(:name).each do |hashtag| - Redis.current.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", anonymous_payload) - Redis.current.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", anonymous_payload) if @status.local? + redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", anonymous_payload) + redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", anonymous_payload) if @status.local? end end def broadcast_to_public_streams! return if @status.reply? && @status.in_reply_to_account_id != @account.id && !Setting.show_replies_in_public_timelines - Redis.current.publish('timeline:public', anonymous_payload) - Redis.current.publish(@status.local? ? 'timeline:public:local' : 'timeline:public:remote', anonymous_payload) + redis.publish('timeline:public', anonymous_payload) + redis.publish(@status.local? ? 'timeline:public:local' : 'timeline:public:remote', anonymous_payload) if @status.with_media? - Redis.current.publish('timeline:public:media', anonymous_payload) - Redis.current.publish(@status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', anonymous_payload) + redis.publish('timeline:public:media', anonymous_payload) + redis.publish(@status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', anonymous_payload) end end diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 9c8b5ea20..868796a6b 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class FetchLinkCardService < BaseService + include Redisable + URL_PATTERN = %r{ (#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]}) # $1 preceding chars ( # $2 URL @@ -155,6 +157,6 @@ class FetchLinkCardService < BaseService end def lock_options - { redis: Redis.current, key: "fetch:#{@original_url}", autorelease: 15.minutes.seconds } + { redis: redis, key: "fetch:#{@original_url}", autorelease: 15.minutes.seconds } end end diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index a90f17cfd..d30b33876 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class NotifyService < BaseService + include Redisable + def call(recipient, type, activity) @recipient = recipient @activity = activity @@ -8,10 +10,15 @@ class NotifyService < BaseService return if recipient.user.nil? || blocked? - create_notification! + @notification.save! + + # It's possible the underlying activity has been deleted + # between the save call and now + return if @notification.activity.nil? + push_notification! push_to_conversation! if direct_message? - send_email! if email_enabled? + send_email! if email_needed? rescue ActiveRecord::RecordInvalid nil end @@ -92,8 +99,8 @@ class NotifyService < BaseService end def blocked? - blocked = @recipient.suspended? # Skip if the recipient account is suspended anyway - blocked ||= from_self? && @notification.type != :poll # Skip for interactions with self + blocked = @recipient.suspended? + blocked ||= from_self? && @notification.type != :poll return blocked if message? && from_staff? @@ -117,38 +124,52 @@ class NotifyService < BaseService end end - def create_notification! - @notification.save! + def push_notification! + push_to_streaming_api! if subscribed_to_streaming_api? + push_to_web_push_subscriptions! end - def push_notification! - return if @notification.activity.nil? + def push_to_streaming_api! + redis.publish("timeline:#{@recipient.id}:notifications", Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, :notification))) + end - Redis.current.publish("timeline:#{@recipient.id}:notifications", Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, :notification))) - send_push_notifications! + def subscribed_to_streaming_api? + redis.exists?("subscribed:timeline:#{@recipient.id}") || redis.exists?("subscribed:timeline:#{@recipient.id}:notifications") end def push_to_conversation! - return if @notification.activity.nil? AccountConversation.add_status(@recipient, @notification.target_status) end - def send_push_notifications! - subscriptions_ids = ::Web::PushSubscription.where(user_id: @recipient.user.id) - .select { |subscription| subscription.pushable?(@notification) } - .map(&:id) + def push_to_web_push_subscriptions! + ::Web::PushNotificationWorker.push_bulk(web_push_subscriptions.select { |subscription| subscription.pushable?(@notification) }) { |subscription| [subscription.id, @notification.id] } + end - ::Web::PushNotificationWorker.push_bulk(subscriptions_ids) do |subscription_id| - [subscription_id, @notification.id] - end + def web_push_subscriptions + @web_push_subscriptions ||= ::Web::PushSubscription.where(user_id: @recipient.user.id).to_a + end + + def subscribed_to_web_push? + web_push_subscriptions.any? end def send_email! - return if @notification.activity.nil? - NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later(wait: 2.minutes) + NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later(wait: 2.minutes) if NotificationMailer.respond_to?(@notification.type) end - def email_enabled? + def email_needed? + (!recipient_online? || always_send_emails?) && send_email_for_notification_type? + end + + def recipient_online? + subscribed_to_streaming_api? || subscribed_to_web_push? + end + + def always_send_emails? + @recipient.user.settings.always_send_emails + end + + def send_email_for_notification_type? @recipient.user.settings.notification_emails[@notification.type.to_s] end end diff --git a/app/services/precompute_feed_service.rb b/app/services/precompute_feed_service.rb index b4fa70710..4212e4389 100644 --- a/app/services/precompute_feed_service.rb +++ b/app/services/precompute_feed_service.rb @@ -1,10 +1,12 @@ # frozen_string_literal: true class PrecomputeFeedService < BaseService + include Redisable + def call(account) FeedManager.instance.populate_home(account) FeedManager.instance.populate_direct_feed(account) ensure - Redis.current.del("account:#{account.id}:regeneration") + redis.del("account:#{account.id}:regeneration") end end diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index c28e16572..c31d89776 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -17,10 +17,10 @@ class RemoveStatusService < BaseService @account = status.account @options = options - @status.discard - RedisLock.acquire(lock_options) do |lock| if lock.acquired? + @status.discard + remove_from_self if @account.local? remove_from_followers remove_from_lists @@ -154,6 +154,6 @@ class RemoveStatusService < BaseService end def lock_options - { redis: Redis.current, key: "distribute:#{@status.id}", autorelease: 5.minutes.seconds } + { redis: redis, key: "distribute:#{@status.id}", autorelease: 5.minutes.seconds } end end diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index 3a372ef2a..387e2e09b 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -4,6 +4,7 @@ class ResolveAccountService < BaseService include JsonLdHelper include DomainControlHelper include WebfingerHelper + include Redisable # Find or create an account record for a remote user. When creating, # look up the user's webfinger and fetch ActivityPub data @@ -65,7 +66,7 @@ class ResolveAccountService < BaseService @username = @account.username @domain = @account.domain else - @username, @domain = uri.split('@') + @username, @domain = uri.strip.gsub(/\A@/, '').split('@') end @domain = begin @@ -147,6 +148,6 @@ class ResolveAccountService < BaseService end def lock_options - { redis: Redis.current, key: "resolve:#{@username}@#{@domain}", autorelease: 15.minutes.seconds } + { redis: redis, key: "resolve:#{@username}@#{@domain}", autorelease: 15.minutes.seconds } end end diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index 5981e4d98..e2c745673 100644 --- a/app/services/resolve_url_service.rb +++ b/app/services/resolve_url_service.rb @@ -30,6 +30,11 @@ class ResolveURLService < BaseService end def process_url_from_db + if [500, 502, 503, 504, nil].include?(fetch_resource_service.response_code) + account = Account.find_by(uri: @url) + return account unless account.nil? + end + return unless @on_behalf_of.present? && [401, 403, 404].include?(fetch_resource_service.response_code) # It may happen that the resource is a private toot, and thus not fetchable, diff --git a/app/services/vote_service.rb b/app/services/vote_service.rb index 19e453332..b77812970 100644 --- a/app/services/vote_service.rb +++ b/app/services/vote_service.rb @@ -3,6 +3,7 @@ class VoteService < BaseService include Authorization include Payloadable + include Redisable def call(account, poll, choices) authorize_with account, poll, :vote? @@ -77,6 +78,6 @@ class VoteService < BaseService end def lock_options - { redis: Redis.current, key: "vote:#{@poll.id}:#{@account.id}" } + { redis: redis, key: "vote:#{@poll.id}:#{@account.id}" } end end diff --git a/app/validators/email_mx_validator.rb b/app/validators/email_mx_validator.rb index 237ca4c7b..20f2fd37c 100644 --- a/app/validators/email_mx_validator.rb +++ b/app/validators/email_mx_validator.rb @@ -15,7 +15,7 @@ class EmailMxValidator < ActiveModel::Validator if resolved_ips.empty? user.errors.add(:email, :unreachable) - elsif on_blacklist?(resolved_domains, resolved_ips, user.sign_up_ip) + elsif on_blacklist?(resolved_domains, user.sign_up_ip) user.errors.add(:email, :blocked) end end @@ -57,7 +57,7 @@ class EmailMxValidator < ActiveModel::Validator [ips, records] end - def on_blacklist?(domains, resolved_ips, attempt_ip) - EmailDomainBlock.block?(domains, ips: resolved_ips, attempt_ip: attempt_ip) + def on_blacklist?(domains, attempt_ip) + EmailDomainBlock.block?(domains, attempt_ip: attempt_ip) end end diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index 1230294fe..a69832b04 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -128,17 +128,11 @@ %td{ rowspan: can?(:reset_password, @account.user) ? 2 : 1 } - if @account.user&.two_factor_enabled? = t 'admin.accounts.security_measures.password_and_2fa' - - elsif @account.user&.skip_sign_in_token? - = t 'admin.accounts.security_measures.only_password' - else - = t 'admin.accounts.security_measures.password_and_sign_in_token' + = t 'admin.accounts.security_measures.only_password' %td - if @account.user&.two_factor_enabled? = table_link_to 'unlock', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(@account.user.id), method: :delete if can?(:disable_2fa, @account.user) - - elsif @account.user&.skip_sign_in_token? - = table_link_to 'lock', t('admin.accounts.enable_sign_in_token_auth'), admin_user_sign_in_token_authentication_path(@account.user.id), method: :post if can?(:enable_sign_in_token_auth, @account.user) - - else - = table_link_to 'unlock', t('admin.accounts.disable_sign_in_token_auth'), admin_user_sign_in_token_authentication_path(@account.user.id), method: :delete if can?(:disable_sign_in_token_auth, @account.user) - if can?(:reset_password, @account.user) %tr diff --git a/app/views/admin/custom_emojis/new.html.haml b/app/views/admin/custom_emojis/new.html.haml index 95996dec8..1ea931a2f 100644 --- a/app/views/admin/custom_emojis/new.html.haml +++ b/app/views/admin/custom_emojis/new.html.haml @@ -7,7 +7,7 @@ .fields-group = f.input :shortcode, wrapper: :with_label, label: t('admin.custom_emojis.shortcode'), hint: t('admin.custom_emojis.shortcode_hint') .fields-group - = f.input :image, wrapper: :with_label, input_html: { accept: CustomEmoji::IMAGE_MIME_TYPES.join(' ') }, hint: t('admin.custom_emojis.image_hint', size: number_to_human_size(CustomEmoji::LIMIT)) + = f.input :image, wrapper: :with_label, input_html: { accept: CustomEmoji::IMAGE_MIME_TYPES.join(' ') }, hint: t('admin.custom_emojis.image_hint', size: number_to_human_size(CustomEmoji::LOCAL_LIMIT)) .actions = f.button :button, t('admin.custom_emojis.upload'), type: :submit diff --git a/app/views/admin/instances/index.html.haml b/app/views/admin/instances/index.html.haml index f8273718d..ee1b3d0ce 100644 --- a/app/views/admin/instances/index.html.haml +++ b/app/views/admin/instances/index.html.haml @@ -3,9 +3,9 @@ - content_for :heading_actions do - if whitelist_mode? - = link_to t('admin.domain_allows.add_new'), new_admin_domain_allow_path, class: 'button' + = link_to t('admin.domain_allows.add_new'), new_admin_domain_allow_path, class: 'button', id: 'add-instance-button' - else - = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path, class: 'button' + = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path, class: 'button', id: 'add-instance-button' .filters .filter-subset diff --git a/app/views/admin/report_notes/_report_note.html.haml b/app/views/admin/report_notes/_report_note.html.haml index f9d57c2ae..3bccd3b4b 100644 --- a/app/views/admin/report_notes/_report_note.html.haml +++ b/app/views/admin/report_notes/_report_note.html.haml @@ -15,4 +15,7 @@ - if can?(:destroy, report_note) .report-notes__item__actions - = table_link_to 'trash', t('admin.reports.notes.delete'), admin_report_note_path(report_note), method: :delete + - if report_note.is_a?(AccountModerationNote) + = table_link_to 'trash', t('admin.reports.notes.delete'), admin_account_moderation_note_path(report_note), method: :delete + - else + = table_link_to 'trash', t('admin.reports.notes.delete'), admin_report_note_path(report_note), method: :delete diff --git a/app/views/admin/trends/links/_preview_card.html.haml b/app/views/admin/trends/links/_preview_card.html.haml index 2e6a0c62f..7d4897c7e 100644 --- a/app/views/admin/trends/links/_preview_card.html.haml +++ b/app/views/admin/trends/links/_preview_card.html.haml @@ -18,9 +18,9 @@ = t('admin.trends.links.shared_by_over_week', count: preview_card.history.reduce(0) { |sum, day| sum + day.accounts }) - - if preview_card.trendable? && (rank = Trends.links.rank(preview_card.id)) + - if preview_card.trendable? && (rank = Trends.links.rank(preview_card.id, locale: params[:locale].presence)) • - %abbr{ title: t('admin.trends.tags.current_score', score: Trends.links.score(preview_card.id)) }= t('admin.trends.tags.trending_rank', rank: rank + 1) + %abbr{ title: t('admin.trends.tags.current_score', score: Trends.links.score(preview_card.id, locale: params[:locale].presence)) }= t('admin.trends.tags.trending_rank', rank: rank + 1) - if preview_card.decaying? • diff --git a/app/views/admin/trends/statuses/_status.html.haml b/app/views/admin/trends/statuses/_status.html.haml index 0c463c6b1..e4d75bbb9 100644 --- a/app/views/admin/trends/statuses/_status.html.haml +++ b/app/views/admin/trends/statuses/_status.html.haml @@ -25,9 +25,9 @@ - if status.trendable? && !status.account.discoverable? • = t('admin.trends.statuses.not_discoverable') - - if status.trendable? && (rank = Trends.statuses.rank(status.id)) + - if status.trendable? && (rank = Trends.statuses.rank(status.id, locale: params[:locale].presence)) • - %abbr{ title: t('admin.trends.tags.current_score', score: Trends.statuses.score(status.id)) }= t('admin.trends.tags.trending_rank', rank: rank + 1) + %abbr{ title: t('admin.trends.tags.current_score', score: Trends.statuses.score(status.id, locale: params[:locale].presence)) }= t('admin.trends.tags.trending_rank', rank: rank + 1) - elsif status.requires_review? • = t('admin.trends.pending_review') diff --git a/app/views/admin_mailer/_new_trending_tags.text.erb b/app/views/admin_mailer/_new_trending_tags.text.erb index 49fe84309..cde5af4e4 100644 --- a/app/views/admin_mailer/_new_trending_tags.text.erb +++ b/app/views/admin_mailer/_new_trending_tags.text.erb @@ -11,4 +11,4 @@ <%= raw t('admin_mailer.new_trends.new_trending_tags.no_approved_tags') %> <% end %> -<%= raw t('application_mailer.view')%> <%= admin_trends_tags_url(pending_review: '1') %> +<%= raw t('application_mailer.view')%> <%= admin_trends_tags_url(status: 'pending_review') %> diff --git a/app/views/auth/sessions/sign_in_token.html.haml b/app/views/auth/sessions/sign_in_token.html.haml deleted file mode 100644 index 8923203cd..000000000 --- a/app/views/auth/sessions/sign_in_token.html.haml +++ /dev/null @@ -1,14 +0,0 @@ -- content_for :page_title do - = t('auth.login') - -= simple_form_for(resource, as: resource_name, url: session_path(resource_name), method: :post) do |f| - %p.hint.otp-hint= t('users.suspicious_sign_in_confirmation') - - .fields-group - = f.input :sign_in_token_attempt, type: :number, wrapper: :with_label, label: t('simple_form.labels.defaults.sign_in_token_attempt'), input_html: { 'aria-label' => t('simple_form.labels.defaults.sign_in_token_attempt'), :autocomplete => 'off' }, autofocus: true - - .actions - = f.button :button, t('auth.login'), type: :submit - - - if Setting.site_contact_email.present? - %p.hint.subtle-hint= t('users.generic_access_help_html', email: mail_to(Setting.site_contact_email, nil)) diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml index e01cd077f..38e8b171e 100644 --- a/app/views/settings/preferences/notifications/show.html.haml +++ b/app/views/settings/preferences/notifications/show.html.haml @@ -27,6 +27,9 @@ = ff.input :trending_link, as: :boolean, wrapper: :with_label = ff.input :trending_status, as: :boolean, wrapper: :with_label + .fields-group + = f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label + .fields-group = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff| = ff.input :digest, as: :boolean, wrapper: :with_label diff --git a/app/views/user_mailer/sign_in_token.html.haml b/app/views/user_mailer/suspicious_sign_in.html.haml similarity index 55% rename from app/views/user_mailer/sign_in_token.html.haml rename to app/views/user_mailer/suspicious_sign_in.html.haml index 826b34e7c..856f9fb7c 100644 --- a/app/views/user_mailer/sign_in_token.html.haml +++ b/app/views/user_mailer/suspicious_sign_in.html.haml @@ -13,32 +13,14 @@ %tbody %tr %td.column-cell.text-center.padded - %table.hero-icon.alert-icon{ align: 'center', cellspacing: 0, cellpadding: 0 } + %table.hero-icon.warning-icon{ align: 'center', cellspacing: 0, cellpadding: 0 } %tbody %tr %td - = image_tag full_pack_url('media/images/mailer/icon_email.png'), alt: '' + = image_tag full_pack_url('media/images/mailer/icon_lock_open.png'), alt: '' - %h1= t 'user_mailer.sign_in_token.title' - %p.lead= t 'user_mailer.sign_in_token.explanation' - -%table.email-table{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.email-body - .email-container - %table.content-section{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.content-cell.content-start - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.input-cell - %table.input{ align: 'center', cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td= @resource.sign_in_token + %h1= t 'user_mailer.suspicious_sign_in.title' + %p= t 'user_mailer.suspicious_sign_in.explanation' %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody @@ -55,7 +37,7 @@ %tbody %tr %td.column-cell.text-center - %p= t 'user_mailer.sign_in_token.details' + %p= t 'user_mailer.suspicious_sign_in.details' %tr %td.column-cell.text-center %p @@ -82,24 +64,4 @@ %tbody %tr %td.column-cell.text-center - %p= t 'user_mailer.sign_in_token.further_actions' - -%table.email-table{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.email-body - .email-container - %table.content-section{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.content-cell - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.button-cell - %table.button{ align: 'center', cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.button-primary - = link_to edit_user_registration_url do - %span= t 'settings.account_settings' + %p= t 'user_mailer.suspicious_sign_in.further_actions_html', action: link_to(t('user_mailer.suspicious_sign_in.change_password'), edit_user_registration_url) diff --git a/app/views/user_mailer/sign_in_token.text.erb b/app/views/user_mailer/suspicious_sign_in.text.erb similarity index 56% rename from app/views/user_mailer/sign_in_token.text.erb rename to app/views/user_mailer/suspicious_sign_in.text.erb index 2539ddaf6..7d2ca28e8 100644 --- a/app/views/user_mailer/sign_in_token.text.erb +++ b/app/views/user_mailer/suspicious_sign_in.text.erb @@ -1,17 +1,15 @@ -<%= t 'user_mailer.sign_in_token.title' %> +<%= t 'user_mailer.suspicious_sign_in.title' %> === -<%= t 'user_mailer.sign_in_token.explanation' %> +<%= t 'user_mailer.suspicious_sign_in.explanation' %> -=> <%= @resource.sign_in_token %> - -<%= t 'user_mailer.sign_in_token.details' %> +<%= t 'user_mailer.suspicious_sign_in.details' %> <%= t('sessions.ip') %>: <%= @remote_ip %> <%= t('sessions.browser') %>: <%= t('sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: "#{@detection.id}"), platform: t("sessions.platforms.#{@detection.platform.id}", default: "#{@detection.platform.id}")) %> <%= l(@timestamp) %> -<%= t 'user_mailer.sign_in_token.further_actions' %> +<%= t 'user_mailer.suspicious_sign_in.further_actions_html', action: t('user_mailer.suspicious_sign_in.change_password') %> => <%= edit_user_registration_url %> diff --git a/app/workers/distribution_worker.rb b/app/workers/distribution_worker.rb index 770325ccf..474b4daaf 100644 --- a/app/workers/distribution_worker.rb +++ b/app/workers/distribution_worker.rb @@ -2,9 +2,10 @@ class DistributionWorker include Sidekiq::Worker + include Redisable def perform(status_id, options = {}) - RedisLock.acquire(redis: Redis.current, key: "distribute:#{status_id}", autorelease: 5.minutes.seconds) do |lock| + RedisLock.acquire(redis: redis, key: "distribute:#{status_id}", autorelease: 5.minutes.seconds) do |lock| if lock.acquired? FanOutOnWriteService.new.call(Status.find(status_id), **options.symbolize_keys) else diff --git a/app/workers/merge_worker.rb b/app/workers/merge_worker.rb index 6ebb9a400..e526d2887 100644 --- a/app/workers/merge_worker.rb +++ b/app/workers/merge_worker.rb @@ -2,12 +2,13 @@ class MergeWorker include Sidekiq::Worker + include Redisable def perform(from_account_id, into_account_id) FeedManager.instance.merge_into_home(Account.find(from_account_id), Account.find(into_account_id)) rescue ActiveRecord::RecordNotFound true ensure - Redis.current.del("account:#{into_account_id}:regeneration") + redis.del("account:#{into_account_id}:regeneration") end end diff --git a/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb index 7195f0ff9..bd92fe32c 100644 --- a/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb +++ b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb @@ -2,6 +2,7 @@ class Scheduler::AccountsStatusesCleanupScheduler include Sidekiq::Worker + include Redisable # This limit is mostly to be nice to the fediverse at large and not # generate too much traffic. @@ -83,14 +84,14 @@ class Scheduler::AccountsStatusesCleanupScheduler end def last_processed_id - Redis.current.get('account_statuses_cleanup_scheduler:last_account_id') + redis.get('account_statuses_cleanup_scheduler:last_account_id') end def save_last_processed_id(id) if id.nil? - Redis.current.del('account_statuses_cleanup_scheduler:last_account_id') + redis.del('account_statuses_cleanup_scheduler:last_account_id') else - Redis.current.set('account_statuses_cleanup_scheduler:last_account_id', id, ex: 1.hour.seconds) + redis.set('account_statuses_cleanup_scheduler:last_account_id', id, ex: 1.hour.seconds) end end end diff --git a/app/workers/scheduler/email_domain_block_refresh_scheduler.rb b/app/workers/scheduler/email_domain_block_refresh_scheduler.rb deleted file mode 100644 index e0ad89866..000000000 --- a/app/workers/scheduler/email_domain_block_refresh_scheduler.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::EmailDomainBlockRefreshScheduler - include Sidekiq::Worker - include Redisable - - sidekiq_options retry: 0 - - def perform - Resolv::DNS.open do |dns| - dns.timeouts = 5 - - EmailDomainBlock.find_each do |email_domain_block| - ips = begin - if ip?(email_domain_block.domain) - [email_domain_block.domain] - else - resources = dns.getresources(email_domain_block.domain, Resolv::DNS::Resource::IN::A).to_a + dns.getresources(email_domain_block.domain, Resolv::DNS::Resource::IN::AAAA).to_a - resources.map { |resource| resource.address.to_s } - end - end - - email_domain_block.update(ips: ips, last_refresh_at: Time.now.utc) - end - end - end - - def ip?(str) - str =~ Regexp.union([Resolv::IPv4::Regex, Resolv::IPv6::Regex]) - end -end diff --git a/chart/values.yaml b/chart/values.yaml index 54627854d..57d0b7391 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -8,7 +8,7 @@ image: # built from the most recent commit # # tag: latest - tag: v3.4.6 + tag: v3.5.2 # use `Always` when using `latest` tag pullPolicy: IfNotPresent diff --git a/config/application.rb b/config/application.rb index eb5af9cc0..64987cfe7 100644 --- a/config/application.rb +++ b/config/application.rb @@ -27,7 +27,6 @@ require_relative '../lib/sanitize_ext/sanitize_config' require_relative '../lib/redis/namespace_extensions' require_relative '../lib/paperclip/url_generator_extensions' require_relative '../lib/paperclip/attachment_extensions' -require_relative '../lib/paperclip/storage_extensions' require_relative '../lib/paperclip/lazy_thumbnail' require_relative '../lib/paperclip/gif_transcoder' require_relative '../lib/paperclip/transcoder' @@ -36,12 +35,12 @@ require_relative '../lib/paperclip/response_with_limit_adapter' require_relative '../lib/terrapin/multi_pipe_extensions' require_relative '../lib/mastodon/snowflake' require_relative '../lib/mastodon/version' +require_relative '../lib/mastodon/rack_middleware' require_relative '../lib/devise/two_factor_ldap_authenticatable' require_relative '../lib/devise/two_factor_pam_authenticatable' require_relative '../lib/chewy/strategy/custom_sidekiq' require_relative '../lib/webpacker/manifest_extensions' require_relative '../lib/webpacker/helper_extensions' -require_relative '../lib/action_dispatch/cookie_jar_extensions' require_relative '../lib/rails/engine_extensions' require_relative '../lib/active_record/database_tasks_extensions' require_relative '../lib/active_record/batches' @@ -166,6 +165,7 @@ module Mastodon config.middleware.use Rack::Attack config.middleware.use Rack::Deflater + config.middleware.use Mastodon::RackMiddleware config.to_prepare do Doorkeeper::AuthorizationsController.layout 'modal' diff --git a/config/environments/production.rb b/config/environments/production.rb index 2b92e8cf8..1db7b018a 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -42,7 +42,7 @@ Rails.application.configure do config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX # Allow to specify public IP of reverse proxy if it's needed - config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split.map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present? + config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split(/(?:\s*,\s*|\s+)/).map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present? config.force_ssl = true config.ssl_options = { @@ -95,11 +95,12 @@ Rails.application.configure do config.action_mailer.default_options = { from: outgoing_email_address, - reply_to: ENV['SMTP_REPLY_TO'], - return_path: ENV['SMTP_RETURN_PATH'], message_id: -> { "<#{Mail.random_tag}@#{outgoing_email_domain}>" }, } + config.action_mailer.default_options[:reply_to] = ENV['SMTP_REPLY_TO'] if ENV['SMTP_REPLY_TO'].present? + config.action_mailer.default_options[:return_path] = ENV['SMTP_RETURN_PATH'] if ENV['SMTP_RETURN_PATH'].present? + config.action_mailer.smtp_settings = { :port => ENV['SMTP_PORT'], :address => ENV['SMTP_SERVER'], diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index f41b8dfff..7139bcea7 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -60,6 +60,7 @@ ignore_unused: - 'admin.accounts.roles.*' - 'admin.action_logs.actions.*' - 'themes.*' + - 'admin_mailer.new_appeal.actions.*' - 'statuses.attached.*' - 'move_handler.carry_{mutes,blocks}_over_text' - 'notification_mailer.*' diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index b434c68fa..c55bea7a7 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -8,7 +8,6 @@ Warden::Manager.after_set_user except: :fetch do |user, warden| value: session_id, expires: 1.year.from_now, httponly: true, - secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'), same_site: :lax, } end @@ -23,7 +22,6 @@ Warden::Manager.after_fetch do |user, warden| value: session_id, expires: 1.year.from_now, httponly: true, - secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'), same_site: :lax, } else @@ -265,7 +263,7 @@ Devise.setup do |config| # Options to be passed to the created cookie. For instance, you can set # secure: true in order to force SSL only cookies. - config.rememberable_options = { secure: true } + config.rememberable_options = {} # ==> Configuration for :validatable # Range for password length. diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index e2a045647..26b0a2f7c 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -83,6 +83,26 @@ if ENV['S3_ENABLED'] == 'true' s3_host_alias: ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] ) end + + # Some S3-compatible providers might not actually be compatible with some APIs + # used by kt-paperclip, see https://github.com/mastodon/mastodon/issues/16822 + if ENV['S3_FORCE_SINGLE_REQUEST'] == 'true' + module Paperclip + module Storage + module S3Extensions + def copy_to_local_file(style, local_dest_path) + log("copying #{path(style)} to local file #{local_dest_path}") + s3_object(style).download_file(local_dest_path, { mode: 'single_request' }) + rescue Aws::Errors::ServiceError => e + warn("#{e} - cannot copy #{path(style)} to local file #{local_dest_path}") + false + end + end + end + end + + Paperclip::Storage::S3.prepend(Paperclip::Storage::S3Extensions) + end elsif ENV['SWIFT_ENABLED'] == 'true' require 'fog/openstack' diff --git a/config/initializers/redis.rb b/config/initializers/redis.rb deleted file mode 100644 index 7573fc9f7..000000000 --- a/config/initializers/redis.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -redis_connection = Redis.new( - url: ENV['REDIS_URL'], - driver: :hiredis -) - -namespace = ENV.fetch('REDIS_NAMESPACE') { nil } - -if namespace - Redis.current = Redis::Namespace.new(namespace, redis: redis_connection) -else - Redis.current = redis_connection -end diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb index 3d9bf96fd..210964b1f 100644 --- a/config/initializers/session_store.rb +++ b/config/initializers/session_store.rb @@ -2,5 +2,5 @@ Rails.application.config.session_store :cookie_store, key: '_mastodon_session', - secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'), + secure: false, # All cookies have their secure flag set by the force_ssl option in production same_site: :lax diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 19a705ce8..c1327053d 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -1,12 +1,12 @@ # frozen_string_literal: true -require_relative '../../lib/sidekiq_error_handler' +require_relative '../../lib/mastodon/sidekiq_middleware' Sidekiq.configure_server do |config| config.redis = REDIS_SIDEKIQ_PARAMS config.server_middleware do |chain| - chain.add SidekiqErrorHandler + chain.add Mastodon::SidekiqMiddleware end config.server_middleware do |chain| diff --git a/config/initializers/stoplight.rb b/config/initializers/stoplight.rb index 7384b2e9a..8c3c5755a 100644 --- a/config/initializers/stoplight.rb +++ b/config/initializers/stoplight.rb @@ -1,4 +1,6 @@ require 'stoplight' -Stoplight::Light.default_data_store = Stoplight::DataStore::Redis.new(Redis.current) -Stoplight::Light.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)] +Rails.application.reloader.to_prepare do + Stoplight::Light.default_data_store = Stoplight::DataStore::Redis.new(RedisConfiguration.new.connection) + Stoplight::Light.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)] +end diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index fba97157f..03b594c0a 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -6,7 +6,7 @@ ca: expires_at: Data límit options: Opcions user: - agreement: Acord de servei + agreement: Acord sobre serveis email: Adreça de correu electrònic locale: Idioma password: Contrasenya @@ -19,7 +19,7 @@ ca: account: attributes: username: - invalid: ha de contenir només lletres, números i subratllats + invalid: només pot contenir lletres, números i guions baixos reserved: està reservat status: attributes: diff --git a/config/locales/activerecord.ga.yml b/config/locales/activerecord.ga.yml new file mode 100644 index 000000000..20a9da24e --- /dev/null +++ b/config/locales/activerecord.ga.yml @@ -0,0 +1 @@ +ga: diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index c63dc0e8d..38304ef93 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -1 +1,32 @@ +--- io: + activerecord: + attributes: + poll: + expires_at: Fina dato + options: Selektaji + user: + agreement: Servokonkordo + email: Retpostoadreso + locale: Regiono + password: Pasvorto + user/account: + username: Uzantonomo + user/invite_request: + text: Rezono + errors: + models: + account: + attributes: + username: + invalid: mustas konsistar nur literi, nombri e sublinei + reserved: rezervitas + status: + attributes: + reblog: + taken: de postajo ja existas + user: + attributes: + email: + blocked: uzas nepermisata retpostodomeno + unreachable: semblas ne existar diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index ad4c1eccf..ab13dce6c 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -28,5 +28,5 @@ ja: user: attributes: email: - blocked: は禁止されているプロバイダメールを使用します - unreachable: 存在しないようです + blocked: は禁止されているメールプロバイダを使用しています + unreachable: は存在しないようです diff --git a/config/locales/ar.yml b/config/locales/ar.yml index ba66c5749..aba42bb43 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -26,6 +26,8 @@ ar: هذا الحساب هو ممثل افتراضي يستخدم لتمثيل الخادم نفسه وليس أي مستخدم فردي. يستخدم لأغراض الاتحاد ولا ينبغي حظره إلا إذا كنت ترغب في حظر مثيل الخادم بأكمله، في هذه الحالة يجب عليك استخدام أداة حظر النطاق. learn_more: تعلم المزيد + logged_in_as_html: أنت متصل حالياً كـ %{username}. + logout_before_registering: أنت متصل سلفًا. privacy_policy: سياسة الخصوصية rules: قوانين الخادم rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:' @@ -178,6 +180,7 @@ ar: not_subscribed: غير مشترك pending: في انتظار المراجعة perform_full_suspension: تعليق الحساب + previous_strikes: العقوبات السابقة promote: ترقية protocol: البروتوكول public: عمومي @@ -209,7 +212,6 @@ ar: security_measures: only_password: كلمة المرور فقط password_and_2fa: كلمة المرور و 2FA - password_and_sign_in_token: كلمة المرور ورمز البريد الإلكتروني sensitive: حساس sensitized: مُعَين كمنشور حساس shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد @@ -460,10 +462,23 @@ ar: title: اقتراحات المتابعة unsuppress: إستعادة إقتراحات المتابعة instances: + availability: + title: التوفر back_to_all: الكل back_to_limited: محدود back_to_warning: تحذير by_domain: النطاق + content_policies: + comment: ملاحظة داخلية + policies: + reject_media: رفض الوسائط + reject_reports: رفض الشكاوى + policy: القواعد + reason: السبب العلني + title: سياسات المحتوى + dashboard: + instance_accounts_dimension: الحسابات الأكثر متابعة + instance_languages_dimension: اللغات الأكثر استخدامًا delivery: all: الكل clear: مسح أخطاء التسليم @@ -556,6 +571,7 @@ ar: forwarded: أُعيد توجيهه forwarded_to: أُعيد توجيهه إلى %{domain} mark_as_resolved: اعتبار الشكوى كمحلولة + mark_as_sensitive: تعيينه كمنشور حساس mark_as_unresolved: علم كغير محلولة no_one_assigned: لا أحد notes: @@ -721,6 +737,12 @@ ar: preview_card_providers: title: الناشرون rejected: مرفوض + statuses: + allow: السماح بالمنشور + allow_account: السماح للناشر + disallow: رفض المنشور + disallow_account: رفض الناشر + title: المنشورات المتداولة tags: current_score: التقييم الحالي %{score} dashboard: @@ -764,6 +786,8 @@ ar: body_remote: أبلغ شخص ما من %{domain} عن %{target} subject: تقرير جديد ل%{instance} (#%{id}) new_trends: + new_trending_links: + title: الروابط المتداولة new_trending_statuses: title: المنشورات الشائعة new_trending_tags: @@ -841,6 +865,7 @@ ar: status: account_status: حالة الحساب confirming: في انتظار اكتمال تأكيد البريد الإلكتروني. + functional: حسابك يعمل بشكل كامل. pending: إن طلبك قيد المراجعة من قبل فريقنا. قد يستغرق هذا بعض الوقت. سوف تتلقى بريدا إلكترونيا إذا تمت الموافقة على طلبك. redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}. too_fast: تم إرسال النموذج بسرعة كبيرة، حاول مرة أخرى. @@ -919,10 +944,12 @@ ar: created_at: بتاريخ recipient: موجّه إلى status: 'المنشور #%{id}' + title: "%{action} في %{date}" title_actions: delete_statuses: إزالة منشور disable: تجميد للحساب none: تحذير + silence: الحد من الحساب suspend: تعليق للحساب your_appeal_approved: تمت الموافقة على طعنك your_appeal_pending: لقد قمت بتقديم طعن @@ -1109,6 +1136,9 @@ ar: carry_mutes_over_text: انتقل هذا المستخدم من %{acct}، الذي كتَمتَه أنت. copy_account_note_text: 'انتقل هذا المستخدم من %{acct}، إليك ملاحظاتك السابقة عنه:' notification_mailer: + admin: + sign_up: + subject: أنشأ %{name} حسابًا digest: action: معاينة كافة الإشعارات body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في %{since} @@ -1120,13 +1150,6 @@ ar: other: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! two: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! zero: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - subject: - few: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418" - many: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418" - one: "إشعار واحد 1 منذ آخر زيارة لك لـ \U0001F418" - other: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418" - two: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418" - zero: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418" title: أثناء فترة غيابك... favourite: body: 'أُعجب %{name} بمنشورك:' @@ -1302,7 +1325,7 @@ ar: preferences: التفضيلات profile: الملف التعريفي relationships: المتابِعون والمتابَعون - statuses_cleanup: حذف المنشور الآلي + statuses_cleanup: الحذف الآلي للمنشورات two_factor_authentication: المُصادقة بخُطوَتَيْن webauthn_authentication: مفاتيح الأمان statuses: @@ -1339,6 +1362,7 @@ ar: other: 'يحتوي على وسوم غير مسموح بها: %{tags}' two: 'يحتوي على وسوم غير مسموح بها: %{tags}' zero: 'يحتوي على وسوم غير مسموح بها: %{tags}' + edited_at_html: عُدّل في %{date} errors: in_reply_not_found: إنّ المنشور الذي تحاول الرد عليه غير موجود على ما يبدو. open_in_web: افتح في الويب @@ -1405,7 +1429,7 @@ ar: '31556952': سنة واحدة '5259492': شهران '604800': أسبوع - '63113904': أسبوعان + '63113904': سنتان '7889238': 3 أشهر min_age_label: عتبة العمر min_favs: إبقاء المشاركات المفضلة أكثر من @@ -1414,7 +1438,7 @@ ar: min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات المشاركة stream_entries: pinned: منشور مثبّت - reblogged: رقّاه + reblogged: شارَكَه sensitive_content: محتوى حساس tags: does_not_match_previous_name: لا يطابق الإسم السابق @@ -1538,12 +1562,9 @@ ar: explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل! subject: نسخة بيانات حسابك جاهزة للتنزيل title: المغادرة بأرشيف الحساب - sign_in_token: - details: 'وفيما يلي تفاصيل المحاولة:' - explanation: 'اكتشفنا محاولة لتسجيل الدخول إلى حسابك من عنوان IP غير معروف. إذا كان هذا أنت ، يرجى إدخال رمز الأمان أدناه في صفحة تحدي تسجيل الدخول:' - further_actions: 'إذا لم يكن ذلك صادر منك، يرجى تغيير كلمتك السرية وتنشيط المصادقة الثنائية في حسابك. يمكنك القيام بذلك هنا:' - subject: الرجاء تأكيد محاولة الولوج - title: محاولة الولوج + suspicious_sign_in: + change_password: غيّر كلمتك السرية + subject: تم النفاذ عبر حسابك من خلال عنوان إيبي جديد warning: appeal: تقديم طعن appeal_description: إذا كنت تعتقد أن هذا خطأ، يمكنك تقديم طعن إلى فريق %{instance}. @@ -1554,6 +1575,7 @@ ar: sensitive: من الآن فصاعدا، سيتم وضع علامة على جميع ملفات الوسائط التي يتم تحميلها على أنها حساسة وستكون مخفية خلف تحذير يُنقر. silence: لا يزال بإمكانك استخدام حسابك ولكن فقط الأشخاص الذين يتابعونك فقط يمكنهم رؤية منشوراتك على هذا الخادم، وقد يتم استبعادك من ميزات الاكتشاف المختلفة. قد يتبعك آخرون على كل حال يدوياً. reason: 'السبب:' + statuses: 'المنشورات المذكورة:' subject: disable: تم تجميد حسابك %{acct} none: تحذير إلى %{acct} @@ -1586,13 +1608,10 @@ ar: title: أهلاً بك، %{name}! users: follow_limit_reached: لا يمكنك متابعة أكثر مِن %{limit} أشخاص - generic_access_help_html: صادفت مشكلة في الوصول إلى حسابك؟ اتصل بـ %{email} للحصول على المساعدة invalid_otp_token: رمز المصادقة بخطوتين غير صالح - invalid_sign_in_token: رمز الآمان غير صحيح otp_lost_help_html: إن فقدتَهُما ، يمكنك الاتصال بـ %{email} seamless_external_login: لقد قمت بتسجيل الدخول عبر خدمة خارجية، إنّ إعدادات الكلمة السرية و البريد الإلكتروني غير متوفرة. signed_in_as: 'تم تسجيل دخولك بصفة:' - suspicious_sign_in_confirmation: يبدو أنك لم تقم بتسجيل الدخول عبر هذا الجهاز من قبل، ولم تقم بتسجيل الدخول لفترة منذ مدة، لذلك نقوم بإرسال رمز الأمان إلى عنوان بريدك الإلكتروني للتأكد من أنه أنت من قام بالطلب. verification: explanation_html: 'يمكنك التحقق من نفسك كمالك لروابط البيانات التعريفية على صفحتك الشخصية. لذلك، يجب أن يحتوي الموقع المقترِن على رابط إلى صفحتك التعريفية الشخصية على ماستدون. الرابط الخلفي يجب أن يحتوي على رمز rel="me". محتوى النص في الرابط غير مهم. على سبيل المثال:' verification: التحقق diff --git a/config/locales/ast.yml b/config/locales/ast.yml index bed51bd94..48895f860 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -93,6 +93,7 @@ ast: not_permitted: Nun tienes permisu pa facer esta aición update_failed_msg: Nun pudo anovase esi fustaxe dashboard: + interactions: interaiciones media_storage: Almacenamientu multimedia software: Software top_languages: Les llingües más actives @@ -278,6 +279,7 @@ ast: following: Llista de siguidores muting: Llista de xente silenciao upload: Xubir + in_memoriam_html: N'alcordanza. invites: delete: Desactivar expired: Caducó diff --git a/config/locales/bg.yml b/config/locales/bg.yml index e017dd0e2..c9e264787 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -242,9 +242,6 @@ bg: new_followers_summary: one: Имаш един нов последовател! Ура! other: Имаш %{count} нови последователи! Изумително! - subject: - one: "1 ново известие от последното ти посещение \U0001F418" - other: "%{count} нови известия от последното ти посещение \U0001F418" favourite: body: 'Публикацията ти беше харесана от %{name}:' subject: "%{name} хареса твоята публикация" diff --git a/config/locales/br.yml b/config/locales/br.yml index 618ea48b5..07e12a531 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -314,7 +314,6 @@ br: title: Degemer mat e bourzh, %{name}! users: signed_in_as: 'Aet-tre evel:' - suspicious_sign_in_confirmation: N'ez aec'h ket tre d'ho kont deus ar benveg-se araok, neuze eo kaset deoc'h ur c'hod surentez d'ho postel evit bezañ sur c'hwi eo. verification: explanation_html: 'Gallout a rit gwiriañ c''hwi a zo perc''henn. ez liammoù metadata ho profil. Ret eo d''al lec''hienn web staget enderc''hel ul liamm evit mont d''ho profil Mastodon. Ret eo d''al liamm-se enderc''hel un doarenn rel="me". Ne ra forzh an destenn a zo e-barzh al liamm. Setu ur skouer:' verification: Amprouadur diff --git a/config/locales/ca.yml b/config/locales/ca.yml index d7a8a4858..3e1c1c6b7 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1,56 +1,56 @@ --- ca: about: - about_hashtag_html: Aquests són publicacions públiques etiquetades amb #%{hashtag}. Pots interactuar amb elles si tens un compte a qualsevol lloc del fedivers. - about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Posseeix les teves dades amb Mastodon!' + about_hashtag_html: Aquestes són publicacions públiques etiquetades amb #%{hashtag}. Hi pots interactuar si tens un compte a qualsevol lloc del fedivers. + about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Tingues el control de les teves dades amb Mastodon!' about_this: Quant a active_count_after: actiu active_footnote: Usuaris actius mensuals (UAM) administered_by: 'Administrat per:' api: API - apps: Apps mòbils - apps_platforms: Utilitza Mastodon des de iOS, Android i altres plataformes - browse_directory: Navega per el directori de perfils i filtra segons interessos - browse_local_posts: Navega un flux en directe de publicacions públiques d’aquest servidor - browse_public_posts: Navega per una transmissió en directe de publicacions públiques a Mastodon + apps: Aplicacions mòbils + apps_platforms: Utilitza Mastodon des d'iOS, Android i altres plataformes + browse_directory: Navega pel directori de perfils i filtra segons interessos + browse_local_posts: Navega per una transmissió en directe de les publicacions públiques d’aquest servidor + browse_public_posts: Navega per una transmissió en directe de les publicacions públiques a Mastodon contact: Contacte contact_missing: No configurat contact_unavailable: N/D continue_to_web: Continua a l'aplicació web - discover_users: Descobrir usuaris + discover_users: Descobreix usuaris documentation: Documentació - federation_hint_html: Amb un compte de %{instance} podràs seguir persones de qualsevol servidor Mastodon i altres. - get_apps: Provar una aplicació mòbil + federation_hint_html: Amb un compte de %{instance}, podràs seguir persones de qualsevol servidor Mastodon i de molts més. + get_apps: Prova una aplicació mòbil hosted_on: Mastodon allotjat a %{domain} instance_actor_flash: | - Aquest compte és un actor virtual utilitzat per a representar al propi servidor i no cap usuari individual. - S'utilitza per a propòsits de federació i no ha de ser bloquejat si no voleu bloquejar tota la instància, en aquest cas hauríeu d'utilitzar un bloqueig de domini. - learn_more: Aprèn més + Aquest compte és un actor virtual usat per representar el servidor i no qualsevol usuari individual. + Es fa servir per a propòsits de federació i no s'ha de ser bloquejar si no voleu bloquejar tota la instància. En aquest cas, hauríeu d'utilitzar un bloqueig de domini. + learn_more: Més informació logged_in_as_html: Actualment has iniciat sessió com a %{username}. logout_before_registering: Ja has iniciat sessió. privacy_policy: Política de privadesa rules: Normes del servidor - rules_html: 'El de sota és un resum de les normes que has de seguir si vols tenir un compte en aquest servidor de Mastodon:' + rules_html: 'A continuació, es mostra un resum de les normes que has de seguir si vols tenir un compte en aquest servidor de Mastodon:' see_whats_happening: Mira què està passant server_stats: 'Estadístiques del servidor:' source_code: Codi font status_count_after: one: publicació other: publicacions - status_count_before: Que han publicat + status_count_before: Qui ha publicat tagline: Segueix els teus amics i descobreix-ne de nous - terms: Termes del servei + terms: Condicions de servei unavailable_content: Servidors moderats unavailable_content_description: domain: Servidor - reason: Raó - rejecting_media: 'Els arxius multimèdia d''aquests servidors no seran processats o emmagatzemats i cap miniatura serà mostrada, requerint clic manual a través de l''arxiu original:' - rejecting_media_title: Mèdia filtrat - silenced: 'Les publicacions d''aquests servidors seran amagades en les línies de temps públiques i en les converses, i cap notificació serà generada de les interaccions dels seus usuaris, llevat que estiguis seguint-los:' - silenced_title: Servidors silenciats - suspended: 'Cap dada d''aquests servidors serà processada, emmagatzemada o intercanviada, fent impossible qualsevol interacció o comunicació amb els usuaris d''aquests servidors:' + reason: Motiu + rejecting_media: 'Els arxius multimèdia d''aquests servidors no seran processats ni emmagatzemats. No es mostrarà cap miniatura i caldrà fer clic en l''arxiu original:' + rejecting_media_title: Arxius multimèdia filtrats + silenced: 'Les publicacions d''aquests servidors s''ocultaran en les línies de temps públiques i en les converses. No es generarà cap notificació de les interaccions dels seus usuaris, tret que els segueixis:' + silenced_title: Servidors limitats + suspended: 'No es processaran, emmagatzemaran ni s''intercanviaran dades d''aquests servidors i serà impossible interactuar o comunicar-se amb els usuaris d''aquests servidors:' suspended_title: Servidors suspesos - unavailable_content_html: Mastodon generalment et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor en el fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular. + unavailable_content_html: En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular. user_count_after: one: usuari other: usuaris @@ -58,7 +58,7 @@ ca: what_is_mastodon: Què és Mastodon? accounts: choices_html: 'Eleccions de %{name}:' - endorsements_hint: Pots recomanar persones que segueixes a l'interfície de web, que apareixeran aquí. + endorsements_hint: Pots recomanar persones que segueixes des de la interfície de web i apareixeran aquí. featured_tags_hint: Pots presentar etiquetes específiques que seràn mostrades aquí. follow: Segueix followers: @@ -67,7 +67,7 @@ ca: following: Seguint instance_actor_flash: Aquest compte és un actor virtual usat per a representar el mateix servidor i no cap usuari individual. Es fa servir per a federar i no s'hauria d'esborrar. joined: Unit des de %{date} - last_active: darrer actiu + last_active: última activitat link_verified_on: La propietat d'aquest enllaç s'ha verificat el %{date} media: Mèdia moved_html: "%{name} s'ha mogut a %{new_profile_link}:" @@ -116,7 +116,7 @@ ca: confirming: Confirmant custom: Personalitzat delete: Esborra les dades - deleted: Esborrats + deleted: Eliminat demote: Degrada destroyed_msg: Les dades de %{username} son a la cua per a ser esborrades en breu disable: Inhabilita @@ -199,7 +199,6 @@ ca: security_measures: only_password: Només contrasenya password_and_2fa: Contrasenya i 2FA - password_and_sign_in_token: Contrasenya i token per correu sensitive: Sensible sensitized: marcar com a sensible shared_inbox_url: URL de la safata d'entrada compartida @@ -208,7 +207,7 @@ ca: targeted_reports: Informes realitzats per altres silence: Silenci silenced: Silenciat - statuses: Tuts + statuses: Publicacions strikes: Accions anteriors subscribe: Subscriu suspend: Suspèn @@ -253,7 +252,7 @@ ca: destroy_email_domain_block: Esborra el bloqueig de domini de l'adreça de correu destroy_instance: Purga Domini destroy_ip_block: Eliminar regla IP - destroy_status: Esborra el tut + destroy_status: Esborrar la publicació destroy_unavailable_domain: Esborra domini no disponible disable_2fa_user: Desactiva 2FA disable_custom_emoji: Desactiva l'emoji personalitzat @@ -304,7 +303,7 @@ ca: destroy_email_domain_block_html: "%{name} ha desbloquejat el domini de correu electrònic %{target}" destroy_instance_html: "%{name} ha purgat el domini %{target}" destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}" - destroy_status_html: "%{name} ha eliminat el tut de %{target}" + destroy_status_html: "%{name} ha eliminat la publicació de %{target}" destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}" disable_2fa_user_html: "%{name} ha desactivat el requisit de dos factors per a l'usuari %{target}" disable_custom_emoji_html: "%{name} ha desactivat l'emoji %{target}" @@ -333,7 +332,7 @@ ca: update_custom_emoji_html: "%{name} ha actualitzat l'emoji %{target}" update_domain_block_html: "%{name} ha actualitzat el bloqueig de domini per a %{target}" update_status_html: "%{name} ha actualitzat l'estat de %{target}" - deleted_status: "(tut esborrat)" + deleted_status: "(publicació esborrada)" empty: No s’han trobat registres. filter_by_action: Filtra per acció filter_by_user: Filtra per usuari @@ -372,7 +371,7 @@ ca: enable: Habilita enabled: Activat enabled_msg: S'ha habilitat amb èxit emoji - image_hint: PNG or GIF fins a %{size} + image_hint: PNG o GIF fins a %{size} list: Llista listed: Enumerat new: @@ -489,7 +488,7 @@ ca: other: Intents fallits en %{count} diferents dies. no_failures_recorded: Sense errors registrats. title: Disponibilitat - warning: El darrer intent de connectar a aquest servidor no ha tingut èxit + warning: El darrer intent de connexió a aquest servidor no ha tingut èxit back_to_all: Totes back_to_limited: Limitades back_to_warning: Avís @@ -504,7 +503,7 @@ ca: silence: Límit suspend: Suspèn policy: Política - reason: Raó pública + reason: Motiu públic title: Polítiques de contingut dashboard: instance_accounts_dimension: Comptes més seguits @@ -518,6 +517,7 @@ ca: delivery: all: Totes clear: Neteja els errors de lliurament + failing: Fallant restart: Reinicia el lliurament stop: Atura el lliurament unavailable: No disponible @@ -551,7 +551,7 @@ ca: available: Disponible expired: Caducat title: Filtre - title: Convida + title: Invitacions ip_blocks: add_new: Crear regla created_msg: S’ha afegit amb èxit la nova regla IP @@ -572,11 +572,11 @@ ca: relays: add_new: Afegiu un nou relay delete: Esborra - description_html: Un relay de federació és un servidor intermediari que intercanvia grans volums de tuts públics entre servidors que es subscriuen i publiquen en ell. Pot ajudar a servidors petits i mitjans a descobrir contingut del fedivers, no fent necessari que els usuaris locals manualment segueixin altres persones de servidors remots. + description_html: Un relay de federació és un servidor intermediari que intercanvia grans volums de publicacions públiques entre servidors que se subscriuen i publiquen en ell. Pot ajudar a servidors petits i mitjans a descobrir contingut del fedivers, no fent necessari que els usuaris locals manualment segueixin altres persones de servidors remots. disable: Inhabilita disabled: Desactivat enable: Activat - enable_hint: Una vegada habilitat, el teu servidor es subscriurà a tots els tuts públics d'aquest relay i començarà a enviar-hi tots els tuts públics d'aquest servidor. + enable_hint: Una vegada habilitat, el teu servidor se subscriurà a totes les publicacions públiques d'aquest relay i començarà a enviar-hi totes les publicacions públiques d'aquest servidor. enabled: Activat inbox_url: URL del Relay pending: S'està esperant l'aprovació del relay @@ -610,7 +610,7 @@ ca: assigned: Moderador assignat by_target_domain: Domini del compte reportat category: Categoria - category_description_html: La raó que aquest compte o contingut ha estat reportat serà citat en la comunicació amb el compte reportat + category_description_html: El motiu pel qual aquest compte o contingut ha estat reportat serà citat en la comunicació amb el compte reportat comment: none: Cap comment_description_html: 'Per a donar més informació, %{name} ha escrit:' @@ -657,7 +657,7 @@ ca: title: Normes del servidor settings: activity_api_enabled: - desc_html: Nombre de tuts publicats localment, usuaris actius i registres nous en períodes setmanals + desc_html: Nombre de publicacions publicades localment, usuaris actius i registres nous en períodes setmanals title: Publica estadístiques agregades sobre l'activitat de l'usuari bootstrap_timeline_accounts: desc_html: Separa diversos noms d'usuari amb comes. Només funcionaran els comptes locals i desblocats. El valor predeterminat quan està buit és tots els administradors locals. @@ -753,7 +753,7 @@ ca: batch: remove_from_report: Treu del informe report: Informe - deleted: Esborrats + deleted: Eliminada media: title: Contingut multimèdia no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat @@ -802,6 +802,7 @@ ca: other: Compartit per %{count} persones en la darrera setmana title: Enllaços en tendència usage_comparison: Compartit %{today} vegades avui, comparat amb %{yesterday} d'ahir + only_allowed: Només permesos pending_review: Revisió pendent preview_card_providers: allowed: Els enllaços d'aquest mitjà poden estar en tendència @@ -843,6 +844,7 @@ ca: one: Emprat per una persona en la darrera setmana other: Emprat per %{count} persones en la darrera setmana title: Tendència + trending: Tendència warning_presets: add_new: Afegir-ne un de nou delete: Esborra @@ -902,7 +904,7 @@ ca: guide_link: https://crowdin.com/project/mastodon guide_link_text: Tothom hi pot contribuir. sensitive_content: Contingut sensible - toot_layout: Disseny del tut + toot_layout: Disseny de la publicació application_mailer: notification_preferences: Canvia les preferències de correu salutation: "%{name}," @@ -1076,7 +1078,7 @@ ca: archive_takeout: date: Data download: Baixa l’arxiu - hint_html: Pots sol·licitar un arxiu dels teus tuts i dels fitxers multimèdia pujats. Les dades exportades tindran el format ActivityPub, llegible per qualsevol programari compatible. Pots sol·licitar un arxiu cada 7 dies. + hint_html: Pots sol·licitar un arxiu de les teves publicacions i dels fitxers multimèdia pujats. Les dades exportades tindran el format ActivityPub, llegible per qualsevol programari compatible. Pots sol·licitar un arxiu cada 7 dies. in_progress: S'està compilant el teu arxiu... request: Sol·licitar el teu arxiu size: Mida @@ -1168,7 +1170,7 @@ ca: table: expires_at: Caduca uses: Usos - title: Convida persones + title: Convidar persones lists: errors: limit: Has assolit la quantitat màxima de llistes @@ -1237,8 +1239,8 @@ ca: one: A més, has adquirit un nou seguidor durant la teva absència! Visca! other: A més, has adquirit %{count} nous seguidors mentre estaves fora! Increïble! subject: - one: "1 notificació nova des de la darrera visita \U0001F418" - other: "%{count} notificacions noves des de la darrera visita \U0001F418" + one: "1 notificació nova des de la teva darrera visita 🐘" + other: "%{count} notificacions noves des de la teva darrera visita 🐘" title: Durant la teva absència… favourite: body: "%{name} ha marcat com a favorit el teu estat:" @@ -1322,7 +1324,7 @@ ca: followers: Seguidors following: Seguint invited: Convidat - last_active: Darrer actiu + last_active: Última activitat most_recent: Més recent moved: Mogut mutual: Mútua @@ -1342,19 +1344,19 @@ ca: remote_interaction: favourite: proceed: Procedir a afavorir - prompt: 'Vols marcar com a favorit aquest tut:' + prompt: 'Vols marcar com a favorit aquesta publicació:' reblog: proceed: Procedir a impulsar - prompt: 'Vols impulsar aquest tut:' + prompt: 'Vols impulsar aquesta publicació:' reply: proceed: Procedir a respondre - prompt: 'Vols respondre a aquest tut:' + prompt: 'Vols respondre a aquesta publicació:' reports: errors: invalid_rules: no fa referència a normes vàlides scheduled_statuses: - over_daily_limit: Has superat el límit de %{limit} tuts programats per a aquell dia - over_total_limit: Has superat el limit de %{limit} tuts programats + over_daily_limit: Has superat el límit de %{limit} publicacions programades per a avui + over_total_limit: Has superat el límit de %{limit} publicacions programades too_soon: La data programada ha de ser futura sessions: activity: Última activitat @@ -1404,7 +1406,7 @@ ca: aliases: Àlies de compte appearance: Aparença authorized_apps: Aplicacions autoritzades - back: Torna a Mastodon + back: Tornar a Mastodon delete: Eliminació del compte development: Desenvolupament edit_profile: Edita el perfil @@ -1441,13 +1443,13 @@ ca: other: 'conté les etiquetes no permeses: %{tags}' edited_at_html: Editat %{date} errors: - in_reply_not_found: El tut al qual intentes respondre sembla que no existeix. + in_reply_not_found: La publicació a la qual intentes respondre sembla que no existeix. open_in_web: Obre en la web over_character_limit: Límit de caràcters de %{max} superat pin_errors: direct: Les publicacions que només son visibles per els usuaris mencionats no poden ser fixades - limit: Ja has fixat el màxim nombre de tuts - ownership: No es pot fixar el tut d'algú altre + limit: Ja has fixat el màxim nombre de publicacions + ownership: No es pot fixar la publicació d'algú altre reblog: No es pot fixar un impuls poll: total_people: @@ -1507,7 +1509,7 @@ ca: min_reblogs: Mantenir les publicacions impulsades més de min_reblogs_hint: No suprimeix cap de les teves publicacions que s'hagin impulsat més que aquest número de vegades. Deixa-ho en blanc per suprimir les publicacions independentment del nombre d'impulsos que tinguin stream_entries: - pinned: Tut fixat + pinned: Publicació fixada reblogged: ha impulsat sensitive_content: Contingut sensible tags: @@ -1633,12 +1635,13 @@ ca: explanation: Has sol·licitat una copia completa del teu compte Mastodon. Ara ja està a punt per a descàrrega! subject: El teu arxiu està preparat per a descàrrega title: Recollida del arxiu - sign_in_token: - details: 'Aquí es mostren els detalls del intent:' - explanation: 'Hem detectat un intent d’inici de sessió al teu compte des d’una IP desconeguda. Si ets tu, si us plau introdueix el codi de seguretat a sota, en la pàgina de desafiament d’inici de sessió:' - further_actions: 'Si no has estat tu, si us plau canvia la contrasenya i activa l’autenticació de dos factors del teu compte. Pots fer-ho aquí:' - subject: Si us plau confirma l’intent d’inici de sessió - title: Intent d’inici de sessió + suspicious_sign_in: + change_password: canvia la teva contrasenya + details: 'Aquí estan els detalls del inici de sessió:' + explanation: Hem detectat un inici de sessió del teu compte des d'una nova adreça IP. + further_actions_html: Si no has estat tu, recomanem que tu %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur. + subject: El teu compte ha estat accedit des d'una nova adreça IP + title: Un nou inici de sessió warning: appeal: Trametre una apel·lació appeal_description: Si creus que això és un error pots emetre una apel·lació al equip de %{instance}. @@ -1652,7 +1655,7 @@ ca: sensitive: A partir d'ara, tots els mèdia pujats seran marcats com a sensibles i ocultats darrera un avís. silence: Encara pots fer servir el teu compte però només la gent que ja t'està seguint veuran les teves publicacions en aquest servidor i tu podries ser exclòs de les diverses opcions de descobriment. De totes maneres altres podrien encara seguir-te manualment. suspend: Ja no pots utilitzar el teu compte i el teu perfil i altres dades ja no son accessibles. Encara pots iniciar sessió per a demanar una copia de les teves dades fins que siguin totalment eliminades als 30 dies però es mantindran les dades bàsiques per evitar que esquivis la suspensió. - reason: 'Raó:' + reason: 'Motiu:' statuses: 'Publicacions citades:' subject: delete_statuses: Les teves publicacions de %{acct} han estat esborrades @@ -1689,13 +1692,10 @@ ca: title: Benvingut a bord, %{name}! users: follow_limit_reached: No pots seguir més de %{limit} persones - generic_access_help_html: Problemes accedint al teu compte? Pots contactar amb %{email} per a demanar assistència invalid_otp_token: El codi de dos factors no és correcte - invalid_sign_in_token: Codi de seguretat invàlid otp_lost_help_html: Si has perdut l'accés a tots dos pots contactar per %{email} seamless_external_login: Has iniciat sessió via un servei extern per tant els ajustos de contrasenya i correu electrònic no estan disponibles. signed_in_as: 'Sessió iniciada com a:' - suspicious_sign_in_confirmation: Aparentment no has iniciat sessió des d’aquest dispositiu abans i no ho has fet des de fa cert temps per tant t’enviarem un codi de seguretat al teu correu electrònic per a confirmar que ets tu. verification: explanation_html: 'Pots verificar-te com a propietari dels enllaços a les metadades del teu perfil. Per això, el lloc web enllaçat ha de contenir un enllaç al teu perfil de Mastodon. El vincle ha de tenir l''atribut rel="me". El contingut del text de l''enllaç no importa. Aquí tens un exemple:' verification: Verificació diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index c7b26e23e..14ff930fe 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -836,9 +836,6 @@ ckb: new_followers_summary: one: لەکاتێک کە نەبوو ،شوێنکەوتوویێکی نوێت پەیداکرد،ئافەرم! other: کاتیک کە نەبووی %{count} شوێنکەوتوویێکی نوێت پەیدا کرد! چ باشە! - subject: - one: "ئاگاداریێکی نووی لە دوایین سەردانی ئێوە\U0001F418" - other: "%{count} ئاگاداریێکی نوێ لە دوایین سەردانی ئێوە\U0001F418" title: لە غیابی تۆدا... favourite: body: 'دۆخت پەسەندکراوە لەلایەن %{name}:' @@ -1148,12 +1145,6 @@ ckb: explanation: ئێوە وشانێکی پاڵپشتی تەواوت لە هەژمارەکەی خۆت داوا کردووە، ئەم پاڵپشتییە ئێستا ئامادەی بارکردنە! subject: ئارشیڤی ئێوە ئامادەی داگرتنە title: وەرگرتنی ئارشیڤ - sign_in_token: - details: 'وردەکاریی هەوڵەکان:' - explanation: 'هەوڵێک بۆ هاتنە نێو هەژمارەکەتان لە ناونیسانێکی ئای‌پی پەیداکرا. گەر خۆتانن. تێپەڕوشەی پاراستن بۆ پەڕەی بەرنگاری دابین بکە:' - further_actions: 'گەر ئێوە نیین تکایە تێپەڕوشە بگۆڕە وە لێرەوە پەسەند بوونی دوو قۆناغی لە سەر هەژمارەکەتان چالاک بکەن:' - subject: تکایە دڵنیابە لە هەوڵدان بۆ چوونە ژوورەوە - title: هەوڵدان بۆ چوونە ژوورەوە warning: subject: disable: هەژمارەکەت %{acct} بەستراوە @@ -1184,13 +1175,10 @@ ckb: title: بەخێربێیت، بەکارهێنەر %{name}! users: follow_limit_reached: ناتوانیت زیاتر لە %{limit} خەڵک پەیڕەو کەیت - generic_access_help_html: کێشەت هەیە لە گەیشتن بە هەژمارەکەت؟ دەتوانیت لەگەڵ %{email} بۆ یارمەتیدان پەیوەندی بگرن invalid_otp_token: کۆدی دوو-فاکتەر نادروستە - invalid_sign_in_token: کۆدی پاراستن دروست نیە otp_lost_help_html: گەر بەو دووڕێگا نەتوانی بچیتە ژوورەوە، لەوانەیە پەیوەندی بگری بە %{email} بۆ یارمەتی seamless_external_login: تۆ لە ڕێگەی خزمەتگوزاری دەرەکیەوە داخڵ بووی، بۆیە ڕێکبەندەکانی نهێنوشە و ئیمەیل بەردەست نین. signed_in_as: 'چوونە ژوورەوە وەک:' - suspicious_sign_in_confirmation: وادیارە تۆ پێشتر لەم ئامێرە نەچویتە ژوورەوە، و بۆ ماوەیەک نەچویتە ژوورەوە، بۆیە کۆدی پاراستن دەنێردرینە ناونیشانی ئیمەیڵەکەت بۆ دڵنیابوون لەوەی کە ئەوە تۆیت. verification: explanation_html: 'دەتوانیت خۆت بسەلمێنیت وەک خاوەنی لینکەکان لە مێتاداتای پرۆفایلەکەت. بۆ ئەمە، ماڵپەڕە لینککراوەکە پێویستە لینکێکی تێدا بێت بۆ پرۆفایلی ماستۆدۆنەکەت. بەستەری دەبێت هەبێت ="me". ناوەڕۆکی دەقی لینکەکە گرنگ نییە. ئەمە نموونەیەکە:' verification: ساغ کردنەوە diff --git a/config/locales/co.yml b/config/locales/co.yml index c09f4c24e..156ec696e 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -191,7 +191,6 @@ co: security_measures: only_password: Solu a chjave d'accessu password_and_2fa: Chjave d’accessu è A2F - password_and_sign_in_token: Chjave d’accessu è codice da l'e-mail sensitive: Sensibile sensitized: indicatu cum’è sensibile shared_inbox_url: URL di l’inbox spartuta @@ -988,9 +987,6 @@ co: new_followers_summary: one: Avete ancu un’abbunatu novu! other: Avete ancu %{count} abbunati novi! - subject: - one: "Una nutificazione nova dapoi à a vostr’ultima visita \U0001F418" - other: "%{count} nutificazione nove dapoi à a vostr’ultima visita \U0001F418" title: Dapoi l’ultima volta… favourite: body: "%{name} hà aghjuntu u vostru statutu à i so favuriti :" @@ -1357,12 +1353,6 @@ co: explanation: Avete dumandatu un’archiviu cumpletu di u vostru contu Mastodon. Avà hè prontu per scaricà! subject: U vostru archiviu hè prontu à scaricà title: Archiviu prontu - sign_in_token: - details: 'Ditagli di u tentativu quì sottu:' - explanation: 'Avemu ditettatu un tentativu di cunnessione nant''à u vostru contu da un''indirizzu IP ch''ùn avemu micca ricunisciutu. S''ellu era voi, vi pricuremu d''entrà u codice di sicurità quì sottu nant''à a pagina di cunfirmazione di cunnessione:' - further_actions: 'S''ellu ùn era micca voi, duvete cambià a vostra chjave d''accessu è attivà l''identificazione à dui fattori nant''à u vostru contu. Pudete fà quessi quì:' - subject: Cunfirmate u tentativu di cunnessione - title: Tentativu di cunnessione warning: subject: disable: U vostru contu %{acct} hè statu ghjacciatu @@ -1393,13 +1383,10 @@ co: title: Benvenutu·a, %{name}! users: follow_limit_reached: Ùn pidete seguità più di %{limit} conti - generic_access_help_html: Prublemi d'accessu à u vostru contu? Pudete cuntattà %{email} per ottene aiutu invalid_otp_token: U codice d’identificazione ùn hè currettu - invalid_sign_in_token: Codice di sicurità micca validu otp_lost_help_html: S’è voi avete persu i dui, pudete cuntattà %{email} seamless_external_login: Site cunnettatu·a dapoi un serviziu esternu, allora i parametri di chjave d’accessu è d’indirizzu e-mail ùn so micca dispunibili. signed_in_as: 'Cunnettatu·a cum’è:' - suspicious_sign_in_confirmation: Ci pare ch'ùn vi site mai cunnettatu·a da quess'apparechju, è ùn vi site micca cunnettatu·a dapoi una stonda, allora vi mandemu un codice di sicurità à u vostr'indirizzu e-mail per cunfirmà chì site voi. verification: explanation_html: 'Pudete verificavi cum''è u pruprietariu di i ligami in i metadati di u vostru prufile. Per quessa, u vostru situ deve avè un ligame versu a vostra pagina Mastodon. U ligame deve avè un''attributu rel="me". U cuntenutu di u testu di u ligame ùn hè micca impurtante. Eccu un''esempiu:' verification: Verificazione diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 107aa9a0b..717bb5614 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -16,6 +16,7 @@ cs: contact: Kontakt contact_missing: Nenastaveno contact_unavailable: Neuvedeno + continue_to_web: Pokračovat do webové aplikace discover_users: Objevujte uživatele documentation: Dokumentace federation_hint_html: S účtem na serveru %{instance} můžete sledovat lidi na jakémkoliv ze serverů Mastodon a dalších službách. @@ -25,6 +26,8 @@ cs: Tento účet je virtuální aktér, který představuje server samotný, nikoliv účet jednotlivého uživatele. Používá se pro účely federace a nesmí být blokován, pokud nechcete blokovat celý server. V takovém případě použijte blokaci domény. learn_more: Zjistit více + logged_in_as_html: Aktuálně jste přihlášeni jako %{username}. + logout_before_registering: Již jste přihlášeni. privacy_policy: Zásady ochrany osobních údajů rules: Pravidla serveru rules_html: 'Níže je shrnutí pravidel, která musíte dodržovat, pokud chcete mít účet na tomto Mastodon serveru:' @@ -119,6 +122,7 @@ cs: confirm: Potvrdit confirmed: Potvrzeno confirming: Potvrzuji + custom: Vlastní delete: Smazat data deleted: Smazáno demote: Degradovat @@ -168,11 +172,12 @@ cs: not_subscribed: Neodebírá pending: Čeká na posouzení perform_full_suspension: Pozastavit + previous_strikes: Předchozí prohřešky previous_strikes_description_html: - few: Tento účet má %{count} strajky. - many: Tento účet má %{count} strajků. - one: Tento účet má jeden strajk. - other: Tento účet má %{count} strajků. + few: Tento účet má %{count} prohřešky. + many: Tento účet má %{count} prohřešků. + one: Tento účet má jeden prohřešek. + other: Tento účet má %{count} prohřešků. promote: Povýšit protocol: Protokol public: Veřejný @@ -196,7 +201,7 @@ cs: roles: admin: Administrátor moderator: Moderátor - staff: Člen personálu + staff: Personál user: Uživatel search: Hledat search_same_email_domain: Ostatní uživatelé se stejnou e-mailovou doménou @@ -204,7 +209,6 @@ cs: security_measures: only_password: Pouze heslo password_and_2fa: Heslo a 2FA - password_and_sign_in_token: Heslo a e-mailový token sensitive: Citlivý sensitized: označen jako citlivý shared_inbox_url: URL sdílené příchozí schránky @@ -214,7 +218,9 @@ cs: silence: Omezit silenced: Omezen statuses: Příspěvky + strikes: Předchozí prohřešky subscribe: Odebírat + suspend: Pozastavit suspended: Uživatel pozastaven suspension_irreversible: Data tohoto účtu byla nevratně smazána. Účet můžete obnovit, aby byl použitelný, ale nebudou obnovena žádná jeho dřívější data. suspension_reversible_hint_html: Účet byl pozastaven a jeho data budou kompletně smazána %{date}. Do té doby může být tento účet kompletně obnoven do původního stavu. Chcete-li smazat všechna data účtu ihned, můžete tak učinit níže. @@ -235,6 +241,7 @@ cs: whitelisted: Povoleno federovat action_logs: action_types: + approve_appeal: Schválit odvolání approve_user: Schválit uživatele assigned_to_self_report: Přiřadit hlášení change_email_user: Změnit uživateli e-mailovou adresu @@ -242,16 +249,16 @@ cs: 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_domain_allow: Vytvořit povolení domény + create_domain_block: Vytvořit blokaci domény create_email_domain_block: Zablokovat e-mailovou doménu create_ip_block: Vytvořit IP pravidlo create_unavailable_domain: Vytvořit nedostupnou doménu 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_domain_allow: Odstranit povolení domény + destroy_domain_block: Odstranit blokaci domény destroy_email_domain_block: Smazat blokaci e-mailové domény destroy_instance: Odmazat doménu destroy_ip_block: Smazat IP pravidlo @@ -266,6 +273,7 @@ cs: enable_user: Povolit uživatele memorialize_account: Změna na „in memoriam“ promote_user: Povýšit uživatele + reject_appeal: Zamítnout odvolání reject_user: Odmítnout uživatele remove_avatar_user: Odstranit avatar reopen_report: Znovu otevřít hlášení @@ -284,17 +292,18 @@ cs: update_domain_block: Změnit blokaci domény update_status: Aktualizovat Příspěvek actions: + approve_appeal_html: Uživatel %{name} schválil odvolání proti rozhodnutí moderátora %{target} approve_user_html: "%{name} schválil registraci od %{target}" assigned_to_self_report_html: Uživatel %{name} si přidělil hlášení %{target} change_email_user_html: Uživatel %{name} změnil e-mailovou adresu uživatele %{target} confirm_user_html: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target} - create_account_warning_html: Uživatel %{name} poslal varování uživateli %{target} + create_account_warning_html: Uživatel %{name} poslal %{target} varování create_announcement_html: Uživatel %{name} vytvořil nové oznámení %{target} create_custom_emoji_html: Uživatel %{name} nahrál nové emoji %{target} create_domain_allow_html: Uživatel %{name} povolil federaci s doménou %{target} create_domain_block_html: Uživatel %{name} zablokoval doménu %{target} create_email_domain_block_html: Uživatel %{name} zablokoval e-mailovou doménu %{target} - create_ip_block_html: "%{name} vytvořil pravidlo pro IP %{target}" + create_ip_block_html: Uživatel %{name} vytvořil pravidlo pro IP %{target} create_unavailable_domain_html: "%{name} zastavil doručování na doménu %{target}" demote_user_html: Uživatel %{name} degradoval uživatele %{target} destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target} @@ -303,7 +312,7 @@ cs: destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target} destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target} destroy_instance_html: Uživatel %{name} odmazal doménu %{target} - destroy_ip_block_html: "%{name} odstranil pravidlo pro IP %{target}" + destroy_ip_block_html: Uživatel %{name} odstranil pravidlo pro IP %{target} destroy_status_html: Uživatel %{name} odstranil příspěvek uživatele %{target} destroy_unavailable_domain_html: "%{name} obnovil doručování na doménu %{target}" disable_2fa_user_html: Uživatel %{name} vypnul dvoufázové ověřování pro uživatele %{target} @@ -315,6 +324,7 @@ cs: enable_user_html: Uživatel %{name} povolil přihlašování pro uživatele %{target} memorialize_account_html: Uživatel %{name} změnil účet %{target} na „in memoriam“ stránku promote_user_html: Uživatel %{name} povýšil uživatele %{target} + reject_appeal_html: Uživatel %{name} zamítl odvolání proti rozhodnutí moderátora %{target} reject_user_html: "%{name} odmítl registraci od %{target}" remove_avatar_user_html: Uživatel %{name} odstranil avatar uživatele %{target} reopen_report_html: Uživatel %{name} znovu otevřel hlášení %{target} @@ -336,7 +346,7 @@ cs: empty: Nebyly nalezeny žádné záznamy. filter_by_action: Filtrovat podle akce filter_by_user: Filtrovat podle uživatele - title: Auditovací protokol + title: Protokol auditu announcements: destroyed_msg: Oznámení bylo úspěšně odstraněno! edit: @@ -393,6 +403,26 @@ cs: media_storage: Úložiště médií new_users: noví uživatelé opened_reports: podáno hlášení + pending_appeals_html: + few: "%{count} čekající odvolání" + many: "%{count} čekajících odvolání" + one: "%{count} čekající odvolání" + other: "%{count} čekajících odvolání" + pending_reports_html: + few: "%{count} čekající hlášení" + many: "%{count} čekajících hlášení" + one: "%{count} čekající hlášení" + other: "%{count} čekajících hlášení" + pending_tags_html: + few: "%{count} čekající hashtagy" + many: "%{count} čekajících hashtagů" + one: "%{count} čekající hashtag" + other: "%{count} čekajících hashtagů" + pending_users_html: + few: "%{count} čekající uživatelé" + many: "%{count} čekajících uživatelů" + one: "%{count} čekající uživatel" + other: "%{count} čekajících uživatelů" resolved_reports: vyřešeno hlášení software: Software sources: Zdroje registrací @@ -401,6 +431,10 @@ cs: top_languages: Nejaktivnější jazyky top_servers: Nejaktivnější servery website: Webová stránka + disputes: + appeals: + empty: Nenalazena žádná odvolání. + title: Odvolání domain_allows: add_new: Povolit federaci s doménou created_msg: S doménou byla úspěšně povolena federace @@ -409,9 +443,9 @@ cs: domain_blocks: add_new: Přidat novou blokaci domény created_msg: Blokace domény se právě vyřizuje - destroyed_msg: Blokace domény byla zrušena + destroyed_msg: Blokace domény byla vrácena domain: Doména - edit: Upravit doménovou blokaci + edit: Upravit blokaci domény existing_domain_block_html: Pro účet %{name} jste už nastavili přísnější omezení, nejprve jej odblokujte. new: create: Vytvořit blokaci @@ -432,16 +466,28 @@ cs: reject_media_hint: Odstraní lokálně uložené mediální soubory a odmítne jejich stahování v budoucnosti. Nepodstatné pro pozastavení reject_reports: Odmítat hlášení reject_reports_hint: Ignorovat všechna hlášení pocházející z této domény. Nepodstatné pro pozastavení - undo: Odvolat blokaci domény + undo: Vrátit blokaci domény view: Zobrazit blokaci domény email_domain_blocks: add_new: Přidat + attempts_over_week: + few: "%{count} pokusy o registraci za poslední týden" + many: "%{count} pokusů o registraci za poslední týden" + one: "%{count} pokus o registraci za poslední týden" + other: "%{count} pokusů o registraci za poslední týden" created_msg: E-mailová doména úspěšně zablokována delete: Smazat + dns: + types: + mx: MX záznam domain: Doména new: create: Přidat doménu + resolve: Přeložit doménu title: Blokovat novou e-mailovou doménu + no_email_domain_block_selected: Žádné blokace e-mailové domény nebyly změněny, protože nebyly žádné vybrány + resolved_dns_records_hint_html: Doménové jméno vede na následující MX domény, které mají nakonec na starost přijímání e-mailů. Blokování MX domény zablokuje registrace z jakékoliv e-mailové adresy, která používá stejnou MX doménu, i když je viditelné doménové jméno jiné. Dejte si pozor, abyste nezablokovali velké e-mailové poskytovatele. + resolved_through_html: Přeložena přes %{domain} title: Blokované e-mailové domény follow_recommendations: description_html: "Doporučená sledování pomáhají novým uživatelům rychle najít zajímavý obsah. Pokud uživatel neinteragoval s ostatními natolik, aby mu byla vytvořena doporučená sledování na míru, jsou použity tyto účty. Jsou přepočítávány na denní bázi ze směsi účtů s největším nedávným zapojením a nejvyšším počtem místních sledovatelů pro daný jazyk." @@ -453,23 +499,62 @@ cs: unsuppress: Obnovit doporučení sledování instances: availability: + description_html: + few: Pokud doručování na doménu selže ve %{count} různých dnech, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení od domény. + many: Pokud doručování na doménu selže v %{count} různých dnech, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení od domény. + one: Pokud doručování na doménu selže %{count} den, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení od domény. + other: Pokud doručování na doménu selže v %{count} různých dnech, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení od domény. + failure_threshold_reached: Prahu selhání dosaženo %{date}. + failures_recorded: + few: Neúspěšné pokusy ve %{count} různých dnech. + many: Neúspěšné pokusy ve %{count} různých dnech. + one: Neúspěšný pokus v %{count} dni. + other: Neúspěšné pokusy ve %{count} různých dnech. + no_failures_recorded: Žádné zaznamenané selhání. + title: Dostupnost warning: Poslední pokus o připojení k tomuto serveru byl neúspěšný back_to_all: Vše - back_to_limited: Omezený + back_to_limited: Omezená back_to_warning: Varování by_domain: Doména confirm_purge: Jste si jisti, že chcete nevratně smazat data z této domény? + content_policies: + comment: Interní poznámka + description_html: Můžete definovat politiky obsahu, které budou aplikovány na všechny účty z této domény i jakoukoliv z jejích subdomén. + policies: + reject_media: Odmítat média + reject_reports: Odmítat hlášení + silence: Omezit + suspend: Pozastavit + policy: Politika + reason: Veřejný důvod + title: Politiky obsahu + dashboard: + instance_accounts_dimension: Nejsledovanější účty + instance_accounts_measure: uložené účty + instance_followers_measure: sledujících nás tam + instance_follows_measure: sledujících je tady + instance_languages_dimension: Nejčastější jazyky + instance_media_attachments_measure: uložené mediální přílohy + instance_reports_measure: hlášení o nich + instance_statuses_measure: uložené příspěvky delivery: all: Vše clear: Vymazat chyby doručení + failing: Selhává restart: Restartovat doručování stop: Zastavit doručování - unavailable: Nedostupný + unavailable: Nedostupná delivery_available: Doručení je k dispozici delivery_error_days: Dny chybného doručování delivery_error_hint: Není-li možné doručení po dobu %{count} dnů, bude automaticky označen za nedoručitelný. destroyed_msg: Data z %{domain} nyní čekají na smazání. empty: Nebyly nalezeny žádné domény. + known_accounts: + few: "%{count} známé účty" + many: "%{count} známých účtů" + one: "%{count} známý účet" + other: "%{count} známých účtů" moderation: all: Všechny limited: Omezený @@ -477,12 +562,14 @@ cs: private_comment: Soukromý komentář public_comment: Veřejný komentář purge: Odmazat + purge_description_html: Pokud se domníváte, že tato doména je offline už navždy, můžete ze svého úložiště smazat všechny záznamy účtů a přidružená data z této domény. To může chvíli trvat. title: Federace total_blocked_by_us: Blokované námi total_followed_by_them: Sledované jimi total_followed_by_us: Sledované námi total_reported: Hlášení o nich total_storage: Mediální přílohy + totals_time_period_hint_html: Níže zobrazené součty zahrnují data za celou dobu. invites: deactivate_all: Deaktivovat vše filter: @@ -527,6 +614,7 @@ cs: report_notes: created_msg: Poznámka o hlášení úspěšně vytvořena! destroyed_msg: Poznámka o hlášení úspěšně smazána! + today_at: Dnes v %{time} reports: account: notes: @@ -534,7 +622,17 @@ cs: many: "%{count} poznámek" one: "%{count} poznámka" other: "%{count} poznámek" + action_log: Protokol auditu action_taken_by: Akci vykonal uživatel + actions: + delete_description_html: Nahlášené příspěvky budou smazány a prohřešek zaznamenán pro pomoc s eskalací v případě budoucích porušení stejným účtem. + mark_as_sensitive_description_html: Média v nahlášených příspěvcích budou označena jako citlivá a bude zaznamenán prohřešek pro pomoc s eskalací v případě budoucích porušení stejným účtem. + other_description_html: Podívejte se na další možnosti kontroly chování účtu a přizpůsobte komunikaci k nahlášenému účtu. + resolve_description_html: Nebudou učiněny žádné kroky proti nahlášenému účtu, žádný prohřešek zaznamenán a hlášení bude uzavřeno. + silence_description_html: Profil bude viditelný pouze těm, kdo ho již sledují nebo jej ručně vyhledají, což značně omezí jeho dosah. Lze vždy vrátit zpět. + suspend_description_html: Profil a veškerý jeho obsah se stane nedostupným, dokud nebude časem smazán. Interakce s účtem nebude možná. Vratné do 30 dnů. + actions_description_html: Rozhodněte, který krok učinit pro vyřešení tohoto hlášení. Pokud podniknete kárný krok proti nahlášenému účtu, bude mu zasláno e-mailové oznámení, s výjimkou případu, kdy je zvolena kategorie Spam. + add_to_report: Přidat do hlášení další are_you_sure: Jste si jisti? assign_to_self: Přidělit ke mně assigned: Přiřazený moderátor @@ -545,10 +643,13 @@ cs: none: Žádné comment_description_html: 'Pro upřesnění uživatel %{name} napsal:' created_at: Nahlášené + delete_and_resolve: Smazat příspěvky forwarded: Přeposláno forwarded_to: Přeposláno na %{domain} mark_as_resolved: Označit jako vyřešené + mark_as_sensitive: Označit jako citlivé mark_as_unresolved: Označit jako nevyřešené + no_one_assigned: Nikdo notes: create: Přidat poznámku create_and_resolve: Vyřešit s poznámkou @@ -557,9 +658,10 @@ cs: placeholder: Popište, jaké akce byly vykonány, nebo jakékoliv jiné související aktuality… title: Poznámky notes_description_html: Zobrazit a zanechat poznámky pro ostatní moderátory i sebe v budoucnu + quick_actions_description_html: 'Proveďte rychlou akci nebo skrolujte dolů pro nahlášený obsah:' remote_user_placeholder: vzdálený uživatel z %{instance} reopen: Znovu otevřít hlášení - report: 'Nahlásit #%{id}' + report: 'Hlášení #%{id}' reported_account: Nahlášený účet reported_by: Nahlášeno uživatelem resolved: Vyřešeno @@ -573,6 +675,7 @@ cs: unassign: Odebrat unresolved: Nevyřešeno updated_at: Aktualizováno + view_profile: Zobrazit profil rules: add_new: Přidat pravidlo delete: Smazat @@ -599,7 +702,7 @@ cs: domain_blocks: all: Všem disabled: Nikomu - title: Zobrazit blokované domény + title: Zobrazit blokace domén users: Přihlášeným místním uživatelům domain_blocks_rationale: title: Zobrazit odůvodnění @@ -641,7 +744,7 @@ cs: desc_html: Je-li vypnuto, bude veřejná časová osa, na kterou odkazuje hlavní stránka serveru, omezena pouze na místní obsah title: Zahrnout federovaný obsah na neautentizované stránce veřejné časové osy show_staff_badge: - desc_html: Zobrazit na stránce uživatele odznak člena personálu + desc_html: Zobrazit na stránce uživatele odznak personálu title: Zobrazit odznak personálu site_description: desc_html: Úvodní odstavec v API. Popište, čím se tento server Mastodon odlišuje od ostatních, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně <a> a <em>. @@ -674,12 +777,27 @@ cs: destroyed_msg: Upload stránky byl úspěšně smazán! statuses: back_to_account: Zpět na stránku účtu + back_to_report: Zpět na stránku hlášení + batch: + remove_from_report: Odebrat z hlášení + report: Nahlásit deleted: Smazáno media: title: Média no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány title: Příspěvky účtu with_media: S médii + strikes: + actions: + delete_statuses: Uživatel %{name} smazal příspěvky %{target} + disable: Uživatel %{name} zmrazil účet %{target} + mark_statuses_as_sensitive: Uživatel %{name} označil příspěvky %{target} jako citlivé + none: Uživatel %{name} poslal %{target} varování + sensitive: Uživatel %{name} označil účet %{target} jako citlivý + silence: Uživatel %{name} omezil účet %{target} + suspend: Uživatel %{name} pozastavil účet %{target} + appeal_approved: Podáno odvolání + appeal_pending: Čekající odvolání system_checks: database_schema_check: message_html: Na spuštění čekají databázové migrace. Nechte je prosím proběhnout pro zajištění očekávaného chování aplikace @@ -704,16 +822,37 @@ cs: links: allow: Povolit odkaz allow_provider: Povolit vydavatele + description_html: Toto jsou odkazy, které jsou momentálně hojně sdíleny účty, jejichž příspěvky váš server vidí. To může pomoct vašim uživatelům zjistit, co se děje ve světě. Žádné odkazy se nezobrazují veřejně, dokud neschválíte vydavatele. Můžete také povolit nebo zamítnout jednotlivé odkazy. disallow: Zakázat odkaz disallow_provider: Zakázat vydavatele + shared_by_over_week: + few: Sdílený %{count} lidmi za poslední týden + many: Sdílený %{count} lidmi za poslední týden + one: Sdílený jedním člověkem za poslední týden + other: Sdílený %{count} lidmi za poslední týden title: Populární odkazy usage_comparison: Za dnešek %{today} sdílení, oproti %{yesterday} včera + only_allowed: Jen povolené pending_review: Čeká na posouzení preview_card_providers: allowed: Odkazy z tohoto vydavatele se smí objevovat mezi populárními + description_html: Toto jsou domény, na které vedou odkazy často sdílené na vašem serveru. Odkazy se nezobrazí veřejně mezi populárními, pokud příslušné domény nebudou schváleny. Vaše schválení (nebo zamítnutí) se vztahuje i na subdomény. rejected: Odkazy z tohoto vydavatele se neobjeví mezi populárními title: Vydavatelé - rejected: Zamítnutí + rejected: Zamítnuté + statuses: + allow: Povolit příspěvek + allow_account: Povolit autora + description_html: Toto jsou příspěvky, o kterých váš server ví, že jsou momentálně hodně sdíleny a oblibovány. To může pomoci vašim novým i vracejícím se uživatelům najít další lidi ke sledování. Žádné příspěvky se nezobrazují veřejně, dokud neschválíte autora a tento autor nepovolí navrhování svého účtu ostatním. Můžete také povolit či zamítnout jednotlivé příspěvky. + disallow: Zakázat příspěvek + disallow_account: Zakázat autora + not_discoverable: Autor nepovolil navrhování svého účtu ostatním + shared_by: + few: "%{friendly_count} sdílení nebo oblíbení" + many: "%{friendly_count} sdílení nebo oblíbení" + one: Jednou sdílen nebo oblíben + other: "%{friendly_count} sdílení nebo oblíbení" + title: Populární příspěvky tags: current_score: Aktuální skóre %{score} dashboard: @@ -722,6 +861,7 @@ cs: tag_servers_dimension: Nejčastější servery tag_servers_measure: různých serverů tag_uses_measure: použití celkem + description_html: Toto jsou hashtagy, které se momentálně objevují v mnoha příspěvcích, které váš server vidí. To může pomoci vašim uživatelům zjistit, o čem lidé zrovna nejvíce mluví. Žádné hashtagy se nezobrazují veřejně, dokud je neschválíte. listable: Může být navrhován not_listable: Nebude navrhován not_trendable: Neobjeví se mezi populárními @@ -732,7 +872,13 @@ cs: trending_rank: 'Populární #%{rank}' usable: Může být používán usage_comparison: Za dnešek %{today} použití, oproti %{yesterday} včera + used_by_over_week: + few: Použit %{count} lidmi za poslední týden + many: Použit %{count} lidmi za poslední týden + one: Použit jedním člověkem za poslední týden + other: Použit %{count} lidmi za poslední týden title: Trendy + trending: Populární warning_presets: add_new: Přidat nové delete: Smazat @@ -740,6 +886,18 @@ cs: empty: Zatím jste nedefinovali žádné předlohy varování. title: Spravovat předlohy pro varování admin_mailer: + new_appeal: + actions: + delete_statuses: smazání jeho příspěvků + disable: zmrazení jeho účtu + mark_statuses_as_sensitive: označení jeho příspěvků jako citlivých + none: varování + sensitive: označení jeho účtu jako citlivého + silence: omezení jeho účtu + suspend: pozastavení jeho účtu + body: 'Uživatel %{target} se odvolává proti rozhodnutí moderátora %{action_taken_by} z %{date}, kterým bylo %{type}. Napsal:' + next_steps: Můžete schválit odvolání pro vrácení rozhodnutí moderátora, nebo to ignorovat. + subject: Uživatel %{username} se odvolává proti rozhodnutí moderátora na %{instance} new_pending_account: body: Detaily nového účtu jsou uvedeny níže. Tuto žádost můžete schválit nebo zamítnout. subject: Nový účet na serveru %{instance} čekající na posouzení (%{username}) @@ -747,6 +905,21 @@ cs: body: Uživatel %{reporter} nahlásil uživatele %{target} body_remote: Někdo z domény %{domain} nahlásil uživatele %{target} subject: Nové hlášení pro %{instance} (#%{id}) + new_trends: + body: 'Následující položky vyžadují posouzení, než mohou být zobrazeny veřejně:' + new_trending_links: + no_approved_links: Momentálně nejsou žádné schválené populární odkazy. + requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární odkaz #%{rank}, kterým je momentálně "%{lowest_link_title}" se skóre %{lowest_link_score}.' + title: Populární odkazy + new_trending_statuses: + no_approved_statuses: Momentálně nejsou žádné schválené populární příspěvky. + requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární příspěvek #%{rank}, kterým je momentálně %{lowest_status_url} se skóre %{lowest_status_score}.' + title: Populární příspěvky + new_trending_tags: + no_approved_tags: Momentálně nejsou žádné schválené populární hashtagy. + requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární hashtag #%{rank}, kterým je momentálně #%{lowest_tag_name} se skóre %{lowest_tag_score}.' + title: Populární hashtagy + subject: Nové trendy k posouzení na %{instance} aliases: add_new: Vytvořit alias created_msg: Nový alias byl úspěšně vytvořen. Nyní můžete zahájit přesun ze starého účtu. @@ -761,9 +934,9 @@ cs: confirmation_dialogs: Potvrzovací dialogy discovery: Objevování localization: - body: Mastodon je přeložen do češtiny díky dobrovolníkům. + body: Mastodon je překládán dobrovolníky. guide_link: https://cs.crowdin.com/project/mastodon - guide_link_text: Každý může pomoci. + guide_link_text: Zapojit se může každý. sensitive_content: Citlivý obsah toot_layout: Rozložení příspěvků application_mailer: @@ -820,8 +993,10 @@ cs: status: account_status: Stav účtu confirming: Čeká na dokončení potvrzení e-mailu. + functional: Váš účet je plně funkční. pending: Vaše žádost čeká na posouzení naším personálem. To může nějakou dobu trvat. Pokud bude váš požadavek schválen, obdržíte e-mail. redirecting_to: Váš účet je neaktivní, protože je právě přesměrován na účet %{acct}. + view_strikes: Zobrazit minulé prohřešky vašeho účtu too_fast: Formulář byl odeslán příliš rychle, zkuste to znovu. trouble_logging_in: Problémy s přihlášením? use_security_key: Použít bezpečnostní klíč @@ -885,6 +1060,34 @@ cs: directory: Adresář profilů explanation: Objevujte uživatele podle jejich zájmů explore_mastodon: Prozkoumejte %{title} + disputes: + strikes: + action_taken: Přijaté opatření + appeal: Odvolání + appeal_approved: Odvolání proti tomuto prohřešku bylo úspěšné a není tak už platný + appeal_rejected: Odvolání bylo zamítnuto + appeal_submitted_at: Odvolání podáno + appealed_msg: Vaše odvolání bylo podáno. Pokud bude schváleno, budete informováni. + appeals: + submit: Podat odvolání + associated_report: Přidružené hlášení + created_at: Datováno + description_html: Toto jsou kroky podniknuté proti vašemu účtu a varování, která vám byla poslána personálem %{instance}. + recipient: Adresováno + status: 'Příspěvek #%{id}' + status_removed: Příspěvek už byl ze systému odstraněn + title: "%{action} ze dne %{date}" + title_actions: + delete_statuses: Odstranění příspěvku + disable: Zmrazení účtu + mark_statuses_as_sensitive: Označení příspěvků jako citlivých + none: Varování + sensitive: Označení účtu jako citlivého + silence: Omezení účtu + suspend: Pozastavení účtu + your_appeal_approved: Vaše odvolání bylo schváleno + your_appeal_pending: Podali jste odvolání + your_appeal_rejected: Vaše odvolání bylo zamítnuto domain_validator: invalid_domain: není platné doménové jméno errors: @@ -916,10 +1119,10 @@ cs: blocks: Blokujete bookmarks: Záložky csv: CSV - domain_blocks: Blokování domén + domain_blocks: Doménové blokace lists: Seznamy mutes: Skrýváte - storage: Paměť médií + storage: Úložiště médií featured_tags: add_new: Přidat nový errors: @@ -1076,10 +1279,10 @@ cs: one: Zatímco jste byli pryč jste navíc získali jednoho nového sledujícího! Hurá! other: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné! subject: - few: "%{count} nová oznámení od vaší poslední návštěvy \U0001F418" - many: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418" - one: "1 nové oznámení od vaší poslední návštěvy \U0001F418" - other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418" + few: "%{count} nová oznámení od vaší poslední návštěvy 🐘" + many: "%{count} nových oznámení od vaší poslední návštěvy 🐘" + one: "1 nové oznámení od vaší poslední návštěvy 🐘" + other: "%{count} nových oznámení od vaší poslední návštěvy 🐘" title: Ve vaší nepřítomnosti… favourite: body: 'Váš příspěvek si oblíbil uživatel %{name}:' @@ -1235,8 +1438,8 @@ cs: windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone - revoke: Zrušit - revoke_success: Relace úspěšně zrušena + revoke: Odvolat + revoke_success: Relace úspěšně odvolána title: Relace view_authentication_history: Zobrazit historii přihlášení do vašeho účtu settings: @@ -1259,6 +1462,7 @@ cs: profile: Profil relationships: Sledovaní a sledující statuses_cleanup: Automatické mazání příspěvků + strikes: Moderační prohřešky two_factor_authentication: Dvoufázové ověřování webauthn_authentication: Bezpečnostní klíče statuses: @@ -1283,10 +1487,11 @@ cs: content_warning: 'Varování o obsahu: %{warning}' default_language: Stejný jako jazyk rozhraní disallowed_hashtags: - few: 'obsahoval nepovolené hashtagy: %{tags}' - many: 'obsahoval nepovolené hashtagy: %{tags}' - one: 'obsahoval nepovolený hashtag: %{tags}' - other: 'obsahoval nepovolené hashtagy: %{tags}' + few: 'obsahoval zakázané hashtagy: %{tags}' + many: 'obsahoval zakázané hashtagy: %{tags}' + one: 'obsahoval zakázaný hashtag: %{tags}' + other: 'obsahoval zakázané hashtagy: %{tags}' + edited_at_html: Upraven %{date} errors: in_reply_not_found: Příspěvek, na který se pokoušíte odpovědět, neexistuje. open_in_web: Otevřít na webu @@ -1349,7 +1554,7 @@ cs: '2629746': 1 měsíc '31556952': 1 rok '5259492': 2 měsíce - '604800': 1 week + '604800': 1 týden '63113904': 2 roky '7889238': 3 měsíce min_age_label: Hranice stáří @@ -1454,6 +1659,7 @@ cs: formats: default: "%d. %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Přidat disable: Vypnout 2FA @@ -1470,27 +1676,55 @@ cs: recovery_instructions_html: Ztratíte-li někdy přístup ke svému telefonu, můžete k získání přístupu k účtu použít jeden ze záložních kódů. Uchovejte tyto kódy v bezpečí. Můžete si je například vytisknout a uložit je mezi jiné důležité dokumenty. webauthn: Bezpečnostní klíče user_mailer: + appeal_approved: + action: Přejít do vašeho účtu + explanation: Odvolání proti prohřešku vašeho účtu ze dne %{strike_date}, které jste podali %{appeal_date}, bylo schváleno. Váš účet je opět v pořádku. + subject: Vaše odvolání ze dne %{date} bylo schváleno + title: Odvolání schváleno + appeal_rejected: + explanation: Odvolání proti prohřešku vašeho účtu ze dne %{strike_date}, které jste podali %{appeal_date}, bylo zamítnuto. + subject: Vaše odvolání z %{date} bylo zamítnuto + title: Odvolání zamítnuto backup_ready: explanation: Vyžádali jste si úplnou zálohu svého účtu Mastodon. Nyní je připravena ke stažení! subject: Váš archiv je připraven ke stažení title: Stažení archivu - sign_in_token: - details: 'Zde jsou podrobnosti pokusu:' - explanation: 'Zjistili jsme, že se někdo pokusil k vašemu přihlásit z neznámé IP adresy. Pokud jste to vy, zadejte níže uvedený kód na přihlašovací stránce s výzvou:' - further_actions: 'Pokud jste to nebyli vy, změňte prosím své heslo a zapněte si dvoufázově ověřování svého účtu. Můžete tak učinit hned tady:' - subject: Potvrďte prosím pokus o přihlášení - title: Pokus o přihlášení + suspicious_sign_in: + change_password: změnit vaše heslo + details: 'Tady jsou detaily přihášení:' + explanation: Detekovali jsme přihlášení do vašeho účtu z nové IP adresy. + further_actions_html: Pokud jste to nebyli vy, doporučujeme pro zabezpečení vašeho účtu okamžitě %{action} a zapnout dvoufázové ověřování. + subject: Váš účet byl použit z nové IP adresy + title: Nové přihlášení warning: + appeal: Podat odvolání + appeal_description: Pokud se domníváte, že se jedná o chybu, můžete podat odvolání personálu %{instance}. + categories: + spam: Spam + violation: Obsah porušuje následující zásady komunity explanation: delete_statuses: Bylo shledáno, že některé vaše příspěvky porušují jednu nebo více zásad komunity a následně byly odstraněny moderátory %{instance}. + disable: Nemůžete už používat svůj účet, ale váš profil a další data zůstávají nedotčeny. Můžete si vyžádat zálohu svých dat, měnit nastavení účtu nebo ho smazat. + mark_statuses_as_sensitive: Některé vaše příspěvky byly označeny jako citlivé moderátory %{instance}. To znamená, že pro zobrazení náhledu médií v příspěvcích na ně budou muset lidé nejprve kliknout. Média můžete při psaní budoucích příspěvků označit jako citlivá sami. + sensitive: Odteď budou všechny vámi nahrané mediální soubory označeny jako citlivé a skryté za proklikávacím varováním. + silence: Můžete nadále používat svůj účet, ale pouze lidé, kteří vás již sledovali, uvidí vaše příspěvky na tomto serveru a můžete být vynecháni z různých doporučovacích funkcí. Ostatní vás však stále mohou začít ručně sledovat. + suspend: Nemůžete už používat svůj účet a váš profil a ostatní data již nejsou dostupná. Stále se můžete přihlásit pro vyžádání zálohy svých dat, dokud nebudou za přibližně 30 dnů zcela smazána, ale ponecháme si některé základní údaje, abychom vám zabránili v obcházení pozastavení. + reason: 'Důvod:' + statuses: 'Předmětné příspěvky:' subject: + delete_statuses: Vaše příspěvky na %{acct} byly odstraněny disable: Váš účet %{acct} byl zmrazen + mark_statuses_as_sensitive: Vaše příspěvky pod %{acct} byly označeny jako citlivé none: Varování pro %{acct} + sensitive: Vaše příspěvky pod %{acct} budou od nynějška označeny jako citlivé silence: Váš účet %{acct} byl omezen suspend: Váš účet %{acct} byl pozastaven title: + delete_statuses: Příspěvky odstraněny disable: Účet zmrazen + mark_statuses_as_sensitive: Příspěvky označeny jako citlivé none: Varování + sensitive: Účet označen jako citlivý silence: Účet omezen suspend: Účet pozastaven welcome: @@ -1512,13 +1746,10 @@ cs: title: Vítejte na palubě, %{name}! users: follow_limit_reached: Nemůžete sledovat více než %{limit} lidí - generic_access_help_html: Máte potíže s přístupem ke svému účtu? Můžete nás kontaktovat pro pomoc na %{email} invalid_otp_token: Neplatný kód pro dvoufázové ověřování - invalid_sign_in_token: Neplatný bezpečnostní kód otp_lost_help_html: Pokud jste ztratili přístup k oběma, spojte se s %{email} seamless_external_login: Jste přihlášeni přes externí službu, nastavení hesla a e-mailu proto nejsou dostupná. signed_in_as: 'Přihlášeni jako:' - suspicious_sign_in_confirmation: Zdá se, že se z tohoto zařízení přihlašujete poprvé, proto pro ověření přihlášení na vaši e-mailovou adresu posíláme bezpečnostní kód. verification: explanation_html: 'Můžete se ověřit jako vlastník odkazů v metadatech profilu. Pro tento účel musí stránka v odkazu obsahovat odkaz zpět na váš profil na Mastodonu. Odkaz zpět musí mít atribut rel="me". Na textu odkazu nezáleží. Zde je příklad:' verification: Ověření diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 15de9ac76..1b788574e 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -15,6 +15,7 @@ cy: contact: Cyswllt contact_missing: Heb ei osod contact_unavailable: Ddim yn berthnasol + continue_to_web: Parhau i app gwe discover_users: Darganfod defnyddwyr documentation: Dogfennaeth federation_hint_html: Gyda cyfrif ar %{instance}, gallwch dilyn pobl ar unrhyw gweinydd Mastodon, a thu hwnt. @@ -24,7 +25,11 @@ cy: Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei rwystro oni bai eich bod am rwystro'r achos cyfan, ac os felly dylech ddefnyddio bloc parth. learn_more: Dysu mwy + logged_in_as_html: Rydych chi wedi mewngofnodi fel %{username}. + logout_before_registering: Rydych chi eisoes wedi mewngofnodi. privacy_policy: Polisi preifatrwydd + rules: Rheolau gweinydd + rules_html: 'Isod mae crynodeb o''r rheolau y mae angen i chi eu dilyn os ydych chi am gael cyfrif ar y gweinydd hwn o Mastodon:' see_whats_happening: Gweld beth sy'n digwydd server_stats: 'Ystadegau gweinydd:' source_code: Cod ffynhonnell @@ -93,6 +98,7 @@ cy: posts_with_replies: Tŵtiau ac atebion roles: admin: Gweinyddwr + bot: Bot group: Grŵp moderator: Safonwr unavailable: Proffil ddim ar gael @@ -521,6 +527,8 @@ cy: review: Adolygu statws updated_msg: Gosodiadau hashnodau wedi'i diweddaru'n llwyddiannus title: Gweinyddiaeth + trends: + only_allowed: Derbyniwyd yn unig warning_presets: add_new: Ychwanegu newydd delete: Dileu @@ -832,13 +840,6 @@ cy: other: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! two: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! zero: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - subject: - few: "%{count} hysbysiad newydd ers eich ymweliad diwethaf" - many: "%{count} hysbysiad newydd ers eich ymweliad diwethaf" - one: 1 hysbysiad newydd ers eich ymweliad diwethaf - other: "%{count} hysbysiad newydd ers eich ymweliad diwethaf" - two: "%{count} hysbysiad newydd ers eich ymweliad diwethaf" - zero: "%{count} hysbysiad newydd ers eich ymweliad diwethaf" title: Yn eich absenoldeb... favourite: body: 'Cafodd eich statws ei hoffi gan %{name}:' @@ -1151,12 +1152,6 @@ cy: explanation: Fe wnaethoch chi gais am gopi wrth gefn llawn o'ch cyfrif Mastodon. Mae nawr yn barod i'w lawrlwytho! subject: Mae eich archif yn barod i'w lawrlwytho title: Allfudo archif - sign_in_token: - details: 'Dyma''r manylion o''r ceisiad:' - explanation: 'Wnaethom ni synhwyro ceisiad i fewngofnodi i''ch cyfrif o gyfeiriad IP anabyddiedig. Os mae hyn yn chi, mewnbynnwch y cod diogelwch isod i fewn i''r dudalen herio mewngofnodiad:' - further_actions: 'Os nad oedd hyn yn chi, newidwch eich cyfrinair ac alluogi awdurdodi dauffactor ar eich cyfrif. Gallwch gwneud hyn fama:' - subject: Cadarnhewch yr ymgais mewngofnodi - title: Ymgais mewngofnodi warning: subject: disable: Mae'ch cyfrif %{acct} wedi'i rewi @@ -1187,13 +1182,10 @@ cy: title: Croeso, %{name}! users: follow_limit_reached: Nid oes modd i chi ddilyn mwy na %{limit} o bobl - generic_access_help_html: Cael trafferth yn cyrchu eich cyfrif? Efallai hoffwch cysylltu â %{email} am gymorth invalid_otp_token: Côd dau-ffactor annilys - invalid_sign_in_token: Cod diogelwch annilys otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email} seamless_external_login: Yr ydych wedi'ch mewngofnodi drwy wasanaeth allanol, felly nid yw gosodiadau cyfrinair ac e-bost ar gael. signed_in_as: 'Wedi mewngofnodi fel:' - suspicious_sign_in_confirmation: Mae'n edrych fel nad ydych wedi mewngofnodi o'r dyfais hyn o'r blaen, a nid ydych wedi mewngofnodi am sbel, felly rydym yn anfon cod diogelwch i'ch cyfeiriad ebost i gadarnhau bod chi yw hi. verification: explanation_html: 'Mae modd i chi ddilysu eich hun fel perchenog y dolenni yn metadata eich proffil. Rhaid i''r wefan a dolen iddi gynnwys dolen yn ôl i''ch proffil Mastodon. Rhaid i''r ddolen yn ôl gael nodwedd rel="fi". Nid oes ots beth yw cynnwys testun y ddolen. Dyma enghraifft:' verification: Dilysu diff --git a/config/locales/da.yml b/config/locales/da.yml index d3182ad7f..28c009ef3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -199,7 +199,6 @@ da: security_measures: only_password: Kun adgangskode password_and_2fa: Adgangskode og 2FA - password_and_sign_in_token: Adgangskode og e-mailtoken sensitive: Gennemtving sensitiv sensitized: Markeret som sensitiv shared_inbox_url: Delt indbakke-URL @@ -802,6 +801,7 @@ da: other: Delt af %{count} personer den seneste uge title: Populære links usage_comparison: Delt %{today} gange i dag, sammenlignet med %{yesterday} i går + only_allowed: Kun tilladte pending_review: Afventer revision preview_card_providers: allowed: Links fra denne udgiver kan trende @@ -843,6 +843,7 @@ da: one: Brugt af én person den seneste uge other: Brugt af %{count} personer den seneste uge title: Trends + trending: Populært warning_presets: add_new: Tilføj ny delete: Slet @@ -854,6 +855,7 @@ da: actions: delete_statuses: for sletning af vedkommendes indlæg disable: for frysning af vedkommendes konto + mark_statuses_as_sensitive: for at markere deres indlæg som følsomme none: en advarsel sensitive: for markering af vedkommendes konto som sensitiv silence: for begrænsning af vedkommendes konto @@ -1027,6 +1029,7 @@ da: strikes: action_taken: Handling foretaget appeal: Appel + appeal_approved: Kontoanmeldelsen er blevet appelleret og er ikke længere gyldig appeal_rejected: Appellen er afvist appeal_submitted_at: Appel indgivet appealed_msg: Din appel er indgivet. Godkendes den, underrettes du. @@ -1042,7 +1045,9 @@ da: title_actions: delete_statuses: Indlægsfjernelse disable: Kontofrysning + mark_statuses_as_sensitive: Markering af indlæg som følsomme none: Advarsel + sensitive: Markering af konto som følsom silence: Kontobegrænsning suspend: Kontosuspendering your_appeal_approved: Din appel er godkendt @@ -1233,8 +1238,8 @@ da: one: Under dit fravær har du har også fået en ny følger! Sådan! other: Under dit fravær har du har også fået %{count} nye følgere! Sådan! subject: - one: "1 ny notifikation siden senest besøg \U0001F418" - other: "%{count} nye notifikationer siden senest besøg \U0001F418" + one: "1 ny notifikation siden senest besøg 🐘" + other: "%{count} nye notifikationer siden senest besøg 🐘" title: I dit fravær... favourite: body: "%{name} favoritmarkerede dit indlæg:" @@ -1549,12 +1554,13 @@ da: explanation: Den anmodede fulde sikkerhedskopi af din Mastodon-konto er nu klar til download! subject: Dit arkiv er klar til download title: Arkiv download - sign_in_token: - details: 'Her er nogle detaljer om forsøget:' - explanation: 'Der er registreret et forsøg på at logge ind på din konto fra en ukendt IP-adresse. Er dette er dig, så angiv nedenstående sikkerhedskode på log ind-bekræftelsessiden:' - further_actions: 'Var dette ikke dig, så ændr adgangskoden og aktivér tofaktorgodkendelse på din konto, hvilket kan gøres hér:' - subject: Bekræft indlogningsforsøg - title: Indlogningsforsøg + suspicious_sign_in: + change_password: skift din adgangskode + details: 'Her er nogle detaljer om login-forsøget:' + explanation: Indlogning på din konto fra en ny IP-adresse detekteret. + further_actions_html: Hvis dette ikke var dig, anbefaler vi, at du %{action} med det samme og aktiverer to-faktor godkendelse for at holde din konto sikker. + subject: Din konto er blevet tilgået fra en ny IP-adresse + title: Ny indlogning warning: appeal: Indgiv appel appeal_description: Mener du, at dette er en fejl, kan der indgives en appel til %{instance}-personalet. @@ -1605,13 +1611,10 @@ da: title: Velkommen ombord, %{name}! users: follow_limit_reached: Du kan maks. følge %{limit} personer - generic_access_help_html: Problemer med at tilgå din konto? Du kan kontakte %{email} for hjælp invalid_otp_token: Ugyldig tofaktorkode - invalid_sign_in_token: Ugyldig sikkerhedskode otp_lost_help_html: Har du mistet adgang til begge, kan du kontakte %{email} seamless_external_login: Du er logget ind via en ekstern tjeneste, så adgangskode- og e-mailindstillinger er utilgængelige. signed_in_as: 'Logget ind som:' - suspicious_sign_in_confirmation: Du lader ikke at have logget ind fra denne enhed før, og du har ikke logget ind i et stykke tid, så der sendes en sikkerhedskode til din e-mailadresse mhp. at bekræfte din identitet. verification: explanation_html: 'Du kan bekræfte dig selv som ejer af linkene i din profilmetadata. For at gøre det, skal det linkede websted indeholde et link pegende tilbage til din Mastodon-profil. Returlinket skal have en rel="mig"-attribut. Linkets tekstindhold betyder ikke noget. Her er et eksempel:' verification: Bekræftelse diff --git a/config/locales/de.yml b/config/locales/de.yml index 78ba2c440..26e914fe7 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -165,6 +165,9 @@ de: pending: In Warteschlange perform_full_suspension: Verbannen previous_strikes: Vorherige Strikes + previous_strikes_description_html: + one: Dieses Konto hat einen Strike. + other: Dieses Konto hat %{count} Strikes. promote: Befördern protocol: Protokoll public: Öffentlich @@ -196,7 +199,6 @@ de: security_measures: only_password: Nur Passwort password_and_2fa: Passwort und 2FA - password_and_sign_in_token: Passwort und E-Mail-Token sensitive: NSFW sensitized: Als NSFW markieren shared_inbox_url: Geteilte Posteingang-URL @@ -221,7 +223,7 @@ de: undo_suspension: Verbannung aufheben unsilenced_msg: "%{username}'s Konto erfolgreich freigegeben" unsubscribe: Abbestellen - unsuspended_msg: "%{username}'s Konto erfolgreich freigegeben" + unsuspended_msg: Konto von %{username} erfolgreich freigegeben username: Profilname view_domain: Übersicht für Domain anzeigen warn: Warnen @@ -515,6 +517,7 @@ de: delivery: all: Alle clear: Zustellfehler löschen + failing: Schlägt fehl restart: Lieferung neu starten stop: Lieferung stoppen unavailable: Nicht verfügbar @@ -523,6 +526,9 @@ de: delivery_error_hint: Wenn eine Lieferung für %{count} Tage nicht möglich ist, wird sie automatisch als nicht lieferbar markiert. destroyed_msg: Daten von %{domain} sind nun in der Warteschlange für die bevorstehende Löschung. empty: Keine Domains gefunden. + known_accounts: + one: "%{count} bekanntes Konto" + other: "%{count} bekannte Konten" moderation: all: Alle limited: Beschränkt @@ -592,7 +598,7 @@ de: action_taken_by: Maßnahme ergriffen durch actions: delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. - mark_as_sensitive_description_html: Der gemeldete Beitrag wird als NSFW markiert und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. + mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future infractions by the same account. other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation an das gemeldete Konto. resolve_description_html: Es wird keine Maßnahme gegen den gemeldeten Account ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die es bereits verfolgen oder manuell nachschlagen und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. @@ -654,8 +660,8 @@ de: desc_html: Anzahl der lokal geposteten Beiträge, aktiven Nutzern und neuen Registrierungen in wöchentlichen Zusammenfassungen title: Veröffentliche gesamte Statistiken über Benutzeraktivitäten bootstrap_timeline_accounts: - desc_html: Mehrere Profilnamen durch Kommata trennen. Funktioniert nur mit lokalen und nicht gesperrten Konten. Standardwert bei freigelassenem Feld sind alle lokalen Admins. - title: Konten, denen Neu-Angemeldete automatisch folgen + desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Accounts werden immer in den Folgemempfehlungen angezeigt + title: Konten, die Neu-Angemeldete empfohlen bekommen sollen contact_information: email: Öffentliche E-Mail-Adresse username: Profilname für die Kontaktaufnahme @@ -767,6 +773,11 @@ de: system_checks: database_schema_check: message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führen Sie sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält + elasticsearch_running_check: + message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe ob Elasticsearch läuft oder deaktiviere die Volltextsuche + elasticsearch_version_check: + message_html: 'Inkompatible Elasticsearch-Version: %{value}' + version_comparison: Elasticsearch %{running_version} läuft, aber %{required_version} wird benötigt rules_check: action: Serverregeln verwalten message_html: Sie haben keine Serverregeln definiert. @@ -786,6 +797,9 @@ de: description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen, herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. disallow: Verbiete Link disallow_provider: Verbiete Herausgeber + shared_by_over_week: + one: In der letzten Woche von einer Person geteilt + other: In der letzten Woche von %{count} Personen geteilt title: Angesagte Links usage_comparison: Heute %{today} mal geteilt, gestern %{yesterday} mal pending_review: Überprüfung ausstehend @@ -825,6 +839,9 @@ de: trending_rank: 'Trend #%{rank}' usable: Kann verwendet werden usage_comparison: Heute %{today} mal genutzt, gestern %{yesterday} mal + used_by_over_week: + one: In der letzten Woche von einer Person genutzt + other: In der letzten Woche von %{count} Personen genutzt title: Trends warning_presets: add_new: Neu hinzufügen @@ -1217,11 +1234,11 @@ de: body: Hier ist eine kurze Zusammenfassung der Nachrichten, die du seit deinem letzten Besuch am %{since} verpasst hast mention: "%{name} hat dich erwähnt:" new_followers_summary: - one: Außerdem ist dir seit du weg warst ein weiteres Wesen gefolgt! Juhu! - other: Außerdem sind dir seit du weg warst %{count} weitere Wesen gefolgt! Großartig! + one: Außerdem ist dir seit du weg warst ein weiteres Konto gefolgt! Juhu! + other: Außerdem sind dir seit du weg warst %{count} weitere Konten gefolgt! Großartig! subject: - one: "1 neue Mitteilung seit deinem letzten Besuch \U0001F418" - other: "%{count} neue Mitteilungen seit deinem letzten Besuch \U0001F418" + one: "1 neue Mitteilung seit deinem letzten Besuch 🐘" + other: "%{count} neue Mitteilungen seit deinem letzten Besuch 🐘" title: In deiner Abwesenheit... favourite: body: 'Dein Beitrag wurde von %{name} favorisiert:' @@ -1618,12 +1635,13 @@ de: explanation: Du hast ein vollständiges Backup von deinem Mastodon-Konto angefragt. Es kann jetzt heruntergeladen werden! subject: Dein Archiv ist bereit zum Download title: Archiv-Download - sign_in_token: + suspicious_sign_in: + change_password: dein Passwort zu ändern details: 'Hier sind die Details des Versuchs:' - explanation: 'Wir haben einen Versuch festgestellt, sich mit deinem Konto von einer nicht erkannten IP-Adresse anzumelden. Wenn du das bist, gib bitte den Sicherheitscode unten auf der Anmeldecode-Seite ein:' - further_actions: 'Wenn du das nicht warst, ändere bitte dein Passwort und aktiviere die Zwei-Faktor-Authentifizierung in deinem Konto. Du kannst das hier tun:' - subject: Bitte bestätige den Anmeldeversuch - title: Anmeldeversuch + explanation: Wir haben eine Anmeldung zu deinem Konto von einer neuen IP-Adresse festgestellt. + further_actions_html: Wenn du das nicht warst, empfehlen wir dir, %{action} und die Zwei-Faktor-Authentifizierung zu aktivieren, um dein Konto sicher zu halten. + subject: Es wurde auf dein Konto von einer neuen IP-Adresse zugegriffen + title: Eine neue Anmeldung warning: appeal: Einspruch einsenden appeal_description: Wenn du glaubst, dass dies ein Fehler ist, kannst du einen Einspruch an die Mitarbeiter von %{instance} senden. @@ -1660,7 +1678,7 @@ de: edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Folgenden vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten - final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beitrage von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich vorstellen mit dem #introductions-Hashtag.' + final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich vorstellen mit dem #introductions-Hashtag.' full_handle: Dein vollständiger Benutzername full_handle_hint: Dies ist was du deinen Freunden sagen kannst, damit sie dich anschreiben oder von einem anderen Server folgen können. review_preferences_action: Einstellungen ändern @@ -1674,13 +1692,10 @@ de: title: Willkommen an Bord, %{name}! users: follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen - generic_access_help_html: Probleme beim Zugriff auf dein Konto? Du kannst dich mit %{email} in Verbindung setzen, um Hilfe zu erhalten invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code - invalid_sign_in_token: Ungültiger Sicherheitscode otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email} seamless_external_login: Du bist angemeldet über einen Drittanbieter-Dienst, weswegen Passwort- und E-Maileinstellungen nicht verfügbar sind. signed_in_as: 'Angemeldet als:' - suspicious_sign_in_confirmation: Du hast dich anscheinend seit einer ganzen Weile noch nicht von diesem Gerät eingeloggt, also senden wir einen Sicherheitscode an deine E-Mail-Adresse, um zu bestätigen, dass du es bist. verification: explanation_html: 'Du kannst bestätigen, dass die Links in deinen Profil-Metadaten dir gehören. Dafür muss die verlinkte Website einen Link zurück auf dein Mastodon-Profil enthalten. Dieser Link muss ein rel="me"-Attribut enthalten. Der Linktext ist dabei egal. Hier ist ein Beispiel:' verification: Verifizierung diff --git a/config/locales/devise.ca.yml b/config/locales/devise.ca.yml index 4c58c432f..c94d996fc 100644 --- a/config/locales/devise.ca.yml +++ b/config/locales/devise.ca.yml @@ -3,87 +3,87 @@ ca: devise: confirmations: confirmed: La teva adreça de correu electrònic s'ha confirmat correctament. - send_instructions: "En pocs minuts rebràs un correu electrònic amb instruccions sobre com confirmar l'adreça de correu. \nSi us plau verifica la teva carpeta de correu brossa si no has rebut aquest correu." + send_instructions: "En pocs minuts, rebràs un correu electrònic amb instruccions sobre com confirmar l'adreça de correu. \nSi us plau, verifica la teva carpeta de correu brossa si no l'has rebut." send_paranoid_instructions: |- - Si l'adreça de correu electrònic existeix en la nostra base de dades, en pocs minuts rebràs un correu electrònic amb instruccions sobre com confirmar l'adreça de correu. - Si us plau verifica la teva carpeta de correu brossa si no has rebut aquest correu. + Si l'adreça de correu electrònic ja existeix a la nostra base de dades, rebràs un correu electrònic amb instruccions sobre com confirmar-la. + Si us plau, verifica la teva carpeta de correu brossa si no has rebut el correu. failure: already_authenticated: Ja estàs registrat. inactive: El teu compte encara no s'ha activat. - invalid: "%{authentication_keys} o contrasenya no són vàlids." - last_attempt: Tens un intent més, abans que es bloquegi el compte. + invalid: "%{authentication_keys} o la contrasenya no són vàlids." + last_attempt: Tens un intent més abans que es bloquegi el teu compte. locked: El compte s'ha bloquejat. - not_found_in_database: "%{authentication_keys} o contrasenya no són vàlids." + not_found_in_database: "%{authentication_keys} o la contrasenya no són vàlids." pending: El teu compte encara està en revisió. - timeout: La sessió ha expirat. Inicia sessió una altra vegada per a continuar. + timeout: La sessió ha expirat. Torna a iniciar la sessió per continuar. unauthenticated: Cal iniciar sessió o registrar-se abans de continuar. unconfirmed: Has de confirmar l'adreça de correu electrònic abans de continuar. mailer: confirmation_instructions: action: Verifica l'adreça de correu action_with_app: Confirma i torna a %{app} - explanation: Has creat un compte a %{host} amb aquesta adreça de correu electrònic. Estàs a un sol clic de l'activació. Si no fos així, ignora aquest correu electrònic. - explanation_when_pending: Has sol·licitat una invitació a %{host} amb aquesta adreça de correu electrònic. Un cop confirmis la teva adreça de correu electrònic revisarem la teva sol·licitud. No es pot iniciar la sessió fins llavors. Si la teva sol·licitud és rebutjada les teves dades s’eliminaran, de manera que no s’exigirà cap altra acció. Si no has estat tu qui ha fet aquest sol·licitud si us plau ignora aquest correu electrònic. - extra_html: Si us plau consulta també les regles del servidor i les nostres condicions de servei. - subject: 'Mastodon: Instruccions de confirmació per a %{instance}' + explanation: Has creat un compte a %{host} amb aquesta adreça de correu electrònic. Estàs a un sol clic d'activar-lo. Si no ho has fet tu, ignora aquest correu electrònic. + explanation_when_pending: Has sol·licitat una invitació a %{host} amb aquesta adreça de correu electrònic. Un cop confirmis la teva adreça de correu electrònic, revisarem la teva sol·licitud. Pots iniciar la sessió per canviar els detalls o eliminar el teu compte, però no pots accedir a la majoria de les funcions fins que s'hagi aprovat. Si es rebutja la teva sol·licitud, les teves dades s’eliminaran, de manera que no se t’exigirà cap més acció. Si no has estat tu qui ha fet aquesta sol·licitud, ignora aquest correu electrònic, si us plau. + extra_html: Si us plau, consulta també a les regles del servidor i a les nostres condicions de servei. + subject: 'Mastodon: instruccions de confirmació per a %{instance}' title: Verifica l'adreça de correu email_changed: explanation: 'L''adreça de correu del teu compte s''està canviant a:' - extra: Si no has canviat el teu correu electrònic és probable que algú hagi accedit al teu compte. Si us plau, canvia la contrasenya immediatament o posa't en contacte amb l'administrador del servidor si no pots accedir al teu compte. + extra: Si no has canviat el teu correu electrònic, és probable que algú hagi accedit al teu compte. Si us plau, canvia la contrasenya immediatament o posa't en contacte amb l'administrador del servidor si no pots accedir al teu compte. subject: 'Mastodon: s''ha canviat l''adreça electrònica' - title: Adreça de correu electrònic nova + title: Nova adreça de correu electrònic password_change: explanation: S'ha canviat la contrasenya del teu compte. extra: Si no has canviat la teva contrasenya, és probable que algú hagi accedit al teu compte. Si us plau, canvia la contrasenya immediatament o posa't en contacte amb l'administrador del servidor si no pots accedir al teu compte. - subject: 'Mastodon: Contrasenya canviada' + subject: 'Mastodon: contrasenya canviada' title: Contrasenya canviada reconfirmation_instructions: explanation: Confirma la nova adreça per canviar el teu correu electrònic. - extra: Si no has iniciat aquest canvi, ignora aquest correu electrònic. L'adreça electrònica del compte de Mastodon no canviarà fins que accedeixis a l'enllaç de dalt. + extra: Si tu no has iniciat aquest canvi, ignora aquest correu electrònic. L'adreça de correu electrònic del compte de Mastodon no canviarà fins que no accedeixis a l'enllaç que hi ha a dalt. subject: 'Mastodon: confirma l''adreça electrònica per a %{instance}' title: Verifica l'adreça de correu electrònic reset_password_instructions: - action: Canviar contrasenya + action: Canvia la contrasenya explanation: Has sol·licitat una contrasenya nova per al teu compte. - extra: Si no ho has sol·licitat, ignora aquest correu electrònic. La teva contrasenya no canviarà fins que accedeixis a l'enllaç de dalt i creis un de nou. - subject: 'Mastodon: Instruccions per a reiniciar contrasenya' + extra: Si no l'has sol·licitat, ignora aquest correu electrònic. La teva contrasenya no canviarà fins que no accedeixis a l'enllaç que hi ha a dalt i en creïs una de nova. + subject: 'Mastodon: instruccions per reiniciar la contrasenya' title: Contrasenya restablerta two_factor_disabled: - explanation: L´autenticació de dos factors pel teu compte ha estat desactivat. L'inici de sessió és ara possible utilitzant només l'adreça de correu electrònic i la contrasenya. - subject: 'Mastodon: autenticació de dos factors desactivada' - title: 2FA desactivat + explanation: L'autenticació de doble factor per al teu compte s'ha desactivat. Ara només pots iniciar la sessió fent servir la teva adreça de correu electrònic i la contrasenya. + subject: 'Mastodon: autenticació de doble factor desactivada' + title: AF2 desactivat two_factor_enabled: - explanation: L'autenticació de dos factors ha estat habilitada pel teu compte. Un token generat per l'aplicació d'emparellat TOTP serà requerit per a iniciar sessió. - subject: 'Mastodon: autenticació de dos factors activada' - title: 2FA activat + explanation: L'autenticació de doble factor s'ha habilitat per al teu compte. Per iniciar la sessió, es requerirà un token generat per l'aplicació TOTP que hagis emparellat. + subject: 'Mastodon: autenticació de doble factor activada' + title: AF2 activat two_factor_recovery_codes_changed: - explanation: Els codis de recuperació anteriors han estat invalidats i s'han generat uns de nous. - subject: 'Mastodon: codis de recuperació de Dos factors regenerats' - title: 2FA codis de recuperació canviats + explanation: Els codis de recuperació anteriors ja no són vàlids i se n'han generat de nous. + subject: 'Mastodon: codis de recuperació de doble factor regenerats' + title: Codis de recuperació A2F canviats unlock_instructions: - subject: 'Mastodon: Instruccions de desbloqueig' + subject: 'Mastodon: instruccions per desbloquejar' webauthn_credential: added: - explanation: La següent clau de seguretat s'ha afegit al teu compte - subject: 'Mastodon: Nova clau de seguretat' + explanation: S'ha afegit la següent clau de seguretat al vostre compte + subject: 'Mastodon: nova clau de seguretat' title: S'ha afegit una nova clau de seguretat deleted: explanation: La següent clau de seguretat s'ha esborrat del teu compte subject: 'Mastodon: clau de seguretat esborrada' title: Una de les teves claus de seguretat ha estat esborrada webauthn_disabled: - explanation: S'ha desactivat l'autenticació amb claus de seguretat per al teu compte. L'inici de sessió és ara possible emprant només el token generat per l'aplicació TOTP. - subject: 'Mastodon: S''ha desactivat l''autenticació amb claus de seguretat' + explanation: S'ha desactivat l'autenticació amb claus de seguretat per al teu compte. Ara només pots iniciar la sessió usant el token generat per l'aplicació TOTP. + subject: 'Mastodon: s''ha desactivat l''autenticació amb claus de seguretat' title: Claus de seguretat desactivades webauthn_enabled: - explanation: S'ha activat l'autenticació amb claus de seguretat. La teva clau de seguretat por ser emprada per a iniciar sessió. - subject: 'Mastodon: Autenticació amb clau de seguretat activada' + explanation: S'ha activat l'autenticació amb claus de seguretat. Ja pots usar la teva clau de seguretat per iniciar sessió. + subject: 'Mastodon: autenticació amb clau de seguretat activada' title: Claus de seguretat activades omniauth_callbacks: - failure: No podem autenticar-te des de %{kind} degut a "%{reason}". - success: Autenticat amb èxit des del compte %{kind}. + failure: No s'ha pogut autenticar des de %{kind} degut a "%{reason}". + success: Autenticat correctament des del compte %{kind}. passwords: - no_token: No pots accedir a aquesta pàgina sense provenir des del correu de restabliment de la contrasenya. Si vens des del correu de restabliment de contrasenya, assegura't que estàs emprant l'adreça completa proporcionada. + no_token: Només pots accedir a aquesta pàgina a través de l'enllaç de restabliment de la contrasenya. Si vens d'un correu electrònic com aquest, assegura't que has introduït l'adreça completa proporcionada. send_instructions: Si el teu correu electrònic existeix en la nostra base de dades, rebràs en pocs minuts un enllaç de restabliment de contrasenya en l'adreça de correu. Si us plau verifica la teva carpeta de correu brossa si no has rebut aquest correu. send_paranoid_instructions: Si el teu correu electrònic existeix en la nostra base de dades, rebràs un enllaç de restabliment de contrasenya en l'adreça de correu en pocs minuts. Si us plau verifica la carpeta de correu brossa si no reps aquest correu. updated: La contrasenya s'ha canviat correctament. Ara ja estàs registrat. diff --git a/config/locales/devise.ga.yml b/config/locales/devise.ga.yml new file mode 100644 index 000000000..20a9da24e --- /dev/null +++ b/config/locales/devise.ga.yml @@ -0,0 +1 @@ +ga: diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml index 73e79be23..ca8ac0584 100644 --- a/config/locales/devise.ja.yml +++ b/config/locales/devise.ja.yml @@ -19,10 +19,10 @@ ja: mailer: confirmation_instructions: action: メールアドレスの確認 - action_with_app: 確認し %{app} に戻る + action_with_app: 確認し%{app}に戻る explanation: このメールアドレスで%{host}にアカウントを作成しました。アカウントの有効化まであと一歩です。なお、もし心当たりがない場合は、申し訳ありませんがこのメールを無視してください。 - explanation_when_pending: このメールアドレスで %{host} への登録を申請しました。あなたがメールアドレスを確認したら、サーバー管理者が申請を審査します。ログインして一部設定を変更したりアカウントを削除できますが、ほとんどの機能は申請が承認されるまで利用できません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 - extra_html: あわせて、サーバーのルール利用規約 もお読みください。 + explanation_when_pending: このメールアドレスで%{host}への登録を申請しました。あなたがメールアドレスを確認したら、サーバー管理者が申請を審査します。ログインして一部設定を変更したりアカウントを削除できますが、ほとんどの機能は申請が承認されるまで利用できません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 + extra_html: あわせて、サーバーのルール利用規約もお読みください。 subject: 'Mastodon: メールアドレスの確認 %{instance}' title: メールアドレスの確認 email_changed: @@ -47,17 +47,17 @@ ja: subject: 'Mastodon: パスワード再発行' title: パスワード再発行 two_factor_disabled: - explanation: あなたのアカウントの二段階認証が無効化されました。メールとパスワードのみでログインできます。 - subject: 'Mastodon: 二段階認証が無効になりました' - title: 二段階認証が無効化されました + explanation: あなたのアカウントの二要素認証が無効化されました。メールとパスワードのみでログインできます。 + subject: 'Mastodon: 二要素認証が無効になりました' + title: 二要素認証が無効化されました two_factor_enabled: - explanation: あなたのアカウントの二段階認証が有効化されました。ログインするには TOTP アプリで生成されたコードが必要です。 - subject: 'Mastodon: 二段階認証が有効になりました' - title: 二段階認証が有効化されました + explanation: あなたのアカウントの二要素認証が有効化されました。ログインするには TOTP アプリで生成されたコードが必要です。 + subject: 'Mastodon: 二要素認証が有効になりました' + title: 二要素認証が有効化されました two_factor_recovery_codes_changed: explanation: 以前のリカバリーコードが無効化され、新しいコードが生成されました。 - subject: 'Mastodon: 二段階認証のリカバリーコードが再生成されました' - title: 二段階認証のリカバリーコードが変更されました + subject: 'Mastodon: 二要素認証のリカバリーコードが再生成されました' + title: 二要素認証のリカバリーコードが変更されました unlock_instructions: subject: 'Mastodon: アカウントのロックの解除' webauthn_credential: diff --git a/config/locales/devise.tr.yml b/config/locales/devise.tr.yml index a0bc7deae..98baf2916 100644 --- a/config/locales/devise.tr.yml +++ b/config/locales/devise.tr.yml @@ -11,7 +11,7 @@ tr: invalid: Geçersiz %{authentication_keys} ya da şifre. last_attempt: Hesabınız kilitlenmeden önce bir kez daha denemeniz gerekir. locked: Hesabınız kilitlendi. - not_found_in_database: Geçersiz %{authentication_keys} ya da şifre. + not_found_in_database: Geçersiz %{authentication_keys} ya da parola. pending: Hesabınız hala inceleniyor. timeout: Oturum süreniz sona erdi. Lütfen devam etmek için tekrar giriş yapınız. unauthenticated: Devam etmeden önce oturum açmanız veya kayıt olmanız gerek. @@ -33,19 +33,19 @@ tr: password_change: explanation: Hesabınızın şifresi değiştirildi. extra: Parolanızı değiştirmediyseniz, büyük olasılıkla birileri hesabınıza erişmiş olabilir. Lütfen derhal parolanızı değiştirin veya hesabınız kilitlendiyse sunucu yöneticisine başvurun. - subject: 'Mastodon: Şifre değiştirildi' - title: Şifre değiştirildi + subject: 'Mastodon: Parola değiştirildi' + title: Parola değiştirildi reconfirmation_instructions: explanation: E-postanızı değiştirmek için yeni adresi onaylayın. extra: Bu değişiklik sizin tarafınızdan başlatılmadıysa, lütfen bu e-postayı dikkate almayın. Mastodon hesabının e-posta adresi, yukarıdaki bağlantıya erişene kadar değişmez. subject: 'Mastodon: %{instance} için e-postayı onayla' title: E-posta adresinizi doğrulayın reset_password_instructions: - action: Şifreyi değiştir - explanation: Hesabınız için yeni bir şifre istediniz. + action: Parolayı değiştir + explanation: Hesabınız için yeni bir parola istediniz. extra: Bunu siz yapmadıysanız, lütfen bu e-postayı dikkate almayın. Parolanız yukarıdaki bağlantıya erişene ve yeni bir tane oluşturuncaya kadar değişmez. - subject: 'Mastodon: Şifre sıfırlama talimatları' - title: Şifre sıfırlama + subject: 'Mastodon: Parola sıfırlama talimatları' + title: Parola sıfırlama two_factor_disabled: explanation: Hesabınız için iki-adımlı kimlik doğrulama devre dışı bırakıldı. Şimdi sadece e-posta adresi ve parola kullanarak giriş yapabilirsiniz. subject: 'Mastodon: İki-adımlı kimlik doğrulama devre dışı bırakıldı' diff --git a/config/locales/devise.vi.yml b/config/locales/devise.vi.yml index b0a240bf8..348f347e6 100644 --- a/config/locales/devise.vi.yml +++ b/config/locales/devise.vi.yml @@ -2,9 +2,9 @@ vi: devise: confirmations: - confirmed: Địa chỉ email của bạn đã được xác thực thành công. - send_instructions: Bạn sẽ nhận được một email hướng dẫn cách xác thực địa chỉ email trong vài phút tới. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. - send_paranoid_instructions: Nếu địa chỉ email của bạn đã tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được một email hướng dẫn cách xác thực lại địa chỉ email. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. + confirmed: Địa chỉ email của bạn đã được xác minh thành công. + send_instructions: Bạn sẽ nhận được một email hướng dẫn cách xác minh địa chỉ email trong vài phút tới. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. + send_paranoid_instructions: Nếu địa chỉ email của bạn đã tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được một email hướng dẫn cách xác minh lại địa chỉ email. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. failure: already_authenticated: Bạn đã đăng nhập rồi. inactive: Tài khoản của bạn chưa được kich hoạt. @@ -15,16 +15,16 @@ vi: pending: Tài khoản của bạn vẫn đang được xem xét. timeout: Phiên của bạn đã hết hạn. Vui lòng đăng nhập lại để tiếp tục. unauthenticated: Bạn cần đăng nhập hoặc đăng ký trước khi tiếp tục. - unconfirmed: Bạn phải xác thực địa chỉ email trước khi tiếp tục. + unconfirmed: Bạn phải xác minh địa chỉ email trước khi tiếp tục. mailer: confirmation_instructions: - action: Xác thực địa chỉ email + action: Xác minh địa chỉ email action_with_app: Xác nhận và quay lại %{app} explanation: Bạn đã tạo một tài khoản trên %{host} với địa chỉ email này. Chỉ cần một cú nhấp chuột nữa để kích hoạt nó. Nếu đây không phải là bạn, xin vui lòng bỏ qua email này. - explanation_when_pending: Bạn vừa đăng ký %{host} với địa chỉ email này. Chúng tôi chỉ xem xét đơn đăng ký sau khi bạn xác thực địa chỉ email. Bạn có thể đăng nhập để thay đổi chi tiết hoặc xóa tài khoản của mình, nhưng bạn không thể sử dụng đầy đủ tính năng cho đến khi tài khoản được xác thực. Nếu bạn bị từ chối, dữ liệu của bạn sẽ bị xóa, do đó bạn sẽ không cần phải làm gì thêm nữa. Nếu không phải do bạn đăng ký, xin vui lòng bỏ qua email này. + explanation_when_pending: Bạn vừa đăng ký %{host} với địa chỉ email này. Chúng tôi chỉ xem xét đơn đăng ký sau khi bạn xác minh địa chỉ email. Bạn có thể đăng nhập để thay đổi chi tiết hoặc xóa tài khoản của mình, nhưng bạn không thể sử dụng đầy đủ tính năng cho đến khi tài khoản được xác minh. Nếu bạn bị từ chối, dữ liệu của bạn sẽ bị xóa, do đó bạn sẽ không cần phải làm gì thêm nữa. Nếu không phải do bạn đăng ký, xin vui lòng bỏ qua email này. extra_html: Xin đọc kỹ quy tắc máy chủchính sách riêng tư của chúng tôi. - subject: 'Mastodon: Xác thực email cho %{instance}' - title: Xác thực địa chỉ email + subject: 'Mastodon: Xác minh email cho %{instance}' + title: Xác minh địa chỉ email email_changed: explanation: 'Địa chỉ email cho tài khoản của bạn đang được thay đổi thành:' extra: Nếu bạn không thay đổi email của mình, có khả năng ai đó đã truy cập được vào tài khoản của bạn. Hãy thay đổi mật khẩu ngay lập tức hoặc liên hệ với quản trị viên. @@ -38,8 +38,8 @@ vi: reconfirmation_instructions: explanation: Xác nhận địa chỉ email mới của bạn. extra: Nếu thay đổi này không phải do bạn thực hiện, vui lòng bỏ qua email này. Địa chỉ email cho tài khoản Mastodon sẽ giữ nguyên cho đến khi bạn truy cập vào liên kết ở trên. - subject: 'Mastodon: Xác thực email cho %{instance}' - title: Xác thực địa chỉ email + subject: 'Mastodon: Xác minh email cho %{instance}' + title: Xác minh địa chỉ email reset_password_instructions: action: Đổi mật khẩu explanation: Bạn đã yêu cầu mật khẩu mới cho tài khoản của bạn. @@ -47,13 +47,13 @@ vi: subject: 'Mastodon: Hướng dẫn đổi lại mật khẩu' title: Đổi lại mật khẩu two_factor_disabled: - explanation: Đã vô hiệu hóa xác thực hai bước cho tài khoản của bạn. Bây giờ chỉ có thể đăng nhập bằng địa chỉ email và mật khẩu. - subject: 'Mastodon: Xác thực hai bước đã bị vô hiệu hóa' - title: Vô hiệu hóa xác thực hai bước + explanation: Đã vô hiệu hóa xác minh 2 bước cho tài khoản của bạn. Bây giờ chỉ có thể đăng nhập bằng địa chỉ email và mật khẩu. + subject: 'Mastodon: Xác minh 2 bước đã bị vô hiệu hóa' + title: Vô hiệu hóa xác minh 2 bước two_factor_enabled: - explanation: Tài khoản của bạn đã kích hoạt xác thực hai bước. Lần đăng nhập tới sẽ cần thêm mã đăng nhập được tạo bởi ứng dụng TOTP. - subject: 'Mastodon: Kích hoạt xác thực hai yếu tố' - title: Kích hoạt xác thực hai bước + explanation: Tài khoản của bạn đã kích hoạt xác minh 2 bước. Lần đăng nhập tới sẽ cần thêm mã đăng nhập được tạo bởi ứng dụng TOTP. + subject: 'Mastodon: Kích hoạt xác minh 2 bước' + title: Kích hoạt xác minh 2 bước two_factor_recovery_codes_changed: explanation: Các mã khôi phục trước đó đã bị vô hiệu hóa và thay bằng mã mới. subject: 'Mastodon: Mã khôi phục xác thực hai yếu tố đã được tạo lại' @@ -75,13 +75,13 @@ vi: title: Đã vô hiệu hóa khóa bảo mật webauthn_enabled: explanation: Bạn vừa kích hoạt xác thực tài khoản bằng khóa bảo mật. Từ bây giờ, khóa bảo mật của bạn sẽ được dùng để đăng nhập. - subject: 'Mastodon: Kích hoạt xác thực bằng khóa bảo mật' + subject: 'Mastodon: Kích hoạt xác minh bằng khóa bảo mật' title: Đã kích hoạt khóa bảo mật omniauth_callbacks: - failure: Không thể xác thực bạn từ %{kind} bởi vì "%{reason}". - success: Xác thực tài khoản %{kind} thành công. + failure: Không thể xác minh bạn từ %{kind} bởi vì "%{reason}". + success: Xác minh tài khoản %{kind} thành công. passwords: - no_token: Bạn chỉ có thể truy cập trang này khi nhận được email phục hồi mật khẩu. Nếu vẫn không được, vui lòng chắc chắn rằng bạn đã dùng chính xác URL được cung cấp. + no_token: Bạn chỉ có thể truy cập trang này khi nhận được email khôi phục mật khẩu. Nếu vẫn không được, vui lòng chắc chắn rằng bạn đã dùng chính xác URL được cung cấp. send_instructions: Nếu địa chỉ email của bạn tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được liên kết khôi phục mật khẩu tại địa chỉ email của bạn sau vài phút. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. send_paranoid_instructions: Nếu địa chỉ email của bạn tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được liên kết khôi phục mật khẩu tại địa chỉ email của bạn sau vài phút. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. updated: Mật khẩu của bạn đã được thay đổi thành công. Hiện tại bạn đã đăng nhập. @@ -91,9 +91,9 @@ vi: signed_up: Chúc mừng! Bạn đã đăng ký thành công. signed_up_but_inactive: Bạn đã đăng ký thành công. Tuy nhiên, bạn cần phải kích hoạt tài khoản mới có thể đăng nhập. signed_up_but_locked: Bạn đã đăng ký thành công. Tuy nhiên, chúng tôi không thể đăng nhập cho bạn vì tài khoản của bạn bị khóa. - signed_up_but_pending: Một email xác thực đã được gửi đến địa chỉ email của bạn. Sau khi bạn nhấp vào liên kết, chúng tôi sẽ xem xét đơn đăng ký của bạn và thông báo nếu đơn được chấp thuận. - signed_up_but_unconfirmed: Một email xác thực đã được gửi đến địa chỉ email của bạn. Hãy nhấp vào liên kết trong email để kích hoạt tài khoản của bạn. Nếu không thấy, hãy kiểm tra mục thư rác. - update_needs_confirmation: Bạn đã cập nhật tài khoản thành công, nhưng chúng tôi cần xác thực địa chỉ email mới của bạn. Vui lòng kiểm tra email và nhấp vào liên kết xác thực. Nếu bạn không thấy email, hãy kiểm tra trong thư rác. + signed_up_but_pending: Một email xác minh đã được gửi đến địa chỉ email của bạn. Sau khi bạn nhấp vào liên kết, chúng tôi sẽ xem xét đơn đăng ký của bạn và thông báo nếu đơn được chấp thuận. + signed_up_but_unconfirmed: Một email xác minh đã được gửi đến địa chỉ email của bạn. Hãy nhấp vào liên kết trong email để kích hoạt tài khoản của bạn. Nếu không thấy, hãy kiểm tra mục thư rác. + update_needs_confirmation: Bạn đã cập nhật tài khoản thành công, nhưng chúng tôi cần xác minh địa chỉ email mới của bạn. Vui lòng kiểm tra email và nhấp vào liên kết xác minh. Nếu bạn không thấy email, hãy kiểm tra trong thư rác. updated: Tài khoản của bạn đã được cập nhật thành công. sessions: already_signed_out: Đã đăng xuất. @@ -105,8 +105,8 @@ vi: unlocked: Tài khoản của bạn đã được mở khóa thành công. Vui lòng đăng nhập để tiếp tục. errors: messages: - already_confirmed: đã được xác thực, vui lòng đăng nhập lại - confirmation_period_expired: cần phải xác thực trong vòng %{period}, vui lòng yêu cầu một cái mới + already_confirmed: đã được xác minh, vui lòng đăng nhập lại + confirmation_period_expired: cần phải xác minh trong vòng %{period}, vui lòng yêu cầu lại expired: đã hết hạn, vui lòng yêu cầu một cái mới not_found: không tìm thấy not_locked: không bị khóa diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 072d4bc8d..dc87d8ddb 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -22,7 +22,7 @@ zh-CN: action_with_app: 确认并返回%{app} explanation: 你在 %{host} 上使用此电子邮箱地址创建了一个账号。点击下面的链接即可激活账号。如果你没有创建账号,请忽略此邮件。 explanation_when_pending: 你用这个电子邮件申请了在 %{host} 注册。在确认电子邮件地址之后,我们会审核你的申请。在此之前,你不能登录。如果你的申请被驳回,你的数据会被移除,因此你无需再采取任何行动。如果申请人不是你,请忽略这封邮件。 - extra_html: 请记得阅读本服务器的相关规定我们的使用条款。 + extra_html: 请记得阅读本实例的相关规定我们的使用条款。 subject: Mastodon:来自 %{instance} 的确认指引 title: 验证电子邮件地址 email_changed: diff --git a/config/locales/doorkeeper.ar.yml b/config/locales/doorkeeper.ar.yml index d35253c3c..07314684d 100644 --- a/config/locales/doorkeeper.ar.yml +++ b/config/locales/doorkeeper.ar.yml @@ -60,6 +60,7 @@ ar: error: title: حدث هناك خطأ new: + review_permissions: مراجعة الصلاحيات title: إذن بالتصريح show: title: قم بنسخ رمز المصادقة و إلصاقه على التطبيق. @@ -69,6 +70,8 @@ ar: confirmations: revoke: متأكد ؟ index: + authorized_at: تاريخ التخويل %{date} + description_html: يمكن لهذه التطبيقات الوصول إلى حسابك من باستخدام الـ API. إذا وجدت تطبيقات لا تتعرف عليها أو لا تعمل بشكل طبيعي ، فيمكنك إبطال وصولها لحسابك. last_used_at: آخر استخدام في %{date} never_used: لم يُستخدَم قط scopes: الصلاحيات @@ -119,6 +122,22 @@ ar: admin/all: جميع المهام الإدارية admin/reports: إدارة التقارير all: كل شيء + blocks: تم حجبها + bookmarks: الفواصل المرجعية + conversations: المحادثات + crypto: التشفير من الطرف إلى نهاية الطرف + favourites: المفضلة + filters: عوامل التصفية + follow: العلاقات + follows: الإشتراكات + lists: القوائم + media: الوسائط المرفقة + mutes: تم كتمها + notifications: الإشعارات + push: الإخطارات المدفوعة + reports: الشكاوى + search: البحث + statuses: المنشورات layouts: admin: nav: @@ -133,6 +152,7 @@ ar: admin:write: تعديل كافة البيانات على الخادم admin:write:accounts: اتخاذ إجراءات إشراف على الحسابات admin:write:reports: اتخاذ إجراءات إشراف على الإبلاغات + crypto: استخدم التشفير من الطرف إلى نهاية الطرف follow: تعديل علاقات الحساب push: تلقي إشعاراتك read: قراءة كافة بيانات حسابك @@ -152,6 +172,7 @@ ar: write:accounts: تعديل صفحتك التعريفية write:blocks: حجب الحسابات و النطاقات write:bookmarks: الإحتفاظ بالمنشورات في الفواصل المرجعية + write:conversations: كتم وحذف المحادثات write:favourites: الإعجاب بمنشورات write:filters: إنشاء عوامل تصفية write:follows: متابَعة الأشخاص diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml index 9725efe6c..e98eb0915 100644 --- a/config/locales/doorkeeper.ca.yml +++ b/config/locales/doorkeeper.ca.yml @@ -25,46 +25,46 @@ ca: edit: Edita submit: Envia confirmations: - destroy: Estàs segur? + destroy: N'estàs segur? edit: title: Edita l'aplicació form: error: Ep! Comprova el formulari per a possibles errors help: - native_redirect_uri: Utilitza %{native_redirect_uri} per a proves locals - redirect_uri: Utilitza una línia per URI - scopes: Separa els àmbits amb espais. Deixa-ho en blanc per a utilitzar els àmbits per defecte. + native_redirect_uri: Usa %{native_redirect_uri} per a proves locals + redirect_uri: Usa una línia per URI + scopes: Separa els àmbits amb espais. Deixa-ho en blanc per usar els àmbits per defecte. index: application: Aplicació callback_url: URL de retorn delete: Suprimeix empty: No tens cap aplicació. name: Nom - new: Aplicació nova + new: Nova aplicació scopes: Àmbits show: Mostra title: Les teves aplicacions new: - title: Aplicació nova + title: Nova aplicació show: actions: Accions application_id: Id de l'aplicació - callback_urls: Callback URL + callback_urls: URL de retorn scopes: Àmbits - secret: Secret + secret: Clau secreta de client title: 'Aplicació: %{name}' authorizations: buttons: authorize: Autoritza deny: Desautoritza error: - title: S'a produit un error + title: S'ha produït un error new: - prompt_html: "%{client_name} voldria permís per a accedir el teu compte. És una aplicació de tercers. Si no hi confies no hauries d'autoritzar-la." + prompt_html: "%{client_name} vol permís per accedir el teu compte. És una aplicació de tercers. Si no hi confies, no hauries d'autoritzar-la." review_permissions: Revisa els permisos title: Cal autorizació show: - title: Copia aquest codi d'autorització i enganxa'l en l'aplicació. + title: Copia aquest codi d'autorització i enganxa'l a l'aplicació. authorized_applications: buttons: revoke: Revoca @@ -72,9 +72,9 @@ ca: revoke: N'estàs segur? index: authorized_at: Autoritzada el %{date} - description_html: Aquestes son les aplicacions que poden accedir al teu compte usant l'API. Si aquí hi ha aplicacions que no reconeixes o una aplicació es comporta malament, pots revocar el seu accés. - last_used_at: Darrera utilització el %{date} - never_used: Mai usat + description_html: Aquestes són les aplicacions que poden accedir al teu compte usant l'API. Si hi ha aplicacions que no reconeixes o hi ha una aplicació que no funciona bé, pots revocar-ne l'accés. + last_used_at: Usada per últim cop el %{date} + never_used: No s'ha usat mai scopes: Permisos superapp: Interna title: Les teves aplicacions autoritzades @@ -174,7 +174,7 @@ ca: write:blocks: bloqueja comptes i dominis write:bookmarks: publicacions a marcadors write:conversations: silencia i esborra converses - write:favourites: afavoreix publicacions + write:favourites: afavorir publicacions write:filters: crear filtres write:follows: seguir usuaris write:lists: crear llistes diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml index d47e1afac..5475114f6 100644 --- a/config/locales/doorkeeper.cs.yml +++ b/config/locales/doorkeeper.cs.yml @@ -60,22 +60,30 @@ cs: error: title: Vyskytla se chyba new: + prompt_html: "%{client_name} si přeje oprávnění pro přístup k vašemu účtu. Je to aplikace třetí strany. Pokud jí nedůvěřujete, pak byste ji neměli autorizovat." + review_permissions: Zkontrolujte oprávnění title: Je vyžadována autorizace show: title: Zkopírujte tento autorizační kód a vložte ho do aplikace. authorized_applications: buttons: - revoke: Zamítnout + revoke: Odvolat confirmations: revoke: Opravdu? index: + authorized_at: Autorizována %{date} + description_html: Toto jsou aplikace, které mohou přistupovat k vašemu účtu s použitím API. Pokud jsou zde aplikace, které nepoznáváte, nebo se aplikace nechová správně, můžete odvolat její přístup. + last_used_at: Naposledy použito %{date} + never_used: Nikdy nepoužito + scopes: Oprávnění + superapp: Interní title: Vaše autorizované aplikace errors: messages: access_denied: Vlastník zdroje či autorizační server žádost zamítl. credential_flow_not_configured: Proud Resource Owner Password Credentials selhal, protože Doorkeeper.configure.resource_owner_from_credentials nebylo nakonfigurováno. invalid_client: Ověření klienta selhalo kvůli neznámému klientovi, chybějící klientské autentizaci či nepodporované autentizační metodě. - invalid_grant: Poskytnuté oprávnění je neplatné, vypršela jeho platnost, bylo zamítnuto, neshoduje se s URI přesměrování použitým v požadavku o autorizaci, nebo bylo uděleno jinému klientu. + invalid_grant: Poskytnuté oprávnění je neplatné, vypršela jeho platnost, bylo odvoláno, neshoduje se s URI přesměrování použitým v požadavku o autorizaci, nebo bylo uděleno jinému klientu. invalid_redirect_uri: URI pro přesměrování není platné. invalid_request: missing_param: 'Chybí potřebný parametr: %{value}.' @@ -85,7 +93,7 @@ cs: invalid_scope: Požadovaný rozsah je neplatný, neznámý, nebo špatně formulovaný. invalid_token: expired: Přístupový token vypršel - revoked: Přístupový token byl zamítnut + revoked: Přístupový token byl odvolán unknown: Přístupový token je neplatný resource_owner_authenticator_not_configured: Nález Resource Owner selhal, protože Doorkeeper.configure.resource_owner_authenticator nebylo nakonfigurováno. server_error: Autorizační server se setkal s neočekávanou chybou, která mu zabránila ve vykonání požadavku. @@ -103,7 +111,34 @@ cs: notice: Aplikace aktualizována. authorized_applications: destroy: - notice: Aplikace zamítnuta. + notice: Aplikace odvolána. + grouped_scopes: + access: + read: Přístup pouze pro čtení + read/write: Přístup ke čtení a zápisu + write: Přístup pouze pro zápis + title: + accounts: Účty + admin/accounts: Správa účtů + admin/all: Všechny správcovské funkce + admin/reports: Správa hlášení + all: Všechno + blocks: Blokace + bookmarks: Záložky + conversations: Konverzace + crypto: End-to-end šifrování + favourites: Oblíbení + filters: Filtry + follow: Vztahy + follows: Sledovaní + lists: Seznamy + media: Mediální přílohy + mutes: Skrytí + notifications: Oznámení + push: Push oznámení + reports: Hlášení + search: Hledání + statuses: Příspěvky layouts: admin: nav: @@ -118,6 +153,7 @@ cs: admin:write: měnit všechna data na serveru admin:write:accounts: provádět moderátorské akce s účty admin:write:reports: provádět moderátorské akce s hlášeními + crypto: používat end-to-end šifrování follow: upravovat vztahy mezi profily push: přijímat vaše push oznámení read: vidět všechna data vašeho účtu @@ -137,6 +173,7 @@ cs: write:accounts: měnit váš profil write:blocks: blokovat účty a domény write:bookmarks: přidávat příspěvky do záložek + write:conversations: skrývat a mazat konverzace write:favourites: oblibovat si příspěvky write:filters: vytvářet filtry write:follows: sledovat lidi diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml index 9f455e64b..799f46945 100644 --- a/config/locales/doorkeeper.fa.yml +++ b/config/locales/doorkeeper.fa.yml @@ -60,6 +60,7 @@ fa: error: title: خطایی رخ داد new: + prompt_html: "%{client_name} خواهان اجازه دسترسی به حساب کاربری شماست. اگر به آن اعتماد ندارید، نباید تاییدش کنید." review_permissions: بازبینی اجازه‌ها title: نیاز به اجازه دادن show: @@ -70,7 +71,12 @@ fa: confirmations: revoke: آیا مطمئن هستید؟ index: + authorized_at: تایید شده در %{date} + description_html: اینها نرم‌افزار هایی هستند که می‌توانند به حساب کاربری شما با استفاده از رابط نرم‌افزاری دسترسی پیدا کنند. اگر نرم‌افزار های در اینجا هستند که نمی‌شناسید، یا نرم‌افزاری که رفتار مشکوک دارد، می‌توانید دسترسی اش را باطل کنید. + last_used_at: آخرین استفاده در %{date} + never_used: هرگز استفاده نشده scopes: اجازه‌ها + superapp: داخلی title: برنامه‌های مجاز errors: messages: @@ -113,6 +119,9 @@ fa: write: فقط دسترسی نوشتن title: accounts: حساب‌ها + admin/accounts: مدیریت حساب های کاربری + admin/all: تمامی عملکرد های مدیریتی + admin/reports: مدیریت بازخورد ها all: همه چیز blocks: مسدودها bookmarks: نشانک‌ها @@ -120,6 +129,7 @@ fa: crypto: رمزگذاری سرتاسری favourites: پسندیده‌ها filters: پالایه‌ها + follow: ارتباطات follows: پی‌گرفتگان lists: سیاهه‌ها media: پیوست‌های رسانه‌ای diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml new file mode 100644 index 000000000..20a9da24e --- /dev/null +++ b/config/locales/doorkeeper.ga.yml @@ -0,0 +1 @@ +ga: diff --git a/config/locales/doorkeeper.hy.yml b/config/locales/doorkeeper.hy.yml index f9e1e22bd..94ef091f3 100644 --- a/config/locales/doorkeeper.hy.yml +++ b/config/locales/doorkeeper.hy.yml @@ -69,6 +69,9 @@ hy: confirmations: revoke: Վստա՞հ ես index: + never_used: Երբեք չի օգտագործուել + scopes: Թոյլտուութիւններ + superapp: Ներքին title: Քո նոյնականացրած ծրագրերը errors: messages: @@ -104,6 +107,25 @@ hy: authorized_applications: destroy: notice: Յաւելուածը չեղարկուել է։ + grouped_scopes: + access: + read: Միայն կարդալու հնարաւորութիւն + read/write: Կարդալու եւ գրելու հնարաւորութիւն + write: Միայն գրելու հնարաւորութիւն + title: + accounts: Հաշիւներ + all: Բոլորը + blocks: Արգելափակումներ + bookmarks: Էջանիշեր + conversations: Զրոյցներ + favourites: Հաւանածներ + filters: Զտիչներ + follow: Կապեր + lists: Ցանկեր + mutes: Լռեցուածներ + notifications: Ծանուցումներ + push: Հրելու ծանուցումներ + statuses: Գրառումներ layouts: admin: nav: diff --git a/config/locales/doorkeeper.io.yml b/config/locales/doorkeeper.io.yml index ff1fdf9c2..0e03ab79f 100644 --- a/config/locales/doorkeeper.io.yml +++ b/config/locales/doorkeeper.io.yml @@ -5,6 +5,8 @@ io: doorkeeper/application: name: Nomo redirect_uri: URI di plussendo + scopes: Skopi + website: Apliksito errors: models: doorkeeper/application: @@ -31,15 +33,153 @@ io: help: native_redirect_uri: Uzez %{native_redirect_uri} por lokala probi redirect_uri: Uzez un lineo por singla URI + scopes: Separez skopi per spaci. Lasez quale vakua por uzar originala skopi. index: + application: Apliko + callback_url: Retrovokligilo + delete: Efacez + empty: Vu ne havas apliki. + name: Nomo new: New Application + scopes: Skopi + show: Montrez + title: Vua apliki new: title: New Application show: + actions: Agi application_id: Application Id callback_urls: Callback urls + scopes: Skopi secret: Secret + title: 'Apliko: %{name}' + authorizations: + buttons: + authorize: Permisez + deny: Despermisez + error: + title: Eroro eventis + new: + prompt_html: "%{client_name} volas permiso por acesar vua konti. Ol esas externa apliko. Se vu ne fidas, lore vu debas ne permisar." + review_permissions: Kontrolez permisi + title: Permiso bezonesas + show: + title: Kopiez ca permisnumero e glutinez adsur la apliko. + authorized_applications: + buttons: + revoke: Deaprobez + confirmations: + revoke: Ka vu esas certa? + index: + authorized_at: Permisesis ye %{date} + description_html: Co esas apliki quo povas acesar vua konto per API. Se existas apliki quon vu ne rikonocas hike, o apliko misfuncionas, vu povas desaprobar ola aceso. + last_used_at: Antee uzesis ye %{date} + never_used: Nulaloke uzesas + scopes: Permisi + superapp: Interna + title: Vua permisita apliki + errors: + messages: + access_denied: Resursproprietanto o permisservilo refuzis la demando. + credential_flow_not_configured: Resursproprietantpasvortidentesesofluo faliis pro ke Doorkeeper.configure.resource_owner_from_credentials ne ajustesis. + invalid_client: Klientpermiso falias pro nesavita kliento, neinkluzita klientpermiso o nesuportita permismetodo. + invalid_grant: Provizita permiso esis nevalida, expiris, deaprobesis, ne parigas uzita ridirektoligilo dum permisdemando o facesis a altra kliento. + invalid_redirect_uri: La inkluzita ridirektoligilo esas nevalida. + invalid_request: + missing_param: 'Bezonita parametro: %{value}.' + request_not_authorized: Demando bezonas permisesar. Bezonita parametro por permisar demando ne existas o esas nevalida. + unknown: La demando ne havas bezonita parametro, inkluzas nesuportita parametro o malformesas. + invalid_resource_owner: Provizita resursproprietantidenteso esas nevalida o resursproprietanto ne existas + invalid_scope: La demandita skopo esas nevalida, nesavata o malformata. + invalid_token: + expired: La acesficho expiris + revoked: Acesficho deaprobesis + unknown: Acesficho esas nevalida + resource_owner_authenticator_not_configured: Resursproprietanto falias trovar pro ke Doorkeeper.configure.resource_owner_authenticator ne ajustesis. + server_error: Permisservilo trovas neanticipata situeso quo preventas ol finar la demando. + temporarily_unavailable: Permisservilo nu ne povas direktar la demando pro provizora eceso o servilmanteno. + unauthorized_client: La kliento ne permisesis agar ca demando per ca metodo. + unsupported_grant_type: Permisprovizontipo ne suportesas da permisservilo. + unsupported_response_type: La permisservilo ne suportas ca responsotipo. + flash: + applications: + create: + notice: Apliko kreesis. + destroy: + notice: Apliko efacesis. + update: + notice: Apliko novigesis. + authorized_applications: + destroy: + notice: Apliko aprobesis. + grouped_scopes: + access: + read: Lekto-nura aceso + read/write: Lekto e skrib-nura aceso + write: Skrib-nura aceso + title: + accounts: Konti + admin/accounts: Administrar di konti + admin/all: Omna administrofuncioni + admin/reports: Administro di raporti + all: Omno + blocks: Restriktita + bookmarks: Libromarki + conversations: Konversi + crypto: Intersequanta chifro + favourites: Favorati + filters: Filtrili + follow: Relataji + follows: Sequati + lists: Listi + media: Mediatachaji + mutes: Silencigati + notifications: Avizi + push: Pulsavizi + reports: Raportigi + search: Trovez + statuses: Posti + layouts: + admin: + nav: + applications: Apliki + oauth2_provider: Provizanto di OAuth2 + application: + title: Permiso di OAuth bezonesas scopes: + admin:read: lektez omna informi di la servilo + admin:read:accounts: lektez privata informo di omna konti + admin:read:reports: lektez privata informo di omna raportigo e raportigita konti + admin:write: modifikez omna informi di la servilo + admin:write:accounts: jerez konti + admin:write:reports: jerez raportigi + crypto: uzas intersequanta chifro follow: follow, block, unblock and unfollow accounts + push: ganez vua pulsavizi read: read your account's data + read:accounts: videz kontinformo + read:blocks: videz restrikti + read:bookmarks: videz vua libromarki + read:favourites: videz vua favorati + read:filters: videz vua filtrili + read:follows: videz vua sequinti + read:lists: videz vua listi + read:mutes: videz vua silencigi + read:notifications: videz vua avizi + read:reports: videz vua rapotigi + read:search: trovez por vu + read:statuses: videz omna posti write: post on your behalf + write:accounts: modifikez vua porfilo + write:blocks: restriktez konti e domeni + write:bookmarks: libromarkez posti + write:conversations: silencigez e efacez konversi + write:favourites: favorata posti + write:filters: kreez filtrili + write:follows: sequez personi + write:lists: kreez listi + write:media: chargez medifaili + write:mutes: silencigez personi e konversi + write:notifications: efacez vua avizi + write:reports: raportigez altra omni + write:statuses: publikigez posti diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml index 0a80a89f3..30c48f0dc 100644 --- a/config/locales/doorkeeper.ja.yml +++ b/config/locales/doorkeeper.ja.yml @@ -60,6 +60,8 @@ ja: error: title: エラーが発生しました new: + prompt_html: "%{client_name}があなたのアカウントにアクセスする許可を求めています。心当たりが無い場合はアクセス許可しないでください。" + review_permissions: アクセス許可を確認 title: 認証が必要です show: title: 認証コードをコピーしてアプリに貼り付けて下さい。 @@ -69,10 +71,12 @@ ja: confirmations: revoke: 本当に取り消しますか? index: - authorized_at: "%{date} に承認されました" + authorized_at: "%{date}に承認されました" + description_html: これらは、APIを使用してアカウントにアクセスできるアプリケーションです。ここに見覚えのないアプリケーションがある場合、またはアプリケーションの動作がおかしい場合、そのアクセスを取り消すことができます。 last_used_at: 最終使用日 %{date} never_used: 使用されていない scopes: 権限 + superapp: 内部 title: 認証済みアプリ errors: messages: @@ -91,7 +95,7 @@ ja: expired: アクセストークンの有効期限が切れています revoked: アクセストークンは取り消されています unknown: アクセストークンが無効です - resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticator が設定されていないため、リソース所有者の検索に失敗しました。 + resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticatorが設定されていないため、リソース所有者の検索に失敗しました。 server_error: 認証サーバーに予期せぬ例外が発生したため、リクエストを実行できなくなりました。 temporarily_unavailable: 現在、認証サーバーに一時的な過負荷が掛かっているか、またはメンテナンス中のため、リクエストを処理できません。 unauthorized_client: クライアントはこのメゾットで要求を実行する権限がありません。 @@ -115,13 +119,18 @@ ja: write: 書き込み専用アクセス title: accounts: アカウント + admin/accounts: アカウント管理 + admin/all: すべての管理機能 + admin/reports: 通報の管理 all: すべて blocks: ブロック bookmarks: ブックマーク + conversations: 会話 crypto: エンドツーエンド暗号化 favourites: お気に入り filters: フィルター follow: フォロー・フォロワー + follows: フォロー lists: リスト media: メディアの添付 mutes: ミュート @@ -164,6 +173,7 @@ ja: write:accounts: プロフィールの変更 write:blocks: ユーザーのブロックやドメインの非表示 write:bookmarks: 投稿のブックマーク登録 + write:conversations: 会話のミュートと削除 write:favourites: 投稿のお気に入り登録 write:filters: フィルターの変更 write:follows: あなたの代わりにフォロー、アンフォロー diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml index 37e0ab840..e645f20b2 100644 --- a/config/locales/doorkeeper.ko.yml +++ b/config/locales/doorkeeper.ko.yml @@ -127,7 +127,7 @@ ko: bookmarks: 북마크 conversations: 대화 crypto: 종단간 암호화 - favourites: 즐겨찾기 + favourites: 좋아요 filters: 필터 follow: 관계 follows: 팔로우 diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml index 7160ee5ac..692ecc3b7 100644 --- a/config/locales/doorkeeper.oc.yml +++ b/config/locales/doorkeeper.oc.yml @@ -104,6 +104,15 @@ oc: authorized_applications: destroy: notice: Aplicacion revocada. + grouped_scopes: + title: + accounts: Comptes + bookmarks: Marcadors + filters: Filtres + lists: Listas + media: Fichièrs junts + notifications: Notificacions + search: Recercar layouts: admin: nav: diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml index 13ac6b7ff..c508aab94 100644 --- a/config/locales/doorkeeper.pl.yml +++ b/config/locales/doorkeeper.pl.yml @@ -60,6 +60,8 @@ pl: error: title: Wystapił błąd new: + prompt_html: "%{client_name} chciałby uzyskać pozwolenie na dostęp do Twojego konta. Jest to aplikacja zewnętrzna. Jeśli jej nie ufasz, nie powinno się jej autoryzować." + review_permissions: Sprawdź uprawnienia title: Wymagana jest autoryzacja show: title: Skopiuj kod uwierzytelniający i wklej go w aplikacji. @@ -69,6 +71,12 @@ pl: confirmations: revoke: Czy na pewno? index: + authorized_at: Autoryzowano %{date} + description_html: Są to aplikacje, które mogą uzyskać dostęp do Twojego konta za pomocą API. Jeśli są tu aplikacje, których nie rozpoznajesz lub aplikacja zachowuje się nieprawidłowo, możesz usunąć jej dostęp. + last_used_at: Ostatnio używane %{date} + never_used: Nigdy nieużywane + scopes: Uprawnienia + superapp: Wewnętrzne title: Twoje autoryzowane aplikacje errors: messages: @@ -104,6 +112,33 @@ pl: authorized_applications: destroy: notice: Unieważniono aplikację. + grouped_scopes: + access: + read: Dostęp w trybie tylko do odczytu + read/write: Uprawnienia do odczytu i zapisu + write: Dostęp w trybie tylko do odczytu + title: + accounts: Konta + admin/accounts: Zarządzanie kontami użytkowników + admin/all: Wszystkie opcje administratora + admin/reports: Zarządzanie zgłoszeniami + all: Wszystko + blocks: Zablokowane + bookmarks: Zakładki + conversations: Konwersacje + crypto: Szyfrowanie End-to-End + favourites: Ulubione + filters: Filtry + follow: Relacje + follows: Śledzenia + lists: Listy + media: Załączniki multimedialne + mutes: Wyciszenia + notifications: Powiadomienia + push: Powiadomienia push + reports: Zgłoszenia + search: Szukaj + statuses: Wpisy layouts: admin: nav: @@ -118,6 +153,7 @@ pl: admin:write: zmodyfikuj wszystkie dane na serwerze admin:write:accounts: wykonaj działania moderacyjne na kontach admin:write:reports: wykonaj działania moderacyjne na zgłoszeniach + crypto: użyj szyfrowania end-to-end follow: możliwość śledzenia kont push: otrzymywanie powiadomień push dla Twojego konta read: możliwość odczytu wszystkich danych konta @@ -137,6 +173,7 @@ pl: write:accounts: możliwość modyfikowania informacji o koncie write:blocks: możliwość blokowania domen i użytkowników write:bookmarks: możliwość dodawania wpisów do zakładek + write:conversations: wycisz i usuń konwersacje write:favourites: możliwość dodawnia wpisów do ulubionych write:filters: możliwość tworzenia filtrów write:follows: możliwość śledzenia ludzi diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index e9000cf46..e04ba9e0b 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -131,7 +131,7 @@ uk: follows: Підписки lists: Списки media: Мультимедійні вкладення - mutes: Заглушені + mutes: Нехтувані notifications: Сповіщення push: Push-сповіщення reports: Скарги @@ -162,7 +162,7 @@ uk: read:filters: бачити Ваші фільтри read:follows: бачити Ваші підписки read:lists: бачити Ваші списки - read:mutes: бачити ваші заглушення + read:mutes: бачити ваші нехтування read:notifications: бачити Ваші сповіщення read:reports: бачити Ваші скарги read:search: шукати від вашого імені @@ -171,13 +171,13 @@ uk: write:accounts: змінювати ваш профіль write:blocks: блокувати облікові записи і домени write:bookmarks: додавати пости в закладки - write:conversations: заглушити і видалити розмови + write:conversations: нехтувати й видалити бесіди write:favourites: вподобані статуси write:filters: створювати фільтри write:follows: підписуйтесь на людей write:lists: створювайте списки write:media: завантажити медіафайли - write:mutes: заглушити людей або бесіди + write:mutes: нехтувати людей або бесіди write:notifications: очищувати Ваші сповіщення write:reports: надіслати скаргу про людей write:statuses: публікувати статуси diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml index ecd5cfc4c..946760d32 100644 --- a/config/locales/doorkeeper.vi.yml +++ b/config/locales/doorkeeper.vi.yml @@ -82,14 +82,14 @@ vi: messages: access_denied: Chủ sở hữu tài nguyên hoặc máy chủ đã từ chối yêu cầu. credential_flow_not_configured: Resource Owner Password Credentials không thành công do Doorkeeper.configure.resource_owner_from_credentials không được định cấu hình. - invalid_client: Xác thực ứng dụng khách không thành công do máy khách mơ hồ, không bao gồm xác thực ứng dụng khách hoặc phương thức xác thực không được hỗ trợ. + invalid_client: Xác minh ứng dụng khách không thành công do máy khách mơ hồ, không bao gồm xác thực ứng dụng khách hoặc phương thức xác thực không được hỗ trợ. invalid_grant: Yêu cầu không hợp lệ, hết hạn, bị gỡ hoặc không khớp với tài khoản đã cấp phép. Hoặc xung đột với ứng dụng khác. invalid_redirect_uri: URL chuyển hướng không hợp lệ. invalid_request: missing_param: 'Thiếu tham số bắt buộc: %{value}.' request_not_authorized: Yêu cầu cần được cho phép trước. Tham số bắt buộc bị thiếu hoặc vô giá trị. unknown: Thiếu tham số bắt buộc. Có thể giá trị tham số không được hỗ trợ, hoặc không đúng định dạng. - invalid_resource_owner: Thông tin xác thực chủ sở hữu tài nguyên được cung cấp không hợp lệ hoặc không thể tìm thấy chủ sở hữu tài nguyên + invalid_resource_owner: Thông tin xác minh chủ sở hữu tài nguyên được cung cấp không hợp lệ hoặc không thể tìm thấy chủ sở hữu tài nguyên invalid_scope: Quyền yêu cầu không hợp lệ, không có thật hoặc sai định dạng. invalid_token: expired: Mã thông báo truy cập đã hết hạn @@ -170,7 +170,7 @@ vi: read:search: thay mặt bạn tìm kiếm read:statuses: xem toàn bộ tút write: sửa đổi mọi dữ liệu tài khoản của bạn - write:accounts: sửa đổi trang cá nhân của bạn + write:accounts: sửa đổi trang hồ sơ của bạn write:blocks: chặn người dùng và máy chủ write:bookmarks: sửa đổi những thứ bạn lưu write:conversations: ẩn và xóa thảo luận diff --git a/config/locales/el.yml b/config/locales/el.yml index f14420306..71b07a24d 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -380,6 +380,8 @@ el: instances: by_domain: Τομέας confirm_purge: Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τα δεδομένα από αυτόν τον τομέα; + delivery: + failing: Αποτυγχάνει delivery_available: Διαθέσιμη παράδοση destroyed_msg: Τα δεδομένα από το %{domain} βρίσκονται σε αναμονή για επικείμενη διαγραφή. empty: Δεν βρέθηκαν τομείς. @@ -606,6 +608,9 @@ el: review: Κατάσταση έγκρισης updated_msg: Οι ρυθμίσεις των ετικετών ενημερώθηκαν επιτυχώς title: Διαχείριση + trends: + only_allowed: Μόνο επιτρεπόμενα + trending: Δημοφιλή warning_presets: add_new: Πρόσθεση νέου delete: Διαγραφή @@ -930,8 +935,8 @@ el: one: Επίσης, απέκτησες έναν νέο ακόλουθο ενώ ήσουν μακριά! other: Επίσης, απέκτησες %{count} νέους ακόλουθους ενώ ήσουν μακριά! Εκπληκτικό! subject: - one: "1 νέα ειδοποίηση από την τελευταία επίσκεψή σου \U0001F418" - other: "%{count} νέες ειδοποιήσεις από την τελευταία επίσκεψή σου \U0001F418" + one: "1 νέα ειδοποίηση από την τελευταία επίσκεψή σου 🐘" + other: "%{count} νέες ειδοποιήσεις από την τελευταία επίσκεψή σου 🐘" title: Ενώ έλειπες... favourite: body: 'Η κατάστασή σου αγαπήθηκε από τον/την %{name}:' @@ -1247,12 +1252,6 @@ el: explanation: Είχες ζητήσει εφεδρικό αντίγραφο του λογαριασμού σου στο Mastodon. Είναι έτοιμο για κατέβασμα! subject: Το εφεδρικό αντίγραφό σου είναι έτοιμο για κατέβασμα title: Λήψη εφεδρικού αρχείου - sign_in_token: - details: 'Οι λεπτομέρειες της απόπειρας:' - explanation: 'Εντοπίσαμε απόπειρα εισόδου στο λογαριασμό σου από άγνωστη διεύθυνση IP. Άν έγινε από εσένα, παρακαλούμε αντέγραψε τον παρακάτω κωδικό ασφαλείας στη σελίδα εισόδου:' - further_actions: 'Αν δεν ήσουν εσύ, παρακαλούμε άλλαξε το κωδικό ασφαλείας σου και ενεργοποίησε τον έλεγχο δύο παραγόντων (2FA) στο λογαριασμό σου. Αυτό το κάνεις εδώ:' - subject: Παρακαλούμε επιβεβαίωσε την απόπειρα εισόδου - title: Απόπειρα εισόδου warning: categories: spam: Ανεπιθύμητο @@ -1286,13 +1285,10 @@ el: title: Καλώς όρισες, %{name}! users: follow_limit_reached: Δεν μπορείς να ακολουθήσεις περισσότερα από %{limit} άτομα - generic_access_help_html: Δυσκολεύεσαι να μπεις στο λογαριασμό σου; Μπορείς να επικοινωνήσεις στο %{email} για βοήθεια invalid_otp_token: Άκυρος κωδικός πιστοποίησης 2 παραγόντων (2FA) - invalid_sign_in_token: Άκυρος κωδικός ασφάλειας otp_lost_help_html: Αν χάσεις και τα δύο, μπορείς να επικοινωνήσεις με τον/την %{email} seamless_external_login: Επειδή έχεις συνδεθεί μέσω τρίτης υπηρεσίας, οι ρυθμίσεις συνθηματικού και email δεν είναι διαθέσιμες. signed_in_as: 'Έχεις συνδεθεί ως:' - suspicious_sign_in_confirmation: Φαίνεσαι να συνδέεσαι πρώτη φορά από αυτή τη συσκευή και δεν έχεις συνδεθεί εδώ και αρκετό καιρό. Για αυτό το λόγο σου στείλαμε έναν κωδικό ασφαλείας στο email σου για να σιγουρευτούμε πως είσαι όντως εσύ. verification: explanation_html: 'Μπορείς να πιστοποιήσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής πρέπει περιέχει την ιδιότητα (attribute) rel="me". Το περιεχόμενο του κειμένου δεν έχει σημασία. Για παράδειγμα:' verification: Πιστοποίηση diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml new file mode 100644 index 000000000..fc7fc9edf --- /dev/null +++ b/config/locales/en-GB.yml @@ -0,0 +1,12 @@ +--- +en-GB: + 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. diff --git a/config/locales/en.yml b/config/locales/en.yml index 829cd61d0..a90409a7c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -199,7 +199,6 @@ en: security_measures: only_password: Only password password_and_2fa: Password and 2FA - password_and_sign_in_token: Password and e-mail token sensitive: Force-sensitive sensitized: Marked as sensitive shared_inbox_url: Shared inbox URL @@ -518,6 +517,7 @@ en: delivery: all: All clear: Clear delivery errors + failing: Failing restart: Restart delivery stop: Stop delivery unavailable: Unavailable @@ -598,7 +598,7 @@ en: action_taken_by: Action taken by actions: delete_description_html: The reported posts will be deleted and a strike will be recorded to help you escalate on future infractions by the same account. - mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future refractions by the same account. + mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future infractions by the same account. other_description_html: See more options for controlling the account's behaviour and customize communication to the reported account. resolve_description_html: No action will be taken against the reported account, no strike recorded, and the report will be closed. silence_description_html: The profile will be visible only to those who already follow it or manually look it up, severely limiting its reach. Can always be reverted. @@ -802,6 +802,7 @@ en: other: Shared by %{count} people over the last week title: Trending links usage_comparison: Shared %{today} times today, compared to %{yesterday} yesterday + only_allowed: Only allowed pending_review: Pending review preview_card_providers: allowed: Links from this publisher can trend @@ -843,6 +844,7 @@ en: one: Used by one person over the last week other: Used by %{count} people over the last week title: Trends + trending: Trending warning_presets: add_new: Add new delete: Delete @@ -1237,8 +1239,8 @@ en: one: Also, you have acquired one new follower while being away! Yay! other: Also, you have acquired %{count} new followers while being away! Amazing! subject: - one: "1 new notification since your last visit \U0001F418" - other: "%{count} new notifications since your last visit \U0001F418" + one: "1 new notification since your last visit 🐘" + other: "%{count} new notifications since your last visit 🐘" title: In your absence... favourite: body: 'Your post was favourited by %{name}:' @@ -1634,12 +1636,13 @@ en: explanation: You requested a full backup of your Mastodon account. It's now ready for download! subject: Your archive is ready for download title: Archive takeout - sign_in_token: - details: 'Here are details of the attempt:' - explanation: 'We detected an attempt to sign in to your account from an unrecognized IP address. If this is you, please enter the security code below on the sign in challenge page:' - further_actions: 'If this wasn''t you, please change your password and enable two-factor authentication on your account. You can do so here:' - subject: Please confirm attempted sign in - title: Sign in attempt + suspicious_sign_in: + change_password: change your password + details: 'Here are details of the sign-in:' + explanation: We've detected a sign-in to your account from a new IP address. + further_actions_html: If this wasn't you, we recommend that you %{action} immediately and enable two-factor authentication to keep your account secure. + subject: Your account has been accessed from a new IP address + title: A new sign-in warning: appeal: Submit an appeal appeal_description: If you believe this is an error, you can submit an appeal to the staff of %{instance}. @@ -1690,13 +1693,10 @@ en: title: Welcome aboard, %{name}! users: follow_limit_reached: You cannot follow more than %{limit} people - generic_access_help_html: Trouble accessing your account? You may get in touch with %{email} for assistance invalid_otp_token: Invalid two-factor code - invalid_sign_in_token: Invalid security code otp_lost_help_html: If you lost access to both, you may get in touch with %{email} seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available. signed_in_as: 'Signed in as:' - suspicious_sign_in_confirmation: You appear to not have logged in from this device before, so we're sending a security code to your e-mail address to confirm that it's you. verification: explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. The link back must have a rel="me" attribute. The text content of the link does not matter. Here is an example:' verification: Verification diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index a287810aa..2cba40da0 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -700,8 +700,8 @@ en_GB: one: Also, you have acquired one new follower while being away! Yay! other: Also, you have acquired %{count} new followers while being away! Amazing! subject: - one: "1 new notification since your last visit \U0001F418" - other: "%{count} new notifications since your last visit \U0001F418" + one: "1 new notification since your last visit 🐘" + other: "%{count} new notifications since your last visit 🐘" title: In your absence... favourite: body: 'Your status was favourited by %{name}:' diff --git a/config/locales/eo.yml b/config/locales/eo.yml index f9cc35533..d7e08e9a5 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -16,6 +16,7 @@ eo: contact: Kontakti contact_missing: Ne elektita contact_unavailable: Ne disponebla + continue_to_web: Daŭrigi al la retaplikaĵo discover_users: Malkovri uzantojn documentation: Dokumentado federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. @@ -174,7 +175,6 @@ eo: security_measures: only_password: Nur pasvorto password_and_2fa: Pasvorto kaj 2FA - password_and_sign_in_token: Pasvorto kaj retpoŝta ĵetono sensitive: Tikla sensitized: markita tikla shared_inbox_url: URL de kunhavigita leterkesto @@ -187,6 +187,8 @@ eo: subscribe: Aboni suspended: Haltigita title: Kontoj + unblock_email: Malbloki retpoŝtadresojn + unblocked_email_msg: Sukcese malblokis la retpoŝtadreson de %{username} unconfirmed_email: Nekonfirmita retadreso undo_sensitized: Malfari sentema undo_silenced: Malfari kaŝon @@ -199,7 +201,7 @@ eo: whitelisted: En la blanka listo action_logs: action_types: - approve_user: Aprobu Uzanton + approve_user: Aprobi Uzanton assigned_to_self_report: Atribui Raporton change_email_user: Ŝanĝi retadreson de uzanto confirm_user: Konfermi uzanto @@ -226,6 +228,7 @@ eo: enable_user: Ebligi uzanton memorialize_account: Memorigu Konton promote_user: Promocii Uzanton + reject_user: Malakcepti Uzanton remove_avatar_user: Forigi profilbildon reopen_report: Remalfermi signalon reset_password_user: Restarigi pasvorton @@ -234,6 +237,7 @@ eo: silence_account: Silentigi konton suspend_account: Haltigi konton unassigned_report: Malatribui Raporton + unblock_email_account: Malbloki retpoŝtadreson unsensitive_account: Malmarku la amaskomunikilojn en via konto kiel sentemaj unsilence_account: Malsilentigi konton unsuspend_account: Malhaltigi konton @@ -242,6 +246,7 @@ eo: update_domain_block: Ĝigdatigi domajnan blokadon update_status: Ĝisdatigi staton actions: + approve_user_html: "%{name} aprobis registriĝon de %{target}" assigned_to_self_report_html: "%{name} asignis signalon %{target} al si mem" change_email_user_html: "%{name} ŝanĝis retadreson de uzanto %{target}" confirm_user_html: "%{name} konfirmis retadreson de uzanto %{target}" @@ -267,8 +272,10 @@ eo: enable_user_html: "%{name} ebligis ensaluton por uzanto %{target}" memorialize_account_html: "%{name} ŝanĝis la konton de %{target} al memora paĝo" promote_user_html: "%{name} plirangigis uzanton %{target}" + reject_user_html: "%{name} malakceptis registriĝon de %{target}" remove_avatar_user_html: "%{name} forigis profilbildon de %{target}" reopen_report_html: "%{name} remalfermis signalon %{target}" + update_announcement_html: "%{name} ĝisdatigis anoncon %{target}" deleted_status: "(forigita mesaĝo)" empty: Neniu protokolo trovita. filter_by_action: Filtri per ago @@ -328,6 +335,8 @@ eo: interactions: interago media_storage: Aŭdvidaĵa memorilo new_users: novaj uzantoj + opened_reports: raportoj malfermitaj + resolved_reports: raportoj solvitaj software: Programo space: Memorspaca uzado title: Kontrolpanelo @@ -379,10 +388,24 @@ eo: suppressed: Subpremita title: Rekomendoj de sekvado instances: + availability: + title: Disponebleco + warning: La lasta provo por konektiĝi al ĉi tiu servilo estis malsukcesa back_to_all: Ĉiuj back_to_limited: Limigita back_to_warning: Averta by_domain: Domajno + content_policies: + policies: + reject_reports: Malakcepti raportojn + policy: Politiko + dashboard: + instance_accounts_dimension: Plej sekvataj kontoj + instance_accounts_measure: konservitaj kontoj + instance_followers_measure: niaj sekvantoj tie + instance_follows_measure: iliaj sekvantoj ĉi tie + instance_reports_measure: raportoj pri ili + instance_statuses_measure: konservitaj afiŝoj delivery: all: Ĉiuj delivery_available: Liverado disponeblas @@ -442,40 +465,50 @@ eo: report_notes: created_msg: Signala noto sukcese kreita! destroyed_msg: Signala noto sukcese forigita! + today_at: Hodiaŭ je %{time} reports: account: notes: one: "%{count} noto" other: "%{count} notoj" action_taken_by: Ago farita de + add_to_report: Aldoni pli al raporto are_you_sure: Ĉu vi certas? assign_to_self: Asigni al mi assigned: Asignita kontrolanto by_target_domain: Domajno de la signalita konto + category: Kategorio comment: none: Nenio created_at: Signalita + delete_and_resolve: Forigi afiŝojn forwarded: Plusendita forwarded_to: Plusendita al %{domain} mark_as_resolved: Marki solvita mark_as_unresolved: Marki nesolvita + no_one_assigned: Neniu notes: create: Aldoni noton create_and_resolve: Solvi per noto create_and_unresolve: Remalfermi per noto delete: Forigi placeholder: Priskribu faritajn agojn, aŭ ajnan novan informon pri tiu signalo… + title: Notoj reopen: Remalfermi signalon report: 'Signalo #%{id}' reported_account: Signalita konto reported_by: Signalita de resolved: Solvitaj resolved_msg: Signalo sukcese solvita! + skip_to_actions: Salti al agoj status: Mesaĝoj + statuses: Raportita enhavo + target_origin: Origino de raportita konto title: Signaloj unassign: Malasigni unresolved: Nesolvitaj updated_at: Ĝisdatigita + view_profile: Vidi profilon rules: add_new: Aldoni regulon delete: Forigi @@ -563,14 +596,23 @@ eo: title: Furoraj kradvortoj site_uploads: delete: Forigi elŝutitan dosieron + destroyed_msg: Reteja alŝuto sukcese forigita! statuses: back_to_account: Reveni al konta paĝo + batch: + remove_from_report: Forigi de raporto + report: Raporti deleted: Forigita media: title: Aŭdovidaĵoj no_status_selected: Neniu mesaĝo estis ŝanĝita ĉar neniu estis elektita title: Mesaĝoj de la konto with_media: Kun aŭdovidaĵoj + strikes: + actions: + delete_statuses: "%{name} forigis afiŝojn de %{target}" + disable: "%{name} malebligis la konton de %{target}" + appeal_approved: Apelaciita system_checks: database_schema_check: message_html: Estas pritraktataj datumbazaj migradoj. Bonvolu ekzekuti ilin por certigi, ke la apliko kondutas kiel atendite @@ -581,12 +623,35 @@ eo: review: La statuso de la recenzo updated_msg: Kradvorto agordoj ĝisdatigis sukcese title: Administrado + trends: + allow: Permesi + disallow: Malpermesi + links: + allow: Permesi ligilon + disallow: Malpermesi ligilon + title: Tendencantaj ligiloj + pending_review: Atendante revizion + statuses: + allow: Permesi afiŝon + allow_account: Permesi aŭtoron + disallow: Malpermesi afiŝon + disallow_account: Malpermesi aŭtoron + title: Tendencantaj afiŝoj + tags: + dashboard: + tag_accounts_measure: unikaj uzoj + tag_servers_measure: malsamaj serviloj + not_usable: Ne povas esti uzata + title: Tendencantaj kradvortoj warning_presets: add_new: Aldoni novan delete: Forigi edit_preset: Redakti avertan antaŭagordon title: Administri avertajn antaŭagordojn admin_mailer: + new_appeal: + actions: + disable: por malebligi ties konton new_pending_account: body: La detaloj de la nova konto estas sube. Vi povas aprobi aŭ Malakcepti ĉi kandidatiĝo. subject: Nova konto atendas por recenzo en %{instance} (%{username}) @@ -594,6 +659,11 @@ eo: body: "%{reporter} signalis %{target}" body_remote: Iu de %{domain} signalis %{target} subject: Nova signalo por %{instance} (#%{id}) + new_trends: + new_trending_links: + title: Tendencantaj ligiloj + new_trending_tags: + title: Tendencantaj kradvortoj aliases: add_new: Krei alinomon created_msg: Kreis novan alinomon sukcese. Vi povas inici la transloki el la malnovan konton nun. @@ -717,6 +787,10 @@ eo: directory: Profilujo explanation: Malkovru uzantojn per iliaj interesoj explore_mastodon: Esplori %{title} + disputes: + strikes: + title_actions: + delete_statuses: Forigo de afiŝo domain_validator: invalid_domain: ne estas valida domajna nomo errors: @@ -789,6 +863,7 @@ eo: delete: Forigi order_by: Ordigi de save_changes: Konservi ŝanĝojn + today: hodiaŭ validation_errors: one: Io mise okazis! Bonvolu konsulti la suban erar-raporton other: Io mise okazis! Bonvolu konsulti la subajn %{count} erar-raportojn @@ -865,6 +940,7 @@ eo: set_redirect: Agordi alidirekton warning: only_redirect_html: Alie, vi povas nur aldoni alidirekton en via profilo. + other_data: Neniu alia datumo estos movita aŭtomate moderation: title: Kontrolado notification_mailer: @@ -875,9 +951,6 @@ eo: new_followers_summary: one: Ankaŭ, vi ekhavis novan sekvanton en via foresto! Jej! other: Ankaŭ, vi ekhavis %{count} novajn sekvantojn en via foresto! Mirinde! - subject: - one: "1 nova sciigo ekde via lasta vizito \U0001F418" - other: "%{count} novaj sciigoj ekde via lasta vizito \U0001F418" title: En via foresto… favourite: body: "%{name} stelumis vian mesaĝon:" @@ -903,6 +976,8 @@ eo: title: Nova diskonigo status: subject: "%{name} ĵus afiŝita" + update: + subject: "%{name} redaktis afiŝon" notifications: email_events: Eventoj por retpoŝtaj sciigoj email_events_hint: 'Elekti la eventojn pri kioj vi volas ricevi sciigojn:' @@ -1174,7 +1249,6 @@ eo: users: follow_limit_reached: Vi ne povas sekvi pli ol %{limit} homo(j) invalid_otp_token: Nevalida kodo de dufaktora aŭtentigo - invalid_sign_in_token: Nevalida sekureca kodo otp_lost_help_html: Se vi perdas aliron al ambaŭ, vi povas kontakti %{email} seamless_external_login: Vi estas ensalutinta per ekstera servo, do pasvortaj kaj retadresaj agordoj ne estas disponeblaj. signed_in_as: 'Salutinta kiel:' diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 36b46eb47..98b790487 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -199,7 +199,6 @@ es-AR: security_measures: only_password: Sólo contraseña password_and_2fa: Contraseña y 2FA - password_and_sign_in_token: Contraseña y token por correo electrónico sensitive: Forzar como sensible sensitized: Marcado como sensible shared_inbox_url: Dirección web de la bandeja de entrada compartida @@ -518,6 +517,7 @@ es-AR: delivery: all: Todos clear: Limpiar errores de entrega + failing: Fallo restart: Reiniciar entrega stop: Detener entrega unavailable: No disponible @@ -598,7 +598,7 @@ es-AR: action_taken_by: Acción tomada por actions: delete_description_html: Los mensajes denunciados serán eliminados y se registrará un incumplimiento para ayudarte a escalar en futuras infracciones por la misma cuenta. - mark_as_sensitive_description_html: Los archivos de medios en los mensajes denunciados se marcarán como sensibles y se registrará un incumplimiento para ayudarte a escalar las futuras acciones de la misma cuenta. + mark_as_sensitive_description_html: Los archivos de medios en los mensajes denunciados se marcarán como sensibles y se registrará un incumplimiento para ayudarte a escalar las futuras infracciones de la misma cuenta. other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta denunciada. resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará el incumplimiento, y se cerrará la denuncia. silence_description_html: El perfil será visible sólo para aquellos que ya sigan esta cuenta o que la busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido. @@ -907,7 +907,7 @@ es-AR: notification_preferences: Cambiar configuración de correo electrónico salutation: "%{name}:" settings: 'Cambiar configuración de correo electrónico: %{link}' - view: 'Vista:' + view: 'Visitá:' view_profile: Ver perfil view_status: Ver mensaje applications: @@ -1237,8 +1237,8 @@ es-AR: one: Además, ¡ganaste un nuevo seguidor mientras estabas ausente! ¡Esa! other: Además, ¡ganaste %{count} nuevos seguidores mientras estabas ausente! ¡Esssa! subject: - one: "1 nueva notificación desde tu última visita \U0001F418" - other: "%{count} nuevas notificaciones desde tu última visita \U0001F418" + one: "1 nueva notificación desde tu última visita 🐘" + other: "%{count} nuevas notificaciones desde tu última visita 🐘" title: En tu ausencia... favourite: body: 'Tu mensaje fue marcado como favorito por %{name}:' @@ -1633,12 +1633,13 @@ es-AR: explanation: Solicitaste un resguardo completo de tu cuenta de Mastodon. ¡Ya está listo para descargar! subject: Tu archivo historial está listo para descargar title: Descargar archivo historial - sign_in_token: - details: 'Acá están los detalles del intento:' - explanation: 'Detectamos un intento de inicio de sesión en tu cuenta desde una dirección IP no reconocida. Si fuiste vos, por favor, ingresá el código de seguridad de abajo en la página del desafío:' - further_actions: 'Si no eras vos, por favor, cambiá tu contraseña y habilitá la autenticación de dos factores en tu cuenta. Podés hacerlo acá:' - subject: Por favor, confirmá el intento de inicio de sesión - title: Intento de inicio de sesión + suspicious_sign_in: + change_password: cambiés tu contraseña + details: 'Acá están los detalles del inicio de sesión:' + explanation: Detectamos un inicio de sesión de tu cuenta desde una nueva dirección IP. + further_actions_html: Si no fuiste vos, te recomendamos que %{action} inmediatamente y habilités la autenticación de dos factores para mantener tu cuenta segura. + subject: Se accedió a tu cuenta desde una nueva dirección IP + title: Un nuevo inicio de sesión warning: appeal: Enviar una apelación appeal_description: Si creés que esto es un error, podés enviar una apelación al equipo de %{instance}. @@ -1689,13 +1690,10 @@ es-AR: title: "¡Bienvenido a bordo, %{name}!" users: follow_limit_reached: No podés seguir a más de %{limit} cuentas - generic_access_help_html: "¿Tenés problemas para acceder a tu cuenta? Podés ponerte en contacto con %{email} para obtener ayuda" invalid_otp_token: Código de dos factores no válido - invalid_sign_in_token: Código de seguridad no válido otp_lost_help_html: Si perdiste al acceso a ambos, podés ponerte en contacto con %{email} seamless_external_login: Iniciaste sesión desde un servicio externo, así que la configuración de contraseña y correo electrónico no están disponibles. signed_in_as: 'Iniciaste sesión como:' - suspicious_sign_in_confirmation: Parece que no iniciaste sesión desde este dispositivo antes, y no iniciaste sesión durante un tiempo, así que te estamos enviando un código de seguridad a tu dirección de correo electrónico para confirmar que sos vos. verification: explanation_html: 'Podés verificarte a vos mismo como el propietario de los enlaces en los metadatos de tu perfil. Para eso, el sitio web del enlace debe contener un enlace de vuelta a tu perfil de Mastodon. El enlace en tu sitio debe tener un atributo rel="me". El contenido del texto del enlace no importa. Acá tenés un ejemplo:' verification: Verificación diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 17af40f2c..32c2f702c 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -165,6 +165,9 @@ es-MX: pending: Revisión pendiente perform_full_suspension: Suspender previous_strikes: Amonestaciones anteriores + previous_strikes_description_html: + one: Esta cuenta tiene una amonestación. + other: Esta cuenta tiene %{count} amonestaciones. promote: Promocionar protocol: Protocolo public: Público @@ -196,7 +199,6 @@ es-MX: security_measures: only_password: Sólo contraseña password_and_2fa: Contraseña y 2FA - password_and_sign_in_token: Contraseña y token de correo electrónico sensitive: Sensible sensitized: marcado como sensible shared_inbox_url: URL de bandeja compartida @@ -515,6 +517,7 @@ es-MX: delivery: all: Todos clear: Limpiar errores de entrega + failing: Fallando restart: Reiniciar entrega stop: Detener entrega unavailable: No disponible @@ -523,6 +526,9 @@ es-MX: delivery_error_hint: Si la entrega no es posible a lo largo de %{count} días, se marcará automáticamente como no entregable. destroyed_msg: Los datos de %{domain} están ahora en cola para su inminente eliminación. empty: No se encontraron dominios. + known_accounts: + one: "%{count} cuenta conocida" + other: "%{count} cuentas conocidas" moderation: all: Todos limited: Limitado @@ -592,7 +598,7 @@ es-MX: action_taken_by: Acción tomada por actions: delete_description_html: Los mensajes denunciados serán eliminados y se registrará una amonestación para ayudarte a escalar en futuras infracciones por la misma cuenta. - mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar futuras acciones sobre la misma cuenta. + mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar las futuras infracciones de la misma cuenta. other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada. resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará la amonestación, y se cerrará el informe. silence_description_html: El perfil será visible solo para aquellos que ya lo sigan o lo busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido. @@ -791,6 +797,9 @@ es-MX: description_html: Estos son enlaces que actualmente están siendo compartidos mucho por las cuentas desde las que tu servidor ve los mensajes. Pueden ayudar a tus usuarios a averiguar qué está pasando en el mundo. Ningún enlace se muestren públicamente hasta que autorice al dominio. También puede permitir o rechazar enlaces individuales. disallow: Rechazar enlace disallow_provider: Rechazar editor + shared_by_over_week: + one: Compartido por una persona durante la última semana + other: Compartido por %{count} personas durante la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado a %{yesterday} ayer pending_review: Revisión pendiente @@ -830,6 +839,9 @@ es-MX: trending_rank: Tendencia n.º %{rank} usable: Pueden usarse usage_comparison: Usada %{today} veces hoy, comparado con %{yesterday} ayer + used_by_over_week: + one: Usada por una persona durante la última semana + other: Usada por %{count} personas durante la última semana title: Tendencias warning_presets: add_new: Añadir nuevo @@ -1225,8 +1237,8 @@ es-MX: one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!" other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!" subject: - one: "1 nueva notificación desde tu última visita \U0001F418" - other: "%{count} nuevas notificaciones desde tu última visita \U0001F418" + one: "1 nueva notificación desde tu última visita 🐘" + other: "%{count} nuevas notificaciones desde tu última visita 🐘" title: En tu ausencia… favourite: body: 'Tu estado fue marcado como favorito por %{name}:' @@ -1621,12 +1633,13 @@ es-MX: explanation: Has solicitado una copia completa de tu cuenta de Mastodon. ¡Ya está preparada para descargar! subject: Tu archivo está preparado para descargar title: Descargar archivo - sign_in_token: - details: 'Aquí están los detalles del intento:' - explanation: 'Hemos detectado un intento de inicio de sesión en tu cuenta desde una dirección IP no reconocida. Si has sido tú, por favor ingresa el siguiente código de seguridad en la página del desafío:' - further_actions: 'Si no has sido tú, por favor cambia tu contraseña y habilita la autenticación de dos factores en tu cuenta. Puedes hacerlo aquí:' - subject: Por favor, confirma el intento de inicio de sesión - title: Intento de inicio de sesión + suspicious_sign_in: + change_password: cambies tu contraseña + details: 'Aquí están los detalles del inicio de sesión:' + explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP. + further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. + subject: Tu cuenta ha sido accedida desde una nueva dirección IP + title: Un nuevo inicio de sesión warning: appeal: Enviar una apelación appeal_description: Si crees que esto es un error, puedes enviar una apelación al equipo de %{instance}. @@ -1677,13 +1690,10 @@ es-MX: title: Te damos la bienvenida a bordo, %{name}! users: follow_limit_reached: No puedes seguir a más de %{limit} personas - generic_access_help_html: "¿Tienes problemas para acceder a tu cuenta? Puedes ponerte en contacto con %{email} para conseguir ayuda" invalid_otp_token: Código de dos factores incorrecto - invalid_sign_in_token: Código de seguridad no válido otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email} seamless_external_login: Has iniciado sesión desde un servicio externo, así que los ajustes de contraseña y correo no están disponibles. signed_in_as: 'Sesión iniciada como:' - suspicious_sign_in_confirmation: Parece que no has iniciado sesión desde este dispositivo antes, y no has iniciado sesión durante un tiempo, así que estamos enviando un código de seguridad a tu dirección de correo electrónico para confirmar que eres tú. verification: explanation_html: 'Puedes verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil . Para eso, el sitio vinculado debe contener un vínculo a tu perfil de Mastodon. El vínculo en tu sitio debe tener un atributo rel="me". El texto del vínculo no importa. Aquí un ejemplo:' verification: Verificación diff --git a/config/locales/es.yml b/config/locales/es.yml index 2ac09ea44..8988ddadc 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -199,7 +199,6 @@ es: security_measures: only_password: Sólo contraseña password_and_2fa: Contraseña y 2FA - password_and_sign_in_token: Contraseña y token de correo electrónico sensitive: Sensible sensitized: marcado como sensible shared_inbox_url: URL de bandeja compartida @@ -518,6 +517,7 @@ es: delivery: all: Todos clear: Limpiar errores de entrega + failing: Fallando restart: Reiniciar entrega stop: Detener entrega unavailable: No disponible @@ -598,7 +598,7 @@ es: action_taken_by: Acción tomada por actions: delete_description_html: Los mensajes denunciados serán eliminados y se registrará una amonestación para ayudarte a escalar en futuras infracciones por la misma cuenta. - mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar futuras acciones sobre la misma cuenta. + mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar las futuras infracciones de la misma cuenta. other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada. resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará la amonestación, y se cerrará el informe. silence_description_html: El perfil será visible solo para aquellos que ya lo sigan o lo busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido. @@ -802,6 +802,7 @@ es: other: Compartido por %{count} personas durante la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con %{yesterday} ayer + only_allowed: Sólo permitido pending_review: Revisión pendiente preview_card_providers: allowed: Los enlaces de este medio pueden ser tendencia @@ -843,6 +844,7 @@ es: one: Usada por una persona durante la última semana other: Usada por %{count} personas durante la última semana title: Tendencias + trending: En tendencia warning_presets: add_new: Añadir nuevo delete: Borrar @@ -1237,8 +1239,8 @@ es: one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!" other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!" subject: - one: "1 nueva notificación desde tu última visita \U0001F418" - other: "%{count} nuevas notificaciones desde tu última visita \U0001F418" + one: "1 nueva notificación desde tu última visita 🐘" + other: "%{count} nuevas notificaciones desde tu última visita 🐘" title: En tu ausencia… favourite: body: 'Tu estado fue marcado como favorito por %{name}:' @@ -1633,12 +1635,13 @@ es: explanation: Has solicitado una copia completa de tu cuenta de Mastodon. ¡Ya está preparada para descargar! subject: Tu archivo está preparado para descargar title: Descargar archivo - sign_in_token: - details: 'Aquí están los detalles del intento:' - explanation: 'Hemos detectado un intento de inicio de sesión en tu cuenta desde una dirección IP no reconocida. Si has sido tú, por favor ingresa el siguiente código de seguridad en la página del desafío:' - further_actions: 'Si no has sido tú, por favor cambia tu contraseña y habilita la autenticación de dos factores en tu cuenta. Puedes hacerlo aquí:' - subject: Por favor, confirma el intento de inicio de sesión - title: Intento de inicio de sesión + suspicious_sign_in: + change_password: cambies tu contraseña + details: 'Aquí están los detalles del inicio de sesión:' + explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP. + further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. + subject: Tu cuenta ha sido accedida desde una nueva dirección IP + title: Un nuevo inicio de sesión warning: appeal: Enviar una apelación appeal_description: Si crees que esto es un error, puedes enviar una apelación al equipo de %{instance}. @@ -1689,13 +1692,10 @@ es: title: Te damos la bienvenida a bordo, %{name}! users: follow_limit_reached: No puedes seguir a más de %{limit} personas - generic_access_help_html: "¿Tienes problemas para acceder a tu cuenta? Puedes ponerte en contacto con %{email} para conseguir ayuda" invalid_otp_token: Código de dos factores incorrecto - invalid_sign_in_token: Código de seguridad no válido otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email} seamless_external_login: Has iniciado sesión desde un servicio externo, así que los ajustes de contraseña y correo no están disponibles. signed_in_as: 'Sesión iniciada como:' - suspicious_sign_in_confirmation: Parece que no has iniciado sesión desde este dispositivo antes, y no has iniciado sesión durante un tiempo, así que estamos enviando un código de seguridad a tu dirección de correo electrónico para confirmar que eres tú. verification: explanation_html: 'Puedes verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil . Para eso, el sitio vinculado debe contener un vínculo a tu perfil de Mastodon. El vínculo en tu sitio debe tener un atributo rel="me". El texto del vínculo no importa. Aquí un ejemplo:' verification: Verificación diff --git a/config/locales/et.yml b/config/locales/et.yml index ac8404885..e08b091b1 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -791,9 +791,6 @@ et: new_followers_summary: one: Ja veel, Te saite ühe uue jälgija kui Te olite eemal! Jee! other: Ja veel, Te saite %{count} uut jälgijat kui Te olite eemal! Hämmastav! - subject: - one: "1 uus teavitus peale Teie eelmist külastust \U0001F418" - other: "%{count} uut teavitust peale Teie eelmist külastust \U0001F418" title: Teie puudumisel... favourite: body: "%{name} lisas Teie staatuse lemmikutesse:" diff --git a/config/locales/eu.yml b/config/locales/eu.yml index a41a77baf..bfb06e3ee 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -163,6 +163,9 @@ eu: pending: Berrikusketa egiteke perform_full_suspension: Kanporatu previous_strikes: Aurreko abisuak + previous_strikes_description_html: + one: Kontu honek abisu bat dauka. + other: Kontu honek %{count} abisu dauzka. promote: Sustatu protocol: Protokoloa public: Publikoa @@ -194,7 +197,6 @@ eu: security_measures: only_password: Soilik pasahitza password_and_2fa: Pasahitza eta 2FA - password_and_sign_in_token: Pasahitza eta e-posta tokena sensitive: Hunkigarria sensitized: hunkigarri gisa markatua shared_inbox_url: Partekatutako sarrera ontziaren URL-a @@ -457,9 +459,13 @@ eu: unsuppress: Berrezarri jarraitzeko gomendioa instances: availability: + description_html: + one: Domeinura entregatzeak arrakastarik gabe huts egiten badu egun %{count} igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu horretatik entregarik jasotzen. + other: Domeinura entregatzeak arrakastarik gabe huts egiten badu %{count} egun igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu horretatik entregarik jasotzen. failure_threshold_reached: Hutsegite atalasera iritsi da %{date} datan. no_failures_recorded: Ez dago hutsegiterik erregistroan. title: Egoera + warning: Zerbitzari honetara konektatzeko azken saiakerak huts egin du back_to_all: Guztiak back_to_limited: Mugatua back_to_warning: Abisua @@ -482,6 +488,9 @@ eu: instance_followers_measure: gure jarraitzaileak hemen instance_follows_measure: beren jarraitzaileak hemen instance_languages_dimension: Hizkuntza nagusiak + instance_media_attachments_measure: multimedia eranskin biltegiratuta + instance_reports_measure: txosten berari buruz + instance_statuses_measure: bidalketa gordeta delivery: all: Guztiak clear: Garbitu banaketa erroreak @@ -493,6 +502,9 @@ eu: delivery_error_hint: Banaketa ezin bada %{count} egunean egin, banaezin bezala markatuko da automatikoki. destroyed_msg: "%{domain} domeinuko datuak berehala ezabatzeko ilaran daude orain." empty: Ez da domeinurik aurkitu. + known_accounts: + one: Kontu ezagun %{count} + other: "%{count} kontu ezagun" moderation: all: Denak limited: Mugatua @@ -500,12 +512,14 @@ eu: private_comment: Iruzkin pribatua public_comment: Iruzkin publikoa purge: Ezabatu betiko + purge_description_html: Domeinu hau behin betiko lineaz kanpo dagoela uste baduzu, domeinuko kontu guztien erregistroak eta erlazionatutako datuak ezabatu ditzakezu biltegitik. Honek luze jo dezake. title: Federazioa total_blocked_by_us: Guk blokeatuta total_followed_by_them: Haiek jarraitua total_followed_by_us: Guk jarraitua total_reported: Heiei buruzko txostenak total_storage: Multimedia eranskinak + totals_time_period_hint_html: Behean bistaratutako guztizkoek datu guztiak hartzen dituzte barne. invites: deactivate_all: Desgaitu guztiak filter: @@ -559,7 +573,9 @@ eu: action_log: Auditoria-egunkaria action_taken_by: Neurrien hartzailea actions: + delete_description_html: Salatutako bidalketak ezabatuko dira eta abisu bat gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun. other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago. + resolve_description_html: Ez da neurririk hartuko salatutako kontuaren aurka, ez da abisurik gordeko eta salaketa itxiko da. silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera. suspend_description_html: Profila eta bere eduki guztiak iritsiezinak bihurtuko dira, ezabatzen den arte. Kontuarekin ezin da interakziorik eduki. Atzera bota daiteke 30 eguneko epean. actions_description_html: Erabaki txosten hau konpontzeko ze ekintza hartu. Salatutako kontuaren aurka zigor ekintza bat hartzen baduzu, eposta jakinarazpen bat bidaliko zaie, Spam kategoria hautatzean ezik. @@ -578,6 +594,7 @@ eu: forwarded: Birbidalia forwarded_to: 'Hona birbidalia: %{domain}' mark_as_resolved: Markatu konpondutako gisa + mark_as_sensitive: Markatu hunkigarri gisa mark_as_unresolved: Markatu konpondu gabeko gisa no_one_assigned: Inor ez notes: @@ -589,6 +606,7 @@ eu: title: Oharrak notes_description_html: Ikusi eta idatzi oharrak beste moderatzaileentzat eta zuretzat etorkizunerako quick_actions_description_html: 'Hartu ekintza azkar bat edo korritu behera salatutako edukia ikusteko:' + remote_user_placeholder: "%{instance} instantziako urruneko erabiltzailea" reopen: Berrireki salaketa report: 'Salaketa #%{id}' reported_account: Salatutako kontua @@ -720,10 +738,21 @@ eu: actions: delete_statuses: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketak ezabatu ditu" disable: "%{name} erabiltzailea %{target} erabiltzailearen kontua izoztu du" + mark_statuses_as_sensitive: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketak hunkigarri bezala markatu ditu" none: "%{name} erabiltzaileak abisua bidali dio %{target} erabiltzaileari" + sensitive: "%{name} erabiltzaileak %{target} erabiltzailearen kontua hunkigarri bezala markatu ditu" + silence: "%{name} erabiltzaileak %{target} kontua mugatu du" + suspend: "%{name} erabiltzaileak %{target} kontua kanporatu du" + appeal_approved: Apelatua + appeal_pending: Apelazioa zain system_checks: database_schema_check: message_html: Aplikatu gabeko datu-basearen migrazioak daude. Exekutatu aplikazioak esperotako portaera izan dezan + elasticsearch_running_check: + message_html: Ezin izan da Elasticsearch-era konektatu. Egiaztatu martxan dagoela edo desgaitu testu osoko bilaketa + elasticsearch_version_check: + message_html: 'Elasticsearch bertsio bateraezina: %{value}' + version_comparison: Elasticsearch %{running_version} exekutatzen ari da, baina %{required_version} behar da rules_check: action: Kudeatu zerbitzariaren arauak message_html: Ez duzu zerbitzariaren araurik definitu. @@ -740,8 +769,12 @@ eu: links: allow: Onartu esteka allow_provider: Onartu argitaratzailea + description_html: Esteka hauek zure zerbitzariak ikusten dituen kontuek asko zabaltzen ari diren estekak dira. Zure erabiltzaileei munduan ze berri den jakiteko lagungarriak izan daitezke. Ez da estekarik bistaratzen argitaratzaileak onartu arte. Esteka bakoitza onartu edo baztertu dezakezu. disallow: Ukatu esteka disallow_provider: Ukatu argitaratzailea + shared_by_over_week: + one: Pertsona batek partekatua azken astean + other: "%{count} pertsonak partekatua azken astean" title: Esteken joerak usage_comparison: "%{today} aldiz partekatua gaur, atzo %{yesterday} aldiz" pending_review: Berrikusketaren zain @@ -750,6 +783,11 @@ eu: rejected: Argitaratzaile honen estekek ezin dute joera izan title: Argitaratzaileak rejected: Ukatua + statuses: + allow: Onartu bidalketa + allow_account: Onartu egilea + disallow: Ez onartu bidalketa + disallow_account: Ez onartu egilea tags: current_score: Uneko emaitza%{score} dashboard: @@ -783,6 +821,11 @@ eu: body: "%{reporter}(e)k %{target} salatu du" body_remote: "%{domain} domeinuko norbaitek %{target} salatu du" subject: Salaketa berria %{instance} instantzian (#%{id}) + new_trends: + new_trending_links: + title: Esteken joerak + new_trending_tags: + title: Traolak joeran aliases: add_new: Sortu ezizena created_msg: Ongi sortu da ezizena. Orain kontu zaharretik migratzen hasi zaitezke. @@ -834,6 +877,7 @@ eu: invalid_reset_password_token: Pasahitza berrezartzeko token-a baliogabea da edo iraungitu du. Eskatu beste bat. link_to_otp: Erabili zure mugikorreko bi faktoreko kodea edo berreskuratze kode bat link_to_webauth: Erabili zure segurtasun gako gailua + log_in_with: 'Saioa hasi honekin:' login: Hasi saioa logout: Amaitu saioa migrate_account: Migratu beste kontu batera @@ -855,6 +899,7 @@ eu: status: account_status: Kontuaren egoera confirming: E-mail baieztapena osatu bitartean zain. + functional: Zure kontua guztiz erabilgarri dago. pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu. redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako. too_fast: Formularioa azkarregi bidali duzu, saiatu berriro. @@ -920,6 +965,12 @@ eu: directory: Profilen direktorioa explanation: Deskubritu erabiltzaileak interesen arabera explore_mastodon: Esploratu %{title} + disputes: + strikes: + appeal: Apelazioa + appeals: + submit: Bidali apelazioa + recipient: Honi zuzendua domain_validator: invalid_domain: ez da domeinu izen baliogarria errors: @@ -1101,9 +1152,6 @@ eu: new_followers_summary: one: Kanpoan zeundela jarraitzaile berri bat gehitu zaizu! other: Kanpoan zeundela %{count} jarraitzaile berri bat gehitu zaizkizu! - subject: - one: "Jakinarazpen berri bat azken bisitatik \U0001F418" - other: "%{count} jakinarazpen berri azken bisitatik \U0001F418" title: Kanpoan zeundela... favourite: body: "%{name}(e)k zure bidalketa gogoko du:" @@ -1479,12 +1527,6 @@ eu: explanation: Zure Mastodon kontuaren babes-kopia osoa eskatu duzu. Deskargatzeko prest dago! subject: Zure artxiboa deskargatzeko prest dago title: Artxiboa jasotzea - sign_in_token: - details: 'Hemen daude saiakeraren xehetasunak:' - explanation: 'IP helbide ezezagun batetik zure kontuan saioa hasteko saiakera bat detektatu dugu. Zu bazara, sartu beheko segurtasun kodea saioa hasteko erronkaren orrian:' - further_actions: 'Ez bazara zu, aldatu zure pasahitza eta gaitu bi faktoreko autentifikazioa zure kontuan. Hemen egin dezakezu:' - subject: Berretsi saioa hasteko saiakera - title: Saioa hasteko saiakera warning: subject: disable: Zure %{acct} kontua izoztu da @@ -1515,13 +1557,10 @@ eu: title: Ongi etorri, %{name}! users: follow_limit_reached: Ezin dituzu %{limit} pertsona baino gehiago jarraitu - generic_access_help_html: Arazoak dituzu zure kontura sartzeko? Jarri harremanetan %{email} helbidearekin laguntzarako invalid_otp_token: Bi faktoreetako kode baliogabea - invalid_sign_in_token: Segurtasun kode baliogabea otp_lost_help_html: 'Bietara sarbidea galdu baduzu, jarri kontaktuan hemen: %{email}' seamless_external_login: Kanpo zerbitzu baten bidez hasi duzu saioa, beraz pasahitza eta e-mail ezarpenak ez daude eskuragarri. signed_in_as: 'Saioa honela hasita:' - suspicious_sign_in_confirmation: Dirudienez inoiz ez duzu saioa hasi gailu honetatik eta aspaldian ez duzu saiorik hasi. Horregatik, segurtasun kode bat bidaliko dizugu zure e-posta helbidera zu zarela egiaztatzeko. verification: explanation_html: 'Ezin duzu zure burua zure profileko metadatuen esteken jabe gisa egiaztatu. Horretarako, estekatutako webgunean zure Mastodon profilera daraman esteka bat egon behar du. Mastodonera daraman esteka horrekderrigorrez rel="me" artibutua izan behar du . Estekaren testuak ez du axola. Hona adibide bat:' verification: Egiaztaketa diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 2379e63da..566cfc4b7 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -196,7 +196,6 @@ fa: security_measures: only_password: فقط گذرواژه password_and_2fa: گذرواژه و ۲عاملی - password_and_sign_in_token: گذرواژه و ژتون رایانامه‌ای sensitive: حساس sensitized: علامت‌زده به عنوان حساس shared_inbox_url: نشانی صندوق ورودی مشترک @@ -1090,9 +1089,6 @@ fa: new_followers_summary: one: در ضمن، وقتی که نبودید یک پیگیر تازه پیدا کردید! ای ول! other: در ضمن، وقتی که نبودید %{count} پیگیر تازه پیدا کردید! چه عالی! - subject: - one: "یک اعلان تازه از زمان آخرین بازدید شما \U0001F418" - other: "%{count} آگاهی جدید از آخرین بازدیدتان \U0001F418" title: در مدتی که نبودید... favourite: body: "%{name} این نوشتهٔ شما را پسندید:" @@ -1478,12 +1474,6 @@ fa: explanation: شما یک نسخهٔ پشتیبان کامل از حساب خود را درخواست کردید. این پشتیبان الان آمادهٔ بارگیری است! subject: بایگانی شما آمادهٔ دریافت است title: گرفتن بایگانی - sign_in_token: - details: 'جزییات تلاش‌ها:' - explanation: 'تلاشی برای ورود به حسابتان از یک نشانی آی‌پی ناشناخته کشف کردیم. اگر خودتان بودید، لطفاً رمز امنیتی زیر را در صفحهٔ چالش وارد کنید:' - further_actions: 'اگر خودتان نیودید، لطفاً گذرواژه‌تان را عوض کرده و از این‌جا تأیید هویت دو مرحله‌ای را روی حسابتان به کار بیندازید:' - subject: لطفاً تلاش برای ورود را تأیید کنید - title: تلاش برای ورود warning: appeal: فرستادن یک درخواست تجدیدنظر appeal_description: اگر فکر می‌کنید این یک خطا است، می‌توانید یک درخواست تجدیدنظر به کارکنان %{instance} ارسال کنید. @@ -1520,13 +1510,10 @@ fa: title: خوش آمدید، کاربر %{name}! users: follow_limit_reached: شما نمی‌توانید بیش از %{limit} نفر را پی بگیرید - generic_access_help_html: مشکل در دسترسی به حسابتان؟ می‌توانید برای کمک با %{email} تکاس بگیرید invalid_otp_token: کد ورود دومرحله‌ای نامعتبر است - invalid_sign_in_token: کد امنیتی نادرست otp_lost_help_html: اگر شما دسترسی به هیچ‌کدامشان ندارید، باید با ایمیل %{email} تماس بگیرید seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شده‌اید، به همین دلیل تنظیمات ایمیل و رمز برای شما در دسترس نیست. signed_in_as: 'واردشده به نام:' - suspicious_sign_in_confirmation: به نظر می‌رسد پیش‌تر از این افزاره وارد نشده بودید و مدتی می‌شود که وارد نشده‌اید. داریم برای تأیید، یک رمز امنیتی به نشانی رایانامه‌تان می‌فرستیم. verification: explanation_html: 'شما می‌توانید خود را به عنوان مالک صفحه‌ای که در نمایه‌تان به آن پیوند داده‌اید تأیید کنید. برای این کار، صفحه‌ای که به آن پیوند داده‌اید، خودش باید پیوندی به نمایهٔ ماستودون شما داشته باشد. پیوند در آن صفحه باید عبارت rel="me"‎ را به عنوان مشخّصهٔ (attribute) در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:' verification: تأیید diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 1cdaed6ef..55e2332cf 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -196,7 +196,6 @@ fi: security_measures: only_password: Vain salasana password_and_2fa: Salasana ja kaksivaiheinen tunnistautuminen - password_and_sign_in_token: Salasana ja sähköpostitunnus sensitive: Pakotus arkaluontoiseksi sensitized: Merkitty arkaluontoiseksi shared_inbox_url: Jaetun saapuvan postilaatikon osoite @@ -558,7 +557,6 @@ fi: action_taken_by: Toimenpiteen tekijä actions: delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista. - mark_as_sensitive_description_html: Ilmoitettujen viestien media merkitään arkaluonteisiksi ja varoitus tallennetaan, jotta voit lisätä saman tilin tulevia rikkomuksia. other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi. resolve_description_html: Ilmoitettua tiliä vastaan ei ryhdytä toimenpiteisiin, varoitusta ei kirjata ja raportti suljetaan. silence_description_html: Profiili näkyy vain niille, jotka jo seuraavat sitä tai etsivät sen manuaalisesti, mikä rajoittaa merkittävästi kattavuutta. Se voidaan aina palauttaa. @@ -1185,9 +1183,6 @@ fi: new_followers_summary: one: Olet myös saanut yhden uuden seuraajan! Juhuu! other: Olet myös saanut %{count} uutta seuraajaa! Aivan mahtavaa! - subject: - one: "1 uusi ilmoitus viime käyntisi jälkeen \U0001F418" - other: "%{count} uutta ilmoitusta viime käyntisi jälkeen \U0001F418" title: Poissaollessasi… favourite: body: "%{name} tykkäsi tilastasi:" @@ -1500,12 +1495,6 @@ fi: explanation: Pyysit täydellistä varmuuskopiota Mastodon-tilistäsi. Voit nyt ladata sen! subject: Arkisto on valmiina ladattavaksi title: Arkiston tallennus - sign_in_token: - details: 'Tässä yrityksen yksityiskohtia:' - explanation: 'Tunnistimme sisäänkirjautumisyrityksen tunnistamattomasta IP-osoitteesta. Jos se olit sinä, syötä alla oleva turvakoodi sisäänkirjautumissivulle:' - further_actions: 'Jos tämä et ollut sinä, vaihda salasanasi ja ota käyttöön kaksivaiheinen todennus tililläsi. Voit tehdä sen täällä:' - subject: Ole hyvä ja vahvista sisäänkirjautumisyritys - title: Sisäänkirjautumisyritys warning: appeal: Lähetä valitus appeal_description: Jos uskot, että tämä on virhe, voit hakea muutosta henkilökunnalta %{instance}. @@ -1556,13 +1545,10 @@ fi: title: Tervetuloa mukaan, %{name}! users: follow_limit_reached: Et voi seurata yli %{limit} henkilöä - generic_access_help_html: Onko sinulla pääsy tiliisi? Voit ottaa yhteyttä %{email} saadaksesi apua invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi - invalid_sign_in_token: Virheellinen turvakoodi otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyttä osoitteeseen %{email} seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä. signed_in_as: 'Kirjautunut henkilönä:' - suspicious_sign_in_confirmation: Et ilmeisesti ole kirjautunut sisään tältä laitteelta aikaisemmin, joten lähetämme sähköpostiisi turvakoodin vahvistaaksesi, että se olet sinä. verification: explanation_html: 'Voit vahvistaa itsesi profiilisi metatietojen linkkien omistajaksi.. Tätä varten linkitetyn verkkosivuston on sisällettävä linkki takaisin Mastodon -profiiliisi. Palauttavalla linkillä täytyy olla rel="minä" tuntomerkki. Linkin tekstisisällöllä ei ole väliä. Tässä on esimerkki:' verification: Vahvistus diff --git a/config/locales/fr.yml b/config/locales/fr.yml index bc1902cf8..63fce2af6 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -11,8 +11,8 @@ fr: apps: Applications mobiles apps_platforms: Utilisez Mastodon depuis iOS, Android et d’autres plates-formes browse_directory: Parcourir l’annuaire des profils et filtrer par centres d’intérêts - browse_local_posts: Parcourir un flux en direct de messages publics depuis ce serveur - browse_public_posts: Parcourir un flux en direct de messages publics sur Mastodon + browse_local_posts: Parcourir en direct un flux de messages publics depuis ce serveur + browse_public_posts: Parcourir en direct un flux de messages publics sur Mastodon contact: Contact contact_missing: Non défini contact_unavailable: Non disponible @@ -31,13 +31,13 @@ fr: privacy_policy: Politique de confidentialité rules: Règles du serveur rules_html: 'Voici un résumé des règles que vous devez suivre si vous voulez avoir un compte sur ce serveur de Mastodon :' - see_whats_happening: Voir ce qui se passe + see_whats_happening: Quoi de neuf server_stats: 'Statistiques du serveur :' source_code: Code source status_count_after: one: message other: messages - status_count_before: Ayant publié + status_count_before: Qui a publié tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles terms: Conditions d’utilisation unavailable_content: Serveurs modérés @@ -91,14 +91,14 @@ fr: unfollow: Ne plus suivre admin: account_actions: - action: Effectuer une action + action: Effectuer l'action title: Effectuer une action de modération sur %{acct} account_moderation_notes: create: Laisser une remarque created_msg: Note de modération créée avec succès ! destroyed_msg: Note de modération supprimée avec succès ! accounts: - add_email_domain_block: Mettre le domaine du courriel sur liste noire + add_email_domain_block: Bloquer ce domaine de courriel approve: Approuver approved_msg: La demande d’inscription de %{username} a été approuvée avec succès are_you_sure: Voulez-vous vraiment faire ça ? @@ -199,7 +199,6 @@ fr: security_measures: only_password: Mot de passe uniquement password_and_2fa: Mot de passe et 2FA - password_and_sign_in_token: Mot de passe et jeton par courriel sensitive: Sensible sensitized: marqué comme sensible shared_inbox_url: URL de la boite de réception partagée @@ -480,6 +479,9 @@ fr: unsuppress: Rétablir les recommandations d'abonnement instances: availability: + description_html: + one: Si la livraison au domaine échoue pendant %{count} jour sans succès, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine soit reçue. + other: Si la livraison au domaine échoue pendant %{count} jours différents sans succès, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine soit reçue. failure_threshold_reached: Le seuil de défaillance a été atteint le %{date}. failures_recorded: one: Tentative échouée pendant %{count} jour. @@ -515,6 +517,7 @@ fr: delivery: all: Tout clear: Effacer les erreurs de livraison + failing: Échouant restart: Redémarrer la livraison stop: Arrêter la livraison unavailable: Indisponible @@ -799,6 +802,7 @@ fr: other: Partagé par %{count} personnes au cours de la dernière semaine title: Liens tendances usage_comparison: Partagé %{today} fois aujourd'hui, comparé à %{yesterday} hier + only_allowed: Seuls autorisés pending_review: En attente de révision preview_card_providers: allowed: Les liens de cet éditeur peuvent être tendance @@ -840,6 +844,7 @@ fr: one: Utilisé par %{count} personne au cours de la dernière semaine other: Utilisé par %{count} personnes au cours de la dernière semaine title: Tendances + trending: Tendances warning_presets: add_new: Ajouter un nouveau delete: Supprimer @@ -1234,8 +1239,8 @@ fr: one: De plus, vous avez un·e nouvel·le abonné·e ! Youpi ! other: De plus, vous avez %{count} abonné·e·s de plus ! Incroyable ! subject: - one: "Une nouvelle notification depuis votre dernière visite \U0001F418" - other: "%{count} nouvelles notifications depuis votre dernière visite \U0001F418" + one: "Une nouvelle notification depuis votre dernière visite 🐘" + other: "%{count} nouvelles notifications depuis votre dernière visite 🐘" title: Pendant votre absence… favourite: body: "%{name} a ajouté votre message à ses favoris :" @@ -1630,12 +1635,13 @@ fr: explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée ! subject: Votre archive est prête à être téléchargée title: Récupération de l’archive - sign_in_token: - details: 'Voici les détails de la tentative :' - explanation: 'Nous avons détecté une tentative de connexion à votre compte à partir d’une adresse IP non reconnue. Si c’est vous, veuillez entrer le code de sécurité ci-dessous sur la page de négociation de connexion :' - further_actions: 'S’il ne s’agit pas de vous, veuillez changer votre mot de passe et activer l’authentification à deux facteurs sur votre compte. Vous pouvez le faire ici :' - subject: Veuillez confirmer la tentative de connexion - title: Tentative de connexion + suspicious_sign_in: + change_password: changer votre mot de passe + details: 'Voici les détails de la connexion :' + explanation: Nous avons détecté une connexion à votre compte à partir d’une nouvelle adresse IP. + further_actions_html: Si ce n’était pas vous, nous vous recommandons de %{action} immédiatement et d’activer l’authentification à deux facteurs afin de garder votre compte sécurisé. + subject: Votre compte a été accédé à partir d'une nouvelle adresse IP + title: Une nouvelle connexion warning: appeal: Faire appel appeal_description: Si vous pensez qu'il s'agit d'une erreur, vous pouvez faire appel auprès de l'équipe de %{instance}. @@ -1686,13 +1692,10 @@ fr: title: Bienvenue à bord, %{name} ! users: follow_limit_reached: Vous ne pouvez pas suivre plus de %{limit} personnes - generic_access_help_html: Rencontrez-vous des difficultés d’accès à votre compte ? Vous pouvez contacter %{email} pour obtenir de l’aide invalid_otp_token: Le code d’authentification à deux facteurs est invalide - invalid_sign_in_token: Code de sécurité non valide otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email} seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles. signed_in_as: 'Connecté·e en tant que :' - suspicious_sign_in_confirmation: Il semblerait que vous ne vous êtes pas connecté depuis cet appareil auparavant et que vous ne vous êtes pas connecté depuis un moment, alors nous envoyons un code de sécurité à votre adresse courriel pour confirmer qu’il s’agit bien de vous. verification: explanation_html: 'Vous pouvez vous vérifier en tant que propriétaire des liens dans les métadonnées de votre profil. Pour cela, le site web lié doit contenir un lien vers votre profil Mastodon. Le lien de retour doit avoir un attribut rel="me" . Le texte du lien n’a pas d’importance. Voici un exemple :' verification: Vérification diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 9f586aa37..8a280c001 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1,4 +1,61 @@ --- ga: about: - about_hashtag_html: Is toots phoiblí iad seo atá clibáilte le #%{hashtag}. Is féidir leat idirghníomhú leo má tá cuntas agat áit ar bith sa fediverse. + api: API + privacy_policy: Polasaí príobháideachais + unavailable_content_description: + domain: Freastalaí + reason: Fáth + accounts: + posts_tab_heading: Postálacha + roles: + bot: Róbat + group: Grúpa + moderator: Modhnóir + unfollow: Ná lean + admin: + accounts: + are_you_sure: An bhfuil tú cinnte? + confirm: Deimhnigh + confirmed: Deimhnithe + confirming: Ag deimhniú + email: Ríomhphost + email_status: Stádas ríomhphoist + followers: Leantóirí + ip: IP + location: + all: Uile + public: Poiblí + reject: Diúltaigh + roles: + admin: Riarthóir + moderator: Modhnóir + staff: Foireann + user: Úsáideoir + search: Cuardaigh + statuses: Postálacha + title: Cuntais + announcements: + live: Beo + publish: Foilsigh + custom_emojis: + delete: Scrios + emoji: Emoji + list: Liosta + email_domain_blocks: + delete: Scrios + instances: + content_policies: + policy: Polasaí + delivery: + all: Uile + 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. diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 0f6524fbd..f46ba4f8f 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -17,7 +17,7 @@ gd: contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh continue_to_web: Lean air adhart dhan aplacaid-lìn - discover_users: Lorg cleachdaichean + discover_users: Rùraich cleachdaichean documentation: Docamaideadh federation_hint_html: Le cunntas air %{instance}, ’s urrainn dhut leantainn air daoine air frithealaiche Mastodon sam bith is a bharrachd. get_apps: Feuch aplacaid mobile @@ -40,7 +40,7 @@ gd: other: post two: phost status_count_before: A dh’fhoillsich - tagline: Lean air caraidean ’s lorg feadhainn ùra + tagline: Lean air caraidean ’s rùraich feadhainn ùra terms: Teirmichean na seirbheise unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: @@ -173,6 +173,11 @@ gd: pending: A’ feitheamh air lèirmheas perform_full_suspension: Cuir à rèim previous_strikes: Rabhaidhean roimhe + previous_strikes_description_html: + few: Fhuair an cunntas seo %{count} rabhaidhean. + one: Fhuair an cunntas seo %{count} rabhadh. + other: Fhuair an cunntas seo %{count} rabhadh. + two: Fhuair an cunntas seo %{count} rabhadh. promote: Àrdaich protocol: Pròtacal public: Poblach @@ -204,7 +209,6 @@ gd: security_measures: only_password: Facal-faire a-mhàin password_and_2fa: Facal-faire ’s dà-cheumnach - password_and_sign_in_token: Facal-faire ’s tòcan puist-d sensitive: Spàrr an fhrionasachd air sensitized: Chaidh comharradh gu bheil e frionasach shared_inbox_url: URL a’ bhogsa a-steach cho-roinnte @@ -537,6 +541,7 @@ gd: delivery: all: Na h-uile clear: Falamhaich na mearachdan lìbhrigidh + failing: A’ fàilligeadh restart: Ath-thòisich air an lìbhrigeadh stop: Cuir stad air an lìbhrigeadh unavailable: Chan eil e ri làimh @@ -545,6 +550,11 @@ gd: delivery_error_hint: Mura gabh a lìbhrigeadh fad %{count} là(ithean), thèid comharra a chur ris gu fèin-obrachail a dh’innseas nach gabh a lìbhrigeadh. destroyed_msg: Tha an dàta o %{domain} air ciutha an sguabaidh às aithghearr. empty: Cha deach àrainn a lorg. + known_accounts: + few: "%{count} cunntasan as aithne dhuinn" + one: "%{count} chunntas as aithne dhuinn" + other: "%{count} cunntas as aithne dhuinn" + two: "%{count} chunntas as aithne dhuinn" moderation: all: Na h-uile limited: Cuingichte @@ -588,7 +598,7 @@ gd: relays: add_new: Cuir ath-sheachadan ùr ris delete: Sguab às - description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an ath-sheachadan co-nasgaidh a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. ’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an lorg iad susbaint sa cho-shaoghal agus às an aonais, bhiodh aig cleachdaichean ionadail leantainn air daoine eile air frithealaichean cèine a làimh." + description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an ath-sheachadan co-nasgaidh a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. ’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an rùraich iad susbaint sa cho-shaoghal agus às an aonais, bhiodh aig cleachdaichean ionadail leantainn air daoine eile air frithealaichean cèine a làimh." disable: Cuir à comas disabled: Chaidh a chur à comas enable: Cuir an comas @@ -704,12 +714,12 @@ gd: title: Dealbh suaichnein peers_api_enabled: desc_html: Ainmean àrainne air an do thachair am frithealaiche seo sa cho-shaoghal - title: Foillsich liosta nam frithealaichean a chaidh a lorg san API + title: Foillsich liosta nam frithealaichean a chaidh a rùrachadh san API preview_sensitive_media: desc_html: Ro-sheallaidh ceanglaichean dealbhag fhiù ’s ma chaidh comharradh gu bheil am meadhan frionasach title: Seall meadhanan frionasach ann an ro-sheallaidhean OpenGraph profile_directory: - desc_html: Suidhich gun gabh cleachdaichean a lorg + desc_html: Suidhich gun gabh cleachdaichean a rùrachadh title: Cuir eòlaire nam pròifil an comas registrations: closed_message: @@ -815,6 +825,11 @@ gd: description_html: Seo na ceanglaichean a tha ’gan co-roinneadh le iomadh cunntas on a chì am frithealaiche agad na postaichean. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ach am faigh iad a-mach dè tha tachairt air an t-saoghal. Cha dèid ceanglaichean a shealltainn gu poblach gus an aontaich thu ris an fhoillsichear. ’S urrainn dhut ceanglaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich an ceangal disallow_provider: Na ceadaich am foillsichear + shared_by_over_week: + few: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh + one: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh + other: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh + two: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh title: Ceanglaichean a’ treandadh usage_comparison: Chaidh a cho-roinneadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè pending_review: A’ feitheamh air lèirmheas @@ -830,7 +845,7 @@ gd: description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson leantainn orra. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich am post disallow_account: Na ceadaich an t-ùghdar - not_discoverable: Cha do chuir an t-ùghdar roimhe gun gabh a lorg + not_discoverable: Cha do chuir an t-ùghdar roimhe gun gabh a rùrachadh shared_by: few: Chaidh a cho-roinneadh no ’na annsachd %{friendly_count} tursan one: Chaidh a cho-roinneadh no ’na annsachd %{friendly_count} turas @@ -856,6 +871,11 @@ gd: trending_rank: 'A’ treandadh #%{rank}' usable: Gabhaidh a chleachdadh usage_comparison: Chaidh a chleachdadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè + used_by_over_week: + few: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh + one: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh + other: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh + two: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh title: Treandaichean warning_presets: add_new: Cuir fear ùr ris @@ -910,7 +930,7 @@ gd: advanced_web_interface_hint: 'Ma tha thu airson leud gu lèir na sgrìn agad a chleachdadh, leigidh an eadar-aghaidh-lìn adhartach leat gun rèitich thu mòran cholbhan eadar-dhealaichte ach am faic thu na thogras tu de dh’fhiosrachadh aig an aon àm: Dachaigh, brathan, loidhne-ama cho-naisgte, na thogras tu de liostaichean is tagaichean hais.' animations_and_accessibility: Beòthachaidhean agus so-ruigsinneachd confirmation_dialogs: Còmhraidhean dearbhaidh - discovery: Lorg + discovery: Rùrachadh localization: body: Tha Mastodon ’ga eadar-theangachadh le saor-thoilich. guide_link: https://crowdin.com/project/mastodon @@ -1036,7 +1056,7 @@ gd: username_unavailable: Cha bhi an t-ainm-cleachdaiche agad ri fhaighinn fhathast directories: directory: Eòlaire nam pròifil - explanation: Lorg cleachdaichean stèidhichte air an ùidhean + explanation: Rùraich cleachdaichean stèidhichte air an ùidhean explore_mastodon: Rùraich %{title} disputes: strikes: @@ -1257,10 +1277,10 @@ gd: other: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin! two: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin! subject: - few: "%{count} brathan ùra on tadhal mu dheireadh agad \U0001F418" - one: "%{count} bhrath ùr on tadhal mu dheireadh agad \U0001F418" - other: "%{count} brath ùr on tadhal mu dheireadh agad \U0001F418" - two: "%{count} bhrath ùr on tadhal mu dheireadh agad \U0001F418" + few: "%{count} brathan ùra on tadhal mu dheireadh agad 🐘" + one: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘" + other: "%{count} brath ùr on tadhal mu dheireadh agad 🐘" + two: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘" title: Fhad ’s a bha thu air falbh… favourite: body: 'Is annsa le %{name} am post agad:' @@ -1589,12 +1609,13 @@ gd: explanation: Dh’iarr thu lethbhreac-glèidhidh slàn dhen chunntas Mastodon agad. Tha e deis ri luchdadh a-nuas a-nis! subject: Tha an tasg-lann agad deis ri luchdadh a-nuas title: Tasg-lann dhut - sign_in_token: - details: 'Seo mion-fhiosrachadh mun oidhirp:' - explanation: 'Mhothaich sinn do dh’oidhirp clàraidh a-steach dhan chunntas agad o sheòladh IP nach aithne dhuinn. Mas e tusa a bh’ ann, cuir a-steach an còd tèarainteachd gu h-ìosal air duilleag dùbhlan a’ chlàraidh a-steach:' - further_actions: 'Mur e tusa a bh’ ann, atharraich am facal-faire agad agus cuir an comas an dearbhadh dà-cheumnach air a’ chunntas agad. ’S urrainn dhut sin a dhèanamh an-seo:' - subject: Dearbh an oidhirp air clàradh a-steach - title: Oidhirp clàraidh a-steach + suspicious_sign_in: + change_password: atharraich thu am facal-faire agad + details: 'Seo mion-fhiosrachadh mun chlàradh a-steach:' + explanation: Mhothaich sinn do chlàradh a-steach dhan chunntas agad o sheòladh IP ùr. + further_actions_html: Mur e thu fhèin a bh’ ann, mholamaid gun %{action} sa bhad agus gun cuir thu an dearbhadh dà-cheumnach an comas airson an cunntas agad a chumail tèarainte. + subject: Chaidh an cunntas agad inntrigeadh o sheòladh IP ùr + title: Clàradh a-steach ùr warning: appeal: Cuir ath-thagradh a-null appeal_description: Ma tha thu dhen bheachd gur e mearachd a th’ ann, ’s urrainn dhut ath-thagradh a chur a-null gun sgioba aig %{instance}. @@ -1606,7 +1627,7 @@ gd: disable: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh ach mairidh a’ phròifil ’s an dàta eile agad. Faodaidh tu lethbhreac-glèidhidh dhen dàta agad iarraidh, roghainnean a’ chunntais atharrachadh no an cunntas agad a sguabadh às. mark_statuses_as_sensitive: Chuir maoir %{instance} comharra na frionasachd ri cuid dhe na postaichean agad. Is ciall dha seo gum feumar gnogag a thoirt air na meadhanan sna postaichean mus faicear ro-shealladh. ’S urrainn dhut fhèin comharra a chur gu bheil meadhan frionasach nuair a sgrìobhas tu post san à ri teachd. sensitive: O seo a-mach, thèid comharra na frionasachd a chur ri faidhle meadhain sam bith a luchdaicheas tu suas agus thèid am falach air cùlaibh rabhaidh a ghabhas briogadh air. - silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus luirg. Gidheadh, faodaidh càch leantainn ort a làimh fhathast." + silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus rùrachaidh. Gidheadh, faodaidh càch leantainn ort a làimh fhathast." suspend: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh agus chan fhaigh thu grèim air a’ phròifil no air an dàta eile agad. ’S urrainn dhut clàradh a-steach fhathast airson lethbhreac-glèidhidh dhen dàta agad iarraidh mur dèid an dàta a thoirt air falbh an ceann 30 latha gu slàn ach cumaidh sinn cuid dhen dàta bhunasach ach nach seachain thu an cur à rèim. reason: 'Adhbhar:' statuses: 'Iomradh air postaichean:' @@ -1645,13 +1666,10 @@ gd: title: Fàilte air bòrd, %{name}! users: follow_limit_reached: Chan urrainn dhut leantainn air còrr is %{limit} daoine - generic_access_help_html: A bheil trioblaid agad le inntrigeadh a’ chunntais agad? ’S urrainn dhut fios a chur gu %{email} airson taic invalid_otp_token: Còd dà-cheumnach mì-dhligheach - invalid_sign_in_token: Còd tèarainteachd mì-dhligheach otp_lost_help_html: Ma chaill thu an t-inntrigeadh dhan dà chuid diubh, ’s urrainn dhut fios a chur gu %{email} seamless_external_login: Rinn thu clàradh a-steach le seirbheis on taobh a-muigh, mar sin chan eil roghainnean an fhacail-fhaire ’s a’ phuist-d ri làimh dhut. signed_in_as: 'Chlàraich thu a-steach mar:' - suspicious_sign_in_confirmation: Tha coltas nach do rinn thu clàradh a-steach on uidheam seo cheana. Air an adhbhar sin, cuiridh sinn còd tèarainteachd dhan t-seòladh puist-d agad ach an dearbhamaid gur e tusa a th’ ann. verification: explanation_html: '’S urrainn dhut dearbhadh gur e seilbheadair nan ceanglaichean ann am meata-dàta na pròifil agad a th’ annad. Airson sin a dhèanamh, feumaidh ceangal air ais dhan phròifil Mastodon a bhith aig an làrach-lìn cheangailte. Feumaidh buadh rel="me" a bhith aig a’ cheangal air ais. Chan eil e gu diofar dè an t-susbaint a tha ann an teacsa a’ cheangail. Seo ball-eisimpleir dhut:' verification: Dearbhadh diff --git a/config/locales/gl.yml b/config/locales/gl.yml index e28d9e018..a183c6436 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -165,6 +165,9 @@ gl: pending: Revisión pendente perform_full_suspension: Suspender previous_strikes: Accións previas + previous_strikes_description_html: + one: Esta conta ten un aviso. + other: Esta conta ten %{count} avisos. promote: Promocionar protocol: Protocolo public: Público @@ -196,7 +199,6 @@ gl: security_measures: only_password: Só contrasinal password_and_2fa: Contrasinal e 2FA - password_and_sign_in_token: Contrasinal e token nun email sensitive: Forzar como sensible sensitized: Marcado como sensible shared_inbox_url: URL da caixa de entrada compartida @@ -482,7 +484,7 @@ gl: other: Se fallan as entregas ao dominio por %{count} días diferentes, non se farán máis intentos a menos que se reciba unha solicitude desde ese dominio. failure_threshold_reached: Acadouse o límite de fallos o %{date}. failures_recorded: - one: Intento fallido por %{count} día. + one: Intento fallido durante %{count} día. other: Intentos fallidos durante %{count} días distintos. no_failures_recorded: Non hai fallos rexistrados. title: Dispoñibilidade @@ -515,6 +517,7 @@ gl: delivery: all: Todo clear: Eliminar erros na entrega + failing: Con fallos restart: Restablecer a entrega stop: Deter a entrega unavailable: Non dispoñible @@ -523,6 +526,9 @@ gl: delivery_error_hint: Se non é posible a entrega durante %{count} días, será automáticamente marcado como non entregable. destroyed_msg: Os datos desde %{domain} están na cola para o borrado inminente. empty: Non se atopan dominios. + known_accounts: + one: "%{count} conta coñecida" + other: "%{count} contas coñecidas" moderation: all: Todo limited: Limitado @@ -592,7 +598,7 @@ gl: action_taken_by: Acción tomada por actions: delete_description_html: As publicacións denunciadas van ser eliminadas e gárdase un aviso para axudarche a xestionar futuras infraccións desta conta. - mark_as_sensitive_description_html: O multimedia das publicacións denunciadas vai ser marcado como sensible e apúntase un aviso para axudarche a facer seguimento das infraccións da mesma conta. + mark_as_sensitive_description_html: Os multimedia das publicacións denunciadas serán marcados como sensibles e engadirase un aviso para axudarche a xestionar futuras infraccións da mesma conta. other_description_html: Mira máis opcións para controlar o comportamento da conta e personalizar as comunicacións coa conta denunciada. resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardan avisos, e a denuncia arquivada. silence_description_html: O perfil será visible só para quen xa o está a seguir ou quen o buscou manualmente, limitando moito o seu alcance. Pódese cambiar. @@ -791,8 +797,12 @@ gl: description_html: Estas son ligazóns que actualmente están sendo compartidas por moitas contas das que o teu servidor recibe publicación. Pode ser de utilidade para as túas usuarias para saber o que acontece polo mundo. Non se mostran ligazóns de xeito público a non ser que autorices a quen as publica. Tamén podes permitir ou rexeitar ligazóns de xeito individual. disallow: Denegar ligazón disallow_provider: Denegar orixe + shared_by_over_week: + one: Compartido por unha persoa na última semana + other: Compartido por %{count} persoas na última semana title: Ligazóns en voga usage_comparison: Compartido %{today} veces hoxe, comparado con %{yesterday} onte + only_allowed: Só as permitidas pending_review: Revisión pendente preview_card_providers: allowed: As ligazóns desta orixe poden estar en voga @@ -830,7 +840,11 @@ gl: trending_rank: 'En voga #%{rank}' usable: Pode ser usado usage_comparison: Utilizado %{today} veces hoxe, comparado coas %{yesterday} de onte + used_by_over_week: + one: Utilizado por unha persoa na última semana + other: Utilizado por %{count} persoas na última semana title: Tendencias + trending: Tendencias warning_presets: add_new: Engadir novo delete: Eliminar @@ -856,7 +870,7 @@ gl: new_report: body: "%{reporter} informou sobre %{target}" body_remote: Alguén desde %{domain} informou sobre %{target} - subject: Novo informe sobre %{instance} (#%{id}) + subject: Nova denuncia sobre %{instance} (#%{id}) new_trends: body: 'Os seguintes elementos precisan revisión antes de ser mostrados públicamente:' new_trending_links: @@ -1225,8 +1239,8 @@ gl: one: Ademáis, ten unha nova seguidora desde entón! Ben! other: Ademáis, obtivo %{count} novas seguidoras desde entón! Tremendo! subject: - one: "1 nova notificación desde a súa última visita \U0001F418" - other: "%{count} novas notificacións desde a súa última visita \U0001F418" + one: "1 nova notificación desde a última visita 🐘" + other: "%{count} novas notificacións desde a última visita 🐘" title: Na súa ausencia... favourite: body: 'A túa publicación foi marcada como favorita por %{name}:' @@ -1496,7 +1510,7 @@ gl: min_reblogs_hint: Non elimina ningunha das túas publicacións se foron promovidas máis deste número de veces. Deixa en branco para eliminar publicacións independentemente do seu número de promocións stream_entries: pinned: Publicación fixada - reblogged: promovido + reblogged: promoveu sensitive_content: Contido sensible tags: does_not_match_previous_name: non concorda co nome anterior @@ -1621,12 +1635,13 @@ gl: explanation: Solicitaches os datos completos da túa conta de Mastodon. Xa está preparados para descargar! subject: O teu ficheiro xa está preparado para descargar title: Leve o ficheiro - sign_in_token: - details: 'Detalles sobre o intento:' - explanation: 'Detectamos un intento de acceso coa túa conta desde un enderezo IP descoñecido. Se es ti, escribe o código de seguridade inferior na páxina de desafío de conexión:' - further_actions: 'Se non foches ti, cambia agora o contrasinal e activa o segundo factor de autenticación para a túa conta. Pódelo facer aquí:' - subject: Por favor confirma o intento de conexión - title: Intento de conexión + suspicious_sign_in: + change_password: cambia o teu contrasinal + details: 'Estos son os detalles do acceso:' + explanation: Detectamos que accedeches á conta desde un novo enderezo IP. + further_actions_html: Se non foches ti, recomendámosche %{action} inmediatamente e activa o segundo factor de autenticación para manter conta segura. + subject: Accedeuse á túa conta desde novos enderezos IP + title: Novo acceso warning: appeal: Enviar unha apelación appeal_description: Se cres que esto é un erro, podes enviar un recurso á administración de %{instance}. @@ -1677,13 +1692,10 @@ gl: title: Benvida, %{name}! users: follow_limit_reached: Non pode seguir a máis de %{limit} persoas - generic_access_help_html: Problemas para acceder a conta? Podes contactar con %{email} para obter axuda invalid_otp_token: O código do segundo factor non é válido - invalid_sign_in_token: Código de seguridade non válido otp_lost_help_html: Se perdes o acceso a ambos, podes contactar con %{email} seamless_external_login: Accedeches a través dun servizo externo, polo que os axustes de contrasinal e correo-e non están dispoñibles. signed_in_as: 'Rexistrada como:' - suspicious_sign_in_confirmation: Semella que non entraches antes usando este dispositivo, así que ímosche enviar un código de seguridade ao teu enderezo de email para confirmar que es ti. verification: explanation_html: 'Podes validarte a ti mesma como a dona das ligazóns nos metadatos do teu perfil. Para esto, o sitio web ligado debe conter unha ligazón de retorno ao perfil de Mastodon. Esta ligazón de retorno ten que ter un atributo rel="me". O texto da ligazón non importa. Aquí tes un exemplo:' verification: Validación diff --git a/config/locales/he.yml b/config/locales/he.yml index 97138fffa..d20fec3f7 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -121,6 +121,8 @@ he: reject_media_hint: מסירה קבצי מדיה השמורים מקומית ומונעת מהורדת קבצים נוספים בעתיד. לא רלוונטי להשעיות undo: ביטול instances: + delivery: + failing: נכשל title: שרתים מוכרים report_notes: today_at: היום, ב%{time} diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 2e6af8cda..dd3b99dcc 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -267,7 +267,6 @@ hr: tips: Savjeti users: invalid_otp_token: Nevažeći dvo-faktorski kôd - invalid_sign_in_token: Nevažeći sigurnosni kôd signed_in_as: 'Prijavljeni kao:' verification: verification: Verifikacija diff --git a/config/locales/hu.yml b/config/locales/hu.yml index abe5baf48..0a1fd439c 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -201,7 +201,6 @@ hu: security_measures: only_password: Csak jelszó password_and_2fa: Jelszó és kétlépcsős hitelesítés - password_and_sign_in_token: Jelszó és e-mail token sensitive: Kényes sensitized: kényesnek jelölve shared_inbox_url: Megosztott bejövő üzenetek URL @@ -520,6 +519,7 @@ hu: delivery: all: Mind clear: Kézbesítési hibák törlése + failing: Sikertelen restart: Kézbesítés újraindítása stop: Kézbesítés leállítása unavailable: Nem elérhető @@ -804,6 +804,7 @@ hu: other: "%{count} ember osztotta meg a múlt héten" title: Felkapott hivatkozások usage_comparison: "%{today} alkalommal lett ma megosztva, a tegnapi %{yesterday} alkalomhoz képest" + only_allowed: Csak engedélyezett pending_review: Áttekintésre vár preview_card_providers: allowed: A közzétevő hivatkozásai felkapottak lehetnek @@ -845,6 +846,7 @@ hu: one: Egy ember használta a múlt héten other: "%{count} ember használta a múlt héten" title: Trendek + trending: Felkapott warning_presets: add_new: Új hozzáadása delete: Törlés @@ -1239,8 +1241,8 @@ hu: one: Sőt, egy új követőd is lett, amióta nem jártál itt. Hurrá! other: Sőt, %{count} új követőd is lett, amióta nem jártál itt. Hihetetlen! subject: - one: "Egy új értesítésed érkezett legutóbbi látogatásod óta \U0001F418" - other: "%{count} új értesítésed érkezett legutóbbi látogatásod óta \U0001F418" + one: "1 új értesítés az utolsó látogatásod óta 🐘" + other: "%{count} új értesítés az utolsó látogatásod óta 🐘" title: Amíg távol voltál… favourite: body: 'A bejegyzésedet kedvencnek jelölte %{name}:' @@ -1635,12 +1637,13 @@ hu: explanation: A Mastodon fiókod teljes mentését kérted. A mentés kész ás letölthető! subject: Az adataidról készült archív letöltésre kész title: Archiválás - sign_in_token: - details: 'Itt vannak a kísérlet részletei:' - explanation: 'Fiókodba történő belépési kísérletet fogtunk ismeretlen IP címről. Ha te vagy az, kérlek az alábbi biztonsági kódot írd be a bejelentkező oldal ezt kérő részén:' - further_actions: 'Ha nem te voltál, változtasd meg a jelszavadat és engedélyezd a két-faktoros azonosítást a fiókodban. Itt megteheted:' - subject: Erősítsd meg a megkísérelt belépést - title: Belépési kísérlet + suspicious_sign_in: + change_password: módosítsd a jelszavad + details: 'Itt vannak a bejelentkezés részletei:' + explanation: Egy új IP-címről történő bejelentkezést észleltünk. + further_actions_html: Ha nem te voltál, akkor azt javasoljuk, hogy azonnal %{action} és engedélyezd a kétlépcsős hitelesítést, hogy biztonságban tudd a fiókodat. + subject: A fiókodat egy új IP-címről érték el + title: Új bejelentkezés warning: appeal: Fellebbezés beküldése appeal_description: Ha azt gondolod, hogy ez hibás, beküldhetsz egy fellebbezést a(z) %{instance} szerver csapatának. @@ -1691,13 +1694,10 @@ hu: title: Üdv a fedélzeten, %{name}! users: follow_limit_reached: Nem követhetsz több, mint %{limit} embert - generic_access_help_html: Nem tudod elérni a fiókodat? Segítségért lépj kapcsolatba velünk ezen %{email} invalid_otp_token: Érvénytelen ellenőrző kód - invalid_sign_in_token: Érvénytelen biztonsági kód otp_lost_help_html: Ha mindkettőt elvesztetted, kérhetsz segítséget itt %{email} seamless_external_login: Külső szolgáltatáson keresztül jelentkeztél be, így a jelszó és e-mail beállítások nem elérhetőek. signed_in_as: Bejelentkezve mint - suspicious_sign_in_confirmation: Úgy tűnik, erről az eszközről még sosem léptél be és egy ideje már nem láttunk, ezért egy biztonsági kódot küldünk az email címedre, hogy megerősítsd, tényleg te vagy az. verification: explanation_html: 'A profilodon hitelesítheted magad, mint az itt található linkek tulajdonosa. Ehhez a linkelt weboldalnak tartalmaznia kell egy linket vissza a Mastodon profilodra. Ennek tartalmaznia kell a rel="me" attribútumot. A link szövege bármi lehet. Itt egy példa:' verification: Hitelesítés diff --git a/config/locales/hy.yml b/config/locales/hy.yml index e7d8bd414..b12349596 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -8,7 +8,7 @@ hy: active_footnote: Ամսեկան ակտիւ օգտատէրեր (MAU) administered_by: Ադմինիստրատոր՝ api: API - apps: Բջջային հավելվածներ + apps: Բջջային յաւելուածներ apps_platforms: Մաստադոնը հասանելի է iOS, Android եւ այլ տարբեր հենքերում browse_directory: Պրպտիր օգտատէրերի շտեմարանը եւ գտիր հետաքրքիր մարդկանց browse_local_posts: Տես այս հանգոյցի հանրային գրառումների հոսքը @@ -18,8 +18,8 @@ hy: contact_unavailable: Ոչինչ չկա discover_users: Գտնել օգտատերներ documentation: Փաստաթղթեր - federation_hint_html: "«%{instance}»-ում հաշիւ բացելով դու կը կարողանաք հետեւել մարդկանց Մաստադոնի ցանկացած հանգոյցից և ոչ միայն։" - get_apps: Փորձեք բջջային հավելվածը + federation_hint_html: "«%{instance}»-ում հաշիւ բացելով դու կը կարողանաս հետեւել մարդկանց Մաստոդոնի ցանկացած հանգոյցից և ոչ միայն։" + get_apps: Փորձէք բջջային յաւելուածը hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n" learn_more: Իմանալ ավելին @@ -30,9 +30,9 @@ hy: server_stats: Սերվերի վիճակը․ source_code: Ելատեքստ status_count_after: - one: ստատուս + one: գրառում other: ստատուս - status_count_before: Ովքեր գրել են՝ + status_count_before: Որոնք արել են՝ tagline: Հետեւիր ընկերներիդ եւ գտիր նորերին terms: Ծառայութեան պայմանները unavailable_content: Մոդերացուող սպասարկիչներ @@ -47,7 +47,7 @@ hy: suspended_title: Կասեցուած սպասարկիչներ unavailable_content_html: Մաստոդոնն ընդհանրապէս թոյլատրում է տեսնել բովանդակութիւնը եւ շփուել այլ դաշնեզերքի այլ հանգոյցների հետ։ Սրանք բացառութիւններն են, որոնք կիրառուել են հէնց այս հանգոյցի համար։ user_count_after: - one: օգտատեր + one: օգտատէր other: օգտատերեր user_count_before: Այստեղ են what_is_mastodon: Ի՞նչ է Մաստոդոնը @@ -57,9 +57,9 @@ hy: featured_tags_hint: Դու կարող ես ցուցադրել յատուկ պիտակներ, որոնք կը ցուցադրուեն այստեղ։ follow: Հետևել followers: - one: Հետևորդ + one: Հետեւորդ other: Հետևորդներ - following: Հետևում եք + following: Հետեւած instance_actor_flash: Այս հաշիւը վիրտուալ դերասան է, որը ներկայացնում է հանգոյցը, եւ ոչ որեւէ անհատ օգտատիրոջ։ Այն օգտագործուում է ֆեդերացիայի նպատակներով եւ չպէտք է կասեցուի։ joined: Միացել են %{date} last_active: վերջին այցը @@ -187,7 +187,6 @@ hy: security_measures: only_password: Միայն ծածկագիր password_and_2fa: Ծածկագիր եւ 2FA - password_and_sign_in_token: ծածկագիր եւ էլ. նամակով բանալի sensitive: Զգայուն sensitized: նշուեց որպէս դիւրազգաց shared_inbox_url: Ընդհանուր մուտքային URL @@ -311,9 +310,12 @@ hy: updated_msg: Էմոջին թարմացուեց upload: Վերբեռնել dashboard: + active_users: ակտիւ օգտատէրեր + new_users: նոր օգտուողներ software: Ծրագրային ապահովում space: Տարածքի օգտագործում title: Գործիքների վահանակ + website: Կայք domain_allows: add_new: Թոյլատրել ֆեդերացիա տիրոյթի հետ created_msg: Տիրոյթը յաջողութեամբ թոյլատրուեց ֆեդերացուելու @@ -349,6 +351,7 @@ hy: follow_recommendations: language: Լեզուի համար status: Կարգավիճակ + title: Խորհուրդ ենք տալիս հետեւել instances: back_to_all: Բոլորը back_to_limited: Սահամանփակ @@ -404,6 +407,8 @@ hy: save_and_enable: Պահպանել եւ միացնել status: Կարգավիճակ title: Վերահեռարձակիչներ + report_notes: + today_at: Այսօր ժամը %{time}-ին reports: account: notes: @@ -416,8 +421,10 @@ hy: comment: none: Ոչ մի created_at: Բողոքարկուած + delete_and_resolve: Ջնջեք գրառումը mark_as_resolved: Նշել որպէս լուծուած mark_as_unresolved: Նշել որպէս չլուծուած + no_one_assigned: Ոչ ոք notes: create: Ավելացնել նշում delete: Ջնջել @@ -431,6 +438,7 @@ hy: unassign: Չնշանակել unresolved: Չլուծուած updated_at: Թարմացուած + view_profile: Նայել անձնական էջը rules: add_new: Աւելացնել կանոն delete: Ջնջել @@ -489,6 +497,8 @@ hy: destroyed_msg: Կայքի վերբեռնումը բարեյաջող ջնջուեց statuses: back_to_account: Վերադառնալ անձնական էջ + batch: + report: Բողոքել deleted: Ջնջված է media: title: Մեդիա @@ -497,12 +507,33 @@ hy: tags: review: Վերանայել գրառումը title: Ադմինիստարցիա + trends: + allow: Թոյլատրել + approved: Հաստատուած + disallow: Արգելուած + preview_card_providers: + title: Հրապարակողներ + rejected: Մերժուած + statuses: + disallow: Արգելել գրառումը + disallow_account: Արգելել հեղինակին + title: Թրենդային գրառումներ + tags: + listable: Կարող է առաջարկուել + not_listable: Չի կարող առաջարկուել + not_usable: Չի կարող օգտագործուել + title: Թրենդային պիտակներ + usable: Կարող է օգտագործուել + title: Թրենդներ warning_presets: add_new: Ավելացնել նորը delete: Ջնջել admin_mailer: new_report: subject: Նոր բողոք %{instance}ի համար(#%{id}) + new_trends: + new_trending_statuses: + title: Թրենդային գրառումներ appearance: advanced_web_interface: Սյունակավոր ինտերֆեյս advanced_web_interface_hint: Եթէ ցանկանում ես օգտագործել էկրանիդ ամբողջ լայնքը, ապա ընդլայնուած վեբ ինտերֆեյսով հնարաւոր է էկրանը բաժանել սիւնակների՝ զուգահեռ տեսնելու տարբեր տիպի ինֆորմացիա՝ տեղական հոսքը, ծանուցումները, ֆեդերացված հոսքը, և ցանկացած թվի ցուցակ ու հեշթեգ։ @@ -549,6 +580,7 @@ hy: account_status: Հաշուի կարգավիճակ pending: Դիմումը պէտք է քննուի մեր անձնակազմի կողմից, ինչը կարող է մի փոքր ժամանակ խլել։ Դիմումի հաստատուելու դէպքում, կտեղեկացնենք նամակով։ trouble_logging_in: Մուտք գործելու խնդիրնե՞ր կան։ + use_security_key: Օգտագործել անվտանգութեան բանալի authorize_follow: already_following: Դու արդէն հետեւում ես այս հաշուին already_requested: Դու արդէն ուղարկել ես հետեւմանն յայտ այս հաշուին @@ -653,8 +685,10 @@ hy: changes_saved_msg: Փոփոխութիւնները յաջող պահուած են copy: Պատճենել delete: Ջնջել + none: Ոչ մի order_by: Դասաւորել ըստ save_changes: Պահպանել փոփոխութիւնները + today: այսօր imports: errors: over_rows_processing_limit: տողերի քանակը աւելին է քան %{count}-ը @@ -705,6 +739,7 @@ hy: past_migrations: Նախոդ միգրացիաները proceed_with_move: Տեղափոխել հետեւորդներին redirecting_to: Քո հաշիւը վերահասցեաորում է %{acct}-ին + set_redirect: Կարգաւորել վերահասցէաւորումը warning: followers: Այս քայլով քո բոլոր հետեւորդներին այս հաշուից կը տեղափոխես դէպի նորը only_redirect_html: Որպէս այլընտրանք, կարող ես ուղղակի վերահասցէաւորել քո հաշիւը @@ -712,8 +747,12 @@ hy: moderation: title: Մոդերացիա notification_mailer: + admin: + sign_up: + subject: "%{name}-ը գրանցուած է" digest: action: Դիտել բոլոր ծանուցումները + mention: "%{name} նշել է քեզ՝" title: Երբ բացակայ էիր... favourite: body: Քո գրառումը հաւանել է %{name}-ը։ @@ -738,6 +777,8 @@ hy: title: Նոր տարածում status: subject: "%{name}-ը հենց նոր գրառում արեց" + update: + subject: "%{name}-ը փոխել է գրառումը" notifications: email_events_hint: Ընտրիր իրադարձութիւնները, որոնց վերաբերեալ ցանկանում ես ստանալ ծանուցումներ․ other_settings: Ծանուցումների այլ կարգաւորումներ @@ -869,6 +910,7 @@ hy: one: "%{count} վիդեո" other: "%{count} վիդեո" content_warning: Նախազգուշացում։ %{warning} + edited_at_html: Խմբագրուած՝ %{date} open_in_web: Բացել վէբում over_character_limit: "%{max} նիշի սահմանը գերազանցուած է" poll: @@ -901,7 +943,7 @@ hy: '2629746': 1 ամիս '31556952': 1 տարի '5259492': 2 ամիս - '604800': 1 week + '604800': 1 շաբաթ '63113904': 2 տարի '7889238': 3 ամիս stream_entries: @@ -1001,6 +1043,7 @@ hy: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Ավելացնել disable: Անջատել @@ -1011,18 +1054,22 @@ hy: generate_recovery_codes: Ստեղծել վերականգնման կոդեր lost_recovery_codes: Վերականգնման կոդերը հնարաւորութիւն են տալիս մուտք գործել հաշիւ՝ հեռախօսի կորստի դէպքում։ Եթէ կորցրել ես վերականգնման կոդերը, այստեղ կարող ես ստեղծել նորերը։ Նախկին վերականգման կոդերը կչեղարկվեն։ methods: Երկքայլ նոյնականացում տարբերակներ - otp: Նոյնականացման հավելված + otp: Նոյնականացման յաւելուած recovery_codes: Վերականգնման կոդեր recovery_codes_regenerated: Վերականգման կոդերը հաջողութեամբ ստեղծուել են webauthn: Անվտանգութեան բանալիներ user_mailer: - sign_in_token: - title: Մուտքի փորձ + suspicious_sign_in: + title: Նոր մուտք warning: + categories: + spam: Սպամ + reason: Պատճառ՝ subject: disable: Քո %{acct} հաշիւը սառեցուել է none: Նախազգուշացուեմ %{acct}-ին title: + delete_statuses: Գրառումները ջնջուած են disable: Հաշիւը սառեցուած է none: Զգուշացում silence: Հաշիւը սահմանափակուած է @@ -1033,14 +1080,13 @@ hy: final_step: 'Սկսիր գրել։ Անգամ առանց հետեւորդների քո հանրային գրառումներ կարող են երևալ ուրիշների մօտ, օրինակ՝ տեղական հոսում կամ հեշթեգերում։ Թէ ցանկանաս, կարող ես յայտնել քո մասին օգտագործելով #եսնորեկեմ հեշթեգը։' review_preferences_action: Փոփոխել կարգաւորումները subject: Բարի գալուստ Մաստոդոն - tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատերերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։ + tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատէրերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։ tip_following: Դու հետեւում էս քո հանգոյցի ադմին(ներ)ին լռելայն։ Այլ հետաքրքիր անձանց գտնելու համար՝ թերթիր տեղական և դաշնային հոսքերը։ - tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի օգտատերի գրառումները։ Նրանք քո հանգոյցի հարևաններն են։ + tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի մարդկանց գրառումները։ Նրանք քո հանգոյցի հարևաններն են։ tips: Հուշումներ title: Բարի գալուստ նաւամատոյց, %{name} users: invalid_otp_token: Անվաւեր 2F կոդ - invalid_sign_in_token: Անվաւեր անվտանգութեան կոդ signed_in_as: Մոտք գործել որպէս․ verification: explanation_html: Պիտակների յղումների հեղինակութիւնը կարելի է վաւերացնել։ Անհրաժեշտ է որ յղուած կայքը պարունակի յետադարձ յղում ձեր մաստադոնի էջին, որը պէտք է ունենայ rel="me" նիշքը։ Յղման բովանդակութիւնը կարևոր չէ։ Օրինակ՝ diff --git a/config/locales/id.yml b/config/locales/id.yml index ccb71ebdd..d6d00581e 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -192,7 +192,6 @@ id: security_measures: only_password: Hanya kata sandi password_and_2fa: Kata sandi dan 2FA - password_and_sign_in_token: Kata sandi dan token email sensitive: Sensitif sensitized: ditandai sebagai sensitif shared_inbox_url: URL kotak masuk bersama @@ -504,6 +503,7 @@ id: delivery: all: Semua clear: Hapus galat pengiriman + failing: Gagal restart: Mulai ulang pengiriman stop: Setop pengiriman unavailable: Tidak tersedia @@ -785,6 +785,7 @@ id: other: Dibagikan oleh %{count} orang selama seminggu terakhir title: Tautan sedang tren usage_comparison: Dibagikan %{today} kali hari ini, dibandingkan %{yesterday} kemarin + only_allowed: Yang diizinkan saja pending_review: Tinjauan tertunda preview_card_providers: allowed: Tautan dari penerbit ini dapat menjadi tren @@ -824,6 +825,7 @@ id: used_by_over_week: other: Digunakan oleh %{count} orang selama seminggu terakhir title: Tren + trending: Sedang tren warning_presets: add_new: Tambah baru delete: Hapus @@ -1215,7 +1217,7 @@ id: new_followers_summary: other: Anda mendapatkan %{count} pengikut baru! Luar biasa! subject: - other: "%{count} notifikasi baru sejak kunjungan terakhir anda pada \U0001F418" + other: "%{count} notifikasi baru sejak kunjungan Anda terakhir 🐘" title: Saat Anda tidak muncul... favourite: body: 'Status anda disukai oleh %{name}:' @@ -1604,12 +1606,13 @@ id: explanation: Cadangan penuh akun Mastodon Anda sudah dapat diunduh! subject: Arsip Anda sudah siap diunduh title: Ambil arsip - sign_in_token: - details: 'Ini dia rincian usaha masuk akun:' - explanation: 'Kami mendeteksi usaha masuk ke akun Anda dari alamat IP tak dikenal. Jika ini Anda, mohon masukkan kode keamanan di bawah pada halaman masuk:' - further_actions: 'Jika ini bukan Anda, mohon ganti kata sandi dan aktifkan autentikasi dua-faktor pada akun Anda. Anda bisa melakukannya di sini:' - subject: Harap konfirmasi usaha masuk akun - title: Usaha masuk akun + suspicious_sign_in: + change_password: mengubah kata sandi Anda + details: 'Ini rincian masuk akun Anda:' + explanation: Kami mendeteksi masuk akun Anda dari alamat IP baru. + further_actions_html: Jika ini bukan Anda, kami menyarankan Anda untuk melakukan %{action} langsung dan mengaktifkan otentikasi dua-faktor untuk mengamankan akun Anda. + subject: Akun Anda telah diakses dari alamat IP baru + title: Masuk akun baru warning: appeal: Ajukan banding appeal_description: Jika Anda yakin ini galat, Anda dapat mengajukan banding ke staf %{instance}. @@ -1660,13 +1663,10 @@ id: title: Selamat datang, %{name}! users: follow_limit_reached: Anda tidak dapat mengikuti lebih dari %{limit} orang - generic_access_help_html: Mengalami masalah saat akses akun? Anda mungkin perlu menghubungi %{email} untuk mencari bantuan invalid_otp_token: Kode dua faktor tidak cocok - invalid_sign_in_token: Kode keamanan tidak valid otp_lost_help_html: Jika Anda kehilangan akses keduanya, Anda dapat menghubungi %{email} seamless_external_login: Anda masuk via layanan eksternal, sehingga pengaturan kata sandi dan email tidak tersedia. signed_in_as: 'Masuk sebagai:' - suspicious_sign_in_confirmation: Anda terlihat belum pernah masuk dari perangkat ini, dan sudah lama Anda tidak masuk akun, sehingga kami mengirim kode keamanan ke alamat email Anda untuk mengonfirmasi bahwa ini adalah Anda. verification: explanation_html: 'Anda dapat memverifikasi diri Anda sebagai pemiliki tautan pada metadata profil. Situsweb yang ditautkan haruslah berisi tautan ke profil Mastodon Anda. Tautan tersebut harus memiliki atribut rel="me". Isi teks tautan tidaklah penting. Ini contohnya:' verification: Verifikasi diff --git a/config/locales/io.yml b/config/locales/io.yml index 4360d804e..b6f7937c3 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -45,6 +45,9 @@ io: title: Extended site description site_title: Site title title: Site Settings + trends: + only_allowed: Nur permisato + trending: Tendenco application_mailer: settings: 'Chanjar la retpost-mesajala preferi: %{link}' view: 'Vidar:' @@ -101,9 +104,6 @@ io: new_followers_summary: one: Tu obtenis nova sequanto! Yey! other: Tu obtenis %{count} nova sequanti! Astonive! - subject: - one: "1 nova savigo depos tua lasta vizito \U0001F418" - other: "%{count} nova savigi depos tua lasta vizito \U0001F418" favourite: body: "%{name} favoris tua mesajo:" subject: "%{name} favoris tua mesajo" diff --git a/config/locales/is.yml b/config/locales/is.yml index 910ae0b79..3e3ca0ed5 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -199,7 +199,6 @@ is: security_measures: only_password: Aðeins lykilorð password_and_2fa: Lykilorð og 2-þátta auðkenning - password_and_sign_in_token: Lykilorð og teikn í tölvupósti sensitive: Viðkvæmt sensitized: merkt sem viðkvæmt shared_inbox_url: Slóð á sameiginlegt innhólf @@ -518,6 +517,7 @@ is: delivery: all: Allt clear: Hreinsa afhendingarvillur + failing: Mistekst restart: Endurræsa afhendingu stop: Stöðva afhendingu unavailable: Ekki tiltækt @@ -802,6 +802,7 @@ is: other: Deilt af %{count} aðilum síðustu vikuna title: Vinsælir tenglar usage_comparison: Deilt %{today} sinnum í dag, samanborið við %{yesterday} í gær + only_allowed: Aðeins leyfð pending_review: Bíður eftir yfirlestri preview_card_providers: allowed: Tenglar frá þessum útgefanda geta verið með í vinsældum @@ -843,6 +844,7 @@ is: one: Notað af einum aðila síðustu vikuna other: Notað af %{count} aðilum síðustu vikuna title: Tilhneiging + trending: Vinsælt warning_presets: add_new: Bæta við nýju delete: Eyða @@ -1237,8 +1239,8 @@ is: one: Að auki, þú hefur fengið einn nýjan fylgjanda á meðan þú varst fjarverandi! Húh! other: Að auki, þú hefur fengið %{count} nýja fylgjendur á meðan þú varst fjarverandi! Frábært! subject: - one: "1 ný tilkynning síðan þú leist inn síðast \U0001F418" - other: "%{count} nýjar tilkynningar síðan þú leist inn síðast \U0001F418" + one: "1 ný tilkynning síðan þú leist inn síðast 🐘" + other: "%{count} nýjar tilkynningar síðan þú leist inn síðast 🐘" title: Á meðan þú varst fjarverandi... favourite: body: 'Færslan þín var sett í eftirlæti af %{name}:' @@ -1633,12 +1635,13 @@ is: explanation: Þú baðst um fullt öryggisafrit af Mastodon notandaaðgangnum þínum. Það er núna tilbúið til niðurhals! subject: Safnskráin þín er tilbúin til niðurhals title: Taka út í safnskrá - sign_in_token: - details: 'Hér eru nánari upplýsingar um atvikið:' - explanation: 'Við sjáum að reynt hefur verið að skrá sig inn á aðganginn þinn frá óþekktu IP-vistfangi. Ef það varst þú, skaltu setja inn öryggiskóðann neðst á staðfestingarsíðu innskráningar:' - further_actions: 'Ef þetta varst ekki þú, skaltu endilega skipta um lykilorð og virkja tveggja-þrepa auðkenningu fyrir aðganginn þinn. Þú getur gert það hér:' - subject: Endilega staðfestu tilraun til innskráningar - title: Tilraun til innskráningar + suspicious_sign_in: + change_password: breytir lykilorðinu þínu + details: 'Hér eru nánari upplýsingar um innskráninguna:' + explanation: Við greindum innskráningu inn á aðganginn þinn frá nýju IP-vistfangi. + further_actions_html: Ef þetta varst ekki þú, þá mælum við með að þú %{action} strax og virkjir tveggja-þátta auðkenningu til að halda aðgangnum þínum öruggum. + subject: Skráð hefur verið inn á aðganginn þinn frá nýju IP-vistfangi + title: Ný innskráning warning: appeal: Ssenda inn áfrýjun appeal_description: Ef þú álítur að um mistök sé að ræða, geturðu sent áfrýjun til umsjónarmanna %{instance}. @@ -1689,13 +1692,10 @@ is: title: Velkomin/n um borð, %{name}! users: follow_limit_reached: Þú getur ekki fylgst með fleiri en %{limit} aðilum - generic_access_help_html: Vandamál við að tengjast aðgangnum þínum? Þú getur sett þig í samband við %{email} til að fá aðstoð invalid_otp_token: Ógildur tveggja-þátta kóði - invalid_sign_in_token: Ógildur öryggiskóði otp_lost_help_html: Ef þú hefur misst aðganginn að hvoru tveggja, geturðu sett þig í samband við %{email} seamless_external_login: Innskráning þín er í gegnum utanaðkomandi þjónustu, þannig að stillingar fyrir lykilorð og tölvupóst eru ekki aðgengilegar. signed_in_as: 'Skráð inn sem:' - suspicious_sign_in_confirmation: Það virðist sem þú hafir ekki skráð þig inn af þessu tæki áður og að nokkur tími sé liðinn frá því þú hefur skráð þig inn, þannig að við erum að senda þér öryggiskóða á tölvupóstfangið þitt til að staðfesta að þetta sért þú. verification: explanation_html: 'Þú getur vottað að þú sért eigandi og ábyrgur fyrir tenglunum í lýsigögnum notandasniðsins þíns. Til að það virki, þurfa vefsvæðin sem vísað er í að innihalda tengil til baka í Mastodon-notandasniðið. Tengillinn sem vísar til baka verður að vera með rel="me" eigindi. Textinn í tenglinum skiptir ekki máli. Hérna er dæmi:' verification: Sannprófun diff --git a/config/locales/it.yml b/config/locales/it.yml index 92cd18d1a..c0e802f84 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -27,7 +27,7 @@ it: È utilizzato per scopi di federazione e non dovrebbe essere bloccato a meno che non si voglia bloccare l'intera istanza: in questo caso si dovrebbe utilizzare un blocco di dominio. learn_more: Scopri altro logged_in_as_html: Sei correntemente connesso come %{username}. - logout_before_registering: Hai giù acceduto. + logout_before_registering: Hai già effettuato l'accesso. privacy_policy: Politica della privacy rules: Regole del server rules_html: 'Di seguito è riportato un riassunto delle regole che devi seguire se vuoi avere un account su questo server di Mastodon:' @@ -199,7 +199,6 @@ it: security_measures: only_password: Solo password password_and_2fa: Password e autenticazione a due fattori - password_and_sign_in_token: Password e codice via email sensitive: Sensibile sensitized: contrassegnato come sensibile shared_inbox_url: URL Inbox Condiviso @@ -518,6 +517,7 @@ it: delivery: all: Tutto clear: Cancella errori di consegna + failing: Con errori restart: Riavvia la consegna stop: Interrompi consegna unavailable: Non disponibile @@ -598,7 +598,7 @@ it: action_taken_by: Azione intrapresa da actions: delete_description_html: I post segnalati saranno eliminati e la violazione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. - mark_as_sensitive_description_html: I media nei post segnalati saranno segnati come sensibili e la violazione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. + mark_as_sensitive_description_html: I contenuti nei post segnalati saranno segnati come sensibili e verrà registrata una violazione per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. other_description_html: Vedi altre opzioni per controllare il comportamento dell'account e personalizzare la comunicazione all'account segnalato. resolve_description_html: Nessuna azione sarà intrapresa contro l'account segnalato, nessuna violazione registrata, e la segnalazione sarà chiusa. silence_description_html: Il profilo sarà visibile solo a coloro che lo seguono o lo cercano manualmente, limitandone fortemente la raggiungibilità. Può sempre essere annullato. @@ -896,7 +896,7 @@ it: advanced_web_interface_hint: |- Se vuoi utilizzare l'intera larghezza dello schermo, l'interfaccia web avanzata ti consente di configurare varie colonne per mostrare più informazioni allo stesso tempo, secondo le tue preferenze: Home, notifiche, timeline federata, qualsiasi numero di liste e etichette. - animations_and_accessibility: Animazioni e accessibiiltà + animations_and_accessibility: Animazioni e accessibilità confirmation_dialogs: Dialoghi di conferma discovery: Scoperta localization: @@ -1239,8 +1239,8 @@ it: one: E inoltre hai ricevuto un nuovo seguace mentre eri assente! Urrà! other: Inoltre, hai acquisito %{count} nuovi seguaci mentre eri assente! Incredibile! subject: - one: "1 nuova notifica dalla tua ultima visita \U0001F418" - other: "%{count} nuove notifiche dalla tua ultima visita \U0001F418" + one: "1 nuova notifica dalla tua ultima visita 🐘" + other: "%{count} nuove notifiche dalla tua ultima visita 🐘" title: In tua assenza… favourite: body: 'Il tuo status è stato apprezzato da %{name}:' @@ -1638,12 +1638,13 @@ it: explanation: Hai richiesto un backup completo del tuo account Mastodon. È pronto per essere scaricato! subject: Il tuo archivio è pronto per essere scaricato title: Esportazione archivio - sign_in_token: - details: 'Questi sono i dettagli del tentativo:' - explanation: 'Abbiamo rilevato un tentativo di accedere al tuo account da un indirizzo IP non riconosciuto. Se sei tu, inserisci il codice di sicurezza qui sotto nella pagina di controllo dell''accesso:' - further_actions: 'Se non sei stato tu, cambia la password e abilita l''autenticazione a due fattori sul tuo account. Puoi farlo qui:' - subject: Conferma il tentativo di accesso - title: Tentativo di accesso + suspicious_sign_in: + change_password: cambia la tua password + details: 'Questi sono i dettagli del tentativo di accesso:' + explanation: Abbiamo rilevato un accesso al tuo account da un nuovo indirizzo IP. + further_actions_html: Se non eri tu, ti consigliamo di %{action} subito e di abilitare l'autenticazione a due fattori per mantenere il tuo account al sicuro. + subject: C'è stato un accesso al tuo account da un nuovo indirizzo IP + title: Un nuovo accesso warning: appeal: Presenta un appello appeal_description: Se credi che si tratti di un errore, puoi presentare un appello allo staff di %{instance}. @@ -1694,13 +1695,10 @@ it: title: Benvenuto a bordo, %{name}! users: follow_limit_reached: Non puoi seguire più di %{limit} persone - generic_access_help_html: Problemi nell'accesso al tuo account? Puoi contattare %{email} per assistenza invalid_otp_token: Codice d'accesso non valido - invalid_sign_in_token: Codice di sicurezza non valido otp_lost_help_html: Se perdessi l'accesso ad entrambi, puoi entrare in contatto con %{email} seamless_external_login: Hai effettuato l'accesso tramite un servizio esterno, quindi le impostazioni di password e e-mail non sono disponibili. signed_in_as: 'Hai effettuato l''accesso come:' - suspicious_sign_in_confirmation: Sembra che tu non abbia effettuato l'accesso da questo dispositivo prima d'ora, e non hai effettuato l'accesso per un po', quindi inviamo un codice di sicurezza al tuo indirizzo e-mail per confermare che sei proprio tu. verification: explanation_html: 'Puoi certificare te stesso come proprietario dei link nei metadati del tuo profilo. Per farlo, il sito a cui punta il link deve contenere un link che punta al tuo profilo Mastodon. Il link di ritorno deve avere l''attributo rel="me". Il testo del link non ha importanza. Ecco un esempio:' verification: Verifica diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 84559e499..13b1b149f 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -2,7 +2,7 @@ ja: about: about_hashtag_html: ハッシュタグ #%{hashtag} の公開投稿です。どこか連合に参加しているSNS上にアカウントを作れば、会話に参加することができます。 - about_mastodon_html: Mastodon は、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 + about_mastodon_html: Mastodonは、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 about_this: 詳細情報 active_count_after: 人がアクティブ active_footnote: 月間アクティブユーザー数 (MAU) @@ -19,12 +19,12 @@ ja: continue_to_web: アプリで続ける discover_users: ユーザーを見つける documentation: ドキュメント - federation_hint_html: "%{instance} のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。" + federation_hint_html: "%{instance}のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。" get_apps: モバイルアプリを試す hosted_on: Mastodon hosted on %{domain} instance_actor_flash: "このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。 \n" learn_more: もっと詳しく - logged_in_as_html: "%{username} としてログインしています。" + logged_in_as_html: "%{username}としてログインしています。" logout_before_registering: 既にログインしています。 privacy_policy: プライバシーポリシー rules: サーバーのルール @@ -47,13 +47,13 @@ ja: silenced_title: サイレンス済みのサーバー suspended: 'これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません:' suspended_title: 停止済みのサーバー - unavailable_content_html: 通常 Mastodon では連合先のどんなサーバーのユーザーとでもやりとりできます。ただし次のサーバーには例外が設定されています。 + unavailable_content_html: 通常Mastodonでは連合先のどんなサーバーのユーザーとでもやりとりできます。ただし次のサーバーには例外が設定されています。 user_count_after: other: 人 user_count_before: ユーザー数 - what_is_mastodon: Mastodon とは? + what_is_mastodon: Mastodonとは? accounts: - choices_html: "%{name} によるおすすめ:" + choices_html: "%{name}によるおすすめ:" endorsements_hint: あなたがフォローしている中でおすすめしたい人をここで紹介できます。 featured_tags_hint: 特定のハッシュタグをここに表示できます。 follow: フォロー @@ -61,15 +61,15 @@ ja: other: フォロワー following: フォロー中 instance_actor_flash: このアカウントは、個々のユーザーではなく、サーバー自体を表すために使用される仮想のユーザーです。 連合のために使用されるため、停止しないで下さい。 - joined: "%{date} に登録" + joined: "%{date}に登録" last_active: 最後の活動 - link_verified_on: このリンクの所有権は %{date} に確認されました + link_verified_on: このリンクの所有権は%{date}に確認されました media: メディア - moved_html: "%{name} さんは引っ越しました %{new_profile_link}:" + moved_html: "%{name}さんは%{new_profile_link}に引っ越しました:" network_hidden: この情報は利用できません nothing_here: 何もありません! - people_followed_by: "%{name} さんがフォロー中のアカウント" - people_who_follow: "%{name} さんをフォロー中のアカウント" + people_followed_by: "%{name}さんがフォロー中のアカウント" + people_who_follow: "%{name}さんをフォロー中のアカウント" pin_errors: following: おすすめしたい人はあなたが既にフォローしている必要があります posts: @@ -94,7 +94,7 @@ ja: accounts: add_email_domain_block: メールドメインブロックに追加 approve: 承認 - approved_msg: "%{username} の登録申請を承認しました" + approved_msg: "%{username}さんの登録申請を承認しました" are_you_sure: 本当に実行しますか? avatar: アイコン by_domain: ドメイン @@ -104,7 +104,7 @@ ja: label: メールアドレスを変更 new_email: 新しいメールアドレス submit: メールアドレスの変更 - title: "%{username} さんのメールアドレスを変更" + title: "%{username}さんのメールアドレスを変更" confirm: 確認 confirmed: 確認済み confirming: 確認中 @@ -112,10 +112,10 @@ ja: delete: データを削除する deleted: 削除済み demote: 降格 - destroyed_msg: "%{username} のデータは完全に削除されるよう登録されました" + destroyed_msg: "%{username}さんのデータは完全に削除されるよう登録されました" disable: 無効化 disable_sign_in_token_auth: メールトークン認証を無効にする - disable_two_factor_authentication: 二段階認証を無効にする + disable_two_factor_authentication: 二要素認証を無効にする disabled: 無効 display_name: 表示名 domain: ドメイン @@ -125,7 +125,7 @@ ja: enable: 有効化 enable_sign_in_token_auth: メールトークン認証を有効にする enabled: 有効 - enabled_msg: "%{username} の無効化を解除しました" + enabled_msg: "%{username}の無効化を解除しました" followers: フォロワー数 follows: フォロー数 header: ヘッダー @@ -158,18 +158,21 @@ ja: not_subscribed: 購読していない pending: 承認待ち perform_full_suspension: 活動を完全に停止させる + previous_strikes: 以前のストライク + previous_strikes_description_html: + other: "%{count} ストライクがあります。" promote: 昇格 protocol: プロトコル public: パブリック push_subscription_expires: PuSH購読期限 redownload: プロフィールを更新 - redownloaded_msg: "%{username} のプロフィールを正常に更新しました" + redownloaded_msg: "%{username}のプロフィールを正常に更新しました" reject: 却下 - rejected_msg: "%{username} の登録申請を却下しました" + rejected_msg: "%{username}さんの登録申請を却下しました" remove_avatar: アイコンを削除 remove_header: ヘッダーを削除 - removed_avatar_msg: "%{username} のアバター画像を削除しました" - removed_header_msg: "%{username} のヘッダー画像を削除しました" + removed_avatar_msg: "%{username}さんのアバター画像を削除しました" + removed_header_msg: "%{username}さんのヘッダー画像を削除しました" resend_confirmation: already_confirmed: メールアドレスは確認済みです send: 確認メールを再送 @@ -185,11 +188,10 @@ ja: user: ユーザー search: 検索 search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー - search_same_ip: 同じ IP のユーザーを検索 + search_same_ip: 同じIPのユーザーを検索 security_measures: only_password: パスワードのみ - password_and_2fa: パスワードと 2FA - password_and_sign_in_token: パスワードとメールトークン + password_and_2fa: パスワードと二要素認証 sensitive: 閲覧注意 sensitized: 閲覧注意としてマーク済み shared_inbox_url: Shared inbox URL @@ -199,21 +201,22 @@ ja: silence: サイレンス silenced: サイレンス済み statuses: 投稿数 + strikes: 前回のストライク subscribe: 購読する suspend: サスペンド suspended: 停止済み suspension_irreversible: このアカウントのデータは削除され元に戻せなくなります。後日アカウントの凍結を解除することはできますがデータは元に戻せません。 - suspension_reversible_hint_html: アカウントは停止されており、データは %{date} に完全に削除されます。それまではアカウントを元に戻すことができます。今すぐ完全に削除したい場合は以下から行うことができます。 + suspension_reversible_hint_html: アカウントは停止されており、データは%{date}に完全に削除されます。それまではアカウントを元に戻すことができます。今すぐ完全に削除したい場合は以下から行うことができます。 title: アカウント unblock_email: メールアドレスのブロックを解除 - unblocked_email_msg: "%{username} のメールアドレスのブロックを解除しました" + unblocked_email_msg: "%{username}さんのメールアドレスのブロックを解除しました" unconfirmed_email: 確認待ちのメールアドレス undo_sensitized: 閲覧注意から戻す undo_silenced: サイレンスから戻す undo_suspension: 停止から戻す - unsilenced_msg: "%{username} のサイレンス解除に成功しました" + unsilenced_msg: "%{username}さんのサイレンス解除に成功しました" unsubscribe: 購読の解除 - unsuspended_msg: "%{username} の無効化を解除しました" + unsuspended_msg: "%{username}さんの無効化を解除しました" username: ユーザー名 view_domain: ドメインの概要を表示 warn: 警告 @@ -244,12 +247,12 @@ ja: destroy_ip_block: IPルールを削除 destroy_status: 投稿を削除 destroy_unavailable_domain: 配送できないドメインを削除 - disable_2fa_user: 二段階認証を無効化 + disable_2fa_user: 二要素認証を無効化 disable_custom_emoji: カスタム絵文字を無効化 - disable_sign_in_token_auth_user: ユーザーのE-mail トークン認証を無効にする + disable_sign_in_token_auth_user: ユーザーのメールトークン認証を無効にする disable_user: ユーザーを無効化 enable_custom_emoji: カスタム絵文字を有効化 - enable_sign_in_token_auth_user: E-mail トークンのユーザー認証を有効にする + enable_sign_in_token_auth_user: メールトークンのユーザー認証を有効にする enable_user: ユーザーを有効化 memorialize_account: 追悼アカウント化 promote_user: ユーザーを昇格 @@ -272,56 +275,56 @@ ja: update_domain_block: ドメインブロックを更新 update_status: 投稿を更新 actions: - approve_appeal_html: "%{name} さんが %{target} からの抗議を承認しました" - approve_user_html: "%{target} から登録された %{name} さんを承認しました" - assigned_to_self_report_html: "%{name} さんが通報 %{target} を自身の担当に割り当てました" - change_email_user_html: "%{name} さんが %{target} さんのメールアドレスを変更しました" - confirm_user_html: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました" - create_account_warning_html: "%{name} さんが %{target} さんに警告メールを送信しました" - create_announcement_html: "%{name} さんが新しいお知らせ %{target} を作成しました" - create_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を追加しました" - create_domain_allow_html: "%{name} さんが %{target} の連合を許可しました" - create_domain_block_html: "%{name} さんがドメイン %{target} をブロックしました" - create_email_domain_block_html: "%{name} さんが %{target} をメールドメインブロックに追加しました" - create_ip_block_html: "%{name} さんが IP %{target} のルールを作成しました" - create_unavailable_domain_html: "%{name} がドメイン %{target} への配送を停止しました" - demote_user_html: "%{name} さんが %{target} さんを降格しました" - destroy_announcement_html: "%{name} さんがお知らせ %{target} を削除しました" - destroy_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を削除しました" - destroy_domain_allow_html: "%{name} さんが %{target} の連合許可を外しました" - destroy_domain_block_html: "%{name} さんがドメイン %{target} のブロックを外しました" - destroy_email_domain_block_html: "%{name} さんが %{target} をメールドメインブロックから外しました" - destroy_instance_html: "%{name} さんが %{target} をドメインブロックしました" - destroy_ip_block_html: "%{name} さんが IP %{target} のルールを削除しました" - destroy_status_html: "%{name} さんが %{target} さんの投稿を削除しました" - destroy_unavailable_domain_html: "%{name} がドメイン %{target} への配送を再開しました" - disable_2fa_user_html: "%{name} さんが %{target} さんの二段階認証を無効化しました" - disable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を無効化しました" - disable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を無効にしました" - disable_user_html: "%{name} さんが %{target} さんのログインを無効化しました" - enable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を有効化しました" - enable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を有効にしました" - enable_user_html: "%{name} さんが %{target} さんのログインを有効化しました" - memorialize_account_html: "%{name} さんが %{target} さんを追悼アカウントページに登録しました" - promote_user_html: "%{name} さんが %{target} さんを昇格しました" - reject_appeal_html: "%{name} さんが %{target} からの抗議を却下しました" - reject_user_html: "%{target} から登録された %{name} さんを拒否しました" - remove_avatar_user_html: "%{name} さんが %{target} さんのアイコンを削除しました" - reopen_report_html: "%{name} さんが通報 %{target} を未解決に戻しました" - reset_password_user_html: "%{name} さんが %{target} さんのパスワードをリセットしました" - resolve_report_html: "%{name} さんが通報 %{target} を解決済みにしました" - sensitive_account_html: "%{name} さんが %{target} さんのメディアを閲覧注意にマークしました" - silence_account_html: "%{name} さんが %{target} さんをサイレンスにしました" - suspend_account_html: "%{name} さんが %{target} さんを停止しました" - unassigned_report_html: "%{name} さんが通報 %{target} の担当を外しました" - unblock_email_account_html: "%{name} さんが %{target} のドメインブロックを解除しました" - unsensitive_account_html: "%{name} さんが %{target} さんのメディアの閲覧注意を解除しました" - unsilence_account_html: "%{name} さんが %{target} さんのサイレンスを解除しました" - unsuspend_account_html: "%{name} さんが %{target} さんの停止を解除しました" - update_announcement_html: "%{name} さんがお知らせ %{target} を更新しました" - update_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を更新しました" - update_domain_block_html: "%{name} が %{target} のドメインブロックを更新しました" - update_status_html: "%{name} さんが %{target} さんの投稿を更新しました" + approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました" + approve_user_html: "%{target}から登録された%{name}さんを承認しました" + assigned_to_self_report_html: "%{name}さんが通報 %{target}を自身の担当に割り当てました" + change_email_user_html: "%{name}さんが%{target}さんのメールアドレスを変更しました" + confirm_user_html: "%{name}さんが%{target}さんのメールアドレスを確認済みにしました" + create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました" + create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました" + create_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を追加しました" + create_domain_allow_html: "%{name}さんが%{target}の連合を許可しました" + create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました" + create_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックに追加しました" + create_ip_block_html: "%{name}さんがIP %{target}のルールを作成しました" + create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました" + demote_user_html: "%{name}さんが%{target}さんを降格しました" + destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" + destroy_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を削除しました" + destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" + destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" + destroy_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックから外しました" + destroy_instance_html: "%{name}さんがドメイン %{target}をブロックしました" + destroy_ip_block_html: "%{name}さんが IP %{target}のルールを削除しました" + destroy_status_html: "%{name}さんが%{target}さんの投稿を削除しました" + destroy_unavailable_domain_html: "%{name}がドメイン %{target}への配送を再開しました" + disable_2fa_user_html: "%{name}さんが%{target}さんの二要素認証を無効化しました" + disable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を無効化しました" + disable_sign_in_token_auth_user_html: "%{name}さんが%{target}さんのメールトークン認証を無効にしました" + disable_user_html: "%{name}さんが%{target}さんのログインを無効化しました" + enable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を有効化しました" + enable_sign_in_token_auth_user_html: "%{name}さんが%{target}さんのメールトークン認証を有効にしました" + enable_user_html: "%{name}さんが%{target}さんのログインを有効化しました" + memorialize_account_html: "%{name}さんが%{target}さんを追悼アカウントページに登録しました" + promote_user_html: "%{name}さんが%{target}さんを昇格しました" + reject_appeal_html: "%{name}さんが%{target}からの抗議を却下しました" + reject_user_html: "%{target}から登録された%{name}さんを拒否しました" + remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました" + reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました" + reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました" + resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました" + sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました" + silence_account_html: "%{name}さんが%{target}さんをサイレンスにしました" + suspend_account_html: "%{name}さんが%{target}さんを停止しました" + unassigned_report_html: "%{name}さんが通報 %{target}の担当を外しました" + unblock_email_account_html: "%{name}さんがドメイン %{target}のブロックを解除しました" + unsensitive_account_html: "%{name}さんが%{target}さんのメディアの閲覧注意を解除しました" + unsilence_account_html: "%{name}さんが%{target}さんのサイレンスを解除しました" + unsuspend_account_html: "%{name}さんが%{target}さんの停止を解除しました" + update_announcement_html: "%{name}さんがお知らせ %{target}を更新しました" + update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" + update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" + update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" deleted_status: "(削除済)" empty: ログが見つかりませんでした filter_by_action: アクションでフィルター @@ -338,7 +341,7 @@ ja: title: お知らせを追加 publish: 公開する published_msg: お知らせを掲載しました - scheduled_for: "%{time} に予約" + scheduled_for: "%{time}に予約" scheduled_msg: お知らせの掲載を予約しました title: お知らせ unpublish: 非公開にする @@ -384,13 +387,13 @@ ja: new_users: 新規ユーザー opened_reports: 新規通報 pending_appeals_html: - other: 保留中の抗議 %{count} 件 + other: 保留中の抗議 %{count}件 pending_reports_html: - other: 保留中の通報 %{count} 件 + other: 保留中の通報 %{count}件 pending_tags_html: - other: 保留中のハッシュタグ %{count} 件 + other: 保留中のハッシュタグ %{count}件 pending_users_html: - other: 保留中のユーザー %{count} 件 + other: 保留中のユーザー %{count}件 resolved_reports: 解決済みの通報 software: ソフトウェア sources: サインアップソース @@ -438,6 +441,8 @@ ja: view: ドメインブロックを表示 email_domain_blocks: add_new: 新規追加 + attempts_over_week: + other: 先週は%{count}回サインアップが試みられました created_msg: メールドメインブロックに追加しました delete: 消去 dns: @@ -448,6 +453,9 @@ ja: create: ドメインを追加 resolve: ドメイン解決 title: 新規メールドメインブロック + no_email_domain_block_selected: 何も選択されていないためメールドメインブロックを変更しませんでした + resolved_dns_records_hint_html: ドメイン名はDNSでMXドメインに名前解決され、最終的にメールを受け付ける役割を担います。目に見えるドメイン名が異なっていても、同じMXドメインを使用するメールアドレスからのアカウント登録がブロックされます。主要なメールプロバイダーをブロックしないように注意して下さい。 + resolved_through_html: "%{domain}を通して解決しました" title: メールドメインブロック follow_recommendations: description_html: "おすすめフォローは、新規ユーザーが興味のあるコンテンツをすばやく見つけるのに役立ちます。ユーザーが他のユーザーとの交流を十分にしていない場合、パーソナライズされたおすすめフォローを生成する代わりに、これらのアカウントが表示されます。最近のエンゲージメントが最も高いアカウントと、特定の言語のローカルフォロワー数が最も多いアカウントを組み合わせて、毎日再計算されます。" @@ -458,22 +466,50 @@ ja: title: おすすめフォロー unsuppress: おすすめフォローを復元 instances: + availability: + failure_threshold_reached: "%{date}に失敗のしきい値に達しました。" + failures_recorded: + other: "%{count}日間試行に失敗しました。" + no_failures_recorded: 失敗は記録されていません。 + title: 可用性 + warning: このサーバーへの最後の接続試行に失敗しました back_to_all: すべて back_to_limited: 制限あり back_to_warning: 警告あり by_domain: ドメイン confirm_purge: このドメインを完全にブロックしてもよろしいですか? + content_policies: + comment: 内部メモ + description_html: このドメインとそのサブドメインのすべてのアカウントに適用されるコンテンツポリシーを定義できます。 + policies: + reject_media: メディアを拒否する + reject_reports: 通報を拒否 + silence: 制限 + suspend: サスペンド + policy: ポリシー + reason: 公開理由 + title: コンテンツ ポリシー + dashboard: + instance_accounts_dimension: 最もフォローされているアカウント + instance_accounts_measure: 保存されたアカウント + instance_languages_dimension: 人気の言語 + instance_media_attachments_measure: 保存されたメディア + instance_reports_measure: 通報 + instance_statuses_measure: 保存された投稿 delivery: all: すべて clear: 配送エラーをクリア + failing: 配送失敗 restart: 配送を再開 stop: 配送を停止 unavailable: 配送不可 delivery_available: 配送可能 delivery_error_days: 配送エラー発生日 - delivery_error_hint: "%{count} 日間配送ができない場合は、自動的に配送不可としてマークされます。" - destroyed_msg: "%{domain} からのデータは、すぐに削除されるように、キューに追加されました。" + delivery_error_hint: "%{count}日間配送ができない場合は、自動的に配送不可としてマークされます。" + destroyed_msg: "%{domain}からのデータは、すぐに削除されるように、キューに追加されました。" empty: ドメインが見つかりませんでした。 + known_accounts: + other: 既知のアカウント数 %{count} moderation: all: すべて limited: 制限あり @@ -481,6 +517,7 @@ ja: private_comment: コメント (非公開) public_comment: コメント (公開) purge: パージ + purge_description_html: このドメインがオフラインであると思われる場合は、このドメインのすべてのアカウント記録と関連するデータをストレージから削除できます。 これは時間がかかることがあります。 title: 既知のサーバー total_blocked_by_us: ブロック合計 total_followed_by_them: 被フォロー合計 @@ -501,7 +538,7 @@ ja: delete: 削除 expires_in: '1209600': 2週間 - '15778476': 6ヶ月 + '15778476': 半年 '2629746': 1ヶ月 '31556952': 1年 '86400': 1日 @@ -535,9 +572,17 @@ ja: reports: account: notes: - other: "%{count} 件のメモ" + other: "%{count}件のメモ" action_log: 監査ログ action_taken_by: 通報処理者 + actions: + delete_description_html: 報告された投稿は削除され、ストライクが記録されます。同じアカウントによる今後の違反行為のエスカレーションに役立てられます。 + mark_as_sensitive_description_html: 報告された投稿のメディアは閲覧注意となり、ストライクが記録され、同じアカウントによる今後の違反行為のエスカレーションに役立てられます。 + other_description_html: アカウントの動作を制御するためのオプションや、報告されたアカウントへの通信をカスタマイズするためのオプションを確認してください。 + resolve_description_html: 報告されたアカウントに対していかなる措置も取られず、ストライクも記録されず、報告は終了します。 + silence_description_html: 既にフォローしている人、または自分で参照した人にのみ表示されるため、プロフィールが届く範囲が大きく制限されます。いつでも元に戻すことができます。 + suspend_description_html: プロフィールとすべてのコンテンツは、最終的に削除されるまでアクセスできなくなります。アカウントとのやり取りは不可能です。30日以内に取り消し可能です。 + actions_description_html: このレポートを解決するために取るアクションを決定します。 報告されたアカウントに対して懲罰的な措置を取った場合、メール通知が送信されますがスパムカテゴリが選択されている場合を除きます。 add_to_report: 通報にさらに追加 are_you_sure: 本当に実行しますか? assign_to_self: 担当になる @@ -547,10 +592,11 @@ ja: category_description_html: 選択した理由は通報されたアカウントへの連絡時に引用されます comment: none: なし + comment_description_html: "%{name}からの詳細情報:" created_at: 通報日時 delete_and_resolve: 投稿を削除 forwarded: 転送済み - forwarded_to: "%{domain} に転送されました" + forwarded_to: "%{domain}に転送されました" mark_as_resolved: 解決済みとしてマーク mark_as_sensitive: 閲覧注意にする mark_as_unresolved: 未解決に戻す @@ -563,9 +609,9 @@ ja: placeholder: どのような措置が取られたか、または関連する更新を記述してください… title: メモ notes_description_html: 他のモデレーターと将来の自分にメモを残してください - remote_user_placeholder: "%{instance} からのリモートユーザー" + remote_user_placeholder: "%{instance}からのリモートユーザー" reopen: 未解決に戻す - report: 通報#%{id} + report: '通報 #%{id}' reported_account: 報告対象アカウント reported_by: 報告者 resolved: 解決済み @@ -657,7 +703,7 @@ ja: desc_html: あなたのサーバーにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます title: カスタム詳細説明 site_short_description: - desc_html: サイドバーと meta タグに表示されます。Mastodon とは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 + desc_html: サイドバーとmetaタグに表示されます。Mastodonとは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 title: 短いサーバーの説明 site_terms: desc_html: 独自のプライバシーポリシーや利用規約、その他の法的根拠を記述できます。HTMLタグが使えます @@ -667,7 +713,7 @@ ja: desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です title: サーバーのサムネイル timeline_preview: - desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへの API アクセスを許可します + desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへのAPIアクセスを許可します title: 公開タイムラインへの未認証のアクセスを許可する title: サイト設定 trendable_by_default: @@ -693,18 +739,28 @@ ja: with_media: メディアあり strikes: actions: - mark_statuses_as_sensitive: "%{name} さんが %{target} さんの投稿を閲覧注意としてマークしました" - sensitive: "%{name} さんが %{target} さんのアカウントを閲覧注意としてマークしました" + delete_statuses: "%{name}さんが%{target}さんの投稿を削除しました" + disable: "%{name}さんが%{target}さんを凍結しました" + mark_statuses_as_sensitive: "%{name}さんが%{target}さんの投稿を閲覧注意としてマークしました" + none: "%{name}さんが%{target}さんに警告を送信しました" + sensitive: "%{name}さんが%{target}さんのアカウントを閲覧注意としてマークしました" + silence: "%{name}さんが%{target}さんを制限しました" + suspend: "%{name}さんが%{target}さんのアカウントを停止しました" appeal_approved: 抗議済み appeal_pending: 保留中の抗議 system_checks: database_schema_check: message_html: 未実行のデータベースマイグレーションがあります。実行して正常に動作するようにしてください。 + elasticsearch_running_check: + message_html: Elasticsearchに接続できませんでした。Elasticsearchが実行されていることを確認するか、全文検索を無効にしてください。 + elasticsearch_version_check: + message_html: '互換性のない Elasticsearch バージョン: %{value}' + version_comparison: Elasticsearch %{running_version}が実行されていますが、%{required_version}が必要です rules_check: action: サーバーのルールを管理 message_html: サーバーのルールを定義していません。 sidekiq_process_check: - message_html: "%{value} キューに対応するSidekiq プロセスがありません。Sidekiq の設定を確認してください。" + message_html: "%{value}キューに対応するSidekiqプロセスがありません。Sidekiqの設定を確認してください。" tags: review: 審査状況 updated_msg: ハッシュタグ設定が更新されました @@ -716,13 +772,18 @@ ja: links: allow: リンクの許可 allow_provider: 発行者の承認 + description_html: これらは、多くのユーザーに共有されているリンクです。あなたのユーザーが世の中の動きを知るのに役立ちます。あなたが公開者を承認するまで、リンクは一般に表示されません。また、個別のリンクの許可・拒否も可能です。 disallow: リンクの拒否 disallow_provider: 発行者の拒否 + shared_by_over_week: + other: 週間%{count}人に共有されました title: トレンドリンク - usage_comparison: 今日は %{today} 回、昨日は %{yesterday} 回共有されました + usage_comparison: 今日は%{today}回、昨日は%{yesterday}回共有されました + only_allowed: 許可済み pending_review: 保留中 preview_card_providers: allowed: この発行者からのリンクを許可 + description_html: これらは、よく共有されるリンク元のドメインです。リンク先のドメインが承認されない限り、リンクは公開されません。承認(または拒否)はサブドメインにも及びます。 rejected: この発行者からのリンクを拒否 title: 発行者 rejected: 拒否 @@ -740,17 +801,21 @@ ja: tag_servers_dimension: 人気のサーバー tag_servers_measure: その他のサーバー tag_uses_measure: 合計利用数 + description_html: これらは、多くの投稿に使用されているハッシュタグです。あなたのユーザーが、人々が今一番話題にしていることを知るのに役立ちます。あなたが承認するまで、ハッシュタグは一般に表示されません。 listable: おすすめに表示する not_listable: おすすめに表示しない not_trendable: トレンドに表示しない not_usable: 使用を禁止 - peaked_on_and_decaying: "%{date} 以降、しばらく使われていません" + peaked_on_and_decaying: "%{date}以降、しばらく使われていません" title: トレンドタグ trendable: トレンドに表示する - trending_rank: '人気: %{rank} 位' + trending_rank: '人気: %{rank}位' usable: 使用を許可 - usage_comparison: 今日は %{today} 回、昨日は %{yesterday} 回使用されました。 + usage_comparison: 今日は%{today}回、昨日は%{yesterday}回使用されました。 + used_by_over_week: + other: 週間%{count}人に使用されました title: トレンド + trending: トレンド warning_presets: add_new: 追加 delete: 削除 @@ -760,22 +825,34 @@ ja: admin_mailer: new_appeal: actions: + delete_statuses: 投稿を削除する + disable: アカウントを無効にする + mark_statuses_as_sensitive: 閲覧注意としてマーク none: 警告 sensitive: アカウントを閲覧注意にする + silence: アカウントを制限する + suspend: アカウントを停止する + next_steps: モデレーションの決定を取り消すために申し立てを承認するか、無視することができます。 + subject: "%{instance}で%{username}さんからモデレーションへの申し立てが届きました。" new_pending_account: body: 新しいアカウントの詳細は以下の通りです。この申請を承認または却下することができます。 - subject: "%{instance} で新しいアカウント (%{username}) が承認待ちです" + subject: "%{instance}で新しいアカウント (%{username}) が承認待ちです" new_report: - body: "%{reporter} が %{target} を通報しました" - body_remote: "%{domain} の誰かが %{target} を通報しました" - subject: "%{instance} の新しい通報 (#%{id})" + body: "%{reporter}さんが%{target}さんを通報しました" + body_remote: "%{domain}の誰かが%{target}さんを通報しました" + subject: "%{instance}の新しい通報 (#%{id})" new_trends: + body: 以下の項目は、公開する前に審査が必要です。 new_trending_links: + no_approved_links: 承認されたトレンドリンクはありません。 title: トレンドリンク new_trending_statuses: + no_approved_statuses: 承認されたトレンド投稿はありません。 title: トレンド投稿 new_trending_tags: + no_approved_tags: 承認されたトレンドハッシュタグはありません。 title: トレンドハッシュタグ + subject: "%{instance}で新しいトレンドが審査待ちです" aliases: add_new: エイリアスを作成 created_msg: エイリアスを作成しました。これで以前のアカウントから引っ越しを開始できます。 @@ -784,7 +861,7 @@ ja: hint_html: 他のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。エイリアス自体は無害で、取り消すことができます。引っ越しは以前のアカウント側から開始する必要があります。 remove: エイリアスを削除 appearance: - advanced_web_interface: 上級者向け UI + advanced_web_interface: 上級者向けUI advanced_web_interface_hint: ディスプレイを幅いっぱいまで活用したい場合、上級者向け UI をおすすめします。ホーム、通知、連合タイムライン、更にはリストやハッシュタグなど、様々な異なるカラムから望む限りの情報を一度に受け取れるような設定が可能になります。 animations_and_accessibility: アニメーションとアクセシビリティー confirmation_dialogs: 確認ダイアログ @@ -797,7 +874,7 @@ ja: toot_layout: 投稿のレイアウト application_mailer: notification_preferences: メール設定の変更 - salutation: "%{name} さん" + salutation: "%{name}さん" settings: 'メール設定の変更: %{link}' view: 'リンク:' view_profile: プロフィールを表示 @@ -813,19 +890,19 @@ ja: auth: apply_for_account: 登録を申請する change_password: パスワード - checkbox_agreement_html: サーバーのルールプライバシーポリシー に同意します - checkbox_agreement_without_rules_html: 利用規約 に同意します + checkbox_agreement_html: サーバーのルールプライバシーポリシーに同意します + checkbox_agreement_without_rules_html: 利用規約に同意します delete_account: アカウントの削除 - delete_account_html: アカウントを削除したい場合、こちら から手続きが行えます。削除する前に、確認画面があります。 + delete_account_html: アカウントを削除したい場合、こちらから手続きが行えます。削除する前に、確認画面があります。 description: - prefix_invited_by_user: "@%{name} があなたをこの Mastodon サーバーに招待しました" - prefix_sign_up: 今すぐ Mastodon を始めよう! - suffix: アカウントがあれば、どんな Mastodon 互換サーバーのユーザーでもフォローしたりメッセージをやり取りできるようになります! + prefix_invited_by_user: "@%{name}さんがあなたをこのMastodonサーバーに招待しました" + prefix_sign_up: 今すぐMastodonを始めよう! + suffix: アカウントがあれば、どんなMastodon互換サーバーのユーザーでもフォローしたりメッセージをやり取りできるようになります! didnt_get_confirmation: 確認メールを受信できませんか? dont_have_your_security_key: セキュリティキーを持っていませんか? forgot_password: パスワードをお忘れですか? invalid_reset_password_token: パスワードリセットトークンが正しくないか期限切れです。もう一度リクエストしてください。 - link_to_otp: 携帯電話から二段階認証コードを入力するか、リカバリーコードを入力してください + link_to_otp: 携帯電話から二要素認証コードを入力するか、リカバリーコードを入力してください link_to_webauth: セキュリティキーを使用する log_in_with: 次の方法でログイン login: ログイン @@ -837,20 +914,22 @@ ja: cas: CAS saml: SAML register: 登録する - registration_closed: "%{instance} は現在、新規登録停止中です" + registration_closed: "%{instance}は現在、新規登録停止中です" resend_confirmation: 確認メールを再送する reset_password: パスワードを再発行 security: セキュリティ set_new_password: 新しいパスワード setup: email_below_hint_html: 下記のメールアドレスが間違っている場合、ここで変更することで新たに確認メールを受信できます。 - email_settings_hint_html: 確認用のメールを %{email} に送信しました。メールアドレスが正しくない場合、以下より変更することができます。 + email_settings_hint_html: 確認用のメールを%{email}に送信しました。メールアドレスが正しくない場合、以下より変更することができます。 title: セットアップ status: account_status: アカウントの状態 confirming: メールアドレスの確認が完了するのを待っています。 + functional: アカウントは完全に機能しています。 pending: あなたの申請は現在サーバー管理者による審査待ちです。これにはしばらくかかります。申請が承認されるとメールが届きます。 - redirecting_to: アカウントは %{acct} に引っ越し設定されているため非アクティブになっています。 + redirecting_to: アカウントは%{acct}に引っ越し設定されているため非アクティブになっています。 + view_strikes: 過去のストライクを表示 too_fast: フォームの送信が速すぎます。もう一度やり直してください。 trouble_logging_in: ログインできませんか? use_security_key: セキュリティキーを使用 @@ -864,17 +943,17 @@ ja: post_follow: close: またはこのウィンドウを閉じます。 return: ユーザーのプロフィールを見る - web: Web を開く - title: "%{acct} をフォロー" + web: Webを開く + title: "%{acct}さんをフォロー" challenge: confirm: 続ける - hint_html: 以後 1 時間はパスワードの再入力を求めません + hint_html: 以後1時間はパスワードの再入力を求めません invalid_password: パスワードが間違っています prompt: 続行するにはパスワードを入力してください crypto: errors: - invalid_key: 有効な Ed25519 または Curve25519 キーではありません - invalid_signature: 有効な Ed25519 署名ではありません + invalid_key: 有効なEd25519またはCurve25519キーではありません + invalid_signature: 有効なEd25519署名ではありません date: formats: default: "%Y年%m月%d日" @@ -904,7 +983,7 @@ ja: caches: 他のサーバーにコンテンツのキャッシュがずっと残る場合があります data_removal: あなたの投稿やその他のデータはこのサーバーから完全に削除されます email_change_html: アカウントを削除しなくてもメールアドレスを変更できます - email_contact_html: それでも届かない場合、%{email} までメールで問い合わせてください + email_contact_html: それでも届かない場合、%{email}までメールで問い合わせてください email_reconfirmation_html: 確認のメールが届かない場合、もう一度申請できます。 irreversible: 削除操作の撤回やアカウントの復活はできません more_details_html: 詳しくはプライバシーポリシーをご覧ください。 @@ -918,12 +997,18 @@ ja: strikes: action_taken: 取られた措置 appeal: 抗議 + appeal_approved: このストライクは申し立てが承認され、有効ではありません。 + appeal_rejected: 申し立ては拒否されました appeal_submitted_at: 抗議が送信されました + appealed_msg: 申し立てが送信されました。承認されると通知されます。 appeals: submit: 抗議を送信 associated_report: 関連する通報 created_at: 日時 + description_html: これらは、%{instance}のスタッフがあなたのアカウントに対して行った措置や、あなたに送られた警告です。 recipient: 送信元 + status: '投稿 #%{id}' + status_removed: 既に削除されています title: "%{date}に%{action}" title_actions: delete_statuses: 投稿の削除 @@ -933,6 +1018,9 @@ ja: sensitive: アカウントを閲覧注意としてマーク silence: アカウントの制限 suspend: アカウントの一時停止 + your_appeal_approved: 申し立てが承認されました + your_appeal_pending: 申し立てを送信しました + your_appeal_rejected: 申し立ては拒否されました domain_validator: invalid_domain: は無効なドメイン名です errors: @@ -952,7 +1040,7 @@ ja: noscript_html: Mastodonのウェブアプリケーションを利用する場合はJavaScriptを有効にしてください。またはあなたのプラットフォーム向けのMastodonネイティブアプリを探すことができます。 existing_username_validator: not_found: そのようなユーザー名はローカルに見つかりませんでした - not_found_multiple: "%{usernames} は見つかりませんでした" + not_found_multiple: "%{usernames}さんは見つかりませんでした" exports: archive_takeout: date: 日時 @@ -972,7 +1060,7 @@ ja: add_new: 追加 errors: limit: 注目のハッシュタグの上限に達しました - hint_html: "注目のハッシュタグとは?プロフィールページに目立つ形で表示され、そのハッシュタグのついたあなたの公開投稿だけを抽出して閲覧できるようにします。クリエイティブな仕事や長期的なプロジェクトを追うのに優れた機能です。" + hint_html: "注目のハッシュタグとは? プロフィールページに目立つ形で表示され、そのハッシュタグのついたあなたの公開投稿だけを抽出して閲覧できるようにします。クリエイティブな仕事や長期的なプロジェクトを追うのに優れた機能です。" filters: contexts: account: プロフィール @@ -1006,12 +1094,12 @@ ja: save_changes: 変更を保存 today: 今日 validation_errors: - other: エラーが発生しました! 以下の%{count}個のエラーを確認してください + other: エラーが発生しました! 以下の%{count}件のエラーを確認してください html_validator: invalid_markup: '無効なHTMLマークアップが含まれています: %{error}' imports: errors: - over_rows_processing_limit: "%{count} 行以上" + over_rows_processing_limit: "%{count}行以上" modes: merge: 統合 merge_long: 現在のレコードを保持したまま新しいものを追加します @@ -1031,12 +1119,12 @@ ja: delete: 無効化 expired: 期限切れ expires_in: - '1800': 30 分 - '21600': 6 時間 - '3600': 1 時間 - '43200': 12 時間 - '604800': 1 週間 - '86400': 1 日 + '1800': 30分 + '21600': 6時間 + '3600': 1時間 + '43200': 12時間 + '604800': 1週間 + '86400': 1日 expires_in_prompt: 無期限 generate: 招待リンクを作成 invited_by: '次の人に招待されました:' @@ -1053,14 +1141,14 @@ ja: limit: リストの上限に達しました login_activities: authentication_methods: - otp: 2要素認証 + otp: 二要素認証アプリ password: パスワード - sign_in_token: 電子メールセキュリティコード + sign_in_token: メールセキュリティコード webauthn: セキュリティキー - description_html: 認識できないアクティビティが表示された場合は、パスワードの変更と2要素認証の有効化を検討してください。 + description_html: 認識できないアクティビティが表示された場合は、パスワードの変更と二要素認証の有効化を検討してください。 empty: 利用可能な認証履歴がありません - failed_sign_in_html: "%{ip} (%{browser}) からの %{method} を利用したサインインに失敗しました。" - successful_sign_in_html: "%{ip} (%{browser}) からの %{method} を利用したサインインに成功しました" + failed_sign_in_html: "%{ip} (%{browser}) から%{method}を利用したサインインに失敗しました。" + successful_sign_in_html: "%{ip} (%{browser}) から%{method}を利用したサインインに成功しました" title: 認証履歴 media_attachments: validations: @@ -1081,13 +1169,13 @@ ja: followers_count: 引き継がれるフォロワー incoming_migrations: 別のアカウントから引っ越す incoming_migrations_html: 別のアカウントからこのアカウントに引っ越すには、まずアカウントエイリアスを作成する必要があります。 - moved_msg: アカウントは %{acct} に引っ越し設定されており、フォロワーは引っ越し先に引き継がれています。 + moved_msg: アカウントは%{acct}に引っ越し設定されており、フォロワーは引っ越し先に引き継がれています。 not_redirecting: アカウントは現在引っ越し設定されていません。 - on_cooldown: あなたは最近アカウントを引っ越しました。この機能は %{count} 日後に再度利用できるようになります。 + on_cooldown: あなたは最近アカウントを引っ越しました。この機能は%{count}日後に再度利用できるようになります。 past_migrations: 過去の引っ越し proceed_with_move: フォロワーを引き継ぐ - redirected_msg: あなたのアカウントは現在 %{acct} にリダイレクトされています。 - redirecting_to: アカウントは %{acct} に引っ越し設定されています。 + redirected_msg: あなたのアカウントは現在%{acct}にリダイレクトされています。 + redirecting_to: アカウントは%{acct}に引っ越し設定されています。 set_redirect: 引っ越しを設定 warning: backreference_required: まずは引っ越し先のアカウントでこのアカウントに対しエイリアスを作成する必要があります @@ -1101,50 +1189,50 @@ ja: moderation: title: モデレーション move_handler: - carry_blocks_over_text: このユーザーは、あなたがブロックしていた %{acct} から引っ越しました。 - carry_mutes_over_text: このユーザーは、あなたがミュートしていた %{acct} から引っ越しました。 - copy_account_note_text: このユーザーは %{acct} から引っ越しました。これは以前のメモです。 + carry_blocks_over_text: このユーザーは、あなたがブロックしていた%{acct}から引っ越しました。 + carry_mutes_over_text: このユーザーは、あなたがミュートしていた%{acct}から引っ越しました。 + copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 notification_mailer: admin: sign_up: - subject: "%{name} がサインアップしました" + subject: "%{name}さんがサインアップしました" digest: action: 全ての通知を表示 body: '最後のログイン(%{since})からの出来事:' - mention: "%{name} さんがあなたに返信しました:" + mention: "%{name}さんがあなたに返信しました:" new_followers_summary: - other: また、離れている間に%{count} 人の新たなフォロワーを獲得しました! + other: また、離れている間に%{count}人の新たなフォロワーを獲得しました! subject: - other: "新しい%{count}件の通知 \U0001F418" + other: "前回の訪問から%{count}件の新しい通知 🐘" title: 不在の間に… favourite: - body: "%{name} さんにお気に入り登録された、あなたの投稿があります:" - subject: "%{name} さんにお気に入りに登録されました" + body: "%{name}さんにお気に入り登録された、あなたの投稿があります:" + subject: "%{name}さんにお気に入りに登録されました" title: 新たなお気に入り登録 follow: - body: "%{name} さんにフォローされています!" - subject: "%{name} さんにフォローされています" + body: "%{name}さんにフォローされています!" + subject: "%{name}さんにフォローされています" title: 新たなフォロワー follow_request: action: フォローリクエストの管理 - body: "%{name} さんがあなたにフォローをリクエストしました" - subject: "%{name} さんからのフォローリクエスト" + body: "%{name}さんがあなたにフォローをリクエストしました" + subject: "%{name}さんからのフォローリクエスト" title: 新たなフォローリクエスト mention: action: 返信 - body: "%{name} さんから返信がありました:" - subject: "%{name} さんに返信されました" + body: "%{name}さんから返信がありました:" + subject: "%{name}さんに返信されました" title: 新たな返信 poll: - subject: "%{name}  さんの投票が終了しました" + subject: "%{name} さんの投票が終了しました" reblog: - body: "%{name} さんにブーストされた、あなたの投稿があります:" - subject: "%{name} さんにブーストされました" + body: "%{name}さんにブーストされた、あなたの投稿があります:" + subject: "%{name}さんにブーストされました" title: 新たなブースト status: - subject: "%{name} さんが投稿しました" + subject: "%{name}さんが投稿しました" update: - subject: "%{name} さんが投稿を更新しました" + subject: "%{name}さんが投稿を更新しました" notifications: email_events: メールによる通知 email_events_hint: '受信する通知を選択:' @@ -1215,7 +1303,7 @@ ja: no_account_html: アカウントをお持ちではないですか?こちらからサインアップできます proceed: フォローする prompt: 'フォローしようとしています:' - reason_html: "なぜこの手順が必要でしょうか?%{instance}はあなたが登録されているサーバーではないかもしれないので、まずあなたのサーバーに転送する必要があります。" + reason_html: "なぜこの手順が必要でしょうか? %{instance}はあなたが登録されているサーバーではないかもしれないので、まずあなたのサーバーに転送する必要があります。" remote_interaction: favourite: proceed: お気に入り登録する @@ -1226,9 +1314,12 @@ ja: reply: proceed: 返信する prompt: '返信しようとしています:' + reports: + errors: + invalid_rules: 有効なルールを参照していません scheduled_statuses: - over_daily_limit: その日予約できる投稿数 %{limit} を超えています - over_total_limit: 予約できる投稿数 %{limit} を超えています + over_daily_limit: その日予約できる投稿数 %{limit}を超えています + over_total_limit: 予約できる投稿数 %{limit}を超えています too_soon: より先の時間を指定してください sessions: activity: 最後のアクティビティ @@ -1252,7 +1343,7 @@ ja: uc_browser: UCBrowser weibo: Weibo current_session: 現在のセッション - description: "%{platform} 上の %{browser}" + description: "%{platform}上の%{browser}" explanation: あなたのMastodonアカウントに現在ログインしているウェブブラウザの一覧です。 ip: IP platforms: @@ -1278,7 +1369,7 @@ ja: aliases: アカウントエイリアス appearance: 外観 authorized_apps: 認証済みアプリ - back: Mastodon に戻る + back: Mastodonに戻る delete: アカウントの削除 development: 開発 edit_profile: プロフィールを編集 @@ -1292,18 +1383,19 @@ ja: profile: プロフィール relationships: フォロー・フォロワー statuses_cleanup: 投稿の自動削除 - two_factor_authentication: 二段階認証 + strikes: モデレーションストライク + two_factor_authentication: 二要素認証 webauthn_authentication: セキュリティキー statuses: attached: audio: - other: "%{count} 本のオーディオ" + other: "%{count}本のオーディオ" description: '添付: %{attached}' image: - other: "%{count} 枚の画像" + other: "%{count}枚の画像" video: - other: "%{count} 本の動画" - boosted_from_html: "%{acct_link} からブースト" + other: "%{count}本の動画" + boosted_from_html: "%{acct_link}からブースト" content_warning: '閲覧注意: %{warning}' default_language: UIの表示言語 disallowed_hashtags: @@ -1312,7 +1404,7 @@ ja: errors: in_reply_not_found: あなたが返信しようとしている投稿は存在しないようです。 open_in_web: Webで開く - over_character_limit: 上限は %{max}文字までです + over_character_limit: 上限は%{max}文字です pin_errors: direct: 返信したユーザーのみに表示される投稿はピン留めできません limit: 固定できる投稿数の上限に達しました @@ -1320,7 +1412,7 @@ ja: reblog: ブーストを固定することはできません poll: total_people: - other: "%{count} 人" + other: "%{count}人" total_votes: other: "%{count}票" vote: 投票 @@ -1361,11 +1453,11 @@ ja: keep_self_fav_hint: 自分自身でお気に入りに登録した投稿を削除せずに残します min_age: '1209600': 2週間 - '15778476': 6ヶ月 + '15778476': 半年 '2629746': 1ヶ月 '31556952': 1年 '5259492': 2ヶ月 - '604800': 1 週間 + '604800': 1週間 '63113904': 2年 '7889238': 3ヶ月 min_age_label: 投稿を保持する期間 @@ -1407,7 +1499,7 @@ ja:

情報をどのように保護しますか?

-

私たちはあなたが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施します。特にブラウザーセッションだけでなくアプリケーションとAPI間の通信もSSLによって保護されます。またパスワードは強力な不可逆アルゴリズムでハッシュ化されます。二段階認証を有効にし、アカウントへのアクセスをさらに安全にすることができます。

+

私たちはあなたが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施します。特にブラウザーセッションだけでなくアプリケーションとAPI間の通信もSSLによって保護されます。またパスワードは強力な不可逆アルゴリズムでハッシュ化されます。二要素認証を有効にし、アカウントへのアクセスをさらに安全にすることができます。


@@ -1474,10 +1566,10 @@ ja: two_factor_authentication: add: 追加 disable: 無効化 - disabled_success: 二段階認証が無効になりました + disabled_success: 二要素認証が無効になりました edit: 編集 - enabled: 二段階認証は有効になっています - enabled_success: 二段階認証が有効になりました + enabled: 二要素認証は有効になっています + enabled_success: 二要素認証が有効になりました generate_recovery_codes: リカバリーコードを生成 lost_recovery_codes: リカバリーコードを使用すると携帯電話を紛失した場合でもアカウントにアクセスできるようになります。 リカバリーコードを紛失した場合もここで再生成することができますが、古いリカバリーコードは無効になります。 methods: 方式 @@ -1487,36 +1579,49 @@ ja: recovery_instructions_html: 携帯電話を紛失した場合、以下の内どれかのリカバリーコードを使用してアカウントへアクセスすることができます。リカバリーコードは大切に保全してください。たとえば印刷してほかの重要な書類と一緒に保管することができます。 webauthn: セキュリティキー user_mailer: + appeal_approved: + action: アカウントへ + explanation: "%{strike_date}のストライクに対して、あなたが%{appeal_date}に行った申し立ては承認されました。アカウントは正常な状態に戻りました。" + subject: "%{date}の申し立てが承認されました" + title: 申し立てが承認されました。 appeal_rejected: + explanation: "%{strike_date}のストライクに対して、あなたが%{appeal_date}に行った申し立ては却下されました。" + subject: "%{date}の申し立てが拒否されました" title: 却下された抗議 backup_ready: explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます! subject: アーカイブの準備ができました title: アーカイブの取り出し - sign_in_token: - details: '検出したログインの詳細は以下のとおりです:' - explanation: '認識できないIPアドレスから、あなたのアカウントへのログインを検出しました。あなたがログインしようとしている場合は、ログインページに以下のセキュリティコードを入力してください:' - further_actions: '心当たりがない場合、パスワードを変更し二段階認証を有効にしてください。こちらから設定できます:' - subject: ログイン試行を確認してください - title: ログインを検出しました + suspicious_sign_in: + change_password: パスワードを変更する + details: 'ログインの詳細は以下のとおりです:' + explanation: 新しいIPアドレスからあなたのアカウントへのサインインが検出されました。 + further_actions_html: あなたがログインしていない場合は、すぐに%{action}し、アカウントを安全に保つために二要素認証を有効にすることをお勧めします。 + subject: 新しいIPアドレスからのアクセスがありました + title: 新しいサインイン warning: appeal: 抗議を送信 + appeal_description: これが間違いだと思われる場合は、%{instance}のスタッフに申し立てすることができます。 categories: spam: スパム violation: コンテンツは以下のコミュニティガイドラインに違反しています explanation: + delete_statuses: あなたの投稿のいくつかは、1つ以上のコミュニティガイドラインに違反していることが判明し、%{instance}のモデレータによって削除されました。 disable: アカウントは使用できませんが、プロフィールやその他のデータはそのまま残ります。 データのバックアップをリクエストしたり、アカウント設定を変更したり、アカウントを削除したりできます。 - mark_statuses_as_sensitive: あなたのいくつかの投稿は、 %{instance} のモデレータによって閲覧注意としてマークされています。これは、プレビューが表示される前にユーザが投稿内のメディアをタップする必要があることを意味します。あなたは将来投稿する際に自分自身でメディアを閲覧注意としてマークすることができます。 + mark_statuses_as_sensitive: あなたのいくつかの投稿は、%{instance}のモデレータによって閲覧注意としてマークされています。これは、プレビューが表示される前にユーザが投稿内のメディアをタップする必要があることを意味します。あなたは将来投稿する際に自分自身でメディアを閲覧注意としてマークすることができます。 sensitive: 今後、アップロードされたすべてのメディアファイルは閲覧注意としてマークされ、クリック解除式の警告で覆われるようになります。 silence: アカウントが制限されています。このサーバーでは既にフォローしている人だけがあなたの投稿を見ることができます。 様々な発見機能から除外されるかもしれません。他の人があなたを手動でフォローすることは可能です。 + suspend: アカウントは使用できなくなり、プロフィールなどのデータにもアクセスできなくなります。約30日後にデータが完全に削除されるまでは、ログインしてデータのバックアップを要求することができますが、アカウントの停止回避を防ぐために一部の基本データを保持します。 reason: '理由:' + statuses: '投稿:' subject: - disable: あなたのアカウント %{acct} は凍結されました - mark_statuses_as_sensitive: あなたの %{acct} の投稿は閲覧注意としてマークされました - none: "%{acct} に対する警告" - sensitive: あなたの %{acct} の投稿はこれから閲覧注意としてマークされます - silence: あなたのアカウント %{acct} はサイレンスにされました - suspend: あなたのアカウント %{acct} は停止されました + delete_statuses: "%{acct}さんの投稿が削除されました" + disable: あなたのアカウント %{acct}は凍結されました + mark_statuses_as_sensitive: あなたの%{acct}の投稿は閲覧注意としてマークされました + none: "%{acct}に対する警告" + sensitive: あなたの%{acct}の投稿はこれから閲覧注意としてマークされます + silence: あなたのアカウント %{acct}はサイレンスにされました + suspend: あなたのアカウント %{acct}は停止されました title: delete_statuses: 投稿が削除されました disable: アカウントが凍結されました @@ -1534,23 +1639,20 @@ ja: full_handle: あなたの正式なユーザーID full_handle_hint: 別のサーバーの友達とフォローやメッセージをやり取りする際には、これを伝えることになります。 review_preferences_action: 設定の変更 - review_preferences_step: 受け取りたいメールの種類や投稿のデフォルト公開範囲など、ユーザー設定を必ず済ませておきましょう。目が回らない自信があるなら、アニメーション GIF を自動再生する設定もご検討ください。 - subject: Mastodon へようこそ - tip_federated_timeline: 連合タイムラインは Mastodon ネットワークの流れを見られるものです。ただしあなたと同じサーバーの人がフォローしている人だけが含まれるので、それが全てではありません。 + review_preferences_step: 受け取りたいメールの種類や投稿のデフォルト公開範囲など、ユーザー設定を必ず済ませておきましょう。目が回らない自信があるなら、アニメーションGIFを自動再生する設定もご検討ください。 + subject: Mastodonへようこそ + tip_federated_timeline: 連合タイムラインはMastodonネットワークの流れを見られるものです。ただしあなたと同じサーバーの人がフォローしている人だけが含まれるので、それが全てではありません。 tip_following: 最初は、サーバーの管理者をフォローした状態になっています。もっと興味のある人たちを見つけるには、ローカルタイムラインと連合タイムラインを確認してみましょう。 - tip_local_timeline: ローカルタイムラインは %{instance} にいる人々の流れを見られるものです。彼らはあなたと同じサーバーにいる隣人のようなものです! - tip_mobile_webapp: お使いのモバイル端末で、ブラウザから Mastodon をホーム画面に追加できますか? もし追加できる場合、プッシュ通知の受け取りなど、まるで「普通の」アプリのような機能が楽しめます! + tip_local_timeline: ローカルタイムラインは%{instance}にいる人々の流れを見られるものです。彼らはあなたと同じサーバーにいる隣人のようなものです! + tip_mobile_webapp: お使いのモバイル端末で、ブラウザからMastodonをホーム画面に追加できますか? もし追加できる場合、プッシュ通知の受け取りなど、まるで「普通の」アプリのような機能が楽しめます! tips: 豆知識 - title: ようこそ、%{name}! + title: ようこそ、%{name}さん! users: - follow_limit_reached: あなたは現在 %{limit} 人以上フォローできません - generic_access_help_html: アクセスできませんか? %{email} に問い合わせることができます。 - invalid_otp_token: 二段階認証コードが間違っています - invalid_sign_in_token: 無効なセキュリティコードです - otp_lost_help_html: どちらも使用できない場合、%{email} に連絡を取ると解決できるかもしれません + follow_limit_reached: あなたは現在 %{limit}人以上フォローできません + invalid_otp_token: 二要素認証コードが間違っています + otp_lost_help_html: どちらも使用できない場合、%{email}に連絡を取ると解決できるかもしれません seamless_external_login: あなたは外部サービスを介してログインしているため、パスワードとメールアドレスの設定は利用できません。 signed_in_as: '下記でログイン中:' - suspicious_sign_in_confirmation: おかえりなさい。このデバイスからのアクセスは初めてなので、セキュリティ確保のためにメールでセキュリティーコードを送信しました。 verification: explanation_html: プロフィール内のリンクの所有者であることを認証することができます。そのためにはリンクされたウェブサイトにMastodonプロフィールへのリンクが含まれている必要があります。リンクにはrel="me"属性を必ず与えなければなりません。リンクのテキストについては重要ではありません。以下は例です: verification: 認証 @@ -1569,5 +1671,5 @@ ja: nickname_hint: セキュリティキーの名前を入力してください not_enabled: まだセキュリティキーを有効にしていません not_supported: このブラウザはセキュリティキーに対応していないようです - otp_required: セキュリティキーを使用するには、まず二段階認証を有効にしてください。 - registered_on: "%{date} に登録" + otp_required: セキュリティキーを使用するには、まず二要素認証を有効にしてください。 + registered_on: "%{date}に登録" diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 29b3715bc..151817ef4 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -462,9 +462,6 @@ ka: new_followers_summary: one: ასევე, არყოფნისას შეგეძინათ ერთი ახალი მიმდევარი! იეი! other: ასევე, არყოფნისას შეგეძინათ %{count} ახალი მიმდევარი! შესანიშნავია! - subject: - one: "1 ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418" - other: "%{count} ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418" title: თქვენს არყოფნაში... favourite: body: 'თქვენი სტატუსი ფავორიტი გახადა %{name}-მა:' diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 99e178512..66d029d7a 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -165,7 +165,6 @@ kab: security_measures: only_password: Awal uffir kan password_and_2fa: Awal uffir d 2FA - password_and_sign_in_token: Ajiṭun n wawal uffir d yimayl shared_inbox_url: Bḍu URL n tbewwaḍt show: created_reports: Eg ineqqisen @@ -649,9 +648,6 @@ kab: digest: action: Wali akk tilγa mention: 'Yuder-ik-id %{name} deg:' - subject: - one: "1 wulɣu seg tirza-inek·inm taneqqarut ar tura \U0001F418" - other: "%{count} ilɣa imaynuten seg tirza-nek·inem taneggarut ar tura \U0001F418" favourite: subject: "%{name} yesmenyaf addad-ik·im" follow: diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 9055b531f..1cf4b3ccf 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -710,9 +710,6 @@ kk: new_followers_summary: one: Сондай-ақ, сіз бір жаңа оқырман таптыңыз! Алақай! other: Сондай-ақ, сіз %{count} жаңа оқырман таптыңыз! Керемет! - subject: - one: "Соңғы кіруіңізден кейін 1 ескертпе келіпті \U0001F418" - other: "Соңғы кіруіңізден кейін %{count} ескертпе келіпті \U0001F418" title: Сіз жоқ кезде... favourite: body: 'Жазбаңызды ұнатып, таңдаулыға қосты %{name}:' diff --git a/config/locales/ko.yml b/config/locales/ko.yml index a8e8e3622..0c1576776 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -49,7 +49,7 @@ ko: silenced_title: 침묵 된 서버들 suspended: 이 서버의 아무도 팔로우 할 수 없으며, 어떤 데이터도 처리되거나 저장 되지 않고 데이터가 교환 되지도 않습니다. suspended_title: 금지된 서버들 - unavailable_content_html: 마스토돈은 일반적으로 별무리에 있는 어떤 서버의 유저와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다. + unavailable_content_html: 마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 유저와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다. user_count_after: other: 명 user_count_before: 사용자 수 @@ -194,7 +194,6 @@ ko: security_measures: only_password: 암호만 password_and_2fa: 암호와 2단계 인증 - password_and_sign_in_token: 암호와 이메일 토큰 sensitive: 민감함 sensitized: 민감함으로 설정됨 shared_inbox_url: 공유된 inbox URL @@ -290,7 +289,7 @@ ko: create_domain_block_html: "%{name} 님이 도메인 %{target}를 차단했습니다" create_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}를 차단했습니다" create_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 만들었습니다" - create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지" + create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지했습니다" demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다" destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다" destroy_custom_emoji_html: "%{name} 님이 %{target} 에모지를 삭제했습니다" @@ -508,6 +507,7 @@ ko: delivery: all: 전체 clear: 전달 에러 초기화 + failing: 실패중 restart: 전달 재시작 stop: 전달 중지 unavailable: 사용불가 @@ -561,7 +561,7 @@ ko: relays: add_new: 릴레이 추가 delete: 삭제 - description_html: "연합 릴레이는 서버들 사이에서 많은 양의 공개 게시물을 구독하고 중개하는 서버입니다. 이것은 중소 규모의 서버에서 별무리를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다." + description_html: "연합 릴레이는 서버들 사이에서 많은 양의 공개 게시물을 구독하고 중개하는 서버입니다. 이것은 중소 규모의 서버에서 연합우주를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다." disable: 비활성화 disabled: 비활성화 됨 enable: 활성화 @@ -789,6 +789,7 @@ ko: other: 지난 주 동안 %{count} 명의 사람들이 공유했습니다 title: 유행하는 링크 usage_comparison: 오늘은 %{today}회 공유되었고, 어제는 %{yesterday}회 공유되었습니다 + only_allowed: 허용된 것만 pending_review: 심사 대기 preview_card_providers: allowed: 이 출처의 링크는 유행 목록에 실릴 수 있습니다 @@ -799,12 +800,12 @@ ko: statuses: allow: 게시물 허용 allow_account: 작성자 허용 - description_html: 당신의 서버가 알기로 현재 많은 수의 공유와 즐겨찾기가 되고 있는 게시물들입니다. 새로운 사용자나 돌아오는 사용자들이 팔로우 할 사람들을 찾는 데 도움이 될 수 있습니다. 작성자를 승인하고, 작성자가 그들의 계정이 다른 계정에게 탐색되도록 설정하지 않는 한 게시물들은 공개적으로 표시되지 않습니다. 또한 각각의 게시물을 별개로 거절할 수도 있습니다. + description_html: 당신의 서버가 알기로 현재 많은 수의 공유와 좋아요가 되고 있는 게시물들입니다. 새로운 사용자나 돌아오는 사용자들이 팔로우 할 사람들을 찾는 데 도움이 될 수 있습니다. 작성자를 승인하고, 작성자가 그들의 계정이 다른 계정에게 탐색되도록 설정하지 않는 한 게시물들은 공개적으로 표시되지 않습니다. 또한 각각의 게시물을 별개로 거절할 수도 있습니다. disallow: 게시물 불허 disallow_account: 작성자 불허 not_discoverable: 작성자가 발견되기를 원치 않습니다 shared_by: - other: "%{friendly_count} 번 공유되고 즐겨찾기 되었습니다" + other: "%{friendly_count} 번 공유되고 마음에 들어했습니다" title: 유행하는 게시물 tags: current_score: 현재 %{score}점 @@ -828,6 +829,7 @@ ko: used_by_over_week: other: 지난 주 동안 %{count} 명의 사람들이 사용했습니다 title: 유행 + trending: 유행중 warning_presets: add_new: 새로 추가 delete: 삭제 @@ -1219,12 +1221,12 @@ ko: new_followers_summary: other: 게다가, 접속하지 않은 동안 %{count} 명의 팔로워가 생겼습니다! subject: - other: "%{count}건의 새로운 알림 \U0001F418" + other: 마지막 방문 이후로 %{count} 건의 새로운 알림 title: 당신이 없는 동안에... favourite: - body: '당신의 게시물을 %{name} 님이 즐겨찾기에 등록했습니다:' - subject: "%{name} 님이 내 게시물을 즐겨찾기에 등록했습니다" - title: 새 즐겨찾기 + body: '당신의 게시물을 %{name} 님이 마음에 들어했습니다:' + subject: "%{name} 님이 내 게시물을 마음에 들어했습니다" + title: 새 좋아요 follow: body: "%{name} 님이 나를 팔로우 했습니다!" subject: "%{name} 님이 나를 팔로우 했습니다" @@ -1322,8 +1324,8 @@ ko: reason_html: "왜 이 과정이 필요하죠?%{instance}는 당신이 가입한 서버가 아닐 것입니다, 당신의 홈 서버로 먼저 가야 합니다." remote_interaction: favourite: - proceed: 즐겨찾기 진행 - prompt: '이 게시물을 즐겨찾기 하려고 합니다:' + proceed: 좋아요 진행 + prompt: '이 게시물을 좋아요 하려고 합니다:' reblog: proceed: 부스트 진행 prompt: '이 게시물을 부스트 하려 합니다:' @@ -1411,7 +1413,7 @@ ko: other: "%{count} 이미지" video: other: "%{count}개의 영상" - boosted_from_html: "%{acct_link} 님으로부터 부스트" + boosted_from_html: "%{acct_link}의 글을 부스트" content_warning: '열람 주의: %{warning}' default_language: 화면 표시 언어와 동일하게 disallowed_hashtags: @@ -1451,10 +1453,10 @@ ko: enabled_hint: 아래의 예외 목록에 해당하지 않는다면, 명시된 기한 이후 당신의 게시물을 자동으로 삭제합니다 exceptions: 예외 explanation: 게시물 삭제는 많은 성능이 필요하기 때문에, 서버에서 바쁘지 않을 때 시간을 들여서 천천히 진행합니다. 이런 이유로, 당신의 게시물은 아마도 정해진 기간보다 좀 더 시간이 지난 이후에 삭제될 것입니다. - ignore_favs: 즐겨찾기 무시 + ignore_favs: 좋아요 무시 ignore_reblogs: 부스트 무시 interaction_exceptions: 상호작용에 기반한 예외들 - interaction_exceptions_explanation: 즐겨찾기나 부스트 수가 설정한 값을 넘은 후 다시 낮아진 경우에는 게시물이 삭제되는 것을 보장하지 못합니다. + interaction_exceptions_explanation: 좋아요나 부스트 수가 설정한 값을 넘은 후 다시 낮아진 경우에는 게시물이 삭제되는 것을 보장하지 못합니다. keep_direct: 다이렉트 메시지 유지 keep_direct_hint: 다이렉트 메시지를 삭제하지 않습니다 keep_media: 미디어가 있는 게시물 유지 @@ -1465,8 +1467,8 @@ ko: keep_polls_hint: 투표를 삭제하지 않습니다 keep_self_bookmark: 북마크된 게시물 유지 keep_self_bookmark_hint: 내 스스로 북마크한 본인의 게시물을 삭제하지 않습니다 - keep_self_fav: 즐겨찾기한 게시물 유지 - keep_self_fav_hint: 내 스스로 즐겨찾기한 본인의 게시물을 삭제하지 않습니다 + keep_self_fav: 마음에 들어한 게시물 유지 + keep_self_fav_hint: 내 스스로 마음에 들어한 본인의 게시물을 삭제하지 않습니다 min_age: '1209600': 2 주 '15778476': 6 개월 @@ -1477,8 +1479,8 @@ ko: '63113904': 2 년 '7889238': 3 개월 min_age_label: 기한 - min_favs: 해당 횟수 이상 즐겨찾기된 게시물 유지 - min_favs_hint: 이 횟수 이상의 즐겨찾기가 된 게시물은 삭제하지 않습니다. 즐겨찾기 수와 관계없이 게시물을 지우고 싶다면 공백으로 두세요 + min_favs: 해당 횟수 이상 좋아요된 게시물 유지 + min_favs_hint: 이 횟수 이상의 좋아요가 된 게시물은 삭제하지 않습니다. 좋아요 수와 관계없이 게시물을 지우고 싶다면 공백으로 두세요 min_reblogs: 해당 횟수 이상 부스트된 게시물 유지 min_reblogs_hint: 이 횟수 이상의 부스트가 된 게시물은 삭제하지 않습니다. 부스트 수와 관계없이 게시물을 지우고 싶다면 공백으로 두세요 stream_entries: @@ -1494,7 +1496,7 @@ ko:
  • 기본 계정 정보: 이 서버에 가입하실 때 사용자명, 이메일 주소, 패스워드 등을 입력 받게 됩니다. 추가적으로 표시되는 이름이나 자기소개, 프로필 이미지, 헤더 이미지 등의 프로필 정보를 입력하게 됩니다. 사용자명, 표시되는 이름, 자기소개, 프로필 이미지와 헤더 이미지는 언제나 공개적으로 게시됩니다.
  • -
  • 게시물, 팔로잉, 기타 공개된 정보: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 즐겨찾기 하는 경우 이는 언제나 공개적으로 제공 됩니다.
  • +
  • 게시물, 팔로잉, 기타 공개된 정보: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 좋아요 하는 경우 이는 언제나 공개적으로 제공 됩니다.
  • DM, 팔로워 공개 게시물: 모든 게시물들은 서버에서 처리되고 저장됩니다. 팔로워 공개 게시물은 당신의 팔로워와 멘션 된 사람들에게 전달이 됩니다. 다이렉트 메시지는 멘션 된 사람들에게만 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송 되고 그곳에 사본이 저장됨을 의미합니다. 우리는 이 게시물들이 권한을 가진 사람들만 열람이 가능하도록 노력을 할 것이지만 다른 서버에서는 이것이 실패할 수도 있습니다. 그러므로 당신의 팔로워들이 속한 서버를 재확인하는 것이 중요합니다. 당신은 새 팔로워를 수동으로 승인하거나 거절하도록 설정을 변경할 수 있습니다. 해당 서버의 운영자는 서버가 받는 메시지를 열람할 수 있다는 것을 항상 염두해 두세요, 그리고 수신자들은 스크린샷을 찍거나 복사하는 등의 방법으로 다시 공유할 수 있습니다. 위험한 정보를 마스토돈을 통해 공유하지 마세요.
  • IP와 기타 메타데이터: 당신이 로그인 하는 경우 IP 주소와 브라우저의 이름을 저장합니다. 모든 세션은 당신이 검토하고 취소할 수 있도록 설정에서 제공 됩니다. 마지막으로 사용 된 IP 주소는 최대 12개월 간 저장됩니다. 또한, 모든 요청에 대해 IP주소를 포함한 정보를 로그에 저장할 수 있습니다.
@@ -1548,7 +1550,7 @@ ko:

당신의 공개 게시물은 네트워크에 속한 다른 서버가 다운로드 할 수 있습니다. 당신의 팔로워나 수신자가 이 서버가 아닌 다른 곳에 존재하는 경우 당신의 공개, 팔로워 공개 게시물은 당신의 팔로워가 존재하는 서버로 전송되며, 다이렉트메시지는 수신자가 존재하는 서버로 전송 됩니다.

-

당신이 계정을 사용하기 위해 응용프로그램을 승인하는 경우 당신이 허용한 권한에 따라 응용프로그램은 당신의 공개 계정정보, 팔로잉 리스트, 팔로워 리스트, 게시물, 즐겨찾기 등에 접근이 가능해집니다. 응용프로그램은 절대로 당신의 이메일 주소나 패스워드에 접근할 수 없습니다.

+

당신이 계정을 사용하기 위해 응용프로그램을 승인하는 경우 당신이 허용한 권한에 따라 응용프로그램은 당신의 공개 계정정보, 팔로잉 리스트, 팔로워 리스트, 게시물, 좋아요 등에 접근이 가능해집니다. 응용프로그램은 절대로 당신의 이메일 주소나 패스워드에 접근할 수 없습니다.


@@ -1564,7 +1566,7 @@ ko:

개인정보 정책의 변경

-

만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 포스트 됩니다.

+

만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 게시됩니다.

이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2018년 3월 7일입니다.

@@ -1608,12 +1610,13 @@ ko: explanation: 당신이 요청한 계정의 풀 백업이 이제 다운로드 가능합니다! subject: 당신의 아카이브를 다운로드 가능합니다 title: 아카이브 테이크 아웃 - sign_in_token: - details: '시도에 대한 상세 내용입니다:' - explanation: '알 수 없는 IP로부터 당신의 계정에 대한 로그인 시도를 감지했습니다. 이것이 당신이라면, 아래의 보안 코드를 로그인 시도 페이지에 입력하세요:' - further_actions: '이것이 당신이 아니라면 암호를 바꾸고 계정의 2-factor 인증을 활성화 하세요. 여기에서 할 수 있습니다:' - subject: 로그인 시도를 확인해 주십시오 - title: 로그인 시도 + suspicious_sign_in: + change_password: 암호 변경 + details: '로그인에 대한 상세 정보입니다:' + explanation: 새로운 IP 주소에서 내 계정에 로그인한 것을 감지했습니다. + further_actions_html: 직접 로그인한 것이 아니라면, 지금 바로 %{action}과 2단계 인증을 활성화하여 계정을 안전하게 보호하시길 권해드립니다. + subject: 계정이 새로운 IP에서 접근됨 + title: 새로운 로그인 warning: appeal: 이의 제출하기 appeal_description: 이것이 오류라고 생각한다면, %{instance}의 중재자에게 이의신청을 할 수 있습니다. @@ -1664,13 +1667,10 @@ ko: title: 환영합니다 %{name} 님! users: follow_limit_reached: 당신은 %{limit}명의 사람을 넘어서 팔로우 할 수 없습니다 - generic_access_help_html: 계정 로그인에 문제가 있나요? %{email} 로 도움을 요청할 수 있습니다 invalid_otp_token: 2단계 인증 코드가 올바르지 않습니다 - invalid_sign_in_token: 잘못된 보안 코드 otp_lost_help_html: 만약 양쪽 모두를 잃어버렸다면 %{email}을 통해 복구할 수 있습니다 seamless_external_login: 외부 서비스를 이용해 로그인 했습니다, 패스워드와 이메일 설정을 할 수 없습니다. signed_in_as: '다음과 같이 로그인 중:' - suspicious_sign_in_confirmation: 이 기기에서 로그인 한 적이 없거나, 로그인 한 지 오래된 것으로보입니다. 본인임을 확인하기 위해 이메일 주소로 보안 코드를 보냈습니다. verification: explanation_html: '당신은 프로필 메타데이터의 링크 소유자임을 검증할 수 있습니다. 이것을 하기 위해서는, 링크 된 웹사이트에서 당신의 마스토돈 프로필을 역으로 링크해야 합니다. 역링크는 반드시 rel="me" 속성을 가지고 있어야 합니다. 링크의 텍스트는 상관이 없습니다. 여기 예시가 있습니다:' verification: 검증 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 1f5554f4b..192cd0b8f 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -199,7 +199,6 @@ ku: security_measures: only_password: Têne borînpeyv password_and_2fa: Borînpeyv û 2FA - password_and_sign_in_token: Borînpeyv û navnîşana e-nameyê sensitive: Hêz-hestiyar sensitized: Wek hestiyar hatiye nîşankirin shared_inbox_url: URLya wergirtiyên parvekirî @@ -520,6 +519,7 @@ ku: delivery: all: Hemû clear: Çewtiyên gihandinê paqij bike + failing: Têkçûn restart: Gihandinê nû va bike stop: Gehandinê rawestîne unavailable: Nederbasdar @@ -1239,8 +1239,8 @@ ku: one: Herwiha, dema tu dûr bûyî te şopînerek nû bi dest xist! Bijî! other: Herwiha, dema tu dûr bûyî te %{count} şopînerek nû bi dest xist! Bijî! subject: - one: "1 agahdarî ji serdana te ya herî dawî ji \U0001F418" - other: "%{count} agahdarî ji serdana te ya herî dawî ji \U0001F418" + one: "1 agahdarî ji serdana te ya herî dawî 🐘" + other: "%{count} agahdarî ji serdana te ya herî dawî 🐘" title: Di tunebûna te de... favourite: body: 'Şandiya te hate bijartin ji alî %{name} ve:' @@ -1635,12 +1635,13 @@ ku: explanation: Te yedekîya tijê ya ajimêrê xwe Mastodonê xwest. Niha ji daxistinê re amade ye! subject: Arşîva te amede ye bo daxistinê title: Pakêtkirina arşîvan - sign_in_token: - details: 'Li vir hûrgiliyên hewldanê hene:' - explanation: 'Me hewildanek têketina ajimêra te ji navnîşana IP ya nenas destnîşan kir. Ger ev tu bî, ji kerema xwe koda ewlehiyê ya jêr binivîsîne di rûpela jêpirsînê de:' - further_actions: 'Ku ev ne tu bî, ji kerema xwe re borînpeyva xwe biguherîne û li ser ajimêra xwe rastkirina du-gavî çalak bike. Tu dikarî wê ji vê derê çê bikî:' - subject: Ji kerema xwe re hewldanên têketinê piştrast bike - title: Hewldanên têketinê + suspicious_sign_in: + change_password: borînpeyva xwe biguherîne + details: 'Li vir hûrgiliyên hewldanên têketinê hene:' + explanation: Me têketineke nû ji ajimêra te ji navnîşaneke IP ya nû dît. + further_actions_html: Ku ev ne tu bû, em ji te re pêşniyar dikin ku tu di tavilê de %{action} bikî û piştrastkirina du-gavî çalak bikî da ku ajimêra te di ewlehiyê de bimîne. + subject: Ajimêra te ji navnîşaneke IP ya nû ve hatiye gihîştin + title: Têketineke nû warning: appeal: Îtîrazekê bişîne appeal_description: Heke tu bawer dikî ku ev şaşetiyeke, tu dikarî îtîrazekê ji karmendên %{instance} re bişînî. @@ -1691,13 +1692,10 @@ ku: title: Bi xêr hatî, %{name}! users: follow_limit_reached: Tu nikarî zêdetirî %{limit} kesan bişopînî - generic_access_help_html: Di gihîştina ajimêrê te de pirsgirêk heye? Tu dikarî ji bo alîkariyê bi %{email} re têkilî deyne invalid_otp_token: Koda du-gavî ya nelê - invalid_sign_in_token: Kilîda ewlehiyê a nelê otp_lost_help_html: Heke te gihîştina herduyan ji dest da, dibe ku tu bi %{email} re têkilî deyne seamless_external_login: Te bi rajekarke biyanî re têketina xwe kir, ji ber vê yekê borînpeyv û e-name nayê bikaranîn. signed_in_as: 'Têketin wekî:' - suspicious_sign_in_confirmation: Xuya dike ku te berê têketin ji vê amûrê nekiriye, ji ber vê yekê em kodeke ewlehiyê ji navnîşana e-nameya te re dişînin da ku piştrast bikî ku tu ye an na. verification: explanation_html: 'Tu dikarî xwe wekî xwediyê girêdanên li daneyê meta profîla xwe piştrast bikî. Ji bo vê, hewceye girêda malperê di nav profîla te ya mastodonê de girêdanekî paş hebe. Girêdana paşhewceye taybetîyek rel="me"hebe. Naveroka nivîsa girêdanê ne girîng e. Ev jî mînakek e:' verification: Piştrastkirin diff --git a/config/locales/lv.yml b/config/locales/lv.yml index d695c5191..c97a183f9 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -169,6 +169,10 @@ lv: pending: Gaida pārskatīšanu perform_full_suspension: Apturēt previous_strikes: Iepriekšējie brīdinājumi + previous_strikes_description_html: + one: Šim kontam ir viens brīdinājums. + other: Šim kontam ir %{count} brīdinājumi. + zero: Šim kontam ir %{count} brīdinājumi. promote: Veicināt protocol: Protokols public: Publisks @@ -200,7 +204,6 @@ lv: security_measures: only_password: Tikai parole password_and_2fa: Parole un 2FA - password_and_sign_in_token: Parole un e-pasta marķieris sensitive: Sensitīvs sensitized: Atzīmēts kā sensitīvs shared_inbox_url: Koplietotās iesūtnes URL @@ -526,6 +529,7 @@ lv: delivery: all: Visas clear: Notīrīt piegādes kļūdas + failing: Neizdošanās restart: Pārstartēt piegādi stop: Apturēt piegādi unavailable: Nav pieejams @@ -534,6 +538,10 @@ lv: delivery_error_hint: Ja piegāde nav iespējama %{count} dienas, tā tiks automātiski atzīmēta kā nepiegādājama. destroyed_msg: Dati no %{domain} tagad ir gaidīšanas rindā, lai tos drīzumā dzēstu. empty: Domēni nav atrasti. + known_accounts: + one: "%{count} zināms konts" + other: "%{count} zināmi konti" + zero: "%{count} zināmu kontu" moderation: all: Visas limited: Ierobežotās @@ -604,7 +612,7 @@ lv: action_taken_by: Veiktā darbība actions: delete_description_html: Raksti, par kurām ziņots, tiks dzēsti, un tiks reģistrēts brīdinājums, lai palīdzētu tev izvērst turpmākos pārkāpumus saistībā ar to pašu kontu. - mark_as_sensitive_description_html: Mediju faili ziņojumos, par kuriem ziņots, tiks atzīmēti kā sensitīvi, un tiks reģistrēts brīdinājums, lai palīdzētu tev palielināt tā paša konta turpmākās refrakcijas. + mark_as_sensitive_description_html: Mediju faili ziņojumos, par kuriem ziņots, tiks atzīmēti kā sensitīvi, un tiks reģistrēts brīdinājums, lai palīdzētu tev izvērst turpmākus pārkāpumus saistībā ar to pašu kontu. other_description_html: Skatīt vairāk iespēju kontrolēt konta uzvedību un pielāgot saziņu ar paziņoto kontu. resolve_description_html: Pret norādīto kontu netiks veiktas nekādas darbības, netiks reģistrēts brīdinājums, un ziņojums tiks slēgts. silence_description_html: Profils būs redzams tikai tiem, kas jau tam seko vai manuāli apskata, stingri ierobežojot tās sasniedzamību. Šo vienmēr var atgriezt. @@ -803,6 +811,10 @@ lv: description_html: Šīs ir saites, kuras pašlaik bieži koplieto konti, no kuriem tavs serveris redz ziņas. Tas var palīdzēt taviem lietotājiem uzzināt, kas notiek pasaulē. Kamēr tu neapstiprini izdevēju, neviena saite netiek rādīta publiski. Vari arī atļaut vai noraidīt atsevišķas saites. disallow: Neatļaut saiti disallow_provider: Neatļaut publicētāju + shared_by_over_week: + one: Pēdējās nedēļas laikā kopīgoja viena persona + other: Pēdējās nedēļas laikā kopīgoja %{count} personas + zero: Pēdējās nedēļas laikā kopīgoja %{count} personas title: Populārākās saites usage_comparison: Šodien kopīgots %{today} reizes, salīdzinot ar %{yesterday} vakar pending_review: Gaida pārskatīšanu @@ -843,6 +855,10 @@ lv: trending_rank: 'Populārākie #%{rank}' usable: Var tikt lietots usage_comparison: Šodien lietots %{today} reizes, salīdzinot ar %{yesterday} vakar + used_by_over_week: + one: Pēdējās nedēļas laikā izmantoja viens cilvēks + other: Pēdējās nedēļas laikā izmantoja %{count} personas + zero: Pēdējās nedēļas laikā izmantoja %{count} personas title: Tendences warning_presets: add_new: Pievienot jaunu @@ -1241,9 +1257,9 @@ lv: other: Turklāt, atrodoties prom, esi ieguvis %{count} jaunus sekotājus! Apbrīnojami! zero: "%{count} jaunu sekotāju!" subject: - one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma \U0001F418" - other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma \U0001F418" - zero: "%{count} jaunu paziņojumu" + one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma 🐘" + other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma 🐘" + zero: "%{count} jaunu paziņojumu kopš tava pēdējā apmeklējuma" title: Tavas prombūtnes laikā... favourite: body: 'Tavu ziņu izlasei pievienoja %{name}:' @@ -1656,12 +1672,13 @@ lv: explanation: Tu pieprasīji pilnu sava Mastodon konta dublējumu. Tagad tas ir gatavs lejupielādei! subject: Tavs arhīvs ir gatavs lejupielādei title: Arhīva līdzņemšana - sign_in_token: - details: 'Šeit ir sīkāka informācija par mēģinājumu:' - explanation: 'Mēs atklājām mēģinājumu pierakstīties tavā kontā no neatpazītas IP adreses. Ja tas esi tu, lūdzu, ievadi zemāk esošo drošības kodu pierakstīšanās izaicinājumu lapā:' - further_actions: 'Ja tas nebiji tu, lūdzu, nomaini paroli un savā kontā iespējo divfaktoru autentifikāciju. To var izdarīt šeit:' - subject: Lūdzu, apstiprini pierakstīšanās mēģinājumu - title: Pierakstīšanās mēģinājums + suspicious_sign_in: + change_password: mainīt paroli + details: 'Šeit ir detalizēta informācija par pierakstīšanos:' + explanation: Esam konstatējuši pierakstīšanos tavā kontā no jaunas IP adreses. + further_actions_html: Ja tas nebiji tu, iesakām nekavējoties %{action} un iespējot divu faktoru autentifikāciju, lai tavs konts būtu drošībā. + subject: Tavam kontam ir piekļūts no jaunas IP adreses + title: Jauna pierakstīšanās warning: appeal: Iesniegt apelāciju appeal_description: Ja uzskatāt, ka tā ir kļūda, varat iesniegt apelāciju %{instance} darbiniekiem. @@ -1712,13 +1729,10 @@ lv: title: Laipni lūgts uz borta, %{name}! users: follow_limit_reached: Tu nevari sekot vairāk par %{limit} cilvēkiem - generic_access_help_html: Vai nevari piekļūt savam kontam? Lai saņemtu palīdzību, tu vari sazināties ar %{email} invalid_otp_token: Nederīgs divfaktora kods - invalid_sign_in_token: Nederīgs drošības kods otp_lost_help_html: Ja esi zaudējis piekļuvi abiem, tu vari sazināties ar %{email} seamless_external_login: Tu esi pieteicies, izmantojot ārēju pakalpojumu, tāpēc paroles un e-pasta iestatījumi nav pieejami. signed_in_as: 'Pierakstījies kā:' - suspicious_sign_in_confirmation: Šķiet, ka tu iepriekš neesi pieteicies no šīs ierīces, tāpēc mēs nosūtām drošības kodu uz tavu e-pasta adresi, lai apstiprinātu, ka tas esi tu. verification: explanation_html: 'Tu vari apstiprināt sevi kā sava profila metadatos esošo saišu īpašnieku. Lai to izdarītu, saistītajā vietnē ir jābūt saitei uz tavu Mastodon profilu. Atpakaļsaitē jābūt atribūtam rel="me". Saites teksta saturam nav nozīmes. Šeit ir piemērs:' verification: Pārbaude diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 276fdb9b2..8e12893f4 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -949,9 +949,6 @@ nl: new_followers_summary: one: Je hebt trouwens sinds je weg was er ook een nieuwe volger bijgekregen! Hoera! other: Je hebt trouwens sinds je weg was er ook %{count} nieuwe volgers bijgekregen! Fantastisch! - subject: - one: "1 nieuwe melding sinds jouw laatste bezoek \U0001F418" - other: "%{count} nieuwe meldingen sinds jouw laatste bezoek \U0001F418" title: Tijdens jouw afwezigheid... favourite: body: 'Jouw bericht werd door %{name} aan diens favorieten toegevoegd:' @@ -1290,12 +1287,6 @@ nl: explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload! subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen - sign_in_token: - details: 'Hier zijn details van de poging:' - explanation: 'We hebben een inlogpoging op je account ontdekt vanaf een onbekend IP-adres. Als jij dit bent, vul dan de beveiligingscode hieronder in op de inlog-uitdagingspagina:' - further_actions: 'Als jij dit niet was, verander dan je wachtwoord en schakel tweestapsverificatie voor je account in. Dat kun je hier doen:' - subject: Bevestig de inlogpoging - title: Inlogpoging warning: subject: disable: Jouw account %{acct} is bevroren @@ -1326,13 +1317,10 @@ nl: title: Welkom aan boord %{name}! users: follow_limit_reached: Je kunt niet meer dan %{limit} accounts volgen - generic_access_help_html: Problemen met toegang tot je account? Neem dan contact op met %{email} voor assistentie invalid_otp_token: Ongeldige tweestaps-toegangscode - invalid_sign_in_token: Ongeldige beveiligingscode otp_lost_help_html: Als je toegang tot beiden kwijt bent geraakt, neem dan contact op via %{email} seamless_external_login: Je bent ingelogd via een externe dienst, daarom zijn wachtwoorden en e-mailinstellingen niet beschikbaar. signed_in_as: 'Ingelogd als:' - suspicious_sign_in_confirmation: Het lijkt er op dat je nog niet eerder op dit apparaat bent ingelogd, dus sturen we een beveiligingscode naar jouw e-mailadres om te bevestigen dat jij het bent. verification: explanation_html: 'Je kunt jezelf verifiëren als de eigenaar van de links in de metadata van jouw profiel. Hiervoor moet op de gelinkte website een link terug naar jouw Mastodonprofiel staan. Deze link moet het rel="me"-attribuut bevatten. De omschrijving van de link maakt niet uit. Hier is een voorbeeld:' verification: Verificatie diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 3af989a14..48191ce98 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -189,7 +189,6 @@ nn: security_measures: only_password: Bare passord password_and_2fa: Passord og 2FA - password_and_sign_in_token: Passord og e-post token sensitized: Merket som følsom shared_inbox_url: Delt Innboks URL show: @@ -909,9 +908,6 @@ nn: new_followers_summary: one: Du har forresten fått deg ein ny fylgjar mens du var borte! Hurra! other: Du har forresten fått deg %{count} nye fylgjarar mens du var borte! Hurra! - subject: - one: "1 nytt varsel sidan siste gong du var innom \U0001F418" - other: "%{count} nye varsel sidan siste gong du var innom \U0001F418" title: Mens du var borte... favourite: body: 'Statusen din vart merkt som favoritt av %{name}:' @@ -1249,12 +1245,6 @@ nn: backup_ready: explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting! subject: Arkivet ditt er klart til å lastes ned - sign_in_token: - details: 'Her er forsøksdetaljane:' - explanation: 'Vi oppdaget et forsøk på å logge på kontoen fra en ukjent IP-adresse. Hvis dette er deg, vennligst skriv inn sikkerhetskoden nedenfor på påloggingssiden:' - further_actions: 'Om dette ikkje var deg, so venlegast endra passordet ditt og skruv på tostegsgodkjenning på kontoen din. Du kan gjera det her:' - subject: Venlegast stadfest forsøket på å logga inn - title: Forsøk på å logga inn warning: subject: disable: Kontoen din, %{acct}, har blitt fryst @@ -1285,13 +1275,10 @@ nn: title: Velkomen om bord, %{name}! users: follow_limit_reached: Du kan ikkje fylgja fleire enn %{limit} folk - generic_access_help_html: Har du vanskar med tilgjenge til kontoen din? Tak gjerne kontakt med %{email} invalid_otp_token: Ugyldig tostegskode - invalid_sign_in_token: Ugild trygdenykel otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email} seamless_external_login: Du er logga inn gjennom eit eksternt reiskap, so passord og e-postinstillingar er ikkje tilgjengelege. signed_in_as: 'Logga inn som:' - suspicious_sign_in_confirmation: Det verkar ikkje som du har logga inn frå dette reiskapet før, og du har ikkje logga inn på ei stund, difor sender me deg ein trygdekode til e-post-addressa di for å stadfesta at det er deg. verification: explanation_html: 'Du kan bekrefte at du selv er eieren av lenkene i din profilmetadata. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake ha en rel="me"-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:' verification: Stadfesting diff --git a/config/locales/no.yml b/config/locales/no.yml index a7ba74063..9f0d7b8c4 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -189,7 +189,6 @@ security_measures: only_password: Bare passord password_and_2fa: Passord og 2FA - password_and_sign_in_token: Passord og e-post token sensitized: Merket som følsom shared_inbox_url: Delt Innboks URL show: @@ -893,9 +892,6 @@ new_followers_summary: one: I tillegg har du fått en ny følger mens du var borte. Hurra! other: I tillegg har du har fått %{count} nye følgere mens du var borte! Imponerende! - subject: - one: "1 ny hendelse siden ditt siste besøk \U0001F418" - other: "%{count} nye hendelser siden ditt siste besøk \U0001F418" title: I ditt fravær… favourite: body: 'Statusen din ble likt av %{name}:' @@ -1230,12 +1226,6 @@ backup_ready: explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting! subject: Arkivet ditt er klart til å lastes ned - sign_in_token: - details: 'Her er detaljene om forsøket:' - explanation: 'Vi oppdaget et forsøk på å logge på kontoen fra en ukjent IP-adresse. Hvis dette er deg, vennligst skriv inn sikkerhetskoden nedenfor på påloggingssiden:' - further_actions: 'Hvis dette ikke var deg, vennligst endre passordet ditt og aktivere to-faktor autentisering på kontoen din. Du kan gjøre det her:' - subject: Bekreft forsøk på å logge inn - title: Påloggingsforsøk warning: subject: disable: Kontoen din, %{acct}, har blitt fryst @@ -1266,13 +1256,10 @@ title: Velkommen ombord, %{name}! users: follow_limit_reached: Du kan ikke følge mer enn %{limit} personer - generic_access_help_html: Problemer med å få tilgang til din konto? Du kan kontakte %{email} for assistanse invalid_otp_token: Ugyldig to-faktorkode - invalid_sign_in_token: Ugyldig sikkerhetskode otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email} seamless_external_login: Du er logget inn via en ekstern tjeneste, så passord og e-post innstillinger er ikke tilgjengelige. signed_in_as: 'Innlogget som:' - suspicious_sign_in_confirmation: Du ser ikke ut til å ha logget inn fra denne enheten før, og du har ikke logget inn en stund, så vi sender en sikkerhetskode til din e-postadresse for å bekrefte at det er deg. verification: explanation_html: 'Du kan bekrefte at du selv er eieren av lenkene i din profilmetadata. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake ha en rel="me"-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:' verification: Bekreftelse diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 4654d5e27..2a194350d 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -172,7 +172,6 @@ oc: security_measures: only_password: Sonque senhal password_and_2fa: Senhal e 2FA - password_and_sign_in_token: Senhal e geton via mail sensitive: Sensible sensitized: marcar coma sensible shared_inbox_url: URL de recepcion partejada @@ -813,9 +812,6 @@ oc: new_followers_summary: one: Avètz un nòu seguidor dempuèi vòstra darrièra visita ! Ouà ! other: Avètz %{count} nòus seguidors dempuèi vòstra darrièra visita ! Qué crane ! - subject: - one: "Una nòva notificacion dempuèi vòstra darrièra visita \U0001F418" - other: "%{count} nòvas notificacions dempuèi vòstra darrièra visita \U0001F418" title: Pendent vòstra abséncia… favourite: body: "%{name} a mes vòstre estatut en favorit :" @@ -1183,7 +1179,6 @@ oc: users: follow_limit_reached: Podètz pas sègre mai de %{limit} personas invalid_otp_token: Còdi d’autentificacion en dos temps invalid - invalid_sign_in_token: Còdi de seguretat invalid otp_lost_help_html: Se perdatz l’accès al dos, podètz benlèu contactar %{email} seamless_external_login: Sètz connectat via un servici extèrn, los paramètres de senhal e de corrièl son doncas pas disponibles. signed_in_as: 'Session a :' diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 15755bde7..7a322a730 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -16,6 +16,7 @@ pl: contact: Kontakt contact_missing: Nie ustawiono contact_unavailable: Nie dotyczy + continue_to_web: Kontynuuj przez aplikację webową discover_users: Odkrywaj użytkowników documentation: Dokumentacja federation_hint_html: Z kontem na %{instance}, możesz śledzić użytkowników każdego serwera Mastodona i nie tylko. @@ -25,6 +26,8 @@ pl: To konto jest wirtualnym nadawcą, używanym do reprezentacji serwera, a nie jakiegokolwiek użytkownika. Jest używane w celu federowania i nie powinno być blokowane, chyba że chcesz zablokować całą instację, w takim przypadku użyj blokady domeny. learn_more: Dowiedz się więcej + logged_in_as_html: Jesteś obecnie zalogowany/a jako %{username}. + logout_before_registering: Jesteś już zalogowany/a. privacy_policy: Polityka prywatności rules: Regulamin serwera rules_html: 'Poniżej znajduje się podsumowanie zasad, których musisz przestrzegać, jeśli chcesz mieć konto na tym serwerze Mastodona:' @@ -201,7 +204,6 @@ pl: security_measures: only_password: Tylko hasło password_and_2fa: Hasło i 2FA - password_and_sign_in_token: Hasło i token e-mail sensitive: Wrażliwe sensitized: oznaczono jako wrażliwe shared_inbox_url: Adres udostępnianej skrzynki @@ -374,6 +376,7 @@ pl: enable: Włącz enabled: Włączone enabled_msg: Pomyślnie przywrócono emoji + image_hint: PNG lub GIF do %{size} list: Dodaj do listy listed: Widoczne new: @@ -485,11 +488,36 @@ pl: title: Polecane konta unsuppress: Przywróć polecenie śledzenia konta instances: + availability: + failure_threshold_reached: Próg niepowodzenia osiągnięty dnia %{date}. + no_failures_recorded: Brak błędów w rejestrze. + title: Dostępność + warning: Ostatnia próba połączenia z tym serwerem zakończyła się niepowodzeniem back_to_all: Wszystkie back_to_limited: Ograniczone back_to_warning: Ostrzeżenie by_domain: Domena confirm_purge: Czy na pewno chcesz trwale usunąć dane z tej domeny? + content_policies: + comment: Wewnętrzna notatka + description_html: Możesz zdefiniować zasady treści, które zostaną zastosowane do wszystkich kont z tej domeny i jej subdomen. + policies: + reject_media: Odrzucaj media + reject_reports: Odrzucaj zgłoszenia + silence: Ogranicz + suspend: Zawieś + policy: Polityka + reason: Powód publiczny + title: Polityki zawartości + dashboard: + instance_accounts_dimension: Najczęściej śledzone konta + instance_accounts_measure: przechowywane konta + instance_followers_measure: nasi śledzący tam + instance_follows_measure: ich śledzący tutaj + instance_languages_dimension: Najpopularniejsze języki + instance_media_attachments_measure: przechowywane załączniki multimedialne + instance_reports_measure: zgłoszenia dotyczące ich + instance_statuses_measure: przechowywane wpisy delivery: all: Wszystkie clear: Wyczyść błędy w doręczaniu @@ -508,12 +536,14 @@ pl: private_comment: Prywatny komentarz public_comment: Publiczny komentarz purge: Wyczyść + purge_description_html: Jeśli uważasz, że ta domena została zamknięta na dobre, możesz usunąć wszystkie rejestry konta i powiązane dane z tej domeny z pamięci. Proces ten może chwilę potrwać. title: Znane instancje total_blocked_by_us: Zablokowane przez nas total_followed_by_them: Śledzeni przez nich total_followed_by_us: Śledzeni przez nas total_reported: Zgłoszenia dotyczące ich total_storage: Załączniki multimedialne + totals_time_period_hint_html: Poniższe sumy zawierają dane od początku serwera. invites: deactivate_all: Unieważnij wszystkie filter: @@ -570,7 +600,7 @@ pl: action_taken_by: Działanie podjęte przez actions: delete_description_html: Zgłoszone posty zostaną usunięte, a zdarzenie zostanie zapisane, aby pomóc w eskalacji przyszłych wykroczeń na tym samym koncie. - mark_as_sensitive_description_html: Media w zgłaszanych postach zostaną oznaczone jako wrażliwe, a ostrzeżenie zostanie nagane, aby pomóc w eskalacji przyszłych przewinień na tym samym koncie. + mark_as_sensitive_description_html: Media w zgłaszanych postach zostaną oznaczone jako wrażliwe, a ostrzeżenie zostanie nagrane, aby pomóc w eskalacji przyszłych przewinień na tym samym koncie. other_description_html: Zobacz więcej opcji do kontrolowania zachowania konta i dostosuj komunikację do zgłoszonego konta. resolve_description_html: Nie zostaną podjęte żadne działania przeciwko zgłoszonemu sprawozdaniu, zdarzenie nie zostanie zarejestrowane, a zgłoszenie zostanie zamknięte. silence_description_html: Profil będzie widoczny tylko dla tych, którzy go już obserwują lub szukaj ręcznie, poważnie ograniczając jego zasięg. Może być zawsze cofnięty. @@ -603,6 +633,7 @@ pl: title: Notatki notes_description_html: Przeglądaj i zostaw notatki innym moderatorom i sobie samemu quick_actions_description_html: 'Wykonaj szybkie działanie lub przewiń w dół, aby zobaczyć zgłoszoną zawartość:' + remote_user_placeholder: zdalny użytkownik z %{instance} reopen: Otwórz ponownie report: 'Zgłoszenie #%{id}' reported_account: Zgłoszone konto @@ -770,17 +801,21 @@ pl: disallow_provider: Nie zezwalaj na wydawcę title: Popularne linki usage_comparison: Udostępnione %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj + only_allowed: Tylko dozwolone pending_review: Oczekuje na przegląd preview_card_providers: allowed: Linki od tego wydawcy mogą podlegać trendom + description_html: Są to domeny, z których linki są często udostępniane na Twoim serwerze. Linki nie będą się rozwijały publicznie, chyba że domena linku zostanie zatwierdzona. Twoja zgoda (lub odrzucenie) rozciąga się na subdomeny. rejected: Linki od tego wydawcy nie mogą podlegać trendom title: Wydawcy rejected: Odrzucono statuses: allow: Zezwól na post allow_account: Zezwól na autora + description_html: Są to wpisy, o których Twój serwer wie i które są obecnie często udostępniane i dodawane do ulubionych. Może to pomóc nowym i powracającym użytkownikom znaleźć więcej osób do śledzenia. Żadne posty nie są wyświetlane publicznie, dopóki nie zatwierdzisz autora, a autor ustawi zezwolenie na wyświetlanie się w katalogu. Możesz również zezwolić lub odrzucić poszczególne posty. disallow: Nie zezwalaj na post disallow_account: Nie zezwalaj na autora + not_discoverable: Autor nie włączył opcji, by być wyświetlany w katalogu title: Popularne teraz tags: current_score: Bieżący wynik %{score} @@ -790,6 +825,7 @@ pl: tag_servers_dimension: Najlepsze serwery tag_servers_measure: różne serwery tag_uses_measure: użyć łącznie + description_html: To są hasztagi, które obecnie pojawiają się w wielu wpisach, które widzisz na serwerze. Może to pomóc Twoim użytkownikom dowiedzieć się, o czym obecnie ludzie najchętniej rozmawiają. Żadne hasztagi nie są wyświetlane publicznie, dopóki ich nie zaakceptujesz. listable: Można zasugerować not_listable: Nie można zasugerować not_trendable: Nie pojawia się pod trendami @@ -800,7 +836,13 @@ pl: trending_rank: 'Popularne #%{rank}' usable: Może być użyty usage_comparison: Używane %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj + used_by_over_week: + few: Użyte przez %{count} osoby w ciągu ostatniego tygodnia + many: Użyte przez %{count} osób w ciągu ostatniego tygodnia + one: Użyte przez jedną osobę w ciągu ostatniego tygodnia + other: Użyte przez %{count} osób w ciągu ostatniego tygodnia title: Na czasie + trending: Popularne warning_presets: add_new: Dodaj nowy delete: Usuń @@ -831,6 +873,17 @@ pl: body: 'Następujące elementy potrzebują recenzji zanim będą mogły być wyświetlane publicznie:' new_trending_links: no_approved_links: Obecnie nie ma zatwierdzonych linków trendów. + requirements: 'Każdy z tych kandydatów może przekroczyć #%{rank} zatwierdzonych popularnych linków, który wynosi obecnie "%{lowest_link_title}" z wynikiem %{lowest_link_score}.' + title: Popularne linki + new_trending_statuses: + no_approved_statuses: Obecnie nie ma zatwierdzonych popularnych linków. + requirements: 'Każdy z tych kandydatów może przekroczyć #%{rank} zatwierdzonych popularnych teraz wpisów, który wynosi obecnie %{lowest_status_url} z wynikiem %{lowest_status_score}.' + title: Popularne teraz + new_trending_tags: + no_approved_tags: Obecnie nie ma żadnych zatwierdzonych popularnych hasztagów. + requirements: 'Każdy z tych kandydatów może przekroczyć #%{rank} zatwierdzonych popularnych teraz hasztagów, który wynosi obecnie %{lowest_tag_name} z wynikiem %{lowest_tag_score}.' + title: Popularne hasztagi + subject: Nowe popularne do przeglądu na %{instance} aliases: add_new: Utwórz alias created_msg: Pomyślnie utworzono nowy alias. Możesz teraz rozpocząć przenoszenie ze starego konta. @@ -904,8 +957,10 @@ pl: status: account_status: Stan konta confirming: Oczekiwanie na potwierdzenie adresu e-mail. + functional: Twoje konto jest w pełni funkcjonalne. pending: Twoje zgłoszenie czeka na zatwierdzenie przez nas. Może to trochę potrwać. Jeżeli zgłoszenie zostanie przyjęte, otrzymasz wiadomość e-mail. redirecting_to: Twoje konto jest nieaktywne, ponieważ obecnie przekierowuje je na %{acct}. + view_strikes: Zobacz dawne ostrzeżenia nałożone na twoje konto too_fast: Zbyt szybko przesłano formularz, spróbuj ponownie. trouble_logging_in: Masz problem z zalogowaniem się? use_security_key: Użyj klucza bezpieczeństwa @@ -981,6 +1036,7 @@ pl: submit: Zgłoś odwołanie associated_report: Powiązany raport created_at: Data + description_html: Są to działania podjęte przeciwko Twojemu kontu i ostrzeżenia wysłane do ciebie przez administrację %{instance}. recipient: Adresowane do status: 'Post #%{id}' status_removed: Post został już usunięty z systemu @@ -1187,10 +1243,10 @@ pl: one: Dodatkowo, w czasie nieobecności zaczęła śledzić Cię jedna osoba Gratulacje! other: Dodatkowo, zaczęło Cię śledzić %{count} nowych osób! Wspaniale! subject: - few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty \U0001F418" - many: "%{count} nowych powiadomień od Twojej ostatniej wizyty \U0001F418" - one: "1 nowe powiadomienie od Twojej ostatniej wizyty \U0001F418" - other: "%{count} nowych powiadomień od Twojej ostatniej wizyty \U0001F418" + few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty 🐘" + many: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" + one: "1 nowe powiadomienie od Twojej ostatniej wizyty 🐘" + other: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" title: W trakcie Twojej nieobecności… favourite: body: 'Twój wpis został polubiony przez %{name}:' @@ -1218,6 +1274,8 @@ pl: title: Nowe podbicie status: subject: "%{name} właśnie opublikował(a) wpis" + update: + subject: "%{name} edytował/a wpis" notifications: email_events: 'Powiadamiaj e-mailem o:' email_events_hint: 'Wybierz wydarzenia, o których chcesz otrzymywać powiadomienia:' @@ -1368,6 +1426,7 @@ pl: profile: Profil relationships: Śledzeni i śledzący statuses_cleanup: Automatyczne usuwanie posta + strikes: Ostrzeżenia moderacyjne two_factor_authentication: Uwierzytelnianie dwuetapowe webauthn_authentication: Klucze bezpieczeństwa statuses: @@ -1396,6 +1455,7 @@ pl: many: 'zawiera niedozwolone hashtagi: %{tags}' one: 'zawiera niedozwolony hashtag: %{tags}' other: 'zawiera niedozwolone hashtagi: %{tags}' + edited_at_html: Edytowane %{date} errors: in_reply_not_found: Post, na który próbujesz odpowiedzieć, nie istnieje. open_in_web: Otwórz w przeglądarce @@ -1458,7 +1518,7 @@ pl: '2629746': 1 miesiąc '31556952': 1 rok '5259492': 2 miesiące - '604800': 1 week + '604800': 1 tydzień '63113904': 2 lata '7889238': 3 miesiące min_age_label: Próg wieku @@ -1582,21 +1642,32 @@ pl: user_mailer: appeal_approved: action: Przejdź do swojego konta + explanation: Twoje odwołanie dotyczące ostrzeżenia nałożonego na twoje konto dnia %{strike_date}, które zostało wysłane dnia %{appeal_date} zostało zatwierdzone. Twoje konto jest ponownie w dobrej kondycji. + subject: Twoje odwołanie z dnia %{date} zostało zatwierdzone + title: Odwołanie zatwierdzone + appeal_rejected: + explanation: Twoje odwołanie dotyczące ostrzeżenia nałożonego na twoje konto dnia %{strike_date}, które zostało wysłane dnia %{appeal_date} zostało odrzucone. + subject: Twoje odwołanie z dnia %{date} zostało odrzucone + title: Odwołanie odrzucone backup_ready: explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ona dostępna do pobrania! subject: Twoje archiwum jest gotowe do pobrania title: Odbiór archiwum - sign_in_token: - details: 'Oto szczegóły próby:' - explanation: 'Wykryliśmy próbę zalogowania na Twoje konto z adresu IP którego nie możemy rozpoznać. Jeżeli to Ty, wprowadź poniższy kod na stronie logowania:' - further_actions: 'Jeśli to nie Ty, zmień swoje hasło i włącz weryfikację dwuetapową na swoim koncie. Możesz to zrobić tutaj:' - subject: Potwierdź próbę zalogowania - title: Próba logowania + suspicious_sign_in: + change_password: zmień hasło + details: 'Oto szczegóły logowania:' + explanation: Wykryliśmy logowanie na Twoje konto z nowego adresu IP. + further_actions_html: Jeśli to nie Ty, zalecamy %{action} natychmiastowo i włącz uwierzytelnianie dwuetapowe, aby Twoje konto było bezpieczne. + subject: Uzyskano dostęp do twojego konta z nowego adresu IP + title: Nowe logowanie warning: + appeal: Złóż odwołanie + appeal_description: Jeśli uważasz, że zaszło nieporozumienie, możesz złożyć odwołanie do zespołu %{instance}. categories: spam: Spam violation: Zawartość narusza następujące wytyczne społeczności explanation: + delete_statuses: Stwierdzono, że niektóre z twoich wpisów łamią jedną lub więcej wytycznych dla społeczności, przez co zostały usunięte przez moderatorów %{instance}. disable: Nie możesz już używać swojego konta, ale Twój profil i inne dane pozostają nienaruszone. Możesz poprosić o kopię swoich danych, zmienić ustawienia konta lub usunąć swoje konto. mark_statuses_as_sensitive: Niektóre z Twoich postów zostały oznaczone jako wrażliwe przez moderatorów %{instance}. Oznacza to, że ludzie będą musieli dotknąć mediów w postach przed wyświetleniem podglądu. Możesz oznaczyć media jako wrażliwe podczas publikowania w przyszłości. sensitive: Od teraz wszystkie przesłane pliki multimedialne będą oznaczone jako wrażliwe i ukryte za ostrzeżeniem kliknięcia. @@ -1639,13 +1710,10 @@ pl: title: Witaj na pokładzie, %{name}! users: follow_limit_reached: Nie możesz śledzić więcej niż %{limit} osób - generic_access_help_html: Nie możesz uzyskać dostępu do konta? Skontaktuj się z %{email} aby uzyskać pomoc invalid_otp_token: Kod uwierzytelniający jest niepoprawny - invalid_sign_in_token: Nieprawidłowy kod zabezpieczający otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email} seamless_external_login: Zalogowano z użyciem zewnętrznej usługi, więc ustawienia hasła i adresu e-mail nie są dostępne. signed_in_as: 'Zalogowany jako:' - suspicious_sign_in_confirmation: Wygląda na to, że nie logowałeś się wcześniej z tego urządzenia i przez jakiś czas nie logowałeś się, więc wysłaliśmy na Twój adres e-mail kod zabezpieczający, aby potwierdzić, że to Ty. verification: explanation_html: 'Możesz zweryfikować siebie jako właściciela stron, do których odnośniki znajdują się w metadanych. Aby to zrobić, strona musi zawierać odnośnik do Twojego profilu na Mastodonie. Odnośnik musi zawierać atrybut rel="me". Jego zawartość nie ma znaczenia. Przykład:' verification: Weryfikacja diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 1d0de0d4a..1a83cc022 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -25,6 +25,7 @@ pt-BR: Esta conta é um ator virtual usado para representar o próprio servidor e não qualquer usuário individual. É usado para propósitos de federação e não deve ser bloqueado a menos que queira bloquear toda a instância, o que no caso devia usar um bloqueio de domínio. learn_more: Saiba mais + logged_in_as_html: Você está atualmente logado como %{username}. logout_before_registering: Já está logado. privacy_policy: Política de Privacidade rules: Regras do servidor @@ -193,7 +194,6 @@ pt-BR: security_measures: only_password: Somente senha password_and_2fa: Senha e 2FA - password_and_sign_in_token: Token de senha e e-mail sensitive: Sensíveis sensitized: marcadas como sensíveis shared_inbox_url: Link da caixa de entrada compartilhada @@ -1064,9 +1064,6 @@ pt-BR: new_followers_summary: one: Você tem um novo seguidor! Uia! other: Você tem %{count} novos seguidores! AÊÊÊ! - subject: - one: "Uma nova notificação desde o seu último acesso \U0001F418" - other: "%{count} novas notificações desde o seu último acesso \U0001F418" title: Enquanto você estava ausente... favourite: body: "%{name} favoritou seu toot:" @@ -1448,12 +1445,6 @@ pt-BR: explanation: Você pediu um backup completo da sua conta no Mastodon. E agora está pronto para ser baixado! subject: Seu arquivo está pronto para ser baixado title: Baixar arquivo - sign_in_token: - details: 'Aqui estão os detalhes da tentativa:' - explanation: 'Detectamos uma tentativa de acessar sua conta a partir de um endereço IP não reconhecido. Se for você, insira o código de segurança abaixo na página de desafio:' - further_actions: 'Se não foi você, por favor mude sua senha e ative a autenticação de dois fatores em sua conta. Você pode fazê-lo aqui:' - subject: Por favor, confirme a tentativa de acesso - title: Tentativa de acesso warning: appeal: Enviar uma contestação categories: @@ -1494,13 +1485,10 @@ pt-BR: title: Boas vindas, %{name}! users: follow_limit_reached: Você não pode seguir mais de %{limit} pessoas - generic_access_help_html: Problemas para acessar sua conta? Você pode entrar em contato com %{email} para obter ajuda invalid_otp_token: Código de dois fatores inválido - invalid_sign_in_token: Cógido de segurança inválido otp_lost_help_html: Se você perder o acesso à ambos, você pode entrar em contato com %{email} seamless_external_login: Você entrou usando um serviço externo, então configurações de e-mail e senha não estão disponíveis. signed_in_as: 'Entrou como:' - suspicious_sign_in_confirmation: Parece que você não fez login deste dispositivo antes, e você não fez login por um tempo. Portanto, estamos enviando um código de segurança para o seu endereço de e-mail para confirmar que é você. verification: explanation_html: 'Você pode verificar os links nos metadados do seu perfil. Para isso, o site citado deve conter um link de volta para o seu perfil do Mastodon. O link de volta deve conter um atributo rel="me". O conteúdo ou texto do link não importa. Aqui está um exemplo:' verification: Verificação diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 05f6ebf07..f196d525f 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -165,6 +165,9 @@ pt-PT: pending: Pendente de revisão perform_full_suspension: Fazer suspensão completa previous_strikes: Punições anteriores + previous_strikes_description_html: + one: Esta conta tem 1 punição. + other: Esta conta tem %{count} punições. promote: Promover protocol: Protocolo public: Público @@ -196,7 +199,6 @@ pt-PT: security_measures: only_password: Apenas palavra-passe password_and_2fa: Palavra-passe e 2FA - password_and_sign_in_token: Palavra-passe e token por e-mail sensitive: Marcar como sensível sensitized: marcada como sensível shared_inbox_url: URL da caixa de entrada compartilhada @@ -515,6 +517,7 @@ pt-PT: delivery: all: Todas clear: Limpar erros de entrega + failing: A falhar restart: Reiniciar entrega stop: Parar entrega unavailable: Indisponível @@ -523,6 +526,9 @@ pt-PT: delivery_error_hint: Se a entrega não for possível durante %{count} dias, será automaticamente marcada como não realizável. destroyed_msg: Dados de %{domain} estão agora na fila para iminente eliminação. empty: Não foram encontrados domínios. + known_accounts: + one: "%{count} conta conhecida" + other: "%{count} contas conhecidas" moderation: all: Todas limited: Limitadas @@ -791,6 +797,9 @@ pt-PT: description_html: Estes são links que atualmente estão a ser frequentemente partilhados por contas visiveis pelo seu servidor. Eles podem ajudar os seus utilizador a descobrir o que está a acontecer no mundo. Nenhum link é exibido publicamente até que aprove o editor. Também pode permitir ou rejeitar links individualmente. disallow: Não permitir link disallow_provider: Não permitir editor + shared_by_over_week: + one: Partilhado por uma pessoa na última semana + other: Partilhado por %{count} pessoas na última semana title: Links em destaque usage_comparison: Partilhado %{today} vezes hoje, em comparação com %{yesterday} ontem pending_review: Pendente de revisão @@ -830,6 +839,9 @@ pt-PT: trending_rank: 'Tendência #%{rank}' usable: Pode ser utilizada usage_comparison: Utilizada %{today} vezes hoje, em comparação com %{yesterday} ontem + used_by_over_week: + one: Utilizada por uma pessoa na última semana + other: Utilizada por %{count} pessoas na última semana title: Tendências warning_presets: add_new: Adicionar novo @@ -1225,8 +1237,8 @@ pt-PT: one: Tens um novo seguidor! Boa! other: Tens %{count} novos seguidores! Fantástico! subject: - one: "1 nova notificação desde o último acesso \U0001F418" - other: "%{count} novas notificações desde o último acesso \U0001F418" + one: "1 nova notificação desde o seu último acesso 🐘" + other: "%{count} novas notificações desde o seu último acesso 🐘" title: Enquanto estiveste ausente… favourite: body: 'O teu post foi adicionado aos favoritos por %{name}:' @@ -1621,12 +1633,13 @@ pt-PT: explanation: Pediste uma cópia completa da tua conta Mastodon. Ela já está pronta para descarregares! subject: O teu arquivo está pronto para descarregar title: Arquivo de ficheiros - sign_in_token: - details: 'Aqui estão os detalhes da tentativa:' - explanation: 'Detectamos uma tentativa de entrar na sua conta a partir de um endereço IP não reconhecido. Se é você, por favor, insira o código de segurança abaixo na página de acesso:' - further_actions: 'Se não foi você, por favor altere a sua palavra-passe e ative a autenticação em duas etapzs na sua conta. Pode fazê-lo aqui:' - subject: Por favor, confirme a tentativa de acesso - title: Tentativa de acesso + suspicious_sign_in: + change_password: alterar a sua palavra-passe + details: 'Aqui estão os detalhes do inicio de sessão:' + explanation: Detetamos um inicio de sessão na sua conta a partir de um novo endereço IP. + further_actions_html: Se não foi você, recomendamos que %{action} imediatamente e ative a autenticação de dois fatores para manter a sua conta segura. + subject: A sua conta foi acessada a partir de um novo endereço IP + title: Novo inicio de sessão warning: appeal: Submeter um recurso appeal_description: Se acredita que isso é um erro, pode submeter um recurso para a equipa de %{instance}. @@ -1659,15 +1672,15 @@ pt-PT: silence: Conta limitada suspend: Conta suspensa welcome: - edit_profile_action: Configura o perfil - edit_profile_step: Podes personalizar o teu perfil carregando uma imagem de perfil e de cabeçalho ou alterando o nome a exibir, entre outras opções. Se preferires rever os novos seguidores antes deles te poderem seguir, podes tornar a tua conta privada. - explanation: Aqui estão algumas dicas para começares - 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 você diria aos seus amigos para que eles lhe possam enviar mensagens ou seguir a partir de outra instância. + edit_profile_action: Configurar o perfil + edit_profile_step: Pode personalizar o seu perfil carregando uma imagem de perfil e de cabeçalho ou alterando o nome a exibir, entre outras opções. Se preferir rever os novos seguidores antes de estes o poderem seguir, pode tornar a sua conta privada. + explanation: Aqui estão algumas dicas para começar + final_action: Começar a publicar + final_step: 'Começa a publicar! Mesmo sem seguidores, as suas mensagens públicas podem ser vistas por outros, por exemplo, na cronologia local e em hashtags. Pode querer apresentar-se utilizando a hashtag #introduções ou #introductions.' + full_handle: O seu nome completo + full_handle_hint: Isto é o que tem de facultar 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: Certifique-se de configurar as suas preferências, tais como os e-mails que gostaria de receber ou o nível de privacidade que deseja que as suas publicações tenham por defeito. Se não sofres de enjoo, podes ativar a opção de auto-iniciar GIFs. + review_preferences_step: Certifique-se de configurar as suas preferências, tais como os e-mails que gostaria de receber ou o nível de privacidade que deseja que as suas publicações tenham por defeito. Se não sofre de enjoo de movimento, pode 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: Segues o(s) administrador(es) do teu servidor por defeito. Para encontrar mais pessoas interessantes, procura nas cronologias local e federada. @@ -1677,13 +1690,10 @@ pt-PT: title: Bem-vindo a bordo, %{name}! users: follow_limit_reached: Não podes seguir mais do que %{limit} pessoas - generic_access_help_html: Problemas para aceder à sua conta? Pode entrar em contacto com %{email} para obter ajuda invalid_otp_token: Código de autenticação inválido - invalid_sign_in_token: Cógido de segurança inválido otp_lost_help_html: Se perdeu acesso a ambos, pode entrar em contacto com %{email} seamless_external_login: Tu estás ligado via um serviço externo. Por isso, as configurações da palavra-passe e do e-mail não estão disponíveis. signed_in_as: 'Registado como:' - suspicious_sign_in_confirmation: Parece que não iniciou sessão através deste dispositivo antes, e não acede à sua conta há algum tempo. Portanto, enviámos um código de segurança para o seu endereço de e-mail para confirmar que é você. verification: explanation_html: 'Pode comprovar que é o dono dos links nos metadados do seu perfil. Para isso, o website para o qual o link aponta tem de conter um link para o seu perfil do Mastodon. Esse link tem de ter um atributo rel="me". O conteúdo do texto não é relevante. Aqui está um exemplo:' verification: Verificação diff --git a/config/locales/ro.yml b/config/locales/ro.yml index d6a37f8c4..4f3861b00 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -196,7 +196,6 @@ ro: security_measures: only_password: Doar parola password_and_2fa: Parolă și Conectarea în 2 pași - password_and_sign_in_token: Parola și token-ul e-mail sensitive: Sensibil sensitized: Marcat ca sensibil shared_inbox_url: URL inbox distribuit diff --git a/config/locales/ru.yml b/config/locales/ru.yml index d6eab2a99..2187ae409 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -209,7 +209,6 @@ ru: security_measures: only_password: Только пароль password_and_2fa: Пароль и 2FA - password_and_sign_in_token: Пароль и e-mail код sensitive: Отметить как «деликатного содержания» sensitized: отмечено как «деликатного характера» shared_inbox_url: URL общих входящих @@ -497,6 +496,7 @@ ru: delivery: all: Все clear: Очистить ошибки доставки + failing: Неудача restart: Перезапустить доставку stop: Остановить доставку unavailable: Недоступные @@ -780,6 +780,7 @@ ru: other: Поделился %{count} человек за последнюю неделю title: Актуальные ссылки usage_comparison: Поделились %{today} раз сегодня, по сравнению с %{yesterday} вчера + only_allowed: Только разрешенное pending_review: Ожидает рассмотрения preview_card_providers: allowed: Ссылки этого издания могут отображаться в «актуальном» @@ -810,6 +811,7 @@ ru: one: За последнюю неделю использовал один человек other: За последнюю неделю использовал %{count} человек title: Популярное + trending: Популярное warning_presets: add_new: Добавить delete: Удалить @@ -849,7 +851,7 @@ ru: discovery: Обзор localization: body: Mastodon переводится добровольцами. - guide_link: https://sasha-sorokin.gitlab.io/mastodon-ru/ + guide_link: https://ru.crowdin.com/project/mastodon guide_link_text: Каждый может внести свой вклад. sensitive_content: Содержимое деликатного характера toot_layout: Структура постов @@ -1187,10 +1189,10 @@ ru: one: Также, пока вас не было, у вас появился новый подписчик! Ура! other: Также, пока вас не было, у вас появилось %{count} новых подписчиков! Отлично! subject: - few: "%{count} новых уведомления с вашего последнего захода \U0001F418" - many: "%{count} новых уведомлений с вашего последнего захода \U0001F418" - one: "%{count} новое уведомление с вашего последнего захода \U0001F418" - other: "%{count} новых уведомлений с вашего последнего захода \U0001F418" + few: "%{count} новых уведомления с вашего последнего посещения 🐘" + many: "%{count} новых уведомлений с вашего последнего посещения 🐘" + one: "1 новое уведомление с вашего последнего посещения 🐘" + other: "%{count} новых уведомлений с вашего последнего посещения 🐘" title: В ваше отсутствие… favourite: body: "%{name} добавил(а) ваш пост в избранное:" @@ -1590,12 +1592,13 @@ ru: explanation: Вы запросили архив всех данных вашей учётной записи Mastodon. Что ж, он готов к скачиванию. subject: Ваш архив готов к загрузке title: Архив ваших данных готов - sign_in_token: - details: 'Вот подробная информация о попытке:' - explanation: 'Мы обнаружили попытку войти в вашу учётную запись с нераспознанного IP-адреса. Если это вы, введите код безопасности ниже на странице вызова:' - further_actions: 'Если это были не вы, пожалуйста, смените пароль и включите двухфакторную аутентификацию для вашей учётной записи. Вы можете сделать это здесь:' - subject: Пожалуйста, подтвердите попытку входа - title: Попытка входа + suspicious_sign_in: + change_password: сменить пароль + details: 'Подробности о новом входе:' + explanation: Мы заметили вход в вашу учётную запись с нового IP-адреса. + further_actions_html: Если это были не вы, рекомендуем вам немедленно %{action} и включить двухфакторную авторизацию, чтобы обезопасить свою учётную запись. + subject: В вашу учётную запись был выполнен вход с нового IP-адреса + title: Выполнен вход warning: appeal: Обжаловать categories: @@ -1642,13 +1645,10 @@ ru: title: Добро пожаловать на борт, %{name}! users: follow_limit_reached: Вы не можете подписаться больше, чем на %{limit} человек - generic_access_help_html: Не можете войти в свою учётную запись? Свяжитесь с %{email} для помощи invalid_otp_token: Введен неверный код двухфакторной аутентификации - invalid_sign_in_token: Неверный код безопасности otp_lost_help_html: Если Вы потеряли доступ к обоим, свяжитесь с %{email} seamless_external_login: Вы залогинены через сторонний сервис, поэтому настройки e-mail и пароля недоступны. signed_in_as: 'Выполнен вход под именем:' - suspicious_sign_in_confirmation: Похоже, вы раньше не входили с этого устройства, и давно не осуществляли вход, поэтому мы отправили вам код безопасности на почту, чтобы подтвердить, что это действительно вы. verification: explanation_html: 'Владение ссылками в профиле можно подтвердить. Для этого на указанном сайте должна содержаться ссылка на ваш профиль Mastodon, а у самой ссылки должен быть атрибут rel="me". Что внутри ссылки — значения не имеет. Вот вам пример ссылки:' verification: Верификация ссылок diff --git a/config/locales/sc.yml b/config/locales/sc.yml index aab2e6134..d4b9f6639 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -935,9 +935,6 @@ sc: new_followers_summary: one: In prus, %{count} persone noa ti sighit dae cando fias assente. Incredìbile! other: In prus, %{count} persones noas ti sighint dae cando fias assente. Incredìbile! - subject: - one: "1 notìfica noa dae s'ùrtima visita tua \U0001F418" - other: "%{count} notìficas noas dae s'ùrtima visita tua \U0001F418" title: Durante s'ausèntzia tua... favourite: body: "%{name} at marcadu comente a preferidu s'istadu tuo:" @@ -1286,12 +1283,6 @@ sc: explanation: As pedidu una còpia de seguresa totale de su contu de Mastodon tuo. Immoe est pronta pro s'iscarrigamentu! subject: S'archìviu tuo est prontu pro èssere iscarrigadu title: Collida dae s'archìviu - sign_in_token: - details: 'Custos sunt is detàllios de su tentativu:' - explanation: 'Amus rilevadu unu tentativu de identificatzione in su contu tuo dae un''indiritzu IP non reconnotu. Si fias tue, inserta su còdighe de seguresa in bàsciu in sa pàgina de disafiu de identificatzione:' - further_actions: 'Si non fias tue, càmbia sa crae tua e ativa s''autenticatzione in duos passos in su contu tuo. Ddu podes fàghere inoghe:' - subject: Cunfirma su tentativu de identificatzione - title: Tentativu de identificatzione warning: subject: disable: Su contu tuo %{acct} est istadu cungeladu @@ -1322,13 +1313,10 @@ sc: title: Ti donamus su benebènnidu, %{name}! users: follow_limit_reached: Non podes sighire prus de %{limit} persones - generic_access_help_html: Tenes problemas a intrare in su contu tuo? Podes cuntatare a %{email} pro retzire agiudu invalid_otp_token: Còdighe a duas fases non vàlidu - invalid_sign_in_token: Còdighe de seguresa non vàlidu otp_lost_help_html: Si as pèrdidu s'atzessu a ambos, podes cuntatare a %{email} seamless_external_login: As abertu sa sessione pro mèdiu de unu servìtziu esternu, e pro custa resone is cunfiguratziones de sa crae de intrada e de posta eletrònica non sunt a disponimentu. signed_in_as: 'Sessione aberta comente:' - suspicious_sign_in_confirmation: Paret chi no as mai abertu sa sessione dae custu dispositivu e est dae unu pagu de tempus chi no intras in Mastodon, duncas ti semus imbiende unu còdighe de seguresa a s'indiritzu de posta eletrònica tuo pro cunfirmare chi ses tue. verification: explanation_html: 'Ti podes verificare a sa sola comente mere de is ligòngios in is metadatos de su profilu tuo. Pro ddu fàghere su situ ligadu depet cuntènnere unu ligòngiu chi torret a su profilu de Mastodon tuo. Su ligòngiu in su situ depet tènnere un''atributu rel="me". Su testu cuntenutu in su ligòngiu no est de importu. Custu est un''esèmpiu:' verification: Verìfica diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index cf8140278..60d893cce 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -48,6 +48,7 @@ ar: phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الاستغناء عن الخَيار اليدوي. setting_aggregate_reblogs: لا تقم بعرض المشارَكات الجديدة لمنشورات قد قُمتَ بمشاركتها سابقا (هذا الإجراء يعني المشاركات الجديدة فقط التي تلقيتَها) + setting_always_send_emails: عادة لن ترسل الإشعارات إلى بريدك الإلكتروني عندما تكون نشط على ماستدون setting_default_sensitive: تُخفى الوسائط الحساسة تلقائيا ويمكن اظهارها عن طريق النقر عليها setting_display_media_default: إخفاء الوسائط المُعيَّنة كحساسة setting_display_media_hide_all: إخفاء كافة الوسائط دائمًا @@ -149,6 +150,7 @@ ar: phrase: كلمة مفتاح أو عبارة setting_advanced_layout: تمكين واجهة الويب المتقدمة setting_aggregate_reblogs: جمع الترقيات في خيوط زمنية + setting_always_send_emails: ارسل إشعارات البريد الإلكتروني دائماً setting_auto_play_gif: تشغيل تلقائي لِوَسائط جيف المتحركة setting_boost_modal: إظهار مربع حوار التأكيد قبل إعادة مشاركة أي منشور setting_crop_images: قص الصور في المنشورات غير الموسعة إلى 16x9 diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index ae7cf5217..c98913985 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -74,7 +74,7 @@ ast: setting_use_pending_items: Mou lentu severity: Severidá sign_in_token_attempt: Códigu de seguranza - type: Triba de la importación + type: Tipu de la importación username: Nome d'usuariu username_or_email: Nome d'usuariu o corréu whole_word: La pallabra entera diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index b1b87ff89..b89237b1e 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,61 +3,62 @@ ca: simple_form: hints: account_alias: - acct: Especifica l'usuari@domini del compte des d'on et vols moure + acct: Especifica l'usuari@domini del compte des d'on et vols traslladar account_migration: - acct: Especifica l'usuari@domini del compte al que et vols moure + acct: Especifica l'usuari@domini del compte al qual et vols traslladar account_warning_preset: - text: Pots utilitzar totes les sintaxi com ara URL, etiquetes i mencions + text: Pots usar totes les sintaxis, com ara URL, etiquetes i mencions title: Opcional. No és visible per al destinatari admin_account_action: - include_statuses: L'usuari veurà quins tuts han causat l'acció de moderació o avís + include_statuses: L'usuari veurà quines publicacions han provocat que s'hagi moderat o avisat send_email_notification: L'usuari rebrà una explicació del que ha passat amb el seu compte - text_html: Opcional. Pots utilitzar tota la sintaxi. Pots afegir configuracions predefinides d'avís per a estalviar temps + text_html: Opcional. A les publicacions, pots usar tota la sintaxi. Pots afegir configuracions predefinides d'avís per estalviar temps type_html: Tria què fer amb %{acct} types: - disable: Evita que l'usuari faci ús del seu compte però no li esborra o amaga els seus continguts. - none: Fes servir això per a enviar un avís al usuari sense desencadenar cap altre acció. - sensitive: Obliga a marcar tots els fitxers multi mèdia adjunts com a sensibles. - silence: Evita que l'usuari sigui capaç de publicar amb visibilitat publica, amaga els tuts i notificacions de usuaris que no el segueixen. - suspend: Evita qualsevol interacció de o a aquest compte i esborra els seus continguts. Reversible en un termini de 30 dies. + disable: Evita que l'usuari faci servir el seu compte, però no esborris ni amaguis el seu contingut. + none: Fes servir això per a enviar un avís a l'usuari sense desencadenar cap altra acció. + sensitive: Obliga a marcar tots els fitxers multimèdia adjunts com a sensibles. + silence: Evita que l'usuari pugui publicar amb visibilitat pública, amagar les seves publicacions i les notificacions d'usuaris que no el segueixin. + suspend: Evita qualsevol interacció des de o cap a aquest compte i esborra els seus continguts. Reversible en un termini de 30 dies. warning_preset_id: Opcional. Encara pots afegir text personalitzat al final de la configuració predefinida announcement: all_day: Si es marca, només es mostraran les dates de l'interval de temps - ends_at: Opcional. En aquest moment, l’anunci deixarà automàticament d'estar publicat - scheduled_at: Deixa-ho en blanc per a publicar l’anunci immediatament - starts_at: Opcional. En el cas que el teu anunci estigui vinculat a un interval de temps específic - text: Pots utilitzar sintaxi d'un tut. Tingues en compte l’espai que l’anunci ocuparà a la pantalla de l’usuari + ends_at: Opcional. En aquest moment, l'anunci no es publicarà automàticament + scheduled_at: Deixa-ho en blanc per publicar l’anunci immediatament + starts_at: Opcional. En cas que el teu anunci estigui vinculat a un interval de temps específic + text: Pots utilitzar la sintaxi de publicacions. Tingues en compte l’espai que l’anunci ocuparà a la pantalla de l’usuari appeal: text: Només pots emetre una apel·lació per cada acció defaults: autofollow: Les persones que es registrin a través de la invitació et seguiran automàticament - avatar: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px - bot: Aquest compte realitza principalment accions automatitzades i pot no estar controlat per cap persona - context: Un o diversos contextos on s'ha d'aplicar el filtre - current_password: Per motius de seguretat si us plau entra la contrasenya del compte actual - current_username: Per a confirmar, si us plau entra el nom d'usuari del compte actual + avatar: PNG, GIF o JPG de com a màxim %{size}. S'escalarà a %{dimensions}px + bot: Notifica que aquest compte realitza principalment accions automatitzades i que pot no estar controlat per cap persona + context: Un o diversos contextos en què s'ha d'aplicar el filtre + current_password: Per motius de seguretat, introdueix la contrasenya del compte actual + current_username: Per confirmar-ho, introdueix el nom d'usuari del compte actual digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència - discoverable: Permet que el teu compte sigui descobert per estranys grácies a les sugerències, etiquetes i altres característiques + discoverable: Permet que el teu compte sigui descobert per desconeguts a través de recomanacions, etiquetes i altres característiques email: Se t'enviarà un correu electrònic de confirmació fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil - header: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px - inbox_url: Copia l'URL des de la pàgina principal del relay que vols utilitzar - irreversible: Els tuts filtrats desapareixeran de manera irreversible, fins i tot si el filtre es retira més tard + header: PNG, GIF o JPG de com a màxim %{size}. S'escalarà a %{dimensions}px + inbox_url: Copia l'URL de la pàgina principal del relay que vols utilitzar + irreversible: Les publicacions filtrades desapareixeran de manera irreversible, fins i tot si el filtre s'elimina més tard locale: L'idioma de la interfície d’usuari, els correus i les notificacions push - locked: Requereix que aprovis manualment els seguidors + locked: Controla manualment qui et pot seguir i aprovar les peticions password: Utilitza com a mínim 8 caràcters - phrase: Es combinarà independentment del format en el text o l'avís de contingut del tut - scopes: A quines API es permetrà a l'aplicació accedir. Si selecciones un àmbit d'alt nivell, no cal que seleccionis un d'individual. - setting_aggregate_reblogs: No mostrar els nous impulsos de les publicacions que ja s'han impulsat recentment (només afecta els impulsos nous rebuts) - setting_default_sensitive: El contingut gràfic sensible està ocult per defecte i es pot revelar amb un clic + phrase: Es combinarà independentment del format en el text o l'avís de contingut de la publicació + scopes: API permeses per accedir a l'aplicació. Si selecciones un àmbit de nivell superior, no cal que en seleccions un d'individual. + setting_aggregate_reblogs: No mostris els nous impulsos de les publicacions que ja s'han impulsat recentment (només afecta els nous impulsos rebuts) + setting_always_send_emails: Normalment, no s'enviarà cap notificació per correu electrònic mentre facis servir Mastodon + setting_default_sensitive: El contingut gràfic i sensible està ocult per defecte i es pot mostrar fent-hi clic setting_display_media_default: Ocultar el contigut gràfic marcat com a sensible setting_display_media_hide_all: Oculta sempre tot el contingut multimèdia - setting_display_media_show_all: Mostrar sempre el contingut gràfic marcat com a sensible - setting_hide_network: Qui tu segueixes i els que et segueixen a tu no es mostraran en el teu perfil + setting_display_media_show_all: Mostrar sempre el contingut gràfic + setting_hide_network: Qui segueixes i els que et segueixen no es mostraran en el teu perfil setting_noindex: Afecta el teu perfil públic i les pàgines d'estat - setting_show_application: L'aplicació que fas servir per a publicar es mostrarà a la vista detallada de les publicacions - setting_use_blurhash: Els degradats es basen en els colors de les imatges ocultes, però enfosqueixen els detalls - setting_use_pending_items: Amagar les actualitzacions de la línia de temps després d'un clic en comptes de desplaçar-se automàticament + setting_show_application: L'aplicació que fas servir per publicar es mostrarà a la vista detallada de les publicacions + setting_use_blurhash: Els degradats es basen en els colors de les imatges ocultes, però n'enfosqueixen els detalls + setting_use_pending_items: Amaga les actualitzacions de la línia de temps després de fer un clic en lloc de desplaçar automàticament les publicacions username: El teu nom d'usuari serà únic a %{domain} whole_word: Quan la paraula clau o la frase sigui només alfanumèrica, s'aplicarà si coincideix amb la paraula sencera domain_allow: @@ -89,7 +90,7 @@ ca: tag: name: Només pots canviar la caixa de les lletres, per exemple, per fer-la més llegible user: - chosen_languages: Quan estigui marcat, només es mostraran els tuts de les llengües seleccionades en les línies de temps públiques + chosen_languages: Quan estigui marcat, només es mostraran les publicacions en les llengües seleccionades en les línies de temps públiques labels: account: fields: @@ -103,7 +104,7 @@ ca: text: Text predefinit title: Títol admin_account_action: - include_statuses: Inclou tuts reportats en el correu electrònic + include_statuses: Inclou les publicacions reportades en el correu electrònic send_email_notification: Notifica l'usuari per correu electrònic text: Avís personalitzat type: Acció @@ -123,7 +124,7 @@ ca: appeal: text: Explica perquè aquesta decisió hauria de ser revertida defaults: - autofollow: Convida a seguir el teu compte + autofollow: Convidar a seguir el teu compte avatar: Avatar bot: Aquest compte és un bot chosen_languages: Filtrar llengües @@ -151,19 +152,20 @@ ca: phrase: Paraula clau o frase setting_advanced_layout: Activar l’interfície web avançada setting_aggregate_reblogs: Agrupar impulsos en les línies de temps + setting_always_send_emails: Envia sempre notificacions per correu electrònic setting_auto_play_gif: Reproduir automàticament els GIFs animats setting_boost_modal: Mostrar la finestra de confirmació abans d'impulsar - setting_crop_images: Retalla les imatges en tuts no ampliats a 16x9 + setting_crop_images: Retalla les imatges en publicacions no ampliades a 16x9 setting_default_language: Idioma de les publicacions setting_default_privacy: Privacitat de les publicacions setting_default_sensitive: Marcar sempre el contingut gràfic com a sensible - setting_delete_modal: Mostrar la finestra de confirmació abans d'esborrar un tut + setting_delete_modal: Mostrar la finestra de confirmació abans d'esborrar una publicació setting_disable_swiping: Desactivar les animacions setting_display_media: Visualització multimèdia setting_display_media_default: Per defecte setting_display_media_hide_all: Amaga-ho tot setting_display_media_show_all: Mostra-ho tot - setting_expand_spoilers: Sempre ampliar els tuts marcats amb advertències de contingut + setting_expand_spoilers: Sempre ampliar les publicacions marcades amb advertències de contingut setting_hide_network: Amagar la teva xarxa setting_noindex: Desactivar la indexació dels motors de cerca setting_reduce_motion: Reduir el moviment de les animacions @@ -216,7 +218,7 @@ ca: listable: Permet que aquesta etiqueta aparegui en les cerques i en el directori de perfils name: Etiqueta trendable: Permet que aquesta etiqueta aparegui en les tendències - usable: Permet als tuts emprar aquesta etiqueta + usable: Permetre a les publicacions emprar aquesta etiqueta 'no': 'No' recommended: Recomanat required: diff --git a/config/locales/simple_form.ckb.yml b/config/locales/simple_form.ckb.yml index 82187aae5..32fda85a4 100644 --- a/config/locales/simple_form.ckb.yml +++ b/config/locales/simple_form.ckb.yml @@ -3,17 +3,19 @@ ckb: simple_form: hints: account_alias: - acct: دیاریکردنی username@domain ئەو هەژمارە کە دەتەوێت بیگوازیەوە لە + acct: username@domainـی ئەو هەژمارە دیاری بکە کە لێیەوە دێیت account_migration: - acct: دیاریکردنی username@domain ئەو هەژمارە کە دەتەوێت بیگوازیەوە لە + acct: username@domainـی ئەو هەژمارە دیاری بکە کە بۆی بچیت account_warning_preset: - text: دەتوانی ڕستەسازی ی توت بەکاربێنیت، وەک لینک، هاشتاگ و باسەکان + text: دەتوانیت لە پۆستەکانتدا بەستەر و هاشتاگ دابنێیت یان ئاماژە بەکارهێنەرانی دیکە بکەیت title: ئارەزوومەندانە. دیار نیە بۆ وەرگر admin_account_action: - include_statuses: بەکارهێنەرەکە دەبینێت کام توتی هۆکاری کرداری بەڕێوەبەر یان ئاگادارکردنەوە - send_email_notification: بەکارهێنەر ڕوننکردەوەیەک دەبینێت کە تێدا دەزانێت چی بە سەر هەژمارەکەی هاتووە + include_statuses: بەکارهێنەرەکە دەزانێت کام پۆستانە بوونەتە هۆی ئاگادارکردنەوە یان گرتنەبەری ڕێکار + send_email_notification: بەکارهێنەرەکە دەزانێت چی لە هەژمارەکەی هاتووە text_html: ئارزوومەندانە. دەتوانن وەک توتی ئاسایی بینووسن. دەتوانن بۆ کەمکردنەوەی کات ئاگادارییەکان لە پێشەوە زیادبکەن - type_html: گەرکتە لەگەڵ هەژمارەی %{acct} چی بکەیت + type_html: بڕیار بدە چی لە %{acct} دەکەیت + types: + disable: ڕێ لە بەکارهێنەرەکە بگرە هەژمارەکەی بەکار بهێنێت، بەڵام ناوەڕۆکەکانیان مەسڕەوە و مەشارەوە. warning_preset_id: ئارەزوومەندانەیە. هێشتا دەتوانیت لە کۆتایی دەق شتێک زیاد بکەی announcement: all_day: کاتێک چاودێریکرا، تەنها بەروارەکانی مەودای کات پیشان دەدرێت @@ -35,16 +37,16 @@ ckb: inbox_url: نیشانەی پەڕەی سەرەکی ئەو رێڵە کە هەرەکتە بەکاریببەیت ڕوونووس دەکات irreversible: توتە فلتەرکراوەکە بە شێوەیەکی نەگەڕاو فرەدەدرێن، تەنانەت ئەگەر فلتەردواتر لاببرێت locale: زمانی ڕووکاری بەکارهێنەر، ئیمەیلەکان و ئاگانامەکان - locked: بە دەستی شوێنکەوتوانی خۆت پەسەند بکە - password: بەلایەنی کەمەوە ٨ نووسە بەکاربهێنە + locked: خۆت بڕیار بدە کێ دەتوانێت شوێنت بکەوێت بە وەرگتنی داوای شوێنکەوتن + password: لایەنی کەم 8 نووسە بەکار بهێنە phrase: سەربەخۆ لە بچکۆلی و گەورەیی پیتەکان، لەگەڵ دەقی ئەسڵی یان ئاگانامەکانی ناوەرۆکی توتەکان هاوئاهەنگ دەکرێت scopes: APIـیەکانی بەرنامەنووسی کە ئەم ماڵپەڕە دەستپێگەیشتنی لەگەڵیان هیە. ئەگەر بەرزترین ئاست هەڵبژێرن ئیتر نیاز بە بژاردەی ئاستی نزم نییە. setting_aggregate_reblogs: بۆ ئەو دووبارە توتانە کە بە نوێیی پێتان نیشان دراوە،دووبارە توتەکانی پێشتر زیاد مەکە(تەنها کاریگەری لەسەر توتەکانی ئەم دواییە هەیە) setting_default_sensitive: میدیای هەستیار لە بنەڕەت شاراوەیە و دەتوانرێت بە کلیکیک ئاشکرا بکرێت - setting_display_media_default: شاردنەوەی ئەو میدیایانەی وەک هەستیار نیشانکراون + setting_display_media_default: ئەو میدیایانە بشارەوە کە هەستیارن setting_display_media_hide_all: هەمیشە میدیا بشارەوە setting_display_media_show_all: هەمیشە میدیا نیشان بدە - setting_hide_network: کێ دوای دەکەویت و کێ دوای تۆ دەکەوێت لە پرۆفایلەکەت پیشان نادرێت + setting_hide_network: شوێنکەوتوو و شوێنکەوتنەکانت لە پرۆفایلەکەت نیشان نادرێن setting_noindex: کاردەکاتە سەر پرۆفایل و لاپەڕە گشتیەکانت setting_show_application: بەرنامەیەک کە بە یارمەتیت توت دەکەیت، لە دیمەنی وردی توتەکان پیشان دەدرێت setting_use_blurhash: سێبەرەکان لە سەر بنەمای ڕەنگەکانی بەکارهاتوو لە وێنە داشاراوەکان دروست دەبن بەڵام وردەزانیاری وێنە تێیدا ڕوون نییە @@ -89,7 +91,7 @@ ckb: acct: چارەسەرکردنی هەژمارە نوێکە account_warning_preset: text: دەقی پێشوەختی ڕێکخستن - title: سەردێڕ + title: ناونیشان admin_account_action: include_statuses: لەخۆگرتنی توتەکانی گوزارشت لە ئیمەیل send_email_notification: بەکارهێنەر ئاگادار بکەوە بۆ هەر ئیمەیڵێک @@ -199,6 +201,7 @@ ckb: 'no': نە recommended: پێشنیارکراوە required: + mark: "*" text: پێویستە title: sessions: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 233a9f6ee..32711aa0d 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -27,6 +27,8 @@ cs: scheduled_at: Pro okamžité zveřejnění ponechte prázdné starts_at: Volitelné. Jen pokud je oznámení vázáno na konkrétní časové období text: Můžete použít syntax příspěvků. Mějte prosím na paměti, kolik prostoru oznámení zabere na obrazovce uživatele + appeal: + text: Proti prohřešku se můžete odvolat jen jednou defaults: autofollow: Lidé, kteří se zaregistrují na základě pozvánky, vás budou automaticky sledovat avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px @@ -47,6 +49,7 @@ cs: phrase: Shoda bude nalezena bez ohledu na velikost písmen v textu příspěvku či varování o obsahu scopes: Která API bude aplikaci povoleno používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat jednotlivě. setting_aggregate_reblogs: Nezobrazovat nové boosty pro příspěvky, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty) + setting_always_send_emails: Jinak nebudou e-mailové notifikace posílány, když Mastodon aktivně používáte setting_default_sensitive: Citlivá média jsou ve výchozím stavu skryta a mohou být zobrazena kliknutím setting_display_media_default: Skrývat média označená jako citlivá setting_display_media_hide_all: Vždy skrývat média @@ -61,6 +64,7 @@ cs: domain_allow: domain: Tato doména bude moci stahovat data z tohoto serveru a příchozí data z ní budou zpracována a uložena email_domain_block: + domain: Toto může být doménové jméno, které je v e-mailové adrese nebo MX záznam, který používá. Budou zkontrolovány při registraci. with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány featured_tag: name: 'Nejspíš budete chtít použít jeden z těchto:' @@ -105,11 +109,11 @@ cs: text: Vlastní varování type: Akce types: - disable: Deaktivovat přihlašování + disable: Zmrazit none: Nic nedělat sensitive: Citlivý - silence: Ztišit - suspend: Pozastavit účet a nenávratně smazat jeho data + silence: Omezit + suspend: Pozastavit warning_preset_id: Použít předlohu pro varování announcement: all_day: Celodenní událost @@ -117,6 +121,8 @@ cs: scheduled_at: Naplánovat zveřejnění starts_at: Začátek události text: Oznámení + appeal: + text: Vysvětlete proč by toto rozhodnutí mělo být vráceno defaults: autofollow: Pozvat ke sledování vašeho účtu avatar: Avatar @@ -146,6 +152,7 @@ cs: phrase: Klíčové slovo či fráze setting_advanced_layout: Povolit pokročilé webové rozhraní setting_aggregate_reblogs: Seskupovat boosty v časových osách + setting_always_send_emails: Vždy posílat e-mailová oznámení setting_auto_play_gif: Automaticky přehrávat animace GIF setting_boost_modal: Před boostnutím zobrazovat potvrzovací okno setting_crop_images: Ořezávat obrázky v nerozbalených příspěvcích na 16x9 @@ -195,6 +202,7 @@ cs: sign_up_requires_approval: Omezit registrace severity: Pravidlo notification_emails: + appeal: Někdo se odvolává proti rozhodnutí moderátora digest: Posílat e-maily s přehledem favourite: Někdo si oblíbil váš příspěvek follow: Někdo vás začal sledovat @@ -202,6 +210,8 @@ cs: mention: Někdo vás zmínil pending_account: Je třeba posoudit nový účet reblog: Někdo boostnul váš příspěvek + report: Je odesláno nové hlášení + trending_tag: Nový trend vyžaduje posouzení rule: text: Pravidlo tag: diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 38d27cd4d..68ff7898e 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -173,6 +173,9 @@ cy: mention: Anfon e-bost pan mae rhywun yn eich crybwyll pending_account: Anfon ebost pan mae cyfrif newydd angen adolygiad reblog: Anfon e-bost pan mae rhywun yn bŵstio eich statws + report: Cyflwynwyd adroddiad newydd + rule: + text: Rheol tag: listable: Gadewch i'r hashnod hwn ymddangos mewn chwiliadau ac ar y cyfeiriadur proffil name: Hashnod @@ -181,5 +184,6 @@ cy: 'no': Na recommended: Argymhellwyd required: + mark: "*" text: gofynnol 'yes': Ie diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index f69a92a60..88b17a6c5 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -49,6 +49,7 @@ da: phrase: Matches uanset uanset brug af store/små bogstaver i teksten eller indholdsadvarsel for et indlæg scopes: De API'er, som applikationen vil kunne tilgå. Vælges en topniveaudstrækning, vil detailvalg være unødvendige. setting_aggregate_reblogs: Vis ikke nye boosts for nyligt boostede indlæg (påvirker kun nyligt modtagne boosts) + setting_always_send_emails: Normalt sendes ingen e-mailnotifikationer under aktivt brug af Mastodon setting_default_sensitive: Sensitive medier er som standard skjult og kan vises med et klik setting_display_media_default: Skjul medier med sensitiv-markering setting_display_media_hide_all: Skjul altid medier @@ -151,6 +152,7 @@ da: phrase: Nøgleord/-sætning setting_advanced_layout: Aktivér avanceret webgrænseflade setting_aggregate_reblogs: Gruppér boosts på tidslinjer + setting_always_send_emails: Send altid en e-mailnotifikationer setting_auto_play_gif: Autoafspil animerede GIF'er setting_boost_modal: Vis bekræftelsesdialog inden boosting setting_crop_images: Beskær billeder i ikke-ekspanderede indlæg til 16x9 diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 5595059b1..e9ae17206 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -49,6 +49,7 @@ de: phrase: Wird schreibungsunabhängig mit dem Text und Inhaltswarnung eines Beitrags verglichen scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen. setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge) + setting_always_send_emails: Normalerweise werden E-Mail-Benachrichtigungen nicht gesendet, wenn du Mastodon aktiv verwendest setting_default_sensitive: NSFW-Medien werden erst nach einem Klick sichtbar setting_display_media_default: Verstecke Medien, die als NSFW markiert sind setting_display_media_hide_all: Alle Medien immer verstecken @@ -151,6 +152,7 @@ de: phrase: Schlagwort oder Satz setting_advanced_layout: Fortgeschrittene Benutzeroberfläche benutzen setting_aggregate_reblogs: Gruppiere erneut geteilte Beiträge auf der Startseite + setting_always_send_emails: E-Mail-Benachrichtigungen immer senden setting_auto_play_gif: Animierte GIFs automatisch abspielen setting_boost_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag geteilt wird setting_crop_images: Bilder in nicht ausgeklappten Beiträgen auf 16:9 zuschneiden diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 39dbef161..89ddae0cb 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -46,6 +46,7 @@ el: phrase: Θα ταιριάζει ανεξαρτήτως πεζών/κεφαλαίων ή προειδοποίησης περιεχομένου του τουτ scopes: Ποια API θα επιτρέπεται στην εφαρμογή να χρησιμοποιήσεις. Αν επιλέξεις κάποιο υψηλό εύρος εφαρμογής, δε χρειάζεται να επιλέξεις και εξειδικευμένα. setting_aggregate_reblogs: Απόκρυψη των νέων προωθήσεωνγια τα τουτ που έχουν προωθηθεί πρόσφατα (επηρεάζει μόνο τις νέες προωθήσεις) + setting_always_send_emails: Κανονικά οι ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου δεν θα αποστέλλονται όταν χρησιμοποιείτε ενεργά το Mastodon setting_default_sensitive: Τα ευαίσθητα πολυμέσα είναι κρυμμένα και εμφανίζονται με ένα κλικ setting_display_media_default: Απόκρυψη ευαίσθητων πολυμέσων setting_display_media_hide_all: Μόνιμη απόκρυψη όλων των πολυμέσων @@ -145,6 +146,7 @@ el: phrase: Λέξη ή φράση κλειδί setting_advanced_layout: Ενεργοποίηση προηγμένης λειτουργίας χρήσης setting_aggregate_reblogs: Ομαδοποίηση προωθήσεων στις ροές + setting_always_send_emails: Πάντα να αποστέλλονται ειδοποίησεις μέσω email setting_auto_play_gif: Αυτόματη αναπαραγωγή των GIF setting_boost_modal: Επιβεβαίωση πριν την προώθηση setting_crop_images: Περιορισμός των εικόνων σε μη-ανεπτυγμένα τουτ σε αναλογία 16x9 diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index b19b7891f..b784b1da7 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -49,6 +49,7 @@ en: phrase: Will be matched regardless of casing in text or content warning of a post scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones. setting_aggregate_reblogs: Do not show new boosts for posts that have been recently boosted (only affects newly-received boosts) + setting_always_send_emails: Normally e-mail notifications won't be sent when you are actively using Mastodon setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click setting_display_media_default: Hide media marked as sensitive setting_display_media_hide_all: Always hide media @@ -151,6 +152,7 @@ en: phrase: Keyword or phrase setting_advanced_layout: Enable advanced web interface setting_aggregate_reblogs: Group boosts in timelines + setting_always_send_emails: Always send e-mail notifications setting_auto_play_gif: Auto-play animated GIFs setting_boost_modal: Show confirmation dialog before boosting setting_crop_images: Crop images in non-expanded posts to 16x9 diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 00d4ce897..d4a9ad264 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -49,6 +49,7 @@ es-AR: phrase: Se aplicará sin importar las mayúsculas o las advertencias de contenido de un mensaje scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionás el alcance de nivel más alto, no necesitás seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevas adhesiones de los mensajes que fueron recientemente adheridos (sólo afecta a las adhesiones recibidas recientemente) + setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente setting_default_sensitive: El contenido de medios sensibles está oculto predeterminadamente y puede ser mostrado con un clic setting_display_media_default: Ocultar medios marcados como sensibles setting_display_media_hide_all: Siempre ocultar todos los medios @@ -151,6 +152,7 @@ es-AR: phrase: Palabra clave o frase setting_advanced_layout: Habilitar interface web avanzada setting_aggregate_reblogs: Agrupar adhesiones en las líneas temporales + setting_always_send_emails: Siempre enviar notificaciones por correo electrónico setting_auto_play_gif: Reproducir automáticamente los GIFs animados setting_boost_modal: Mostrar diálogo de confirmación antes de adherir setting_crop_images: Recortar imágenes en mensajes no expandidos a 16x9 diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 274f54a08..53c6d9c45 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -49,6 +49,7 @@ es: phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de una publicación scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevos retoots para las publicaciones que han sido recientemente retooteadas (sólo afecta a los retoots recibidos recientemente) + setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un click setting_display_media_default: Ocultar contenido multimedia marcado como sensible setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia @@ -151,6 +152,7 @@ es: phrase: Palabra clave o frase setting_advanced_layout: Habilitar interfaz web avanzada setting_aggregate_reblogs: Agrupar retoots en las líneas de tiempo + setting_always_send_emails: Enviar siempre notificaciones por correo setting_auto_play_gif: Reproducir automáticamente los GIFs animados setting_boost_modal: Mostrar ventana de confirmación antes de retootear setting_crop_images: Recortar a 16x9 las imágenes de las publicaciones no expandidas diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 52e4ceb2a..9a777c45c 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -49,6 +49,7 @@ fr: phrase: Sera filtré peu importe la casse ou l’avertissement de contenu du message scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez une permission générale, vous n’avez pas besoin de sélectionner les permissions plus précises. setting_aggregate_reblogs: Ne pas afficher les nouveaux partages pour les messages déjà récemment partagés (n’affecte que les partages futurs) + setting_always_send_emails: Normalement, les notifications par courriel ne seront pas envoyées lorsque vous utilisez Mastodon activement setting_default_sensitive: Les médias sensibles sont cachés par défaut et peuvent être révélés d’un simple clic setting_display_media_default: Masquer les médias marqués comme sensibles setting_display_media_hide_all: Toujours masquer les médias @@ -151,6 +152,7 @@ fr: phrase: Mot-clé ou phrase setting_advanced_layout: Activer l’interface Web avancée setting_aggregate_reblogs: Grouper les partages dans les fils d’actualités + setting_always_send_emails: Toujours envoyer les notifications par courriel setting_auto_play_gif: Lire automatiquement les GIFs animés setting_boost_modal: Demander confirmation avant de partager un message setting_crop_images: Recadrer en 16x9 les images des messages qui ne sont pas ouverts en vue détaillée diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml new file mode 100644 index 000000000..20a9da24e --- /dev/null +++ b/config/locales/simple_form.ga.yml @@ -0,0 +1 @@ +ga: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 31b636344..63199e2cd 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -37,7 +37,7 @@ gd: current_password: A chùm tèarainteachd, cuir a-steach facal-faire a’ chunntais làithrich current_username: Airson seo a dhearbhadh, cuir a-steach ainm-cleachdaiche a’ chunntais làithrich digest: Cha dèid seo a chur ach nuair a bhios tu air ùine mhòr gun ghnìomh a ghabhail agus ma fhuair thu teachdaireachd phearsanta fhad ’s a bha thu air falbh - discoverable: Ceadaich gun lorg coigrich an cunntas agad le taic o mholaidhean, treandaichean is gleusan eile + discoverable: Ceadaich gun rùraich coigrich an cunntas agad le taic o mholaidhean, treandaichean is gleusan eile email: Thèid post-d dearbhaidh a chur thugad fields: Faodaidh tu suas ri 4 nithean a shealltainn mar chlàr air a’ phròifil agad header: PNG, GIF or JPG. %{size} air a char as motha. Thèid a sgèileadh sìos gu %{dimensions}px @@ -49,6 +49,7 @@ gd: phrase: Thèid a mhaidseadh gun aire air litrichean mòra ’s beaga no air rabhadh susbainte puist scopes: Na APIan a dh’fhaodas an aplacaid inntrigeadh. Ma thaghas tu sgòp air ìre as àirde, cha leig thu leas sgòpaichean fa leth a thaghadh. setting_aggregate_reblogs: Na seall brosnachaidhean ùra do phostaichean a chaidh a bhrosnachadh o chionn goirid (cha doir seo buaidh ach air brosnachaidhean ùra o seo a-mach) + setting_always_send_emails: Mar as àbhaist, cha dèid brathan puist-d a chur nuair a a bhios tu ri Mastodon gu cunbhalach setting_default_sensitive: Thèid meadhanan frionasach fhalach a ghnàth is gabhaidh an nochdadh le briogadh orra setting_display_media_default: Falaich meadhanan ris a bheil comharra gu bheil iad frionasach setting_display_media_hide_all: Falaich na meadhanan an-còmhnaidh @@ -151,6 +152,7 @@ gd: phrase: Facal no abairt-luirg setting_advanced_layout: Cuir an comas an eadar-aghaidh-lìn adhartach setting_aggregate_reblogs: Buidhnich na brosnachaidhean air an loidhne-ama + setting_always_send_emails: Cuir brathan puist-d an-còmhnaidh setting_auto_play_gif: Cluich GIFs beòthaichte gu fèin-obrachail setting_boost_modal: Seall còmhradh dearbhaidh mus dèan thu brosnachadh setting_crop_images: Beàrr na dealbhan sna postaichean gun leudachadh air 16x9 diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index e120c2c8b..83447f7ec 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -49,6 +49,7 @@ gl: phrase: Concordará independentemente das maiúsculas ou avisos de contido na publicación 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 publicacións que foron promovidas recentemente (só afecta a promocións recén recibidas) + setting_always_send_emails: Como norma xeral non che enviamos emails se usas activamente Mastodon 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 @@ -66,7 +67,7 @@ gl: domain: Este pode ser o nome de dominio que aparece no enderezo de email ou o rexistro MX que utiliza. Será comprobado no momento do rexistro. with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo featured_tag: - name: 'Poderías usar algunha destas:' + name: 'Poderías usar algún destos:' form_challenge: current_password: Estás entrando nun área segura imports: @@ -151,6 +152,7 @@ gl: phrase: Palabra chave ou frase setting_advanced_layout: Activar interface web avanzada setting_aggregate_reblogs: Agrupar promocións nas cronoloxías + setting_always_send_emails: Enviar sempre notificacións por email setting_auto_play_gif: Reprodución automática de GIFs animados setting_boost_modal: Pedir confirmación antes de promocionar setting_crop_images: Recortar imaxes a 16x9 en publicacións non despregadas diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 0b9451db8..0df4f2df1 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -49,6 +49,7 @@ hu: phrase: Illeszkedni fog kis/nagybetű függetlenül, és tartalom-figyelmeztetések mögött is scopes: Mely API-kat érheti el az alkalmazás. Ha felső szintű hatáskört választasz, nem kell egyesével kiválasztanod az alatta lévőeket. setting_aggregate_reblogs: Ne mutassunk megtolásokat olyan bejegyzésekhez, melyeket nemrég toltak meg (csak új megtolásokra lép életbe) + setting_always_send_emails: Alapesetben nem küldünk e-mail értesítéseket, ha aktívan használod a Mastodont setting_default_sensitive: A kényes médiatartalmat alapesetben elrejtjük, de egyetlen kattintással előhozható setting_display_media_default: Kényes tartalomnak jelölt média elrejtése setting_display_media_hide_all: Mindig minden média elrejtése @@ -151,6 +152,7 @@ hu: phrase: Kulcsszó vagy kifejezés setting_advanced_layout: Haladó webes felület engedélyezése setting_aggregate_reblogs: Megtolások csoportosítása az idővonalakon + setting_always_send_emails: E-mail értesítések küldése mindig setting_auto_play_gif: GIF-ek automatikus lejátszása setting_boost_modal: Megerősítés kérése megtolás előtt setting_crop_images: Képek 16x9-re vágása nem kinyitott bejegyzéseknél diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index bba49f1e2..dfc4902ab 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -49,6 +49,7 @@ id: phrase: Akan dicocokkan terlepas dari luaran dalam teks atau peringatan konten dari toot scopes: API mana yang diizinkan untuk diakses aplikasi. Jika Anda memilih cakupan level-atas, Anda tak perlu memilih yang individual. setting_aggregate_reblogs: Jangan tampilkan boost baru untuk toot yang baru saja di-boost (hanya memengaruhi boost yang baru diterima) + setting_always_send_emails: Secara normal, notifikasi email tidak akan dikirimkan kepada Anda ketika Anda sedang aktif menggunakan Mastodon setting_default_sensitive: Media sensitif disembunyikan secara bawaan dan akan ditampilkan dengan klik setting_display_media_default: Sembunyikan media yang ditandai sebagai sensitif setting_display_media_hide_all: Selalu sembunyikan semua media @@ -151,6 +152,7 @@ id: phrase: Kata kunci atau frasa setting_advanced_layout: Aktifkan antar muka web mahir setting_aggregate_reblogs: Boost grup di linimasa + setting_always_send_emails: Selalu kirim notifikasi email setting_auto_play_gif: Mainkan otomatis animasi GIF setting_boost_modal: Tampilkan dialog konfirmasi dialog sebelum boost setting_crop_images: Potong gambar ke 16x9 pada toot yang tidak dibentangkan diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index c04660f22..528e9a52a 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -49,6 +49,7 @@ is: phrase: Verður notað til samsvörunar burtséð frá stafstöðu texta eða viðvörunar vegna efnis í færslu scopes: Að hvaða API-kerfisviðmótum forritið fær aðgang. Ef þú velur efsta-stigs svið, þarftu ekki að gefa einstakar heimildir. setting_aggregate_reblogs: Ekki sýna nýjar endurbirtingar á færslum sem hafa nýlega verið endurbirtar (hefur bara áhrif á ný-mótteknar endurbirtingar) + setting_always_send_emails: Venjulega eru tilkynningar í tölvupósti ekki sendar þegar þú ert virk/ur í að nota Mastodon setting_default_sensitive: Viðkvæmt myndefni er sjálfgefið falið og er hægt að birta með smelli setting_display_media_default: Fela myndefni sem merkt er viðkvæmt setting_display_media_hide_all: Alltaf fela allt myndefni @@ -59,7 +60,7 @@ is: setting_use_blurhash: Litstiglarnir byggja á litunum í földu myndunum, en gera öll smáatriði óskýr setting_use_pending_items: Fela uppfærslur tímalínu þar til smellt er, í stað þess að hún skruni streyminu sjálfvirkt username: Notandanafnið þitt verður einstakt á %{domain} - whole_word: Þegar stikkorð eða frasi er einungis tölur og bókstafir, verður það aðeins notað ef það samsvarar heilu orði + whole_word: Þegar stikkorð eða setning er einungis tölur og bókstafir, verður það aðeins notað ef það samsvarar heilu orði domain_allow: domain: Þetta lén mun geta sótt gögn af þessum vefþjóni og tekið verður á móti innsendum gögnum frá léninu til vinnslu og geymslu email_domain_block: @@ -125,7 +126,7 @@ is: defaults: autofollow: Bjóða að fylgjast með aðgangnum þínum avatar: Auðkennismynd - bot: Þetta er aðgangur fyrir róbót + bot: Þetta er aðgangur fyrir vélmenni chosen_languages: Sía tungumál confirm_new_password: Staðfestu nýja lykilorðið confirm_password: Staðfestu lykilorðið @@ -148,9 +149,10 @@ is: note: Æviágrip otp_attempt: Teggja-þátta kóði password: Lykilorð - phrase: Stikkorð eða frasi + phrase: Stikkorð eða setning setting_advanced_layout: Virkja ítarlegt vefviðmót setting_aggregate_reblogs: Hópa endurbirtingar í tímalínum + setting_always_send_emails: Alltaf senda tilkynningar í tölvupósti setting_auto_play_gif: Spila sjálfkrafa GIF-hreyfimyndir setting_boost_modal: Sýna staðfestingarglugga fyrir endurbirtingu setting_crop_images: Utansníða myndir í ekki-útfelldum færslum í 16x9 diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 7e44489b5..7eb014193 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -49,6 +49,7 @@ it: phrase: Il confronto sarà eseguito ignorando minuscole/maiuscole e i content warning scopes: A quali API l'applicazione potrà avere accesso. Se selezionate un ambito di alto livello, non c'è bisogno di selezionare quelle singole. setting_aggregate_reblogs: Non mostrare nuove condivisioni per toot che sono stati condivisi di recente (ha effetto solo sulle nuove condivisioni) + setting_always_send_emails: Normalmente le notifiche e-mail non vengono inviate quando si utilizza attivamente Mastodon setting_default_sensitive: Media con contenuti sensibili sono nascosti in modo predefinito e possono essere rivelati con un click setting_display_media_default: Nascondi media segnati come sensibili setting_display_media_hide_all: Nascondi sempre tutti i media @@ -151,7 +152,8 @@ it: phrase: Parola chiave o frase setting_advanced_layout: Abilita interfaccia web avanzata setting_aggregate_reblogs: Raggruppa condivisioni in timeline - setting_auto_play_gif: Play automatico GIF animate + setting_always_send_emails: Manda sempre notifiche via email + setting_auto_play_gif: Riproduci automaticamente le GIF animate setting_boost_modal: Mostra dialogo di conferma prima del boost setting_crop_images: Ritaglia immagini in post non espansi a 16x9 setting_default_language: Lingua dei post @@ -169,7 +171,7 @@ it: setting_reduce_motion: Riduci movimento nelle animazioni setting_show_application: Rendi pubblica l'applicazione usata per inviare i post setting_system_font_ui: Usa il carattere predefinito del sistema - setting_theme: Tema sito + setting_theme: Tema del sito setting_trends: Mostra tendenze di oggi setting_unfollow_modal: Chiedi conferma prima di smettere di seguire qualcuno setting_use_blurhash: Mostra i gradienti colorati per i media nascosti diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index eac5c351c..5f61ee19c 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -37,6 +37,7 @@ ja: current_password: 現在のアカウントのパスワードを入力してください current_username: 確認のため、現在のアカウントのユーザー名を入力してください digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます + discoverable: レコメンド、トレンド、その他の機能により、あなたのアカウントを他の人から見つけられるようにします email: 確認のメールが送信されます fields: プロフィールに表として4つまでの項目を表示することができます header: "%{size}までのPNG、GIF、JPGが利用可能です。 %{dimensions}pxまで縮小されます" @@ -48,6 +49,7 @@ ja: phrase: 投稿内容の大文字小文字や閲覧注意に関係なく一致 scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。 setting_aggregate_reblogs: 最近ブーストされた投稿が新たにブーストされても表示しません (設定後受信したものにのみ影響) + setting_always_send_emails: 通常、Mastodon からメール通知は行われません。 setting_default_sensitive: 閲覧注意状態のメディアはデフォルトでは内容が伏せられ、クリックして初めて閲覧できるようになります setting_display_media_default: 閲覧注意としてマークされたメディアは隠す setting_display_media_hide_all: メディアを常に隠す @@ -57,18 +59,19 @@ ja: setting_show_application: 投稿するのに使用したアプリが投稿の詳細ビューに表示されるようになります setting_use_blurhash: ぼかしはメディアの色を元に生成されますが、細部は見えにくくなっています setting_use_pending_items: 新着があってもタイムラインを自動的にスクロールしないようにします - username: あなたのユーザー名は %{domain} の中で重複していない必要があります + username: あなたのユーザー名は%{domain}の中で重複していない必要があります whole_word: キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります domain_allow: domain: 登録するとこのサーバーからデータを受信したり、このドメインから受信するデータを処理して保存できるようになります email_domain_block: + domain: 電子メールアドレスのドメイン名、または使用されるMXレコードを指定できます。新規登録時にチェックされます。 with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: name: 'これらを使うといいかもしれません:' form_challenge: current_password: セキュリティ上重要なエリアにアクセスしています imports: - data: 他の Mastodon サーバーからエクスポートしたCSVファイルを選択して下さい + data: 他のMastodonサーバーからエクスポートしたCSVファイルを選択して下さい invite_request: text: このサーバーは現在承認制です。申請を承認する際に役立つメッセージを添えてください ip_block: @@ -82,7 +85,7 @@ ja: rule: text: ユーザーのためのルールや要件を記述してください。短くシンプルにしてください。 sessions: - otp: '携帯電話のアプリで生成された二段階認証コードを入力するか、リカバリーコードを使用してください:' + otp: '携帯電話のアプリで生成された二要素認証コードを入力するか、リカバリーコードを使用してください:' webauthn: USBキーの場合は、必ず挿入し、必要に応じてタップしてください。 tag: name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます @@ -96,7 +99,7 @@ ja: account_alias: acct: 引っ越し元のユーザー ID account_migration: - acct: 引っ越し先のユーザー ID + acct: 引っ越し先のユーザーID account_warning_preset: text: プリセット警告文 title: タイトル @@ -123,7 +126,7 @@ ja: defaults: autofollow: 招待から参加後、あなたをフォロー avatar: アイコン - bot: これは BOT アカウントです + bot: これはBOTアカウントです chosen_languages: 表示する言語 confirm_new_password: 新しいパスワード(確認用) confirm_password: パスワード(確認用) @@ -144,11 +147,12 @@ ja: max_uses: 使用できる回数 new_password: 新しいパスワード note: プロフィール - otp_attempt: 二段階認証コード + otp_attempt: 二要素認証コード password: パスワード phrase: キーワードまたはフレーズ - setting_advanced_layout: 上級者向け UI を有効にする + setting_advanced_layout: 上級者向けUIを有効にする setting_aggregate_reblogs: ブーストをまとめる + setting_always_send_emails: 常にメール通知を送信する setting_auto_play_gif: アニメーションGIFを自動再生する setting_boost_modal: ブーストする前に確認ダイアログを表示する setting_crop_images: 投稿の詳細以外では画像を16:9に切り抜く @@ -198,7 +202,7 @@ ja: sign_up_requires_approval: 登録を制限 severity: ルール notification_emails: - appeal: モデレーターの判断に異議申し立てが行われました + appeal: モデレーターの判断に異議申し立てが行われた時 digest: タイムラインからピックアップしてメールで通知する favourite: お気に入り登録された時 follow: フォローされた時 @@ -206,8 +210,8 @@ ja: mention: 返信が来た時 pending_account: 新しいアカウントの承認が必要な時 reblog: 投稿がブーストされた時 - report: 新しいレポートが送信されました - trending_tag: 新しいトレンドタグにはレビューが必要です + report: 新しい通報が送信された時 + trending_tag: 新しいトレンドのレビューをする必要がある時 rule: text: ルール tag: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 7ca16089e..7c1f284ec 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -49,6 +49,7 @@ ko: phrase: 게시물 내용이나 열람주의 내용 안에서 대소문자 구분 없이 매칭 됩니다 scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다. setting_aggregate_reblogs: 최근에 부스트 됐던 게시물은 새로 부스트 되어도 보여주지 않기 (새로 받은 부스트에만 적용됩니다) + setting_always_send_emails: 기본적으로 마스토돈을 활동적으로 사용하고 있을 때에는 이메일 알림이 보내지지 않습니다 setting_default_sensitive: 민감한 미디어는 기본적으로 가려져 있으며 클릭해서 볼 수 있습니다 setting_display_media_default: 민감함으로 설정 된 미디어 가리기 setting_display_media_hide_all: 항상 모든 미디어를 가리기 @@ -151,6 +152,7 @@ ko: phrase: 키워드 또는 문장 setting_advanced_layout: 고급 웹 UI 활성화 setting_aggregate_reblogs: 타임라인의 부스트를 그룹화 + setting_always_send_emails: 항상 이메일 알림 보내기 setting_auto_play_gif: 애니메이션 GIF를 자동 재생 setting_boost_modal: 부스트 전 확인 창을 표시 setting_crop_images: 확장되지 않은 게시물의 이미지를 16x9로 자르기 @@ -202,7 +204,7 @@ ko: notification_emails: appeal: 누군가가 중재자의 결정에 이의를 제기했을 때 digest: 요약 이메일 보내기 - favourite: 누군가 내 상태를 즐겨찾기로 등록했을 때 + favourite: 누군가 내 상태를 마음에 들어했을 때 follow: 누군가 나를 팔로우 했을 때 follow_request: 누군가 나를 팔로우 하길 원할 때 mention: 누군가 나를 언급했을 때 diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 09621771d..e9e6603cd 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -51,6 +51,7 @@ ku: Sepana ku dê kîjan maf bide bigihije APIyan. Ger te asteke jor hilbijartibe, ne pêwîste ku tu yên berfirehî a kesane hilbijêrî. setting_aggregate_reblogs: Bilindkirinên ku nû hatine weşan ji şandiyên di dema dawî de nîşan nede (tenê li ser bilindkirinên nû wergirtî bandor dike) + setting_always_send_emails: Dema ku tu Mastodon bi rengek çalak bi kar tînî, bi gelemperî agahdariya e-nameyê nayê şandin setting_default_sensitive: Medyaya hestiyar berdestî ve tê veşartin û bi tikandin dikare were eşkere kirin setting_display_media_default: Medyaya wekî hestyarî hatiye nîşankirî ye veşêre setting_display_media_hide_all: Medyayê tim veşêre @@ -153,6 +154,7 @@ ku: phrase: Peyvkilîd an jî hevok setting_advanced_layout: Navrûya tevnê yê pêşketî çalak bike setting_aggregate_reblogs: Di demnameyê de şandiyên bilindkirî kom bike + setting_always_send_emails: Her dem agahdariya e-nameyê bişîne setting_auto_play_gif: GIF ên livok bi xweber bilîzine setting_boost_modal: Gotûbêja pejirandinê nîşan bide berî ku şandî werê bilindkirin setting_crop_images: Wêneyên di nav şandiyên ku nehatine berfireh kirin wek 16×9 jê bike diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 6f466fba8..e512551ba 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -49,6 +49,7 @@ lv: phrase: Tiks saskaņots neatkarīgi no ziņas teksta reģistra vai satura brīdinājuma scopes: Kuriem API lietojumprogrammai būs atļauta piekļuve. Ja izvēlies augstākā līmeņa tvērumu, tev nav jāatlasa atsevišķi vienumi. setting_aggregate_reblogs: Nerādīt jaunus palielinājumus ziņām, kas nesen tika palielinātas (ietekmē tikai nesen saņemtos palielinājumus) + setting_always_send_emails: Parasti e-pasta paziņojumi netiek sūtīti, kad aktīvi izmantojat Mastodon setting_default_sensitive: Sensitīvi mediji pēc noklusējuma ir paslēpti, un tos var atklāt, noklikšķinot setting_display_media_default: Paslēpt mediju, kas atzīmēts kā sensitīvs setting_display_media_hide_all: Vienmēr slēpt medijus @@ -151,6 +152,7 @@ lv: phrase: Atslēgvārds vai frāze setting_advanced_layout: Iespējot paplašināto web interfeisu setting_aggregate_reblogs: Grupēt paaugstinājumus ziņu lentās + setting_always_send_emails: Vienmēr sūtīt e-pasta paziņojumus setting_auto_play_gif: Automātiski atskaņot animētos GIF setting_boost_modal: Parādīt apstiprinājuma dialogu pirms paaugstināšanas setting_crop_images: Apgrieziet attēlus neizvērstajās ziņās līdz 16x9 diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 8aa8626f9..0793f55bc 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -27,6 +27,8 @@ pl: scheduled_at: Pozostaw puste, aby opublikować ogłoszenie natychmiastowo starts_at: Nieobowiązkowe. Jeżeli ogłoszenie jest związane z danym przedziałem czasu text: Możesz używać składni wpisu. Pamiętaj o tym, ile miejsca zajmie ogłoszenie na ekranie użytkownika + appeal: + text: Możesz wysłać odwołanie do ostrzeżenia tylko raz defaults: autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię śledzić avatar: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px @@ -35,6 +37,7 @@ pl: current_password: Ze względów bezpieczeństwa wprowadź hasło obecnego konta current_username: Aby potwierdzić, wprowadź nazwę użytkownika obecnego konta digest: Wysyłane tylko po długiej nieaktywności, jeżeli w tym czasie otrzymaleś jakąś wiadomość bezpośrednią + discoverable: Pozwala na odkrywanie twojego konta przez nieznajomych poprzez rekomendacje, popularne wpisy i inne funkcje email: Otrzymasz e-mail potwierdzający fields: Możesz ustawić maksymalnie 4 niestandardowe pola wyświetlane jako tabela na Twoim profilu header: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px @@ -46,6 +49,7 @@ pl: phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów. setting_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić) + setting_always_send_emails: Powiadomienia e-mail zwykle nie będą wysyłane, gdy używasz Mastodon setting_default_sensitive: Wrażliwe multimedia są domyślnie schowane i mogą być odkryte kliknięciem setting_display_media_default: Ukrywaj zawartość multimedialną oznaczoną jako wrażliwa setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną @@ -117,6 +121,8 @@ pl: scheduled_at: Zaplanuj publikację starts_at: Początek wydarzenia text: Ogłoszenie + appeal: + text: Wyjaśnij, dlaczego ta decyzja powinna zostać cofnięta defaults: autofollow: Zapraszaj do śledzenia swojego konta avatar: Awatar @@ -146,6 +152,7 @@ pl: phrase: Słowo kluczowe lub fraza setting_advanced_layout: Włącz zaawansowany interfejs użytkownika setting_aggregate_reblogs: Grupuj podbicia na osiach czasu + setting_always_send_emails: Zawsze wysyłaj powiadomienia e-mail setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy setting_boost_modal: Pytaj o potwierdzenie przed podbiciem setting_crop_images: Przycinaj obrazki w nierozwiniętych wpisach do 16x9 @@ -195,6 +202,7 @@ pl: sign_up_requires_approval: Ogranicz rejestracje severity: Reguła notification_emails: + appeal: Ktoś odwołuje się od decyzji moderatora digest: Wysyłaj podsumowania e-mailem favourite: Powiadamiaj mnie e-mailem, gdy ktoś polubi mój wpis follow: Powiadamiaj mnie e-mailem, gdy ktoś zacznie mnie śledzić @@ -202,6 +210,8 @@ pl: mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis + report: Nowy raport został wysłany + trending_tag: Nowe popularne wymagają przeglądu rule: text: Zasada tag: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 7e75b96e5..42116174f 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -49,6 +49,7 @@ 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_always_send_emails: Normalmente as notificações por e-mail não serão enviadas quando estiver a utilizar ativamente o Mastodon 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 @@ -151,6 +152,7 @@ pt-PT: phrase: Palavra ou expressão-chave setting_advanced_layout: Ativar interface web avançada setting_aggregate_reblogs: Agrupar partilhas em cronologias + setting_always_send_emails: Enviar notificações de email sempre setting_auto_play_gif: Reproduzir GIFs automaticamente setting_boost_modal: Solicitar confirmação antes de partilhar uma publicação setting_crop_images: Cortar imagens em toots não expandidos para o formato 16x9 diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index ef3bf4ad3..30e7bd3a3 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -49,6 +49,7 @@ ru: phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании поста scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически. setting_aggregate_reblogs: Не показывать новые продвижения постов, которые уже были недавно продвинуты (относится только к новым продвижениям). + setting_always_send_emails: По умолчанию, когда вы активно используете Mastodon, уведомления по электронной почте не отправляются setting_default_sensitive: Медиафайлы «деликатного характера» скрыты по умолчанию и могут быть показаны по нажатию на них. setting_display_media_default: Скрывать файлы «деликатного характера» setting_display_media_hide_all: Всегда скрывать любые медиафайлы @@ -151,6 +152,7 @@ ru: phrase: Слово или фраза setting_advanced_layout: Включить многоколоночный интерфейс setting_aggregate_reblogs: Группировать продвижения в лентах + setting_always_send_emails: Всегда отправлять уведомления по электронной почте setting_auto_play_gif: Автоматически проигрывать GIF анимации setting_boost_modal: Всегда спрашивать перед продвижением setting_crop_images: Кадрировать изображения в нераскрытых постах до 16:9 diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index dbb8c80f7..1136169b7 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -49,6 +49,7 @@ sq: phrase: Do të kërkohet përputhje pavarësish se teksti ose sinjalizimi mbi lëndën e një mesazhi është shkruar me të mëdha apo me të vogla scopes: Cilat API do të lejohen të përdorin aplikacioni. Nëse përzgjidhni një shkallë të epërme, nuk ju duhet të përzgjidhni individualet një nga një. setting_aggregate_reblogs: Mos shfaq përforcime të reja për mesazhe që janë përforcuar tani së fundi (prek vetëm përforcime të marra rishtas) + setting_always_send_emails: Normalisht s’do të dërgohen njoftime, kur përdorni aktivisht Mastodon-in setting_default_sensitive: Media rezervat fshihet, si parazgjedhje, dhe mund të shfaqet me një klikim setting_display_media_default: Fshih media me shenjën rezervat setting_display_media_hide_all: Fshih përherë mediat @@ -151,6 +152,7 @@ sq: phrase: Fjalëkyç ose frazë setting_advanced_layout: Aktivizo ndërfaqe web të thelluar setting_aggregate_reblogs: Grupoji përforcimet në rrjedha kohore + setting_always_send_emails: Dërgo përherë njoftime me email setting_auto_play_gif: Vetëluaji GIF-et e animuar setting_boost_modal: Shfaq dialog ripohimi përpara përforcimi setting_crop_images: Në mesazhe jo të zgjerueshëm, qethi figurat në 16x9 diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index ed8420aea..8df50ab3a 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -49,6 +49,7 @@ th: phrase: จะถูกจับคู่โดยไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กในข้อความหรือคำเตือนเนื้อหาของโพสต์ scopes: API ใดที่จะอนุญาตให้แอปพลิเคชันเข้าถึง หากคุณเลือกขอบเขตระดับบนสุด คุณไม่จำเป็นต้องเลือกแต่ละขอบเขต setting_aggregate_reblogs: ไม่แสดงการดันใหม่สำหรับโพสต์ที่เพิ่งดัน (มีผลต่อการดันที่ได้รับใหม่เท่านั้น) + setting_always_send_emails: โดยปกติจะไม่ส่งการแจ้งเตือนอีเมลเมื่อคุณกำลังใช้ Mastodon อยู่ setting_default_sensitive: ซ่อนสื่อที่ละเอียดอ่อนเป็นค่าเริ่มต้นและสามารถเปิดเผยได้ด้วยการคลิก setting_display_media_default: ซ่อนสื่อที่มีการทำเครื่องหมายว่าละเอียดอ่อน setting_display_media_hide_all: ซ่อนสื่อเสมอ @@ -146,6 +147,7 @@ th: phrase: คำสำคัญหรือวลี setting_advanced_layout: เปิดใช้งานส่วนติดต่อเว็บขั้นสูง setting_aggregate_reblogs: จัดกลุ่มการดันในเส้นเวลา + setting_always_send_emails: ส่งการแจ้งเตือนอีเมลเสมอ setting_auto_play_gif: เล่น GIF แบบเคลื่อนไหวโดยอัตโนมัติ setting_boost_modal: แสดงกล่องโต้ตอบการยืนยันก่อนดัน setting_crop_images: ครอบตัดภาพในโพสต์ที่ไม่ได้ขยายเป็น 16x9 diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 4a2115742..21e3aab78 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -3,9 +3,9 @@ tr: simple_form: hints: account_alias: - acct: Taşımak istediğiniz hesabın kullanıcıadı@alanadını belirtin + acct: Taşıyacağınız hesabı kullanıcıadı@alanadı şeklinde belirtin account_migration: - acct: Taşımak istediğiniz hesabın kullanıcıadı@alanadını belirtin + acct: Yeni hesabınızı kullanıcıadı@alanadını şeklinde belirtin account_warning_preset: text: URL'ler, etiketler ve bahsedenler gibi toot sözdizimini kullanabilirsiniz title: İsteğe bağlı. Alıcıya görünmez @@ -49,6 +49,7 @@ tr: phrase: Metnin büyük/küçük harf durumundan veya tootun içerik uyarısından bağımsız olarak eşleştirilecek scopes: Uygulamanın erişmesine izin verilen API'ler. Üst seviye bir kapsam seçtiyseniz, bireysel kapsam seçmenize gerek yoktur. setting_aggregate_reblogs: Yakın zamanda boostlanmış tootlar için yeni boostları göstermeyin (yalnızca yeni alınan boostları etkiler) + setting_always_send_emails: Normalde, Mastodon'u aktif olarak kullanırken e-posta bildirimleri gönderilmeyecektir setting_default_sensitive: Hassas medya varsayılan olarak gizlidir ve bir tıklama ile gösterilebilir setting_display_media_default: Hassas olarak işaretlenmiş medyayı gizle setting_display_media_hide_all: Medyayı her zaman gizle @@ -127,10 +128,10 @@ tr: avatar: Profil resmi bot: Bu bir bot hesabı chosen_languages: Dilleri filtrele - confirm_new_password: Yeni şifreyi onayla - confirm_password: Şifreyi onayla + confirm_new_password: Yeni parolayı onayla + confirm_password: Parolayı doğrula context: İçeriği filtrele - current_password: Geçerli şifre + current_password: Güncel parola data: Veri discoverable: Bu hesabı dizinde listele display_name: Görünen isim @@ -140,17 +141,18 @@ tr: header: Kapak resmi honeypot: "%{label} (doldurmayın)" inbox_url: Aktarıcı gelen kutusunun URL'si - irreversible: Gizlemek yerine bırak + irreversible: Gizlemek yerine benim için sil locale: Arayüz dili locked: Hesabı kilitle max_uses: Maksimum kullanım sayısı - new_password: Yeni şifre + new_password: Yeni parola note: Kişisel bilgiler otp_attempt: İki adımlı doğrulama kodu - password: Şifre + password: Parola phrase: Anahtar kelime veya kelime öbeği setting_advanced_layout: Gelişmiş web arayüzünü etkinleştir setting_aggregate_reblogs: Zaman çizelgesindeki boostları grupla + setting_always_send_emails: Her zaman e-posta bildirimleri gönder setting_auto_play_gif: Hareketli GIF'leri otomatik oynat setting_boost_modal: Boostlamadan önce onay iletişim kutusu göster setting_crop_images: Genişletilmemiş tootlardaki resimleri 16x9 olarak kırp diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 339af8ffb..f33b31831 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -116,6 +116,8 @@ uk: scheduled_at: Відкладена публікація starts_at: Час початку text: Оголошення + appeal: + text: Поясніть, чому це рішення слід скасувати defaults: autofollow: Запросити слідкувати за вашим обліковим записом avatar: Аватар @@ -145,6 +147,7 @@ uk: phrase: Ключове слово або фраза setting_advanced_layout: Увімкнути розширений web-інтерфейс setting_aggregate_reblogs: Групувати просування в стрічках + setting_always_send_emails: Завжди надсилати сповіщення електронною поштою setting_auto_play_gif: Автоматично відтворювати анімовані GIF setting_boost_modal: Відображати діалог підтвердження під час передмухування setting_crop_images: Обрізати зображення в нерозкритих постах до 16x9 @@ -194,6 +197,7 @@ uk: sign_up_requires_approval: Обмеження реєстрації severity: Правило notification_emails: + appeal: Хтось подає апеляцію на рішення модератора digest: Надсилати дайджест електронною поштою favourite: Надсилати листа, коли комусь подобається Ваш статус follow: Надсилати листа, коли хтось підписується на Вас @@ -202,6 +206,7 @@ uk: pending_account: Надсилати електронного листа, коли новий обліковий запис потребує розгляду reblog: Надсилати листа, коли хтось передмухує Ваш статус report: Нову скаргу надіслано + trending_tag: Нове популярне вимагає розгляду rule: text: Правило tag: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 033209456..59c7a634b 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -5,14 +5,14 @@ vi: account_alias: acct: Nhập tên_người_dùng@máy chủ của tài khoản cũ account_migration: - acct: Nhập tên_người_dùng@máy chủ của tài khoản bạn muốn dời sang + acct: tên_người_dùng@máy chủ của tài khoản bạn muốn chuyển sang account_warning_preset: text: Bạn có thể dùng URL, hashtag và nhắc đến title: Tùy chọn. Không cho người nhận xem admin_account_action: include_statuses: Người dùng sẽ thấy các tút nào của họ bị kiểm duyệt send_email_notification: Người dùng sẽ nhận được lời giải thích về những gì xảy ra với tài khoản của họ - text_html: Tùy chọn. Bạn nên dùng cảnh cáo cài sẵn để tiết kiệm thời gian + text_html: Tùy chọn. Bạn nên dùng mẫu có sẵn để tiết kiệm thời gian type_html: Chọn làm gì với %{acct} types: disable: Tạm khóa đăng nhập tài khoản, nhưng không xóa hoặc ẩn tút. @@ -39,7 +39,7 @@ vi: digest: Chỉ gửi sau một thời gian dài không hoạt động hoặc khi bạn nhận được tin nhắn (trong thời gian vắng mặt) discoverable: Cho phép tài khoản của bạn xuất hiện trong gợi ý theo dõi, xu hướng và những tính năng khác email: Bạn sẽ được gửi một email xác nhận - fields: Được phép tạo tối đa 4 mục trên trang cá nhân của bạn + fields: Được phép thêm tối đa 4 mục trên trang hồ sơ của bạn header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px inbox_url: Sao chép URL của máy chủ mà bạn muốn dùng irreversible: Các tút đã lọc sẽ không thể phục hồi, kể cả sau khi xóa bộ lọc @@ -48,16 +48,17 @@ vi: password: Dùng ít nhất 8 ký tự phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút scopes: API nào ứng dụng sẽ được phép truy cập. Nếu bạn chọn quyền hạn cấp cao nhất, bạn không cần chọn từng phạm vi. - setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì những lượt đăng lại sau sẽ không hiển thị trên bảng tin nữa - setting_default_sensitive: Mặc định là nội dung nhạy cảm và chỉ hiển thị nếu nhấn vào + setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì những lượt đăng lại sau sẽ không hiện trên bảng tin nữa + setting_always_send_emails: Bình thường thì email thông báo sẽ không gửi khi bạn đang dùng Mastodon + setting_default_sensitive: Mặc định là nội dung nhạy cảm và chỉ hiện nếu nhấn vào setting_display_media_default: Làm mờ những thứ được đánh dấu là nhạy cảm setting_display_media_hide_all: Không hiển thị - setting_display_media_show_all: Luôn luôn hiển thị - setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn trên trang cá nhân + setting_display_media_show_all: Luôn hiển thị + setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn trên trang hồ sơ setting_noindex: Ảnh hưởng đến trang cá nhân và tút của bạn - setting_show_application: Tên ứng dụng bạn dùng để đăng tút sẽ hiện trong chi tiết bài đăng + setting_show_application: Tên ứng dụng bạn dùng để đăng tút sẽ hiện trong chi tiết của tút setting_use_blurhash: Lớp phủ mờ dựa trên màu sắc của hình ảnh nhạy cảm - setting_use_pending_items: Dồn lại toàn bộ tút mới và chỉ hiển thị khi nhấp chuột vào + setting_use_pending_items: Dồn lại toàn bộ tút mới và chỉ hiển thị khi nhấn vào username: Tên người dùng của bạn sẽ là duy nhất trên %{domain} whole_word: Khi từ khóa hoặc cụm từ là chữ và số, nó sẽ chỉ hiện ra những từ chính xác như vậy domain_allow: @@ -84,7 +85,7 @@ vi: rule: text: Mô tả một quy tắc bắt buộc trên máy chủ này. Nên để ngắn và đơn giản. sessions: - otp: 'Nhập mã xác thực hai bước được tạo bởi ứng dụng điện thoại của bạn hoặc dùng một trong các mã khôi phục của bạn:' + otp: 'Nhập mã xác minh 2 bước được tạo bởi ứng dụng điện thoại của bạn hoặc dùng một trong các mã khôi phục của bạn:' webauthn: Nếu đây là USB key, hãy cắm vào và thử xoay chiều. tag: name: Bạn có thể thay đổi cách viết hoa các chữ cái để giúp nó dễ đọc hơn @@ -109,7 +110,7 @@ vi: type: Hành động types: disable: Khóa - none: Cảnh cáo + none: Nhắc nhở sensitive: Nhạy cảm silence: Hạn chế suspend: Vô hiệu hóa @@ -132,7 +133,7 @@ vi: context: Áp dụng current_password: Mật khẩu hiện tại data: Dữ liệu - discoverable: Liệt kê tài khoản trên danh sách thành viên + discoverable: Đề xuất tài khoản display_name: Tên hiển thị email: Địa chỉ email expires_in: Hết hạn sau @@ -146,11 +147,12 @@ vi: max_uses: Số lần dùng tối đa new_password: Mật khẩu mới note: Tiểu sử - otp_attempt: Xác thực hai bước + otp_attempt: Mã xác minh 2 bước password: Mật khẩu phrase: Từ khóa hoặc cụm từ - setting_advanced_layout: Bật giao diện nhiều cột + setting_advanced_layout: Bật bố cục nhiều cột setting_aggregate_reblogs: Không hiện lượt đăng lại trùng lặp + setting_always_send_emails: Luôn gửi email thông báo setting_auto_play_gif: Tự động phát ảnh GIF setting_boost_modal: Yêu cầu xác nhận trước khi đăng lại tút setting_crop_images: Hiển thị ảnh theo tỉ lệ 16x9 @@ -163,7 +165,7 @@ vi: setting_display_media_default: Mặc định setting_display_media_hide_all: Ẩn toàn bộ setting_display_media_show_all: Hiện toàn bộ - setting_expand_spoilers: Luôn hiển thị đầy đủ nội dung tút + setting_expand_spoilers: Luôn hiển thị tút có nội dung ẩn setting_hide_network: Ẩn quan hệ của bạn setting_noindex: Không xuất hiện trong công cụ tìm kiếm setting_reduce_motion: Giảm chuyển động ảnh GIF @@ -171,7 +173,7 @@ vi: setting_system_font_ui: Dùng phông chữ mặc định của hệ thống setting_theme: Giao diện setting_trends: Hiển thị xu hướng hôm nay - setting_unfollow_modal: Yêu cầu xác nhận trước khi hủy theo dõi ai đó + setting_unfollow_modal: Yêu cầu xác nhận trước khi ngưng theo dõi ai đó setting_use_blurhash: Làm mờ trước ảnh/video nhạy cảm setting_use_pending_items: Không tự động cập nhật bảng tin severity: Mức độ nghiêm trọng diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 2867b47b6..33602885c 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -37,7 +37,7 @@ zh-CN: current_password: 为了安全起见,请输入当前账号的密码 current_username: 请输入当前账号的用户名以确认 digest: 仅在你长时间未登录,且收到了私信时发送 - discoverable: 允许他人通过推荐、趋势和其他途径发现你的账户 + discoverable: 允许他人通过推荐、热门和其他途径发现你的账户 email: 我们会向你发送一封确认邮件 fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目 header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px @@ -49,6 +49,7 @@ zh-CN: phrase: 匹配将忽略嘟文或内容警告里的字母大小写 scopes: 哪些 API 被允许使用。如果你勾选了更高一级的范围,就不用单独选中子项目了。 setting_aggregate_reblogs: 不显示最近已经被转嘟过的嘟文(只会影响新收到的转嘟) + setting_always_send_emails: 一般情况下,如果您活跃使用 Mastodon,我们不会给您发送电子邮件通知 setting_default_sensitive: 敏感内容默认隐藏,并在点击后显示 setting_display_media_default: 隐藏被标记为敏感内容的媒体 setting_display_media_hide_all: 隐藏所有媒体 @@ -151,6 +152,7 @@ zh-CN: phrase: 关键词 setting_advanced_layout: 启用高级 Web 界面 setting_aggregate_reblogs: 在时间轴中合并转嘟 + setting_always_send_emails: 总是发送电子邮件通知 setting_auto_play_gif: 自动播放 GIF 动画 setting_boost_modal: 在转嘟前询问我 setting_crop_images: 把未展开嘟文中的图片裁剪到 16x9 @@ -209,7 +211,7 @@ zh-CN: pending_account: 在有账号需要审核时,发送电子邮件提醒我 reblog: 当有用户转嘟了我的嘟文时,发送电子邮件提醒我 report: 新举报已提交 - trending_tag: 新趋势待审核 + trending_tag: 新热门待审核 rule: text: 规则 tag: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 9501533f1..1a2a449f0 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -49,6 +49,7 @@ zh-TW: phrase: 無論是嘟文的本文或是內容警告都會被過濾 scopes: 允許讓應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。 setting_aggregate_reblogs: 請勿顯示最近已被轉嘟之嘟文的最新轉嘟(只影響最新收到的嘟文) + setting_always_send_emails: 一般情況下若您活躍使用 Mastodon ,我們不會寄送 e-mail 通知 setting_default_sensitive: 敏感媒體預設隱藏,且按一下即可重新顯示 setting_display_media_default: 隱藏標為敏感的媒體 setting_display_media_hide_all: 總是隱藏所有媒體 @@ -151,6 +152,7 @@ zh-TW: phrase: 關鍵字或片語 setting_advanced_layout: 啟用進階網頁介面 setting_aggregate_reblogs: 時間軸中的群組轉嘟 + setting_always_send_emails: 總是發送 e-mail 通知 setting_auto_play_gif: 自動播放 GIF 動畫 setting_boost_modal: 在轉嘟前先詢問我 setting_crop_images: 將未展開嘟文中的圖片裁剪至 16x9 diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 687f4d40d..5412b8fd1 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -894,11 +894,6 @@ sk: many: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! one: A ešte, kým si bol/a preč, si získal/a jedného nového následovateľa! Hurá! other: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! - subject: - few: "%{count} nových oboznámení od tvojej poslednej návštevy \U0001F418" - many: "%{count} nových oboznámení od tvojej poslednej návštevy \U0001F418" - one: "Jedno nové oboznámenie od tvojej poslednej návštevy \U0001F418" - other: "%{count} nové oboznámenia od tvojej poslednej návštevy \U0001F418" title: Zatiaľ čo si bol/a preč… favourite: body: 'Tvoj príspevok bol uložený medzi obľúbené užívateľa %{name}:' @@ -1144,9 +1139,6 @@ sk: explanation: Vyžiadal/a si si úplnú zálohu svojho Mastodon účtu. Táto záloha je teraz pripravená na stiahnutie! subject: Tvoj archív je pripravený na stiahnutie title: Odber archívu - sign_in_token: - subject: Prosím potvrď pokus o prihlásenie - title: Pokus o prihlásenie warning: subject: disable: Tvoj účet %{acct} bol zamrazený @@ -1181,7 +1173,6 @@ sk: otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email} seamless_external_login: Si prihlásená/ý cez externú službu, takže nastavenia hesla a emailu ti niesú prístupné. signed_in_as: 'Prihlásená/ý ako:' - suspicious_sign_in_confirmation: Vyzerá to, že si sa predtým z tohto zariadenia ešte neprihlasoval/a, takže ti na tvoju emailovú adresu pošleme bezpečnostný kód, aby sa potvrdilo, že si to ty. verification: explanation_html: 'Môžeš sa overiť ako majiteľ odkazov v metadátach tvojho profilu. Na to ale musí odkazovaná stránka obsahovať odkaz späť na tvoj Mastodon profil. Tento spätný odkaz musí mať prívlastok rel="me". Na texte odkazu nezáleží. Tu je príklad:' verification: Overenie diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 6de760dbc..cf7564542 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -798,11 +798,6 @@ sl: one: Prav tako ste pridobili enega novega sledilca, ko ste bili odsotni! Juhu! other: Prav tako ste pridobili %{count} novih sledilcev, ko ste bili odsotni! Juhu! two: Prav tako ste pridobili %{count} nova sledilca, ko ste bili odsotni! Juhu! - subject: - few: "%{count} nova obvestila od vašega zadnjega obiska \U0001F418" - one: "1 novo obvestilo od vašega zadnjega obiska \U0001F418" - other: "%{count} novih obvestil od vašega zadnjega obiska \U0001F418" - two: "%{count} novi obvestili od vašega zadnjega obiska \U0001F418" title: V vaši odsotnosti... favourite: body: "%{name} je vzljubil/a vaše stanje:" @@ -1116,8 +1111,6 @@ sl: explanation: Zahtevali ste popolno varnostno kopijo računa Mastodon. Zdaj je pripravljen za prenos! subject: Vaš arhiv je pripravljen za prenos title: Prevzem arhiva - sign_in_token: - title: Poskus prijave warning: reason: 'Razlog:' subject: @@ -1151,7 +1144,6 @@ sl: users: follow_limit_reached: Ne morete spremljati več kot %{limit} ljudi invalid_otp_token: Neveljavna dvofaktorska koda - invalid_sign_in_token: Neveljavna varnostna koda otp_lost_help_html: Če ste izgubili dostop do obeh, stopite v stik z %{email} seamless_external_login: Prijavljeni ste prek zunanje storitve, tako da nastavitve gesla in e-pošte niso na voljo. signed_in_as: 'Vpisani kot:' diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 560f4bff7..b21767738 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -48,7 +48,7 @@ sq: rejecting_media_title: Media e filtruar silenced: 'Postimet prej këtyre shërbyesve do të jenë të fshehura në rrjedha kohore dhe biseda publike, dhe prej ndërveprimeve të përdoruesve të tyre s’do të prodhohen njoftime, veç në i ndjekshi:' silenced_title: Shërbyes të heshtuar - suspended: 'S’do të përpunohen, depozitohen apo shkëmbehen të dhëna prej këtyre shërbyesve, duke e bërë të pamundur çfarëdo ndërveprimi apo komunikimi me përdorues prej këtyre shërbyesve:' + suspended: 'Prej këtyre shërbyesve s’do të përpunohen, depozitohen apo shkëmbehen të dhëna, duke e bërë të pamundur çfarëdo ndërveprimi apo komunikimi me përdorues prej këtyre shërbyesve:' suspended_title: Shërbyes të pezulluar unavailable_content_html: Mastodon-i përgjithësisht ju lejon të shihni lëndë nga përdorues dhe të ndërveproni me të tillë prej cilitdo shërbyes në fedivers. Këto janë përjashtimet që janë bërë në këtë shërbyes. user_count_after: @@ -199,7 +199,6 @@ sq: security_measures: only_password: Vetëm fjalëkalim password_and_2fa: Fjalëkalim dhe 2FA - password_and_sign_in_token: Fjalëkalim dhe token email-i sensitive: Rezervat sensitized: iu vu shenjë si rezervat shared_inbox_url: URL kutie të përbashkët mesazhesh @@ -597,7 +596,7 @@ sq: action_taken_by: Veprimi i ndërmarrë nga actions: delete_description_html: Postimet e raportuara do të fshihen dhe do të regjistrohet një paralajmërim, për t’ju ndihmuar të përshkallëzoni hapat në rast shkeljesh të ardhme nga e njëjta llogari. - mark_as_sensitive_description_html: Media në postimet e raportuar do të shënohet si rezervat dhe do të regjistrohet një paralajmërim për t’ju ndihmuar ta shpini çështjen më tej, në rast shkeljesh të ardhshme nga e njëjta llogari. + mark_as_sensitive_description_html: Medias te postimet e raportuara do t’i vihet shenjë si me spec dhe për të do të regjistrohet një paralajmërim, për t’ju ndihmuar të përshkallëzoni masat tuaja mbi shkelje të ardhshme nga e njëjta llogari. other_description_html: Shihni më tepër mundësi për kontroll të sjelljes së një llogari dhe përshtatni komunikimin me llogarinë e raportuar. resolve_description_html: Ndaj llogarisë së raportuar nuk do të ndërmerret ndonjë veprim, s’do të regjistrohet ndonjë paralajmërim dhe raporti do të mbyllet. silence_description_html: Profili do të jetë i dukshëm vetëm për ata që e ndjekin tashmë, ose që e kërkojnë dorazi, duke reduktuar rëndë përhapjen e tij. Mundet përherë të prapakthehet. @@ -1231,8 +1230,8 @@ sq: one: Veç kësaj, u bëtë me një ndjekës të ri, teksa s’ishit këtu! Ëhë! other: Veç kësaj, u bëtë me %{count} ndjekës të rinj, teksa s’ishit këtu! Shkëlqyeshëm! subject: - one: "1 njoftim i ri që nga vizita juaj e fundit \U0001F418" - other: "%{count} njoftime të reja që nga vizita juaj e fundit \U0001F418" + one: "1 njoftim i ri që nga vizita juaj e fundit 🐘" + other: "%{count} njoftime të reja që nga vizita juaj e fundit 🐘" title: Gjatë mungesës tuaj… favourite: body: 'Gjendja juaj u parapëlqye nga %{name}:' @@ -1627,12 +1626,13 @@ sq: explanation: Kërkuat një kopjeruajtje të plotë të llogarisë tuaj Mastodon. E keni gati për shkarkim! subject: Arkivi juaj është gati për shkarkim title: Marrje arkivi me vete - sign_in_token: - details: 'Ja hollësitë e përpjekjes:' - explanation: 'Pikasëm një përpjekje për të bërë hyrje në llogarinë tuaj nga një adresë IP jo e pranuar. Nëse ky jeni ju, ju lutemi jepni kodin e sigurisë më poshtë te faqja e pyetjes për hyrje:' - further_actions: 'Nëse ky s’qetë ju, ju lutemi, ndryshoni fjalëkalimin tuaj dhe aktivizoni në llogarinë tuaj mirëfilltësim dyfaktorësh. Këtë mund ta bëni këtu:' - subject: Ju lutemi, ripohoni përpjekje hyrjeje - title: Përpjekje hyrjeje + suspicious_sign_in: + change_password: ndryshoni fjalëkalimin tuaj + details: 'Ja hollësitë për hyrjen:' + explanation: Kemi pikasur një hyrje në llogarinë tuaj që nga adresë e re IP. + further_actions_html: Nëse s’ishit ju, këshillojmë të %{action} menjëherë dhe të aktivizoni mirëfilltësim dyfaktorësh, për ta mbajtur llogarinë tuaj të sigurt. + subject: Llogaria juaj është përdorur që nga një adresë e re IP + title: Hyrje e re warning: appeal: Parashtroni një apelim appeal_description: Nëse besoni se është gabim, mund t’i parashtroni një apelim stafit të %{instance}. @@ -1683,13 +1683,10 @@ sq: title: Mirë se vini, %{name}! users: follow_limit_reached: S’mund të ndiqni më tepër se %{limit} persona - generic_access_help_html: Problem me hyrjen në llogarinë tuaj? Për asistencë mund të lidheni me %{email} invalid_otp_token: Kod dyfaktorësh i pavlefshëm - invalid_sign_in_token: Kod sigurie i pavlefshëm otp_lost_help_html: Nëse humbët hyrjen te të dy, mund të lidheni me %{email} seamless_external_login: Jeni futur përmes një shërbimi të jashtëm, ndaj s’ka rregullime fjalëkalimi dhe email. signed_in_as: 'I futur si:' - suspicious_sign_in_confirmation: Duket se s’keni hyrë më parë nga kjo pajisje, dhe se keni kohë pa bërë hyrje, ndaj po ju dërgojmë një kod sigurie te adresa juaj email, që të ripohoni se jeni ju. verification: explanation_html: 'Mundeni të verifikoni veten si i zoti i lidhjeve te tejtëdhënat e profilit tuaj. Për këtë, sajti i lidhur duhet të përmbajë një lidhje për te profili juaj Mastodon. Lidhje për te ajo duhet të ketë një atribut rel="me". Lënda tekst e lidhjes nuk ngre peshë. Ja një shembull:' verification: Verifikim diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 7dcff987b..321fc6398 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -336,10 +336,6 @@ sr-Latn: few: Dobili ste %{count} nova pratioca! Sjajno! one: Dobili ste jednog novog pratioca! Jeee! other: Dobili ste %{count} novih pratioca! Sjajno! - subject: - few: "%{count} nova obaveštenja od poslednje posete \U0001F418" - one: "1 novo obaveštenje od poslednje posete \U0001F418" - other: "%{count} novih obaveštenja od poslednje posete \U0001F418" favourite: body: "%{name} je postavio kao omiljen Vaš status:" subject: "%{name} je postavio kao omiljen Vaš status" diff --git a/config/locales/sr.yml b/config/locales/sr.yml index e89e43879..94d8c43cf 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -529,10 +529,6 @@ sr: few: Добили сте %{count} нова пратиоца! Сјајно! one: Добили сте једног новог пратиоца! Јеее! other: Добили сте %{count} нових пратиоца! Сјајно! - subject: - few: "%{count} нова обавештења од последње посете \U0001F418" - one: "1 ново обавештење од последње посете \U0001F418" - other: "%{count} нових обавештења од последње посете \U0001F418" title: Док нисте били ту... favourite: body: "%{name} је поставио као омиљен Ваш статус:" diff --git a/config/locales/sv.yml b/config/locales/sv.yml index c8424e5f5..b7f8c6747 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -160,6 +160,9 @@ sv: pending: Inväntar granskning perform_full_suspension: Utför full avstängning previous_strikes: Tidigare varningar + previous_strikes_description_html: + one: Detta konto har en varning. + other: Detta konto har %{count} varningar. promote: Befordra protocol: Protokoll public: Offentlig @@ -187,7 +190,6 @@ sv: security_measures: only_password: Endast lösenord password_and_2fa: Lösenord och 2FA - password_and_sign_in_token: Lösenord och e-post token sensitive: Känsligt sensitized: markerad som känsligt shared_inbox_url: Delad inkorg URL @@ -264,6 +266,8 @@ sv: create_announcement_html: "%{name} skapade tillkännagivande %{target}" create_custom_emoji_html: "%{name} laddade upp ny emoji %{target}" create_domain_block_html: "%{name} blockerade domänen %{target}" + create_email_domain_block_html: "%{name} svartlistade e-postdomän %{target}" + create_ip_block_html: "%{name} skapade regel för IP %{target}" destroy_custom_emoji_html: "%{name} förstörde emoji %{target}" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" destroy_email_domain_block_html: "%{name} avblockerade e-postdomän %{target}" @@ -326,6 +330,7 @@ sv: enable: Aktivera enabled: Aktiverad enabled_msg: Aktiverade den emoji utan problem + image_hint: PNG eller GIF upp till %{size} list: Lista listed: Noterade new: @@ -406,6 +411,12 @@ sv: back_to_limited: Begränsat back_to_warning: Varning by_domain: Domän + content_policies: + policies: + silence: Gräns + policy: Policy + reason: Offentlig orsak + title: Riktlinjer för innehåll delivery: all: Alla clear: Rensa leverans-fel @@ -420,6 +431,7 @@ sv: title: Moderering private_comment: Privat kommentar public_comment: Offentlig kommentar + purge: Rensa title: Kända instanser total_blocked_by_us: Blockerad av oss total_followed_by_them: Följs av dem @@ -466,6 +478,7 @@ sv: report_notes: created_msg: Anmälningsanteckning har skapats! destroyed_msg: Anmälningsanteckning har raderats! + today_at: Idag kl. %{time} reports: account: notes: @@ -596,6 +609,8 @@ sv: delete: Radera uppladdad fil statuses: back_to_account: Tillbaka till kontosidan + batch: + report: Rapportera deleted: Raderad media: title: Media @@ -606,19 +621,26 @@ sv: delete_statuses: "%{name} raderade %{target}s inlägg" disable: "%{name} frös %{target}s konto" silence: "%{name} begränsade %{target}s konto" + appeal_approved: Överklagad system_checks: rules_check: action: Hantera serverregler message_html: Du har inte definierat några serverregler. title: Administration trends: + allow: Tillåt + approved: Godkänd statuses: allow: Godkänn inlägg allow_account: Godkänn författare + title: Trender warning_presets: add_new: Lägg till ny delete: Radera admin_mailer: + new_appeal: + actions: + none: en varning new_report: body: "%{reporter} har rapporterat %{target}" body_remote: Någon från %{domain} har rapporterat %{target} @@ -748,6 +770,8 @@ sv: strikes: created_at: Daterad status: 'Inlägg #%{id}' + title_actions: + none: Varning domain_validator: invalid_domain: är inte ett giltigt domännamn errors: @@ -811,6 +835,7 @@ sv: delete: Radera order_by: Sortera efter save_changes: Spara ändringar + today: idag validation_errors: one: Något är inte riktigt rätt ännu! Kontrollera felet nedan other: Något är inte riktigt rätt ännu! Kontrollera dom %{count} felen nedan @@ -899,6 +924,9 @@ sv: carry_mutes_over_text: Den här användaren flyttade från %{acct} som du hade tystat. copy_account_note_text: 'Den här användaren flyttade från %{acct}, här var dina föregående anteckningar om dem:' notification_mailer: + admin: + sign_up: + subject: "%{name} registrerade sig" digest: action: Visa alla aviseringar body: Här är en kort sammanfattning av de meddelanden du missade sedan ditt senaste besök på %{since} @@ -906,9 +934,6 @@ sv: new_followers_summary: one: Du har också förvärvat en ny följare! Jippie! other: Du har också fått %{count} nya följare medans du var iväg! Otroligt! - subject: - one: "1 nytt meddelande sedan ditt senaste besök \U0001F418" - other: "%{count} nya meddelanden sedan ditt senaste besök \U0001F418" title: I din frånvaro... favourite: body: 'Din status favoriserades av %{name}:' @@ -936,6 +961,8 @@ sv: title: Ny knuff status: subject: "%{name} publicerade nyss" + update: + subject: "%{name} redigerade ett inlägg" notifications: email_events: Händelser för e-postaviseringar email_events_hint: 'Välj händelser som du vill ta emot aviseringar för:' @@ -1263,18 +1290,19 @@ sv: explanation: Du begärde en fullständig säkerhetskopiering av ditt Mastodon-konto. Det är nu klart för nedladdning! subject: Ditt arkiv är klart för nedladdning title: Arkivuttagning - sign_in_token: - details: 'Här är detaljerna för försöket:' - further_actions: 'Om det inte var du, vänligen ändra ditt lösenord och aktivera tvåfaktor-autentisering i ditt konto. Du kan göra det här:' - title: Inloggningsförsök + suspicious_sign_in: + change_password: Ändra ditt lösenord + title: En ny inloggning warning: reason: 'Anledning:' + statuses: 'Inlägg citerades:' subject: disable: Ditt konto %{acct} har blivit fruset none: Varning för %{acct} silence: Ditt konto %{acct} har blivit begränsat suspend: Ditt konto %{acct} har stängts av title: + delete_statuses: Inlägg borttagna disable: Kontot fruset none: Varning silence: Kontot begränsat @@ -1298,9 +1326,7 @@ sv: title: Välkommen ombord, %{name}! users: follow_limit_reached: Du kan inte följa fler än %{limit} personer - generic_access_help_html: Har du problem med att komma åt ditt konto? Du kan komma i kontakt med %{email} för assistans invalid_otp_token: Ogiltig tvåfaktorskod - invalid_sign_in_token: Ogiltig säkerhetskod otp_lost_help_html: Om du förlorat åtkomst till båda kan du komma i kontakt med %{email} seamless_external_login: Du är inloggad via en extern tjänst, så lösenord och e-postinställningar är inte tillgängliga. signed_in_as: 'Inloggad som:' @@ -1312,4 +1338,6 @@ sv: delete_confirmation: Är du säker på att du vill ta bort denna säkerhetsnyckel? destroy: success: Din säkerhetsnyckel har raderats. + invalid_credential: Ogiltig säkerhetsnyckel not_enabled: Du har inte aktiverat WebAuthn än + registered_on: Registrerad den %{date} diff --git a/config/locales/ta.yml b/config/locales/ta.yml index d5ba7603d..e3b61a487 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -300,14 +300,3 @@ ta: errors: in_reply_not_found: நீங்கள் மறுமொழி அளிக்க முயலும் பதிவு இருப்பதுபோல் தெரியவில்லை. show_thread: தொடரைக் காட்டு - user_mailer: - sign_in_token: - details: 'அம்முயற்சி பற்றிய விவரங்கள் இங்கே:' - explanation: 'அங்கீகரிக்கப்படாத ஓர் IP முகவரியிலிருந்து உங்கள் கணக்கிற்குள் நுழையும் முயற்சி நடந்துள்ளது. இது நீங்கள்தான் என்றால், தயவுசெய்து பாதுகாப்பு குறியீட்டைக் கீழே உள்ளிடவும்:' - further_actions: 'இது நீங்கள் இல்லை என்றால், தயவுசெய்து உங்கள் கடவுச்சொல்லை மாற்றவும். மேலும், உங்கள் கணக்கிற்கு இரண்டு கட்ட அங்கீகாரத்தை (two-factor authentication) செயலாக்கவும். அதை இங்கு செய்ய இயலும்:' - subject: உள்நுழைய முயற்சித்ததை தயவுசெய்து உறுதிபடுத்தவும் - title: உள்நுழைய முயற்சி - users: - generic_access_help_html: உங்கள் கணக்கை அணுகுவதில் சிக்கலா? உதவிக்கு %{email} -உடன் தொடர்பு கொள்ளவும் - invalid_sign_in_token: தவறான பாதுகாப்புக் குறியீடு - suspicious_sign_in_confirmation: இதற்கு முன்பு இந்த சாதனத்திலிருந்து நீங்கள் உள்நுழைந்ததுபோல் தெரியவில்லை. மேலும், நீங்கள் உள்நுழைந்தே சில காலம் ஆகிறது. எனவே, இது நீங்கள்தானா என்பதை உறுதிப்படுத்த உங்கள் மின்னஞ்சல் முகவரிக்கு ஒரு பாதுகாப்புக் குறியீட்டை அனுப்புகிறோம். diff --git a/config/locales/th.yml b/config/locales/th.yml index ce40b9517..5fb25d2db 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1,7 +1,7 @@ --- th: about: - about_hashtag_html: มีการแท็กโพสต์สาธารณะเหล่านี้ด้วย #%{hashtag} คุณสามารถโต้ตอบกับโพสต์ได้หากคุณมีบัญชีที่ใดก็ตามในจักรวาลสหพันธ์ + about_hashtag_html: นี่คือโพสต์สาธารณะที่ได้รับการแท็กด้วย #%{hashtag} คุณสามารถโต้ตอบกับโพสต์ได้หากคุณมีบัญชีที่ใดก็ตามในจักรวาลสหพันธ์ about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!' about_this: เกี่ยวกับ active_count_after: ใช้งานอยู่ @@ -68,7 +68,7 @@ th: people_followed_by: ผู้คนที่ %{name} ติดตาม people_who_follow: ผู้คนที่ติดตาม %{name} pin_errors: - following: คุณต้องกำลังติดตามคนที่คุณต้องการแนะนำอยู่แล้ว + following: คุณต้องกำลังติดตามบุคคลที่คุณต้องการแนะนำอยู่แล้ว posts: other: โพสต์ posts_tab_heading: โพสต์ @@ -156,6 +156,8 @@ th: pending: การตรวจทานที่รอดำเนินการ perform_full_suspension: ระงับ previous_strikes: การดำเนินการก่อนหน้านี้ + previous_strikes_description_html: + other: บัญชีนี้มี %{count} การดำเนินการ promote: เลื่อนขั้น protocol: โปรโตคอล public: สาธารณะ @@ -186,7 +188,6 @@ th: security_measures: only_password: รหัสผ่านเท่านั้น password_and_2fa: รหัสผ่านและ 2FA - password_and_sign_in_token: รหัสผ่านและโทเคนอีเมล sensitive: บังคับให้ละเอียดอ่อน sensitized: ทำเครื่องหมายว่าละเอียดอ่อนแล้ว shared_inbox_url: URL กล่องขาเข้าที่แบ่งปัน @@ -480,12 +481,15 @@ th: delivery: all: ทั้งหมด clear: ล้างข้อผิดพลาดการจัดส่ง + failing: ล้มเหลว restart: เริ่มการจัดส่งใหม่ stop: หยุดการจัดส่ง unavailable: ไม่พร้อมใช้งาน delivery_available: มีการจัดส่ง delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง empty: ไม่พบโดเมน + known_accounts: + other: "%{count} บัญชีที่รู้จัก" moderation: all: ทั้งหมด limited: จำกัดอยู่ @@ -549,6 +553,7 @@ th: action_log: รายการบันทึกการตรวจสอบ action_taken_by: ใช้การกระทำโดย actions: + other_description_html: ดูตัวเลือกเพิ่มเติมสำหรับการควบคุมพฤติกรรมของบัญชีและปรับแต่งการสื่อสารไปยังบัญชีที่รายงาน resolve_description_html: จะไม่ใช้การกระทำกับบัญชีที่รายงาน ไม่มีการบันทึกการดำเนินการ และจะปิดรายงาน actions_description_html: ตัดสินใจว่าการกระทำใดที่จะใช้เพื่อแก้ปัญหารายงานนี้ หากคุณใช้การกระทำที่เป็นการลงโทษกับบัญชีที่รายงาน จะส่งการแจ้งเตือนอีเมลถึงเขา ยกเว้นเมื่อมีการเลือกหมวดหมู่ สแปม are_you_sure: คุณแน่ใจหรือไม่? @@ -729,6 +734,8 @@ th: allow_provider: อนุญาตผู้เผยแพร่ disallow: ไม่อนุญาตลิงก์ disallow_provider: ไม่อนุญาตผู้เผยแพร่ + shared_by_over_week: + other: แบ่งปันโดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา title: ลิงก์ที่กำลังนิยม usage_comparison: แบ่งปัน %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้ pending_review: การตรวจทานที่รอดำเนินการ @@ -763,6 +770,8 @@ th: trending_rank: 'กำลังนิยม #%{rank}' usable: สามารถใช้ usage_comparison: ใช้ %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้ + used_by_over_week: + other: ใช้โดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา title: แนวโน้ม warning_presets: add_new: เพิ่มใหม่ @@ -1120,7 +1129,7 @@ th: new_followers_summary: other: นอกจากนี้คุณยังได้รับ %{count} ผู้ติดตามใหม่ขณะที่ไม่อยู่! มหัศจรรย์! subject: - other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ \U0001F418" + other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ 🐘" title: เมื่อคุณไม่อยู่... favourite: body: 'โพสต์ของคุณได้รับการชื่นชอบโดย %{name}:' @@ -1412,12 +1421,10 @@ th: explanation: คุณได้ขอข้อมูลสำรองแบบเต็มของบัญชี Mastodon ของคุณ ตอนนี้ข้อมูลสำรองพร้อมสำหรับการดาวน์โหลดแล้ว! subject: การเก็บถาวรของคุณพร้อมสำหรับการดาวน์โหลดแล้ว title: การส่งออกการเก็บถาวร - sign_in_token: - details: 'นี่คือรายละเอียดของความพยายาม:' - explanation: 'เราตรวจพบความพยายามลงชื่อเข้าบัญชีของคุณจากที่อยู่ IP ที่ไม่รู้จัก หากนี่คือคุณ โปรดป้อนรหัสความปลอดภัยด้านล่างในหน้าตรวจสอบการลงชื่อเข้า:' - further_actions: 'หากนี่ไม่ใช่คุณ โปรดเปลี่ยนรหัสผ่านของคุณและเปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยในบัญชีของคุณ คุณสามารถทำได้ที่นี่:' - subject: โปรดยืนยันการลงชื่อเข้าที่พยายาม - title: ความพยายามลงชื่อเข้า + suspicious_sign_in: + change_password: เปลี่ยนรหัสผ่านของคุณ + details: 'นี่คือรายละเอียดของการลงชื่อเข้า:' + title: การลงชื่อเข้าใหม่ warning: appeal: ส่งการอุทธรณ์ appeal_description: หากคุณเชื่อว่านี่เป็นข้อผิดพลาด คุณสามารถส่งการอุทธรณ์ไปยังพนักงานของ %{instance} @@ -1468,13 +1475,10 @@ th: title: ยินดีต้อนรับ %{name}! users: follow_limit_reached: คุณไม่สามารถติดตามมากกว่า %{limit} คน - generic_access_help_html: มีปัญหาในการเข้าถึงบัญชีของคุณ? คุณสามารถติดต่อ %{email} สำหรับความช่วยเหลือ invalid_otp_token: รหัสสองปัจจัยไม่ถูกต้อง - invalid_sign_in_token: รหัสความปลอดภัยไม่ถูกต้อง otp_lost_help_html: หากคุณสูญเสียการเข้าถึงทั้งสองอย่าง คุณสามารถติดต่อ %{email} seamless_external_login: คุณได้เข้าสู่ระบบผ่านบริการภายนอก ดังนั้นจึงไม่มีการตั้งค่ารหัสผ่านและอีเมล signed_in_as: 'ลงชื่อเข้าเป็น:' - suspicious_sign_in_confirmation: ดูเหมือนว่าคุณไม่เคยเข้าสู่ระบบจากอุปกรณ์นี้มาก่อน ดังนั้นเราจึงส่งรหัสความปลอดภัยไปยังที่อยู่อีเมลของคุณเพื่อยืนยันว่าเป็นคุณ verification: verification: การตรวจสอบ webauthn_credentials: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2733f5eba..922f4fd82 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -165,6 +165,9 @@ tr: pending: Bekleyen yorum perform_full_suspension: Askıya al previous_strikes: Önceki eylemler + previous_strikes_description_html: + one: Bu hesap için bir eylem yapılmış. + other: Bu hesap için %{count} eylem yapılmış. promote: Yükselt protocol: Protokol public: Herkese açık @@ -182,7 +185,7 @@ tr: send: Doğrulama epostasını yeniden gönder success: Onay e-postası başarıyla gönderildi! reset: Sıfırla - reset_password: Şifreyi sıfırla + reset_password: Parolayı sıfırla resubscribe: Yeniden abone ol role: İzinler roles: @@ -196,7 +199,6 @@ tr: security_measures: only_password: Sadece parola password_and_2fa: Parola ve İki aşamalı doğrulama - password_and_sign_in_token: Parola ve e-posta tokeni sensitive: Hassas sensitized: Hassas olarak işaretlendi shared_inbox_url: Paylaşılan gelen kutusu bağlantısı @@ -515,6 +517,7 @@ tr: delivery: all: Tümü clear: Teslimat hatalarını temizle + failing: Hata restart: Teslimatı yeniden başlat stop: Teslimatı durdur unavailable: Mevcut Değil @@ -523,6 +526,9 @@ tr: delivery_error_hint: Eğer teslimat %{count} gün boyunca mümkün olmazsa, otomatik olarak teslim edilemiyor olarak işaretlenecek. destroyed_msg: "%{domain} alan adından veriler hemen silinmek üzere kuyruğa alındı." empty: Alan adı bulunamadı. + known_accounts: + one: "%{count} bilinen hesap" + other: "%{count} bilinen hesap" moderation: all: Tümü limited: Sınırlı @@ -592,7 +598,7 @@ tr: action_taken_by: tarafından gerçekleştirilen eylem actions: delete_description_html: Bildirilen gönderiler silinecek ve aynı hesapla ileride yaşabileceğiniz etkileşimlerde çoğaltmanız için bir eylem kaydedilecek. - mark_as_sensitive_description_html: Bildirilen gönderilerdeki medya dosyaları hassas olarak işaretlenecek ve aynı hesapla ileride yaşayabileceğiniz etkileşimlerde kullanabilmeniz için bir eylem kaydedilecek. + mark_as_sensitive_description_html: Bildirilen gönderilerdeki medya dosyaları hassas olarak işaretlenecek ve aynı hesabın gelecekteki ihlallerinde daha yetkili makamlara bildirmenize yardımcı olmak için bir eylem kaydedilecek. other_description_html: Hesabın davranışını denetlemek ve bildirilen hesabın iletişimini yapılandırmak için daha fazla seçenek görün. resolve_description_html: Bildirilen hesap için bir şey yapılmayacak, eylem kaydedilmeyecek ve bildirim kapatılacak. silence_description_html: Profil sadece halihazırda takip edenler ve elle bakanlarca görünecek, böylece erişimi ciddi bir şekilde kısıtlanacak. Her zaman geri alınabilir. @@ -767,6 +773,11 @@ tr: system_checks: database_schema_check: message_html: Beklemede olan veritabanı güncellemeleri mevcut. Uygulamanın beklenildiği gibi çalışması için lütfen onları çalıştırın + elasticsearch_running_check: + message_html: Elasticsearch'e bağlanılamıyor. Çalıştığından emin olun veya tüm metin aramayı devre dışı bırakın + elasticsearch_version_check: + message_html: 'Uyumsuz Elasticsearch sürümü: %{value}' + version_comparison: Elasticsearch %{running_version} sürümü çalışıyor, ancak %{required_version} sürümü gerekiyor rules_check: action: Sunucu kurallarını yönet message_html: Herhangi bir sunucu kuralı belirlemediniz. @@ -786,8 +797,12 @@ tr: description_html: Bu bağlantılar şu anda sunucunuzun gönderilerini gördüğü hesaplarca bolca paylaşılıyor. Kullanıcılarınızın dünyada neler olduğunu görmesine yardımcı olabilir. Yayıncıyı onaylamadığınız sürece hiçbir bağlantı herkese açık yayınlanmaz. Tekil bağlantıları onaylayabilir veya reddedebilirsiniz. disallow: Bağlantıya izin verme disallow_provider: Yayıncıya izin verme + shared_by_over_week: + one: Geçen hafta bir kişi paylaştı + other: Geçen hafta %{count} kişi paylaştı title: Öne çıkan bağlantılar usage_comparison: Bugün %{today} kere paylaşıldı, dün %{yesterday} kere paylaşılmıştı + only_allowed: Sadece izin verilenler pending_review: İnceleme bekliyor preview_card_providers: allowed: Bu yayıncının bağlantıları öne çıkabilir @@ -825,7 +840,11 @@ tr: trending_rank: 'Öne çıkanlar #%{rank}' usable: Kullanılabilir usage_comparison: Bugün %{today} kere kullanıldı, dün %{yesterday} kere kullanılmıştı + used_by_over_week: + one: Geçen hafta bir kişi tarafından kullanıldı + other: Geçen hafta %{count} kişi tarafından kullanıldı title: Öne çıkanlar + trending: Öne çıkanlar warning_presets: add_new: Yeni ekle delete: Sil @@ -903,7 +922,7 @@ tr: your_token: Erişim belirteciniz auth: apply_for_account: Davet et - change_password: Şifre + change_password: Parola checkbox_agreement_html: Sunucu kurallarını ve hizmet şartlarını kabul ediyorum checkbox_agreement_without_rules_html: Hizmet şartlarını kabul ediyorum delete_account: Hesabı sil @@ -914,7 +933,7 @@ tr: suffix: Bir hesapla, kişileri takip edebilir, güncellemeler gönderebilir, herhangi bir Mastodon sunucusundan kullanıcılarla mesaj alışverişinde bulunabilir ve daha birçok şey yapabilirsin! didnt_get_confirmation: Doğrulama talimatlarını almadınız mı? dont_have_your_security_key: Güvenlik anahtarınız yok mu? - forgot_password: Şifrenizi mi unuttunuz? + forgot_password: Parolanızı mı unuttunuz? invalid_reset_password_token: Parola sıfırlama belirteci geçersiz veya süresi dolmuş. Lütfen yeni bir tane talep edin. link_to_otp: Telefonunuzdan iki adımlı bir kod veya bir kurtarma kodu girin link_to_webauth: Güvenlik anahtarı cihazınızı kullanın @@ -930,9 +949,9 @@ tr: register: Kaydol registration_closed: "%{instance} yeni üyeler kabul etmemektedir" resend_confirmation: Onaylama talimatlarını tekrar gönder - reset_password: Şifreyi sıfırla + reset_password: Parolayı sıfırla security: Güvenlik - set_new_password: Yeni şifre belirle + set_new_password: Yeni parola belirle setup: email_below_hint_html: Eğer aşağıdaki e-posta adresi yanlışsa, onu burada değiştirebilir ve yeni bir doğrulama e-postası alabilirsiniz. email_settings_hint_html: Onaylama e-postası %{email} adresine gönderildi. Eğer bu e-posta adresi doğru değilse, hesap ayarlarından değiştirebilirsiniz. @@ -962,8 +981,8 @@ tr: challenge: confirm: Devam et hint_html: "İpucu: Önümüzdeki saat boyunca sana parolanı sormayacağız." - invalid_password: Geçersiz şifre - prompt: Devam etmek için şifreyi doğrulayın + invalid_password: Geçersiz parola + prompt: Devam etmek için parolanızı doğrulayın crypto: errors: invalid_key: geçerli bir Ed25519 veya Curve25519 anahtarı değil @@ -987,7 +1006,7 @@ tr: x_months: "%{count}ay" x_seconds: "%{count}sn" deletes: - challenge_not_passed: Girdiğiniz bilgi doğru değildi + challenge_not_passed: Girdiğiniz bilgi hatalı confirm_password: Kimliğinizi doğrulamak için mevcut parolanızı girin confirm_username: Prosedürü doğrulamak için kullanıcı adınızı girin proceed: Hesabı sil @@ -1220,8 +1239,8 @@ tr: one: Ayrıca, uzaktayken yeni bir takipçi kazandınız! Yaşasın! other: Ayrıca, uzaktayken %{count} yeni takipçi kazandınız! İnanılmaz! subject: - one: "Son ziyaretinizden bu yana 1 yeni bildirim \U0001F418" - other: "Son ziyaretinizden bu yana %{count} yeni bildirim \U0001F418" + one: "Son ziyaretinizden bu yana 1 yeni bildirim 🐘" + other: "Son ziyaretinizden bu yana %{count} yeni bildirim 🐘" title: Senin yokluğunda... favourite: body: "%{name} durumunu beğendi:" @@ -1263,7 +1282,7 @@ tr: billion: Mr million: Mn quadrillion: Kn - thousand: Bn + thousand: Bin trillion: Tn otp_authentication: code_hint: Onaylamak için authenticator uygulamanız tarafından oluşturulan kodu girin @@ -1616,12 +1635,13 @@ tr: explanation: Mastodon hesabınızın tam yedeğini istemiştiniz. Şimdi indirilebilir durumda! subject: Arşiviniz indirilmeye hazır title: Arşiv paketlemesi - sign_in_token: - details: 'İşte bu girişimin ayrıntıları:' - explanation: 'Tanınmayan bir IP adresinden hesabınızda oturum açma denemesi tespit ettik. Bu sizseniz, lütfen oturum açma sorgulama sayfasına aşağıdaki güvenlik kodunu girin:' - further_actions: 'Bu siz değildiyseniz, lütfen şifrenizi değiştirin ve hesabınızda iki faktörlü kimlik doğrulamayı etkinleştirin. Bunu buradan yapabilirsiniz:' - subject: Lütfen oturum açma girişimini onaylayın - title: Oturum açma girişimi + suspicious_sign_in: + change_password: parolanızı değiştirin + details: 'Oturum açma ayrıntıları şöyledir:' + explanation: Hesabınıza yeni bir IP adresinden oturum açıldığını farkettik. + further_actions_html: Eğer oturum açan siz değildiyseniz, hesabınızı güvenli tutmanız için hemen %{action} yapmanızı ve iki aşamalı yetkilendirmeyi etkinleştirmenizi öneriyoruz. + subject: Hesabınıza yeni bir IP adresinden erişim oldu + title: Yeni bir oturum açma warning: appeal: Bir itiraz gönder appeal_description: Bunun bir hata olduğunu düşünüyorsanız, %{instance} sunucusunun personeline bir itiraz gönderebilirsiniz. @@ -1672,13 +1692,10 @@ tr: title: Gemiye hoşgeldin, %{name}! users: follow_limit_reached: "%{limit} kişiden daha fazlasını takip edemezsiniz" - generic_access_help_html: Hesabınıza erişirken sorun mu yaşıyorsunuz? Yardım için %{email} ile iletişime geçebilirsiniz invalid_otp_token: Geçersiz iki adımlı doğrulama kodu - invalid_sign_in_token: Geçersiz güvenlik kodu otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz seamless_external_login: Harici bir servis aracılığıyla oturum açtınız, bu nedenle parola ve e-posta ayarları mevcut değildir. signed_in_as: 'Oturum açtı:' - suspicious_sign_in_confirmation: Bu cihazdan daha önce oturum açmamış gibi görünüyorsunuz ve bir süredir oturum açmamışsınız, bu yüzden kimliğinizi doğrulamak için e-posta adresinize bir güvenlik kodu gönderiyoruz. verification: explanation_html: 'Profil meta verisindeki bağlantıların sahibi olarak kendinizi doğrulayabilirsiniz. Bunun için, link verilen web sitesi Mastodon profilinize geri bir link içermelidir. Geri link bir rel="me" özelliğine sahip olmalıdır. Bağlantının metin içeriği önemli değildir. İşte bir örnek:' verification: Doğrulama diff --git a/config/locales/uk.yml b/config/locales/uk.yml index a42f048d6..cb2b7c720 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -16,6 +16,7 @@ uk: contact: Зв'язатися contact_missing: Не зазначено contact_unavailable: Недоступно + continue_to_web: Перейти до вебзастосунку discover_users: Знайдіть цікавих користувачів documentation: Документація federation_hint_html: З обліковим записом на %{instance} ви зможете слідкувати за людьми на будь-якому сервері Mastodon та поза ним. @@ -23,6 +24,7 @@ uk: hosted_on: Mastodon розміщено на %{domain} instance_actor_flash: "Цей обліковий запис є віртуальною особою, яка використовується для представлення самого сервера, а не певного користувача. Він використовується для потреб федерації і не повинен бути заблокований, якщо тільки ви не хочете заблокувати весь сервер, у цьому випадку ви повинні скористатися блокуванням домену. \n" learn_more: Дізнатися більше + logged_in_as_html: Зараз ви увійшли як %{username}. logout_before_registering: Ви вже увійшли. privacy_policy: Політика приватності rules: Правила сервера @@ -199,7 +201,6 @@ uk: security_measures: only_password: Лише пароль password_and_2fa: Пароль та 2FA - password_and_sign_in_token: Пароль та токен з е-пошти sensitive: Делікатне sensitized: позначено делікатним shared_inbox_url: URL спільного вхідного кошика @@ -391,6 +392,21 @@ uk: media_storage: Медіасховище new_users: нові користувачі opened_reports: звітів відкрито + pending_reports_html: + few: "%{count} звіти у черзі" + many: "%{count} звітів у черзі" + one: "%{count} звіт у черзі" + other: "%{count} звіти у черзі" + pending_tags_html: + few: "%{count} хештеґи у черзі" + many: "%{count} хештеґів у черзі" + one: "%{count} хештеґ у черзі" + other: "%{count} хештеґа у черзі" + pending_users_html: + few: "%{count} користувачі у черзі" + many: "%{count} користувачів у черзі" + one: "%{count} користувач у черзі" + other: "%{count} користувача у черзі" resolved_reports: розв'язані звіти software: Програмне забезпечення sources: Джерела реєстрації @@ -438,6 +454,11 @@ uk: view: Переглянути заблоковані домени email_domain_blocks: add_new: Додати + attempts_over_week: + few: "%{count} спроби входу за останній тиждень" + many: "%{count} спроб входу за останній тиждень" + one: "%{count} спроба за останній тиждень" + other: "%{count} спроби входу за останній тиждень" created_msg: Успішно додано поштовий домен до чорного списку delete: Видалити dns: @@ -459,12 +480,15 @@ uk: title: Поради щодо підписок unsuppress: Відновити поради щодо підписок instances: + availability: + title: Доступність back_to_all: Усі back_to_limited: Обмежені back_to_warning: Попередження by_domain: Домен confirm_purge: Ви впевнені, що хочете видалити ці дані з цього домену? content_policies: + comment: Внутрішня примітка policies: reject_media: Відхилити медіа reject_reports: Відхилити скарги @@ -474,10 +498,18 @@ uk: reason: Суспільна причина title: Політика вмісту dashboard: + instance_accounts_dimension: Найвідстежуваніші облікові записи + instance_accounts_measure: розміщені облікові записи + instance_followers_measure: наші підписники там + instance_follows_measure: їхні підписники тут instance_languages_dimension: Найуживаніші мови + instance_media_attachments_measure: розміщені медіавкладення + instance_reports_measure: звітів про них + instance_statuses_measure: розміщені дописи delivery: all: Усі clear: Очистити помилки доставляння + failing: Невдалі restart: Перезапустити доставляння stop: Припинити доставляння unavailable: Недоступно @@ -486,6 +518,11 @@ uk: delivery_error_hint: Якщо доставляння неможливе впродовж %{count} днів, воно автоматично позначиться недоставленим. destroyed_msg: Дані з %{domain} тепер у черзі на видалення. empty: Доменів не знайдено. + known_accounts: + few: "%{count} відомі облікові записи" + many: "%{count} відомих облікових записів" + one: "%{count} відомий обліковий запис" + other: "%{count} відомих облікових записів" moderation: all: Усі limited: Обмежені @@ -583,6 +620,7 @@ uk: placeholder: Опишіть, які дії були виконані, або інші зміни, що стосуються справи... title: Примітки notes_description_html: Переглядайте та залишайте примітки для інших модераторів та для себе на майбутнє + remote_user_placeholder: віддалений користувач із %{instance} reopen: Перевідкрити скаргу report: 'Скарга #%{id}' reported_account: Обліковий запис порушника @@ -715,6 +753,14 @@ uk: strikes: actions: delete_statuses: "%{name} видаляє допис від %{target}" + disable: "%{name} заморожує обліковий запис %{target}" + mark_statuses_as_sensitive: "%{name} позначає допис від %{target} делікатним" + none: "%{name} надсилає попередження до %{target}" + sensitive: "%{name} позначає обліковий запис %{target} делікатним" + silence: "%{name} обмежує обліковий запис %{target}" + suspend: "%{name} заморожує обліковий запис %{target}" + appeal_approved: Оскаржено + appeal_pending: Оскарження в очікуванні system_checks: database_schema_check: message_html: Існують відкладені перенесення бази даних. Запустіть їх, щоб забезпечити очікувану роботу програми @@ -749,6 +795,7 @@ uk: allow_account: Дозволити автора disallow: Заборонити допис disallow_account: Заборонити автора + title: Популярні дописи tags: current_score: Поточний результат %{score} dashboard: @@ -767,6 +814,11 @@ uk: trending_rank: 'Популярність #%{rank}' usable: Може бути використано usage_comparison: Сьогодні використано %{today} разів, у порівнянні з %{yesterday} вчора + used_by_over_week: + few: Використали %{count} людини за минулий тиждень + many: Використали %{count} людей за минулий тиждень + one: Використала одна людина за минулий тиждень + other: Використали %{count} людей за минулий тиждень title: Популярні warning_presets: add_new: Додати новий @@ -779,6 +831,7 @@ uk: actions: delete_statuses: щоб видалити їхні дописи disable: щоб заморозити їхній обліковий запис + mark_statuses_as_sensitive: позначати їхні повідомлення делікатними none: попередження sensitive: щоб позначати їхній обліковий запис делікатним silence: щоб обмежити їхній обліковий запис @@ -792,6 +845,16 @@ uk: body: "%{reporter} поскаржився(-лася) на %{target}" body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target} subject: Нова скарга до %{instance} (#%{id}) + new_trends: + new_trending_links: + title: Популярні посилання + new_trending_statuses: + no_approved_statuses: На цей час немає схвалених популярних дописів. + title: Популярні дописи + new_trending_tags: + no_approved_tags: На цей час немає схвалених популярних хештегів. + title: Популярні хештеги + subject: Нове популярне до розгляду на %{instance} aliases: add_new: Створити псевдонім created_msg: Новий псевдонім успішно створено. Тепер ви можете починати переміщення зі старого облікового запису. @@ -990,7 +1053,7 @@ uk: csv: CSV domain_blocks: Блокування доменів lists: Списки - mutes: Список глушення + mutes: Список нехтуваних storage: Ваш медіаконтент featured_tags: add_new: Додати новий @@ -1132,7 +1195,7 @@ uk: title: Модерація move_handler: carry_blocks_over_text: Цей користувач переїхав з %{acct}, який ви заблокували. - carry_mutes_over_text: Цей користувач переїхав з %{acct}, який ви заглушили. + carry_mutes_over_text: Цей користувач переїхав з %{acct}, який ви нехтуєте. copy_account_note_text: 'Цей користувач був переміщений з %{acct}, ось ваші попередні нотатки:' notification_mailer: admin: @@ -1147,11 +1210,6 @@ uk: many: У Вас з'явилось %{count} нових підписників! Чудово! one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура! other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово! - subject: - few: "%{count} нові сповіщення з Вашого останнього входу \U0001F418" - many: "%{count} нових сповіщень з Вашого останнього входу \U0001F418" - one: "1 нове сповіщення з Вашого останнього входу \U0001F418" - other: "%{count} нових сповіщень з Вашого останнього входу \U0001F418" title: Поки ви були відсутні... favourite: body: 'Ваш статус подобається %{name}:' @@ -1469,17 +1527,19 @@ uk: subject: Вашу апеляцію від %{date} було схвалено title: Апеляцію схвалено appeal_rejected: + subject: Вашу апеляцію від %{date} було відхилено title: Апеляцію відхилено backup_ready: explanation: Ви робили запит повної резервної копії вашого облікового запису Mastodon. Вона вже готова для завантаження! subject: Ваш архів готовий до завантаження title: Винесення архіву - sign_in_token: - details: 'Детальніше про спробу входу:' - explanation: 'Ми виявили спробу входу до вашого облікового запису з невідомої IP-адреси. Якщо це ви, будь ласка, введіть наведений нижче код безпеки на сторінці входу:' - further_actions: 'Якщо це були не ви, будь ласка, змініть свій пароль та увімкніть двофакторну автентифікацію для вашого облікового запису. Ви можете зробити це тут:' - subject: Будь ласка, підтвердіть спробу входу - title: Спроба входу + suspicious_sign_in: + change_password: змінити свій пароль + details: 'Відомості про вхід:' + explanation: Ми виявили вхід до вашого облікового запису з нової IP-адреси. + further_actions_html: Якщо це були не ви. Радимо вам негайно %{action} й увімкнути двоетапну перевірку, щоб уберегти свій обліковий запис. + subject: До вашого облікового запису отримано доступ з нової IP-адреси + title: Новий вхід warning: appeal: Подати апеляцію categories: @@ -1500,7 +1560,9 @@ uk: title: delete_statuses: Дописи вилучено disable: Обліковий запис заморожено + mark_statuses_as_sensitive: Дописи позначено делікатними none: Попередження + sensitive: Обліковий запис позначено делікатним silence: Ообліковий запис обмежено suspend: Обліковий запис призупинено welcome: @@ -1522,13 +1584,10 @@ uk: title: Ласкаво просимо, %{name}! users: follow_limit_reached: Не можна слідкувати більш ніж за %{limit} людей - generic_access_help_html: Не вдається отримати доступ до облікового запису? Ви можете зв'язатися з %{email} для допомоги invalid_otp_token: Введено неправильний код - invalid_sign_in_token: Хибний код безпеки otp_lost_help_html: Якщо ви втратили доступ до обох, ви можете отримати доступ з %{email} seamless_external_login: Ви увійшли за допомогою зовнішнього сервісу, тому налаштування паролю та електронної пошти недоступні. signed_in_as: 'Ви увійшли як:' - suspicious_sign_in_confirmation: Здається, ви не входили до цього облікового запису з цього пристрою, а також не входили взагалі деякий час, таким чином ми надсилаємо код безпеки на вашу адресу електронної пошти, щоб підтвердити, що це ви. verification: explanation_html: 'Володіння посиланнями у профілі можна підтвердити. Для цього на зазначеному сайті повинна міститися посилання на ваш профіль Mastodon, а у самому посиланні повинен бути атрибут rel="me". Що всередині посилання - значення не має. Ось вам приклад посилання:' verification: Підтвердження diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 14e6c1c3b..a685c73ec 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -51,7 +51,7 @@ vi: user_count_after: other: người dùng user_count_before: Nhà của - what_is_mastodon: Mastodon + what_is_mastodon: Mastodon là gì? accounts: choices_html: "%{name} tôn vinh:" endorsements_hint: Bạn có thể tôn vinh những người bạn theo dõi và họ sẽ hiển thị ở giao diện web. @@ -63,9 +63,9 @@ vi: instance_actor_flash: Tài khoản này được dùng để đại diện cho máy chủ và không phải là người thật. Đừng bao giờ vô hiệu hóa tài khoản này. joined: Đã tham gia %{date} last_active: online - link_verified_on: Liên kết này đã được xác thực quyền sở hữu vào %{date} + link_verified_on: Liên kết này đã được xác minh quyền sở hữu vào %{date} media: Media - moved_html: "%{name} đã đổi thành %{new_profile_link}:" + moved_html: "%{name} đã chuyển sang %{new_profile_link}:" network_hidden: Dữ liệu đã bị ẩn nothing_here: Trống trơn! people_followed_by: Những người %{name} theo dõi @@ -106,7 +106,7 @@ vi: submit: Thay đổi email title: Thay đổi email cho %{username} confirm: Phê duyệt - confirmed: Đã xác thực + confirmed: Đã xác minh confirming: Chờ xác nhận custom: Tùy chỉnh delete: Xóa dữ liệu @@ -114,8 +114,8 @@ vi: demote: Xóa vai trò destroyed_msg: Dữ liệu %{username} sẽ được lên lịch xóa ngay bây giờ disable: Khóa - disable_sign_in_token_auth: Tắt xác thực bằng email - disable_two_factor_authentication: Vô hiệu hóa xác thực hai bước + disable_sign_in_token_auth: Vô hiệu hóa xác minh bằng email + disable_two_factor_authentication: Vô hiệu hóa xác minh 2 bước disabled: Đã vô hiệu hóa display_name: Tên hiển thị domain: Máy chủ @@ -123,7 +123,7 @@ vi: email: Email email_status: Trạng thái enable: Mở lại - enable_sign_in_token_auth: Bật xác thực bằng email + enable_sign_in_token_auth: Bật xác minh bằng email enabled: Đã duyệt enabled_msg: Đã kích hoạt lại tài khoản %{username} thành công followers: Người theo dõi @@ -152,7 +152,7 @@ vi: title: Trạng thái moderation_notes: Nhật ký kiểm duyệt most_recent_activity: Hoạt động lần cuối - most_recent_ip: IP gần đây nhất + most_recent_ip: IP gần nhất no_account_selected: Không có tài khoản nào thay đổi vì không có tài khoản nào được chọn no_limits_imposed: Bình thường not_subscribed: Chưa đăng ký @@ -165,7 +165,7 @@ vi: protocol: Giao thức public: Công khai push_subscription_expires: Đăng ký PuSH hết hạn - redownload: Làm mới trang cá nhân + redownload: Làm mới trang hồ sơ redownloaded_msg: Đã tiếp nhận tài khoản %{username} thành công reject: Từ chối rejected_msg: Đã từ chối đăng ký tài khoản %{username} @@ -174,10 +174,10 @@ vi: removed_avatar_msg: Đã xóa bỏ ảnh đại diện của %{username} removed_header_msg: Đã xóa bỏ ảnh bìa của %{username} resend_confirmation: - already_confirmed: Người dùng này đã được xác thực + already_confirmed: Người dùng này đã được xác minh send: Gửi lại email xác nhận success: Email xác nhận đã gửi thành công! - reset: Làm tươi + reset: Đặt lại reset_password: Đặt lại mật khẩu resubscribe: Đăng ký lại role: Vai trò @@ -192,13 +192,12 @@ vi: security_measures: only_password: Chỉ mật khẩu password_and_2fa: Mật khẩu và 2FA - password_and_sign_in_token: Mật khẩu và email sensitive: Nhạy cảm sensitized: Đánh dấu nhạy cảm shared_inbox_url: Hộp thư của máy chủ người này show: - created_reports: Lượt báo cáo - targeted_reports: Báo cáo bởi người khác + created_reports: Gửi báo cáo + targeted_reports: Bị báo cáo silence: Ẩn silenced: Hạn chế statuses: Tút @@ -211,7 +210,7 @@ vi: title: Tài khoản unblock_email: Mở khóa địa chỉ email unblocked_email_msg: Mở khóa thành công địa chỉ email của %{username} - unconfirmed_email: Email chưa được xác thực + unconfirmed_email: Email chưa được xác minh undo_sensitized: Đánh dấu bình thường undo_silenced: Bỏ hạn chế undo_suspension: Bỏ vô hiệu hóa @@ -220,17 +219,17 @@ vi: unsuspended_msg: Đã kích hoạt lại %{username} thành công username: Tài khoản view_domain: Xem mô tả tài khoản này - warn: Cảnh cáo + warn: Nhắc web: Web whitelisted: Danh sách trắng action_logs: action_types: - approve_appeal: Phê duyệt kháng cáo - approve_user: Phê duyệt người dùng + approve_appeal: Chấp nhận kháng cáo + approve_user: Chấp nhận người dùng assigned_to_self_report: Tự xử lý báo cáo change_email_user: Đổi email người dùng - confirm_user: Xác thực người dùng - create_account_warning: Cảnh cáo người dùng + confirm_user: Xác minh người dùng + create_account_warning: Nhắc nhở người dùng create_announcement: Tạo thông báo mới create_custom_emoji: Tạo emoji create_domain_allow: Cho phép máy chủ @@ -250,10 +249,10 @@ vi: destroy_unavailable_domain: Xóa máy chủ không khả dụng disable_2fa_user: Vô hiệu hóa 2FA disable_custom_emoji: Vô hiệu hóa emoji - disable_sign_in_token_auth_user: Tắt xác thực bằng email cho người dùng + disable_sign_in_token_auth_user: Vô hiệu hóa xác minh bằng email cho người dùng disable_user: Vô hiệu hóa đăng nhập - enable_custom_emoji: Cho phép Emoji - enable_sign_in_token_auth_user: Bật xác thực bằng email cho người dùng + enable_custom_emoji: Cho phép emoji + enable_sign_in_token_auth_user: Bật xác minh bằng email cho người dùng enable_user: Bỏ vô hiệu hóa đăng nhập memorialize_account: Đánh dấu tưởng niệm promote_user: Chỉ định vai trò @@ -264,24 +263,24 @@ vi: reset_password_user: Đặt lại mật khẩu resolve_report: Xử lý báo cáo sensitive_account: Áp đặt nhạy cảm - silence_account: Áp đặt hạn chế + silence_account: Áp đặt ẩn suspend_account: Áp đặt vô hiệu hóa unassigned_report: Báo cáo chưa xử lý unblock_email_account: Mở khóa địa chỉ email unsensitive_account: Bỏ nhạy cảm - unsilence_account: Bỏ hạn chế + unsilence_account: Bỏ ẩn unsuspend_account: Bỏ vô hiệu hóa update_announcement: Cập nhật thông báo - update_custom_emoji: Cập nhật Emoji + update_custom_emoji: Cập nhật emoji update_domain_block: Cập nhật máy chủ chặn update_status: Cập nhật tút actions: - approve_appeal_html: "%{name} đã phê duyệt quyết định kiểm duyệt từ %{target}" + approve_appeal_html: "%{name} đã chấp nhận kháng cáo của %{target}" approve_user_html: "%{name} đã chấp nhận đăng ký từ %{target}" assigned_to_self_report_html: "%{name} tự xử lý báo cáo %{target}" change_email_user_html: "%{name} đã thay đổi địa chỉ email của %{target}" - confirm_user_html: "%{name} đã xác thực địa chỉ email của %{target}" - create_account_warning_html: "%{name} đã gửi cảnh cáo %{target}" + confirm_user_html: "%{name} đã xác minh địa chỉ email của %{target}" + create_account_warning_html: "%{name} đã nhắc nhở %{target}" create_announcement_html: "%{name} tạo thông báo mới %{target}" create_custom_emoji_html: "%{name} đã tải lên biểu tượng cảm xúc mới %{target}" create_domain_allow_html: "%{name} kích hoạt liên hợp với %{target}" @@ -299,12 +298,12 @@ vi: destroy_ip_block_html: "%{name} bỏ chặn IP %{target}" destroy_status_html: "%{name} đã xóa tút của %{target}" destroy_unavailable_domain_html: "%{name} tiếp tục phân phối với máy chủ %{target}" - disable_2fa_user_html: "%{name} đã vô hiệu hóa xác thực hai bước của %{target}" + disable_2fa_user_html: "%{name} đã vô hiệu hóa xác minh hai bước của %{target}" disable_custom_emoji_html: "%{name} đã ẩn emoji %{target}" - disable_sign_in_token_auth_user_html: "%{name} tắt xác thực email của %{target}" + disable_sign_in_token_auth_user_html: "%{name} vô hiệu hóa xác minh email của %{target}" disable_user_html: "%{name} vô hiệu hóa đăng nhập %{target}" enable_custom_emoji_html: "%{name} cho phép Emoji %{target}" - enable_sign_in_token_auth_user_html: "%{name} bật xác thực email của %{target}" + enable_sign_in_token_auth_user_html: "%{name} bật xác minh email của %{target}" enable_user_html: "%{name} bỏ vô hiệu hóa đăng nhập %{target}" memorialize_account_html: "%{name} đã biến tài khoản %{target} thành một trang tưởng niệm" promote_user_html: "%{name} chỉ định vai trò cho %{target}" @@ -504,6 +503,7 @@ vi: delivery: all: Toàn bộ clear: Xóa phân phối lỗi + failing: Mất kết nối restart: Khởi động lại phân phối stop: Ngưng phân phối unavailable: Không khả dụng @@ -582,11 +582,11 @@ vi: action_taken_by: Hành động được thực hiện bởi actions: delete_description_html: Những tút bị báo cáo sẽ được xóa và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn lưu ý về tài khoản này trong tương lai. - mark_as_sensitive_description_html: Media trong báo cáo sẽ bị đánh dấu nhạy cảm và họ nhận 1 lần cảnh cáo. + mark_as_sensitive_description_html: Media trong các tút bị báo cáo sẽ được đánh dấu là nhạy cảm và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn nắm bắt nhanh những vi phạm của cùng một tài khoản. other_description_html: Những tùy chọn để kiểm soát tài khoản và giao tiếp với tài khoản bị báo cáo. resolve_description_html: Không có hành động nào áp dụng đối với tài khoản bị báo cáo, không có cảnh cáo, và báo cáo sẽ được đóng. - silence_description_html: Trang cá nhân sẽ chỉ hiển thị với những người đã theo dõi hoặc tìm kiếm thủ công, hạn chế tối đa tầm ảnh hưởng của nó. Có thể đổi lại bình thường sau. - suspend_description_html: Trang cá nhân và tất cả các nội dung sẽ không thể truy cập cho đến khi nó bị xóa hoàn toàn. Không thể tương tác với tài khoản. Đảo ngược trong vòng 30 ngày. + silence_description_html: Trang hồ sơ sẽ chỉ hiển thị với những người đã theo dõi hoặc tìm kiếm thủ công, hạn chế tối đa tầm ảnh hưởng của nó. Có thể đổi lại bình thường sau. + suspend_description_html: Trang hồ sơ và tất cả các nội dung sẽ không thể truy cập cho đến khi nó bị xóa hoàn toàn. Không thể tương tác với tài khoản. Đảo ngược trong vòng 30 ngày. actions_description_html: Hướng xử lý báo cáo này. Nếu áp đặt trừng phạt, một email thông báo sẽ được gửi cho họ, ngoại trừ Spam. add_to_report: Bổ sung báo cáo are_you_sure: Bạn có chắc không? @@ -631,7 +631,7 @@ vi: unassign: Bỏ qua unresolved: Chờ xử lý updated_at: Cập nhật lúc - view_profile: Xem trang cá nhân + view_profile: Xem trang hồ sơ rules: add_new: Thêm quy tắc delete: Xóa bỏ @@ -698,7 +698,7 @@ vi: title: Chế độ đăng ký show_known_fediverse_at_about_page: desc_html: Nếu tắt, bảng tin sẽ chỉ hiển thị nội dung do người dùng của máy chủ này tạo ra - title: Bao gồm nội dung từ mạng liên hợp trên bảng tin không được xác thực + title: Bao gồm nội dung từ mạng liên hợp trên bảng tin không được cho phép show_staff_badge: desc_html: Hiện huy hiệu đội ngũ trên trang người dùng title: Hiện huy hiệu đội ngũ @@ -719,8 +719,8 @@ vi: desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px title: Hình thu nhỏ của máy chủ timeline_preview: - desc_html: Hiển thị dòng thời gian công khai trên trang đích và cho phép API truy cập vào dòng thời gian công khai mà không cần xác thực - title: Cho phép truy cập không xác thực vào dòng thời gian công cộng + desc_html: Hiển thị dòng thời gian công khai trên trang đích và cho phép API truy cập vào dòng thời gian công khai mà không cần cho phép + title: Cho phép truy cập vào dòng thời gian công cộng không cần cho phép title: Cài đặt trang web trendable_by_default: desc_html: Ảnh hưởng đến các hashtag chưa được cho phép trước đây @@ -785,6 +785,7 @@ vi: other: "%{count} người chia sẻ tuần rồi" title: Liên kết xu hướng usage_comparison: Chia sẻ %{today} lần hôm nay, so với %{yesterday} lần hôm qua + only_allowed: Chỉ cho phép pending_review: Đang chờ preview_card_providers: allowed: Liên kết từ nguồn đăng này có thể thành xu hướng @@ -824,12 +825,13 @@ vi: used_by_over_week: other: "%{count} người dùng tuần rồi" title: Xu hướng + trending: Xu hướng warning_presets: add_new: Thêm mới delete: Xóa bỏ edit_preset: Sửa mẫu có sẵn - empty: Bạn chưa thêm mẫu có sẵn nào cả. - title: Quản lý mẫu cảnh cáo + empty: Bạn chưa thêm mẫu nhắc nhở nào cả. + title: Quản lý mẫu nhắc nhở admin_mailer: new_appeal: actions: @@ -874,7 +876,7 @@ vi: remove: Bỏ liên kết bí danh appearance: advanced_web_interface: Bố cục - advanced_web_interface_hint: 'Giao diện nhiều cột cho phép bạn chuyển bố cục hiển thị thành nhiều cột khác nhau. Bao gồm: Bảng tin, thông báo, thế giới, cũng như danh sách và hashtag. Rất thích hợp nếu bạn đang dùng màn hình rộng.' + advanced_web_interface_hint: 'Bố cục nhiều cột cho phép bạn chuyển bố cục hiển thị thành nhiều cột khác nhau. Bao gồm: Bảng tin, thông báo, thế giới, cũng như danh sách và hashtag. Thích hợp nếu bạn đang dùng màn hình rộng.' animations_and_accessibility: Bảng tin confirmation_dialogs: Hộp thoại xác nhận discovery: Khám phá @@ -889,7 +891,7 @@ vi: salutation: "%{name}," settings: 'Thay đổi tùy chọn email: %{link}' view: 'Chi tiết:' - view_profile: Xem trang cá nhân + view_profile: Xem trang hồ sơ view_status: Xem tút applications: created: Đơn đăng ký được tạo thành công @@ -910,35 +912,35 @@ vi: prefix_invited_by_user: "@%{name} mời bạn tham gia máy chủ Mastodon này!" prefix_sign_up: Tham gia Mastodon ngay hôm nay! suffix: Với tài khoản, bạn sẽ có thể theo dõi mọi người, đăng tút và nhắn tin với người dùng từ bất kỳ máy chủ Mastodon khác! - didnt_get_confirmation: Gửi lại email xác thực? + didnt_get_confirmation: Gửi lại email xác minh? dont_have_your_security_key: Bạn có khóa bảo mật chưa? forgot_password: Quên mật khẩu invalid_reset_password_token: Mã đặt lại mật khẩu không hợp lệ hoặc hết hạn. Vui lòng yêu cầu một cái mới. - link_to_otp: Nhập mã xác thực từ điện thoại hoặc mã phục hồi + link_to_otp: Nhập mã xác minh từ điện thoại hoặc mã khôi phục link_to_webauth: Nhập khóa bảo mật từ thiết bị log_in_with: Đăng nhập bằng login: Đăng nhập logout: Đăng xuất migrate_account: Chuyển sang tài khoản khác - migrate_account_html: Nếu bạn muốn bỏ tài khoản này để dùng một tài khoản khác, bạn có thể thiết lập nó ở đây. + migrate_account_html: Nếu bạn muốn bỏ tài khoản này để dùng một tài khoản khác, bạn có thể thiết lập tại đây. or_log_in_with: Hoặc đăng nhập bằng providers: cas: CAS saml: SAML register: Đăng ký registration_closed: "%{instance} tạm ngưng đăng ký mới" - resend_confirmation: Gửi lại email xác thực + resend_confirmation: Gửi lại email xác minh reset_password: Đặt lại mật khẩu security: Bảo mật set_new_password: Đặt mật khẩu mới setup: email_below_hint_html: Nếu địa chỉ email dưới đây không chính xác, bạn có thể thay đổi địa chỉ tại đây và nhận email xác nhận mới. - email_settings_hint_html: Email xác thực đã được gửi tới %{email}. Nếu địa chỉ email đó không chính xác, bạn có thể thay đổi nó trong cài đặt tài khoản. + email_settings_hint_html: Email xác minh đã được gửi tới %{email}. Nếu địa chỉ email đó không chính xác, bạn có thể thay đổi nó trong cài đặt tài khoản. title: Thiết lập status: account_status: Trạng thái tài khoản - confirming: Đang chờ xác thực email. - functional: Tài khoản của bạn đã được xác thực. + confirming: Đang chờ xác minh email. + functional: Tài khoản của bạn đã được xác minh. pending: Đơn đăng ký của bạn đang chờ phê duyệt. Điều này có thể mất một thời gian. Bạn sẽ nhận được email nếu đơn đăng ký của bạn được chấp thuận. redirecting_to: Tài khoản của bạn không hoạt động vì hiện đang chuyển hướng đến %{acct}. view_strikes: Xem những lần cảnh cáo cũ @@ -954,7 +956,7 @@ vi: following: Chúc mừng! Bạn đã trở thành người theo dõi post_follow: close: Bạn có thể đóng cửa sổ này rồi. - return: Xem trang cá nhân + return: Xem trang hồ sơ web: Mở trong Mastodon title: Theo dõi %{acct} challenge: @@ -969,7 +971,7 @@ vi: date: formats: default: "%-d %B, %Y" - with_month_name: "%B %d, %Y" + with_month_name: "%-d %B, %Y" datetime: distance_in_words: about_x_hours: "%{count} giờ" @@ -1007,7 +1009,7 @@ vi: explore_mastodon: Thành viên %{title} disputes: strikes: - action_taken: Hành động đã thực hiện + action_taken: Hành động thực hiện appeal: Khiếu nại appeal_approved: Khiếu nại đã được chấp nhận và cảnh cáo không còn giá trị appeal_rejected: Khiếu nại bị từ chối @@ -1026,8 +1028,8 @@ vi: delete_statuses: Xóa tút disable: Đóng băng tài khoản mark_statuses_as_sensitive: Đánh dấu tút là nhạy cảm - none: Cảnh cáo - sensitive: Đánh dấu người dùng là nhạy cảm + none: Nhắc nhở + sensitive: Đánh dấu tài khoản là nhạy cảm silence: Hạn chế tài khoản suspend: Vô hiệu hóa tài khoản your_appeal_approved: Khiếu nại của bạn được chấp nhận @@ -1061,21 +1063,21 @@ vi: in_progress: Đang tổng hợp dữ liệu của bạn... request: Tải về dữ liệu của bạn size: Dung lượng - blocks: Người bạn chặn + blocks: Người chặn bookmarks: Tút đã lưu csv: CSV - domain_blocks: Máy chủ bạn chặn + domain_blocks: Máy chủ chặn lists: Danh sách - mutes: Người bạn ẩn + mutes: Người ẩn storage: Tập tin featured_tags: add_new: Thêm mới errors: limit: Bạn đã đạt tới số lượng hashtag tối đa - hint_html: "Hashtag thường dùng là gì? Chúng là những hashtag sẽ được hiển thị nổi bật trên trang cá nhân của bạn, cho phép mọi người tìm kiếm các bài đăng công khai của bạn có chứa các hashtag đó. Tính năng này có thể dùng để đánh dấu chuỗi tác phẩm sáng tạo hoặc dự án dài hạn." + hint_html: "Hashtag thường dùng là gì? Chúng là những hashtag sẽ được hiển thị nổi bật trên trang hồ sơ của bạn, cho phép mọi người tìm kiếm các bài đăng công khai của bạn có chứa các hashtag đó. Tính năng này có thể dùng để đánh dấu chuỗi tác phẩm sáng tạo hoặc dự án dài hạn." filters: contexts: - account: Trang cá nhân + account: Trang hồ sơ home: Bảng tin notifications: Thông báo public: Tin công khai @@ -1098,7 +1100,7 @@ vi: trending_now: Xu hướng generic: all: Tất cả - changes_saved_msg: Đã cập nhật thay đổi xong! + changes_saved_msg: Đã lưu thay đổi! copy: Sao chép delete: Xóa none: Trống @@ -1153,11 +1155,11 @@ vi: limit: Bạn đã đạt đến số lượng danh sách tối đa login_activities: authentication_methods: - otp: xác thực 2 bước + otp: xác minh 2 bước password: mật khẩu sign_in_token: mã an toàn email webauthn: khóa bảo mật - description_html: Nếu có lần đăng nhập đáng ngờ, hãy đổi ngay mật khẩu và bật xác thực hai bước. + description_html: Nếu có lần đăng nhập đáng ngờ, hãy đổi ngay mật khẩu và bật xác minh 2 bước. empty: Không có lịch sử đăng nhập failed_sign_in_html: Đăng nhập thất bại bằng %{method} từ %{ip} (%{browser}) successful_sign_in_html: Đăng nhập thành công bằng %{method} từ %{ip} (%{browser}) @@ -1168,7 +1170,7 @@ vi: not_ready: Tập tin này vẫn chưa xử lý xong. Hãy thử lại sau! too_many: Không thể đính kèm hơn 4 tệp migrations: - acct: Dời sang + acct: Chuyển sang cancel: Hủy chuyển hướng cancel_explanation: Hủy chuyển hướng sẽ kích hoạt lại tài khoản hiện tại của bạn, nhưng sẽ không chuyển được những người theo dõi ở tài khoản mới. cancelled_msg: Đã hủy chuyển hướng xong. @@ -1195,9 +1197,9 @@ vi: cooldown: Bạn sẽ bị hạn chế chuyển sang tài khoản mới trong thời gian sắp tới disabled_account: Tài khoản này sẽ không thể tiếp tục dùng nữa. Tuy nhiên, bạn có quyền truy cập để xuất dữ liệu cũng như kích hoạt lại. followers: Hành động này sẽ chuyển tất cả người theo dõi từ tài khoản hiện tại sang tài khoản mới - only_redirect_html: Ngoài ra, bạn có thể đặt chuyển hướng trên trang cá nhân của bạn. + only_redirect_html: Ngoài ra, bạn có thể đặt chuyển hướng trên trang hồ sơ của bạn. other_data: Dữ liệu khác sẽ không được di chuyển tự động - redirect: Trang cá nhân hiện tại của bạn sẽ hiển thị thông báo chuyển hướng và bị loại khỏi kết quả tìm kiếm + redirect: Trang hồ sơ hiện tại của bạn sẽ hiển thị thông báo chuyển hướng và bị loại khỏi kết quả tìm kiếm moderation: title: Kiểm duyệt move_handler: @@ -1215,7 +1217,7 @@ vi: new_followers_summary: other: Ngoài ra, bạn đã có %{count} người theo dõi mới trong khi đi chơi! Ngạc nhiên chưa! subject: - other: "%{count} thông báo mới kể từ lần truy cập trước \U0001F418" + other: "%{count} thông báo mới kể từ lần đăng nhập cuối 🐘" title: Khi bạn offline... favourite: body: Tút của bạn vừa được thích bởi %{name} @@ -1260,8 +1262,8 @@ vi: thousand: K trillion: T otp_authentication: - code_hint: Nhập mã được tạo bởi ứng dụng xác thực của bạn để xác nhận - description_html: Nếu kích hoạt xác thực hai bước thông qua ứng dụng, bạn sẽ đăng nhập bằng mã token được tạo bởi chính điện thoại của bạn. + code_hint: Nhập mã được tạo bởi ứng dụng xác minh của bạn để xác nhận + description_html: Nếu kích hoạt xác minh 2 bước thông qua ứng dụng, bạn sẽ đăng nhập bằng mã token được tạo bởi chính điện thoại của bạn. enable: Kích hoạt instructions_html: "Quét mã QR bằng Google Authenticator hoặc một ứng dụng TOTP tương tự trên điện thoại của bạn. Kể từ bây giờ, ứng dụng đó sẽ tạo những token để bạn đăng nhập." manual_instructions: 'Nếu bạn không thể quét mã QR, đây sẽ là dòng chữ gợi ý:' @@ -1287,7 +1289,7 @@ vi: preferences: other: Khác posting_defaults: Mặc định cho tút - public_timelines: Bảng tin máy chủ + public_timelines: Bảng tin reactions: errors: limit_reached: Bạn không nên thao tác liên tục @@ -1384,7 +1386,7 @@ vi: back: Quay lại Mastodon delete: Xóa tài khoản development: Lập trình - edit_profile: Trang cá nhân + edit_profile: Sửa hồ sơ export: Xuất dữ liệu featured_tags: Hashtag thường dùng import: Nhập dữ liệu @@ -1392,11 +1394,11 @@ vi: migrate: Chuyển tài khoản sang máy chủ khác notifications: Thông báo preferences: Chung - profile: Trang cá nhân + profile: Hồ sơ relationships: Quan hệ statuses_cleanup: Tự động xóa tút cũ strikes: Lần cảnh cáo - two_factor_authentication: Xác thực hai bước + two_factor_authentication: Xác minh 2 bước webauthn_authentication: Khóa bảo mật statuses: attached: @@ -1446,8 +1448,8 @@ vi: enabled: Tự động xóa những tút cũ enabled_hint: Tự động xóa các tút của bạn khi chúng tới thời điểm nhất định, trừ những trường hợp ngoại lệ bên dưới exceptions: Ngoại lệ - explanation: Tút của bạn sẽ tăng dần theo năm tháng. Bạn nên xóa những tút cũ khi chúng đã đạt tới thời điểm nhất định. - ignore_favs: Bỏ qua số luợt thích + explanation: Số lượng tút sẽ tăng dần theo năm tháng. Bạn nên xóa những tút cũ khi tới một thời điểm nhất định. + ignore_favs: Bỏ qua số lượt thích ignore_reblogs: Bỏ qua lượt đăng lại interaction_exceptions: Ngoại lệ dựa trên tương tác interaction_exceptions_explanation: Lưu ý rằng không có gì đảm bảo rằng các tút sẽ bị xóa nếu chúng tụt dưới ngưỡng mức yêu thích hoặc đăng lại, dù đã từng đạt. @@ -1478,7 +1480,7 @@ vi: min_reblogs: Giữ những tút đã đăng lại lâu hơn min_reblogs_hint: Những tút có lượt đăng lại nhiều hơn số này sẽ không bị xóa. Để trống nếu bạn muốn xóa hết stream_entries: - pinned: Tút được ghim + pinned: Tút đã ghim reblogged: đăng lại sensitive_content: NSFW tags: @@ -1490,7 +1492,7 @@ vi:
  • Thông tin tài khoản cơ bản: Nếu bạn đăng ký trên máy chủ này, bạn phải cung cấp tên người dùng, địa chỉ email và mật khẩu. Bạn cũng có thể tùy chọn bổ sung tên hiển thị, tiểu sử, ảnh đại diện, ảnh bìa. Tên người dùng, tên hiển thị, tiểu sử, ảnh hồ sơ và ảnh bìa luôn được hiển thị công khai.
  • -
  • Tút, lượt theo dõi và nội dung công khai khác: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn đăng tút, ngày giờ và ứng dụng sử dụng được lưu trữ. Tút có thể chứa tệp đính kèm hình ảnh và video. Tút công khai và tút mở sẽ hiển thị công khai. Khi bạn đăng một tút trên trang cá nhân của bạn, đó là nội dung công khai. Tút của bạn sẽ gửi đến những người theo dõi của bạn, đồng nghĩa với việc sẽ có các bản sao được lưu trữ ở máy chủ của họ. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.
  • +
  • Tút, lượt theo dõi và nội dung công khai khác: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn đăng tút, ngày giờ và ứng dụng sử dụng được lưu trữ. Tút có thể chứa tệp đính kèm hình ảnh và video. Tút công khai và tút mở sẽ hiển thị công khai. Khi bạn đăng một tút trên trang hồ sơ của bạn, đó là nội dung công khai. Tút của bạn sẽ gửi đến những người theo dõi của bạn, đồng nghĩa với việc sẽ có các bản sao được lưu trữ ở máy chủ của họ. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.
  • Tin nhắn và tút dành cho người theo dõi: Toàn bộ tút được lưu trữ và xử lý trên máy chủ. Các tút dành cho người theo dõi được gửi đến những người theo dõi và những người được gắn thẻ trong tút. Còn các tin nhắn chỉ được gửi đến cho người nhận. Điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và có các bản sao được lưu trữ ở đó. Chúng tôi đề nghị chỉ cho những người được ủy quyền truy cập vào đó, nhưng không phải máy chủ nào cũng làm như vậy. Do đó, điều quan trọng là phải xem xét kỹ máy chủ của người theo dõi của bạn. Bạn có thể thiết lập tự mình phê duyệt và từ chối người theo dõi mới trong cài đặt. Xin lưu ý rằng quản trị viên máy chủ của bạn và bất kỳ máy chủ của người nhận nào cũng có thể xem các tin nhắn. Người nhận tin nhắn có thể chụp màn hình, sao chép hoặc chia sẻ lại chúng. Không nên chia sẻ bất kỳ thông tin rủi ro nào trên Mastodon.
  • Địa chỉ IP và siêu dữ liệu khác: Khi bạn đăng nhập, chúng tôi ghi nhớ địa chỉ IP đăng nhập cũng như tên trình duyệt của bạn. Tất cả các phiên đăng nhập sẽ để bạn xem xét và hủy bỏ trong phần cài đặt. Địa chỉ IP sử dụng được lưu trữ tối đa 12 tháng. Chúng tôi cũng có thể giữ lại nhật ký máy chủ bao gồm địa chỉ IP của những lượt đăng ký tài khoản trên máy chủ của chúng tôi.

@@ -1521,7 +1523,7 @@ vi:

Chúng tôi có tiết lộ bất cứ thông tin nào ra ngoài không?

Chúng tôi không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn nếu việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc bất kỳ ai.

Nội dung công khai của bạn có thể được tải xuống bởi các máy chủ khác trong mạng liên hợp. Các tút công khai hay dành cho người theo dõi được gửi đến các máy chủ nơi người theo dõi của bạn là thành viên và tin nhắn được gửi đến máy chủ của người nhận, cho đến khi những người theo dõi hoặc người nhận đó chuyển sang một máy chủ khác.

-

Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang cá nhân, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.

+

Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang hồ sơ, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.


Cấm trẻ em sử dụng

Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, xét theo GDPR (Quy định bảo vệ dữ liệu chung) thì không được sử dụng trang web này.

@@ -1539,27 +1541,27 @@ vi: mastodon-light: Mastodon (Sáng) time: formats: - default: "%d.%m.%Y %H:%M" + default: "%-d.%m.%Y %H:%M" month: "%B %Y" time: "%H:%M" two_factor_authentication: add: Thêm disable: Vô hiệu hóa - disabled_success: Đã vô hiệu hóa xác thực hai bước + disabled_success: Đã vô hiệu hóa xác minh 2 bước edit: Sửa - enabled: Đã kích hoạt xác thực hai bước - enabled_success: Xác thực hai bước được kích hoạt thành công + enabled: Đã kích hoạt xác minh 2 bước + enabled_success: Xác minh 2 bước được kích hoạt thành công generate_recovery_codes: Tạo mã khôi phục lost_recovery_codes: Mã khôi phục cho phép bạn lấy lại quyền truy cập vào tài khoản của mình nếu bạn mất điện thoại. Nếu bạn bị mất mã khôi phục, bạn có thể tạo lại chúng ở đây. Mã khôi phục cũ của bạn sẽ bị vô hiệu. - methods: Phương pháp xác thực - otp: Ứng dụng xác thực - recovery_codes: Mã phục hồi dự phòng + methods: Phương pháp xác minh + otp: Ứng dụng xác minh + recovery_codes: Mã khôi phục dự phòng recovery_codes_regenerated: Mã khôi phục được phục hồi thành công recovery_instructions_html: Nếu bạn bị mất điện thoại, hãy dùng một trong các mã khôi phục bên dưới để lấy lại quyền truy cập vào tài khoản của mình. Giữ mã khôi phục an toàn. Ví dụ, bạn có thể in chúng ra giấy. webauthn: Khóa bảo mật user_mailer: appeal_approved: - action: Đến trang cá nhân của bạn + action: Đến trang hồ sơ của bạn explanation: Khiếu nại về tài khoản của bạn vào %{strike_date}, được gửi lúc %{appeal_date} đã được chấp nhận. Tài khoản của bạn đã có thể sử dụng bình thường. subject: Khiếu nại của bạn từ %{date} đã được chấp nhận title: Khiếu nại đã được chấp nhận @@ -1571,12 +1573,13 @@ vi: explanation: Bạn đã yêu cầu sao lưu toàn bộ tài khoản Mastodon của mình. Bây giờ có thể tải về! subject: Dữ liệu cá nhân của bạn đã sẵn sàng để tải về title: Nhận dữ liệu cá nhân - sign_in_token: - details: 'Chi tiết cụ thể:' - explanation: 'Tài khoản của bạn vừa đăng nhập từ một địa chỉ IP lạ. Nếu thật là bạn, hãy nhập mã an toàn bên dưới vào trang đăng nhập:' - further_actions: 'Nếu không phải là bạn, hãy lập tức thay đổi mật khẩu và kích hoạt xác thực hai bước ở đây:' - subject: Xác nhận đăng nhập - title: Đăng nhập + suspicious_sign_in: + change_password: đổi mật khẩu của bạn + details: 'Chi tiết thông tin đăng nhập:' + explanation: Chúng tôi phát hiện lần đăng nhập bất thường tài khoản của bạn từ một địa chỉ IP mới. + further_actions_html: Nếu đó không phải là bạn, chúng tôi khuyến nghị %{action} lập tức và bật xác minh hai bước để giữ tài khoản được an toàn. + subject: Đăng nhập tài khoản từ địa chỉ IP mới + title: Lần đăng nhập mới warning: appeal: Gửi khiếu nại appeal_description: Nếu bạn nghĩ đây chỉ là nhầm lẫn, hãy gửi một khiếu nại cho %{instance}. @@ -1596,21 +1599,21 @@ vi: delete_statuses: Những tút %{acct} của bạn đã bị xóa bỏ disable: Tài khoản %{acct} của bạn đã bị vô hiệu hóa mark_statuses_as_sensitive: Tút của bạn trên %{acct} bị đánh dấu nhạy cảm - none: Cảnh báo cho %{acct} + none: Nhắc nhở tới %{acct} sensitive: Tút của bạn trên %{acct} sẽ bị đánh dấu nhạy cảm kể từ bây giờ silence: Tài khoản %{acct} của bạn đã bị hạn chế suspend: Tài khoản %{acct} của bạn đã bị vô hiệu hóa title: - delete_statuses: Tút đã bị xóa + delete_statuses: Xóa tút disable: Tài khoản bị đóng băng mark_statuses_as_sensitive: Tút đã bị đánh dấu nhạy cảm - none: Cảnh báo + none: Nhắc nhở sensitive: Tài khoản đã bị đánh dấu nhạy cảm silence: Tài khoản bị hạn chế suspend: Tài khoản bị vô hiệu hóa welcome: - edit_profile_action: Cài đặt trang cá nhân - edit_profile_step: Bạn có thể tùy chỉnh trang cá nhân của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Nếu bạn muốn những người theo dõi mới phải được phê duyệt, hãy chuyển tài khoản sang trạng thái khóa. + edit_profile_action: Cài đặt trang hồ sơ + edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Nếu bạn muốn tự phê duyệt những người theo dõi mới, hãy chuyển tài khoản sang trạng thái khóa. explanation: Dưới đây là một số mẹo để giúp bạn bắt đầu final_action: Viết tút mới final_step: 'Viết tút mới! Ngay cả khi chưa có người theo dõi, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và trong hashtag. Hãy giới thiệu bản thân với hashtag #introduction.' @@ -1627,15 +1630,12 @@ vi: title: Xin chào %{name}! users: follow_limit_reached: Bạn chỉ có thể theo dõi tối đa %{limit} người - generic_access_help_html: Gặp trục trặc với tài khoản? Liên hệ %{email} để được trợ giúp - invalid_otp_token: Mã xác thực hai bước không hợp lệ - invalid_sign_in_token: Mã an toàn không hợp lệ + invalid_otp_token: Mã xác minh 2 bước không hợp lệ otp_lost_help_html: Nếu bạn mất quyền truy cập vào cả hai, bạn có thể đăng nhập bằng %{email} seamless_external_login: Bạn đã đăng nhập thông qua một dịch vụ bên ngoài, vì vậy mật khẩu và email không khả dụng. signed_in_as: 'Đăng nhập với tư cách là:' - suspicious_sign_in_confirmation: Đây là lần đầu tiên bạn đăng nhập trên thiết bị này. Vì vậy, chúng tôi sẽ gửi một mã an toàn đến email của bạn để xác thực danh tính. verification: - explanation_html: 'Bạn có thể xác minh mình là chủ sở hữu của các trang web ở đầu trang cá nhân của bạn. Để xác minh, trang web phải chèn mã rel="me". Văn bản thay thế cho liên kết không quan trọng. Đây là một ví dụ:' + explanation_html: 'Bạn có thể xác minh mình là chủ sở hữu của các trang web ở đầu trang hồ sơ của bạn. Để xác minh, trang web phải chèn mã rel="me". Văn bản thay thế cho liên kết không quan trọng. Đây là một ví dụ:' verification: Xác minh webauthn_credentials: add: Thêm khóa bảo mật mới @@ -1652,5 +1652,5 @@ vi: nickname_hint: Nhập tên mới cho khóa bảo mật của bạn not_enabled: Bạn chưa kích hoạt WebAuthn not_supported: Trình duyệt của bạn không hỗ trợ khóa bảo mật - otp_required: Để dùng khóa bảo mật, trước tiên hãy kích hoạt xác thực hai bước. + otp_required: Để dùng khóa bảo mật, trước tiên hãy kích hoạt xác minh 2 bước. registered_on: Đăng ký vào %{date} diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 48c2ec09a..9515ffad8 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -21,15 +21,15 @@ zh-CN: documentation: 文档 federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容Mastodon的服务器上的人。 get_apps: 尝试移动应用 - hosted_on: 运行在 %{domain} 上的 Mastodon 实例 + hosted_on: 运行在 %{domain} 上的 Mastodon 站点 instance_actor_flash: '这个账号是个虚拟账号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。 ' learn_more: 了解详情 - logged_in_as_html: 你当前是以 %{username} 登录的。 + logged_in_as_html: 您当前以 %{username} 登录。 logout_before_registering: 您已登录。 privacy_policy: 隐私政策 - rules: 服务器规则 + rules: 实例规则 rules_html: 如果你想要在此Mastodon服务器上拥有一个账户,你必须遵守相应的规则,摘要如下: see_whats_happening: 看看有什么新鲜事 server_stats: 服务器统计数据: @@ -46,9 +46,9 @@ zh-CN: rejecting_media: 来自这些服务器的媒体文件将不会被处理或存储,缩略图也不会显示,需要手动点击打开原始文件。 rejecting_media_title: 被过滤的媒体文件 silenced: 来自这些服务器上的帖子将不会出现在公共时间轴和会话中,通知功能也不会提醒这些用户的动态;只有你关注了这些用户,才会收到用户互动的通知消息。 - silenced_title: 已隐藏的服务器 + silenced_title: 已限制的服务器 suspended: 这些服务器的数据将不会被处理、存储或者交换,本站也将无法和来自这些服务器的用户互动或者交流。 - suspended_title: 已封禁的服务器 + suspended_title: 已被封禁的服务器 unavailable_content_html: 通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但是某些站点上不排除会有例外。 user_count_after: other: 位用户 @@ -62,7 +62,7 @@ zh-CN: followers: other: 关注者 following: 正在关注 - instance_actor_flash: 这个账户是虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该封禁。 + instance_actor_flash: 这个账户是一个虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该被封禁。 joined: 加入于 %{date} last_active: 最近活动 link_verified_on: 此链接的所有权已在 %{date} 检查 @@ -81,7 +81,7 @@ zh-CN: roles: admin: 管理员 bot: 机器人 - group: 组 + group: 群组 moderator: 监察员 unavailable: 个人资料不可用 unfollow: 取消关注 @@ -161,6 +161,8 @@ zh-CN: pending: 待审核 perform_full_suspension: 封禁 previous_strikes: 既往处罚 + previous_strikes_description_html: + other: 此账号已有%{count}次处罚。 promote: 升任 protocol: 协议 public: 公开页面 @@ -192,7 +194,6 @@ zh-CN: security_measures: only_password: 仅密码 password_and_2fa: 密码和双重认证 - password_and_sign_in_token: 密码和电子邮件令牌 sensitive: 敏感内容 sensitized: 已标记为敏感内容 shared_inbox_url: 公用收件箱(Shared Inbox)URL @@ -321,7 +322,7 @@ zh-CN: unblock_email_account_html: "%{name} 取消屏蔽了 %{target} 的邮件地址" unsensitive_account_html: "%{name} 去除了 %{target} 的媒体的敏感内容标记" unsilence_account_html: "%{name} 解除了用户 %{target} 的隐藏状态" - unsuspend_account_html: "%{name} 解除了用户 %{target} 的封禁状态" + unsuspend_account_html: "%{name} 解封了用户 %{target}" update_announcement_html: "%{name} 更新了公告 %{target}" update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}" update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽" @@ -386,7 +387,7 @@ zh-CN: interactions: 互动数 media_storage: 媒体存储 new_users: 新用户 - opened_reports: 被发起的举报 + opened_reports: 收到的举报 pending_appeals_html: other: "%{count} 个待处理申诉" pending_reports_html: @@ -475,7 +476,7 @@ zh-CN: other: 在 %{count} 天中尝试失败。 no_failures_recorded: 没有失败记录。 title: 可用性 - warning: 上一次连接到此服务器的尝试失败了 + warning: 上一次尝试连接此服务器失败 back_to_all: 全部 back_to_limited: 受限 back_to_warning: 警告 @@ -504,6 +505,7 @@ zh-CN: delivery: all: 全部 clear: 清理投递错误 + failing: 发送失败 restart: 重新投递 stop: 停止投递 unavailable: 不可用 @@ -512,6 +514,8 @@ zh-CN: delivery_error_hint: 如果投递已不可用 %{count} 天,它将被自动标记为无法投递。 destroyed_msg: "%{domain} 中的数据现在正在排队等待被立刻删除。" empty: 暂无域名。 + known_accounts: + other: "%{count} 个已知账号" moderation: all: 全部 limited: 受限的 @@ -580,7 +584,7 @@ zh-CN: action_taken_by: 操作执行者 actions: delete_description_html: 被举报的嘟文将被删除,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。 - mark_as_sensitive_description_html: 被举报的嘟文将被标记为敏感内容,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。 + mark_as_sensitive_description_html: 被举报的嘟文将被标记为敏感,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。 other_description_html: 查看更多控制该账号行为的选项,并自定义编写与被举报账号的通信。 resolve_description_html: 不会对被举报账号采取任何动作,举报将被关闭,也不会留下处罚记录。 silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。 @@ -755,6 +759,11 @@ zh-CN: system_checks: database_schema_check: message_html: 有待处理的数据库迁移。请运行它们以确保应用程序正常运行。 + elasticsearch_running_check: + message_html: 无法连接到 Elasticsearch。请检查它是否正在运行,或禁用全文搜索 + elasticsearch_version_check: + message_html: '不兼容的 Elasticsearch 版本: %{value}' + version_comparison: Elasticsearch 最低版本要求 %{required_version},正在运行的版本是 %{running_version} rules_check: action: 管理服务器规则 message_html: 你没有定义任何服务器规则。 @@ -774,22 +783,25 @@ zh-CN: description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝单个链接。 disallow: 不允许链接 disallow_provider: 不允许发布者 + shared_by_over_week: + other: 过去一周内被 %{count} 个人分享过 title: 热门链接 usage_comparison: 今日被分享 %{today} 次,前一日为 %{yesterday} 次 + only_allowed: 仅显示已允许的内容 pending_review: 待审核 preview_card_providers: allowed: 来自此发布者的链接可进入流行列表 - description_html: 这些域名所属的链接经常在此服务器上被分享。在对应域名获得批准前链接不会公开显示在趋势中。批准和拒绝操作也会对子域名生效。 - rejected: 来自此发布者的链接不会进入流行列表 + description_html: 这些域名所属的链接经常在此服务器上被分享。在对应域名获得批准前链接不会公开显示在热门中。批准和拒绝操作也会对子域名生效。 + rejected: 来自此发布者的链接不会进入热门列表 title: 发布者 rejected: 已拒绝 statuses: allow: 允许嘟文 - allow_account: 允许作者 - description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。它可以帮助新用户和老用户发现更多可关注的账号。发布者获得批准前不会公开显示任何嘟文。同时发布者还需要允许其账号被推荐给其他用户。你也可以批准或拒绝单条嘟文。 - disallow: 禁止本嘟文 - disallow_account: 禁止本作者 - not_discoverable: 发布者未选择可被发现 + allow_account: 允许发布者 + description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝单条嘟文。 + disallow: 禁止嘟文 + disallow_account: 禁止发布者 + not_discoverable: 发布者选择不被发现 shared_by: other: 被分享和喜欢%{friendly_count}次 title: 热门嘟文 @@ -804,15 +816,18 @@ zh-CN: description_html: 这些是当前此服务器可见嘟文中大量出现的标签。它可以帮助用户发现其他人正关注的话题。在获得批准前不会公开显示任何标签。 listable: 可被推荐 not_listable: 不会被推荐 - not_trendable: 不会出现在流行列表中 + not_trendable: 不会出现在热门列表中 not_usable: 不可使用 peaked_on_and_decaying: 在 %{date} 达到峰值,下降中 title: 热门标签 - trendable: 可显示在流行列表中 + trendable: 可显示在热门列表中 trending_rank: '热门 #%{rank}' usable: 可以使用 usage_comparison: 今日被使用 %{today} 次,前一日为 %{yesterday} 次 + used_by_over_week: + other: 过去一周内被 %{count} 个人使用过 title: 流行趋势 + trending: 当前热门 warning_presets: add_new: 添加新条目 delete: 删除 @@ -843,17 +858,17 @@ zh-CN: body: 以下项目需要审核才能公开显示: new_trending_links: no_approved_links: 当前没有经过批准的热门链接。 - requirements: '以下候选均可超过 #%{rank} 已批准趋势链接,当前为 "%{lowest_link_title}",分数为 %{lowest_link_score}。' + requirements: '以下候选均可超过 #%{rank} 已批准热门链接,当前为 "%{lowest_link_title}",分数为 %{lowest_link_score}。' title: 热门链接 new_trending_statuses: no_approved_statuses: 当前没有经过批准的热门链接。 - requirements: '以下候选均可超过 #%{rank} 已批准趋势嘟文,当前为 %{lowest_status_url} 分数为 %{lowest_status_score}。' + requirements: '以下候选均可超过 #%{rank} 已批准热门嘟文,当前为 %{lowest_status_url} 分数为 %{lowest_status_score}。' title: 热门嘟文 new_trending_tags: no_approved_tags: 目前没有经批准的热门标签。 requirements: '这些候选人都可能会超过#%{rank} 批准的热门标签,目前是 #%{lowest_tag_name} ,分数为 %{lowest_tag_score}。' title: 热门标签 - subject: "%{instance} 上的新趋势供审核" + subject: "%{instance} 上有新热门等待审核" aliases: add_new: 创建别名 created_msg: 成功创建了一个新别名。你现在可以从旧账户开始迁移了。 @@ -891,7 +906,7 @@ zh-CN: auth: apply_for_account: 请求邀请 change_password: 密码 - checkbox_agreement_html: 我同意 服务器规则服务条款 + checkbox_agreement_html: 我同意 实例规则服务条款 checkbox_agreement_without_rules_html: 我同意 服务条款 delete_account: 删除帐户 delete_account_html: 如果你想删除你的帐户,请点击这里继续。你需要确认你的操作。 @@ -918,7 +933,7 @@ zh-CN: registration_closed: "%{instance} 目前不接收新成员" resend_confirmation: 重新发送确认邮件 reset_password: 重置密码 - security: 帐户安全 + security: 账户安全 set_new_password: 设置新密码 setup: email_below_hint_html: 如果下面的电子邮箱地址是错误的,你可以在这里修改并重新发送新的确认邮件。 @@ -1204,7 +1219,7 @@ zh-CN: new_followers_summary: other: 而且,你不在的时候,有 %{count} 个人关注了你!好棒! subject: - other: "自从上次访问后,有 %{count} 条新通知 \U0001F418" + other: "自上次访问以来,收到 %{count} 条新通知 🐘" title: 在你不在的这段时间…… favourite: body: 你的嘟文被 %{name} 喜欢了: @@ -1439,15 +1454,15 @@ zh-CN: ignore_favs: 取消喜欢 ignore_reblogs: 忽略转嘟 interaction_exceptions: 基于互动的例外 - interaction_exceptions_explanation: 请注意,如果嘟文超出转嘟和喜欢的阈值之后,又降到阈值以下,不能保证会被删除。 + interaction_exceptions_explanation: 请注意,如果嘟文超出转嘟和喜欢的阈值之后,又降到阈值以下,则可能不会被删除。 keep_direct: 保留私信 - keep_direct_hint: 没有删除你的任何私信 + keep_direct_hint: 不会删除你的任何私信 keep_media: 保留带媒体附件的嘟文 - keep_media_hint: 没有删除任何包含媒体附件的嘟文 + keep_media_hint: 不会删除任何包含媒体附件的嘟文 keep_pinned: 保留置顶嘟文 - keep_pinned_hint: 没有删除你的任何置顶嘟文 + keep_pinned_hint: 不会删除你的任何置顶嘟文 keep_polls: 保留投票 - keep_polls_hint: 没有删除你的任何投票 + keep_polls_hint: 不会删除你的任何投票 keep_self_bookmark: 保存被你加入书签的嘟文 keep_self_bookmark_hint: 如果你已将自己的嘟文添加书签,就不会删除这些嘟文 keep_self_fav: 保留你喜欢的嘟文 @@ -1463,9 +1478,9 @@ zh-CN: '7889238': 3个月 min_age_label: 过期阈值 min_favs: 保留如下嘟文:喜欢数超过 - min_favs_hint: 喜欢数超过该阈值的的嘟文不被删除。如果留空,则无视喜欢数,直接删除。 + min_favs_hint: 喜欢数超过该阈值的的嘟文不会被删除。如果留空,则无论嘟文获得多少喜欢,都将被删除。 min_reblogs: 保留如下嘟文:转嘟数超过 - min_reblogs_hint: 转嘟数超过该阈值的的嘟文不被删除。如果留空,则无视被转嘟的数量,直接删除。 + min_reblogs_hint: 转嘟数超过该阈值的的嘟文不会被删除。如果留空,则无论嘟文获得多少转嘟,都将被删除。 stream_entries: pinned: 置顶嘟文 reblogged: 转嘟 @@ -1593,12 +1608,13 @@ zh-CN: explanation: 你请求了一份 Mastodon 帐户的完整备份。现在你可以下载了! subject: 你的存档已经准备完毕 title: 存档导出 - sign_in_token: - details: 该尝试详情如下: - explanation: 我们检查到有来自未经识别的 IP 地址的登录请求。如果这确实是你,请在登录确认页面输入下方的安全码: - further_actions: 如果这不是你,请更换你的密码并且在你的账号上开启双重认证。你可以在这里设置: - subject: 请确认登录请求: - title: 登录请求 + suspicious_sign_in: + change_password: 更改密码 + details: 以下是该次登录的详细信息: + explanation: 我们检测到有新 IP 地址登录了您的账号。 + further_actions_html: 如果不是您自己的操作,我们建议您立即 %{action} 并启用双重验证,确保账号安全。 + subject: 已有新 IP 地址访问了您的账号 + title: 新登录 warning: appeal: 提交申诉 appeal_description: 如果你认为此结果有误,可以向 %{instance} 的工作人员提交申诉。 @@ -1629,7 +1645,7 @@ zh-CN: none: 警示 sensitive: 账户已被标记为敏感内容 silence: 帐户被隐藏 - suspend: 账号被封禁 + suspend: 账号被挂起 welcome: edit_profile_action: 设置个人资料 edit_profile_step: 你可以自定义你的个人资料,包括上传头像、横幅图片、更改昵称等等。如果你想在新的关注者关注你之前对他们进行审核,你也可以选择为你的帐户开启保护。 @@ -1649,13 +1665,10 @@ zh-CN: title: "%{name},欢迎你的加入!" users: follow_limit_reached: 你不能关注超过 %{limit} 个人 - generic_access_help_html: 登录账号出现问题?你可以向 %{email} 寻求帮助 invalid_otp_token: 输入的双重认证代码无效 - invalid_sign_in_token: 无效安全码 otp_lost_help_html: 如果你不慎丢失了所有的代码,请联系 %{email} 寻求帮助 seamless_external_login: 因为你是通过外部服务登录的,所以密码和电子邮件地址设置都不可用。 signed_in_as: 当前登录的帐户: - suspicious_sign_in_confirmation: 你似乎没有在这台设备上登录过,并且你也有很久没有登录过了,所以我们给你的电子邮箱发了封邮件,想确认一下确实是你。 verification: explanation_html: 你可以 验证自己是个人资料元数据中的某个链接的所有者。 为此,被链接网站必须包含一个到你的 Mastodon 主页的链接。链接中 必须 包括 rel="me" 属性。链接的文本内容可以随意填写。例如: verification: 验证 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index f85291b2c..6437a57e1 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -187,7 +187,6 @@ zh-HK: security_measures: only_password: 僅密碼 password_and_2fa: 密碼和兩步認證 - password_and_sign_in_token: 密碼與 e-mail 驗證碼 sensitive: 敏感内容 sensitized: 已標記為敏感內容 shared_inbox_url: 公共收件箱(Shared Inbox)URL @@ -595,7 +594,7 @@ zh-HK: desc_html: 本站詳細資訊頁的內文
你可以在此使用 HTML title: 本站詳細資訊 site_short_description: - desc_html: 顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫\U000294D9而出。 + desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫𩓙而出。" title: 伺服器短描述 site_terms: desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤 @@ -964,8 +963,6 @@ zh-HK: mention: "%{name} 在此提及了你︰" new_followers_summary: other: 你新獲得了 %{count} 位關注者了!好厲害! - subject: - other: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418" title: 在你不在的這段時間…… favourite: body: 你的文章被 %{name} 喜愛: @@ -1335,12 +1332,6 @@ zh-HK: explanation: 你要求的 Mastodon 帳號完整備份檔案現已就緒,可供下載。 subject: 你的備份檔已可供下載 title: 檔案匯出 - sign_in_token: - details: 這是嘗試的詳細資訊 - explanation: 我們發現有人嘗試以未使用過的 IP 位址登入到你的帳號。 如果這個登入的人是你,請在「登入請求」頁面上輸入以下安全代碼: - further_actions: 如果這不是你,請到這裏更改你的密碼,並啟用雙重認證: - subject: 請確認登入請求 - title: 登入請求 warning: subject: disable: 你的帳號 %{acct} 已經被涷結 @@ -1371,13 +1362,10 @@ zh-HK: title: 歡迎 %{name} 加入! users: follow_limit_reached: 你不能關注多於%{limit} 人 - generic_access_help_html: 不能登入?你可以寄電郵至 %{email} 尋求協助 invalid_otp_token: 雙重認證碼不正確 - invalid_sign_in_token: 無效的安全碼 otp_lost_help_html: 如果這兩者你均無法登入,你可以聯繫 %{email} seamless_external_login: 因為你正在使用第三方服務登入,所以不能設定密碼和電郵。 signed_in_as: 目前登入的帳戶: - suspicious_sign_in_confirmation: 你似乎未曾從此設備登入,而你又有一段時間沒有登入了。我們剛剛把安全碼傳送到你的電郵地址,請查看你的電郵信箱,以確認你是帳號擁有者本人。 verification: explanation_html: 你可以認證個人資料頁面的元數據 (Metadata) 連結是屬於你的。要認證,那些連結的目的地網站必須有一條回到你 Mastodon 個人頁面的連結,而且連結必須具有rel="me"屬性。連結的文字內容都不會影響認證。這裏有一個例子: verification: 驗證 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 90625c5fd..0d1716790 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -192,7 +192,6 @@ zh-TW: security_measures: only_password: 僅使用密碼 password_and_2fa: 密碼及二重因素驗證 - password_and_sign_in_token: 密碼及電子信箱 token 驗證 sensitive: 敏感内容 sensitized: 已標記為敏感內容 shared_inbox_url: 共享收件箱網址 @@ -506,6 +505,7 @@ zh-TW: delivery: all: 所有 clear: 清除遞送錯誤 + failing: 發送失敗 restart: 重新啟動遞送 stop: 停止遞送 unavailable: 無法使用 @@ -787,6 +787,7 @@ zh-TW: other: 上週被 %{count} 名使用者分享 title: 熱門連結 usage_comparison: 於今日被 %{today} 人分享,相較於昨日 %{yesterday} 人 + only_allowed: 僅允許 pending_review: 等待審核中 preview_card_providers: allowed: 此發行者之連結能登上熱門 @@ -826,6 +827,7 @@ zh-TW: used_by_over_week: other: 上週被 %{count} 個人使用 title: 熱門榜 + trending: 熱門 warning_presets: add_new: 新增 delete: 刪除 @@ -1217,7 +1219,7 @@ zh-TW: new_followers_summary: other: 此外,您在離開時獲得了 %{count} 位新的追蹤者!超棒的! subject: - other: "從您上次造訪以來有 %{count} 個新通知 \U0001F418" + other: "從您上次造訪以來有 %{count} 個新通知 🐘" title: 你不在的時候... favourite: body: '你的嘟文被 %{name} 加入了最愛:' @@ -1604,12 +1606,13 @@ zh-TW: explanation: 你要求的 Mastodon 帳戶完整備份檔案現已就緒,可供下載! subject: 你的備份檔已可供下載 title: 檔案匯出 - sign_in_token: - details: 以下是嘗試登入的詳細資訊: - explanation: 我們偵測到有人試圖從陌生的 IP 位置登入您的帳號。如果這是您,請在「登入確認」頁面輸入安全碼: - further_actions: 如果這不是你,請立即到這裡變更你的密碼,並啟用兩步驟驗證: - subject: 請確認登入嘗試 - title: 登入嘗試 + suspicious_sign_in: + change_password: 變更密碼 + details: 以下是該登入之詳細資訊: + explanation: 我們偵測到有新 IP 地址登入您的帳號 + further_actions_html: 如果這個不是您,我們建議您立即 %{action} ,並且啟用二階段驗證 (2FA) 以確保帳號安全。 + subject: 您的帳號已被新 IP 地址存取 + title: 新登入 warning: appeal: 遞交申訴 appeal_description: 若您認為這是錯誤,您可以向 %{instance} 的工作人員提出申訴。 @@ -1660,13 +1663,10 @@ zh-TW: title: "%{name} 歡迎你的加入!" users: follow_limit_reached: 您無法追蹤多於 %{limit} 個人 - generic_access_help_html: 存取您的帳號時遇到困難?您可以透過 %{email} 取得協助 invalid_otp_token: 兩階段認證碼不正確 - invalid_sign_in_token: 安全碼無效 otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫 seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼與電子郵件。 signed_in_as: 目前登入的帳戶: - suspicious_sign_in_confirmation: 您之前似乎未從此裝置登入過,再加上您也有一段時間沒有登入了,因此我們剛剛傳送了安全碼到您的電子郵件地址以確認真的是您。 verification: explanation_html: 您在 Mastodon 個人資料頁上所列出的連結,可以用此方式驗證您確實掌控該連結網頁的內容。您可以在連結的網頁上加上一個連回 Mastodon 個人資料頁的連結,該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字可自由發揮,以下為範例: verification: 驗證連結 diff --git a/config/routes.rb b/config/routes.rb index 55e17ab14..574715705 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -298,7 +298,6 @@ Rails.application.routes.draw do resources :users, only: [] do resource :two_factor_authentication, only: [:destroy] - resource :sign_in_token_authentication, only: [:create, :destroy] end resources :custom_emojis, only: [:index, :new, :create] do diff --git a/config/settings.yml b/config/settings.yml index 51016d322..bb2720ec2 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -43,10 +43,10 @@ defaults: &defaults trending_status_cw: true crop_images: true notification_emails: - follow: false + follow: true reblog: false favourite: false - mention: false + mention: true follow_request: true digest: true report: true @@ -55,6 +55,7 @@ defaults: &defaults trending_link: false trending_status: false appeal: true + always_send_emails: false interactions: must_be_follower: false must_be_following: false diff --git a/config/sidekiq.yml b/config/sidekiq.yml index f2ae9279b..26be26326 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -17,10 +17,6 @@ every: '5m' class: Scheduler::Trends::RefreshScheduler queue: scheduler - email_domain_block_refresh_scheduler: - every: '1h' - class: Scheduler::EmailDomainBlockRefreshScheduler - queue: scheduler trends_review_notifications_scheduler: every: '6h' class: Scheduler::Trends::ReviewNotificationsScheduler diff --git a/config/webpack/shared.js b/config/webpack/shared.js index c2a108a89..bbf9f51f1 100644 --- a/config/webpack/shared.js +++ b/config/webpack/shared.js @@ -61,6 +61,7 @@ module.exports = { filename: 'js/[name]-[chunkhash].js', chunkFilename: 'js/[name]-[chunkhash].chunk.js', hotUpdateChunkFilename: 'js/[id]-[hash].hot-update.js', + hashFunction: 'sha256', path: output.path, publicPath: output.publicPath, }, diff --git a/db/migrate/20180615122121_add_autofollow_to_invites.rb b/db/migrate/20180615122121_add_autofollow_to_invites.rb index 850b1d693..8c5fb7410 100644 --- a/db/migrate/20180615122121_add_autofollow_to_invites.rb +++ b/db/migrate/20180615122121_add_autofollow_to_invites.rb @@ -5,7 +5,7 @@ class AddAutofollowToInvites < ActiveRecord::Migration[5.2] disable_ddl_transaction! - def change + def up safety_assured do add_column_with_default :invites, :autofollow, :bool, default: false, allow_null: false end diff --git a/db/migrate/20190715164535_add_instance_actor.rb b/db/migrate/20190715164535_add_instance_actor.rb index 8c0301d69..0ae53199a 100644 --- a/db/migrate/20190715164535_add_instance_actor.rb +++ b/db/migrate/20190715164535_add_instance_actor.rb @@ -2,6 +2,14 @@ class AddInstanceActor < ActiveRecord::Migration[5.2] class Account < ApplicationRecord # Dummy class, to make migration possible across version changes validates :username, uniqueness: { scope: :domain, case_sensitive: false } + + before_create :generate_keys + + def generate_keys + keypair = OpenSSL::PKey::RSA.new(2048) + self.private_key = keypair.to_pem + self.public_key = keypair.public_key.to_pem + end end def up diff --git a/db/migrate/20220428112511_add_index_statuses_on_account_id.rb b/db/migrate/20220428112511_add_index_statuses_on_account_id.rb new file mode 100644 index 000000000..87a601b72 --- /dev/null +++ b/db/migrate/20220428112511_add_index_statuses_on_account_id.rb @@ -0,0 +1,7 @@ +class AddIndexStatusesOnAccountId < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def change + add_index :statuses, [:account_id], name: :index_statuses_on_account_id, algorithm: :concurrently + end +end diff --git a/db/migrate/20220428112727_add_index_statuses_pins_on_status_id.rb b/db/migrate/20220428112727_add_index_statuses_pins_on_status_id.rb new file mode 100644 index 000000000..26a543087 --- /dev/null +++ b/db/migrate/20220428112727_add_index_statuses_pins_on_status_id.rb @@ -0,0 +1,7 @@ +class AddIndexStatusesPinsOnStatusId < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def change + add_index :status_pins, [:status_id], name: :index_status_pins_on_status_id, algorithm: :concurrently + end +end diff --git a/db/migrate/20220428114454_add_index_reports_on_assigned_account_id.rb b/db/migrate/20220428114454_add_index_reports_on_assigned_account_id.rb new file mode 100644 index 000000000..c260c9732 --- /dev/null +++ b/db/migrate/20220428114454_add_index_reports_on_assigned_account_id.rb @@ -0,0 +1,7 @@ +class AddIndexReportsOnAssignedAccountId < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def change + add_index :reports, [:assigned_account_id], name: :index_reports_on_assigned_account_id, algorithm: :concurrently, where: 'assigned_account_id IS NOT NULL' + end +end diff --git a/db/migrate/20220428114902_add_index_reports_on_action_taken_by_account_id.rb b/db/migrate/20220428114902_add_index_reports_on_action_taken_by_account_id.rb new file mode 100644 index 000000000..aed88cd80 --- /dev/null +++ b/db/migrate/20220428114902_add_index_reports_on_action_taken_by_account_id.rb @@ -0,0 +1,7 @@ +class AddIndexReportsOnActionTakenByAccountId < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def change + add_index :reports, [:action_taken_by_account_id], name: :index_reports_on_action_taken_by_account_id, algorithm: :concurrently, where: 'action_taken_by_account_id IS NOT NULL' + end +end diff --git a/db/post_migrate/20220429101025_remove_ips_from_email_domain_blocks.rb b/db/post_migrate/20220429101025_remove_ips_from_email_domain_blocks.rb new file mode 100644 index 000000000..fbb74d99e --- /dev/null +++ b/db/post_migrate/20220429101025_remove_ips_from_email_domain_blocks.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class RemoveIpsFromEmailDomainBlocks < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + safety_assured do + remove_column :email_domain_blocks, :ips, :inet, array: true + remove_column :email_domain_blocks, :last_refresh_at, :datetime + end + end +end diff --git a/db/post_migrate/20220429101850_clear_email_domain_blocks.rb b/db/post_migrate/20220429101850_clear_email_domain_blocks.rb new file mode 100644 index 000000000..ff525b650 --- /dev/null +++ b/db/post_migrate/20220429101850_clear_email_domain_blocks.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class ClearEmailDomainBlocks < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + class EmailDomainBlock < ApplicationRecord + end + + def up + EmailDomainBlock.where.not(parent_id: nil).in_batches.delete_all + end + + def down; end +end diff --git a/db/schema.rb b/db/schema.rb index 3c1e2f42f..de592aa46 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_03_16_233212) do +ActiveRecord::Schema.define(version: 2022_04_29_101850) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -389,8 +389,6 @@ ActiveRecord::Schema.define(version: 2022_03_16_233212) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.bigint "parent_id" - t.inet "ips", array: true - t.datetime "last_refresh_at" t.index ["domain"], name: "index_email_domain_blocks_on_domain", unique: true end @@ -784,6 +782,8 @@ ActiveRecord::Schema.define(version: 2022_03_16_233212) do t.datetime "action_taken_at" t.bigint "rule_ids", array: true t.index ["account_id"], name: "index_reports_on_account_id" + t.index ["action_taken_by_account_id"], name: "index_reports_on_action_taken_by_account_id", where: "(action_taken_by_account_id IS NOT NULL)" + t.index ["assigned_account_id"], name: "index_reports_on_assigned_account_id", where: "(assigned_account_id IS NOT NULL)" t.index ["target_account_id"], name: "index_reports_on_target_account_id" end @@ -861,6 +861,7 @@ ActiveRecord::Schema.define(version: 2022_03_16_233212) do t.datetime "created_at", default: -> { "now()" }, null: false t.datetime "updated_at", default: -> { "now()" }, null: false t.index ["account_id", "status_id"], name: "index_status_pins_on_account_id_and_status_id", unique: true + t.index ["status_id"], name: "index_status_pins_on_status_id" end create_table "status_stats", force: :cascade do |t| @@ -899,6 +900,7 @@ ActiveRecord::Schema.define(version: 2022_03_16_233212) do t.boolean "trendable" t.bigint "ordered_media_attachment_ids", array: true t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20190820", order: { id: :desc }, where: "(deleted_at IS NULL)" + t.index ["account_id"], name: "index_statuses_on_account_id" t.index ["deleted_at"], name: "index_statuses_on_deleted_at", where: "(deleted_at IS NOT NULL)" t.index ["id", "account_id"], name: "index_statuses_local_20190824", order: { id: :desc }, where: "((local OR (uri IS NULL)) AND (deleted_at IS NULL) AND (visibility = 0) AND (reblog_of_id IS NULL) AND ((NOT reply) OR (in_reply_to_account_id = account_id)))" t.index ["id", "account_id"], name: "index_statuses_public_20200119", order: { id: :desc }, where: "((deleted_at IS NULL) AND (visibility = 0) AND (reblog_of_id IS NULL) AND ((NOT reply) OR (in_reply_to_account_id = account_id)))" @@ -1239,4 +1241,5 @@ ActiveRecord::Schema.define(version: 2022_03_16_233212) do ORDER BY (sum(t0.rank)) DESC; SQL add_index "follow_recommendations", ["account_id"], name: "index_follow_recommendations_on_account_id", unique: true + end diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 000000000..177e05f98 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,33 @@ +module.exports = { + 'testEnvironment': 'jsdom', + 'projects': [ + '/app/javascript/mastodon', + ], + 'testPathIgnorePatterns': [ + '/node_modules/', + '/vendor/', + '/config/', + '/log/', + '/public/', + '/tmp/', + '/app/javascript/themes/', + ], + 'setupFiles': [ + 'raf/polyfill', + ], + 'setupFilesAfterEnv': [ + '/app/javascript/mastodon/test_setup.js', + ], + 'collectCoverageFrom': [ + 'app/javascript/mastodon/**/*.js', + '!app/javascript/mastodon/features/emoji/emoji_compressed.js', + '!app/javascript/mastodon/locales/locale-data/*.js', + '!app/javascript/mastodon/service_worker/entry.js', + '!app/javascript/mastodon/test_setup.js', + ], + 'coverageDirectory': '/coverage', + 'moduleDirectories': [ + '/node_modules', + '/app/javascript', + ], +}; diff --git a/lib/action_dispatch/cookie_jar_extensions.rb b/lib/action_dispatch/cookie_jar_extensions.rb deleted file mode 100644 index 1be9053ba..000000000 --- a/lib/action_dispatch/cookie_jar_extensions.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -module ActionDispatch - module CookieJarExtensions - private - - # Monkey-patch ActionDispatch to serve secure cookies to Tor Hidden Service - # users. Otherwise, ActionDispatch would drop the cookie over HTTP. - def write_cookie?(*) - request.host.end_with?('.onion') || super - end - end -end - -ActionDispatch::Cookies::CookieJar.prepend(ActionDispatch::CookieJarExtensions) - -module Rack - module SessionPersistedExtensions - def security_matches?(request, options) - request.host.end_with?('.onion') || super - end - end -end - -Rack::Session::Abstract::Persisted.prepend(Rack::SessionPersistedExtensions) diff --git a/lib/exceptions.rb b/lib/exceptions.rb index eb472abaa..0c677b660 100644 --- a/lib/exceptions.rb +++ b/lib/exceptions.rb @@ -10,6 +10,7 @@ module Mastodon class StreamValidationError < ValidationError; end class RaceConditionError < Error; end class RateLimitExceededError < Error; end + class SyntaxError < Error; end class UnexpectedResponseError < Error attr_reader :response diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 2ef85d0a9..7256d1da9 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -55,7 +55,6 @@ module Mastodon option :email, required: true option :confirmed, type: :boolean option :role, default: 'user', enum: %w(user moderator admin) - option :skip_sign_in_token, type: :boolean option :reattach, type: :boolean option :force, type: :boolean desc 'create USERNAME', 'Create a new user' @@ -69,9 +68,6 @@ module Mastodon With the --role option one of "user", "admin" or "moderator" can be supplied. Defaults to "user" - With the --skip-sign-in-token option, you can ensure that - the user is never asked for an e-mailed security code. - With the --reattach option, the new user will be reattached to a given existing username of an old account. If the old account is still in use by someone else, you can supply @@ -81,7 +77,7 @@ module Mastodon def create(username) account = Account.new(username: username) password = SecureRandom.hex - user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true, skip_sign_in_token: options[:skip_sign_in_token]) + user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true) if options[:reattach] account = Account.find_local(username) || Account.new(username: username) @@ -125,7 +121,6 @@ module Mastodon option :disable_2fa, type: :boolean option :approve, type: :boolean option :reset_password, type: :boolean - option :skip_sign_in_token, type: :boolean desc 'modify USERNAME', 'Modify a user' long_desc <<-LONG_DESC Modify a user account. @@ -147,9 +142,6 @@ module Mastodon With the --reset-password option, the user's password is replaced by a randomly-generated one, printed in the output. - - With the --skip-sign-in-token option, you can ensure that - the user is never asked for an e-mailed security code. LONG_DESC def modify(username) user = Account.find_local(username)&.user @@ -171,7 +163,6 @@ module Mastodon user.disabled = true if options[:disable] user.approved = true if options[:approve] user.otp_required_for_login = false if options[:disable_2fa] - user.skip_sign_in_token = options[:skip_sign_in_token] unless options[:skip_sign_in_token].nil? user.confirm if options[:confirm] if user.save diff --git a/lib/mastodon/cli_helper.rb b/lib/mastodon/cli_helper.rb index aaee1fa91..a78a28e27 100644 --- a/lib/mastodon/cli_helper.rb +++ b/lib/mastodon/cli_helper.rb @@ -19,15 +19,18 @@ module Mastodon ProgressBar.create(total: total, format: '%c/%u |%b%i| %e') end + def reset_connection_pools! + ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations[Rails.env].dup.tap { |config| config['pool'] = options[:concurrency] + 1 }) + RedisConfiguration.establish_pool(options[:concurrency]) + end + def parallelize_with_progress(scope) if options[:concurrency] < 1 say('Cannot run with this concurrency setting, must be at least 1', :red) exit(1) end - db_config = ActiveRecord::Base.configurations[Rails.env].dup - db_config['pool'] = options[:concurrency] + 1 - ActiveRecord::Base.establish_connection(db_config) + reset_connection_pools! progress = create_progress_bar(scope.count) pool = Concurrent::FixedThreadPool.new(options[:concurrency]) @@ -52,6 +55,9 @@ module Mastodon result = ActiveRecord::Base.connection_pool.with_connection do yield(item) + ensure + RedisConfiguration.pool.checkin if Thread.current[:redis] + Thread.current[:redis] = nil end aggregate.increment(result) if result.is_a?(Integer) diff --git a/lib/mastodon/feeds_cli.rb b/lib/mastodon/feeds_cli.rb index 578ea15c5..428d63a44 100644 --- a/lib/mastodon/feeds_cli.rb +++ b/lib/mastodon/feeds_cli.rb @@ -7,6 +7,7 @@ require_relative 'cli_helper' module Mastodon class FeedsCLI < Thor include CLIHelper + include Redisable def self.exit_on_failure? true @@ -51,10 +52,10 @@ module Mastodon desc 'clear', 'Remove all home and list feeds from Redis' def clear - keys = Redis.current.keys('feed:*') + keys = redis.keys('feed:*') - Redis.current.pipelined do - keys.each { |key| Redis.current.del(key) } + redis.pipelined do + keys.each { |key| redis.del(key) } end say('OK', :green) diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb index e920ff88f..2ab8150ec 100644 --- a/lib/mastodon/migration_helpers.rb +++ b/lib/mastodon/migration_helpers.rb @@ -812,7 +812,10 @@ module Mastodon # removing the old one def update_index(table_name, index_name, columns, **index_options) if index_name_exists?(table_name, "#{index_name}_new") && index_name_exists?(table_name, index_name) - remove_index table_name, "#{index_name}_new" + remove_index table_name, name: "#{index_name}_new" + elsif index_name_exists?(table_name, "#{index_name}_new") + # Very unlikely case where the script has been interrupted during/after removal but before renaming + rename_index table_name, "#{index_name}_new", index_name end begin diff --git a/lib/mastodon/rack_middleware.rb b/lib/mastodon/rack_middleware.rb new file mode 100644 index 000000000..8aa7911fe --- /dev/null +++ b/lib/mastodon/rack_middleware.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class Mastodon::RackMiddleware + def initialize(app) + @app = app + end + + def call(env) + @app.call(env) + ensure + clean_up_sockets! + end + + private + + def clean_up_sockets! + clean_up_redis_socket! + clean_up_statsd_socket! + end + + def clean_up_redis_socket! + RedisConfiguration.pool.checkin if Thread.current[:redis] + Thread.current[:redis] = nil + end + + def clean_up_statsd_socket! + Thread.current[:statsd_socket]&.close + Thread.current[:statsd_socket] = nil + end +end diff --git a/lib/mastodon/redis_config.rb b/lib/mastodon/redis_config.rb index 5bfd26e34..98dc4788d 100644 --- a/lib/mastodon/redis_config.rb +++ b/lib/mastodon/redis_config.rb @@ -11,13 +11,15 @@ def setup_redis_env_url(prefix = nil, defaults = true) port = ENV.fetch(prefix + 'REDIS_PORT') { 6379 if defaults } db = ENV.fetch(prefix + 'REDIS_DB') { 0 if defaults } - ENV[prefix + 'REDIS_URL'] = if [password, host, port, db].all?(&:nil?) - ENV['REDIS_URL'] - else - Addressable::URI.parse("redis://#{host}:#{port}/#{db}").tap do |uri| - uri.password = password if password.present? - end.normalize.to_str - end + ENV[prefix + 'REDIS_URL'] = begin + if [password, host, port, db].all?(&:nil?) + ENV['REDIS_URL'] + else + Addressable::URI.parse("redis://#{host}:#{port}/#{db}").tap do |uri| + uri.password = password if password.present? + end.normalize.to_str + end + end end setup_redis_env_url @@ -33,6 +35,8 @@ REDIS_CACHE_PARAMS = { url: ENV['CACHE_REDIS_URL'], expires_in: 10.minutes, namespace: cache_namespace, + pool_size: Sidekiq.server? ? Sidekiq.options[:concurrency] : Integer(ENV['MAX_THREADS'] || 5), + pool_timeout: 5, }.freeze REDIS_SIDEKIQ_PARAMS = { @@ -40,3 +44,7 @@ REDIS_SIDEKIQ_PARAMS = { url: ENV['SIDEKIQ_REDIS_URL'], namespace: sidekiq_namespace, }.freeze + +if Rails.env.test? + ENV['REDIS_NAMESPACE'] = "mastodon_test#{ENV['TEST_ENV_NUMBER']}" +end diff --git a/lib/mastodon/search_cli.rb b/lib/mastodon/search_cli.rb index 6ad9d7b6a..74f980ba1 100644 --- a/lib/mastodon/search_cli.rb +++ b/lib/mastodon/search_cli.rb @@ -59,9 +59,7 @@ module Mastodon index.specification.lock! end - db_config = ActiveRecord::Base.configurations[Rails.env].dup - db_config['pool'] = options[:concurrency] + 1 - ActiveRecord::Base.establish_connection(db_config) + reset_connection_pools! pool = Concurrent::FixedThreadPool.new(options[:concurrency]) added = Concurrent::AtomicFixnum.new(0) @@ -139,6 +137,9 @@ module Mastodon sleep 1 rescue => e progress.log pastel.red("Error importing #{index}: #{e}") + ensure + RedisConfiguration.pool.checkin if Thread.current[:redis] + Thread.current[:redis] = nil end end end diff --git a/lib/mastodon/settings_cli.rb b/lib/mastodon/settings_cli.rb index 061650a80..488c655de 100644 --- a/lib/mastodon/settings_cli.rb +++ b/lib/mastodon/settings_cli.rb @@ -16,6 +16,20 @@ module Mastodon say('OK', :green) end + desc 'approved', 'Open approval-based registrations' + option :require_reason, type: :boolean, aliases: [:require_invite_text] + long_desc <<~LONG_DESC + Set registrations to require review from staff. + + With --require-reason, require users to enter a reason when registering, + otherwise this field is optional. + LONG_DESC + def approved + Setting.registrations_mode = 'approved' + Setting.require_invite_text = options[:require_reason] unless options[:require_reason].nil? + say('OK', :green) + end + desc 'close', 'Close registrations' def close Setting.registrations_mode = 'none' diff --git a/lib/sidekiq_error_handler.rb b/lib/mastodon/sidekiq_middleware.rb similarity index 52% rename from lib/sidekiq_error_handler.rb rename to lib/mastodon/sidekiq_middleware.rb index 358afd540..c75e8401f 100644 --- a/lib/sidekiq_error_handler.rb +++ b/lib/mastodon/sidekiq_middleware.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class SidekiqErrorHandler +class Mastodon::SidekiqMiddleware BACKTRACE_LIMIT = 3 def call(*) @@ -10,9 +10,7 @@ class SidekiqErrorHandler rescue => e limit_backtrace_and_raise(e) ensure - socket = Thread.current[:statsd_socket] - socket&.close - Thread.current[:statsd_socket] = nil + clean_up_sockets! end private @@ -21,4 +19,19 @@ class SidekiqErrorHandler exception.set_backtrace(exception.backtrace.first(BACKTRACE_LIMIT)) raise exception end + + def clean_up_sockets! + clean_up_redis_socket! + clean_up_statsd_socket! + end + + def clean_up_redis_socket! + RedisConfiguration.pool.checkin if Thread.current[:redis] + Thread.current[:redis] = nil + end + + def clean_up_statsd_socket! + Thread.current[:statsd_socket]&.close + Thread.current[:statsd_socket] = nil + end end diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 43fdfe846..2cac262fc 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 0 + 2 end def flags diff --git a/lib/paperclip/storage_extensions.rb b/lib/paperclip/storage_extensions.rb deleted file mode 100644 index 95c35641e..000000000 --- a/lib/paperclip/storage_extensions.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -# Some S3-compatible providers might not actually be compatible with some APIs -# used by kt-paperclip, see https://github.com/mastodon/mastodon/issues/16822 -if ENV['S3_ENABLED'] == 'true' && ENV['S3_FORCE_SINGLE_REQUEST'] == 'true' - module Paperclip - module Storage - module S3Extensions - def copy_to_local_file(style, local_dest_path) - log("copying #{path(style)} to local file #{local_dest_path}") - s3_object(style).download_file(local_dest_path, { mode: 'single_request' }) - rescue Aws::Errors::ServiceError => e - warn("#{e} - cannot copy #{path(style)} to local file #{local_dest_path}") - false - end - end - end - end - - Paperclip::Storage::S3.prepend(Paperclip::Storage::S3Extensions) -end diff --git a/lib/sanitize_ext/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb index 935e1f4f6..946543868 100644 --- a/lib/sanitize_ext/sanitize_config.rb +++ b/lib/sanitize_ext/sanitize_config.rb @@ -133,7 +133,7 @@ class Sanitize rel += ['nofollow', 'noopener', 'noreferrer'] unless TagManager.instance.local_url?(node['href']) if rel.empty? - node['rel']&.delete + node.remove_attribute('rel') else node['rel'] = rel.join(' ') end @@ -144,7 +144,7 @@ class Sanitize node = env[:node] if node['target'] != '_blank' && TagManager.instance.local_url?(node['href']) - node['target']&.delete + node.remove_attribute('target') else node['target'] = '_blank' end diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index 8faa48a95..d9db79940 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -1,6 +1,6 @@ # frozen_string_literal: true -def gen_border(codepoint) +def gen_border(codepoint, color) input = Rails.root.join('public', 'emoji', "#{codepoint}.svg") dest = Rails.root.join('public', 'emoji', "#{codepoint}_border.svg") doc = File.open(input) { |f| Nokogiri::XML(f) } @@ -19,7 +19,7 @@ def gen_border(codepoint) border_elem.delete('fill') - border_elem['stroke'] = 'white' + border_elem['stroke'] = color border_elem['stroke-linejoin'] = 'round' border_elem['stroke-width'] = '4px' @@ -91,12 +91,16 @@ namespace :emojis do desc 'Generate emoji variants with white borders' task :generate_borders do src = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json') - emojis = '🎱🐜⚫🖤⬛◼️◾◼️✒️▪️💣🎳📷📸♣️🕶️✴️🔌💂‍♀️📽️🍳🦍💂🔪🕳️🕹️🕋🖊️🖋️💂‍♂️🎤🎓🎥🎼♠️🎩🦃📼📹🎮🐃🏴🐞🕺📱📲🚲👽⚾🐔☁️💨🕊️👀🍥👻🐐❕❔⛸️🌩️🔊🔇📃🌧️🐏🍚🍙🐓🐑💀☠️🌨️🔉🔈💬💭🏐🏳️⚪⬜◽◻️▫️' + emojis_light = '👽⚾🐔☁️💨🕊️👀🍥👻🐐❕❔⛸️🌩️🔊🔇📃🌧️🐏🍚🍙🐓🐑💀☠️🌨️🔉🔈💬💭🏐🏳️⚪⬜◽◻️▫️' + emojis_dark = '🎱🐜⚫🖤⬛◼️◾◼️✒️▪️💣🎳📷📸♣️🕶️✴️🔌💂‍♀️📽️🍳🦍💂🔪🕳️🕹️🕋🖊️🖋️💂‍♂️🎤🎓🎥🎼♠️🎩🦃📼📹🎮🐃🏴🐞🕺📱📲🚲' map = Oj.load(File.read(src)) - emojis.each_grapheme_cluster do |emoji| - gen_border map[emoji] + emojis_light.each_grapheme_cluster do |emoji| + gen_border map[emoji], 'black' + end + emojis_dark.each_grapheme_cluster do |emoji| + gen_border map[emoji], 'white' end end end diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake index 8082f32fb..0f3b44a74 100644 --- a/lib/tasks/tests.rake +++ b/lib/tasks/tests.rake @@ -33,6 +33,11 @@ namespace :tests do puts 'AccountConversation records not created as expected' exit(1) end + + if Account.find(-99).private_key.blank? + puts 'Instance actor does not have a private key' + exit(1) + end end desc 'Populate the database with test data for 2.4.0' diff --git a/package.json b/package.json index 8eddc9242..dec94cb21 100644 --- a/package.json +++ b/package.json @@ -28,48 +28,15 @@ "iOS >= 9", "not dead" ], - "jest": { - "testEnvironment": "jsdom", - "projects": [ - "/app/javascript/mastodon" - ], - "testPathIgnorePatterns": [ - "/node_modules/", - "/vendor/", - "/config/", - "/log/", - "/public/", - "/tmp/", - "/app/javascript/themes/" - ], - "setupFiles": [ - "raf/polyfill" - ], - "setupFilesAfterEnv": [ - "/app/javascript/mastodon/test_setup.js" - ], - "collectCoverageFrom": [ - "app/javascript/mastodon/**/*.js", - "!app/javascript/mastodon/features/emoji/emoji_compressed.js", - "!app/javascript/mastodon/locales/locale-data/*.js", - "!app/javascript/mastodon/service_worker/entry.js", - "!app/javascript/mastodon/test_setup.js" - ], - "coverageDirectory": "/coverage", - "moduleDirectories": [ - "/node_modules", - "/app/javascript" - ] - }, "private": true, "dependencies": { - "@babel/core": "^7.17.8", - "@babel/plugin-proposal-decorators": "^7.17.8", + "@babel/core": "^7.17.10", + "@babel/plugin-proposal-decorators": "^7.17.9", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.17.0", - "@babel/preset-env": "^7.16.11", + "@babel/plugin-transform-runtime": "^7.17.10", + "@babel/preset-env": "^7.17.10", "@babel/preset-react": "^7.16.7", - "@babel/runtime": "^7.17.8", + "@babel/runtime": "^7.17.9", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.5", @@ -78,7 +45,7 @@ "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", "axios": "^0.26.1", - "babel-loader": "^8.2.4", + "babel-loader": "^8.2.5", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", "babel-plugin-react-intl": "^6.2.0", @@ -97,7 +64,7 @@ "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", "exif-js": "^2.3.0", - "express": "^4.17.3", + "express": "^4.18.1", "favico.js": "^0.3.10", "file-loader": "^6.2.0", "font-awesome": "^4.7.0", @@ -117,7 +84,7 @@ "marky": "^1.2.4", "mini-css-extract-plugin": "^1.6.2", "mkdirp": "^1.0.4", - "npmlog": "^6.0.1", + "npmlog": "^6.0.2", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", @@ -139,16 +106,16 @@ "react-motion": "^0.5.2", "react-notification": "^6.8.5", "react-overlays": "^0.9.3", - "react-redux": "^7.2.6", + "react-redux": "^7.2.8", "react-redux-loading-bar": "^4.0.8", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", - "react-select": "^5.2.2", + "react-select": "^5.3.1", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.3", "react-toggle": "^4.1.2", - "redis": "^4.0.4", + "redis": "^4.1.0", "redux": "^4.1.2", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", @@ -157,7 +124,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.5", "rimraf": "^3.0.2", - "sass": "^1.49.9", + "sass": "^1.51.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", @@ -174,26 +141,27 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.1", - "ws": "^8.5.0" + "ws": "^8.6.0" }, "devDependencies": { - "@testing-library/jest-dom": "^5.16.3", - "@testing-library/react": "^12.1.4", + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/react": "^12.1.5", "babel-eslint": "^10.1.0", - "babel-jest": "^27.5.1", + "babel-jest": "^28.0.3", "eslint": "^7.32.0", - "eslint-plugin-import": "~2.25.4", + "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.5.1", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.29.4", - "jest": "^27.5.1", - "prettier": "^2.6.1", + "jest": "^28.0.3", + "jest-environment-jsdom": "^28.0.2", + "prettier": "^2.6.2", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", "sass-lint": "^1.13.1", "webpack-dev-server": "^3.11.3", - "yargs": "^17.4.0" + "yargs": "^17.4.1" }, "resolutions": { "kind-of": "^6.0.3" diff --git a/public/embed.js b/public/embed.js index d597fd33c..5607c24d5 100644 --- a/public/embed.js +++ b/public/embed.js @@ -1,6 +1,11 @@ +// @ts-check + (function() { 'use strict'; + /** + * @param {() => void} loaded + */ var ready = function(loaded) { if (['interactive', 'complete'].indexOf(document.readyState) !== -1) { loaded(); @@ -10,26 +15,43 @@ }; ready(function() { - var iframes = []; + /** @type {Map} */ + var iframes = new Map(); window.addEventListener('message', function(e) { var data = e.data || {}; - if (data.type !== 'setHeight' || !iframes[data.id] || window.location.origin !== e.origin || data.id.toString() === '__proto__') { + if (typeof data !== 'object' || data.type !== 'setHeight' || !iframes.has(data.id)) { return; } - iframes[data.id].height = data.height; + var iframe = iframes.get(data.id); + + if ('source' in e && iframe.contentWindow !== e.source) { + return; + } + + iframe.height = data.height; }); [].forEach.call(document.querySelectorAll('iframe.mastodon-embed'), function(iframe) { + // select unique id for each iframe + var id = 0, failCount = 0, idBuffer = new Uint32Array(1); + while (id === 0 || iframes.has(id)) { + id = crypto.getRandomValues(idBuffer)[0]; + failCount++; + if (failCount > 100) { + // give up and assign (easily guessable) unique number if getRandomValues is broken or no luck + id = -(iframes.size + 1); + break; + } + } + + iframes.set(id, iframe); + iframe.scrolling = 'no'; iframe.style.overflow = 'hidden'; - iframes.push(iframe); - - var id = iframes.length - 1; - iframe.onload = function() { iframe.contentWindow.postMessage({ type: 'setHeight', diff --git a/public/emoji/1f327_border.svg b/public/emoji/1f327_border.svg index 3298c8f87..76776b04a 100644 --- a/public/emoji/1f327_border.svg +++ b/public/emoji/1f327_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f328_border.svg b/public/emoji/1f328_border.svg index 254dc90de..1ec2748de 100644 --- a/public/emoji/1f328_border.svg +++ b/public/emoji/1f328_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f329_border.svg b/public/emoji/1f329_border.svg index 05c662ac4..ad0cef998 100644 --- a/public/emoji/1f329_border.svg +++ b/public/emoji/1f329_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f359_border.svg b/public/emoji/1f359_border.svg index 6541681d8..d915010a6 100644 --- a/public/emoji/1f359_border.svg +++ b/public/emoji/1f359_border.svg @@ -1,9 +1,9 @@ - - - + + + diff --git a/public/emoji/1f35a_border.svg b/public/emoji/1f35a_border.svg index d6621c590..90e4e652f 100644 --- a/public/emoji/1f35a_border.svg +++ b/public/emoji/1f35a_border.svg @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/public/emoji/1f365_border.svg b/public/emoji/1f365_border.svg index 278cebd43..5e25f2ff9 100644 --- a/public/emoji/1f365_border.svg +++ b/public/emoji/1f365_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f3d0_border.svg b/public/emoji/1f3d0_border.svg index c1804f2cb..f0127342a 100644 --- a/public/emoji/1f3d0_border.svg +++ b/public/emoji/1f3d0_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f3f3_border.svg b/public/emoji/1f3f3_border.svg index e7d03583b..e059cd378 100644 --- a/public/emoji/1f3f3_border.svg +++ b/public/emoji/1f3f3_border.svg @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/public/emoji/1f40f_border.svg b/public/emoji/1f40f_border.svg index fb4bbcfb3..72526503f 100644 --- a/public/emoji/1f40f_border.svg +++ b/public/emoji/1f40f_border.svg @@ -1,15 +1,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/public/emoji/1f410_border.svg b/public/emoji/1f410_border.svg index 7a36382b5..d1463386c 100644 --- a/public/emoji/1f410_border.svg +++ b/public/emoji/1f410_border.svg @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/public/emoji/1f411_border.svg b/public/emoji/1f411_border.svg index dc4ddeb08..8455c601e 100644 --- a/public/emoji/1f411_border.svg +++ b/public/emoji/1f411_border.svg @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/public/emoji/1f413_border.svg b/public/emoji/1f413_border.svg index 3391490df..bc9c69bba 100644 --- a/public/emoji/1f413_border.svg +++ b/public/emoji/1f413_border.svg @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/public/emoji/1f414_border.svg b/public/emoji/1f414_border.svg index ad54bd1b8..92d271691 100644 --- a/public/emoji/1f414_border.svg +++ b/public/emoji/1f414_border.svg @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + diff --git a/public/emoji/1f440_border.svg b/public/emoji/1f440_border.svg index f25c3ca40..2166dce75 100644 --- a/public/emoji/1f440_border.svg +++ b/public/emoji/1f440_border.svg @@ -1,16 +1,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/public/emoji/1f47b_border.svg b/public/emoji/1f47b_border.svg index 80ac01215..e317fd9f6 100644 --- a/public/emoji/1f47b_border.svg +++ b/public/emoji/1f47b_border.svg @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/public/emoji/1f47d_border.svg b/public/emoji/1f47d_border.svg index e1d4a54d7..4f346ea69 100644 --- a/public/emoji/1f47d_border.svg +++ b/public/emoji/1f47d_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f480_border.svg b/public/emoji/1f480_border.svg index 8546f7b00..6fa209458 100644 --- a/public/emoji/1f480_border.svg +++ b/public/emoji/1f480_border.svg @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/public/emoji/1f4a8_border.svg b/public/emoji/1f4a8_border.svg index c20a5cb3b..412c2f8a7 100644 --- a/public/emoji/1f4a8_border.svg +++ b/public/emoji/1f4a8_border.svg @@ -1,7 +1,7 @@ - + diff --git a/public/emoji/1f4ac_border.svg b/public/emoji/1f4ac_border.svg index 3d71232f9..76f6c0b26 100644 --- a/public/emoji/1f4ac_border.svg +++ b/public/emoji/1f4ac_border.svg @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/public/emoji/1f4ad_border.svg b/public/emoji/1f4ad_border.svg index c887a7126..6ef337056 100644 --- a/public/emoji/1f4ad_border.svg +++ b/public/emoji/1f4ad_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f4c3_border.svg b/public/emoji/1f4c3_border.svg index 9e7b56241..07225c89b 100644 --- a/public/emoji/1f4c3_border.svg +++ b/public/emoji/1f4c3_border.svg @@ -1,9 +1,9 @@ - - - + + + diff --git a/public/emoji/1f507_border.svg b/public/emoji/1f507_border.svg index cd02481bd..ba1e4148f 100644 --- a/public/emoji/1f507_border.svg +++ b/public/emoji/1f507_border.svg @@ -1,9 +1,9 @@ - - - + + + diff --git a/public/emoji/1f508_border.svg b/public/emoji/1f508_border.svg index c920d89dc..38ebc8785 100644 --- a/public/emoji/1f508_border.svg +++ b/public/emoji/1f508_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/1f509_border.svg b/public/emoji/1f509_border.svg index 6881edb30..7fc2e9a8c 100644 --- a/public/emoji/1f509_border.svg +++ b/public/emoji/1f509_border.svg @@ -1,9 +1,9 @@ - - - + + + diff --git a/public/emoji/1f50a_border.svg b/public/emoji/1f50a_border.svg index 549811b69..0605c4b2f 100644 --- a/public/emoji/1f50a_border.svg +++ b/public/emoji/1f50a_border.svg @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/public/emoji/1f54a_border.svg b/public/emoji/1f54a_border.svg index 895872f3e..ac27cedbd 100644 --- a/public/emoji/1f54a_border.svg +++ b/public/emoji/1f54a_border.svg @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/public/emoji/25ab_border.svg b/public/emoji/25ab_border.svg index b51e1a9cc..5ca5b6b60 100644 --- a/public/emoji/25ab_border.svg +++ b/public/emoji/25ab_border.svg @@ -1,7 +1,7 @@ - + diff --git a/public/emoji/25fb_border.svg b/public/emoji/25fb_border.svg index 24c48e17a..f9210fea8 100644 --- a/public/emoji/25fb_border.svg +++ b/public/emoji/25fb_border.svg @@ -1,7 +1,7 @@ - + diff --git a/public/emoji/25fd_border.svg b/public/emoji/25fd_border.svg index ec7278674..419076b94 100644 --- a/public/emoji/25fd_border.svg +++ b/public/emoji/25fd_border.svg @@ -1,7 +1,7 @@ - + diff --git a/public/emoji/2601_border.svg b/public/emoji/2601_border.svg index 6ab20d737..2c4857a0e 100644 --- a/public/emoji/2601_border.svg +++ b/public/emoji/2601_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/2620_border.svg b/public/emoji/2620_border.svg index 8878828be..d2b94874e 100644 --- a/public/emoji/2620_border.svg +++ b/public/emoji/2620_border.svg @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/public/emoji/26aa_border.svg b/public/emoji/26aa_border.svg index d2cac5cad..38126cc6a 100644 --- a/public/emoji/26aa_border.svg +++ b/public/emoji/26aa_border.svg @@ -1,7 +1,7 @@ - + diff --git a/public/emoji/26be_border.svg b/public/emoji/26be_border.svg index 25954deac..96894b081 100644 --- a/public/emoji/26be_border.svg +++ b/public/emoji/26be_border.svg @@ -1,9 +1,9 @@ - - - + + + diff --git a/public/emoji/26f8_border.svg b/public/emoji/26f8_border.svg index 0df7ff2ff..3579451ce 100644 --- a/public/emoji/26f8_border.svg +++ b/public/emoji/26f8_border.svg @@ -1,11 +1,11 @@ - - - - - + + + + + diff --git a/public/emoji/2754_border.svg b/public/emoji/2754_border.svg index 1d6c4ecda..c86ae128a 100644 --- a/public/emoji/2754_border.svg +++ b/public/emoji/2754_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/2755_border.svg b/public/emoji/2755_border.svg index 65ec57082..139c459ae 100644 --- a/public/emoji/2755_border.svg +++ b/public/emoji/2755_border.svg @@ -1,8 +1,8 @@ - - + + diff --git a/public/emoji/2b1c_border.svg b/public/emoji/2b1c_border.svg index c633cc3de..a8ad76188 100644 --- a/public/emoji/2b1c_border.svg +++ b/public/emoji/2b1c_border.svg @@ -1,7 +1,7 @@ - + diff --git a/spec/controllers/auth/sessions_controller_spec.rb b/spec/controllers/auth/sessions_controller_spec.rb index 64ec7b794..1b8fd0b7b 100644 --- a/spec/controllers/auth/sessions_controller_spec.rb +++ b/spec/controllers/auth/sessions_controller_spec.rb @@ -225,22 +225,6 @@ RSpec.describe Auth::SessionsController, type: :controller do end end - context 'using email and password after an unfinished log-in attempt with a sign-in token challenge' do - let!(:other_user) do - Fabricate(:user, email: 'z@y.com', password: 'abcdefgh', otp_required_for_login: false, current_sign_in_at: 1.month.ago) - end - - before do - post :create, params: { user: { email: other_user.email, password: other_user.password } } - post :create, params: { user: { email: user.email, password: user.password } } - end - - it 'renders two factor authentication page' do - expect(controller).to render_template("two_factor") - expect(controller).to render_template(partial: "_otp_authentication_form") - end - end - context 'using upcase email and password' do before do post :create, params: { user: { email: user.email.upcase, password: user.password } } @@ -266,21 +250,6 @@ RSpec.describe Auth::SessionsController, type: :controller do end end - context 'using a valid OTP, attempting to leverage previous half-login to bypass password auth' do - let!(:other_user) do - Fabricate(:user, email: 'z@y.com', password: 'abcdefgh', otp_required_for_login: false, current_sign_in_at: 1.month.ago) - end - - before do - post :create, params: { user: { email: other_user.email, password: other_user.password } } - post :create, params: { user: { email: user.email, otp_attempt: user.current_otp } }, session: { attempt_user_updated_at: user.updated_at.to_s } - end - - it "doesn't log the user in" do - expect(controller.current_user).to be_nil - end - end - context 'when the server has an decryption error' do before do allow_any_instance_of(User).to receive(:validate_and_consume_otp!).and_raise(OpenSSL::Cipher::CipherError) @@ -401,126 +370,6 @@ RSpec.describe Auth::SessionsController, type: :controller do end end end - - context 'when 2FA is disabled and IP is unfamiliar' do - let!(:user) { Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', current_sign_in_at: 3.weeks.ago) } - - before do - request.remote_ip = '10.10.10.10' - request.user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0' - - allow(UserMailer).to receive(:sign_in_token).and_return(double('email', deliver_later!: nil)) - end - - context 'using email and password' do - before do - post :create, params: { user: { email: user.email, password: user.password } } - end - - it 'renders sign in token authentication page' do - expect(controller).to render_template("sign_in_token") - end - - it 'generates sign in token' do - expect(user.reload.sign_in_token).to_not be_nil - end - - it 'sends sign in token e-mail' do - expect(UserMailer).to have_received(:sign_in_token) - end - end - - context 'using email and password after an unfinished log-in attempt to a 2FA-protected account' do - let!(:other_user) do - Fabricate(:user, email: 'z@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret(32)) - end - - before do - post :create, params: { user: { email: other_user.email, password: other_user.password } } - post :create, params: { user: { email: user.email, password: user.password } } - end - - it 'renders sign in token authentication page' do - expect(controller).to render_template("sign_in_token") - end - - it 'generates sign in token' do - expect(user.reload.sign_in_token).to_not be_nil - end - - it 'sends sign in token e-mail' do - expect(UserMailer).to have_received(:sign_in_token) - end - end - - context 'using email and password after an unfinished log-in attempt with a sign-in token challenge' do - let!(:other_user) do - Fabricate(:user, email: 'z@y.com', password: 'abcdefgh', otp_required_for_login: false, current_sign_in_at: 1.month.ago) - end - - before do - post :create, params: { user: { email: other_user.email, password: other_user.password } } - post :create, params: { user: { email: user.email, password: user.password } } - end - - it 'renders sign in token authentication page' do - expect(controller).to render_template("sign_in_token") - end - - it 'generates sign in token' do - expect(user.reload.sign_in_token).to_not be_nil - end - - it 'sends sign in token e-mail' do - expect(UserMailer).to have_received(:sign_in_token).with(user, any_args) - end - end - - context 'using a valid sign in token' do - before do - user.generate_sign_in_token && user.save - post :create, params: { user: { sign_in_token_attempt: user.sign_in_token } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } - end - - it 'redirects to home' do - expect(response).to redirect_to(root_path) - end - - it 'logs the user in' do - expect(controller.current_user).to eq user - end - end - - context 'using a valid sign in token, attempting to leverage previous half-login to bypass password auth' do - let!(:other_user) do - Fabricate(:user, email: 'z@y.com', password: 'abcdefgh', otp_required_for_login: false, current_sign_in_at: 1.month.ago) - end - - before do - user.generate_sign_in_token && user.save - post :create, params: { user: { email: other_user.email, password: other_user.password } } - post :create, params: { user: { email: user.email, sign_in_token_attempt: user.sign_in_token } }, session: { attempt_user_updated_at: user.updated_at.to_s } - end - - it "doesn't log the user in" do - expect(controller.current_user).to be_nil - end - end - - context 'using an invalid sign in token' do - before do - post :create, params: { user: { sign_in_token_attempt: 'wrongotp' } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } - end - - it 'shows a login error' do - expect(flash[:alert]).to match I18n.t('users.invalid_sign_in_token') - end - - it "doesn't log the user in" do - expect(controller.current_user).to be_nil - end - end - end end describe 'GET #webauthn_options' do diff --git a/spec/controllers/concerns/user_tracking_concern_spec.rb b/spec/controllers/concerns/user_tracking_concern_spec.rb index 1e5620221..b2548d5c0 100644 --- a/spec/controllers/concerns/user_tracking_concern_spec.rb +++ b/spec/controllers/concerns/user_tracking_concern_spec.rb @@ -65,22 +65,22 @@ describe ApplicationController, type: :controller do get :show expect_updated_sign_in_at(user) - expect(Redis.current.get("account:#{user.account_id}:regeneration")).to eq 'true' + expect(redis.get("account:#{user.account_id}:regeneration")).to eq 'true' expect(RegenerationWorker).to have_received(:perform_async) end it 'sets the regeneration marker to expire' do allow(RegenerationWorker).to receive(:perform_async) get :show - expect(Redis.current.ttl("account:#{user.account_id}:regeneration")).to be >= 0 + expect(redis.ttl("account:#{user.account_id}:regeneration")).to be >= 0 end it 'regenerates feed when sign in is older than two weeks' do get :show expect_updated_sign_in_at(user) - expect(Redis.current.zcard(FeedManager.instance.key(:home, user.account_id))).to eq 3 - expect(Redis.current.get("account:#{user.account_id}:regeneration")).to be_nil + expect(redis.zcard(FeedManager.instance.key(:home, user.account_id))).to eq 3 + expect(redis.get("account:#{user.account_id}:regeneration")).to be_nil end end diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index 3e9cbba92..738e644c5 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -29,6 +29,58 @@ RSpec.describe ActivityPub::Activity::Create do subject.perform end + context 'object has been edited' do + let(:object_json) do + { + id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, + type: 'Note', + content: 'Lorem ipsum', + published: '2022-01-22T15:00:00Z', + updated: '2022-01-22T16:00:00Z', + } + end + + it 'creates status' do + status = sender.statuses.first + + expect(status).to_not be_nil + expect(status.text).to eq 'Lorem ipsum' + end + + it 'marks status as edited' do + status = sender.statuses.first + + expect(status).to_not be_nil + expect(status.edited?).to eq true + end + end + + context 'object has update date equal to creation date' do + let(:object_json) do + { + id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, + type: 'Note', + content: 'Lorem ipsum', + published: '2022-01-22T15:00:00Z', + updated: '2022-01-22T15:00:00Z', + } + end + + it 'creates status' do + status = sender.statuses.first + + expect(status).to_not be_nil + expect(status.text).to eq 'Lorem ipsum' + end + + it 'does not mark status as edited' do + status = sender.statuses.first + + expect(status).to_not be_nil + expect(status.edited?).to eq false + end + end + context 'unknown object type' do let(:object_json) do { diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb index 2d1d276c5..c468fdeff 100644 --- a/spec/lib/activitypub/activity/move_spec.rb +++ b/spec/lib/activitypub/activity/move_spec.rb @@ -84,9 +84,9 @@ RSpec.describe ActivityPub::Activity::Move do context 'when a Move has been recently processed' do around do |example| - Redis.current.set("move_in_progress:#{old_account.id}", true, nx: true, ex: 7.days.seconds) + redis.set("move_in_progress:#{old_account.id}", true, nx: true, ex: 7.days.seconds) example.run - Redis.current.del("move_in_progress:#{old_account.id}") + redis.del("move_in_progress:#{old_account.id}") end it 'does not set moved account on old account' do diff --git a/spec/lib/advanced_text_formatter_spec.rb b/spec/lib/advanced_text_formatter_spec.rb index 4e859c93c..ea1a9570d 100644 --- a/spec/lib/advanced_text_formatter_spec.rb +++ b/spec/lib/advanced_text_formatter_spec.rb @@ -50,6 +50,14 @@ RSpec.describe AdvancedTextFormatter do end end + context 'given text with a local-domain mention' do + let(:text) { 'foo https://cb6e6126.ngrok.io/about/more' } + + it 'creates a link' do + is_expected.to include 'Hello world joinmastodon.org

', account: Fabricate(:account, domain: 'example.com')) } + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + updated: '2021-09-08T22:39:25Z', + content: '

Hello world joinmastodon.org

', + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.edited?).to be false + end + end + + context 'when the status has not been explicitly edited' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + content: 'Updated text', + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.reload.edited?).to be false + end + + it 'does not update the text' do + expect(status.reload.text).to eq 'Hello world' + end + end + + context 'when the status has not been explicitly edited and features a poll' do + let(:account) { Fabricate(:account, domain: 'example.com') } + let!(:expiration) { 10.days.from_now.utc } + let!(:status) do + Fabricate(:status, + text: 'Hello world', + account: account, + poll_attributes: { + options: %w(Foo Bar), + account: account, + multiple: false, + hide_totals: false, + expires_at: expiration + } + ) + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'https://example.com/foo', + type: 'Question', + content: 'Hello world', + endTime: expiration.iso8601, + oneOf: [ + poll_option_json('Foo', 4), + poll_option_json('Bar', 3), + ], + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.reload.edited?).to be false + end + + it 'does not update the text' do + expect(status.reload.text).to eq 'Hello world' + end + + it 'updates tallies' do + expect(status.poll.reload.cached_tallies).to eq [4, 3] + end + end + + context 'when the status changes a poll despite being not explicitly marked as updated' do + let(:account) { Fabricate(:account, domain: 'example.com') } + let!(:expiration) { 10.days.from_now.utc } + let!(:status) do + Fabricate(:status, + text: 'Hello world', + account: account, + poll_attributes: { + options: %w(Foo Bar), + account: account, + multiple: false, + hide_totals: false, + expires_at: expiration + } + ) + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'https://example.com/foo', + type: 'Question', + content: 'Hello world', + endTime: expiration.iso8601, + oneOf: [ + poll_option_json('Foo', 4), + poll_option_json('Bar', 3), + poll_option_json('Baz', 3), + ], + } + end + + before do + subject.call(status, json) + end + + it 'does not create any edits' do + expect(status.reload.edits).to be_empty + end + + it 'does not mark status as edited' do + expect(status.reload.edited?).to be false + end + + it 'does not update the text' do + expect(status.reload.text).to eq 'Hello world' + end + + it 'does not update tallies' do + expect(status.poll.reload.cached_tallies).to eq [0, 0] + end + end + + context 'when receiving an edit older than the latest processed' do + before do + status.snapshot!(at_time: status.created_at, rate_limit: false) + status.update!(text: 'Hello newer world', edited_at: Time.now.utc) + status.snapshot!(rate_limit: false) + end + + it 'does not create any edits' do + expect { subject.call(status, json) }.not_to change { status.reload.edits.pluck(&:id) } + end + + it 'does not update the text, spoiler_text or edited_at' do + expect { subject.call(status, json) }.not_to change { s = status.reload; [s.text, s.spoiler_text, s.edited_at] } + end + end + context 'with no changes at all' do let(:payload) do { diff --git a/spec/services/after_block_service_spec.rb b/spec/services/after_block_service_spec.rb index c09425d7c..337766d06 100644 --- a/spec/services/after_block_service_spec.rb +++ b/spec/services/after_block_service_spec.rb @@ -14,7 +14,7 @@ RSpec.describe AfterBlockService, type: :service do let(:home_timeline_key) { FeedManager.instance.key(:home, account.id) } before do - Redis.current.del(home_timeline_key) + redis.del(home_timeline_key) end it "clears account's statuses" do @@ -23,7 +23,7 @@ RSpec.describe AfterBlockService, type: :service do FeedManager.instance.push_to_home(account, other_account_reblog) expect { subject }.to change { - Redis.current.zrange(home_timeline_key, 0, -1) + redis.zrange(home_timeline_key, 0, -1) }.from([status.id.to_s, other_account_status.id.to_s, other_account_reblog.id.to_s]).to([other_account_status.id.to_s]) end end @@ -33,7 +33,7 @@ RSpec.describe AfterBlockService, type: :service do let(:list_timeline_key) { FeedManager.instance.key(:list, list.id) } before do - Redis.current.del(list_timeline_key) + redis.del(list_timeline_key) end it "clears account's statuses" do @@ -42,7 +42,7 @@ RSpec.describe AfterBlockService, type: :service do FeedManager.instance.push_to_list(list, other_account_reblog) expect { subject }.to change { - Redis.current.zrange(list_timeline_key, 0, -1) + redis.zrange(list_timeline_key, 0, -1) }.from([status.id.to_s, other_account_status.id.to_s, other_account_reblog.id.to_s]).to([other_account_status.id.to_s]) end end diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb index 8f38908cd..920edeb13 100644 --- a/spec/services/batched_remove_status_service_spec.rb +++ b/spec/services/batched_remove_status_service_spec.rb @@ -12,7 +12,7 @@ RSpec.describe BatchedRemoveStatusService, type: :service do let(:status2) { PostStatusService.new.call(alice, text: 'Another status') } before do - allow(Redis.current).to receive_messages(publish: nil) + allow(redis).to receive_messages(publish: nil) stub_request(:post, 'http://example.com/inbox').to_return(status: 200) @@ -40,11 +40,11 @@ RSpec.describe BatchedRemoveStatusService, type: :service do end it 'notifies streaming API of followers' do - expect(Redis.current).to have_received(:publish).with("timeline:#{jeff.id}", any_args).at_least(:once) + expect(redis).to have_received(:publish).with("timeline:#{jeff.id}", any_args).at_least(:once) end it 'notifies streaming API of public timeline' do - expect(Redis.current).to have_received(:publish).with('timeline:public', any_args).at_least(:once) + expect(redis).to have_received(:publish).with('timeline:public', any_args).at_least(:once) end it 'sends delete activity to followers' do diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb index aaf179ce5..59e15d230 100644 --- a/spec/services/fan_out_on_write_service_spec.rb +++ b/spec/services/fan_out_on_write_service_spec.rb @@ -18,7 +18,7 @@ RSpec.describe FanOutOnWriteService, type: :service do ProcessMentionsService.new.call(status) ProcessHashtagsService.new.call(status) - allow(Redis.current).to receive(:publish) + allow(redis).to receive(:publish) subject.call(status) end @@ -40,13 +40,13 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is broadcast to the hashtag stream' do - expect(Redis.current).to have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to have_received(:publish).with('timeline:hashtag:hoge:local', anything) + expect(redis).to have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to have_received(:publish).with('timeline:hashtag:hoge:local', anything) end it 'is broadcast to the public stream' do - expect(Redis.current).to have_received(:publish).with('timeline:public', anything) - expect(Redis.current).to have_received(:publish).with('timeline:public:local', anything) + expect(redis).to have_received(:publish).with('timeline:public', anything) + expect(redis).to have_received(:publish).with('timeline:public:local', anything) end end @@ -66,8 +66,8 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is not broadcast publicly' do - expect(Redis.current).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to_not have_received(:publish).with('timeline:public', anything) + expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to_not have_received(:publish).with('timeline:public', anything) end end @@ -84,8 +84,8 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is not broadcast publicly' do - expect(Redis.current).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to_not have_received(:publish).with('timeline:public', anything) + expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to_not have_received(:publish).with('timeline:public', anything) end end @@ -105,8 +105,8 @@ RSpec.describe FanOutOnWriteService, type: :service do end it 'is not broadcast publicly' do - expect(Redis.current).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) - expect(Redis.current).to_not have_received(:publish).with('timeline:public', anything) + expect(redis).to_not have_received(:publish).with('timeline:hashtag:hoge', anything) + expect(redis).to_not have_received(:publish).with('timeline:public', anything) end end end diff --git a/spec/services/mute_service_spec.rb b/spec/services/mute_service_spec.rb index bdec1c67b..57d8c41de 100644 --- a/spec/services/mute_service_spec.rb +++ b/spec/services/mute_service_spec.rb @@ -12,7 +12,7 @@ RSpec.describe MuteService, type: :service do let(:home_timeline_key) { FeedManager.instance.key(:home, account.id) } before do - Redis.current.del(home_timeline_key) + redis.del(home_timeline_key) end it "clears account's statuses" do @@ -20,7 +20,7 @@ RSpec.describe MuteService, type: :service do FeedManager.instance.push_to_home(account, other_account_status) expect { subject }.to change { - Redis.current.zrange(home_timeline_key, 0, -1) + redis.zrange(home_timeline_key, 0, -1) }.from([status.id.to_s, other_account_status.id.to_s]).to([other_account_status.id.to_s]) end end diff --git a/spec/services/precompute_feed_service_spec.rb b/spec/services/precompute_feed_service_spec.rb index 1f6b6ed88..86b93b5d2 100644 --- a/spec/services/precompute_feed_service_spec.rb +++ b/spec/services/precompute_feed_service_spec.rb @@ -13,7 +13,7 @@ RSpec.describe PrecomputeFeedService, type: :service do subject.call(account) - expect(Redis.current.zscore(FeedManager.instance.key(:home, account.id), status.id)).to be_within(0.1).of(status.id.to_f) + expect(redis.zscore(FeedManager.instance.key(:home, account.id), status.id)).to be_within(0.1).of(status.id.to_f) end it 'does not raise an error even if it could not find any status' do @@ -30,7 +30,7 @@ RSpec.describe PrecomputeFeedService, type: :service do subject.call(account) - expect(Redis.current.zscore(FeedManager.instance.key(:home, account.id), reblog.id)).to eq nil + expect(redis.zscore(FeedManager.instance.key(:home, account.id), reblog.id)).to eq nil end end end diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index 7b1e8885c..8c302e1d8 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -220,6 +220,8 @@ RSpec.describe ResolveAccountService, type: :service do return_values << described_class.new.call('foo@ap.example.com') rescue ActiveRecord::RecordNotUnique fail_occurred = true + ensure + RedisConfiguration.pool.checkin if Thread.current[:redis] end end end diff --git a/spec/services/resolve_url_service_spec.rb b/spec/services/resolve_url_service_spec.rb index a38b23590..1b639dea9 100644 --- a/spec/services/resolve_url_service_spec.rb +++ b/spec/services/resolve_url_service_spec.rb @@ -7,15 +7,29 @@ describe ResolveURLService, type: :service do describe '#call' do it 'returns nil when there is no resource url' do - url = 'http://example.com/missing-resource' + url = 'http://example.com/missing-resource' + known_account = Fabricate(:account, uri: url) service = double allow(FetchResourceService).to receive(:new).and_return service + allow(service).to receive(:response_code).and_return(404) allow(service).to receive(:call).with(url).and_return(nil) expect(subject.call(url)).to be_nil end + it 'returns known account on temporary error' do + url = 'http://example.com/missing-resource' + known_account = Fabricate(:account, uri: url) + service = double + + allow(FetchResourceService).to receive(:new).and_return service + allow(service).to receive(:response_code).and_return(500) + allow(service).to receive(:call).with(url).and_return(nil) + + expect(subject.call(url)).to eq known_account + end + context 'searching for a remote private status' do let(:account) { Fabricate(:account) } let(:poster) { Fabricate(:account, domain: 'example.com') } diff --git a/spec/validators/email_mx_validator_spec.rb b/spec/validators/email_mx_validator_spec.rb index af0eb98f5..4feedd0c7 100644 --- a/spec/validators/email_mx_validator_spec.rb +++ b/spec/validators/email_mx_validator_spec.rb @@ -56,66 +56,6 @@ describe EmailMxValidator do expect(user.errors).to have_received(:add) end - it 'adds an error if the A record is blacklisted' do - EmailDomainBlock.create!(domain: 'alternate-example.com', ips: ['1.2.3.4']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '1.2.3.4')]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - - it 'adds an error if the AAAA record is blacklisted' do - EmailDomainBlock.create!(domain: 'alternate-example.com', ips: ['fd00::1']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([double(address: 'fd00::1')]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - - it 'adds an error if the A record of the MX record is blacklisted' do - EmailDomainBlock.create!(domain: 'mail.other-domain.com', ips: ['2.3.4.5']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '2.3.4.5')]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - - it 'adds an error if the AAAA record of the MX record is blacklisted' do - EmailDomainBlock.create!(domain: 'mail.other-domain.com', ips: ['fd00::2']) - resolver = double - - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([double(address: 'fd00::2')]) - allow(resolver).to receive(:timeouts=).and_return(nil) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) - - subject.validate(user) - expect(user.errors).to have_received(:add) - end - it 'adds an error if the MX record is blacklisted' do EmailDomainBlock.create!(domain: 'mail.example.com') resolver = double diff --git a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb b/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb index 914eed829..82d794594 100644 --- a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb +++ b/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb @@ -7,17 +7,17 @@ describe Scheduler::FeedCleanupScheduler do let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) } it 'clears feeds of inactives' do - Redis.current.zadd(feed_key_for(inactive_user), 1, 1) - Redis.current.zadd(feed_key_for(active_user), 1, 1) - Redis.current.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) - Redis.current.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) + redis.zadd(feed_key_for(inactive_user), 1, 1) + redis.zadd(feed_key_for(active_user), 1, 1) + redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) + redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) subject.perform - expect(Redis.current.zcard(feed_key_for(inactive_user))).to eq 0 - expect(Redis.current.zcard(feed_key_for(active_user))).to eq 1 - expect(Redis.current.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false - expect(Redis.current.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false + expect(redis.zcard(feed_key_for(inactive_user))).to eq 0 + expect(redis.zcard(feed_key_for(active_user))).to eq 1 + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false end def feed_key_for(user, subtype = nil) diff --git a/streaming/index.js b/streaming/index.js index 780c4015d..e68f85c17 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -146,7 +146,7 @@ const startWorker = async (workerId) => { const app = express(); - app.set('trusted proxy', process.env.TRUSTED_PROXY_IP || 'loopback,uniquelocal'); + app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal'); const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL))); const server = http.createServer(app); diff --git a/yarn.lock b/yarn.lock index d913e470e..91d5c1a00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,45 +23,40 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" - integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.8", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" - integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.17.10", "@babel/core@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.7" - "@babel/helper-compilation-targets" "^7.17.7" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.8" - "@babel/parser" "^7.17.8" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.7.2": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" - integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== +"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" @@ -86,25 +81,25 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: - "@babel/compat-data" "^7.17.7" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6", "@babel/helper-create-class-features-plugin@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" @@ -117,6 +112,14 @@ "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" + "@babel/helper-define-polyfill-provider@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" @@ -168,6 +171,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -189,6 +200,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -242,13 +260,6 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-simple-access@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" @@ -295,13 +306,13 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" - integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== +"@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" + "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" "@babel/highlight@^7.10.4": @@ -322,10 +333,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.7.0": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" - integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10", "@babel/parser@^7.7.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -360,23 +371,24 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" - integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz#4f0444e896bee85d35cf714a006fc5418f87ff00" - integrity sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA== +"@babel/plugin-proposal-class-static-block@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" + integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== dependencies: "@babel/helper-create-class-features-plugin" "^7.17.6" "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz#67a1653be9c77ce5b6c318aa90c8287b87831619" + integrity sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.9" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" "@babel/plugin-syntax-decorators" "^7.17.0" charcodes "^0.2.0" @@ -428,12 +440,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" - integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== +"@babel/plugin-proposal-object-rest-spread@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.0" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" @@ -545,7 +557,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.16.7": +"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== @@ -666,10 +678,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" - integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== +"@babel/plugin-transform-destructuring@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -735,23 +747,23 @@ "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== +"@babel/plugin-transform-modules-commonjs@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== dependencies: - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" @@ -764,12 +776,12 @@ "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" + integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.0" "@babel/plugin-transform-new-target@^7.16.7": version "7.16.7" @@ -841,12 +853,12 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-regenerator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== dependencies: - regenerator-transform "^0.14.2" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" @@ -855,10 +867,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== +"@babel/plugin-transform-runtime@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" + integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -918,27 +930,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== +"@babel/preset-env@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" "@babel/plugin-proposal-async-generator-functions" "^7.16.8" "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" "@babel/plugin-proposal-dynamic-import" "^7.16.7" "@babel/plugin-proposal-export-namespace-from" "^7.16.7" "@babel/plugin-proposal-json-strings" "^7.16.7" "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.16.7" "@babel/plugin-proposal-private-methods" "^7.16.11" @@ -964,7 +976,7 @@ "@babel/plugin-transform-block-scoping" "^7.16.7" "@babel/plugin-transform-classes" "^7.16.7" "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" "@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-duplicate-keys" "^7.16.7" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" @@ -973,15 +985,15 @@ "@babel/plugin-transform-literals" "^7.16.7" "@babel/plugin-transform-member-expression-literals" "^7.16.7" "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" "@babel/plugin-transform-new-target" "^7.16.7" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.16.7" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" "@babel/plugin-transform-reserved-words" "^7.16.7" "@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-spread" "^7.16.7" @@ -991,11 +1003,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.10" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + core-js-compat "^3.22.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -1036,10 +1048,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" - integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -1052,26 +1064,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.17.10" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1081,44 +1093,62 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@emotion/cache@^11.1.3", "@emotion/cache@^11.4.0": - version "11.4.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.4.0.tgz#293fc9d9a7a38b9aad8e9337e5014366c3b09ac0" - integrity sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g== +"@emotion/babel-plugin@^11.7.1": + version "11.9.2" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz#723b6d394c89fb2ef782229d92ba95a740576e95" + integrity sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/runtime" "^7.13.10" + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.5" + "@emotion/serialize" "^1.0.2" + babel-plugin-macros "^2.6.1" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.0.13" + +"@emotion/cache@^11.4.0", "@emotion/cache@^11.7.1": + version "11.7.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" + integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== dependencies: "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.0.0" + "@emotion/sheet" "^1.1.0" "@emotion/utils" "^1.0.0" "@emotion/weak-memoize" "^0.2.5" - stylis "^4.0.3" + stylis "4.0.13" "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/memoize@^0.7.4": +"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== -"@emotion/react@^11.1.1": - version "11.1.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.1.4.tgz#ddee4247627ff7dd7d0c6ae52f1cfd6b420357d2" - integrity sha512-9gkhrW8UjV4IGRnEe4/aGPkUxoGS23aD9Vu6JCGfEDyBYL+nGkkRBoMFGAzCT9qFdyUvQp4UUtErbKWxq/JS4A== +"@emotion/react@^11.8.1": + version "11.9.0" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.9.0.tgz#b6d42b1db3bd7511e7a7c4151dc8bc82e14593b8" + integrity sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ== dependencies: - "@babel/runtime" "^7.7.2" - "@emotion/cache" "^11.1.3" - "@emotion/serialize" "^1.0.0" - "@emotion/sheet" "^1.0.1" - "@emotion/utils" "^1.0.0" + "@babel/runtime" "^7.13.10" + "@emotion/babel-plugin" "^11.7.1" + "@emotion/cache" "^11.7.1" + "@emotion/serialize" "^1.0.3" + "@emotion/utils" "^1.1.0" "@emotion/weak-memoize" "^0.2.5" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.0.tgz#1a61f4f037cf39995c97fc80ebe99abc7b191ca9" - integrity sha512-zt1gm4rhdo5Sry8QpCOpopIUIKU+mUSpV9WNmFILUraatm5dttNEaYzUWWSboSMUE6PtN2j1cAsuvcugfdI3mw== +"@emotion/serialize@^1.0.2", "@emotion/serialize@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.3.tgz#99e2060c26c6292469fb30db41f4690e1c8fea63" + integrity sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA== dependencies: "@emotion/hash" "^0.8.0" "@emotion/memoize" "^0.7.4" @@ -1126,10 +1156,10 @@ "@emotion/utils" "^1.0.0" csstype "^3.0.2" -"@emotion/sheet@^1.0.0", "@emotion/sheet@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.1.tgz#245f54abb02dfd82326e28689f34c27aa9b2a698" - integrity sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g== +"@emotion/sheet@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" + integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== "@emotion/unitless@^0.7.5": version "0.7.5" @@ -1141,6 +1171,11 @@ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af" integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA== +"@emotion/utils@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" + integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== + "@emotion/weak-memoize@^0.2.5": version "0.2.5" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" @@ -1213,163 +1248,184 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== +"@jest/console@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.0.2.tgz#d11e8b43ae431ae9b3112656848417ae4008fcad" + integrity sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^28.0.2" + jest-util "^28.0.2" slash "^3.0.0" -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== +"@jest/core@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.0.3.tgz#2b8223914ef6ae16ff740e65235ef8ef49c46d52" + integrity sha512-cCQW06vEZ+5r50SB06pOnSWsOBs7F+lswPYnKKfBz1ncLlj1sMqmvjgam8q40KhlZ8Ut4eNAL2Hvfx4BKIO2FA== dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/reporters" "^28.0.3" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" + jest-changed-files "^28.0.2" + jest-config "^28.0.3" + jest-haste-map "^28.0.2" + jest-message-util "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.0.3" + jest-resolve-dependencies "^28.0.3" + jest-runner "^28.0.3" + jest-runtime "^28.0.3" + jest-snapshot "^28.0.3" + jest-util "^28.0.2" + jest-validate "^28.0.2" + jest-watcher "^28.0.2" micromatch "^4.0.4" + pretty-format "^28.0.2" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== +"@jest/environment@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.0.2.tgz#a865949d876b2d364b979bbc0a46338ffd23de26" + integrity sha512-IvI7dEfqVEffDYlw9FQfVBt6kXt/OI38V7QUIur0ulOQgzpKYJDVvLzj4B1TVmHWTGW5tcnJdlZ3hqzV6/I9Qg== dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/fake-timers" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" - jest-mock "^27.5.1" + jest-mock "^28.0.2" -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== +"@jest/expect-utils@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.0.2.tgz#0a055868d225261eac82a12013e2e0735238774d" + integrity sha512-YryfH2zN5c7M8eLtn9oTBRj1sfD+X4cHNXJnTejqCveOS33wADEZUxJ7de5++lRvByNpRpfAnc8zTK7yrUJqgA== dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" + jest-get-type "^28.0.2" + +"@jest/expect@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.0.3.tgz#80e0233bee62586e1112f904d28b904dd1143ef2" + integrity sha512-VEzZr85bqNomgayQkR7hWG5HnbZYWYWagQriZsixhLmOzU6PCpMP61aeVhkCoRrg7ri5f7JDpeTPzDAajIwFHw== + dependencies: + expect "^28.0.2" + jest-snapshot "^28.0.3" + +"@jest/fake-timers@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.0.2.tgz#d36e62bc58f39d65ea6adac1ff7749e63aff05f3" + integrity sha512-R75yUv+WeybPa4ZVhX9C+8XN0TKjUoceUX+/QEaDVQGxZZOK50eD74cs7iMDTtpodh00d8iLlc9197vgF6oZjA== + dependencies: + "@jest/types" "^28.0.2" + "@sinonjs/fake-timers" "^9.1.1" "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^28.0.2" + jest-mock "^28.0.2" + jest-util "^28.0.2" -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== +"@jest/globals@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.0.3.tgz#70f68a06c863d1c9d14aea151c69b9690e3efeb4" + integrity sha512-q/zXYI6CKtTSIt1WuTHBYizJhH7K8h+xG5PE3C0oawLlPIvUMDYmpj0JX0XsJwPRLCsz/fYXHZVG46AaEhSPmw== dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/expect" "^28.0.3" + "@jest/types" "^28.0.2" -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== +"@jest/reporters@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.0.3.tgz#9996189e5552e37fcdffe0f41c07754f5d2ea854" + integrity sha512-xrbIc7J/xwo+D7AY3enAR9ZWYCmJ8XIkstTukTGpKDph0gLl/TJje9jl3dssvE4KJzYqMKiSrnE5Nt68I4fTEg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" + "@jridgewell/trace-mapping" "^0.3.7" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" + glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-util "^28.0.2" + jest-worker "^28.0.2" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + v8-to-istanbul "^9.0.0" -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== +"@jest/schemas@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" + integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== dependencies: + "@sinclair/typebox" "^0.23.3" + +"@jest/source-map@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" + integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" callsites "^3.0.0" graceful-fs "^4.2.9" - source-map "^0.6.0" -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== +"@jest/test-result@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.0.2.tgz#bc8e15a95347e3c2149572ae06a5a6fed939c522" + integrity sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA== dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/types" "^28.0.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== +"@jest/test-sequencer@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.0.2.tgz#7669b7d8ff2aa7a8221b11bb37cce552de81b1bb" + integrity sha512-zhnZ8ydkZQTPL7YucB86eOlD79zPy5EGSUKiR2Iv93RVEDU6OEP33kwDBg70ywOcxeJGDRhyo09q7TafNCBiIg== dependencies: - "@jest/test-result" "^27.5.1" + "@jest/test-result" "^28.0.2" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" + jest-haste-map "^28.0.2" + slash "^3.0.0" -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== +"@jest/transform@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.0.3.tgz#591fb5ebc1d84db5c5f21e1225c7406c35f5eb1e" + integrity sha512-+Y0ikI7SwoW/YbK8t9oKwC70h4X2Gd0OVuz5tctRvSV/EDQU00AAkoqevXgPSSFimUmp/sp7Yl8s/1bExDqOIg== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/types" "^28.0.2" + "@jridgewell/trace-mapping" "^0.3.7" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^28.0.2" + jest-regex-util "^28.0.2" + jest-util "^28.0.2" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.1" "@jest/types@^25.5.0": version "25.5.0" @@ -1381,7 +1437,7 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jest/types@^27.0.2", "@jest/types@^27.5.1": +"@jest/types@^27.0.2": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== @@ -1392,11 +1448,36 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jest/types@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.0.2.tgz#70b9538c1863fb060b2f438ca008b5563d00c5b4" + integrity sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A== + dependencies: + "@jest/schemas" "^28.0.2" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.4" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg== +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.10" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186" @@ -1410,40 +1491,13 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@node-redis/bloom@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" - integrity sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw== - -"@node-redis/client@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.4.tgz#fe185750df3bcc07524f63fe8dbc8d14d22d6cbb" - integrity sha512-IM/NRAqg7MvNC3bIRQipXGrEarunrdgvrbAzsd3ty93LSHi/M+ybQulOERQi8a3M+P5BL8HenwXjiIoKm6ml2g== +"@jridgewell/trace-mapping@^0.3.7": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: - cluster-key-slot "1.1.0" - generic-pool "3.8.2" - redis-parser "3.0.0" - yallist "4.0.0" - -"@node-redis/graph@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@node-redis/graph/-/graph-1.0.0.tgz#baf8eaac4a400f86ea04d65ec3d65715fd7951ab" - integrity sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g== - -"@node-redis/json@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.2.tgz#8ad2d0f026698dc1a4238cc3d1eb099a3bee5ab8" - integrity sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g== - -"@node-redis/search@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.3.tgz#7c3d026bf994caf82019fd0c3924cfc09f041a29" - integrity sha512-rsrzkGWI84di/uYtEctS/4qLusWt0DESx/psjfB0TFpORDhe7JfC0h8ary+eHulTksumor244bXLRSqQXbFJmw== - -"@node-redis/time-series@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69" - integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA== + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@npmcli/move-file@^1.0.1": version "1.0.1" @@ -1462,6 +1516,45 @@ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.5.tgz#bb1afddd0d771f00924f44b21634969e329532e1" integrity sha512-Ir4yd2fdDldWIghavPr874copVKf6OOoecKHZiFRlPtm38tFvhyxr+ywzNieXGwolF9JQe3D5GrM8ejkzUgh5Q== +"@redis/bloom@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.0.2.tgz#42b82ec399a92db05e29fffcdfd9235a5fc15cdf" + integrity sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw== + +"@redis/client@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.1.0.tgz#e52a85aee802796ceb14bf27daf9550f51f238b8" + integrity sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA== + dependencies: + cluster-key-slot "1.1.0" + generic-pool "3.8.2" + yallist "4.0.0" + +"@redis/graph@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.0.1.tgz#eabc58ba99cd70d0c907169c02b55497e4ec8a99" + integrity sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ== + +"@redis/json@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.3.tgz#a13fde1d22ebff0ae2805cd8e1e70522b08ea866" + integrity sha512-4X0Qv0BzD9Zlb0edkUoau5c1bInWSICqXAGrpwEltkncUwcxJIGEcVryZhLgb0p/3PkKaLIWkjhHRtLe9yiA7Q== + +"@redis/search@1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.0.6.tgz#53d7451c2783f011ebc48ec4c2891264e0b22f10" + integrity sha512-pP+ZQRis5P21SD6fjyCeLcQdps+LuTzp2wdUbzxEmNhleighDDTD5ck8+cYof+WLec4csZX7ks+BuoMw0RaZrA== + +"@redis/time-series@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.3.tgz#4cfca8e564228c0bddcdf4418cba60c20b224ac4" + integrity sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA== + +"@sinclair/typebox@^0.23.3": + version "0.23.5" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" + integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -1469,10 +1562,10 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz#1c1c9a91419f804e59ae8df316a07dd1c3a76b94" - integrity sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew== +"@sinonjs/fake-timers@^9.1.1": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" @@ -1490,10 +1583,10 @@ lz-string "^1.4.4" pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.16.3": - version "5.16.3" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.3.tgz#b76851a909586113c20486f1679ffb4d8ec27bfa" - integrity sha512-u5DfKj4wfSt6akfndfu1eG06jsdyA/IUrlX2n3pyq5UXgXMhXY+NJb8eNK/7pqPWAhCKsCGWDdDO0zKMKAYkEA== +"@testing-library/jest-dom@^5.16.4": + version "5.16.4" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" + integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" @@ -1505,26 +1598,26 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.4.tgz#09674b117e550af713db3f4ec4c0942aa8bbf2c0" - integrity sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA== +"@testing-library/react@^12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b" + integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^8.0.0" - "@types/react-dom" "*" + "@types/react-dom" "<18.0.0" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/aria-query@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.3": +"@types/babel__core@^7.1.12", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.3": version "7.1.18" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== @@ -1557,13 +1650,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/babel__traverse@^7.0.4": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== - dependencies: - "@babel/types" "^7.3.0" - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -1583,10 +1669,10 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" @@ -1633,6 +1719,15 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" +"@types/jsdom@^16.2.4": + version "16.2.14" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.14.tgz#26fe9da6a8870715b154bb84cd3b2e53433d8720" + integrity sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w== + dependencies: + "@types/node" "*" + "@types/parse5" "*" + "@types/tough-cookie" "*" + "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" @@ -1658,6 +1753,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/parse5@*": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + "@types/prettier@^2.1.5": version "2.2.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" @@ -1673,12 +1773,12 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== -"@types/react-dom@*": - version "17.0.11" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" - integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== +"@types/react-dom@<18.0.0": + version "17.0.15" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.15.tgz#f2c8efde11521a4b7991e076cb9c70ba3bb0d156" + integrity sha512-Tr9VU9DvNoHDWlmecmcsE5ZZiUkYx+nKBzum4Oxe1K0yJVyBlfbq7H3eXjxXqJczBKqPGq3EgfTru4MgKb9+Yw== dependencies: - "@types/react" "*" + "@types/react" "^17" "@types/react-redux@^7.1.20": version "7.1.20" @@ -1706,6 +1806,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^17": + version "17.0.44" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" + integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/scheduler@*": version "0.16.1" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" @@ -1728,6 +1837,11 @@ dependencies: "@types/jest" "*" +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -1747,6 +1861,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^17.0.8": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + dependencies: + "@types/yargs-parser" "*" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -1902,10 +2023,10 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +abab@^2.0.5, abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" @@ -1965,11 +2086,16 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.2.4: +acorn@^8.0.4: version "8.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88" integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== +acorn@^8.5.0: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -2289,9 +2415,9 @@ async-limiter@~1.0.0: integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" @@ -2352,24 +2478,23 @@ babel-eslint@^10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== +babel-jest@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.0.3.tgz#843dc170da5b9671d4054ada9fdcd28f85f92a6e" + integrity sha512-S0ADyYdcrt5fp9YldRYWCUHdk1BKt9AkvBkLWBoNAEV9NoWZPIj5+MYhPcGgTS65mfv3a+Ymf2UqgWoAVd41cA== dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/transform" "^28.0.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" + babel-preset-jest "^28.0.2" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.4.tgz#95f5023c791b2e9e2ca6f67b0984f39c82ff384b" - integrity sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A== +babel-loader@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" loader-utils "^2.0.0" @@ -2394,14 +2519,14 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== +babel-plugin-jest-hoist@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz#9307d03a633be6fc4b1a6bc5c3a87e22bd01dd3b" + integrity sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" babel-plugin-lodash@^3.3.4: @@ -2415,6 +2540,15 @@ babel-plugin-lodash@^3.3.4: lodash "^4.17.10" require-package-name "^2.0.1" +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + babel-plugin-macros@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -2494,12 +2628,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== +babel-preset-jest@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz#d8210fe4e46c1017e9fa13d7794b166e93aa9f89" + integrity sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ== dependencies: - babel-plugin-jest-hoist "^27.5.1" + babel-plugin-jest-hoist "^28.0.2" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.26.0: @@ -2590,21 +2724,23 @@ bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== -body-parser@1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== +body-parser@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" type-is "~1.6.18" + unpipe "1.0.0" bonjour@^3.5.0: version "3.5.0" @@ -2743,26 +2879,15 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.17.5: - version "4.17.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.5.tgz#c827bbe172a4c22b123f5e337533ceebadfdd559" - integrity sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA== +browserslist@^4.20.2, browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001271" - electron-to-chromium "^1.3.878" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -browserslist@^4.19.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== - dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" - escalade "^3.1.1" - node-releases "^2.0.1" + node-releases "^2.0.3" picocolors "^1.0.0" bser@2.1.1: @@ -2946,11 +3071,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001271, caniuse-lite@^1.0.30001286: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: version "1.0.30001310" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== +caniuse-lite@^1.0.30001332: + version "1.0.30001335" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" + integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== + chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -3204,7 +3334,7 @@ color-string@^1.5.2: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2: +color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -3305,7 +3435,7 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@^1.1.0: +console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -3334,15 +3464,22 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.5.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-concurrently@^1.0.0: version "1.0.5" @@ -3361,12 +3498,12 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.20.0, core-js-compat@^3.20.2: - version "3.20.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" - integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== +core-js-compat@^3.20.0, core-js-compat@^3.22.1: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" + integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.0.0: @@ -3399,6 +3536,17 @@ cosmiconfig@^5.0.0: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + cosmiconfig@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" @@ -3681,10 +3829,10 @@ csso@^4.0.2: dependencies: css-tree "1.0.0-alpha.39" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" @@ -3726,14 +3874,14 @@ damerau-levenshtein@^1.0.7: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +data-urls@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" @@ -3742,10 +3890,10 @@ debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -3756,15 +3904,22 @@ debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== +decimal.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== decode-uri-component@^0.2.0: version "0.2.0" @@ -3863,6 +4018,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3876,10 +4036,10 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-file@^1.0.0: version "1.0.0" @@ -3913,10 +4073,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff-sequences@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.0.2.tgz#40f8d4ffa081acbd8902ba35c798458d0ff1af41" + integrity sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ== diffie-hellman@^5.0.0: version "5.0.3" @@ -4012,12 +4172,12 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: - webidl-conversions "^5.0.0" + webidl-conversions "^7.0.0" domutils@^1.7.0: version "1.7.0" @@ -4069,15 +4229,10 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== -electron-to-chromium@^1.3.878: - version "1.3.886" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.886.tgz#ac039c4001b665b1dd0f0ed9c2e4da90ff3c9267" - integrity sha512-+vYdeBosI63VkCtNWnEVFjgNd/IZwvnsWkKyPtWAvrhA+XfByKoBJcbsMgudVU/bUcGAF9Xp3aXn96voWlc3oQ== - -electron-to-chromium@^1.4.17: - version "1.4.47" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.47.tgz#5d5535cdbca2b9264abee4d6ea121995e9554bbe" - integrity sha512-ZHc8i3/cgeCRK/vC7W2htAG6JqUmOUgDNn/f9yY9J8UjfLjwzwOVEt4MWmgJAdvmxyrsR5KIFA/6+kUHGY0eUA== +electron-to-chromium@^1.4.118: + version "1.4.129" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" + integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== elliptic@^6.5.3: version "6.5.4" @@ -4092,10 +4247,10 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== "emoji-mart@npm:emoji-mart-lazyload": version "3.0.1-j" @@ -4342,32 +4497,32 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" - integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== dependencies: debug "^3.2.7" find-up "^2.1.0" -eslint-plugin-import@~2.25.4: - version "2.25.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" - integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== +eslint-plugin-import@~2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: array-includes "^3.1.4" array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.2" + eslint-module-utils "^2.7.3" has "^1.0.3" - is-core-module "^2.8.0" + is-core-module "^2.8.1" is-glob "^4.0.3" - minimatch "^3.0.4" + minimatch "^3.1.2" object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.12.0" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" eslint-plugin-jsx-a11y@~6.5.1: version "6.5.1" @@ -4682,48 +4837,50 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== +expect@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.0.2.tgz#86f0d6fa971bc533faf68d4d103d00f343d6a4b3" + integrity sha512-X0qIuI/zKv98k34tM+uGeOgAC73lhs4vROF9MkPk94C1zujtwv4Cla8SxhWn0G1OwvG9gLLL7RjFBkwGVaZ83w== dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" + "@jest/expect-utils" "^28.0.2" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.0.2" + jest-message-util "^28.0.2" + jest-util "^28.0.2" -express@^4.17.1, express@^4.17.3: - version "4.17.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== +express@^4.17.1, express@^4.18.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.2" + body-parser "1.20.0" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.2" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.7" + qs "6.10.3" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" + send "0.18.0" + serve-static "1.15.0" setprototypeof "1.2.0" - statuses "~1.5.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -4861,17 +5018,17 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^2.1.0: @@ -4892,6 +5049,11 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -4970,10 +5132,10 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -5074,20 +5236,19 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" - integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: - ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" has-unicode "^2.0.1" - signal-exit "^3.0.0" + signal-exit "^3.0.7" string-width "^4.2.3" strip-ansi "^6.0.1" - wide-align "^1.1.2" + wide-align "^1.1.5" generate-function@^2.0.0: version "2.3.1" @@ -5473,12 +5634,12 @@ hsla-regex@^1.0.0: resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: - whatwg-encoding "^1.0.5" + whatwg-encoding "^2.0.0" html-entities@^1.3.1: version "1.3.1" @@ -5495,15 +5656,15 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" + statuses "2.0.1" toidentifier "1.0.1" http-errors@~1.6.2: @@ -5531,12 +5692,12 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: - "@tootallnate/once" "1" + "@tootallnate/once" "2" agent-base "6" debug "4" @@ -5565,9 +5726,9 @@ https-browserify@^1.0.0: integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" @@ -5584,6 +5745,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" @@ -5642,6 +5810,14 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -5919,14 +6095,7 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.2.0, is-core-module@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.1: +is-core-module@^2.2.0, is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -6176,11 +6345,6 @@ is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -6277,85 +6441,82 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== +jest-changed-files@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" + integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== dependencies: - "@jest/types" "^27.5.1" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== +jest-circus@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.0.3.tgz#45f77090b4b9fe5c1b84f72816868c9d4c0f57b1" + integrity sha512-HJ3rUCm3A3faSy7KVH5MFCncqJLtrjEFkTPn9UIcs4Kq77+TXqHsOaI+/k73aHe6DJQigLUXq9rCYj3MYFlbIw== dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/expect" "^28.0.3" + "@jest/test-result" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-each "^28.0.2" + jest-matcher-utils "^28.0.2" + jest-message-util "^28.0.2" + jest-runtime "^28.0.3" + jest-snapshot "^28.0.3" + jest-util "^28.0.2" + pretty-format "^28.0.2" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== +jest-cli@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.0.3.tgz#4a4e55078ec772e0ea2583dd4c4b38fb306dc556" + integrity sha512-NCPTEONCnhYGo1qzPP4OOcGF04YasM5GZSwQLI1HtEluxa3ct4U65IbZs6DSRt8XN1Rq0jhXwv02m5lHB28Uyg== dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/core" "^28.0.3" + "@jest/test-result" "^28.0.2" + "@jest/types" "^28.0.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-config "^28.0.3" + jest-util "^28.0.2" + jest-validate "^28.0.2" prompts "^2.0.1" - yargs "^16.2.0" + yargs "^17.3.1" -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== +jest-config@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.0.3.tgz#9c0556d60d692153a6bc8652974182c22db9244f" + integrity sha512-3gWOEHwGpNhyYOk9vnUMv94x15QcdjACm7A3lERaluwnyD6d1WZWe9RFCShgIXVOHzRfG1hWxsI2U0gKKSGgDQ== dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^28.0.2" + "@jest/types" "^28.0.2" + babel-jest "^28.0.3" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" + glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-circus "^28.0.3" + jest-environment-node "^28.0.2" + jest-get-type "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.0.3" + jest-runner "^28.0.3" + jest-util "^28.0.2" + jest-validate "^28.0.2" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^27.5.1" + pretty-format "^28.0.2" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6369,151 +6530,128 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== +jest-diff@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.0.2.tgz#a543c90082560cd6cb14c5f28c39e6d4618ad7a6" + integrity sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg== dependencies: chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + diff-sequences "^28.0.2" + jest-get-type "^28.0.2" + pretty-format "^28.0.2" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== +jest-docblock@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.0.2.tgz#3cab8abea53275c9d670cdca814fc89fba1298c2" + integrity sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg== dependencies: detect-newline "^3.0.0" -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== +jest-each@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.0.2.tgz#fcf6843e9afe5a3f2d0b1c02aab1f41889d92f1d" + integrity sha512-/W5Wc0b+ipR36kDaLngdVEJ/5UYPOITK7rW0djTlCCQdMuWpCFJweMW4TzAoJ6GiRrljPL8FwiyOSoSHKrda2w== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-get-type "^28.0.2" + jest-util "^28.0.2" + pretty-format "^28.0.2" -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== +jest-environment-jsdom@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.0.2.tgz#b923f861f4cd896d2ba1971255060e1f413e9a04" + integrity sha512-rQhgV9reB6Id7VPa5jEkKx80Ppa/I6C7vKTMnceBS+d/rt+aTfbxbK/P4HRLMLE8KKsETszPpzYtGgsa8xMg7g== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/fake-timers" "^28.0.2" + "@jest/types" "^28.0.2" + "@types/jsdom" "^16.2.4" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" + jest-mock "^28.0.2" + jest-util "^28.0.2" + jsdom "^19.0.0" -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== +jest-environment-node@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.0.2.tgz#bd58e192b8f36a37e52c52fac812bd24b360c0b9" + integrity sha512-o9u5UHZ+NCuIoa44KEF0Behhsz/p1wMm0WumsZfWR1k4IVoWSt3aN0BavSC5dd26VxSGQvkrCnJxxOzhhUEG3Q== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/fake-timers" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-mock "^28.0.2" + jest-util "^28.0.2" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== +jest-haste-map@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.0.2.tgz#0c768f43680013cfd2a4471a3ec76c47bfb9e7c6" + integrity sha512-EokdL7l5uk4TqWGawwrIt8w3tZNcbeiRxmKGEURf42pl+/rWJy3sCJlon5HBhJXZTW978jk6600BLQOI7i25Ig== dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" + "@jest/types" "^28.0.2" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-regex-util "^28.0.2" + jest-util "^28.0.2" + jest-worker "^28.0.2" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== +jest-leak-detector@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.0.2.tgz#cbde3d22d09bd690ececdc2ed01c608435328456" + integrity sha512-UGaSPYtxKXl/YKacq6juRAKmMp1z2os8NaU8PSC+xvNikmu3wF6QFrXrihMM4hXeMr9HuNotBrQZHmzDY8KIBQ== dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" + jest-get-type "^28.0.2" + pretty-format "^28.0.2" -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== +jest-matcher-utils@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz#eb461af204b6d0f05281e9228094f0ab7e9e8537" + integrity sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA== dependencies: chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-diff "^28.0.2" + jest-get-type "^28.0.2" + pretty-format "^28.0.2" -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== +jest-message-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.0.2.tgz#f3cf36be72be4c4c4058cb34bd6673996d26dee3" + integrity sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.5.1" + pretty-format "^28.0.2" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== +jest-mock@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.0.2.tgz#059b500b34c1dd76474ebcdeccc249fe4dd0249f" + integrity sha512-vfnJ4zXRB0i24jOTGtQJyl26JKsgBKtqRlCnsrORZbG06FToSSn33h2x/bmE8XxqxkLWdZBRo+/65l8Vi3nD+g== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6521,162 +6659,154 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== +jest-resolve-dependencies@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.3.tgz#76d8f59f7e76ba36d76a1677eeaaed24560da7e0" + integrity sha512-lCgHMm0/5p0qHemrOzm7kI6JDei28xJwIf7XOEcv1HeAVHnsON8B8jO/woqlU+/GcOXb58ymieYqhk3zjGWnvQ== dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" + jest-regex-util "^28.0.2" + jest-snapshot "^28.0.3" -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== +jest-resolve@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.0.3.tgz#63f8e6b53e40f265b3ca9116195221dd43e3d16d" + integrity sha512-lfgjd9JhEjpjIN3HLUfdysdK+A7ePQoYmd7WL9DUEWqdnngb1rF56eee6iDXJxl/3eSolpP43VD7VrhjL3NsoQ== dependencies: - "@jest/types" "^27.5.1" chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" + jest-haste-map "^28.0.2" jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-util "^28.0.2" + jest-validate "^28.0.2" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== +jest-runner@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.0.3.tgz#a8a409c685ad3081a44b149b2eb04bc4d47faaf9" + integrity sha512-4OsHMjBLtYUWCENucAQ4Za0jGfEbOFi/Fusv6dzUuaweqx8apb4+5p2LR2yvgF4StFulmxyC238tGLftfu+zBA== dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/environment" "^28.0.2" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" + emittery "^0.10.2" graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" + jest-docblock "^28.0.2" + jest-environment-node "^28.0.2" + jest-haste-map "^28.0.2" + jest-leak-detector "^28.0.2" + jest-message-util "^28.0.2" + jest-resolve "^28.0.3" + jest-runtime "^28.0.3" + jest-util "^28.0.2" + jest-watcher "^28.0.2" + jest-worker "^28.0.2" + source-map-support "0.5.13" throat "^6.0.1" -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== +jest-runtime@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.0.3.tgz#02346a34de0ac61d23bdb0e8c035ad973d7bb087" + integrity sha512-7FtPUmvbZEHLOdjsF6dyHg5Pe4E0DU+f3Vvv8BPzVR7mQA6nFR4clQYLAPyJGnsUvN8WRWn+b5a5SVwnj1WaGg== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/fake-timers" "^28.0.2" + "@jest/globals" "^28.0.3" + "@jest/source-map" "^28.0.2" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^28.0.2" + jest-message-util "^28.0.2" + jest-mock "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.0.3" + jest-snapshot "^28.0.3" + jest-util "^28.0.2" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== +jest-snapshot@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.0.3.tgz#9a768d0c617d070e87c1bd37240f22b344616154" + integrity sha512-nVzAAIlAbrMuvVUrS1YxmAeo1TfSsDDU+K5wv/Ow56MBp+L+Y71ksAbwRp3kGCgZAz4oOXcAMPAwtT9Yh1hlQQ== dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" + "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.5.1" + expect "^28.0.2" graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-diff "^28.0.2" + jest-get-type "^28.0.2" + jest-haste-map "^28.0.2" + jest-matcher-utils "^28.0.2" + jest-message-util "^28.0.2" + jest-util "^28.0.2" natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" + pretty-format "^28.0.2" + semver "^7.3.5" -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== +jest-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.0.2.tgz#8e22cdd6e0549e0a393055f0e2da7eacc334b143" + integrity sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== +jest-validate@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.0.2.tgz#58bb7e826c054a8bb3b54c05f73758d96cf6dbef" + integrity sha512-nr0UOvCTtxP0YPdsk01Gk7e7c0xIiEe2nncAe3pj0wBfUvAykTVrMrdeASlAJnlEQCBuwN/GF4hKoCzbkGNCNw== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.5.1" + jest-get-type "^28.0.2" leven "^3.1.0" - pretty-format "^27.5.1" + pretty-format "^28.0.2" -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== +jest-watcher@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.0.2.tgz#649fa24df531d4071be5784b6274d494d788c88b" + integrity sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q== dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/test-result" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.5.1" + emittery "^0.10.2" + jest-util "^28.0.2" string-length "^4.0.1" jest-worker@^26.5.0: @@ -6688,23 +6818,23 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.0.2.tgz#75f7e5126541289ba02e9c1a67e46349ddb8141d" + integrity sha512-pijNxfjxT0tGAx+8+OzZ+eayVPCwy/rsZFhebmC0F4YnXu1EHPEPxg7utL3m5uX3EaFH1/jwDxGa1EbjJCST2g== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== +jest@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.0.3.tgz#92a7d6ee097b61de4ba2db7f3ab723e81a99b32d" + integrity sha512-uS+T5J3w5xyzd1KSJCGKhCo8WTJXbNl86f5SW11wgssbandJOVLRKKUxmhdFfmKxhPeksl1hHZ0HaA8VBzp7xA== dependencies: - "@jest/core" "^27.5.1" + "@jest/core" "^28.0.3" import-local "^3.0.2" - jest-cli "^27.5.1" + jest-cli "^28.0.3" js-base64@^2.1.9: version "2.6.4" @@ -6731,23 +6861,23 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsdom@^16.6.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== +jsdom@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" + integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== dependencies: abab "^2.0.5" - acorn "^8.2.4" + acorn "^8.5.0" acorn-globals "^6.0.0" - cssom "^0.4.4" + cssom "^0.5.0" cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" + data-urls "^3.0.1" + decimal.js "^10.3.1" + domexception "^4.0.0" escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" @@ -6756,13 +6886,13 @@ jsdom@^16.6.0: symbol-tree "^3.2.4" tough-cookie "^4.0.0" w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + ws "^8.2.3" + xml-name-validator "^4.0.0" jsesc@^2.5.1: version "2.5.2" @@ -6823,12 +6953,10 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^3.0.0: version "3.0.1" @@ -7068,7 +7196,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0, lodash@^4.7.0, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0, lodash@~4.17.10: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7258,7 +7386,19 @@ mime-db@1.51.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== @@ -7340,6 +7480,11 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -7570,10 +7715,10 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== normalize-path@^2.1.1: version "2.1.1" @@ -7611,14 +7756,14 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" - integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== +npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" console-control-strings "^1.1.0" - gauge "^4.0.0" + gauge "^4.0.3" set-blocking "^2.0.0" nth-check@^1.0.2: @@ -7778,10 +7923,10 @@ offline-plugin@^5.0.7: minimatch "^3.0.3" slash "^1.0.0" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -8661,10 +8806,10 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prettier@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.1.tgz#d472797e0d7461605c1609808e27b80c0f9cfe17" - integrity sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A== +prettier@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" @@ -8686,14 +8831,15 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== +pretty-format@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.0.2.tgz#6a24d71cbb61a5e5794ba7513fe22101675481bc" + integrity sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw== dependencies: + "@jest/schemas" "^28.0.2" ansi-regex "^5.0.1" ansi-styles "^5.0.0" - react-is "^17.0.1" + react-is "^18.0.0" process-nextick-args@~2.0.0: version "2.0.1" @@ -8829,10 +8975,12 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.9.7: - version "6.9.7" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" querystring-es3@^0.2.0: version "0.2.1" @@ -8881,13 +9029,13 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" - http-errors "1.8.1" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -8971,6 +9119,11 @@ react-is@^17.0.1, react-is@^17.0.2: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -9021,10 +9174,10 @@ react-redux-loading-bar@^4.0.8: prop-types "^15.6.2" react-lifecycles-compat "^3.0.2" -react-redux@^7.2.6: - version "7.2.6" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" - integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== +react-redux@^7.2.8: + version "7.2.8" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de" + integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw== dependencies: "@babel/runtime" "^7.15.4" "@types/react-redux" "^7.1.20" @@ -9066,14 +9219,14 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-select@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.2.2.tgz#3d5edf0a60f1276fd5f29f9f90a305f0a25a5189" - integrity sha512-miGS2rT1XbFNjduMZT+V73xbJEeMzVkJOz727F6MeAr2hKE0uUSA8Ff7vD44H32x2PD3SRB6OXTY/L+fTV3z9w== +react-select@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.1.tgz#2cb651b71493e494c56f6b4ce40011669b34bd95" + integrity sha512-Y195MmhDoDAj/8gTDyYZU1Raf7tmZd81wxM6RkFko4pqJ4Xv0/ilqUMtSn+GYkwmSlTWeMlzh+e+t7PJgtuXPw== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" - "@emotion/react" "^11.1.1" + "@emotion/react" "^11.8.1" "@types/react-transition-group" "^4.4.0" memoize-one "^5.0.0" prop-types "^15.6.0" @@ -9227,29 +9380,17 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redis-errors@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= - -redis-parser@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= +redis@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.1.0.tgz#6e400e8edf219e39281afe95e66a3d5f7dcf7289" + integrity sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg== dependencies: - redis-errors "^1.0.0" - -redis@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.4.tgz#b567f82f59086df38433982f7f424b48e924ec7a" - integrity sha512-KaM1OAj/nGrSeybmmOWSMY0LXTGT6FVWgUZZrd2MYzXKJ+VGtqVaciGQeNMfZiQX+kDM8Ke4uttb54m2rm6V0A== - dependencies: - "@node-redis/bloom" "1.0.1" - "@node-redis/client" "1.0.4" - "@node-redis/graph" "1.0.0" - "@node-redis/json" "1.0.2" - "@node-redis/search" "1.0.3" - "@node-redis/time-series" "1.0.2" + "@redis/bloom" "1.0.2" + "@redis/client" "1.1.0" + "@redis/graph" "1.0.1" + "@redis/json" "1.0.3" + "@redis/search" "1.0.6" + "@redis/time-series" "1.0.3" redux-immutable@^4.0.0: version "4.0.0" @@ -9268,6 +9409,13 @@ redux@^4.0.0, redux@^4.1.2: dependencies: "@babel/runtime" "^7.9.2" +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -9280,6 +9428,11 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -9295,10 +9448,10 @@ regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" @@ -9343,11 +9496,28 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -9355,6 +9525,13 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + rellax@^1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.12.1.tgz#1b433ef7ac4aa3573449a33efab391c112f6b34d" @@ -9480,7 +9657,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0: +resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -9590,7 +9767,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -9626,10 +9803,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.49.9: - version "1.49.9" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9" - integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A== +sass@^1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" + integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9724,24 +9901,24 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: dependencies: lru-cache "^6.0.0" -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "1.8.1" + http-errors "2.0.0" mime "1.6.0" ms "2.1.3" - on-finished "~2.3.0" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@^2.1.2: version "2.1.2" @@ -9768,15 +9945,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.2" + send "0.18.0" set-blocking@^2.0.0: version "2.0.0" @@ -9871,6 +10048,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -10001,7 +10183,15 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -10019,7 +10209,7 @@ source-map@0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -10029,7 +10219,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@~0.7.2: +source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -10139,7 +10329,12 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -10193,7 +10388,16 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10210,15 +10414,6 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string.prototype.matchall@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" @@ -10356,10 +10551,10 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylis@^4.0.3: - version "4.0.6" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.6.tgz#0d8b97b6bc4748bea46f68602b6df27641b3c548" - integrity sha512-1igcUEmYFBEO14uQHAJhCUelTR5jPztfdVKrYxRnDa5D5Dn3w0NxXupJNPr/VV/yRfZYEAco8sTIRZzH3sRYKg== +stylis@4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" + integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== substring-trie@^1.0.2: version "1.0.2" @@ -10704,10 +10899,10 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" @@ -10721,14 +10916,14 @@ ts-essentials@^2.0.3: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== -tsconfig-paths@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" - integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" - minimist "^1.2.0" + minimist "^1.2.6" strip-bom "^3.0.0" tslib@^1.9.0: @@ -10803,13 +10998,6 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10830,6 +11018,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -10838,16 +11031,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -11032,14 +11243,14 @@ v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -v8-to-istanbul@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c" - integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA== +v8-to-istanbul@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" + integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw== dependencies: + "@jridgewell/trace-mapping" "^0.3.7" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" value-equal@^0.4.0: version "0.4.0" @@ -11073,12 +11284,12 @@ w3c-hr-time@^1.0.2: dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== dependencies: - xml-name-validator "^3.0.0" + xml-name-validator "^4.0.0" walker@^1.0.7: version "1.0.7" @@ -11131,15 +11342,10 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-assets-manifest@^4.0.6: version "4.0.6" @@ -11314,17 +11520,33 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: - iconv-lite "0.4.24" + iconv-lite "0.6.3" -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" + integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" whatwg-url@^5.0.0: version "5.0.0" @@ -11334,15 +11556,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.6.0.tgz#27c0205a4902084b872aecb97cf0f2a7a3011f4c" - integrity sha512-os0KkeeqUOl7ccdDT1qqUcS4KH4tcBTSKK5Nl5WKb2lyxInIZ/CpjkqKa1Ss12mjfdcRX9mHmPPs7/SxG1Hbdw== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -11378,12 +11591,12 @@ wicg-inert@^3.1.1: resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.1.tgz#b033fd4fbfb9e3fd709e5d84becbdf2e06e5c229" integrity sha512-PhBaNh8ur9Xm4Ggy4umelwNIP6pPP1bv3EaWaKqfb/QNme2rdLjm7wIInvV4WhxVHhzA4Spgw9qNSqWtB/ca2A== -wide-align@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" wildcard@^2.0.0: version "2.0.0" @@ -11425,15 +11638,13 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" + signal-exit "^3.0.7" write@^0.2.1: version "0.2.1" @@ -11449,20 +11660,20 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.3.1, ws@^7.4.5: +ws@^7.3.1: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== +ws@^8.2.3, ws@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" + integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xmlchars@^2.2.0: version "2.2.0" @@ -11494,7 +11705,7 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yaml@^1.10.0: +yaml@^1.10.0, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -11507,11 +11718,6 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: - version "20.2.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26" - integrity sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww== - yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" @@ -11533,23 +11739,10 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.4.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.0.tgz#9fc9efc96bd3aa2c1240446af28499f0e7593d00" - integrity sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA== +yargs@^17.3.1, yargs@^17.4.1: + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== dependencies: cliui "^7.0.2" escalade "^3.1.1"