diff --git a/.github/actions/setup-javascript/action.yml b/.github/actions/setup-javascript/action.yml index 00a5c46bd..07fd4d08d 100644 --- a/.github/actions/setup-javascript/action.yml +++ b/.github/actions/setup-javascript/action.yml @@ -9,7 +9,7 @@ runs: using: 'composite' steps: - name: Set up Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' diff --git a/Gemfile b/Gemfile index 74672ad06..e3fb39e16 100644 --- a/Gemfile +++ b/Gemfile @@ -9,6 +9,9 @@ gem 'sprockets', '~> 3.7.2' gem 'thor', '~> 1.2' gem 'rack', '~> 2.2.7' +# For why irb is in the Gemfile, see: https://ruby.social/@st0012/111444685161478182 +gem 'irb', '~> 1.8' + gem 'haml-rails', '~>2.0' gem 'pg', '~> 1.5' gem 'pghero' @@ -179,6 +182,9 @@ group :development do end group :development, :test do + # Interactive Debugging tools + gem 'debug', '~> 1.8' + # Profiling tools gem 'memory_profiler', require: false gem 'ruby-prof', require: false diff --git a/Gemfile.lock b/Gemfile.lock index beec8b39c..1c4f628f1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -130,21 +130,21 @@ GEM encryptor (~> 3.0.0) attr_required (1.0.1) awrence (1.2.1) - aws-eventstream (1.2.0) - aws-partitions (1.828.0) - aws-sdk-core (3.183.1) + aws-eventstream (1.3.0) + aws-partitions (1.855.0) + aws-sdk-core (3.188.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.71.0) - aws-sdk-core (~> 3, >= 3.177.0) + aws-sdk-kms (1.73.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.136.0) - aws-sdk-core (~> 3, >= 3.181.0) + aws-sdk-s3 (1.139.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.6) - aws-sigv4 (1.6.0) + aws-sigv4 (1.7.0) aws-eventstream (~> 1, >= 1.0.2) azure-storage-blob (2.0.3) azure-storage-common (~> 2.0) @@ -154,7 +154,7 @@ GEM faraday_middleware (~> 1.0, >= 1.0.0.rc1) net-http-persistent (~> 4.0) nokogiri (~> 1, >= 1.10.8) - base64 (0.1.1) + base64 (0.2.0) bcp47_spec (0.2.1) bcrypt (3.1.19) better_errors (2.10.1) @@ -220,6 +220,9 @@ GEM database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) date (3.3.4) + debug (1.8.0) + irb (>= 1.5.0) + reline (>= 0.3.1) debug_inspector (1.1.0) devise (4.9.3) bcrypt (~> 3.0) @@ -242,13 +245,13 @@ GEM docile (1.4.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - doorkeeper (5.6.6) + doorkeeper (5.6.7) railties (>= 5) dotenv (2.8.1) dotenv-rails (2.8.1) dotenv (= 2.8.1) railties (>= 3.2) - drb (2.1.1) + drb (2.2.0) ruby2_keywords ed25519 (1.3.0) elasticsearch (7.13.3) @@ -374,7 +377,7 @@ GEM terminal-table (>= 1.5.1) idn-ruby (0.1.5) io-console (0.6.0) - irb (1.8.3) + irb (1.9.1) rdoc reline (>= 0.3.8) jmespath (1.6.2) @@ -436,7 +439,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.21.4) + loofah (2.22.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -462,7 +465,7 @@ GEM msgpack (1.7.2) multi_json (1.15.0) multipart-post (2.3.0) - mutex_m (0.1.2) + mutex_m (0.2.0) net-http (0.4.0) uri net-http-persistent (4.0.2) @@ -478,7 +481,7 @@ GEM net-smtp (0.4.0) net-protocol nio4r (2.5.9) - nokogiri (1.15.4) + nokogiri (1.15.5) mini_portile2 (~> 2.8.2) racc (~> 1.4) oj (3.16.1) @@ -533,7 +536,7 @@ GEM private_address_check (0.5.0) psych (5.1.1.1) stringio - public_suffix (5.0.3) + public_suffix (5.0.4) puma (6.4.0) nio4r (~> 2.0) pundit (2.3.1) @@ -599,13 +602,13 @@ GEM thor (~> 1.0, >= 1.2.2) zeitwerk (~> 2.6) rainbow (3.1.1) - rake (13.0.6) + rake (13.1.0) rdf (3.3.1) bcp47_spec (~> 0.2) link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.6.1) rdf (~> 3.2) - rdoc (6.5.0) + rdoc (6.6.0) psych (>= 4.0.0) redcarpet (3.6.0) redis (4.8.1) @@ -614,7 +617,7 @@ GEM redlock (1.3.2) redis (>= 3.0.0, < 6.0) regexp_parser (2.8.2) - reline (0.3.9) + reline (0.4.0) io-console (~> 0.5) request_store (1.5.1) rack (>= 1.4) @@ -639,7 +642,7 @@ GEM rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-rails (6.0.3) + rspec-rails (6.1.0) actionpack (>= 6.1) activesupport (>= 6.1) railties (>= 6.1) @@ -673,10 +676,11 @@ GEM rubocop-performance (1.19.1) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) - rubocop-rails (2.22.1) + rubocop-rails (2.22.2) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) rubocop-rspec (2.25.0) rubocop (~> 1.40) rubocop-capybara (~> 2.17) @@ -756,7 +760,7 @@ GEM unicode-display_width (>= 1.1.1, < 3) terrapin (0.6.0) climate_control (>= 0.0.3, < 1.0) - test-prof (1.2.3) + test-prof (1.3.0) thor (1.3.0) tilt (2.3.0) timeout (0.4.1) @@ -850,6 +854,7 @@ DEPENDENCIES concurrent-ruby connection_pool database_cleaner-active_record + debug (~> 1.8) devise (~> 4.9) devise-two-factor (~> 4.1) devise_pam_authenticatable2 (~> 9.2) @@ -875,6 +880,7 @@ DEPENDENCIES httplog (~> 1.6.2) i18n-tasks (~> 1.0) idn-ruby + irb (~> 1.8) json-ld json-ld-preloaded (~> 3.2) json-schema (~> 4.0) diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index 5712dea88..e53b22dca 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -32,7 +32,7 @@ module Admin private def batched_ordered_status_edits - @status.edits.reorder(nil).includes(:account, status: [:account]).find_each(order: :asc) + @status.edits.includes(:account, status: [:account]).find_each(order: :asc) end helper_method :batched_ordered_status_edits diff --git a/app/controllers/api/v1/accounts/familiar_followers_controller.rb b/app/controllers/api/v1/accounts/familiar_followers_controller.rb index b0bd8018a..a49eb2eb2 100644 --- a/app/controllers/api/v1/accounts/familiar_followers_controller.rb +++ b/app/controllers/api/v1/accounts/familiar_followers_controller.rb @@ -12,7 +12,7 @@ class Api::V1::Accounts::FamiliarFollowersController < Api::BaseController private def set_accounts - @accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections').index_by(&:id).values_at(*account_ids).compact + @accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections') end def familiar_followers diff --git a/app/controllers/api/v1/accounts/relationships_controller.rb b/app/controllers/api/v1/accounts/relationships_controller.rb index 320084efb..e5ae5b007 100644 --- a/app/controllers/api/v1/accounts/relationships_controller.rb +++ b/app/controllers/api/v1/accounts/relationships_controller.rb @@ -5,11 +5,8 @@ class Api::V1::Accounts::RelationshipsController < Api::BaseController before_action :require_user! def index - scope = Account.where(id: account_ids).select('id') - scope.merge!(Account.without_suspended) unless truthy_param?(:with_suspended) - # .where doesn't guarantee that our results are in the same order - # we requested them, so return the "right" order to the requestor. - @accounts = scope.index_by(&:id).values_at(*account_ids).compact + @accounts = Account.where(id: account_ids).select('id') + @accounts.merge!(Account.without_suspended) unless truthy_param?(:with_suspended) render json: @accounts, each_serializer: REST::RelationshipSerializer, relationships: relationships end diff --git a/app/controllers/api/v1/instances/activity_controller.rb b/app/controllers/api/v1/instances/activity_controller.rb index 4c17bd79c..06e4fd8b8 100644 --- a/app/controllers/api/v1/instances/activity_controller.rb +++ b/app/controllers/api/v1/instances/activity_controller.rb @@ -3,6 +3,8 @@ class Api::V1::Instances::ActivityController < Api::V1::Instances::BaseController before_action :require_enabled_api! + WEEKS_OF_ACTIVITY = 12 + def show cache_even_if_authenticated! render_with_cache json: :activity, expires_in: 1.day @@ -11,23 +13,40 @@ class Api::V1::Instances::ActivityController < Api::V1::Instances::BaseControlle private def activity - statuses_tracker = ActivityTracker.new('activity:statuses:local', :basic) - logins_tracker = ActivityTracker.new('activity:logins', :unique) - registrations_tracker = ActivityTracker.new('activity:accounts:local', :basic) - - (0...12).map do |i| - start_of_week = i.weeks.ago - end_of_week = start_of_week + 6.days - - { - week: start_of_week.to_i.to_s, - statuses: statuses_tracker.sum(start_of_week, end_of_week).to_s, - logins: logins_tracker.sum(start_of_week, end_of_week).to_s, - registrations: registrations_tracker.sum(start_of_week, end_of_week).to_s, - } + activity_weeks.map do |weeks_ago| + activity_json(*week_edge_days(weeks_ago)) end end + def activity_json(start_of_week, end_of_week) + { + week: start_of_week.to_i.to_s, + statuses: statuses_tracker.sum(start_of_week, end_of_week).to_s, + logins: logins_tracker.sum(start_of_week, end_of_week).to_s, + registrations: registrations_tracker.sum(start_of_week, end_of_week).to_s, + } + end + + def activity_weeks + 0...WEEKS_OF_ACTIVITY + end + + def week_edge_days(num) + [num.weeks.ago, num.weeks.ago + 6.days] + end + + def statuses_tracker + ActivityTracker.new('activity:statuses:local', :basic) + end + + def logins_tracker + ActivityTracker.new('activity:logins', :unique) + end + + def registrations_tracker + ActivityTracker.new('activity:accounts:local', :basic) + end + def require_enabled_api! head 404 unless Setting.activity_api_enabled && !limited_federation_mode? end diff --git a/app/controllers/api/v1/instances/domain_blocks_controller.rb b/app/controllers/api/v1/instances/domain_blocks_controller.rb index 8fb90305a..7ec94312f 100644 --- a/app/controllers/api/v1/instances/domain_blocks_controller.rb +++ b/app/controllers/api/v1/instances/domain_blocks_controller.rb @@ -19,7 +19,19 @@ class Api::V1::Instances::DomainBlocksController < Api::V1::Instances::BaseContr private def require_enabled_api! - head 404 unless Setting.show_domain_blocks == 'all' || (Setting.show_domain_blocks == 'users' && user_signed_in?) + head 404 unless api_enabled? + end + + def api_enabled? + show_domain_blocks_for_all? || show_domain_blocks_to_user? + end + + def show_domain_blocks_for_all? + Setting.show_domain_blocks == 'all' + end + + def show_domain_blocks_to_user? + Setting.show_domain_blocks == 'users' && user_signed_in? end def set_domain_blocks diff --git a/app/controllers/api/v1/statuses/histories_controller.rb b/app/controllers/api/v1/statuses/histories_controller.rb index dcb21ef04..e381ea2c6 100644 --- a/app/controllers/api/v1/statuses/histories_controller.rb +++ b/app/controllers/api/v1/statuses/histories_controller.rb @@ -11,6 +11,6 @@ class Api::V1::Statuses::HistoriesController < Api::V1::Statuses::BaseController private def status_edits - @status.edits.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)] + @status.edits.ordered.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)] end end diff --git a/app/controllers/api/v2/media_controller.rb b/app/controllers/api/v2/media_controller.rb index 72bc69442..36c15165d 100644 --- a/app/controllers/api/v2/media_controller.rb +++ b/app/controllers/api/v2/media_controller.rb @@ -2,12 +2,22 @@ class Api::V2::MediaController < Api::V1::MediaController def create - @media_attachment = current_account.media_attachments.create!({ delay_processing: true }.merge(media_attachment_params)) - render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: @media_attachment.not_processed? ? 202 : 200 + @media_attachment = current_account.media_attachments.create!(media_and_delay_params) + render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_from_media_processing rescue Paperclip::Errors::NotIdentifiedByImageMagickError render json: file_type_error, status: 422 rescue Paperclip::Error => e Rails.logger.error "#{e.class}: #{e.message}" render json: processing_error, status: 500 end + + private + + def media_and_delay_params + { delay_processing: true }.merge(media_attachment_params) + end + + def status_from_media_processing + @media_attachment.not_processed? ? 202 : 200 + end end diff --git a/app/javascript/mastodon/features/compose/components/search.jsx b/app/javascript/mastodon/features/compose/components/search.jsx index caae965a6..5d55330dc 100644 --- a/app/javascript/mastodon/features/compose/components/search.jsx +++ b/app/javascript/mastodon/features/compose/components/search.jsx @@ -275,6 +275,7 @@ class Search extends PureComponent { } _calculateOptions (value) { + const { signedIn } = this.context.identity; const trimmedValue = value.trim(); const options = []; @@ -299,7 +300,7 @@ class Search extends PureComponent { const couldBeStatusSearch = searchEnabled; - if (couldBeStatusSearch) { + if (couldBeStatusSearch && signedIn) { options.push({ key: 'status-search', label: {trimmedValue} }} />, action: this.handleStatusSearch }); } @@ -376,7 +377,7 @@ class Search extends PureComponent {

- {searchEnabled ? ( + {searchEnabled && signedIn ? (
{this.defaultOptions.map(({ key, label, action }, i) => (
) : (
- + {searchEnabled ? ( + + ) : ( + + )}
)} diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 0d49d9a19..98f622c29 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -13,27 +13,38 @@ "about.rules": "Normes del sirvidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Amestar o quitar de les llistes", + "account.badges.bot": "Automatizáu", "account.badges.group": "Grupu", "account.block": "Bloquiar a @{name}", "account.block_domain": "Bloquiar el dominiu {domain}", + "account.block_short": "Bloquiar", "account.blocked": "Perfil bloquiáu", "account.browse_more_on_origin_server": "Restolar más nel perfil orixinal", + "account.cancel_follow_request": "Atayar siguimientu", + "account.copy": "Copiar I'enllaz al perfil", "account.direct": "Mentar a @{name} per privao", "account.disable_notifications": "Dexar d'avisame cuando @{name} espublice artículos", "account.domain_blocked": "Dominiu bloquiáu", "account.edit_profile": "Editar el perfil", "account.enable_notifications": "Avisame cuando @{name} espublice artículos", "account.endorse": "Destacar nel perfil", + "account.featured_tags.last_status_at": "Últimu estáu en {date}", + "account.featured_tags.last_status_never": "Sin estaos", "account.featured_tags.title": "Etiquetes destacaes de: {name}", "account.follow": "Siguir", "account.followers": "Siguidores", "account.followers.empty": "Naide sigue a esti perfil.", + "account.followers_counter": "{count, plural, one {{counter} Siguíu} other {{counter} Siguíos}}", + "account.following": "Siguiendo", "account.following_counter": "{count, plural,one {Sigue a {counter}} other {Sigue a {counter}}}", "account.follows.empty": "Esti perfil nun sigue a naide.", "account.follows_you": "Síguete", + "account.go_to_profile": "Dir al perfil", "account.hide_reblogs": "Anubrir los artículos compartíos de @{name}", "account.in_memoriam": "N'alcordanza.", "account.joined_short": "Data de xunión", + "account.languages": "Camudar llingües suscrites", + "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.media": "Multimedia", "account.mention": "Mentar a @{name}", "account.moved_to": "{name} indicó qu'agora la so cuenta nueva ye:", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 59b1ca50b..06a329a8b 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.", "onboarding.follows.lead": "Вы самі ствараеце свой хатні канал. Чым больш людзей вы падпішаце, тым больш актыўна і цікавей гэта будзе. Гэтыя профілі могуць стаць добрай адпраўной кропкай — вы заўсёды можаце адмяніць падпіску на іх пазней!", "onboarding.follows.title": "Папулярна на Mastodon", - "onboarding.profile.discoverable": "Уключыць профіль і допісы ў алгарытмы рэкамендацый", + "onboarding.profile.discoverable": "Зрабіць мой профіль бачным", + "onboarding.profile.discoverable_hint": "Калі вы звяртаецеся да адкрытасці на Mastodon, вашы паведамленні могуць з'яўляцца ў выніках пошуку і тэндэнцый, а ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.", "onboarding.profile.display_name": "Бачнае імя", "onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…", - "onboarding.profile.indexable": "Індэксаваць публічныя допісы ў пошукавых сістэмах", "onboarding.profile.lead": "Вы заўсёды можаце выканаць гэта пазней у Наладах, дзе даступна яшчэ больш параметраў.", "onboarding.profile.note": "Біяграфія", "onboarding.profile.note_hint": "Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Не ў стужках", "privacy_policy.last_updated": "Адноўлена {date}", "privacy_policy.title": "Палітыка канфідэнцыйнасці", + "recommended": "Рэкамендуем", "refresh": "Абнавiць", "regeneration_indicator.label": "Загрузка…", "regeneration_indicator.sublabel": "Пачакайце, рыхтуем вашу стужку!", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index b30dfecaa..ccbd1042d 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -21,6 +21,7 @@ "account.blocked": "Блокирани", "account.browse_more_on_origin_server": "Разглеждане на още в оригиналния профил", "account.cancel_follow_request": "Оттегляне на заявката за последване", + "account.copy": "Копиране на връзка към профила", "account.direct": "Частно споменаване на @{name}", "account.disable_notifications": "Сприране на известия при публикуване от @{name}", "account.domain_blocked": "Блокиран домейн", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Маркиране като прочетено", "conversation.open": "Преглед на разговора", "conversation.with": "С {names}", + "copy_icon_button.copied": "Копиранo в буферната памет", "copypaste.copied": "Копирано", "copypaste.copy_to_clipboard": "Копиране в буферната памет", "directory.federated": "От позната федивселена", @@ -479,10 +481,10 @@ "onboarding.follows.empty": "За съжаление, в момента не могат да се показват резултати. Може да опитате да употребявате търсене или да прегледате страницата за изследване, за да намерите страница за последване, или да опитате пак по-късно.", "onboarding.follows.lead": "Може да бъдете куратор на началния си инфоканал. Последвайки повече хора, по-деен и по-интересен ще става. Тези профили може да са добра начална точка, от която винаги по-късно да спрете да следвате!", "onboarding.follows.title": "Популярно в Mastodon", - "onboarding.profile.discoverable": "Включване на профила и публикации в алгоритмите за откриване", + "onboarding.profile.discoverable": "Правене на моя профил откриваем", + "onboarding.profile.discoverable_hint": "Включвайки откриваемостта в Mastodon, вашите публикации може да се появят при резултатите от търсене и изгряващи неща, и вашия профил може да бъде предложен на хора с подобни интереси като вашите.", "onboarding.profile.display_name": "Името на показ", "onboarding.profile.display_name_hint": "Вашето пълно име или псевдоним…", - "onboarding.profile.indexable": "Включване на обществени публикации в резултатите от търсене", "onboarding.profile.lead": "Винаги може да завършите това по-късно в настройките, където дори има повече възможности за настройване.", "onboarding.profile.note": "Биогр.", "onboarding.profile.note_hint": "Може да @споменавате други хора или #хаштагове…", @@ -533,6 +535,7 @@ "privacy.unlisted.short": "Несписъчно", "privacy_policy.last_updated": "Последно осъвременяване на {date}", "privacy_policy.title": "Политика за поверителност", + "recommended": "Препоръчано", "refresh": "Опресняване", "regeneration_indicator.label": "Зареждане…", "regeneration_indicator.sublabel": "Подготовка на началния ви инфоканал!", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 926343f67..9ea2ab33c 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -21,6 +21,7 @@ "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Explora'n més al perfil original", "account.cancel_follow_request": "Cancel·la el seguiment", + "account.copy": "Copia l'enllaç al perfil", "account.direct": "Menciona privadament @{name}", "account.disable_notifications": "Deixa de notificar-me els tuts de @{name}", "account.domain_blocked": "Domini blocat", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Marca com a llegida", "conversation.open": "Mostra la conversa", "conversation.with": "Amb {names}", + "copy_icon_button.copied": "Copiat al porta-retalls", "copypaste.copied": "Copiat", "copypaste.copy_to_clipboard": "Copia al porta-retalls", "directory.federated": "Del fedivers conegut", @@ -222,7 +224,7 @@ "emoji_button.search_results": "Resultats de la cerca", "emoji_button.symbols": "Símbols", "emoji_button.travel": "Viatges i llocs", - "empty_column.account_hides_collections": "Aquest usuari ha elegit no mostrar aquesta informació", + "empty_column.account_hides_collections": "Aquest usuari ha decidit no mostrar aquesta informació", "empty_column.account_suspended": "Compte suspès", "empty_column.account_timeline": "No hi ha tuts aquí!", "empty_column.account_unavailable": "Perfil no disponible", @@ -390,6 +392,7 @@ "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": "Es carrega…", "media_gallery.toggle_visible": "{number, plural, one {Amaga la imatge} other {Amaga les imatges}}", "moved_to_account_banner.text": "El teu compte {disabledAccount} està desactivat perquè l'has mogut a {movedToAccount}.", "mute_modal.duration": "Durada", @@ -478,6 +481,16 @@ "onboarding.follows.empty": "Malauradament, cap resultat pot ser mostrat ara mateix. Pots provar de fer servir la cerca o visitar la pàgina Explora per a trobar gent a qui seguir o provar-ho de nou més tard.", "onboarding.follows.lead": "La teva línia de temps inici només està a les teves mans. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant de seguir-los!:", "onboarding.follows.title": "Personalitza la pantalla d'inci", + "onboarding.profile.discoverable": "Fes el meu perfil descobrible", + "onboarding.profile.display_name": "Nom que es mostrarà", + "onboarding.profile.display_name_hint": "El teu nom complet o el teu malnom…", + "onboarding.profile.lead": "Sempre ho pots completar més endavant a la configuració, on hi ha encara més opcions disponibles.", + "onboarding.profile.note": "Biografia", + "onboarding.profile.note_hint": "Pots @mencionar altra gent o #etiquetes…", + "onboarding.profile.save_and_continue": "Desa i continua", + "onboarding.profile.title": "Configuració del perfil", + "onboarding.profile.upload_avatar": "Importa una foto de perfil", + "onboarding.profile.upload_header": "Importa una capçalera de perfil", "onboarding.share.lead": "Permet que la gent sàpiga com trobar-te a Mastodon!", "onboarding.share.message": "Sóc {username} a #Mastodon! Vine i segueix-me a {url}", "onboarding.share.next_steps": "Possibles passes següents:", @@ -521,6 +534,7 @@ "privacy.unlisted.short": "No llistada", "privacy_policy.last_updated": "Darrera actualització {date}", "privacy_policy.title": "Política de Privacitat", + "recommended": "Recomanat", "refresh": "Actualitza", "regeneration_indicator.label": "Es carrega…", "regeneration_indicator.sublabel": "Es prepara la teva línia de temps d'Inici!", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 11d4de440..4ecf48735 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -480,11 +480,14 @@ "onboarding.follows.empty": "Yn anffodus, nid oes modd dangos unrhyw ganlyniadau ar hyn o bryd. Gallwch geisio defnyddio chwilio neu bori'r dudalen archwilio i ddod o hyd i bobl i'w dilyn, neu ceisio eto yn nes ymlaen.", "onboarding.follows.lead": "Rydych chi'n curadu eich ffrwd gartref eich hun. Po fwyaf o bobl y byddwch chi'n eu dilyn, y mwyaf egnïol a diddorol fydd hi. Gall y proffiliau hyn fod yn fan cychwyn da - gallwch chi bob amser eu dad-ddilyn yn nes ymlaen:", "onboarding.follows.title": "Yn boblogaidd ar Mastodon", + "onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod", + "onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a thueddiadau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.", "onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwyl…", "onboarding.profile.note": "Bywgraffiad", "onboarding.profile.note_hint": "Gallwch @grybwyll pobl eraill neu #hashnodau…", "onboarding.profile.save_and_continue": "Cadw a pharhau", "onboarding.profile.title": "Gosodiad proffil", + "onboarding.profile.upload_avatar": "Llwytho llun proffil", "onboarding.share.lead": "Cofiwch ddweud wrth bobl sut y gallan nhw ddod o hyd i chi ar Mastodon!", "onboarding.share.message": "Fi yw {username} ar #Mastodon! Dewch i'm dilyn i yn {url}", "onboarding.share.next_steps": "Camau nesaf posib:", @@ -528,6 +531,7 @@ "privacy.unlisted.short": "Heb ei restru", "privacy_policy.last_updated": "Diweddarwyd ddiwethaf ar {date}", "privacy_policy.title": "Polisi Preifatrwydd", + "recommended": "Argymhellwyd", "refresh": "Adnewyddu", "regeneration_indicator.label": "Yn llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index bde12a7ae..577d77782 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Ingen resultater tilgængelige pt. Prøv at bruge søgning eller gennemse siden for at finde personer at følge, eller forsøg igen senere.", "onboarding.follows.lead": "Man kurerer sin eget hjemme-feed. Jo flere personer man følger, des mere aktiv og interessant vil det være. Disse profiler kan være et godt udgangspunkt – de kan altid fjernes senere!", "onboarding.follows.title": "Populært på Mastodon", - "onboarding.profile.discoverable": "Fremhæv profil og indlæg i detekteringsalgoritmer", + "onboarding.profile.discoverable": "Gør min profil synlig", + "onboarding.profile.discoverable_hint": "Når man vælger at være synlig på Mastodon, kan ens indlæg fremgå i søgeresultater og tendenser, og profilen kan blive foreslået til andre med tilsvarende interesse.", "onboarding.profile.display_name": "Visningsnavn", "onboarding.profile.display_name_hint": "Fulde navn eller dit sjove navn…", - "onboarding.profile.indexable": "Medtag offentlige indlæg i søgeresultater", "onboarding.profile.lead": "Dette kan altid færdiggøres senere i indstillingerne, hvor endnu flere tilpasningsmuligheder forefindes.", "onboarding.profile.note": "Bio", "onboarding.profile.note_hint": "Man kan @omtale andre personer eller #hashtags…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Diskret", "privacy_policy.last_updated": "Senest opdateret {date}", "privacy_policy.title": "Privatlivspolitik", + "recommended": "Anbefalet", "refresh": "Genindlæs", "regeneration_indicator.label": "Indlæser…", "regeneration_indicator.sublabel": "Din hjemmetidslinje klargøres!", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 10fd9b4c5..7c0710efc 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Bedauerlicherweise können aktuell keine Ergebnisse angezeigt werden. Du kannst die Suche verwenden oder den Reiter „Entdecken“ auswählen, um neue Leute zum Folgen zu finden – oder du versuchst es später erneut.", "onboarding.follows.lead": "Deine Startseite ist der primäre Anlaufpunkt, um Mastodon zu erleben. Je mehr Profilen du folgst, umso aktiver und interessanter wird sie. Damit du direkt loslegen kannst, gibt es hier ein paar Vorschläge:", "onboarding.follows.title": "Personalisiere deine Startseite", - "onboarding.profile.discoverable": "Profil und Beiträge in Suchalgorithmen berücksichtigen", + "onboarding.profile.discoverable": "Mein Profil auffindbar machen", + "onboarding.profile.discoverable_hint": "Wenn du entdeckt werden möchtest, dann können deine Beiträge in Suchergebnissen und Trends erscheinen. Dein Profil kann ebenfalls anderen mit ähnlichen Interessen vorgeschlagen werden.", "onboarding.profile.display_name": "Anzeigename", "onboarding.profile.display_name_hint": "Dein richtiger Name oder dein Fantasiename …", - "onboarding.profile.indexable": "Öffentliche Beiträge in die Suchergebnisse einbeziehen", "onboarding.profile.lead": "Du kannst das später in den Einstellungen vervollständigen, wo noch mehr Anpassungsmöglichkeiten zur Verfügung stehen.", "onboarding.profile.note": "Über mich", "onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden …", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Nicht gelistet", "privacy_policy.last_updated": "Stand: {date}", "privacy_policy.title": "Datenschutzerklärung", + "recommended": "Empfohlen", "refresh": "Aktualisieren", "regeneration_indicator.label": "Wird geladen …", "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 31806bcfb..02ce7120a 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -168,6 +168,7 @@ "confirmations.mute.explanation": "Αυτό θα κρύψει τις δημοσιεύσεις τους και τις δημοσιεύσεις που τους αναφέρουν, αλλά θα συνεχίσουν να μπορούν να βλέπουν τις δημοσιεύσεις σου και να σε ακολουθούν.", "confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις {name};", "confirmations.redraft.confirm": "Διαγραφή & ξαναγράψιμο", + "confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την ανάρτηση και να την ξαναγράψεις; Οι προτιμήσεις και προωθήσεις θα χαθούν και οι απαντήσεις στην αρχική ανάρτηση θα μείνουν ορφανές.", "confirmations.reply.confirm": "Απάντησε", "confirmations.reply.message": "Απαντώντας τώρα θα αντικαταστήσεις το κείμενο που ήδη γράφεις. Σίγουρα θέλεις να συνεχίσεις;", "confirmations.unfollow.confirm": "Άρση ακολούθησης", @@ -187,6 +188,7 @@ "dismissable_banner.community_timeline": "Αυτές είναι οι πιο πρόσφατες δημόσιες αναρτήσεις ατόμων των οποίων οι λογαριασμοί φιλοξενούνται στο {domain}.", "dismissable_banner.dismiss": "Παράβλεψη", "dismissable_banner.explore_links": "Αυτές οι ειδήσεις συζητούνται σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.", + "dismissable_banner.explore_statuses": "Αυτές είναι οι αναρτήσεις που έχουν απήχηση στο κοινωνικό δίκτυο σήμερα. Οι νεώτερες αναρτήσεις με περισσότερες προωθήσεις και προτιμήσεις κατατάσσονται ψηλότερα.", "dismissable_banner.explore_tags": "Αυτές οι ετικέτες αποκτούν απήχηση σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.", "embed.instructions": "Ενσωμάτωσε αυτή την ανάρτηση στην ιστοσελίδα σου αντιγράφοντας τον παρακάτω κώδικα.", "embed.preview": "Ορίστε πως θα φαίνεται:", @@ -279,13 +281,17 @@ "home.column_settings.basic": "Βασικές ρυθμίσεις", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", + "home.explore_prompt.body": "Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. If that feels too quiet, you may want to:\nΗ τροφοδοσία της αρχικής σελίδας σας είναι ένα μίγμα από αναρτήσεις με τις ετικέτες και τα άτομα που επιλέξατε να ακολουθείτε, και τις αναρτήσεις που προωθούν. Εάν αυτό σας φαίνεται πολύ ήσυχο, μπορεί να θέλετε:", "home.hide_announcements": "Απόκρυψη ανακοινώσεων", "home.show_announcements": "Εμφάνιση ανακοινώσεων", "interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.", "interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.", "interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.", + "interaction_modal.login.action": "Take me home\nΠήγαινέ με στην αρχική σελίδα", + "interaction_modal.no_account_yet": "Not on Mastodon?\nΔεν είστε στο Mastodon;", "interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή", "interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή", + "interaction_modal.title.favourite": "Favorite {name}'s post\nΠροτίμησε την ανάρτηση της/του {name}", "interaction_modal.title.follow": "Ακολούθησε {name}", "interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}", "interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}", @@ -376,6 +382,7 @@ "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείς για να αποκτήσεις πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "Ο/Η {name} ανέφερε τον {target}", "notification.admin.sign_up": "{name} έχει εγγραφεί", + "notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει", "notification.mention": "Ο/Η {name} σε επισήμανε", @@ -405,7 +412,7 @@ "notifications.column_settings.unread_notifications.highlight": "Επισήμανση μη αναγνωσμένων ειδοποιήσεων", "notifications.column_settings.update": "Επεξεργασίες:", "notifications.filter.all": "Όλες", - "notifications.filter.boosts": "Ενισχύσεις", + "notifications.filter.boosts": "Προωθήσεις", "notifications.filter.follows": "Ακολουθείς", "notifications.filter.mentions": "Επισημάνσεις", "notifications.filter.polls": "Αποτελέσματα δημοσκόπησης", @@ -425,9 +432,11 @@ "onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Δημοφιλή στο Mastodon", + "onboarding.share.lead": "Let people know how they can find you on Mastodon!\nΕνημερώστε άλλα άτομα πώς μπορούν να σας βρουν στο Mastodon!", "onboarding.share.next_steps": "Πιθανά επόμενα βήματα:", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", "onboarding.start.skip": "Want to skip right ahead?", + "onboarding.start.title": "You've made it!\nΤα καταφέρατε!", "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}", "onboarding.steps.publish_status.body": "Say hello to the world.", @@ -572,7 +581,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": "Αφαίρεση σελιδοδείκτη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index d00782592..7745311be 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -478,10 +478,8 @@ "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Personalize your home feed", - "onboarding.profile.discoverable": "Feature profile and posts in discovery algorithms", "onboarding.profile.display_name": "Display name", "onboarding.profile.display_name_hint": "Your full name or your fun name…", - "onboarding.profile.indexable": "Include public posts in search results", "onboarding.profile.lead": "You can always complete this later in the settings, where even more customisation options are available.", "onboarding.profile.note": "Bio", "onboarding.profile.note_hint": "You can @mention other people or #hashtags…", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index ed8bfe166..05d7d1656 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -606,6 +606,7 @@ "search.quick_action.status_search": "Posts matching {x}", "search.search_or_paste": "Search or paste URL", "search_popout.full_text_search_disabled_message": "Not available on {domain}.", + "search_popout.full_text_search_logged_out_message": "Only available when logged in.", "search_popout.language_code": "ISO language code", "search_popout.options": "Search options", "search_popout.quick_actions": "Quick actions", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 5679d5e41..537b8d0af 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -350,6 +350,7 @@ "lightbox.previous": "Malantaŭen", "limited_account_hint.action": "Montru profilon ĉiukaze", "limited_account_hint.title": "La profilo estas kaŝita de la moderigantoj de {domain}.", + "link_preview.author": "De {name}", "lists.account.add": "Aldoni al la listo", "lists.account.remove": "Forigi de la listo", "lists.delete": "Forigi la liston", @@ -446,6 +447,7 @@ "onboarding.follows.empty": "Bedaŭrinde, neniu rezulto estas montrebla nuntempe. Vi povas provi serĉi aŭ foliumi la esploran paĝon por trovi kontojn por sekvi, aŭ retrovi baldaŭ.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", + "onboarding.profile.save_and_continue": "Konservi kaj daŭrigi", "onboarding.share.message": "Mi estas {username} en #Mastodon! Sekvu min ĉe {url}", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", "onboarding.start.skip": "Want to skip right ahead?", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 3c99334c3..dfc00f1d8 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Podés intentar usar la búsqueda o navegar por la página de exploración para encontrar cuentas a las que seguir, o intentarlo de nuevo más tarde.", "onboarding.follows.lead": "Tu línea temporal de inicio es la forma principal de experimentar Mastodon. Cuanta más cuentas sigás, más activa e interesante será. Para empezar, acá tenés algunas sugerencias:", "onboarding.follows.title": "Personalizá tu línea de tiempo principal", - "onboarding.profile.discoverable": "Destacar perfil y mensajes en algoritmos de descubrimiento", + "onboarding.profile.discoverable": "Hacer que mi perfil sea detectable", + "onboarding.profile.discoverable_hint": "Cuando optás por ser detectable en Mastodon, tus mensajes pueden aparecer en los resultados de búsqueda y de tendencia, y tu perfil puede ser sugerido a personas con intereses similares a los tuyos.", "onboarding.profile.display_name": "Nombre para mostrar", "onboarding.profile.display_name_hint": "Tu nombre completo o tu pseudónimo…", - "onboarding.profile.indexable": "Incluir mensajes públicos en resultados de búsqueda", "onboarding.profile.lead": "Siempre podés completar esto más tarde en la configuración, donde hay disponibles más opciones de personalización.", "onboarding.profile.note": "Biografía", "onboarding.profile.note_hint": "Podés @mencionar otras cuentas o usar #etiquetas…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "No listado", "privacy_policy.last_updated": "Última actualización: {date}", "privacy_policy.title": "Política de privacidad", + "recommended": "Opción recomendada", "refresh": "Refrescar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Se está preparando tu línea temporal principal!", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 70c4efcad..83ff3debb 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar gente a la que seguir, o inténtalo de nuevo más tarde.", "onboarding.follows.lead": "Tienes que personalizar tu inicio. Cuantas más personas sigas, más activo e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!", "onboarding.follows.title": "Popular en Mastodon", - "onboarding.profile.discoverable": "Destacar el perfil y las publicaciones en el algoritmo de descubrimiento", + "onboarding.profile.discoverable": "Make my profile discoverable", + "onboarding.profile.discoverable_hint": "Cuando aceptas ser descubierto en Mastodon, tus publicaciones pueden aparecer en resultados de búsqueda y tendencias, y tu perfil puede ser sugerido a personas con intereses similares a los tuyos.", "onboarding.profile.display_name": "Nombre a mostrar", "onboarding.profile.display_name_hint": "Tu nombre completo o tu apodo…", - "onboarding.profile.indexable": "Incluir publicaciones públicas en los resultados de búsqueda", "onboarding.profile.lead": "Siempre puedes completar esto más tarde en los ajustes, donde hay aún más opciones de personalización disponibles.", "onboarding.profile.note": "Biografía", "onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #hashtags…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "No listado", "privacy_policy.last_updated": "Actualizado por última vez {date}", "privacy_policy.title": "Política de Privacidad", + "recommended": "Recomendado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 3c0d8cd57..9850bf039 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -66,7 +66,7 @@ "account.unblock": "Desbloquear a @{name}", "account.unblock_domain": "Desbloquear dominio {domain}", "account.unblock_short": "Desbloquear", - "account.unendorse": "No destacar en el perfil", + "account.unendorse": "No mostrar en el perfil", "account.unfollow": "Dejar de seguir", "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications_short": "Dejar de silenciar notificaciones", @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar personas a las que seguir, o inténtalo de nuevo más tarde.", "onboarding.follows.lead": "Tu línea de inicio es la forma principal de experimentar Mastodon. Cuanta más personas sigas, más activa e interesante será. Para empezar, aquí hay algunas sugerencias:", "onboarding.follows.title": "Personaliza tu línea de inicio", - "onboarding.profile.discoverable": "Destacar perfil y publicaciones en algoritmos de descubrimiento", + "onboarding.profile.discoverable": "Hacer que mi perfil aparezca en búsquedas", + "onboarding.profile.discoverable_hint": "Cuando permites que tu perfil aparezca en búsquedas en Mastodon, tus publicaciones podrán aparecer en los resultados de búsqueda y en tendencias, y tu perfil podrá recomendarse a gente con intereses similares a los tuyos.", "onboarding.profile.display_name": "Nombre para mostrar", "onboarding.profile.display_name_hint": "Tu nombre completo o tu apodo…", - "onboarding.profile.indexable": "Incluir publicaciones públicas en los resultados de búsqueda", "onboarding.profile.lead": "Siempre puedes completar esto más tarde en los ajustes, donde hay aún más opciones de personalización disponibles.", "onboarding.profile.note": "Biografía", "onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #etiquetas…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "No listado", "privacy_policy.last_updated": "Actualizado por última vez {date}", "privacy_policy.title": "Política de Privacidad", + "recommended": "Recomendado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 5bca1cfef..eb666a0ee 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.", "onboarding.follows.lead": "Hasierako orria zuk pertsonalizatzen duzu. Gero eta jende gehiagori jarraitu, orduan eta aktibo eta interesgarriago izango da. Profil hauek egokiak izan daitezke hasteko, beti ere, geroago jarraitzeari utz diezazkiekezu!", "onboarding.follows.title": "Mastodonen pil-pilean", - "onboarding.profile.discoverable": "Ezagutarazi profila eta bidalketak bilaketa algoritmoetan", + "onboarding.profile.discoverable": "Profila aurkitzeko moduan jarri", + "onboarding.profile.discoverable_hint": "Mastodon zure profila aurkitzeko moduan duzunean, zure mezuak bilaketa-emaitzetan eta jarraipenetan ager daitezke, eta zure profila antzeko interesa duen jendeari iradoki ahal zaio.", "onboarding.profile.display_name": "Bistaratzeko izena", "onboarding.profile.display_name_hint": "Zure izena edo ezizena…", - "onboarding.profile.indexable": "Gehitu argitalpen publikoak bilaketa-emaitzetan", "onboarding.profile.lead": "Geroagoago bete daiteke konfigurazioan, non pertsonalizatzeko aukera gehiago dauden.", "onboarding.profile.note": "Biografia", "onboarding.profile.note_hint": "Beste pertsona batzuk @aipa ditzakezu edo #traolak erabili…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Zerrendatu gabea", "privacy_policy.last_updated": "Azkenengo eguneraketa {date}", "privacy_policy.title": "Pribatutasun politika", + "recommended": "Gomendatua", "refresh": "Berritu", "regeneration_indicator.label": "Kargatzen…", "regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 97dae30d4..6951d5cb0 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -479,7 +479,7 @@ "onboarding.follows.empty": "متأسفانه هم‌اکنون نتیجه‌ای قابل نمایش نیست. می‌توانید استفاده از جست‌وجو یا مرور صفحهٔ کاوش را برای یافتن افرادی برای پی‌گیری آزموده یا دوباره تلاش کنید.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", - "onboarding.profile.discoverable": "معرفی نمایه و فرسته‌ها در الگوریتم‌های کشف", + "onboarding.profile.discoverable": "نمایه خود را قابل نمایش کنید", "onboarding.profile.display_name": "نام نمایشی", "onboarding.profile.display_name_hint": "نام کامل یا نام باحالتان…", "onboarding.profile.note": "درباره شما", @@ -529,6 +529,7 @@ "privacy.unlisted.short": "فهرست نشده", "privacy_policy.last_updated": "آخرین به‌روز رسانی در {date}", "privacy_policy.title": "سیاست محرمانگی", + "recommended": "پیشنهادشده", "refresh": "نوسازی", "regeneration_indicator.label": "در حال بار شدن…", "regeneration_indicator.sublabel": "خوراک خانگیتان دارد آماده می‌شود!", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 344e37c97..7a07913f8 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -21,7 +21,7 @@ "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", "account.cancel_follow_request": "Peruuta seurantapyyntö", - "account.copy": "Kopioi profiilin linkki", + "account.copy": "Kopioi profiililinkki", "account.direct": "Mainitse @{name} yksityisesti", "account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} julkaisee", "account.domain_blocked": "Verkkotunnus estetty", @@ -192,7 +192,7 @@ "conversation.mark_as_read": "Merkitse luetuksi", "conversation.open": "Näytä keskustelu", "conversation.with": "{names} kanssa", - "copy_icon_button.copied": "Kopioitu leikepöydälle", + "copy_icon_button.copied": "Kopioitiin leikepöydälle", "copypaste.copied": "Kopioitu", "copypaste.copy_to_clipboard": "Kopioi leikepöydälle", "directory.federated": "Koko tunnettu fediversumi", @@ -481,11 +481,11 @@ "onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata tutustumissivua löytääksesi seurattavaa tai yrittää myöhemmin uudelleen.", "onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!", "onboarding.follows.title": "Mukauta kotisyötettäsi", - "onboarding.profile.discoverable": "Pidä profiilia ja julkaisuja esillä löytämisalgoritmeissa", + "onboarding.profile.discoverable": "Aseta profiilini löydettäväksi", + "onboarding.profile.discoverable_hint": "Kun olet määrittänyt itsesi löydettäväksi Mastodonista, voivat julkaisusi näkyä hakutuloksissa ja suosituissa kohteissa, ja profiiliasi voidaan ehdottaa käyttäjille, jotka ovat kiinnostuneet samoista aiheista kuin sinä.", "onboarding.profile.display_name": "Näyttönimi", "onboarding.profile.display_name_hint": "Koko nimesi tai lempinimesi…", - "onboarding.profile.indexable": "Sisällytä julkiset julkaisut hakutuloksiin", - "onboarding.profile.lead": "Voit viimeistellä tämän milloin tahansa asetuksissa, jossa on saatavilla vielä enemmän mukautusvalintoja.", + "onboarding.profile.lead": "Voit viimeistellä tämän milloin tahansa asetuksista, jotka tarjoavat vielä enemmän mukautusvalintoja.", "onboarding.profile.note": "Elämäkerta", "onboarding.profile.note_hint": "Voit @mainita muita käyttäjiä tai #aihetunnisteita…", "onboarding.profile.save_and_continue": "Tallenna ja jatka", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Listaamaton", "privacy_policy.last_updated": "Viimeksi päivitetty {date}", "privacy_policy.title": "Tietosuojakäytäntö", + "recommended": "Suositeltu", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", "regeneration_indicator.sublabel": "Kotisyötettäsi valmistellaan!", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 61c1287ea..aa99a0c30 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -21,6 +21,7 @@ "account.blocked": "Bannað/ur", "account.browse_more_on_origin_server": "Kaga meira á upprunaligu vangamyndina", "account.cancel_follow_request": "Strika fylgjaraumbøn", + "account.copy": "Avrita leinki til vangan", "account.direct": "Umrøð @{name} privat", "account.disable_notifications": "Ikki boða mær frá, tá @{name} skrivar", "account.domain_blocked": "Økisnavn bannað", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Merk sum lisið", "conversation.open": "Vís samrøðu", "conversation.with": "Við {names}", + "copy_icon_button.copied": "Avritað til setiborðið", "copypaste.copied": "Avritað", "copypaste.copy_to_clipboard": "Avrita til setiborðið", "directory.federated": "Frá tí kenda fediversinum", @@ -478,6 +480,8 @@ "onboarding.follows.empty": "Tíverri kunnu eingi úrslit vísast beint nú. Tú kanst royna at brúka leiting ella at kaga gjøgnum Rannsaka síðuna fyri at finna fólk at fylgja - ella royna aftur seinni.", "onboarding.follows.lead": "Tú snikkar sjálv/ur tína heimarás til. Jú fleiri fólk, tú fylgir, jú virknari og áhugaverdari verður tað. Hesir vangar kunnu vera ein góð byrjan — tú kanst altíð gevast at fylgja teimum seinni!", "onboarding.follows.title": "Vælumtókt á Mastodon", + "onboarding.profile.discoverable": "Ger tað møguligt hjá øðrum at finna vangan hjá mær", + "onboarding.profile.discoverable_hint": "Tá tú játtar at onnur skulu kunna finna teg á Mastodon, so kann henda, at postar tínir síggjast í leitiúrslitum og rákum, og vangin hjá tær kann vera skotin upp fyri fólki við áhugamálum sum minna um tíni.", "onboarding.share.lead": "Lat fólk vita, hvussu tey kunnu finna teg á Mastodon!", "onboarding.share.message": "Eg eri {username} á #Mastodon! Kom og fylg mær á {url}", "onboarding.share.next_steps": "Møgulig næstu stig:", @@ -521,6 +525,7 @@ "privacy.unlisted.short": "Ikki listað", "privacy_policy.last_updated": "Seinast dagført {date}", "privacy_policy.title": "Privatlívspolitikkur", + "recommended": "Viðmælt", "refresh": "Endurles", "regeneration_indicator.label": "Innlesur…", "regeneration_indicator.sublabel": "Tín heimarás verður gjørd klár!", diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json index d85a6d428..94ab5333c 100644 --- a/app/javascript/mastodon/locales/fr-QC.json +++ b/app/javascript/mastodon/locales/fr-QC.json @@ -308,7 +308,7 @@ "home.column_settings.basic": "Basique", "home.column_settings.show_reblogs": "Afficher boosts", "home.column_settings.show_replies": "Afficher réponses", - "home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'ils boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :", + "home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'elles boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :", "home.explore_prompt.title": "C'est votre page d'accueil dans Mastodon.", "home.hide_announcements": "Masquer les annonces", "home.pending_critical_update.body": "Veuillez mettre à jour votre serveur Mastodon dès que possible !", @@ -479,9 +479,12 @@ "onboarding.follows.empty": "Malheureusement, aucun résultat ne peut être affiché pour le moment. Vous pouvez essayer de rechercher ou de parcourir la page \"Explorer\" pour trouver des personnes à suivre, ou réessayer plus tard.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", - "onboarding.profile.discoverable": "Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages", + "onboarding.profile.display_name": "Nom affiché", + "onboarding.profile.note": "Biographie", "onboarding.profile.save_and_continue": "Enregistrer et continuer", + "onboarding.profile.title": "Configuration du profil", "onboarding.profile.upload_avatar": "Importer une photo de profil", + "onboarding.profile.upload_header": "Envoyer une image de profil", "onboarding.share.lead": "Faites savoir aux gens comment vous trouver sur Mastodon!", "onboarding.share.message": "Je suis {username} sur #Mastodon! Suivez-moi sur {url}", "onboarding.share.next_steps": "Étapes suivantes possibles:", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 14e0e13ba..f7b3fc1f0 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -308,7 +308,7 @@ "home.column_settings.basic": "Basique", "home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_replies": "Afficher les réponses", - "home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'ils boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :", + "home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'elles boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :", "home.explore_prompt.title": "C'est votre page d'accueil dans Mastodon.", "home.hide_announcements": "Masquer les annonces", "home.pending_critical_update.body": "Veuillez mettre à jour votre serveur Mastodon dès que possible !", @@ -479,9 +479,12 @@ "onboarding.follows.empty": "Malheureusement, aucun résultat ne peut être affiché pour le moment. Vous pouvez essayer d'utiliser la recherche ou parcourir la page de découverte pour trouver des personnes à suivre, ou réessayez plus tard.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Personnaliser votre flux principal", - "onboarding.profile.discoverable": "Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages", + "onboarding.profile.display_name": "Nom affiché", + "onboarding.profile.note": "Biographie", "onboarding.profile.save_and_continue": "Enregistrer et continuer", + "onboarding.profile.title": "Configuration du profil", "onboarding.profile.upload_avatar": "Importer une photo de profil", + "onboarding.profile.upload_header": "Envoyer une image de profil", "onboarding.share.lead": "Faites savoir aux gens comment ils peuvent vous trouver sur Mastodon!", "onboarding.share.message": "Je suis {username} sur #Mastodon ! Suivez-moi sur {url}", "onboarding.share.next_steps": "Étapes suivantes possibles :", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 1f199bc45..83bc826a7 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -21,6 +21,7 @@ "account.blocked": "Bloqueada", "account.browse_more_on_origin_server": "Busca máis no perfil orixinal", "account.cancel_follow_request": "Cancelar a solicitude de seguimento", + "account.copy": "Copiar ligazón ao perfil", "account.direct": "Mencionar de xeito privado a @{name}", "account.disable_notifications": "Deixar de notificarme cando @{name} publica", "account.domain_blocked": "Dominio agochado", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Marcar como lido", "conversation.open": "Ver conversa", "conversation.with": "Con {names}", + "copy_icon_button.copied": "Copiada ao portapapeis", "copypaste.copied": "Copiado", "copypaste.copy_to_clipboard": "Copiar ao portapapeis", "directory.federated": "Do fediverso coñecido", @@ -479,10 +481,10 @@ "onboarding.follows.empty": "Desgraciadamente agora mesmo non hai nada que mostrar. Podes intentalo coa busca ou na páxina descubrir para atopar persoas ás que seguir, ou intentalo máis tarde.", "onboarding.follows.lead": "Podes facer que a túa cronoloxía de inicio sexa como ti a queres. Canta máis xente sigas máis interesante será. Estes perfís poderían axudarche a comezar —sempre poderás deixar de seguilos despois!", "onboarding.follows.title": "Popular en Mastodon", - "onboarding.profile.discoverable": "Perfil destacado e publicacións nos algoritmos de descubrimento", + "onboarding.profile.discoverable": "Que o meu perfil se poida atopar", + "onboarding.profile.discoverable_hint": "Cando elixes que poidan atoparte en Mastodon as túas publicacións aparecerán nos resultados das buscas e nos temas en voga, e o teu perfil podería ser suxerido para seguimento a persoas con intereses semellantes aos teus.", "onboarding.profile.display_name": "Nome público", "onboarding.profile.display_name_hint": "O teu nome completo ou un nome divertido…", - "onboarding.profile.indexable": "Incluír publicacións públicas nos resultados das buscas", "onboarding.profile.lead": "Sempre poderás incluír esta información mais tarde nos axustes, onde terás máis opcións dispoñibles.", "onboarding.profile.note": "Acerca de ti", "onboarding.profile.note_hint": "Podes @mencionar a outras persoas ou usar #cancelos…", @@ -533,6 +535,7 @@ "privacy.unlisted.short": "Sen listar", "privacy_policy.last_updated": "Actualizado por última vez no {date}", "privacy_policy.title": "Política de Privacidade", + "recommended": "Aconsellable", "refresh": "Actualizar", "regeneration_indicator.label": "Estase a cargar…", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index b6716f796..4ab516fae 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -31,7 +31,7 @@ "account.featured_tags.last_status_at": "חצרוץ אחרון בתאריך {date}", "account.featured_tags.last_status_never": "אין חצרוצים", "account.featured_tags.title": "התגיות המועדפות של {name}", - "account.follow": "עקוב", + "account.follow": "לעקוב", "account.followers": "עוקבים", "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.", "account.followers_counter": "{count, plural,one {עוקב אחד} other {{counter} עוקבים}}", @@ -302,15 +302,15 @@ "hashtag.counter_by_accounts": "{count, plural,one{{count} משתתף.ת}other{{count} משתתפיםות}}", "hashtag.counter_by_uses": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}", "hashtag.counter_by_uses_today": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}} היום", - "hashtag.follow": "מעקב אחר תגית", - "hashtag.unfollow": "ביטול מעקב אחר תגית", + "hashtag.follow": "לעקוב אחרי תגית", + "hashtag.unfollow": "להפסיק לעקוב אחרי תגית", "hashtags.and_other": "…{count, plural,other {ועוד #}}", "home.actions.go_to_explore": "הצגת מגמות", "home.actions.go_to_suggestions": "למצוא א.נשים לעקוב אחריהן.ם", "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", - "home.explore_prompt.body": "זרם הבית שלך יכיל תערובת של הודעות מהתגיות והאנשים שבחרת לעקיבה, וההודעות שהנעקבים בוחרים להדהד. אם זה נראה שקט מדי כרגע אז מה לגבי:", + "home.explore_prompt.body": "פיד הבית שלך יכיל תערובת של הודעות מהתגיות והאנשים שבחרת למעקב, וההודעות שהנעקבים בוחרים להדהד. אם זה נראה שקט מדי כרגע אז מה לגבי:", "home.explore_prompt.title": "זהו בסיס הבית שלך בתוך מסטודון.", "home.hide_announcements": "הסתר הכרזות", "home.pending_critical_update.body": "יש לעדכן את תוכנת מסטודון בהקדם האפשרי!", @@ -481,10 +481,10 @@ "onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.", "onboarding.follows.lead": "אתם אוצרים את הזרם הבייתי שלכם. ככל שתעקבו אחרי יותר אנשים, הוא יהיה עשיר ופעיל יותר. הנה כמה פרופילים להתחיל בהם - תמיד ניתן להפסיק מעקב אחריהם בהמשך!", "onboarding.follows.title": "פופולארי על מסטודון", - "onboarding.profile.discoverable": "הצגת פרופיל והודעות במסך התגליות", + "onboarding.profile.discoverable": "כלול את הפרופיל שלי בעמודת התגליות", + "onboarding.profile.discoverable_hint": "כשתבחרו להכלל ב\"תגליות\" על מסטודון, ההודעות שלכם עשויות להופיע בתוצאות חיפוש ועמודות \"נושאים חמים\", והפרופיל יוצע לאחרים עם תחומי עניין משותפים לכם.", "onboarding.profile.display_name": "שם להצגה", "onboarding.profile.display_name_hint": "שמך המלא או כינוי הכיף שלך…", - "onboarding.profile.indexable": "הכללת הודעות ציבוריות בתוצאות החיפוש", "onboarding.profile.lead": "תמיד ניתן להשלים זאת אחר כך בהגדרות, שם יש אפילו עוד אפשרויות להתאמה אישית.", "onboarding.profile.note": "אודות", "onboarding.profile.note_hint": "ניתן @לאזכר משתמשים אחרים או #תגיות…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "לא רשום (לא לפיד הכללי)", "privacy_policy.last_updated": "עודכן לאחרונה {date}", "privacy_policy.title": "מדיניות פרטיות", + "recommended": "מומלץ", "refresh": "רענון", "regeneration_indicator.label": "טוען…", "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index f4473b716..387941b5e 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -415,6 +415,8 @@ "onboarding.compose.template": "नमस्कार #मस्टोडोन", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", + "onboarding.profile.discoverable": "अपना प्रोफाइल खोजने योग्य बनाएं", + "onboarding.profile.discoverable_hint": "जब आप मॅस्टोडॉन पर डिस्कवरेबिलिटी चुनते हैं तो आपके पोस्ट ट्रेंडिंग और सर्च में दिख सकते हैं और आपका प्रोफाइल आपके ही जैसे अकाउंट्स को सुझाया जा सकता है।", "onboarding.share.message": "मैं {username} मॅस्टोडॉन पर हूं! मुझे यहां {url} फॉलो करें", "onboarding.share.next_steps": "आगे कि संभवित विधि", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", @@ -441,6 +443,7 @@ "privacy.public.long": "सब को दिखाई देगा", "privacy.public.short": "सार्वजनिक", "privacy.unlisted.short": "अनलिस्टेड", + "recommended": "अनुशंसित", "refresh": "रीफ्रेश करें", "regeneration_indicator.label": "लोड हो रहा है...", "relative_time.full.just_now": "अभी-अभी", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 01524e553..6da7d6cd8 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -225,6 +225,7 @@ "follow_request.authorize": "Autoriziraj", "follow_request.reject": "Odbij", "footer.about": "O aplikaciji", + "footer.directory": "Direktorij profila", "footer.get_app": "Preuzmi aplikaciju", "footer.invite": "Pozovi ljude", "footer.keyboard_shortcuts": "Tipkovni prečaci", @@ -244,6 +245,7 @@ "hashtag.column_settings.tag_toggle": "Uključi dodatne oznake za ovaj stupac", "hashtag.follow": "Prati hashtag", "hashtag.unfollow": "Prestani pratiti hashtag", + "home.actions.go_to_explore": "Vidi trendove", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži boostove", "home.column_settings.show_replies": "Pokaži odgovore", @@ -310,6 +312,7 @@ "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Sakrij obavijesti ovog korisnika?", "navigation_bar.about": "O aplikaciji", + "navigation_bar.advanced_interface": "Otvori u naprednom web sučelju", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.community_timeline": "Lokalna vremenska crta", "navigation_bar.compose": "Compose new toot", @@ -364,6 +367,7 @@ "onboarding.actions.go_to_home": "Go to your home feed", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", + "onboarding.profile.upload_avatar": "Učitaj sliku profila", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", "onboarding.start.skip": "Want to skip right ahead?", "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", @@ -393,6 +397,7 @@ "privacy.unlisted.short": "Neprikazano", "privacy_policy.last_updated": "Zadnje ažurirannje {date}", "privacy_policy.title": "Pravila o zaštiti privatnosti", + "recommended": "Preporučeno", "refresh": "Osvježi", "regeneration_indicator.label": "Učitavanje…", "regeneration_indicator.sublabel": "Priprema se Vaša početna stranica!", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 83948b178..9be5b57e4 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Sajnos jelenleg nem jeleníthető meg eredmény. Kipróbálhatod a keresést vagy böngészheted a felfedező oldalon a követni kívánt személyeket, vagy próbáld meg később.", "onboarding.follows.lead": "A saját hírfolyamod az elsődleges tapasztalás a Mastodonon. Minél több embert követsz, annál aktívabb és érdekesebb a dolog. Az induláshoz itt van néhány javaslat:", "onboarding.follows.title": "Népszerű a Mastodonon", - "onboarding.profile.discoverable": "Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban", + "onboarding.profile.discoverable": "Saját profil beállítása felfedezhetőként", + "onboarding.profile.discoverable_hint": "A Mastodonon a felfedezhetőség választása esetén a saját bejegyzéseid megjelenhetnek a keresési eredmények és a felkapott tartalmak között, valamint a profilod a hozzád hasonló érdeklődési körrel rendelkező embereknél is ajánlásra kerülhet.", "onboarding.profile.display_name": "Megjelenített név", "onboarding.profile.display_name_hint": "Teljes neved vagy vicces neved…", - "onboarding.profile.indexable": "Nyilvános bejegyzések szerepeltetése a keresési eredményekben", "onboarding.profile.lead": "Ezt később bármikor befejezheted a beállításokban, ahol még több testreszabási lehetőség áll rendelkezésre.", "onboarding.profile.note": "Bemutatkozás", "onboarding.profile.note_hint": "Megemlíthetsz @másokat vagy #hashtag-eket…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Listázatlan", "privacy_policy.last_updated": "Utoljára frissítve: {date}", "privacy_policy.title": "Adatvédelmi szabályzat", + "recommended": "Ajánlott", "refresh": "Frissítés", "regeneration_indicator.label": "Betöltés…", "regeneration_indicator.sublabel": "A saját idővonalad épp készül!", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index b3c55d4f6..42d2c9811 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -305,7 +305,7 @@ "hashtag.follow": "Fylgjast með myllumerki", "hashtag.unfollow": "Hætta að fylgjast með myllumerki", "hashtags.and_other": "…og {count, plural, other {# til viðbótar}}", - "home.actions.go_to_explore": "Sjáðu hvað er í umræðunni", + "home.actions.go_to_explore": "Sjá hvað er í umræðunni", "home.actions.go_to_suggestions": "Finna fólk til að fylgjast með", "home.column_settings.basic": "Einfalt", "home.column_settings.show_reblogs": "Sýna endurbirtingar", @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Því miður er ekki hægt að birta neinar niðurstöður í augnablikinu. Þú getur reynt að nota leitina eða skoðað könnunarsíðuna til að finna fólk til að fylgjast með, nú eða prófað aftur síðar.", "onboarding.follows.lead": "Þú ræktar heimastreymið þitt. Því fleira fólki sem þú fylgist með, því virkara og áhugaverðara verður það. Að fylgjast með þessum notendum gæti verið ágætt til að byrja með - þú getur alltaf hætt að fylgjast með þeim síðar!", "onboarding.follows.title": "Vinsælt á Mastodon", - "onboarding.profile.discoverable": "Hafa notandasnið og færslur með í reikniritum leitar", + "onboarding.profile.discoverable": "Gera notandasniðið mitt uppgötvanlegt", + "onboarding.profile.discoverable_hint": "Þegar þú velur að hægt sé að uppgötva þig á Mastodon, munu færslurnar þínar birtast í leitarniðurstöðum og vinsældalistum, auk þess sem stungið verður upp á notandasniðinu þínu við fólk sem er með svipuð áhugamál og þú.", "onboarding.profile.display_name": "Birtingarnafn", "onboarding.profile.display_name_hint": "Fullt nafn þitt eða eitthvað til gamans…", - "onboarding.profile.indexable": "Hafa opinberar færslur með í leitarniðurstöðum", "onboarding.profile.lead": "Þú getur alltaf klárað þetta seinna í stillingunum, þar sem enn fleiri möguleikar bjóðast á sérsníðingum.", "onboarding.profile.note": "Æviágrip", "onboarding.profile.note_hint": "Þú getur @minnst á annað fólk eða #myllumerki…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Óskráð", "privacy_policy.last_updated": "Síðast uppfært {date}", "privacy_policy.title": "Persónuverndarstefna", + "recommended": "Mælt með", "refresh": "Endurlesa", "regeneration_indicator.label": "Hleð inn…", "regeneration_indicator.sublabel": "Verið er að útbúa heimastreymið þitt!", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 02e5991ab..2ecf1d8c1 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Sfortunatamente, nessun risultato può essere mostrato in questo momento. Puoi provare a utilizzare la ricerca o sfogliare la pagina di esplorazione per trovare persone da seguire, oppure riprova più tardi.", "onboarding.follows.lead": "La cronologia della tua home è gestita da te. Più persone segui, più attiva e interessante sarà. Questi profili possono essere un buon punto di partenza; puoi sempre smettere di seguirli in seguito!", "onboarding.follows.title": "Popolare su Mastodon", - "onboarding.profile.discoverable": "Include il profilo e i post negli algoritmi di scoperta", + "onboarding.profile.discoverable": "Rendi il mio profilo rilevabile", + "onboarding.profile.discoverable_hint": "Quando attivi la rilevabilità su Mastodon, i tuoi post potrebbero apparire nei risultati di ricerca e nelle tendenze e il tuo profilo potrebbe essere suggerito a persone con interessi simili ai tuoi.", "onboarding.profile.display_name": "Nome da visualizzare", "onboarding.profile.display_name_hint": "Il tuo nome completo o il tuo nome divertente…", - "onboarding.profile.indexable": "Includi i post pubblici nei risultati di ricerca", "onboarding.profile.lead": "Puoi sempre completarlo in un secondo momento nelle impostazioni, dove sono disponibili ancora più opzioni di personalizzazione.", "onboarding.profile.note": "Biografia", "onboarding.profile.note_hint": "Puoi @menzionare altre persone o #hashtags…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Non elencato", "privacy_policy.last_updated": "Ultimo aggiornamento {date}", "privacy_policy.title": "Politica sulla Privacy", + "recommended": "Consigliato", "refresh": "Ricarica", "regeneration_indicator.label": "Caricamento…", "regeneration_indicator.sublabel": "Il feed della tua home è in preparazione!", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index f8c85b774..3cb0565d0 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -21,6 +21,7 @@ "account.blocked": "ブロック済み", "account.browse_more_on_origin_server": "リモートで表示", "account.cancel_follow_request": "フォローリクエストの取り消し", + "account.copy": "プロフィールのリンクをコピーして下さい", "account.direct": "@{name}さんに非公開でメンション", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "既読にする", "conversation.open": "会話を表示", "conversation.with": "{names}", + "copy_icon_button.copied": "クリップボードにコピーされた", "copypaste.copied": "コピーしました", "copypaste.copy_to_clipboard": "クリップボードにコピー", "directory.federated": "既知の連合より", @@ -479,6 +481,17 @@ "onboarding.follows.empty": "表示できる結果はありません。検索やエクスプローラーを使ったり、ほかのアカウントをフォローしたり、後でもう一度試しください。", "onboarding.follows.lead": "ホームタイムラインはMastodonの軸足となる場所です。たくさんのユーザーをフォローすることで、ホームタイムラインはよりにぎやかでおもしろいものになります。手はじめに、おすすめのアカウントから何人かフォローしてみましょう:", "onboarding.follows.title": "ホームタイムラインを埋める", + "onboarding.profile.discoverable": "自分のプロフィールが発見できないようにする", + "onboarding.profile.discoverable_hint": "マストドンの見つけやすくする機能が個人情報を利用することに承諾すると、あなたの投稿が検索結果やトレンドに表示されることがあります。また、あなたのプロフィールがあなたと似た興味関心を持つ人に提案されることがあります。", + "onboarding.profile.display_name": "表示名", + "onboarding.profile.display_name_hint": "あなたのフルネーム、または楽しい名前…", + "onboarding.profile.lead": "このことは後でいつでも設定から完了させることが出来ますし、設定では更に多くのカスタマイズが利用可能になっています。", + "onboarding.profile.note": "自己紹介", + "onboarding.profile.note_hint": "@を使用して他の人々にメンションをすることができます。また#でハッシュタグが使用できます", + "onboarding.profile.save_and_continue": "保存してから続行して下さい", + "onboarding.profile.title": "プロフィールの設定", + "onboarding.profile.upload_avatar": "プロフィール画像をアップロードしてください", + "onboarding.profile.upload_header": "プロフィールのヘッダー画像をアップロードして下さい", "onboarding.share.lead": "新しいMastodonのアカウントをみんなに紹介しましょう。", "onboarding.share.message": "「{username}」で #Mastodon はじめました! {url}", "onboarding.share.next_steps": "次のステップに進む:", @@ -522,6 +535,7 @@ "privacy.unlisted.short": "非収載", "privacy_policy.last_updated": "{date}に更新", "privacy_policy.title": "プライバシーポリシー", + "recommended": "おすすめ", "refresh": "更新", "regeneration_indicator.label": "読み込み中…", "regeneration_indicator.sublabel": "ホームタイムラインは準備中です!", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index de72e382c..9947d1d8c 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -25,7 +25,7 @@ "account.direct": "@{name} 님에게 개인적으로 멘션", "account.disable_notifications": "@{name} 의 게시물 알림 끄기", "account.domain_blocked": "도메인 차단함", - "account.edit_profile": "프로필 수정", + "account.edit_profile": "프로필 편집", "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", "account.featured_tags.last_status_at": "{date}에 마지막으로 게시", @@ -176,7 +176,7 @@ "confirmations.domain_block.confirm": "도메인 전체를 차단", "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 콘텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.", "confirmations.edit.confirm": "수정", - "confirmations.edit.message": "지금 수정하면 작성 중인 메시지를 덮어쓰게 됩니다. 정말 진행합니까?", + "confirmations.edit.message": "지금 편집하면 작성 중인 메시지를 덮어씁니다. 진행이 확실한가요?", "confirmations.logout.confirm": "로그아웃", "confirmations.logout.message": "정말로 로그아웃 하시겠습니까?", "confirmations.mute.confirm": "뮤트", @@ -192,7 +192,7 @@ "conversation.mark_as_read": "읽은 상태로 표시", "conversation.open": "대화 보기", "conversation.with": "{names} 님과", - "copy_icon_button.copied": "클립보드에 복사함", + "copy_icon_button.copied": "클립보드에 복사됨", "copypaste.copied": "복사됨", "copypaste.copy_to_clipboard": "클립보드에 복사", "directory.federated": "알려진 연합우주로부터", @@ -326,7 +326,7 @@ "interaction_modal.no_account_yet": "Mastodon 계정이 없나요?", "interaction_modal.on_another_server": "다른 서버에", "interaction_modal.on_this_server": "이 서버에서", - "interaction_modal.sign_in": "이 서버에 로그인되어 있지 않습니다. 계정이 어디에 속해 있나요?", + "interaction_modal.sign_in": "이 서버에 로그인하지 않았습니다. 계정이 어디에 속해있습니까?", "interaction_modal.sign_in_hint": "팁: 여러분이 가입한 사이트입니다. 만약 기억이 나지 않는다면 가입환영 이메일을 찾아보는 것도 좋습니다. 전체 사용자이름(예: @mastodon@mastodon.social)을 넣어도 됩니다!", "interaction_modal.title.favourite": "{name} 님의 게시물을 좋아하기", "interaction_modal.title.follow": "{name} 님을 팔로우", @@ -481,10 +481,10 @@ "onboarding.follows.empty": "안타깝지만 아직은 아무 것도 보여드릴 수 없습니다. 검색을 이용하거나 발견하기 페이지에서 팔로우 할 사람을 찾을 수 있습니다. 아니면 잠시 후에 다시 시도하세요.", "onboarding.follows.lead": "홈 피드는 마스토돈을 경험하는 주된 경로입니다. 더 많은 사람들을 팔로우 할수록 더 활발하고 흥미로워질 것입니다. 여기 시작을 위한 몇몇 추천을 드립니다:", "onboarding.follows.title": "내게 맞는 홈 피드 꾸미기", - "onboarding.profile.discoverable": "발견하기 알고리즘에 프로필과 게시물을 추천하기", + "onboarding.profile.discoverable": "내 프로필을 발견 가능하도록 설정", + "onboarding.profile.discoverable_hint": "마스토돈의 발견하기 기능에 참여하면 게시물이 검색 결과와 유행 란에 표시될 수 있고, 비슷한 관심사를 가진 사람들에게 자신의 프로필이 추천될 수 있습니다.", "onboarding.profile.display_name": "표시되는 이름", "onboarding.profile.display_name_hint": "진짜 이름 또는 재미난 이름…", - "onboarding.profile.indexable": "공개 게시물을 검색 결과에 포함시키기", "onboarding.profile.lead": "언제든지 나중에 설정 메뉴에서 마저 할 수 있고, 그곳에서 더 많은 맞춤 옵션을 고를 수 있습니다.", "onboarding.profile.note": "자기소개", "onboarding.profile.note_hint": "남을 @mention 하거나 #hashtag 태그를 달 수 있습니다…", @@ -492,7 +492,7 @@ "onboarding.profile.title": "프로필 설정", "onboarding.profile.upload_avatar": "프로필 사진 업로드", "onboarding.profile.upload_header": "프로필 헤더 업로드", - "onboarding.share.lead": "여러 사람에게 마스토돈에서 나를 찾을 수 있는 방법을 알려주세요!", + "onboarding.share.lead": "여러 사람에게 마스토돈에서 나를 찾을 수 있는 방법을 알립니다!", "onboarding.share.message": "#마스토돈 이용하는 {username}입니다! {url} 에서 저를 팔로우 해보세요", "onboarding.share.next_steps": "할만한 다음 단계:", "onboarding.share.title": "프로필 공유하기", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "미등재", "privacy_policy.last_updated": "{date}에 마지막으로 업데이트됨", "privacy_policy.title": "개인정보처리방침", + "recommended": "추천함", "refresh": "새로고침", "regeneration_indicator.label": "불러오는 중…", "regeneration_indicator.sublabel": "홈 피드를 준비하고 있습니다!", @@ -556,7 +557,7 @@ "report.categories.other": "기타", "report.categories.spam": "스팸", "report.categories.violation": "콘텐츠가 한 개 이상의 서버 규칙을 위반합니다", - "report.category.subtitle": "가장 알맞은 것을 선택하세요", + "report.category.subtitle": "가장 알맞은 것을 선택", "report.category.title": "이 {type}에 무슨 문제가 있는지 알려주세요", "report.category.title_account": "프로필", "report.category.title_status": "게시물", @@ -578,9 +579,9 @@ "report.reasons.spam_description": "악성 링크, 반응 스팸, 또는 반복적인 답글", "report.reasons.violation": "서버 규칙을 위반합니다", "report.reasons.violation_description": "특정 규칙을 위반합니다", - "report.rules.subtitle": "해당하는 사항을 모두 선택하세요", + "report.rules.subtitle": "해당하는 사항을 모두 선택", "report.rules.title": "어떤 규칙을 위반했나요?", - "report.statuses.subtitle": "해당하는 사항을 모두 선택하세요", + "report.statuses.subtitle": "해당하는 사항을 모두 선택", "report.statuses.title": "이 신고에 대해서 더 참고해야 할 게시물이 있나요?", "report.submit": "신고하기", "report.target": "{target} 신고하기", @@ -683,7 +684,7 @@ "status.title.with_attachments": "{user} 님이 {attachmentCount, plural, one {첨부} other {{attachmentCount}개 첨부}}하여 게시", "status.translate": "번역", "status.translated_from_with": "{provider}에 의해 {lang}에서 번역됨", - "status.uncached_media_warning": "미리보기를 사용할 수 없습니다", + "status.uncached_media_warning": "마리보기 허용되지 않음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", "subscribed_languages.lead": "변경 후에는 선택한 언어들로 작성된 게시물들만 홈 타임라인과 리스트 타임라인에 나타나게 됩니다. 아무 것도 선택하지 않으면 모든 언어로 작성된 게시물을 받아봅니다.", @@ -709,7 +710,7 @@ "upload_area.title": "드래그 & 드롭으로 업로드", "upload_button.label": "이미지, 영상, 오디오 파일 추가", "upload_error.limit": "파일 업로드 제한에 도달했습니다.", - "upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없어요.", + "upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.", "upload_form.audio_description": "청각 장애인을 위한 설명", "upload_form.description": "시각장애인을 위한 설명", "upload_form.description_missing": "설명이 추가되지 않음", @@ -717,12 +718,12 @@ "upload_form.thumbnail": "썸네일 변경", "upload_form.undo": "삭제", "upload_form.video_description": "청각, 시각 장애인을 위한 설명", - "upload_modal.analyzing_picture": "이미지 분석 중…", + "upload_modal.analyzing_picture": "사진 분석 중…", "upload_modal.apply": "적용", "upload_modal.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 준비 중…", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index af9a3eaa0..4cb95426a 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -30,14 +30,17 @@ "account.endorse": "Savybė profilyje", "account.featured_tags.last_status_at": "Paskutinį kartą paskelbta {date}", "account.featured_tags.last_status_never": "Nėra įrašų", + "account.featured_tags.title": "{name} rekomenduojamos grotažymės", "account.follow": "Sekti", "account.followers": "Sekėjai", "account.followers.empty": "Šio naudotojo dar niekas neseka.", "account.followers_counter": "{count, plural, one {{counter} sekėjas (-a)} few {{counter} sekėjai} many {{counter} sekėjo} other {{counter} sekėjų}}", "account.following": "Seka", + "account.following_counter": "{count, plural, one {{counter} Seka} few {{counter} Seka} many {{counter} Seka} other {{counter} Seka}}", "account.follows.empty": "Šis (-i) naudotojas (-a) dar nieko neseka.", "account.follows_you": "Seka tave", "account.go_to_profile": "Eiti į profilį", + "account.hide_reblogs": "Slėpti \"boosts\" iš @{name}", "account.in_memoriam": "Atminimui.", "account.joined_short": "Prisijungė", "account.languages": "Keisti prenumeruojamas kalbas", @@ -58,14 +61,19 @@ "account.requested": "Laukiama patvirtinimo. Spausk, kad atšaukti sekimo užklausą.", "account.requested_follow": "{name} paprašė tave sekti", "account.share": "Bendrinti @{name} profilį", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", - "account.unblock_domain": "Unhide {domain}", + "account.show_reblogs": "Rodyti \"boosts\" iš @{name}", + "account.statuses_counter": "{count, plural, one {{counter} įrašas} few {{counter} įrašai} many {{counter} įrašo} other {{counter} įrašų}}", + "account.unblock": "Atblokuoti @{name}", + "account.unblock_domain": "Atblokuoti domeną {domain}", "account.unblock_short": "Atblokuoti", + "account.unendorse": "Nerodyti profilyje", "account.unfollow": "Nebesekti", "account.unmute": "Atitildyti @{name}", "account.unmute_notifications_short": "Atitildyti pranešimus", "account.unmute_short": "Atitildyti", "account_note.placeholder": "Spausk norėdamas (-a) pridėti pastabą", + "admin.dashboard.daily_retention": "Vartotojų išbuvimo rodiklis pagal dieną po registracijos", + "admin.dashboard.monthly_retention": "Vartotojų išbuvimo rodiklis pagal mėnesį po registracijos", "admin.dashboard.retention.average": "Vidurkis", "admin.dashboard.retention.cohort": "Registravimo mėnuo", "admin.dashboard.retention.cohort_size": "Nauji naudotojai", @@ -92,6 +100,7 @@ "bundle_column_error.routing.body": "Prašyto puslapio nepavyko rasti. Ar esi tikras (-a), kad adreso juostoje nurodytas URL adresas yra teisingas?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Uždaryti", + "bundle_modal_error.message": "Kraunant šį komponentą kažkas nepavyko.", "bundle_modal_error.retry": "Bandyti dar kartą", "closed_registrations.other_server_instructions": "Kadangi Mastodon yra decentralizuotas, gali susikurti paskyrą kitame serveryje ir vis tiek bendrauti su šiuo serveriu.", "closed_registrations_modal.description": "Sukurti paskyrą {domain} šiuo metu neįmanoma, tačiau nepamiršk, kad norint naudotis Mastodon nebūtina turėti paskyrą {domain}.", @@ -116,50 +125,76 @@ "column.public": "Federacinė laiko skalė", "column_back_button.label": "Atgal", "column_header.hide_settings": "Slėpti nustatymus", + "column_header.moveLeft_settings": "Judinti stulpelį į kairę", + "column_header.moveRight_settings": "Judinti stulpelį į dešinę", "column_header.pin": "Prisegti", "column_header.show_settings": "Rodyti nustatymus", "column_header.unpin": "Atsegti", "column_subheading.settings": "Nustatymai", + "community.column_settings.local_only": "Tik vietinis", "community.column_settings.media_only": "Tik medija", + "community.column_settings.remote_only": "Tik nuotolinis", "compose.language.change": "Keisti kalbą", "compose.language.search": "Ieškoti kalbų...", "compose.published.body": "Įrašas paskelbtas.", + "compose.published.open": "Atidaryti", + "compose.saved.body": "Įrašas išsaugotas.", "compose_form.direct_message_warning_learn_more": "Sužinoti daugiau", "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": "Jūsų paskyra nėra {locked}. Kiekvienas gali jus sekti ir peržiūrėti tik sekėjams skirtus įrašus.", + "compose_form.lock_disclaimer.lock": "užrakinta", "compose_form.placeholder": "Kas tavo mintyse?", "compose_form.poll.add_option": "Pridėti pasirinkimą", "compose_form.poll.duration": "Apklausos trukmė", "compose_form.poll.option_placeholder": "Pasirinkimas {number}", "compose_form.poll.remove_option": "Pašalinti šį pasirinkimą", "compose_form.poll.switch_to_multiple": "Keisti apklausą, kad būtų galima pasirinkti kelis pasirinkimus", - "compose_form.publish_form": "Publish", - "compose_form.sensitive.hide": "{count, plural, one {Žymėti mediją kaip jautrią} few {Žymėti medijas kaip jautrias} many {Žymėti medijos kaip jautrios} other {Žymėti medijų kaip jautrių}}", - "compose_form.sensitive.marked": "{count, plural, one {Medija pažymėta kaip jautri} few {Medijos pažymėtos kaip jautrios} many {Medijos pažymėta kaip jautrios} other {Medijų pažymėtos kaip jautrios}}", - "compose_form.sensitive.unmarked": "{count, plural, one {Medija nepažymėta kaip jautri} few {Medijos nepažymėtos kaip jautrios} many {Medijos nepažymėta kaip jautri} other {Medijų nepažymėta kaip jautrios}}", - "compose_form.spoiler.marked": "Text is hidden behind warning", + "compose_form.poll.switch_to_single": "Pakeisti apklausą, kad būtų galima pasirinkti vieną variantą", + "compose_form.publish": "Skelbti", + "compose_form.publish_form": "Naujas įrašas", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Išsaugoti pakeitimus", + "compose_form.sensitive.hide": "{count, plural, one {Žymėti mediją kaip jautrią} few {Žymėti medijas kaip jautrias} many {Žymėti medijo kaip jautrio} other {Žymėti medijų kaip jautrių}}", + "compose_form.sensitive.marked": "{count, plural, one {Medija pažymėta kaip jautri} few {Medijos pažymėtos kaip jautrios} many {Medijo pažymėta kaip jautrio} other {Medijų pažymėtų kaip jautrių}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Medija nepažymėta kaip jautri} few {Medijos nepažymėtos kaip jautrios} many {Medijo nepažymėta kaip jautrio} other {Medijų nepažymėtų kaip jautrių}}", + "compose_form.spoiler.marked": "Pašalinti turinio įspėjimą", "compose_form.spoiler.unmarked": "Pridėti turinio įspėjimą", "compose_form.spoiler_placeholder": "Rašyk savo įspėjimą čia", "confirmation_modal.cancel": "Atšaukti", "confirmations.block.block_and_report": "Blokuoti ir pranešti", "confirmations.block.confirm": "Blokuoti", "confirmations.block.message": "Ar tikrai nori užblokuoti {name}?", + "confirmations.cancel_follow_request.confirm": "Atšaukti prašymą", + "confirmations.cancel_follow_request.message": "Ar tikrai nori atšaukti savo prašymą sekti {name}?", "confirmations.delete.confirm": "Ištrinti", "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete_list.confirm": "Ištrinti", + "confirmations.delete_list.message": "Ar tikrai nori visam laikui ištrinti šį sąrašą?", "confirmations.discard_edit_media.confirm": "Atmesti", "confirmations.discard_edit_media.message": "Turi neišsaugotų medijos aprašymo ar peržiūros pakeitimų, vis tiek juos atmesti?", "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.edit.confirm": "Redaguoti", + "confirmations.edit.message": "Redaguojant dabar, bus perrašyta šiuo metu kuriama žinutė. Ar tikrai nori tęsti?", "confirmations.logout.confirm": "Atsijungti", "confirmations.logout.message": "Ar tikrai nori atsijungti?", "confirmations.mute.confirm": "Nutildyti", "confirmations.mute.explanation": "Tai paslėps jų įrašus ir įrašus, kuriuose jie menėmi, tačiau jie vis tiek galės matyti tavo įrašus ir sekti.", "confirmations.reply.confirm": "Atsakyti", - "confirmations.reply.message": "Atsakydamas (-a) dabar perrašysi šiuo metu rašomą žinutę. Ar tikrai nori tęsti?", + "confirmations.reply.message": "Atsakant dabar, bus perrašyta metu kuriama žinutė. Ar tikrai nori tęsti?", "confirmations.unfollow.confirm": "Nebesekti", + "conversation.mark_as_read": "Žymėti kaip skaitytą", + "conversation.open": "Peržiūrėti pokalbį", + "conversation.with": "Su {names}", "copy_icon_button.copied": "Nukopijuota į iškarpinę", + "copypaste.copied": "Nukopijuota", + "copypaste.copy_to_clipboard": "Kopijuoti į iškarpinę", + "disabled_account_banner.account_settings": "Paskyros nustatymai", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Štai kaip tai atrodys:", + "emoji_button.objects": "Objektai", "emoji_button.search": "Paieška...", "empty_column.account_hides_collections": "Šis naudotojas (-a) pasirinko nepadaryti šią informaciją prieinamą", "empty_column.account_timeline": "No toots here!", @@ -168,12 +203,64 @@ "empty_column.hashtag": "Nėra nieko šiame saitažodyje kol kas.", "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "explore.title": "Naršyti", + "explore.trending_links": "Naujienos", + "explore.trending_statuses": "Įrašai", + "explore.trending_tags": "Saitažodžiai", + "filter_modal.added.context_mismatch_explanation": "Ši filtro kategorija netaikoma kontekste, kuriame peržiūrėjote šį pranešimą. Jei norite, kad pranešimas būtų filtruojamas ir šiame kontekste, turėsite redaguoti filtrą.", + "filter_modal.added.context_mismatch_title": "Konteksto neatitikimas!", + "filter_modal.added.expired_explanation": "Ši filtro kategorija nustojo galioti, kad ji būtų taikoma, turėsite pakeisti galiojimo datą.", + "filter_modal.added.expired_title": "Pasibaigė filtro galiojimo laikas!", + "filter_modal.added.review_and_configure": "Norėdami peržiūrėti ir toliau konfigūruoti šią filtro kategoriją, eikite į {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filtro nuostatos", + "filter_modal.added.settings_link": "nustatymų puslapis", + "filter_modal.added.short_explanation": "Šis pranešimas buvo įtrauktas į šią filtro kategoriją: {title}.", + "filter_modal.added.title": "Pridėtas filtras!", + "filter_modal.select_filter.context_mismatch": "netaikoma šiame kontekste", + "filter_modal.select_filter.expired": "nebegalioja", + "filter_modal.select_filter.prompt_new": "Nauja kategorija: {name}", + "filter_modal.select_filter.search": "Ieškoti arba sukurti", + "filter_modal.select_filter.subtitle": "Naudoti esamą kategoriją arba sukurti naują", + "filter_modal.select_filter.title": "Filtruoti šį įrašą", + "filter_modal.title.status": "Filtruoti šį įrašą", + "firehose.all": "Visi", "firehose.local": "Šis serveris", + "firehose.remote": "Kiti serveriai", + "follow_request.authorize": "Autorizuoti", + "follow_request.reject": "Atmesti", "follow_requests.unlocked_explanation": "Nors tavo paskyra neužrakinta, {domain} personalas mano, kad galbūt norėsi rankiniu būdu patikrinti šių paskyrų sekimo užklausas.", "followed_tags": "Sekamos saitažodžiai", "footer.about": "Apie", + "footer.directory": "Profilių katalogas", + "footer.get_app": "Gauti programėlę", "footer.invite": "Kviesti žmones", + "footer.keyboard_shortcuts": "Spartieji klavišai", + "footer.privacy_policy": "Privatumo politika", + "footer.source_code": "Peržiūrėti šaltinio kodą", + "footer.status": "Būsena", + "generic.saved": "Išsaugoti", + "getting_started.heading": "Pradedant", + "hashtag.column_header.tag_mode.all": "ir {additional}", + "hashtag.column_header.tag_mode.any": "ar {additional}", + "hashtag.column_header.tag_mode.none": "be {additional}", + "hashtag.column_settings.select.no_options_message": "Pasiūlymų nerasta", + "hashtag.column_settings.select.placeholder": "Įvesti grotažymes…", + "hashtag.column_settings.tag_mode.all": "Visi šie", + "hashtag.column_settings.tag_mode.any": "Bet kuris šių", + "hashtag.column_settings.tag_mode.none": "Nė vienas iš šių", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.counter_by_accounts": "{count, plural,one {{counter} dalyvis}other {{counter} dalyviai}}", + "hashtag.counter_by_uses": "{count, plural, one {{counter} įrašas} other {{counter} įrašų}}", + "hashtag.counter_by_uses_today": "{count, plural, one {{counter} įrašas} other {{counter} įrašų}} šiandien", + "hashtag.follow": "Sekti grotažymę", + "hashtag.unfollow": "Nesekti grotažymės", + "hashtags.and_other": "…ir{count, plural,other {#daugiau}}", + "home.actions.go_to_explore": "Žiūrėti kas populiaru", + "home.actions.go_to_suggestions": "Rasti žmonių sekimui", + "home.column_settings.basic": "Pagrindinis", + "home.column_settings.show_reblogs": "Rodyti \"boosts\"", + "home.column_settings.show_replies": "Rodyti atsakymus", + "home.hide_announcements": "Slėpti skelbimus", "interaction_modal.no_account_yet": "Nesi Mastodon?", "interaction_modal.on_another_server": "Kitame serveryje", "interaction_modal.on_this_server": "Šiame serveryje", @@ -214,8 +301,18 @@ "lightbox.close": "Uždaryti", "loading_indicator.label": "Kraunama…", "media_gallery.toggle_visible": "{number, plural, one {Slėpti vaizdą} few {Slėpti vaizdus} many {Slėpti vaizdo} other {Slėpti vaizdų}}", + "moved_to_account_banner.text": "Tavo paskyra {disabledAccount} šiuo metu yra išjungta, nes persikėlei į {movedToAccount}.", + "mute_modal.duration": "Trukmė", + "mute_modal.hide_notifications": "Slėpti šio naudotojo pranešimus?", "navigation_bar.compose": "Compose new toot", + "navigation_bar.discover": "Atrasti", "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.edit_profile": "Redaguoti profilį", + "navigation_bar.explore": "Naršyti", + "navigation_bar.favourites": "Mėgstamiausi", + "navigation_bar.filters": "Nutylėti žodžiai", + "navigation_bar.follow_requests": "Sekti prašymus", + "navigation_bar.followed_tags": "Sekti grotažymę", "navigation_bar.follows_and_followers": "Sekimai ir sekėjai", "navigation_bar.lists": "Sąrašai", "navigation_bar.logout": "Atsijungti", @@ -224,7 +321,16 @@ "navigation_bar.personal": "Asmeninis", "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Nuostatos", + "navigation_bar.public_timeline": "Federuota laiko juosta", + "navigation_bar.search": "Ieškoti", + "navigation_bar.security": "Apsauga", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "notification.admin.report": "{name} pranešė.{target}", + "notification.admin.sign_up": "{name} užsiregistravo", + "notification.favourite": "{name} pamėgo jūsų įrašą", + "notification.follow": "{name} pradėjo jus sekti", + "notification.follow_request": "{name} nori tapti jūsų sekėju", + "notification.mention": "{name} paminėjo jus", "notification.own_poll": "Tavo apklausa baigėsi", "notification.poll": "Apklausa, kurioje balsavai, pasibaigė", "notification.reblog": "{name} boosted your status", @@ -233,15 +339,51 @@ "notifications.clear": "Išvalyti pranešimus", "notifications.clear_confirmation": "Ar tikrai nori visam laikui išvalyti visus pranešimus?", "notifications.column_settings.admin.report": "Nauji ataskaitos:", + "notifications.column_settings.admin.sign_up": "Nauji prisiregistravimai:", + "notifications.column_settings.alert": "Darbalaukio pranešimai", + "notifications.column_settings.favourite": "Mėgstamiausi:", + "notifications.column_settings.filter_bar.advanced": "Rodyti visas kategorijas", + "notifications.column_settings.filter_bar.category": "Greito filtro juosta", + "notifications.column_settings.filter_bar.show_bar": "Rodyti filtro juostą", + "notifications.column_settings.follow": "Nauji sekėjai:", + "notifications.column_settings.follow_request": "Nauji prašymai sekti:", + "notifications.column_settings.mention": "Paminėjimai:", + "notifications.column_settings.poll": "Balsavimo rezultatai:", + "notifications.column_settings.push": "\"Push\" pranešimai", + "notifications.column_settings.reblog": "\"Boost\" kiekis:", + "notifications.column_settings.show": "Rodyti stulpelyje", + "notifications.column_settings.sound": "Paleisti garsą", "notifications.column_settings.status": "New toots:", + "notifications.column_settings.unread_notifications.category": "Neperskaityti pranešimai", + "notifications.column_settings.unread_notifications.highlight": "Paryškinti neperskaitytus pranešimus", + "notifications.column_settings.update": "Redagavimai:", + "notifications.filter.all": "Visi", + "notifications.filter.boosts": "\"Boost\" kiekis", + "notifications.filter.favourites": "Mėgstamiausi", + "notifications.filter.follows": "Sekimai", "notifications.filter.mentions": "Paminėjimai", + "notifications.filter.polls": "Balsavimo rezultatai", + "notifications.filter.statuses": "Atnaujinimai iš žmonių kuriuos sekate", + "notifications.grant_permission": "Suteikti leidimą.", + "notifications.group": "{count} pranešimai", + "notifications.mark_as_read": "Pažymėti kiekvieną pranešimą kaip perskaitytą", + "notifications.permission_denied": "Darbalaukio pranešimai nepasiekiami dėl anksčiau atmestos naršyklės leidimų užklausos", + "notifications.permission_denied_alert": "Negalima įjungti darbalaukio pranešimų, nes prieš tai naršyklės leidimas buvo atmestas", + "notifications.permission_required": "Darbalaukio pranešimai nepasiekiami, nes nesuteiktas reikiamas leidimas.", + "notifications_permission_banner.enable": "Įjungti darbalaukio pranešimus", + "notifications_permission_banner.how_to_control": "Jei norite gauti pranešimus, kai \"Mastodon\" nėra atidarytas, įjunkite darbalaukio pranešimus. Įjungę darbalaukio pranešimus, galite tiksliai valdyti, kokių tipų sąveikos generuoja darbalaukio pranešimus, naudodamiesi pirmiau esančiu mygtuku {icon}.", + "onboarding.action.back": "Gražinkite mane atgal", + "onboarding.actions.back": "Gražinkite mane atgal", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "Go to your home feed", + "onboarding.compose.template": "Sveiki #Mastodon!", + "onboarding.follows.empty": "Deja, šiuo metu jokių rezultatų parodyti negalima. Galite pabandyti naudoti paiešką arba naršyti atradimo puslapyje, kad surastumėte žmonių, kuriuos norite sekti, arba pabandyti vėliau.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", + "onboarding.profile.discoverable": "Padaryti mano profilį atrandamą", + "onboarding.profile.discoverable_hint": "Kai pasirenki Mastodon atrandamumą, tavo įrašai gali būti rodomi paieškos rezultatuose ir trendose, o profilis gali būti siūlomas panašių interesų turintiems žmonėms.", "onboarding.profile.display_name": "Rodomas vardas", "onboarding.profile.display_name_hint": "Tavo pilnas vardas arba linksmas vardas…", - "onboarding.profile.indexable": "Įtraukti viešus įrašus į paieškos rezultatus", "onboarding.profile.lead": "Gali visada tai užbaigti vėliau nustatymuose, kur yra dar daugiau pritaikymo parinkčių.", "onboarding.profile.note": "Biografija", "onboarding.profile.note_hint": "Gali @paminėti kitus žmones arba #saitažodžius…", @@ -249,12 +391,15 @@ "onboarding.profile.title": "Profilio konfigūravimas", "onboarding.profile.upload_avatar": "Įkelti profilio nuotrauką", "onboarding.profile.upload_header": "Įkelti profilio antraštę", + "onboarding.share.lead": "Praneškite žmonėms, kaip jus rasti \"Mastodon\"!", "onboarding.share.message": "Aš {username} #Mastodon! Ateik sekti manęs adresu {url}", + "onboarding.share.next_steps": "Galimi kiti žingsniai:", "onboarding.start.lead": "Dabar esi Mastodon dalis – unikalios decentralizuotos socialinės žiniasklaidos platformos, kurioje tu, o ne algoritmas, pats nustatai savo patirtį. Pradėkime tavo kelionę šioje naujoje socialinėje erdvėje:", "onboarding.start.skip": "Want to skip right ahead?", "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}", "onboarding.steps.publish_status.body": "Say hello to the world.", + "onboarding.steps.publish_status.title": "Susikūrk savo pirmąjį įrašą", "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", "onboarding.steps.setup_profile.title": "Customize your profile", "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", @@ -270,30 +415,108 @@ "privacy.unlisted.long": "Matomas visiems, bet atsisakyta atradimo funkcijų", "privacy.unlisted.short": "Neįtrauktas į sąrašą", "privacy_policy.last_updated": "Paskutinį kartą atnaujinta {date}", - "report.placeholder": "Type or paste additional comments", - "report.submit": "Submit report", + "recommended": "Rekomenduojama", + "relative_time.hours": "{number} val.", + "relative_time.just_now": "dabar", + "relative_time.minutes": "{number} min.", + "relative_time.seconds": "{number} sek.", + "relative_time.today": "šiandien", + "report.mute_explanation": "Jų įrašų nematysi. Jie vis tiek gali tave sekti ir matyti įrašus, bet nežinos, kad jie nutildyti.", + "report.next": "Tęsti", + "report.placeholder": "Papildomi komentarai", + "report.reasons.dislike": "Man tai nepatinka", + "report.reasons.dislike_description": "Tai nėra tai, ką nori matyti", + "report.reasons.legal": "Tai nelegalu", + "report.reasons.legal_description": "Manai, kad tai pažeidžia tavo arba serverio šalies įstatymus", + "report.reasons.other": "Tai kažkas kita", + "report.rules.subtitle": "Pasirink viską, kas tinka", + "report.rules.title": "Kokios taisyklės pažeidžiamos?", + "report.statuses.subtitle": "Pasirinkti viską, kas tinka", + "report.statuses.title": "Ar yra kokių nors įrašų, patvirtinančių šį pranešimą?", + "report.submit": "Pateikti", "report.target": "Report {target}", + "report.thanks.take_action": "Čia pateikiamos galimybės kontroliuoti, ką matote \"Mastodon\":", + "report.thanks.take_action_actionable": "Kol tai peržiūrėsime, galite imtis veiksmų prieš @{name}:", + "report.thanks.title": "Nenorite to matyti?", + "report.thanks.title_actionable": "Ačiū, kad pranešėte, mes tai išnagrinėsime.", + "report.unfollow": "Nebesekti @{name}", + "report.unfollow_explanation": "Jūs sekate šią paskyrą. Norėdami nebematyti jų įrašų savo pagrindiniame kanale, panaikinkite jų sekimą.", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", + "search.placeholder": "Paieška", + "search.search_or_paste": "Ieškok arba įklijuok URL", + "search_popout.full_text_search_disabled_message": "Nepasiekima {domain}.", + "search_popout.language_code": "ISO kalbos kodas", + "search_popout.specific_date": "konkreti data", + "search_popout.user": "naudotojas", + "search_results.accounts": "Profiliai", + "search_results.all": "Visi", + "search_results.hashtags": "Saitažodžiai", + "search_results.nothing_found": "Nepavyko rasti nieko pagal šiuos paieškos terminus.", "search_results.statuses": "Toots", - "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.sign_in": "Prisijungimas", + "sign_in_banner.text": "Prisijunk, kad galėtum sekti profilius arba saitažodžius, mėgsti, bendrinti ir atsakyti į įrašus. Taip pat gali bendrauti iš savo paskyros kitame serveryje.", "status.admin_status": "Open this status in the moderation interface", - "status.copy": "Copy link to status", + "status.copy": "Kopijuoti nuorodą į įrašą", + "status.delete": "Ištrinti", + "status.edit": "Redaguoti", + "status.edited": "Redaguota {date}", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", + "status.hide": "Slėpti įrašą", + "status.load_more": "Pakrauti daugiau", "status.media.open": "Spausk, kad atidaryti", - "status.media.show": "Spausk, kad pamatyti", + "status.media.show": "Spausk, kad matyti", "status.media_hidden": "Paslėpta medija", + "status.mention": "Paminėti @{name}", + "status.more": "Daugiau", "status.open": "Expand this status", - "status.pinned": "Pinned toot", + "status.pin": "Prisegti prie profilio", + "status.pinned": "Prisegtas įrašas", + "status.read_more": "Skaityti daugiau", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", - "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", + "status.redraft": "Ištrinti ir iš naujo parengti juodraštį", + "status.reply": "Atsakyti", + "status.replyAll": "Atsakyti į giją", + "status.report": "Pranešti @{name}", + "status.sensitive_warning": "Jautrus turinys", + "status.share": "Bendrinti", + "status.show_filter_reason": "Rodyti vis tiek", + "status.show_less": "Rodyti mažiau", + "status.show_less_all": "Rodyti mažiau visiems", + "status.show_more": "Rodyti daugiau", + "status.show_more_all": "Rodyti daugiau visiems", + "status.show_original": "Rodyti originalą", + "status.title.with_attachments": "{user}{attachmentCount, plural, one {priedas} few {{attachmentCount} priedai} many {{attachmentCount} priedo} other {{attachmentCount} priedų}}", + "status.translate": "Versti", + "status.translated_from_with": "Išversta iš {lang} naudojant {provider}", "status.uncached_media_warning": "Peržiūra nepasiekiama", - "timeline_hint.resources.statuses": "Older toots", + "tabs_bar.home": "Pradžia", + "tabs_bar.notifications": "Pranešimai", + "time_remaining.days": "Liko {number, plural, one {# diena} few {# dienos} many {# dieno} other {# dienų}}", + "timeline_hint.remote_resource_not_displayed": "{resource} iš kitų serverių nerodomas.", + "timeline_hint.resources.followers": "Sekėjai", + "timeline_hint.resources.follows": "Seka", + "timeline_hint.resources.statuses": "Senesni įrašai", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", + "ui.beforeunload": "Jei paliksi Mastodon, tavo juodraštis bus prarastas.", + "units.short.thousand": "{count} tūkst.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", "upload_form.description_missing": "Nėra pridėto aprašymo", "upload_form.edit": "Redaguoti", + "upload_form.undo": "Ištrinti", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_modal.choose_image": "Pasirinkti vaizdą", + "upload_modal.description_placeholder": "Greita rudoji lapė peršoka tinginį šunį", "upload_modal.edit_media": "Redaguoti mediją", - "upload_progress.label": "Uploading…" + "upload_progress.label": "Įkeliama...", + "upload_progress.processing": "Apdorojama…", + "username.taken": "Šis naudotojo vardas užimtas. Pabandyk kitą.", + "video.close": "Uždaryti vaizdo įrašą", + "video.download": "Atsisiųsti failą", + "video.exit_fullscreen": "Išeiti iš viso ekrano", + "video.fullscreen": "Visas ekranas", + "video.hide": "Slėpti vaizdo įrašą", + "video.mute": "Nutildyti garsą", + "video.play": "Leisti", + "video.unmute": "Atitildyti garsą" } diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index e0fa73ef6..b39f1a5c8 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Helaas kunnen op dit moment geen resultaten worden getoond. Je kunt proberen te zoeken of op de verkenningspagina te bladeren om mensen te vinden die je kunt volgen, of probeer het later opnieuw.", "onboarding.follows.lead": "Jouw starttijdlijn is de belangrijkste manier om Mastodon te ervaren. Hoe meer mensen je volgt, hoe actiever en interessanter het zal zijn. Om te beginnen, zijn hier enkele suggesties:", "onboarding.follows.title": "Je starttijdlijn aan jouw wensen aanpassen", - "onboarding.profile.discoverable": "Profiel en berichten laten uitlichten in ontdekkingsalgoritmes", + "onboarding.profile.discoverable": "Maak mij profiel ontdekbaar", + "onboarding.profile.discoverable_hint": "Wanneer je kiest voor Mastodon kun je berichten weergeven in zoekresultaten en trending, en je profiel kan worden voorgesteld aan mensen met vergelijkbare interesses.", "onboarding.profile.display_name": "Weergavenaam", "onboarding.profile.display_name_hint": "Jouw volledige naam of een leuke bijnaam…", - "onboarding.profile.indexable": "Openbare berichten in zoekresultaten opnemen", "onboarding.profile.lead": "Je kunt dit later altijd aanvullen in de instellingen, waar nog meer aanpassingsopties beschikbaar zijn.", "onboarding.profile.note": "Biografie", "onboarding.profile.note_hint": "Je kunt andere mensen @vermelden of #hashtags gebruiken…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Minder openbaar", "privacy_policy.last_updated": "Laatst bijgewerkt op {date}", "privacy_policy.title": "Privacybeleid", + "recommended": "Aanbevolen", "refresh": "Vernieuwen", "regeneration_indicator.label": "Aan het laden…", "regeneration_indicator.sublabel": "Jouw starttijdlijn wordt aangemaakt!", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 5e4459e43..4750b1adc 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -481,10 +481,8 @@ "onboarding.follows.empty": "Me kan ikkje visa deg nokon resultat no. Du kan prøva å søkja eller bla gjennom utforsk-sida for å finna folk å fylgja, eller du kan prøva att seinare.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", - "onboarding.profile.discoverable": "Ta med profilen og innlegga i oppdagingsalgoritmar", "onboarding.profile.display_name": "Synleg namn", "onboarding.profile.display_name_hint": "Det fulle namnet eller kallenamnet ditt…", - "onboarding.profile.indexable": "Ta med offentlege innlegg i søkjeresultat", "onboarding.profile.lead": "Du kan alltid fullføra dette seinare i innstillingane, og der er det endå fleire tilpassingsalternativ.", "onboarding.profile.note": "Om meg", "onboarding.profile.note_hint": "Du kan @nemna folk eller #emneknaggar…", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 0dce1e666..1739d4aa3 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -481,10 +481,8 @@ "onboarding.follows.empty": "Dessverre kan ingen resultater vises akkurat nå. Du kan prøve å bruke søk eller bla gjennom utforske-siden for å finne folk å følge, eller prøve igjen senere.", "onboarding.follows.lead": "Hjem-skjermen din er den viktigste måten å oppleve Mastodon på. Jo flere du følger, jo mer aktiv og interessant blir det. For å komme i gang, er her noen forslag:", "onboarding.follows.title": "Populært på Mastodon", - "onboarding.profile.discoverable": "Fremhevede profiler og innlegg i oppdagelsealgoritmer", "onboarding.profile.display_name": "Visningsnavn", "onboarding.profile.display_name_hint": "Ditt fulle navn eller ditt morsomme navn…", - "onboarding.profile.indexable": "Inkluder offentlige innlegg i søkeresultatene", "onboarding.profile.lead": "Du kan alltid fullføre dette senere i innstillingene, der enda flere tilpasningsalternativer er tilgjengelige.", "onboarding.profile.note": "Om meg", "onboarding.profile.note_hint": "Du kan @nevne andre eller #emneknagger…", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index d316143e1..1e6985df2 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Niestety w tej chwili nie można przedstawić żadnych wyników. Możesz spróbować wyszukać lub przeglądać stronę, aby znaleźć osoby do śledzenia, lub spróbować ponownie później.", "onboarding.follows.lead": "Zarządasz swoim własnym kanałem. Im więcej ludzi śledzisz, tym bardziej aktywny i ciekawy będzie Twój kanał. Te profile mogą być dobrym punktem wyjścia— możesz przestać je obserwować w dowolnej chwili!", "onboarding.follows.title": "Popularne na Mastodonie", - "onboarding.profile.discoverable": "Udostępniaj profil i wpisy funkcjom odkrywania", + "onboarding.profile.discoverable": "Spraw mój profil odkrywalnym", + "onboarding.profile.discoverable_hint": "Kiedy zapisujesz się do odkrywalności w Mastodonie, twoje wpisy mogą pokazywać się w wynikach wyszukiwania i trendach, a twój profil może być sugerowany użytkownikom o podobnych zainteresowaniach.", "onboarding.profile.display_name": "Nazwa wyświetlana", "onboarding.profile.display_name_hint": "Twoje imię lub pseudonim…", - "onboarding.profile.indexable": "Pokaż publiczne wpisy w wynikach wyszukiwania", "onboarding.profile.lead": "Możesz wypełnić te dane później w menu ustawień, gdzie dostępnych jest jeszcze więcej opcji.", "onboarding.profile.note": "O mnie", "onboarding.profile.note_hint": "Możesz @wspomnieć użytkowników albo #hasztagi…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Niewidoczny", "privacy_policy.last_updated": "Data ostatniej aktualizacji: {date}", "privacy_policy.title": "Polityka prywatności", + "recommended": "Zalecane", "refresh": "Odśwież", "regeneration_indicator.label": "Ładuję…", "regeneration_indicator.sublabel": "Twoja oś czasu jest przygotowywana!", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 7ce63e9b1..68f367abc 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -21,6 +21,7 @@ "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Veja mais no perfil original", "account.cancel_follow_request": "Cancelar solicitação para seguir", + "account.copy": "Copiar link do perfil", "account.direct": "Mencione em privado @{name}", "account.disable_notifications": "Cancelar notificações de @{name}", "account.domain_blocked": "Domínio bloqueado", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", "conversation.with": "Com {names}", + "copy_icon_button.copied": "Copiado para a área de transferência", "copypaste.copied": "Copiado", "copypaste.copy_to_clipboard": "Copiar para a área de transferência", "directory.federated": "Do fediverso conhecido", @@ -390,6 +392,7 @@ "lists.search": "Procurar entre as pessoas que segue", "lists.subheading": "Suas listas", "load_pending": "{count, plural, one {# novo item} other {# novos items}}", + "loading_indicator.label": "Carregando…", "media_gallery.toggle_visible": "{number, plural, one {Ocultar mídia} other {Ocultar mídias}}", "moved_to_account_banner.text": "Sua conta {disabledAccount} está desativada porque você a moveu para {movedToAccount}.", "mute_modal.duration": "Duração", @@ -478,6 +481,17 @@ "onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados agora. Você pode tentar usar a busca ou navegar na página de exploração para encontrar pessoas para seguir, ou tentar novamente mais tarde.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular no Mastodon", + "onboarding.profile.discoverable": "Tornar meu perfil descobrível", + "onboarding.profile.discoverable_hint": "Quando você aceita a capacidade de descoberta no Mastodon, suas postagens podem aparecer nos resultados de pesquisa e nas tendências, e seu perfil pode ser sugerido a pessoas com interesses similares aos seus.", + "onboarding.profile.display_name": "Nome de exibição", + "onboarding.profile.display_name_hint": "Seu nome completo ou apelido…", + "onboarding.profile.lead": "Você sempre pode completar isso mais tarde nas configurações, onde ainda mais opções de personalização estão disponíveis.", + "onboarding.profile.note": "Biografia", + "onboarding.profile.note_hint": "Você pode @mencionar outras pessoas ou usar #hashtags…", + "onboarding.profile.save_and_continue": "Salvar e continuar", + "onboarding.profile.title": "Configuração do perfil", + "onboarding.profile.upload_avatar": "Enviar imagem de perfil", + "onboarding.profile.upload_header": "Carregar cabeçalho do perfil", "onboarding.share.lead": "Deixe as pessoas saberem como elas podem te encontrar no Mastodon!", "onboarding.share.message": "Eu sou {username} no #Mastodon! Venha me seguir em {url}", "onboarding.share.next_steps": "Possíveis próximos passos:", @@ -521,6 +535,7 @@ "privacy.unlisted.short": "Não-listado", "privacy_policy.last_updated": "Atualizado {date}", "privacy_policy.title": "Política de privacidade", + "recommended": "Recomendado", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 0ad315152..36e09ac96 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados neste momento. Pode tentar utilizar a pesquisa ou navegar na página \"Explorar\" para encontrar pessoas para seguir ou tentar novamente mais tarde.", "onboarding.follows.lead": "Você personaliza a sua própria página inicial. Quanto mais pessoas seguir, mais ativa e interessante ela será. Estes perfis podem ser um bom ponto de partida - pode sempre deixar de os seguir mais tarde!", "onboarding.follows.title": "Popular no Mastodon", - "onboarding.profile.discoverable": "Destacar perfil e publicações nos algoritmos de descoberta", + "onboarding.profile.discoverable": "Permitir que o meu perfil seja descoberto", + "onboarding.profile.discoverable_hint": "Quando opta pela possibilidade de ser descoberto no Mastodon, as suas mensagens podem aparecer nos resultados de pesquisa e nas tendências, e o seu perfil pode ser sugerido a pessoas com interesses semelhantes aos seus.", "onboarding.profile.display_name": "Nome a apresentar", "onboarding.profile.display_name_hint": "O seu nome completo ou o seu nome divertido…", - "onboarding.profile.indexable": "Incluir publicações públicas nos resultados de pesquisa", "onboarding.profile.lead": "Pode sempre completar isto mais tarde, nas configurações, onde ainda estão disponíveis mais opções de personalização.", "onboarding.profile.note": "Bio", "onboarding.profile.note_hint": "Pode @mencionar outras pessoas ou #hashtags…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Não listar", "privacy_policy.last_updated": "Última atualização em {date}", "privacy_policy.title": "Política de privacidade", + "recommended": "Recomendado", "refresh": "Actualizar", "regeneration_indicator.label": "A carregar…", "regeneration_indicator.sublabel": "A tua página inicial está a ser preparada!", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 24186794b..9115695d8 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -21,6 +21,7 @@ "account.blocked": "Blokovaný/á", "account.browse_more_on_origin_server": "Prehľadávaj viac na pôvodnom profile", "account.cancel_follow_request": "Zruš žiadosť o sledovanie", + "account.copy": "Skopíruj odkaz pre profil", "account.direct": "Spomeň @{name} súkromne", "account.disable_notifications": "Prestaň mi oznamovať, keď má @{name} príspevky", "account.domain_blocked": "Doména skrytá", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Označ za prečítané", "conversation.open": "Ukáž konverzáciu", "conversation.with": "S {names}", + "copy_icon_button.copied": "Skopírovaný do schránky", "copypaste.copied": "Skopírované", "copypaste.copy_to_clipboard": "Skopíruj do schránky", "directory.federated": "Zo známého fedivesmíru", @@ -477,6 +479,7 @@ "onboarding.follows.empty": "Žiaľ, momentálne sa nedajú zobraziť žiadne výsledky. Môžete skúsiť použiť vyhľadávanie alebo navštíviť stránku objavovania a nájsť ľudí, ktorých chcete sledovať, alebo to skúste znova neskôr.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", + "onboarding.profile.discoverable": "Urob môj profil objaviteľný", "onboarding.share.lead": "Daj ľudom vedieť, ako ťa môžu na Mastodone nájsť!", "onboarding.share.message": "Na Mastodone som {username}. Príď ma nasledovať na {url}", "onboarding.share.next_steps": "Ďalšie možné kroky:", @@ -520,6 +523,7 @@ "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", "privacy_policy.last_updated": "Posledná úprava {date}", "privacy_policy.title": "Zásady súkromia", + "recommended": "Odporúčané", "refresh": "Obnoviť", "regeneration_indicator.label": "Načítava sa…", "regeneration_indicator.sublabel": "Tvoja domovská nástenka sa pripravuje!", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index d179a8656..21d198284 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -21,6 +21,7 @@ "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Brskaj več po izvirnem profilu", "account.cancel_follow_request": "Umakni zahtevo za sledenje", + "account.copy": "Kopiraj povezavo do profila", "account.direct": "Zasebno omeni @{name}", "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", "account.domain_blocked": "Blokirana domena", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Označi kot prebrano", "conversation.open": "Pokaži pogovor", "conversation.with": "Z {names}", + "copy_icon_button.copied": "Kopirano v odložišče", "copypaste.copied": "Kopirano", "copypaste.copy_to_clipboard": "Kopiraj na odložišče", "directory.federated": "Iz znanega fediverzuma", @@ -390,6 +392,7 @@ "lists.search": "Iščite med ljudmi, katerim sledite", "lists.subheading": "Vaši seznami", "load_pending": "{count, plural, one {# nov element} two {# nova elementa} few {# novi elementi} other {# novih elementov}}", + "loading_indicator.label": "Nalaganje …", "media_gallery.toggle_visible": "{number, plural,one {Skrij sliko} two {Skrij sliki} other {Skrij slike}}", "moved_to_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen, ker ste se prestavili na {movedToAccount}.", "mute_modal.duration": "Trajanje", @@ -478,6 +481,17 @@ "onboarding.follows.empty": "Žal trenutno ni mogoče prikazati nobenih rezultatov. Lahko poskusite z iskanjem ali brskanjem po strani za raziskovanje, da poiščete osebe, ki jim želite slediti, ali poskusite znova pozneje.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Priljubljeno na Mastodonu", + "onboarding.profile.discoverable": "Naj bo moj profil mogoče najti", + "onboarding.profile.discoverable_hint": "Ko se odločite za razkrivanje na Mastodonu, se lahko vaše objave pojavijo v rezultatih iskanja in trendih, vaš profil pa se lahko predlaga ljudem, ki imajo podobne interese kot vi.", + "onboarding.profile.display_name": "Pojavno ime", + "onboarding.profile.display_name_hint": "Vaše polno ime ali lažno ime ...", + "onboarding.profile.lead": "To lahko vedno dokončate med nastavitvami, kjer je na voljo še več možnosti prilagajanja.", + "onboarding.profile.note": "Biografija", + "onboarding.profile.note_hint": "Druge osebe lahko @omenite ali #ključite ...", + "onboarding.profile.save_and_continue": "Shrani in nadaljuj", + "onboarding.profile.title": "Nastavitev profila", + "onboarding.profile.upload_avatar": "Naloži sliko profila", + "onboarding.profile.upload_header": "Naloži glavo profila", "onboarding.share.lead": "Povejte vsem, kako vas lahko najdejo na Mastodonu!", "onboarding.share.message": "Sem {username} na #Mastodon! Sledite mi na {url}", "onboarding.share.next_steps": "Možni naslednji koraki:", @@ -521,6 +535,7 @@ "privacy.unlisted.short": "Ni prikazano", "privacy_policy.last_updated": "Zadnja posodobitev {date}", "privacy_policy.title": "Pravilnik o zasebnosti", + "recommended": "Priporočeno", "refresh": "Osveži", "regeneration_indicator.label": "Nalaganje …", "regeneration_indicator.sublabel": "Vaš domači vir se pripravlja!", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index c3110aa56..86042a91e 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "Mjerisht, s’mund të shfaqen përfundime tani. Mund të provoni të përdorni kërkimin, ose të shfletoni faqen e eksplorimit, që të gjeni persona për ndjekje, ose të riprovoni më vonë.", "onboarding.follows.lead": "Ju kujdeseni për prurjen tuaj. Sa më tepër persona të tjerë të ndiqni, aq më aktive dhe interesante do të bëhet ajo. Këto profile mund të jenë një pikënisje e mirë—mundeni përherë të ndërpritni ndjekjen e tyre më vonë!", "onboarding.follows.title": "Popullore në Mastodon", - "onboarding.profile.discoverable": "Profilin dhe postimet bëji objekt të algoritmeve të zbulimit", + "onboarding.profile.discoverable": "Bëje profilin tim të zbulueshëm", + "onboarding.profile.discoverable_hint": "Kur zgjidhni të jeni i zbulueshëm në Mastodon, postimet tuaja mund të shfaqen në përfundime kërkimesh dhe gjëra në modë dhe profili juaj mund t’u sugjerohet njerëzve me interesa të ngjashme me ju.", "onboarding.profile.display_name": "Emër në ekran", "onboarding.profile.display_name_hint": "Emri juaj i plotë, ose ç’të doni…", - "onboarding.profile.indexable": "Përfshi postime publike në përfundime kërkimi", "onboarding.profile.lead": "Këtë mund ta plotësoni përherë më vonë, te rregullimet, ku ka edhe më tepër mundësi përshtatjeje.", "onboarding.profile.note": "Jetëshkrim", "onboarding.profile.note_hint": "Mund të @përmendni persona të tjerë, ose #hashtagë…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Jo në lista", "privacy_policy.last_updated": "Përditësuar së fundi më {date}", "privacy_policy.title": "Rregulla Privatësie", + "recommended": "E rekomanduar", "refresh": "Rifreskoje", "regeneration_indicator.label": "Po ngarkohet…", "regeneration_indicator.sublabel": "Prurja juaj vetjake po përgatitet!", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index ea6e188cb..762ac68d9 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -21,6 +21,7 @@ "account.blocked": "Blokiran", "account.browse_more_on_origin_server": "Pregledajte još na originalnom profilu", "account.cancel_follow_request": "Povuci zahtev za praćenje", + "account.copy": "Kopiraj vezu u profil", "account.direct": "Privatno pomeni @{name}", "account.disable_notifications": "Zaustavi obaveštavanje za objave korisnika @{name}", "account.domain_blocked": "Domen je blokiran", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Označi kao pročitano", "conversation.open": "Prikaži razgovor", "conversation.with": "Sa {names}", + "copy_icon_button.copied": "Kopirano", "copypaste.copied": "Kopirano", "copypaste.copy_to_clipboard": "Kopiraj", "directory.federated": "Sa znanog fediverzuma", @@ -390,6 +392,7 @@ "lists.search": "Pretraži među ljudima koje pratite", "lists.subheading": "Vaše liste", "load_pending": "{count, plural, one {# nova stavka} few {# nove stavke} other {# novih stavki}}", + "loading_indicator.label": "Učitavanje…", "media_gallery.toggle_visible": "{number, plural, one {Sakrij sliku} few {Sakrij slike} other {Sakrij slike}}", "moved_to_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen jer ste prešli na {movedToAccount}.", "mute_modal.duration": "Trajanje", @@ -478,6 +481,17 @@ "onboarding.follows.empty": "Nažalost, trenutno se ne mogu prikazati rezultati. Možete pokušati sa korišćenjem pretrage ili pregledanjem stranice za istraživanje da biste pronašli ljude koje ćete pratiti ili pokušajte ponovo kasnije.", "onboarding.follows.lead": "Vi sami birate svoju početnu stranicu. Što više ljudi pratite, to će biti aktivnije i zanimljivije. Ovi profili mogu biti dobra polazna tačka—uvek možete da ih prestanete pratiti kasnije!", "onboarding.follows.title": "Personalizujte svoju početnu stranicu", + "onboarding.profile.discoverable": "Neka se moj profil može otkriti drugima", + "onboarding.profile.discoverable_hint": "Kada omogućite mogućnost otkrivanja na Mastodon-u, vaše objave se mogu pojaviti u rezultatima pretrage i u trendu, a vaš profil može biti predložen ljudima sa sličnim interesovanjima.", + "onboarding.profile.display_name": "Ime za prikaz", + "onboarding.profile.display_name_hint": "Vaše puno ime ili nadimak…", + "onboarding.profile.lead": "Ovo možete uvek dovršiti kasnije u podešavanjima, gde je dostupno još više opcija prilagođavanja.", + "onboarding.profile.note": "Biografija", + "onboarding.profile.note_hint": "Možete da @pomenete druge ljude ili #heš oznake…", + "onboarding.profile.save_and_continue": "Sačuvaj i nastavi", + "onboarding.profile.title": "Podešavanje profila", + "onboarding.profile.upload_avatar": "Otpremi sliku profila", + "onboarding.profile.upload_header": "Otpremi zaglavlje profila", "onboarding.share.lead": "Neka ljudi znaju kako mogu da vas pronađu na Mastodon-u!", "onboarding.share.message": "Ja sam {username} na #Mastodon-u! Pratite me na {url}", "onboarding.share.next_steps": "Mogući sledeći koraci:", @@ -521,6 +535,7 @@ "privacy.unlisted.short": "Neizlistano", "privacy_policy.last_updated": "Poslednje ažuriranje {date}", "privacy_policy.title": "Politika privatnosti", + "recommended": "Preporučeno", "refresh": "Osveži", "regeneration_indicator.label": "Učitavanje…", "regeneration_indicator.sublabel": "Vaša početna stranica se priprema!", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index c614215aa..898f0c124 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -481,6 +481,17 @@ "onboarding.follows.empty": "Нажалост, тренутно се не могу приказати резултати. Можете покушати са коришћењем претраге или прегледањем странице за истраживање да бисте пронашли људе које ћете пратити или покушајте поново касније.", "onboarding.follows.lead": "Ваша почетна страница је примарни начин да доживите Mastodon. Што више људи будете пратили, то ће бити активније и занимљивије. Да бисте започели, ево неколико предлога:", "onboarding.follows.title": "Персонализујте своју почетну страницу", + "onboarding.profile.discoverable": "Нека се мој профил може открити другима", + "onboarding.profile.discoverable_hint": "Када омогућите могућност откривања на Mastodon-у, ваше објаве се могу појавити у резултатима претраге и у тренду, а ваш профил може бити предложен људима са сличним интересовањима.", + "onboarding.profile.display_name": "Име за приказ", + "onboarding.profile.display_name_hint": "Ваше пуно име или надимак…", + "onboarding.profile.lead": "Ово можете увек довршити касније у подешавањима, где је доступно још више опција прилагођавања.", + "onboarding.profile.note": "Биографија", + "onboarding.profile.note_hint": "Можете да @поменете друге људе или #хеш ознаке…", + "onboarding.profile.save_and_continue": "Сачувај и настави", + "onboarding.profile.title": "Подешавање профила", + "onboarding.profile.upload_avatar": "Отпреми слику профила", + "onboarding.profile.upload_header": "Отпреми заглавље профила", "onboarding.share.lead": "Нека људи знају како могу да вас пронађу на Mastodon-у!", "onboarding.share.message": "Ја сам {username} на #Mastodon-у! Пратите ме на {url}", "onboarding.share.next_steps": "Могући следећи кораци:", @@ -524,6 +535,7 @@ "privacy.unlisted.short": "Неизлистано", "privacy_policy.last_updated": "Последње ажурирање {date}", "privacy_policy.title": "Политика приватности", + "recommended": "Препоручено", "refresh": "Освежи", "regeneration_indicator.label": "Учитавање…", "regeneration_indicator.sublabel": "Ваша почетна страница се припрема!", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 0b1a7f6ad..6473a41d6 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -481,9 +481,10 @@ "onboarding.follows.empty": "Tyvärr kan inga resultat visas just nu. Du kan prova att använda sökfunktionen eller utforska sidan för att hitta personer att följa, eller försök igen senare.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", + "onboarding.profile.discoverable": "Gör min profil upptäckbar", + "onboarding.profile.discoverable_hint": "När du väljer att vara upptäckbar på Mastodon kan dina inlägg visas i sök- och trendresultat, och din profil kan föreslås för personer med liknande intressen som du.", "onboarding.profile.display_name": "Visningsnamn", "onboarding.profile.display_name_hint": "Fullständigt namn eller ditt roliga namn…", - "onboarding.profile.indexable": "Inkludera offentliga inlägg i sökresultaten", "onboarding.profile.lead": "Du kan alltid slutföra detta senare i inställningarna, där ännu fler anpassningsalternativ finns tillgängliga.", "onboarding.profile.note": "Bio", "onboarding.profile.note_hint": "Du kan @nämna andra personer eller #hashtags…", @@ -532,6 +533,7 @@ "privacy.unlisted.short": "Olistad", "privacy_policy.last_updated": "Senast uppdaterad {date}", "privacy_policy.title": "Integritetspolicy", + "recommended": "Rekommenderas", "refresh": "Läs om", "regeneration_indicator.label": "Laddar…", "regeneration_indicator.sublabel": "Ditt hemmaflöde förbereds!", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index c86b7c379..d60509143 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -481,11 +481,11 @@ "onboarding.follows.empty": "น่าเสียดาย ไม่สามารถแสดงผลลัพธ์ได้ในตอนนี้ คุณสามารถลองใช้การค้นหาหรือเรียกดูหน้าสำรวจเพื่อค้นหาผู้คนที่จะติดตาม หรือลองอีกครั้งในภายหลัง", "onboarding.follows.lead": "ฟีดหน้าแรกของคุณเป็นวิธีหลักในการสัมผัส Mastodon ยิ่งคุณติดตามผู้คนมากเท่าไร ฟีดหน้าแรกก็จะยิ่งมีการใช้งานและน่าสนใจมากขึ้นเท่านั้น เพื่อช่วยให้คุณเริ่มต้นใช้งาน นี่คือข้อเสนอแนะบางส่วน:", "onboarding.follows.title": "ปรับแต่งฟีดหน้าแรกของคุณ", - "onboarding.profile.discoverable": "แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ", + "onboarding.profile.discoverable": "ทำให้โปรไฟล์ของฉันสามารถค้นพบได้", + "onboarding.profile.discoverable_hint": "เมื่อคุณเลือกรับความสามารถในการค้นพบใน Mastodon โพสต์ของคุณอาจปรากฏในผลลัพธ์การค้นหาและกำลังนิยม และอาจเสนอแนะโปรไฟล์ของคุณให้กับผู้คนที่มีความสนใจคล้ายกับคุณ", "onboarding.profile.display_name": "ชื่อที่แสดง", "onboarding.profile.display_name_hint": "ชื่อเต็มของคุณหรือชื่อแบบสนุกสนานของคุณ…", - "onboarding.profile.indexable": "รวมโพสต์สาธารณะในผลลัพธ์การค้นหา", - "onboarding.profile.lead": "คุณสามารถกลับมาทำต่อได้เสมอในการตั้งค่า ซึ่งจะมีตัวเลือกในการปรับแต่งมากกว่า", + "onboarding.profile.lead": "คุณสามารถทำสิ่งนี้ให้เสร็จสมบูรณ์ในภายหลังได้เสมอในการตั้งค่า ที่ซึ่งตัวเลือกการปรับแต่งเพิ่มเติมพร้อมใช้งาน", "onboarding.profile.note": "ชีวประวัติ", "onboarding.profile.note_hint": "คุณสามารถ @กล่าวถึง ผู้คนอื่น ๆ หรือ #แฮชแท็ก…", "onboarding.profile.save_and_continue": "บันทึกและดำเนินการต่อ", @@ -496,7 +496,7 @@ "onboarding.share.message": "ฉันคือ {username} ใน #Mastodon! มาติดตามฉันที่ {url}", "onboarding.share.next_steps": "ขั้นตอนถัดไปที่เป็นไปได้:", "onboarding.share.title": "แบ่งปันโปรไฟล์ของคุณ", - "onboarding.start.lead": "ตอนนี้คุณเป็นส่วนหนึ่งของ Mastodon แพลตฟอร์มสื่อสังคมที่มีเอกลักษณ์ กระจายศูนย์ ที่ซึ่งคุณ—ไม่ใช่อัลกอริทึม—เรียบเรียงประสบการณ์ของคุณเอง มาช่วยให้คุณเริ่มต้นใช้งานพรมแดนทางสังคมใหม่นี้กันเลย:", + "onboarding.start.lead": "ตอนนี้คุณเป็นส่วนหนึ่งของ Mastodon แพลตฟอร์มสื่อสังคมที่มีเอกลักษณ์เฉพาะตัว กระจายศูนย์ ที่ซึ่งคุณ—ไม่ใช่อัลกอริทึม—เรียบเรียงประสบการณ์ของคุณเอง มาช่วยให้คุณเริ่มต้นใช้งานพรมแดนทางสังคมใหม่นี้กันเลย:", "onboarding.start.skip": "ไม่ต้องการความช่วยเหลือในการเริ่มต้นใช้งาน?", "onboarding.start.title": "คุณทำสำเร็จแล้ว!", "onboarding.steps.follow_people.body": "การติดตามผู้คนที่น่าสนใจคือสิ่งที่ Mastodon ให้ความสำคัญ", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "ไม่อยู่ในรายการ", "privacy_policy.last_updated": "อัปเดตล่าสุดเมื่อ {date}", "privacy_policy.title": "นโยบายความเป็นส่วนตัว", + "recommended": "แนะนำ", "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", "regeneration_indicator.sublabel": "กำลังเตรียมฟีดหน้าแรกของคุณ!", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 505b16f4b..25b61f40e 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -21,6 +21,7 @@ "account.blocked": "Engellendi", "account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın", "account.cancel_follow_request": "Takip isteğini geri çek", + "account.copy": "Gönderi bağlantısını kopyala", "account.direct": "@{name} kullanıcısına özelden değin", "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Okundu olarak işaretle", "conversation.open": "Sohbeti görüntüle", "conversation.with": "{names} ile", + "copy_icon_button.copied": "Panoya kopyalandı", "copypaste.copied": "Kopyalandı", "copypaste.copy_to_clipboard": "Panoya kopyala", "directory.federated": "Bilinen fediverse'lerden", @@ -479,10 +481,10 @@ "onboarding.follows.empty": "Maalesef şu an bir sonuç gösterilemiyor. Takip edilecek kişileri bulmak için arama veya keşfet sayfasına gözatmayı kullanabilirsiniz veya daha sonra tekrar deneyin.", "onboarding.follows.lead": "Kendi ana akışınızı siz düzenliyorsunuz. Siz daha fazla insanı takip ettikçe, daha etkin ve ilgi çekici olacaktır. Bu profiller iyi bir başlangıç olabilir, isterseniz izlemeyi daha sonra bırakabilirsiniz:", "onboarding.follows.title": "Mastodon'da Popüler", - "onboarding.profile.discoverable": "Profil ve gönderileri keşif algoritmalarında kullan", + "onboarding.profile.discoverable": "Profilimi keşfedilebilir yap", + "onboarding.profile.discoverable_hint": "Mastodon'da keşfedilebilirliği etkinleştirdiğinizde, gönderileriniz arama sonuçlarında ve trendlerde görünebilir aynı zamanda profiliniz sizinle benzer ilgi alanlarına sahip kişilere önerilebilir.", "onboarding.profile.display_name": "Görünen isim", "onboarding.profile.display_name_hint": "Tam adınız veya kullanıcı adınız…", - "onboarding.profile.indexable": "Herkese açık gönderileri arama sonuçlarına ekle", "onboarding.profile.lead": "Bunu her zaman daha sonra ayarlardan tamamlayabilirsiniz, hatta daha fazla özelleştirme seçeneğine de ulaşabilirsiniz.", "onboarding.profile.note": "Kişisel bilgiler", "onboarding.profile.note_hint": "Diğer insanlara @değinebilir veya #etiketler kullanabilirsiniz…", @@ -533,6 +535,7 @@ "privacy.unlisted.short": "Listelenmemiş", "privacy_policy.last_updated": "Son güncelleme {date}", "privacy_policy.title": "Gizlilik Politikası", + "recommended": "Önerilen", "refresh": "Yenile", "regeneration_indicator.label": "Yükleniyor…", "regeneration_indicator.sublabel": "Ana akışın hazırlanıyor!", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 1307d7ea5..585a4b385 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "На жаль, жоден результат не може бути показаний просто зараз. Ви можете спробувати скористатися пошуком або переглядом сторінки огляду, щоб знайти людей для слідкування або повторіть спробу пізніше.", "onboarding.follows.lead": "Ваша домашня стрічка - основний спосіб роботи Mastodon. Чим більше людей, які ви підписані, тим активнішою і цікавою. Ось деякі пропозиції на початок:", "onboarding.follows.title": "Персоналізуйте домашню стрічку", - "onboarding.profile.discoverable": "Враховувати профіль та дописи в алгоритмах пошуку", + "onboarding.profile.discoverable": "Зробити мій профіль видимим", + "onboarding.profile.discoverable_hint": "Якщо ви погоджуєтеся на видимість у Mastodon, ваші дописи можуть з'являтися в результатах пошуку і трендах, і ваш профіль може бути запропоновано людям зі схожими з вашими інтересами.", "onboarding.profile.display_name": "Видиме ім'я", "onboarding.profile.display_name_hint": "Ваше повне ім'я або ваш псевдонім…", - "onboarding.profile.indexable": "Включити загальнодоступні дописи в результати пошуку", "onboarding.profile.lead": "Ви завжди можете завершити це пізніше в Налаштуваннях, де доступно ще більше опцій налаштування.", "onboarding.profile.note": "Біографія", "onboarding.profile.note_hint": "Ви можете @згадувати інших людей або #гештеґи…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "Прихований", "privacy_policy.last_updated": "Оновлено {date}", "privacy_policy.title": "Політика приватності", + "recommended": "Рекомендовано", "refresh": "Оновити", "regeneration_indicator.label": "Завантаження…", "regeneration_indicator.sublabel": "Хвилинку, ми готуємо вашу стрічку!", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index c98be2b74..8fc670557 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -21,6 +21,7 @@ "account.blocked": "Đã chặn", "account.browse_more_on_origin_server": "Truy cập trang của người này", "account.cancel_follow_request": "Thu hồi yêu cầu theo dõi", + "account.copy": "Sao chép địa chỉ", "account.direct": "Nhắn riêng @{name}", "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút", "account.domain_blocked": "Tên miền đã chặn", @@ -191,6 +192,7 @@ "conversation.mark_as_read": "Đánh dấu là đã đọc", "conversation.open": "Xem toàn bộ tin nhắn", "conversation.with": "Với {names}", + "copy_icon_button.copied": "Đã sao chép vào bộ nhớ tạm", "copypaste.copied": "Đã sao chép", "copypaste.copy_to_clipboard": "Sao chép vào bộ nhớ tạm", "directory.federated": "Từ mạng liên hợp", @@ -390,6 +392,7 @@ "lists.search": "Tìm kiếm những người mà bạn quan tâm", "lists.subheading": "Danh sách của bạn", "load_pending": "{count, plural, one {# tút mới} other {# tút mới}}", + "loading_indicator.label": "Đang tải…", "media_gallery.toggle_visible": "{number, plural, other {Ẩn hình ảnh}}", "moved_to_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng vì bạn đã chuyển sang {movedToAccount}.", "mute_modal.duration": "Thời hạn", @@ -478,6 +481,17 @@ "onboarding.follows.empty": "Không có kết quả có thể được hiển thị lúc này. Bạn có thể thử sử dụng tính năng tìm kiếm hoặc duyệt qua trang khám phá để tìm những người theo dõi hoặc thử lại sau.", "onboarding.follows.lead": "Bạn quản lý bảng tin của riêng bạn. Bạn càng theo dõi nhiều người, nó sẽ càng sôi động và thú vị. Để bắt đầu, đây là vài gợi ý:", "onboarding.follows.title": "Thịnh hành trên Mastodon", + "onboarding.profile.discoverable": "Bật khám phá cho hồ sơ của tôi", + "onboarding.profile.discoverable_hint": "Khi bạn bật khám phá trên Mastodon, các tút của bạn có thể xuất hiện trong kết quả tìm kiếm và xu hướng, đồng thời hồ sơ của bạn sẽ được đề xuất cho những người có cùng sở thích với bạn.", + "onboarding.profile.display_name": "Biệt danh", + "onboarding.profile.display_name_hint": "Tên đầy đủ hoặc biệt danh đều được…", + "onboarding.profile.lead": "Bạn có thể cài đặt lại trong phần cài đặt, nơi thậm chí còn có nhiều tùy chọn hơn.", + "onboarding.profile.note": "Giới thiệu", + "onboarding.profile.note_hint": "Bạn có thể @nhắnriêng ai đó hoặc #hashtags…", + "onboarding.profile.save_and_continue": "Lưu và tiếp tục", + "onboarding.profile.title": "Thiết lập hồ sơ", + "onboarding.profile.upload_avatar": "Tải lên ảnh đại diện", + "onboarding.profile.upload_header": "Tải lên ảnh bìa", "onboarding.share.lead": "Hãy cho mọi người biết làm thế nào họ có thể tìm thấy bạn trên Mastodon!", "onboarding.share.message": "Tôi là {username} trên #Mastodon! Hãy theo dõi tôi tại {url}", "onboarding.share.next_steps": "Các bước kế tiếp:", @@ -521,6 +535,7 @@ "privacy.unlisted.short": "Hạn chế", "privacy_policy.last_updated": "Cập nhật lần cuối {date}", "privacy_policy.title": "Chính sách bảo mật", + "recommended": "Đề xuất", "refresh": "Làm mới", "regeneration_indicator.label": "Đang tải…", "regeneration_indicator.sublabel": "Trang chính của bạn đang được cập nhật!", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 79f463772..e58b50476 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "很抱歉,现在无法显示任何结果。您可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。", "onboarding.follows.lead": "你管理你自己的家庭饲料。你关注的人越多,它将越活跃和有趣。 这些配置文件可能是一个很好的起点——你可以随时取消关注它们!", "onboarding.follows.title": "定制您的主页动态", - "onboarding.profile.discoverable": "在发现算法中展示您的个人资料和嘟文", + "onboarding.profile.discoverable": "让我的资料卡可被他人发现", + "onboarding.profile.discoverable_hint": "当您选择在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果和热门中,你的账户可能会被推荐给与你兴趣相似的人。", "onboarding.profile.display_name": "昵称", "onboarding.profile.display_name_hint": "您的全名或昵称…", - "onboarding.profile.indexable": "将您的公开嘟文纳入搜索范围", "onboarding.profile.lead": "您可以稍后在设置中完成此操作,设置中有更多的自定义选项。", "onboarding.profile.note": "简介", "onboarding.profile.note_hint": "您可以提及 @其他人 或 #标签…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "不公开", "privacy_policy.last_updated": "最近更新于 {date}", "privacy_policy.title": "隐私政策", + "recommended": "推荐", "refresh": "刷新", "regeneration_indicator.label": "加载中…", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index e7af27c5f..af4dad7f7 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "很遺憾,現在無法顯示任何結果。你可以嘗試搜尋或瀏覽探索頁面來找使用者來追蹤,或者稍後再試。", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Popular on Mastodon", - "onboarding.profile.discoverable": "在探索的演算法中展示個人檔案和帖文", + "onboarding.profile.discoverable": "將個人檔案設為可被搜尋", + "onboarding.profile.discoverable_hint": "當你在 Mastodon 上選擇可被搜尋時,你的帖文可能會出現在搜尋結果和熱門,你的個人檔案也可能被推薦給與你興趣相似的人。", "onboarding.profile.display_name": "顯示名稱", "onboarding.profile.display_name_hint": "你的全名或暱稱…", - "onboarding.profile.indexable": "將公開帖文納入搜尋結果中", "onboarding.profile.lead": "你可以隨時在設定中完成此動作,那裏有更多自訂選項。", "onboarding.profile.note": "簡介", "onboarding.profile.note_hint": "你可以 @提及他人 或使用 #標籤…", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "公開", "privacy_policy.last_updated": "最後更新 {date}", "privacy_policy.title": "私隱政策", + "recommended": "推薦", "refresh": "重新整理", "regeneration_indicator.label": "載入中……", "regeneration_indicator.sublabel": "你的主頁時間軸正在準備中!", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index d4f3010c9..783f95b30 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -481,10 +481,10 @@ "onboarding.follows.empty": "很遺憾,目前未能顯示任何結果。您可以嘗試使用搜尋、瀏覽探索頁面以找尋人們跟隨、或稍候再試。", "onboarding.follows.lead": "您的首頁時間軸是 Mastodon 的核心體驗。若您跟隨更多人的話,它將會變得更活躍有趣。這些個人檔案也許是個好起點,您可以隨時取消跟隨他們!", "onboarding.follows.title": "客製化您的首頁時間軸", - "onboarding.profile.discoverable": "於探索演算法中推薦個人檔案及嘟文", + "onboarding.profile.discoverable": "使我的個人檔案可以被找到", + "onboarding.profile.discoverable_hint": "當您於 Mastodon 上選擇加入可發現性時,您的嘟文可能會出現於搜尋結果與趨勢中。您的個人檔案可能會被推薦給與您志趣相投的人。", "onboarding.profile.display_name": "顯示名稱", "onboarding.profile.display_name_hint": "完整名稱或暱稱...", - "onboarding.profile.indexable": "允許公開嘟文顯示於搜尋結果中", "onboarding.profile.lead": "您隨時可以稍候於設定中完成此操作,將有更多自訂選項可使用。", "onboarding.profile.note": "個人簡介", "onboarding.profile.note_hint": "您可以 @mention 其他人或者使用 #主題標籤...", @@ -535,6 +535,7 @@ "privacy.unlisted.short": "不公開", "privacy_policy.last_updated": "最後更新:{date}", "privacy_policy.title": "隱私權政策", + "recommended": "推薦設定", "refresh": "重新整理", "regeneration_indicator.label": "載入中…", "regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!", diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 4a7a822a3..2ca301b19 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -281,7 +281,7 @@ export default function notifications(state = initialState, action) { case blockAccountSuccess.type: return filterNotifications(state, [action.payload.relationship.id]); case muteAccountSuccess.type: - return action.relationship.muting_notifications ? filterNotifications(state, [action.payload.relationship.id]) : state; + return action.payload.relationship.muting_notifications ? filterNotifications(state, [action.payload.relationship.id]) : state; case blockDomainSuccess.type: return filterNotifications(state, action.payload.accounts); case authorizeFollowRequestSuccess.type: diff --git a/app/models/concerns/account_search.rb b/app/models/concerns/account_search.rb index 9f7720f11..b855727b4 100644 --- a/app/models/concerns/account_search.rb +++ b/app/models/concerns/account_search.rb @@ -106,6 +106,8 @@ module AccountSearch LIMIT :limit OFFSET :offset SQL + DEFAULT_LIMIT = 10 + def searchable_text PlainTextFormatter.new(note, local?).to_s if discoverable? end @@ -118,7 +120,7 @@ module AccountSearch end class_methods do - def search_for(terms, limit: 10, offset: 0) + def search_for(terms, limit: DEFAULT_LIMIT, offset: 0) tsquery = generate_query_for_search(terms) find_by_sql([BASIC_SEARCH_SQL, { limit: limit, offset: offset, tsquery: tsquery }]).tap do |records| @@ -126,7 +128,7 @@ module AccountSearch end end - def advanced_search_for(terms, account, limit: 10, following: false, offset: 0) + def advanced_search_for(terms, account, limit: DEFAULT_LIMIT, following: false, offset: 0) tsquery = generate_query_for_search(terms) sql_template = following ? ADVANCED_SEARCH_WITH_FOLLOWING : ADVANCED_SEARCH_WITHOUT_FOLLOWING diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb index c0ee1bdce..4cdbdeb47 100644 --- a/app/models/concerns/attachmentable.rb +++ b/app/models/concerns/attachmentable.rb @@ -52,9 +52,13 @@ module Attachmentable return if attachment.blank? || !/image.*/.match?(attachment.content_type) || attachment.queued_for_write[:original].blank? width, height = FastImage.size(attachment.queued_for_write[:original].path) - matrix_limit = attachment.content_type == 'image/gif' ? GIF_MATRIX_LIMIT : MAX_MATRIX_LIMIT + return unless width.present? && height.present? - raise Mastodon::DimensionsValidationError, "#{width}x#{height} images are not supported" if width.present? && height.present? && (width * height > matrix_limit) + if attachment.content_type == 'image/gif' && width * height > GIF_MATRIX_LIMIT + raise Mastodon::DimensionsValidationError, "#{width}x#{height} GIF files are not supported" + elsif width * height > MAX_MATRIX_LIMIT + raise Mastodon::DimensionsValidationError, "#{width}x#{height} images are not supported" + end end def appropriate_extension(attachment) diff --git a/app/models/status_edit.rb b/app/models/status_edit.rb index 2b3248bb2..50dabb91f 100644 --- a/app/models/status_edit.rb +++ b/app/models/status_edit.rb @@ -39,7 +39,7 @@ class StatusEdit < ApplicationRecord belongs_to :status belongs_to :account, optional: true - default_scope { order(id: :asc) } + scope :ordered, -> { order(id: :asc) } delegate :local?, :application, :edited?, :edited_at, :discarded?, :visibility, to: :status diff --git a/app/models/user.rb b/app/models/user.rb index ef621e1bc..5185343af 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -96,11 +96,9 @@ class User < ApplicationRecord accepts_nested_attributes_for :invite_request, reject_if: ->(attributes) { attributes['text'].blank? && !Setting.require_invite_text } validates :invite_request, presence: true, on: :create, if: :invite_text_required? - validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale? validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? } validates_with EmailMxValidator, if: :validate_email_dns? validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create - validates :time_zone, inclusion: { in: ActiveSupport::TimeZone.all.map { |tz| tz.tzinfo.name } }, allow_blank: true # Honeypot/anti-spam fields attr_accessor :registration_form_time, :website, :confirm_password @@ -124,6 +122,8 @@ class User < ApplicationRecord before_validation :sanitize_languages before_validation :sanitize_role + before_validation :sanitize_time_zone + before_validation :sanitize_locale before_create :set_approved after_commit :send_pending_devise_notifications after_create_commit :trigger_webhooks @@ -451,9 +451,15 @@ class User < ApplicationRecord end def sanitize_role - return if role.nil? + self.role = nil if role.present? && role.everyone? + end - self.role = nil if role.everyone? + def sanitize_time_zone + self.time_zone = nil if time_zone.present? && ActiveSupport::TimeZone[time_zone].nil? + end + + def sanitize_locale + self.locale = nil if locale.present? && I18n.available_locales.exclude?(locale.to_sym) end def prepare_new_user! diff --git a/app/validators/status_pin_validator.rb b/app/validators/status_pin_validator.rb index 2fdd5b34f..c9c1effba 100644 --- a/app/validators/status_pin_validator.rb +++ b/app/validators/status_pin_validator.rb @@ -1,10 +1,12 @@ # frozen_string_literal: true class StatusPinValidator < ActiveModel::Validator + PIN_LIMIT = 5 + def validate(pin) pin.errors.add(:base, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog? pin.errors.add(:base, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id pin.errors.add(:base, I18n.t('statuses.pin_errors.direct')) if pin.status.direct_visibility? - pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count > 4 && pin.account.local? + pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count >= PIN_LIMIT && pin.account.local? end end diff --git a/app/views/admin_mailer/_new_trending_links.text.erb b/app/views/admin_mailer/_new_trending_links.text.erb index 85f3f8039..0e2a6a20a 100644 --- a/app/views/admin_mailer/_new_trending_links.text.erb +++ b/app/views/admin_mailer/_new_trending_links.text.erb @@ -1,6 +1,6 @@ <%= raw t('admin_mailer.new_trends.new_trending_links.title') %> -<% @links.each do |link| %> +<% new_trending_links.each do |link| %> - <%= link.title %> · <%= link.url %> <%= standard_locale_name(link.language) %> · <%= raw t('admin.trends.links.usage_comparison', today: link.history.get(Time.now.utc).accounts, yesterday: link.history.get(Time.now.utc - 1.day).accounts) %> · <%= t('admin.trends.tags.current_score', score: link.trend.score.round(2)) %> <% end %> diff --git a/app/views/admin_mailer/_new_trending_statuses.text.erb b/app/views/admin_mailer/_new_trending_statuses.text.erb index eedbfff9d..05bb9733f 100644 --- a/app/views/admin_mailer/_new_trending_statuses.text.erb +++ b/app/views/admin_mailer/_new_trending_statuses.text.erb @@ -1,6 +1,6 @@ <%= raw t('admin_mailer.new_trends.new_trending_statuses.title') %> -<% @statuses.each do |status| %> +<% new_trending_statuses.each do |status| %> - <%= ActivityPub::TagManager.instance.url_for(status) %> <%= standard_locale_name(status.language) %> · <%= raw t('admin.trends.tags.current_score', score: status.trend.score.round(2)) %> <% end %> diff --git a/app/views/admin_mailer/_new_trending_tags.text.erb b/app/views/admin_mailer/_new_trending_tags.text.erb index d528ab8eb..f738caaf3 100644 --- a/app/views/admin_mailer/_new_trending_tags.text.erb +++ b/app/views/admin_mailer/_new_trending_tags.text.erb @@ -1,14 +1,8 @@ <%= raw t('admin_mailer.new_trends.new_trending_tags.title') %> -<% @tags.each do |tag| %> +<% new_trending_tags.each do |tag| %> - #<%= tag.display_name %> <%= raw t('admin.trends.tags.usage_comparison', today: tag.history.get(Time.now.utc).accounts, yesterday: tag.history.get(Time.now.utc - 1.day).accounts) %> · <%= t('admin.trends.tags.current_score', score: Trends.tags.score(tag.id).round(2)) %> <% end %> -<% if @lowest_trending_tag %> -<%= raw t('admin_mailer.new_trends.new_trending_tags.requirements', lowest_tag_name: @lowest_trending_tag.display_name, lowest_tag_score: Trends.tags.score(@lowest_trending_tag.id).round(2), rank: Trends.tags.options[:review_threshold]) %> -<% else %> -<%= raw t('admin_mailer.new_trends.new_trending_tags.no_approved_tags') %> -<% end %> - <%= raw t('application_mailer.view')%> <%= admin_trends_tags_url(status: 'pending_review') %> diff --git a/app/views/admin_mailer/new_trends.text.erb b/app/views/admin_mailer/new_trends.text.erb index 13b296846..10b10e604 100644 --- a/app/views/admin_mailer/new_trends.text.erb +++ b/app/views/admin_mailer/new_trends.text.erb @@ -2,12 +2,6 @@ <%= raw t('admin_mailer.new_trends.body') %> -<% unless @links.empty? %> -<%= render 'new_trending_links' %> -<% end %> -<% unless @tags.empty? %> -<%= render 'new_trending_tags' unless @tags.empty? %> -<% end %> -<% unless @statuses.empty? %> -<%= render 'new_trending_statuses' unless @statuses.empty? %> -<% end %> +<%= render partial: 'new_trending_links', object: @links unless @links.empty? %> +<%= render partial: 'new_trending_tags', object: @tags unless @tags.empty? %> +<%= render partial: 'new_trending_statuses', object: @statuses unless @statuses.empty? %> diff --git a/config/locales/an.yml b/config/locales/an.yml index 7922ccf58..de791679b 100644 --- a/config/locales/an.yml +++ b/config/locales/an.yml @@ -900,8 +900,6 @@ an: new_trending_statuses: title: Publicacions en tendencia new_trending_tags: - no_approved_tags: Actualment no i hai garra etiqueta en tendencia aprebada. - requirements: 'Qualsequiera d''estes candidatos podría superar lo hashtag en tendencia aprebau per #%{rank}, que actualment ye #%{lowest_tag_name} con una puntuación de %{lowest_tag_score}.' title: Etiquetas en tendencia subject: Nuevas tendencias asperando estar revisadas en %{instance} aliases: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index f43d1ad2a..c1b2677dc 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1068,8 +1068,6 @@ ar: new_trending_statuses: title: المنشورات الشائعة new_trending_tags: - no_approved_tags: لا توجد حاليًا وسوم شائعة موافق عليها. - requirements: 'يمكن لأي من هؤلاء المرشحين أن يتجاوز علامة #%{rank} من الوسوم الموافق عليها، وهي حاليا #%{lowest_tag_name} مع نتيجة %{lowest_tag_score}.' title: الوسوم المتداولة subject: تداولات جديدة في انتظار المراجعة على %{instance} aliases: diff --git a/config/locales/be.yml b/config/locales/be.yml index fa43373f6..d8703b799 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -1033,8 +1033,6 @@ be: new_trending_statuses: title: Папулярныя допісы new_trending_tags: - no_approved_tags: Зараз няма зацверджаных папулярных хэштэгаў. - requirements: 'Кожны з гэтых кандыдатаў можа перавысіць #%{rank} зацверджаных папулярных хэштэгаў. Зараз гэта #%{lowest_tag_name} з лікам %{lowest_tag_score}.' title: Папулярныя хэштэгі subject: Новае ў папулярным для разгляду %{instance} aliases: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index dfff7058d..b06c5404c 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -611,6 +611,7 @@ bg: created_at: Докладвано delete_and_resolve: Изтриване на публикациите forwarded: Препратено + forwarded_replies_explanation: Този доклад е от отдалечен потребител и за отдалечено съдържание. То е препратено до вас, защото докладваното съдържание е в отговор на един от потребителите ви. forwarded_to: Препратено до %{domain} mark_as_resolved: Маркиране като решено mark_as_sensitive: Означаване като деликатно @@ -996,8 +997,6 @@ bg: new_trending_statuses: title: Налагащи се публикации new_trending_tags: - no_approved_tags: Сега няма одобрени налагащи се хаштагове. - requirements: 'Всеки от тези кандидати може да надмине #%{rank} одобрен актуален хаштаг, който в момента е #%{lowest_tag_name} с резултат %{lowest_tag_score}.' title: Налагащи се хаштагове subject: Нови нашумели, готови за преглед в %{instance} aliases: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 03b3ff3c2..85b444c28 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -995,8 +995,6 @@ ca: new_trending_statuses: title: Tuts en tendència new_trending_tags: - no_approved_tags: Actualment no hi ha etiquetes en tendència aprovades. - requirements: 'Qualsevol d''aquests candidats podria superar el #%{rank} de la etiqueta en tendència aprovada, que actualment és "%{lowest_tag_name}" amb una puntuació de %{lowest_tag_score}.' title: Etiquetes en tendència subject: Noves tendències pendents de revisar a %{instance} aliases: @@ -1040,6 +1038,10 @@ ca: hint_html: Una cosa més! Necessitem confirmar que ets una persona humana (és així com mantenim a ratlla l'spam). Resolt el CAPTCHA inferior i clica a "Segueix". title: Revisió de seguretat confirmations: + clicking_this_link: en clicar aquest enllaç + login_link: inici de sessió + proceed_to_login_html: Ara pots passar a %{login_link}. + welcome_title: Hola, %{name}! wrong_email_hint: Si aquesta adreça de correu electrònic no és correcte, pots canviar-la en els ajustos del compte. delete_account: Elimina el compte delete_account_html: Si vols suprimir el compte pots fer-ho aquí. Se't demanarà confirmació. @@ -1571,6 +1573,8 @@ ca: over_daily_limit: Has superat el límit de %{limit} tuts programats per a avui over_total_limit: Has superat el límit de %{limit} tuts programats too_soon: La data programada ha de ser futura + self_destruct: + title: Aquest servidor tancarà sessions: activity: Última activitat browser: Navegador diff --git a/config/locales/cs.yml b/config/locales/cs.yml index a04682a44..e3e804172 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1029,8 +1029,6 @@ cs: new_trending_statuses: 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: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index c9d5b8828..7f60e9342 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1068,8 +1068,6 @@ cy: new_trending_statuses: title: Postiadau sy'n trendio new_trending_tags: - no_approved_tags: Ar hyn o bryd nid oes unrhyw hashnodau trendio cymeradwy. - requirements: 'Gallai unrhyw un o''r ymgeiswyr hyn ragori ar yr hashnod trendio cymeradwy #%{rank}, sef #%{lowest_tag_name} gyda sgôr o %{lowest_tag_score} ar hyn o bryd.' title: Hashnodau sy'n trendio subject: Trendiau newydd i'w hadolygu ar %{instance} aliases: diff --git a/config/locales/da.yml b/config/locales/da.yml index 7344d789f..6403ac1cc 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -997,8 +997,6 @@ da: new_trending_statuses: title: Populære opslag new_trending_tags: - no_approved_tags: Der er pt. ingen godkendte populære hashtags. - requirements: 'Enhver af disse kandidater vil kunne overgå #%{rank} godkendte populære hastag, der med en score på #%{lowest_tag_score} pt. er %{lowest_tag_name}.' title: Populære hashtags subject: Nye tendenser klar til revision på %{instance} aliases: diff --git a/config/locales/de.yml b/config/locales/de.yml index 69309737d..e084fdf70 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -997,8 +997,6 @@ de: new_trending_statuses: title: Angesagte Beiträge new_trending_tags: - no_approved_tags: Es gibt keine genehmigten Hashtags, die gerade im Trend liegen. - requirements: 'Jeder dieser Kandidaten könnte den #%{rank} genehmigten angesagten Hashtag übertreffen, der derzeit #%{lowest_tag_name} mit einer Punktzahl von %{lowest_tag_score} ist.' title: Angesagte Hashtags subject: Neue Trends zur Überprüfung auf %{instance} aliases: @@ -1239,7 +1237,7 @@ de: home: Startseite und Listen notifications: Benachrichtigungen public: Öffentliche Timelines - thread: Unterhaltungen + thread: Private Erwähnungen edit: add_keyword: Schlagwort hinzufügen keywords: Schlagwörter diff --git a/config/locales/devise.lt.yml b/config/locales/devise.lt.yml index 6c5cb837a..5429b217d 100644 --- a/config/locales/devise.lt.yml +++ b/config/locales/devise.lt.yml @@ -1 +1,117 @@ +--- lt: + devise: + confirmations: + confirmed: Tavo el. pašto adresas buvo sėkmingai patvirtintas. + send_instructions: Po kelių minučių gausi el. laišką su instrukcijomis, kaip patvirtinti savo el. pašto adresą. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + send_paranoid_instructions: Jei tavo el. pašto adresas yra mūsų duomenų bazėje, po kelių minučių gausi el. laišką su instrukcijomis, kaip patvirtinti savo el. pašto adresą. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + failure: + already_authenticated: Tu jau prisijungęs (-usi). + inactive: Tavo paskyra dar nėra aktyvuota. + invalid: Netinkami %{authentication_keys} arba slaptažodis. + last_attempt: Turi dar vieną bandymą, kol tavo paskyra bus užrakinta. + locked: Tavo paskyra užrakinta. + not_found_in_database: Netinkami %{authentication_keys} arba slaptažodis. + pending: Tavo paskyra vis dar peržiūrima. + timeout: Tavo seansas baigėsi. Norėdamas (-a) tęsti, prisijunk dar kartą. + unauthenticated: Prieš tęsdamas (-a) turi prisijungti arba užsiregistruoti. + unconfirmed: Prieš tęsdamas (-a) turi patvirtinti savo el. pašto adresą. + mailer: + confirmation_instructions: + action: Patvirtinti el. pašto adresą + action_with_app: Patvirtinti ir grįžti į %{app} + explanation: Šiuo el. pašto adresu sukūrei paskyrą %{host}. Iki jos aktyvavimo liko vienas paspaudimas. Jei tai buvo ne tu, ignoruok šį el. laišką. + explanation_when_pending: Šiuo el. pašto adresu pateikei paraišką pakvietimui į %{host}. Kai patvirtinsi savo el. pašto adresą, mes peržiūrėsime tavo paraišką. Gali prisijungti ir pakeisti savo duomenis arba ištrinti paskyrą, tačiau negalėsi naudotis daugeliu funkcijų, kol tavo paskyra nebus patvirtinta. Jei tavo paraiška bus atmesta, duomenys bus pašalinti, todėl jokių papildomų veiksmų iš tavęs nereikės. Jei tai buvo ne tu, ignoruok šį el. laišką. + extra_html: Taip pat peržiūrėk serverio taisykles ir mūsų paslaugų teikimo sąlygas. + subject: 'Mastodon: patvirtinimo instrukcijos %{instance}' + title: Patvirtinti el. pašto adresą + email_changed: + explanation: 'Tavo paskyros el. pašto adresas yra keičiamas į:' + extra: Jei el. pašto nepakeitei, tikėtina, kad kažkas įgijo prieigą prie tavo paskyros. Nedelsiant pakeisk slaptažodį arba kreipkis į serverio administratorių (-ę), jei tavo paskyra užrakinta. + subject: 'Mastodon: el. paštas pakeistas' + title: Naujas el. pašto adresas + password_change: + explanation: Pakeistas tavo paskyros slaptažodis. + extra: Jei slaptažodio nepakeitei, tikėtina, kad kažkas įgijo prieigą prie tavo paskyros. Nedelsiant pakeisk slaptažodį arba kreipkis į serverio administratorių (-ę), jei tavo paskyra užrakinta. + subject: 'Mastodon: slaptažodis pakeistas' + title: Pakeistas slaptažodis + reconfirmation_instructions: + explanation: Patvirtink naująjį adresą, kad pakeistum savo el. paštą. + extra: Jei šį pakeitimą pradėjai ne tu, ignoruok šį el. laišką. Mastodon paskyros el. pašto adresas nepasikeis, kol nepasinaudosi aukščiau pateikta nuoroda. + subject: 'Mastodon: patvirtinti el. paštą %{instance}' + title: Patvirtinti el. pašto adresą + reset_password_instructions: + action: Keisti slaptažodį + explanation: Paprašei naujo paskyros slaptažodžio. + extra: Jei to neprašei, ignoruok šį el. laišką. Tavo slaptažodis nepasikeis, kol nepasinaudosi aukščiau esančia nuoroda ir nesusikursi naują. + subject: 'Mastodon: slaptažodžio keitimo instrukcijos' + title: Slaptažodžio keitimas + two_factor_disabled: + explanation: Dviejų tapatybės patikrinimas tavo paskyrai buvo išjungtas. Prisijungimas dabar galimas naudojant tik el. pašto adresą ir slaptažodį. + subject: 'Mastodon: dviejų tapatybės patikrinimas išjungtas' + title: 2FA išjungta + two_factor_enabled: + explanation: Tavo paskyrai įgalintas dvejų tapatybės patikrinimas. Prisijungiant reikės susietos TOTP programėlės sugeneruoto priegos rakto. + subject: 'Mastodon: dviejų tapatybės patikrinimas įgalintas' + title: 2FA įgalinta + two_factor_recovery_codes_changed: + explanation: Ankstesnieji atkūrimo kodai yra negaliojantys ir sugeneruojami nauji. + subject: 'Mastodon: dviejų tapatybės atkūrimo kodai iš naujo sugeneruoti' + title: Pakeisti 2FA atkūrimo kodai + unlock_instructions: + subject: 'Mastodon: atrakinimo instrukcijos' + webauthn_credential: + added: + explanation: Į tavo paskyrą buvo pridėtas šis saugumo raktas + subject: 'Mastodon: naujas saugumo raktas' + title: Pridėtas naujas saugumo raktas + deleted: + explanation: Iš tavo paskyros buvo ištrintas šis saugumo raktas + subject: 'Mastodon: saugumo raktas ištrintas' + title: Vienas iš tavo saugumo raktų buvo ištrintas + webauthn_disabled: + explanation: Tavo paskyrai buvo išjungtas tapatybės nustatymas naudojant saugumo raktus. Prisijungimas dabar galimas naudojant tik susietos TOTP programėlės sugeneruotą prieigos raktą. + subject: 'Mastodon: tapatybės nustatymas naudojant saugumo raktai išjungta' + title: Saugumo raktai išjungti + webauthn_enabled: + explanation: Saugumo rakto tapatybės nustatymas tavo paskyrai įgalintas. Dabar prisijungimui galima naudoti saugumo raktą. + subject: 'Mastodon: saugumo rakto tapatybės nustatymas įgalintas' + title: Saugumo raktai įgalinti + omniauth_callbacks: + failure: Nepavyko nustatyti tapatybės iš %{kind}, nes „%{reason}“. + success: Sėkmingai nustatyta tapatybė iš %{kind} paskyros. + passwords: + no_token: Į šį puslapį gali patekti tik gavęs (-usi) slaptažodžio keitimo el. laišką. Jei atėjai iš slaptažodžio keitimo el. laiško, įsitikink, kad naudojai visą pateiktą URL adresą. + send_instructions: Jei tavo el. pašto adresas egzistuoja mūsų duomenų bazėje, po kelių minučių į savo el. pašto adresą gausi slaptažodžio atkūrimo nuorodą. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + send_paranoid_instructions: Jei tavo el. pašto adresas egzistuoja mūsų duomenų bazėje, po kelių minučių į savo el. pašto adresą gausi slaptažodžio atkūrimo nuorodą. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + updated: Tavo slaptažodis buvo sėkmingai pakeistas. Dabar esi prisijungęs (-usi). + updated_not_active: Tavo slaptažodis buvo sėkmingai pakeistas. + registrations: + destroyed: Iki pasimatymo! Tavo paskyra sėkmingai atšaukta. Tikimės, kad netrukus vėl pamatysime tave. + signed_up: Sveiki! Tu sėkmingai užsiregistravai. + signed_up_but_inactive: Sėkmingai užsiregistravai. Tačiau negalėjome tavęs prijungti, nes tavo paskyra dar nėra aktyvuota. + signed_up_but_locked: Sėkmingai užsiregistravai. Tačiau negalėjome tavęs prijungti, nes tavo paskyra dar užrakinta. + signed_up_but_pending: Į tavo el. pašto adresą buvo išsiųstas laiškas su patvirtinimo nuoroda. Paspaudęs (-usi) nuorodą, peržiūrėsime tavo paraišką. Tau bus pranešta, jei ji patvirtinta. + signed_up_but_unconfirmed: Į tavo el. pašto adresą buvo išsiųstas laiškas su patvirtinimo nuoroda. Paspausk nuorodą, kad aktyvuotum savo paskyrą. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + update_needs_confirmation: Sėkmingai atnaujinai savo paskyrą, bet mums reikia patvirtinti naująjį el. pašto adresą. Patikrink savo el. paštą ir paspausk patvirtinimo nuorodą, kad patvirtintum savo naują el. pašto adresą. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + updated: Tavo paskyra buvo sėkmingai atnaujinta. + sessions: + already_signed_out: Atsijungta sėkmingai. + signed_in: Prisijungta sėkmingai. + signed_out: Atjungta sėkmingai. + unlocks: + send_instructions: Po kelių minučių gausi el. laišką su instrukcijomis, kaip atrakinti paskyrą. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + send_paranoid_instructions: Jei paskyra egzistuoja, po kelių minučių gausi el. laišką su instrukcijomis, kaip ją atrakinti. Jei negavai šio el. laiško, patikrink šlamšto aplanką. + unlocked: Tavo paskyra sėkmingai atrakinta. Norėdamas (-a) tęsti, prisijunk. + errors: + messages: + already_confirmed: jau buvo patvirtintas, pabandyk prisijungti. + confirmation_period_expired: turi būti patvirtintas per %{period}, paprašyk naujo. + expired: nustojo galioti, paprašyk naujos. + not_found: nerasta. + not_locked: nebuvo užrakintas. + not_saved: + few: "%{count} klaidos neleido išsaugoti šio %{resource}:" + many: "%{count} klaido neleido išsaugoti šio %{resource}:" + one: '1 klaida neleido išsaugoti šio %{resource}:' + other: "%{count} klaidų neleido išsaugoti šio %{resource}:" diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml index cc7b88a28..552dfeba3 100644 --- a/config/locales/doorkeeper.de.yml +++ b/config/locales/doorkeeper.de.yml @@ -125,7 +125,7 @@ de: all: Voller Zugriff auf dein Mastodon-Konto blocks: Blockierungen bookmarks: Lesezeichen - conversations: Unterhaltungen + conversations: Private Erwähnungen crypto: Ende-zu-Ende-Verschlüsselung favourites: Favoriten filters: Filter diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml index 8e6e4b8aa..4721e3acd 100644 --- a/config/locales/doorkeeper.ko.yml +++ b/config/locales/doorkeeper.ko.yml @@ -27,7 +27,7 @@ ko: confirmations: destroy: 확실합니까? edit: - title: 애플리케이션 수정 + title: 애플리케이션 편집 form: error: 이런! 오류를 확인하세요 help: diff --git a/config/locales/el.yml b/config/locales/el.yml index c4c3d3939..4c58bfda0 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -938,8 +938,6 @@ el: new_trending_statuses: title: Αναρτήσεις σε τάση new_trending_tags: - no_approved_tags: Προς το παρόν δεν υπάρχουν εγκεκριμένες ετικέτεςσε τάση. - requirements: 'Οποιοσδήποτε από αυτούς τους υποψηφίους θα μπορούσε να ξεπεράσει την #%{rank} εγκεκριμένη ετικέτα σε τάση, που επί του παρόντος είναι #%{lowest_tag_name} με βαθμολογία %{lowest_tag_score}.' title: Ετικέτες σε τάση subject: Νέες τάσεις προς αξιολόγηση στο %{instance} aliases: diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 98a40c45c..987788a7a 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -995,8 +995,6 @@ en-GB: new_trending_statuses: title: Trending posts new_trending_tags: - no_approved_tags: There are currently no approved trending hashtags. - requirements: 'Any of these candidates could surpass the #%{rank} approved trending hashtag, which is currently #%{lowest_tag_name} with a score of %{lowest_tag_score}.' title: Trending hashtags subject: New trends up for review on %{instance} aliases: diff --git a/config/locales/en.yml b/config/locales/en.yml index 057f7a584..15d682d17 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -997,8 +997,6 @@ en: new_trending_statuses: title: Trending posts new_trending_tags: - no_approved_tags: There are currently no approved trending hashtags. - requirements: 'Any of these candidates could surpass the #%{rank} approved trending hashtag, which is currently #%{lowest_tag_name} with a score of %{lowest_tag_score}.' title: Trending hashtags subject: New trends up for review on %{instance} aliases: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 066899995..9ae595394 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -773,6 +773,8 @@ eo: site_uploads: delete: Forigi elŝutitan dosieron destroyed_msg: Reteja alŝuto sukcese forigita! + software_updates: + documentation_link: Lerni pli statuses: account: Skribanto application: Aplikaĵo @@ -950,8 +952,6 @@ eo: new_trending_statuses: title: Popularaĝaj mesaĝoj new_trending_tags: - no_approved_tags: Nun ne havas aprobitajn popularajn kradvortojn. - requirements: Ajn ĉi tiu eroj povas superi la %{rank}an kradvorton kiu estas %{lowest_tag_name} kun %{lowest_tag_score} puentoj. title: Tendencantaj kradvortoj subject: Novaj popularaĵoj bezonas kontrolitis ĉe %{instance} aliases: @@ -994,6 +994,8 @@ eo: help_html: Se vi havas problemojn solvi la CAPTCHA, vi povas kontakti nin per %{email} kaj ni povas helpi vin. title: Sekureckontrolo confirmations: + login_link: ensaluti + welcome_title: Bonvenon, %{name}! wrong_email_hint: Se tiu retpoŝtadreso ne estas ĝusta, vi povas ŝanĝi ĝin en la agordoj pri la konto. delete_account: Forigi konton delete_account_html: Se vi deziras forigi vian konton, vi povas fari tion ĉi tie. Vi bezonos konfirmi vian peton. @@ -1720,6 +1722,10 @@ eo: seamless_external_login: Vi estas ensalutinta per ekstera servo, do pasvortaj kaj retadresaj agordoj ne estas disponeblaj. signed_in_as: 'Salutinta kiel:' verification: + extra_instructions_html: Konsilo: La ligilo en via retejo povas esti nevidebla. La grava parto estas rel="me", kiu evitas identoŝtelon en retejoj kun enhavo generita de uzantoj. Vi povas eĉ uzi link-etikedon en la header de la paĝo anstataŭ a, sed la HTML devas esti atingebla sen plenumado de JavaScript. + here_is_how: Jen gvidilo + hint_html: "Ĉiu ajn povas aŭtentigi sian identecon en Mastodon. Bazinte sur malfermitaj interretaj normoj, nun kaj ĉiame senkoste. Vi nur bezonas personan retejon, per kiu homoj rekonas vin. Kiam vi ligos tiun retejon de via profilo, ni kontrolos, ĉu la retejo responde ligiĝas kun via profilo, kaj montros videblan indikilon tie." + instructions_html: Kopiu kaj algluu la jenan kodon en la HTML de via retejo. Poste aldonu la adreson de via retejo en unu el la kromaj kampoj de via profilo en la langeto "Redakti profilon" kaj konservu la ŝanĝojn. verification: Kontrolo verified_links: Via kontrolitaj ligiloj webauthn_credentials: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 88248d098..0000c297a 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -997,8 +997,6 @@ es-AR: new_trending_statuses: title: Mensajes en tendencia new_trending_tags: - no_approved_tags: Actualmente no hay etiquetas en tendencia aprobadas. - requirements: 'Cualquiera de estos candidatos podría superar la etiqueta en tendencia aprobada de #%{rank}, que actualmente es #%{lowest_tag_name} con una puntuación de %{lowest_tag_score}.' title: Etiquetas en tendencia subject: Nuevas tendencias para revisar en %{instance} aliases: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 4ecb666b0..424262ca1 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -997,8 +997,6 @@ es-MX: new_trending_statuses: title: Publicaciones en tendencia new_trending_tags: - no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. - requirements: 'Cualquiera de estos candidatos podría superar el hashtag en tendencia aprobado por #%{rank}, que actualmente es #%{lowest_tag_name} con una puntuación de %{lowest_tag_score}.' title: Etiquetas en tendencia subject: Nuevas tendencias esperando ser revisadas en %{instance} aliases: diff --git a/config/locales/es.yml b/config/locales/es.yml index 72a36250f..f4a70e5e5 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -997,8 +997,6 @@ es: new_trending_statuses: title: Publicaciones en tendencia new_trending_tags: - no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. - requirements: 'Cualquiera de estos candidatos podría superar el hashtag en tendencia aprobado por #%{rank}, que actualmente es #%{lowest_tag_name} con una puntuación de %{lowest_tag_score}.' title: Etiquetas en tendencia subject: Nuevas tendencias esperando ser revisadas en %{instance} aliases: diff --git a/config/locales/et.yml b/config/locales/et.yml index 4f5a83624..20f79bdd3 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -981,8 +981,6 @@ et: new_trending_statuses: title: Trendikad postitused new_trending_tags: - no_approved_tags: Hetkel ei ole ühtegi heaks kiidetud populaarset silti. - requirements: 'Need on siltide kandidaadid mille hulgast ükskõik milline võib järjekorras mööda jõuda #%{rank} kohal olevast heaks kiidetud sildist. See on hetkel #%{lowest_tag_name} mille seis on %{lowest_tag_score}.' title: Trendikad sildid subject: Uued %{instance} trendid ülevaatuseks aliases: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 6aa92c2d1..e3062d9df 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -994,8 +994,6 @@ eu: new_trending_statuses: title: Bidalketen joerak new_trending_tags: - no_approved_tags: Ez dago onartutako traolen joerarik une honetan. - requirements: 'Hautagai hauek joeretan onartutako %{rank}. traola gainditu dezakete: une honetan #%{lowest_tag_name} da, %{lowest_tag_score} puntuazioarekin.' title: Traolak joeran subject: Joera berriak daude berrikusteko %{instance} instantzian aliases: diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 04fb52e75..f93aac603 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -848,7 +848,6 @@ fa: new_trending_statuses: title: فرسته‌های داغ new_trending_tags: - no_approved_tags: در حال حاضر هیچ برچسب پرطرفداری پذیرفته نشده است. title: برچسب‌های داغ subject: موضوغ داغ تازه‌ای در %{instance} نیازمند بررسی است aliases: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 73442396f..d48653edc 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -997,8 +997,6 @@ fi: new_trending_statuses: title: Suositut julkaisut new_trending_tags: - no_approved_tags: Tällä hetkellä ei ole hyväksyttyjä suosittuja aihetunnisteita. - requirements: 'Mikä tahansa näistä ehdokkaista voisi ylittää #%{rank} hyväksytyn suositun aihetunnisteen, joka on tällä hetkellä #%{lowest_tag_name} %{lowest_tag_score} pisteellä.' title: Suositut aihetunnisteet subject: Uusia trendejä tarkistettavaksi instanssissa %{instance} aliases: diff --git a/config/locales/fo.yml b/config/locales/fo.yml index ffa54f588..726c9607e 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -996,8 +996,6 @@ fo: new_trending_statuses: title: Vælumtóktir postar new_trending_tags: - no_approved_tags: Í løtuni eru eingi góðkend vælumtókt frámerki. - requirements: 'Einhvør av hesum kandidatum kunnu fara framum #%{rank} góðkenda vælumtókta frámerki, sum í løtuni er #%{lowest_tag_name} við stigatali %{lowest_tag_score}.' title: Vælumtókt frámerki subject: Nýggj rák til gjøgnumgongd á %{instance} aliases: diff --git a/config/locales/fr-QC.yml b/config/locales/fr-QC.yml index f7425ea32..3aba8713f 100644 --- a/config/locales/fr-QC.yml +++ b/config/locales/fr-QC.yml @@ -996,8 +996,6 @@ fr-QC: new_trending_statuses: title: Messages tendance new_trending_tags: - no_approved_tags: Il n'y a pas de hashtag tendance approuvé actuellement. - requirements: 'N''importe quel élément de la sélection pourrait surpasser le hashtag tendance approuvé n°%{rank}, qui est actuellement #%{lowest_tag_name} avec un résultat de %{lowest_tag_score}.' title: Hashtags tendance subject: Nouvelles tendances à examiner sur %{instance} aliases: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 289afb226..a69a5b535 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -996,8 +996,6 @@ fr: new_trending_statuses: title: Messages tendance new_trending_tags: - no_approved_tags: Il n'y a pas de hashtag tendance approuvé actuellement. - requirements: 'N''importe quel élément de la sélection pourrait surpasser le hashtag tendance approuvé n°%{rank}, qui est actuellement #%{lowest_tag_name} avec un résultat de %{lowest_tag_score}.' title: Hashtags tendance subject: Nouvelles tendances à examiner sur %{instance} aliases: diff --git a/config/locales/fy.yml b/config/locales/fy.yml index de609a14d..6a7cb3551 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -996,8 +996,6 @@ fy: new_trending_statuses: title: Trending berjochten new_trending_tags: - no_approved_tags: Op dit stuit binne der gjin goedkarre hashtags. - requirements: 'Elk fan dizze kandidaten kin de #%{rank} goedkarre trending hashtag oertreffe, dy’t op dit stuit #%{lowest_tag_name} is mei in skoare fan %{lowest_tag_score}.' title: Trending hashtags subject: Nije trends te beoardielen op %{instance} aliases: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index b2ccdd4d9..965447d4f 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1032,8 +1032,6 @@ gd: new_trending_statuses: title: Postaichean a’ treandadh new_trending_tags: - no_approved_tags: Chan eil taga hais a’ treandadh le aontachadh ann. - requirements: "’S urrainn do ghin dhe na tagraichean seo dol thairis air #%{rank} a tha aig an taga hais #%{lowest_tag_name} a’ treandadh as ìsle le aontachadh agus sgòr de %{lowest_tag_score} air." title: Tagaichean hais a’ treandadh subject: Tha treandaichean ùra a’ feitheamh air lèirmheas air %{instance} aliases: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 955ec50e7..c0e76842f 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -784,7 +784,7 @@ gl: destroyed_msg: Eliminado correctamente o subido! software_updates: critical_update: Crítica - actualiza axiña - description: Recomendamos manter actualizado o teu servidor Mastodon para beneficiarte dos últimos arranxos e características. A maiores, de cando en vez hai actualizacións para evitar problemas importantes de seguridade. Debido a isto, Mastodon comproba cada 30 minutos se hai actualizacións e avisarate seguindo as túas preferencias de notificación por correo electrónico. + description: Aconsellamos manter actualizado o teu servidor Mastodon para beneficiarte dos últimos arranxos e características. A maiores, de cando en vez hai actualizacións para evitar problemas importantes de seguridade. Debido a isto, Mastodon comproba cada 30 minutos se hai actualizacións e avisarate seguindo as túas preferencias de notificación por correo electrónico. documentation_link: Saber máis release_notes: Notas da versión title: Actualizacións dispoñibles @@ -997,8 +997,6 @@ gl: new_trending_statuses: title: Publicacións en voga new_trending_tags: - no_approved_tags: Non hai etiquetas en voga aprobadas. - requirements: 'Calquera destos candidatos podería superar o #%{rank} dos cancelos en voga aprobados, que actualmente é #%{lowest_tag_name} cunha puntuación de %{lowest_tag_score}.' title: Cancelos en voga subject: Novas tendencias para revisar en %{instance} aliases: @@ -1791,7 +1789,7 @@ gl: 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. + further_actions_html: Se non foches ti, aconsellámosche %{action} inmediatamente e activar o segundo factor de autenticación para manter conta segura. subject: Accedeuse á túa conta desde novos enderezos IP title: Novo acceso warning: diff --git a/config/locales/he.yml b/config/locales/he.yml index 35dc99650..f2cc88214 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -76,7 +76,7 @@ he: enabled_msg: ביטול השעית החשבון של %{username} בוצע בהצלחה followers: עוקבים follows: נעקבים - header: כותרת + header: תמונת נושא inbox_url: כתובת תיבת דואר נכנס invite_request_text: סיבות להצטרפות invited_by: הוזמן על ידי @@ -128,7 +128,7 @@ he: remove_avatar: הסרת תמונת פרופיל remove_header: הסרת כותרת removed_avatar_msg: תמונת הפרופיל של %{username} הוסרה בהצלחה - removed_header_msg: תמונת הראשה של %{username} הוסרה בהצלחה + removed_header_msg: תמונת הנושא של %{username} הוסרה בהצלחה resend_confirmation: already_confirmed: משתמש זה כבר אושר send: שלח מחדש קישור לאימות @@ -1033,8 +1033,6 @@ he: new_trending_statuses: title: הודעות חמות new_trending_tags: - no_approved_tags: אין כרגע שום תגיות חמות מאושרות. - requirements: כל אחת מהמועמדות האלו עשויה לעבור את התגית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_tag_name} עם ציון של %{lowest_tag_score}. title: תגיות חמות subject: נושאים חמים חדשים מוכנים לסקירה ב-%{instance} aliases: @@ -1281,7 +1279,7 @@ he: keywords: מילות מפתח statuses: הודעות מסויימות statuses_hint_html: הסנן פועל על בחירה ידנית של הודעות בין אם הן מתאימות למילות המפתח להלן ואם לאו. posts regardless of whether they match the keywords below. בחינה או הסרה של ההודעות מהסנן. - title: ערוך מסנן + title: לערוך מסנן errors: deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי. invalid_context: לא סופק הקשר או הקשר לא תקין @@ -1478,7 +1476,7 @@ he: not_found: לא נמצאו on_cooldown: את/ה בתקופת צינון followers_count: עוקבים בזמן המעבר - incoming_migrations: מעבר לחשבון אחר + incoming_migrations: מעבר מחשבון אחר incoming_migrations_html: כדי לעבור מחשבון אחר לחשבון זה, עליך ראשית ליצור שם נרדף לחשבון. moved_msg: חשבונך מופנה עתה ל-%{acct} וכל עוקביך מועברים לשם. not_redirecting: חשבונכם לא מפנה לשום חשבון אחר כעת. @@ -1516,8 +1514,8 @@ he: subject: הודעתך חובבה על ידי %{name} title: חיבוב חדש follow: - body: "%{name} עכשיו במעקב אחריך!" - subject: "%{name} עכשיו במעקב אחריך" + body: "%{name} עכשיו עוקב.ת אחריך!" + subject: "%{name} עכשיו עוקב.ת אחריך" title: עוקב/ת חדש/ה follow_request: action: ניהול בקשות מעקב diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 28bd83015..4f6cdf480 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -65,6 +65,25 @@ hr: empty: Nema pronađenih izvješća. filter_by_action: Filtriraj prema radnji filter_by_user: Filtriraj prema korisniku + email_domain_blocks: + add_new: Dodaj novi + ip_blocks: + add_new: Stvori pravilo + roles: + privileges: + invite_users_description: Dopusti korisnicima da pozovu nove ljude na server + settings: + about: + title: O aplikaciji + warning_presets: + add_new: Dodaj novi + aliases: + add_new: Stvori alias + appearance: + advanced_web_interface: Napredno web sučelje + localization: + body: Mastodon prevode dobrovoljci. + guide_link_text: Svi mogu doprinjeti. application_mailer: settings: 'Promijeni postavke e-pošte: %{link}' view: 'Vidi:' @@ -85,14 +104,19 @@ hr: less_than_x_seconds: Upravo sada over_x_years: "%{count}god" x_months: "%{count}mj" + edit_profile: + basic_information: Osnovne informacije exports: archive_takeout: date: Datum download: Preuzmite svoju arhivu + request: Zatraži svoju arhivu size: Veličina blocks: Blokirali ste lists: Liste storage: Pohrana medijskih sadržaja + featured_tags: + add_new: Dodaj novi filters: contexts: notifications: Obavijesti @@ -130,6 +154,7 @@ hr: few: "%{count} korištenja" one: 1 korištenje other: "%{count} korištenja" + title: Pozovi ljude notification_mailer: favourite: body: "%{name} je označio/la Vaš status favoritom:" @@ -167,6 +192,8 @@ hr: remote_follow: missing_resource: Nije moguće pronaći traženi URL preusmjeravanja za Vaš račun sessions: + browsers: + ie: Internet Explorer revoke: Opozovi revoke_success: Sesija je uspješno opozvana title: Sesije @@ -183,9 +210,11 @@ hr: export: Izvoz podataka featured_tags: Istaknuti hashtagovi import: Uvezi + import_and_export: Uvezi i izvezi notifications: Obavijesti preferences: Postavke profile: Profil + statuses_cleanup: Automatsko brisanje postova two_factor_authentication: Dvofaktorska autentifikacija statuses: open_in_web: Otvori na webu @@ -205,7 +234,11 @@ hr: visibilities: private: Samo pratitelji public: Javno + public_long: Svi mogu vidjeti unlisted: Neprikazano + unlisted_long: Svi mogu vidjeti, ali nije izlistano u javnim timelineovima + statuses_cleanup: + enabled: Automatski obriši strare postove stream_entries: sensitive_content: Osjetljivi sadržaj two_factor_authentication: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 60016c935..7057883e1 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -997,8 +997,6 @@ hu: new_trending_statuses: title: Felkapott bejegyzések new_trending_tags: - no_approved_tags: Jelenleg nincsenek jóváhagyott felkapott hashtagek. - requirements: 'Ezek közül bármelyik jelölt lehagyná a %{rank}. jóváhagyott felkapott hashtaget, amely jelenleg a(z) #%{lowest_tag_name} ezzel a pontszámmal: %{lowest_tag_score}.' title: Felkapott hashtagek subject: 'Új jóváhagyandó trendek ezen: %{instance}' aliases: diff --git a/config/locales/id.yml b/config/locales/id.yml index 0e8f2b9b0..c231fea57 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -878,8 +878,6 @@ id: new_trending_statuses: title: Kiriman yang sedang tren new_trending_tags: - no_approved_tags: Saat ini tidak ada tagar tren yang disetujui. - requirements: 'Kandidat yang ada di sini bisa saja melewati peringkat #%{rank} tagar sedang tren yang disetujui, yang kini #%{lowest_tag_name} memiliki nilai %{lowest_tag_score}.' title: Tagar sedang tren subject: Tren baru yang perlu ditinjau di %{instance} aliases: diff --git a/config/locales/io.yml b/config/locales/io.yml index d09dfed70..c9a0dcd73 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -857,8 +857,6 @@ io: new_trending_statuses: title: Tendencoza posti new_trending_tags: - no_approved_tags: Nun ne existas aprobita tendencoza hashtagi. - requirements: 'Irga ca probanti povas ecesar la #%{rank} aprobita tendencoligilo, quale nun esas %{lowest_tag_name} kun punto %{lowest_tag_score}.' title: Tendencoza hashtagi subject: Nova tendenci bezonas kontrolesar che %{instance} aliases: diff --git a/config/locales/is.yml b/config/locales/is.yml index a4706ee51..bf16d877d 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -999,8 +999,6 @@ is: new_trending_statuses: title: Vinsælar færslur new_trending_tags: - no_approved_tags: Það eru í augnablikinu engin samþykkt vinsæl myllumerki. - requirements: 'Hver af þessum tillögum gætu farið yfir samþykkta vinsæla myllumerkið númer #%{rank}, sem í augnablikinu er %{lowest_tag_name} með %{lowest_tag_score} stig' title: Vinsæl myllumerki subject: Nýtt vinsælt til yfirferðar á %{instance} aliases: diff --git a/config/locales/it.yml b/config/locales/it.yml index 82bbf7251..3637313c0 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -997,8 +997,6 @@ it: new_trending_statuses: title: Post di tendenza new_trending_tags: - no_approved_tags: Attualmente non ci sono hashtag di tendenza approvati. - requirements: 'Ognuno di questi candidati potrebbe superare il #%{rank} hashtag di tendenza approvato, che è attualmente "%{lowest_tag_name}" con un punteggio di %{lowest_tag_score}.' title: Hashtag di tendenza subject: Nuove tendenze in attesa di controllo su %{instance} aliases: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 3318b690a..f7a2c2817 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -599,6 +599,7 @@ ja: created_at: 通報日時 delete_and_resolve: 投稿を削除 forwarded: 転送済み + forwarded_replies_explanation: この報告はリモートユーザーからのものであり、またリモートコンテンツに関するものです。報告されたコンテンツがあなたのユーザーの内の一人に対するリプライの中にあるため、あなたに転送されました。 forwarded_to: "%{domain}に転送されました" mark_as_resolved: 解決済みとしてマーク mark_as_sensitive: 閲覧注意にする @@ -978,8 +979,6 @@ ja: new_trending_statuses: title: トレンド投稿 new_trending_tags: - no_approved_tags: 承認されたトレンドハッシュタグはありません。 - requirements: 'これらの候補はいずれも %{rank} 位の承認済みトレンドハッシュタグのスコアを上回ります。現在 #%{lowest_tag_name} のスコアは %{lowest_tag_score} です。' title: トレンドハッシュタグ subject: "%{instance}で新しいトレンドが審査待ちです" aliases: @@ -1343,6 +1342,7 @@ ja: '86400': 1日 expires_in_prompt: 無期限 generate: 招待リンクを作成 + invalid: この招待は無効です invited_by: '次の人に招待されました:' max_uses: other: "%{count}" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 7dcb5d632..e6187f4d8 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -32,7 +32,7 @@ ko: add_email_domain_block: 이 이메일 도메인을 차단하기 approve: 허가 approved_msg: 성공적으로 %{username}의 가입 신청서를 승인했습니다 - are_you_sure: 정말로 실행하시겠습니까? + are_you_sure: 확실합니까? avatar: 아바타 by_domain: 도메인 change_email: @@ -55,16 +55,16 @@ ko: deleted: 삭제됨 demote: 강등 destroyed_msg: "%{username}의 데이터는 곧 삭제되도록 대기열에 들어갔습니다" - disable: 비활성화 + disable: 동결 disable_sign_in_token_auth: 이메일 토큰 인증 비활성화 disable_two_factor_authentication: 2단계 인증을 비활성화 - disabled: 비활성화됨 + disabled: 동결됨 display_name: 표시되는 이름 domain: 도메인 edit: 수정 email: 이메일 email_status: 이메일 상태 - enable: 활성화 + enable: 동결 해제 enable_sign_in_token_auth: 이메일 토큰 인증 활성화 enabled: 활성 enabled_msg: "%{username}의 계정을 성공적으로 얼리기 해제하였습니다" @@ -292,7 +292,7 @@ ko: announcements: destroyed_msg: 공지가 성공적으로 삭제되었습니다! edit: - title: 공지사항 수정 + title: 공지사항 편집 empty: 공지를 찾을 수 없습니다. live: 진행 중 new: @@ -586,7 +586,7 @@ ko: actions_description_html: 이 신고를 해결하기 위해 취해야 할 조치를 지정해주세요. 신고된 계정에 대해 처벌 조치를 취하면, 스팸 카테고리가 선택된 경우를 제외하고 해당 계정으로 이메일 알림이 전송됩니다. actions_description_remote_html: 이 신고를 해결하기 위해 실행할 행동을 결정하세요. 이 결정은 이 원격 계정과 그 콘텐츠를 다루는 방식에 대해 이 서버에서만 영향을 끼칩니다 add_to_report: 신고에 더 추가하기 - are_you_sure: 정말로 실행하시겠습니까? + are_you_sure: 확실합니까? assign_to_self: 나에게 할당하기 assigned: 할당된 중재자 by_target_domain: 신고된 계정의 도메인 @@ -763,7 +763,7 @@ ko: open: 누구나 가입 할 수 있음 security: authorized_fetch: 연합된 서버들에게서 인증 필수 - authorized_fetch_hint: 연합된 서버들에게서 인증을 요구하는 것은 사용자 레벨과 서버 레벨의 차단을 좀 더 확실하게 해줍니다. 한편으로는 성능적인 페널티, 답글의 전달 범위 감소, 몇몇 연합된 서비스들과의 호환성 문제가 있을 가능성이 있습니다. 추가적으로 이 기능은 전용 액터가 공개돤 게시물이나 계정을 페치하는 것은 막지 않습니다. + authorized_fetch_hint: 연합된 서버들에게서 인증을 요구하는 것은 사용자 레벨과 서버 레벨의 차단을 좀 더 확실하게 해줍니다. 한편으로는 성능적인 페널티, 답글의 전달 범위 감소, 몇몇 연합된 서비스들과의 호환성 문제가 있을 가능성이 있습니다. 추가적으로 이 기능은 전용 액터가 공개된 게시물이나 계정을 페치하는 것은 막지 않습니다. authorized_fetch_overridden_hint: 현재 이 값은 환경변수에 의해 설정되어 있기에 설정을 변경할 수 없습니다. federation_authentication: 연합 인증 필수 title: 서버 설정 @@ -926,7 +926,7 @@ ko: warning_presets: add_new: 새로 추가 delete: 삭제 - edit_preset: 경고 틀 수정 + edit_preset: 경고 프리셋 편집 empty: 아직 어떤 경고 틀도 정의되지 않았습니다. title: 경고 틀 관리 webhooks: @@ -981,8 +981,6 @@ ko: new_trending_statuses: title: 유행하는 게시물 new_trending_tags: - no_approved_tags: 현재 승인된 유행 중인 해시태그가 없습니다. - requirements: '이 후보들 중 어떤 것이라도 #%{rank}위의 승인된 유행 중인 해시태그를 앞지를 수 있으며, 이것은 현재 #%{lowest_tag_name}이고 %{lowest_tag_score}점을 기록하고 있습니다.' title: 유행하는 해시태그 subject: 새 트렌드가 %{instance}에서 심사 대기 중입니다 aliases: @@ -1177,7 +1175,7 @@ ko: invalid_domain: 올바른 도메인 네임이 아닙니다 edit_profile: basic_information: 기본 정보 - hint_html: "내 공개 프로필과 게시물 옆에 보이는 부분을 꾸미세요. 다른 사람들은 프로필 내용과 사진이 채워진 계정과 더 상호작용하고 팔로우를 하고 싶어합니다." + hint_html: "사람들이 공개 프로필을 보고서 게시물을 볼 때를 위한 프로필을 꾸밉니다. 프로필과 프로필 사진을 채우면 다른 사람들이 나를 팔로우하고 나와 교류할 기회가 더 많아집니다." other: 기타 errors: '400': 제출한 요청이 올바르지 않습니다. @@ -1229,7 +1227,7 @@ ko: keywords: 키워드 statuses: 개별 게시물 statuses_hint_html: 이 필터는 아래의 키워드에 매칭되는지 여부와 관계 없이 몇몇개의 게시물들에 별개로 적용되었습니다. 검토하거나 필터에서 삭제하세요 - title: 필터 수정 + title: 필터 편집 errors: deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요. invalid_context: 컨텍스트가 없거나 올바르지 않습니다 @@ -1615,7 +1613,7 @@ ko: back: 마스토돈으로 돌아가기 delete: 계정 삭제 development: 개발 - edit_profile: 프로필 수정 + edit_profile: 프로필 편집 export: 데이터 내보내기 featured_tags: 추천 해시태그 import: 데이터 가져오기 @@ -1781,7 +1779,7 @@ ko: statuses: '인용된 게시물:' subject: delete_statuses: 당신의 계정 %{acct}에서 작성한 게시물이 삭제되었습니다 - disable: 당신의 계정 %{acct}가 동결 되었습니다 + disable: "%{acct} 계정은 동결되었습니다." mark_statuses_as_sensitive: "%{acct}로 작성한 당신의 게시물은 민감한 것으로 표시되었습니다" none: "%{acct}에게의 경고" sensitive: "%{acct}로 작성되는 당신의 게시물은 이제부터 민감한 것으로 표시됩니다" @@ -1789,7 +1787,7 @@ ko: suspend: 당신의 계정 %{acct}가 정지 되었습니다 title: delete_statuses: 게시물 삭제됨 - disable: 계정 동결 됨 + disable: 계정 동결됨 mark_statuses_as_sensitive: 게시물이 민감함으로 표시됨 none: 경고 sensitive: 계정이 민감함으로 표시됨 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 58c1885df..b9cc5fe77 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -897,8 +897,6 @@ ku: new_trending_statuses: title: Şandiyên rojevê new_trending_tags: - no_approved_tags: Niha hashtagên rojevê pejirandî tune ne. - requirements: 'Yek ji namzedên li jêr dikare ji #%{rank} hashtagaa diyarkirî ya pejirandî derbas bibe, niha ku #%{lowest_tag_name} bi %{lowest_tag_score} puan e.' title: Hashtagên rojevê subject: Rojevên nû ji bo nirxandinê li ser %{instance} derdikevin aliases: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 4bcf23de4..c532b84e2 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1014,8 +1014,6 @@ lv: new_trending_statuses: title: Populārākās ziņas new_trending_tags: - no_approved_tags: Pašlaik nav apstiprinātu tendenču tēmturu. - requirements: 'Jebkurš no šiem kandidātiem varētu pārspēt #%{rank} apstiprināto populāro tēmturi, kas pašlaik ir #%{lowest_tag_name} ar rezultātu %{lowest_tag_score}.' title: Populārākie tēmturi subject: Tiek pārskatītas jaunas tendences %{instance} aliases: diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 951b04194..74acf8755 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -977,8 +977,6 @@ ms: new_trending_statuses: title: Pos sohor kini new_trending_tags: - no_approved_tags: Pada masa ini tiada hashtag sohor kini yang diluluskan. - requirements: 'Mana-mana calon ini boleh melepasi hashtag arah aliran #%{rank} yang diluluskan, yang pada masa ini ialah #%{lowest_tag_name} dengan markah %{lowest_tag_score}.' title: Hashtag sohor kini subject: Trend baharu untuk kesemakan pada %{instance} aliases: diff --git a/config/locales/my.yml b/config/locales/my.yml index d8e83543c..03ed771a4 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -962,8 +962,6 @@ my: new_trending_statuses: title: လက်ရှိခေတ်စားနေသော ပို့စ်များ new_trending_tags: - no_approved_tags: လက်ရှိတွင် အတည်ပြုထားသော ခေတ်စားနေသည့် hashtag များမရှိပါ။ - requirements: 'ဤလူများမှာ %{lowest_tag_score} ရမှတ်ဖြင့် လက်ရှိ #%{lowest_tag_name} ဖြစ်သည့် ခေတ်စားနေသော hashtag #%{rank} ကို ကျော်သွားနိုင်သည်။' title: လက်ရှိခေတ်စားနေသော hashtag များ subject: "%{instance} တွင် ပြန်လည်သုံးသပ်ရမည့် ခေတ်စားနေသောပို့စ်အသစ်များ" aliases: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 4147078d3..6ad414b3e 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -997,8 +997,6 @@ nl: new_trending_statuses: title: Trending berichten new_trending_tags: - no_approved_tags: Op dit moment zijn er geen goedgekeurde hashtags. - requirements: 'Elk van deze kandidaten kan de #%{rank} goedgekeurde trending hashtag overtreffen, die momenteel #%{lowest_tag_name} is met een score van %{lowest_tag_score}.' title: Trending hashtags subject: Nieuwe trends te beoordelen op %{instance} aliases: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index ad2acdda8..3ee02863d 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -997,8 +997,6 @@ nn: new_trending_statuses: title: Populære innlegg new_trending_tags: - no_approved_tags: Det er ingen godkjende populære emneknaggar no. - requirements: 'Alle desse kandidatane kan stiga høgare enn den godkjende populære emneknaggen #%{rank}, som er #%{lowest_tag_name} med ei plassering på %{lowest_tag_score}.' title: Populære emneknaggar subject: Nye trendar å sjå gjennom på %{instance} aliases: diff --git a/config/locales/no.yml b/config/locales/no.yml index 42bd6193c..f791c7151 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -997,8 +997,6 @@ new_trending_statuses: title: Populære innlegg new_trending_tags: - no_approved_tags: Det er for øyeblikket ingen godkjente populære emneknagger. - requirements: 'Enhver av disse kandidatene kan overgå #%{rank} godkjent populære emneknagger, som for øyeblikket er #%{lowest_tag_name} med en poengsum på %{lowest_tag_score}.' title: Populære emneknagger subject: Ny trender for gjennomsyn av %{instance} aliases: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 4ff81e11e..79de3b519 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1033,8 +1033,6 @@ pl: new_trending_statuses: 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: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 3eb2950bd..c8060ad80 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -611,6 +611,7 @@ pt-BR: created_at: Denunciado delete_and_resolve: Excluir publicações forwarded: Encaminhados + forwarded_replies_explanation: Este relatório é de um usuário remoto e é sobre um conteúdo remoto. Ele foi encaminhado para você porque o conteúdo denunciado está em resposta a um de seus usuários. forwarded_to: Encaminhado para %{domain} mark_as_resolved: Marcar como resolvido mark_as_sensitive: Marcar como sensível @@ -996,8 +997,6 @@ pt-BR: new_trending_statuses: title: Publicações em alta new_trending_tags: - no_approved_tags: No momento, não há hashtags de tendências aprovadas. - requirements: 'Qualquer um desses candidatos poderia ultrapassar a hashtag de tendência aprovada #%{rank} , que é atualmente #%{lowest_tag_name} com uma pontuação de %{lowest_tag_score}.' title: Hashtags em alta subject: Novas tendências para revisão em %{instance} aliases: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 8e147ce4c..89da6b480 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -997,8 +997,6 @@ pt-PT: new_trending_statuses: title: Publicações em alta new_trending_tags: - no_approved_tags: 'Neste momento, não existem #etiquetas aprovadas para destaque.' - requirements: 'Qualquer um destes candidatos pode ultrapassar a #%{rank} etiqueta aprovada em destaque, que é atualmente #%{lowest_tag_name} com uma pontuação de %{lowest_tag_score}.' title: Etiquetas em alta subject: Novas tendências para revisão em %{instance} aliases: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 7bfccb9a0..c380776b5 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1032,8 +1032,6 @@ ru: new_trending_statuses: title: Популярные посты new_trending_tags: - no_approved_tags: На данный момент популярные подтвержденные хэштеги отсутствуют. - requirements: 'Каждый из этих кандидатов может превысить #%{rank} одобренных популярных хештегов. Сейчас это #%{lowest_tag_name} с числом %{lowest_tag_score}.' title: Популярные хэштеги subject: Новые тренды для проверки на %{instance} aliases: diff --git a/config/locales/sco.yml b/config/locales/sco.yml index 2199c5dbf..f77c4c797 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -890,8 +890,6 @@ sco: new_trending_statuses: title: Trendin posts new_trending_tags: - no_approved_tags: There nae approved trendin hashtags the noo. - requirements: 'Onie o thir candidates cuid surpass the #%{rank} approved trendin hashtag, thit''s #%{lowest_tag_name} the noo, wi a score o %{lowest_tag_score}.' title: Trendin hashtags subject: New trends up fir luikin ower on %{instance} aliases: diff --git a/config/locales/si.yml b/config/locales/si.yml index 2c2a8ae82..70aefafc1 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -768,8 +768,6 @@ si: new_trending_statuses: title: නැගී එන ලිපි new_trending_tags: - no_approved_tags: දැනට අනුමත ප්‍රවණතා හැෂ් ටැග් නොමැත. - requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්‍රවණතා හැෂ් ටැගය අභිබවා යා හැකිය, එය දැනට ලකුණු %{lowest_tag_score}ක් සමඟ #%{lowest_tag_name} වේ.' title: ප්‍රවණතා හැෂ් ටැග් subject: "%{instance}හි සමාලෝචනය සඳහා නව ප්‍රවණතා" aliases: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 3504b3953..d25412561 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -8,6 +8,8 @@ eo: fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. indexable: Viaj publikaj afiŝoj povas aperi en serĉrezultoj ĉe Mastodon. Homoj, kiuj interagis kun viaj afiŝoj, eble povos serĉi ilin sendepende. note: 'Vi povas @mencii aliajn homojn aŭ #haŝetikedoj.' + show_collections: Homoj povos foliumi viajn sekvatojn kaj sekvantojn. Homoj, kiujn vi sekvas, vidos, ke vi sekvas ilin ĉiaokaze. + unlocked: Homoj povos sekvi vin sen peto de aprobo. Malelektu se vi volas kontroli petojn de sekvado kaj elekti, ĉu akcepti aŭ malakcepti novajn sekvantojn. account_alias: acct: Specifu la uzantnomon@domajnon de la konto el kiu vi volas translokiĝi account_migration: @@ -118,6 +120,9 @@ eo: sessions: otp: 'Enmetu la kodon de dufaktora aŭtentigo el via telefono aŭ uzu unu el viaj realiraj kodoj:' webauthn: Se ĝi estas USB-ŝlosilo, certu enmeti ĝin kaj, se necese, frapi ĝin. + settings: + indexable: Via profila paĝo povas aperi en serĉrezultoj en Google, Bing kaj aliaj. + show_application: Vi ĉiam povos vidi kiu aplikaĵo publikigis vian afiŝon ĉiaokaze. tag: name: Vi povas ŝanĝi nur la majuskladon de la literoj, ekzemple, por igi ĝin pli legebla user: @@ -135,9 +140,13 @@ eo: url: Kien eventoj sendotas labels: account: + discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo value: Enhavo + indexable: Inkludi publikajn afiŝojn en serĉrezultoj + show_collections: Montri sekvatojn kaj sekvantojn en la profilo + unlocked: Aŭtomate akcepti novajn sekvantojn account_alias: acct: Tenilo de la malnovan konton account_migration: @@ -221,7 +230,7 @@ eo: username_or_email: Uzantnomo aŭ Retadreso whole_word: Tuta vorto email_domain_block: - with_dns_records: Inkluzu MX-rekordojn kaj IP de la domajno + with_dns_records: Inkludi MX-rekordojn kaj IP-jn de la domajno featured_tag: name: Kradvorto filters: @@ -282,9 +291,18 @@ eo: pending_account: Sendi retmesaĝon kiam nova konto bezonas kontrolon reblog: Sendi retmesaĝon kiam iu diskonigas vian mesaĝon report: Nova raporto estas proponita + software_updates: + all: Sciigi pri ĉiuj ĝisdatigoj + critical: Sciigi nur pri gravaj ĝisdatigoj + label: Nova Mastodon-versio disponeblas + none: Neniam sciigi pri ĝisdatigoj (malrekomendita) + patch: Sciigi pri cimoriparaj ĝisdatigoj trending_tag: Nova furoro bezonas kontrolon rule: text: Regulo + settings: + indexable: Inkludi profilan paĝon en serĉiloj + show_application: Montri el kiu aplikaĵo vi sendis afiŝon tag: listable: Permesi ĉi tiun kradvorton aperi en serĉoj kaj sugestoj name: Kradvorto @@ -305,6 +323,7 @@ eo: url: Finpunkto-URL 'no': Ne not_recommended: Nerekomendita + overridden: Anstataŭigita recommended: Rekomendita required: mark: "*" diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index b917f551c..7bafca6b7 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -108,7 +108,7 @@ gl: text: Esto axudaranos a revisar a tua solicitude ip_block: comment: Opcional. Lembrar a razón para engadir esta regra. - expires_in: Os enderezos IP son un recurso finito, a veces son compartidos e cambian de mans con frecuencia. Por esta razón, non se recomendan os bloqueos indefinidos de IPs. + expires_in: Os enderezos IP son un recurso finito, a veces son compartidos e cambian de mans con frecuencia. Por esta razón, non se aconsellan os bloqueos indefinidos de IPs. ip: Escribe un enderezo IPv4 ou IPv6. Podes bloquear rangos completos usando a sintaxe CIDR. Ten coidado e non te bloquees a ti mesma! severities: no_access: Bloquear acceso a tódolos recursos @@ -295,7 +295,7 @@ gl: all: Notificar todas as actualizacións critical: Notificar só as actualizacións críticas label: Hai unha nova versión de Mastodon dispoñible - none: Non notificar nunca as actualizacións (non se recomenda) + none: Non notificar nunca as actualizacións (non se aconsella) patch: Notificar as actualizacións de arranxos trending_tag: Hai que revisar unha nova tendencia rule: @@ -322,9 +322,9 @@ gl: template: Modelo de carga url: URL do extremo 'no': Non - not_recommended: Non é recomendable + not_recommended: Non se aconsella overridden: Sobreescrita - recommended: Recomendado + recommended: Aconsellable required: mark: "*" text: requerido diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 04b21cd1b..0a8a57c34 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -268,7 +268,7 @@ he: interactions: must_be_follower: חסימת התראות משאינם עוקבים must_be_following: חסימת התראות משאינם נעקבים - must_be_following_dm: חסימת הודעות ישירות מכותבים שאינם במעקב + must_be_following_dm: חסימת הודעות ישירות מחשבונות שאתם לא עוקבים אחריהם invite: comment: הערה invite_request: @@ -286,7 +286,7 @@ he: digest: שליחת הודעות דוא"ל מסכמות favourite: שליחת דוא"ל כשמחבבים הודעה follow: שליחת דוא"ל כשנוספות עוקבות - follow_request: שליחת דוא"ל כשמבקשים לעקוב + follow_request: מישהו.י ביקש.ה לעקוב אחריך mention: שליחת דוא"ל כשפונים אלייך pending_account: נדרשת סקירה של חשבון חדש reblog: שליחת דוא"ל כשמהדהדים הודעה שלך diff --git a/config/locales/simple_form.hr.yml b/config/locales/simple_form.hr.yml index 8f0178c7b..3db4fd3b4 100644 --- a/config/locales/simple_form.hr.yml +++ b/config/locales/simple_form.hr.yml @@ -7,6 +7,7 @@ hr: account_warning_preset: title: Proizvoljno. Nije vidljivo primatelju defaults: + autofollow: Ljudi koji se registriraju kroz pozivnicu će te automatski slijediti avatar: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjeno na %{dimensions}px header: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjeno na %{dimensions}px password: Mora biti najmanje 8 znakova @@ -22,6 +23,7 @@ hr: admin_account_action: type: Radnja defaults: + avatar: Profilna slika confirm_new_password: Potvrdi novu lozinku confirm_password: Potvrdi lozinku current_password: Trenutna lozinka @@ -38,8 +40,10 @@ hr: setting_display_media_default: Zadano setting_display_media_hide_all: Sakrij sve setting_display_media_show_all: Prikaži sve + setting_reduce_motion: Smanji kretanje u animacijama setting_system_font_ui: Koristi zadani font sustava setting_theme: Tema stranice + setting_trends: Prikaži današnje trendove type: Tip uvoza username: Korisničko ime interactions: @@ -53,6 +57,8 @@ hr: mention: Netko Vas spomene reblog: Netko boosta Vaš status 'no': Ne + not_recommended: Nije preporučeno + recommended: Preporučeno required: text: obavezno 'yes': Da diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 720012a31..4da58e6c6 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -188,7 +188,7 @@ ko: email: 이메일 주소 expires_in: 만기 fields: 부가 필드 - header: 헤더 + header: 헤더 사진 honeypot: "%{label} (채우지 마시오)" inbox_url: 릴레이 서버의 inbox URL irreversible: 숨기는 대신 삭제 diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index 69a6b86dd..39caaf6ba 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -10,17 +10,36 @@ lt: note: 'Gali @paminėti kitus žmones arba #saitažodžius.' show_collections: Žmonės galės peržiūrėti tavo sekimus ir sekėjus. Žmonės, kuriuos seki, matys, kad juos seki, nepaisant to. unlocked: Žmonės galės tave sekti nepaprašę patvirtinimo. Panaikink žymėjimą, jei nori peržiūrėti sekimo prašymus ir pasirinkti, ar priimti, ar atmesti naujus sekėjus. + account_alias: + acct: Nurodyk paskyros, iš kurios nori perkelti, naudotojo vardą@domeną + account_migration: + acct: Nurodyk paskyros, į kurią nori perkelti, naudotojo vardą@domeną account_warning_preset: - text: Gali naudoti įrašų sintaksę, pavyzdžiui, URL adresus, saitažodus ir paminėjimus + text: Gali naudoti įrašų sintaksę, pavyzdžiui, URL adresus, saitažodžius ir paminėjimus + title: Pasirinktinai. Gavėjui nematomas + admin_account_action: + include_statuses: Naudotojas (-a) matys, dėl kurių įrašų buvo atliktas prižiūrimo arba įspėjimo veiksmas + send_email_notification: Naudotojas (-a) gaus paaiškinimą, kas nutiko su jo (-s) paskyra + text_html: Pasirinktinai. Gali naudoti įrašo sintaksę. Taupydamas (-a) laiką gali pridėti įspėjimo išankstinius nustatymus + type_html: Pasirink, ką daryti su %{acct} + types: + disable: Neleisk naudotojui naudotis savo paskyra, bet nepanaikink ir nepaslėpk jos turinio. + none: Naudok šią parinktį norėdamas (-a) išsiųsti įspėjimą naudotojui, nesukeldamas (-a) jokio kito veiksmo. + sensitive: Priversk visus šio naudotojo medijos priedus pažymėti kaip jautrius. + silence: Neleisk naudotojui skelbti viešai matomų įrašų, paslėpk jų įrašus ir pranešimus nuo žmonių, kurie neseka jo. Uždaro visus su šia paskyra susijusius ataskaitas. defaults: + avatar: PNG, GIF arba JPG. Ne daugiau kaip %{size}. Bus sumažintas iki %{dimensions} tšk. header: PNG, GIF arba JPG. Ne daugiau kaip %{size}. Bus sumažintas iki %{dimensions}tšk. inbox_url: Nukopijuok URL adresą iš pradinio puslapio perdavėjo, kurį nori naudoti irreversible: Filtruoti įrašai išnyks negrįžtamai, net jei vėliau filtras bus pašalintas locale: Naudotojo sąsajos kalba, el. laiškai ir stumiamieji pranešimai password: Naudok bent 8 simbolius phrase: Bus suderinta, neatsižvelgiant į teksto korpusą arba įrašo turinio įspėjimą - setting_display_media_hide_all: Visada slėpti žiniasklaidą - setting_display_media_show_all: Visada rodyti žiniasklaidą + setting_always_send_emails: Paprastai pranešimai el. paštu nebus siunčiami, kai aktyviai naudoji Mastodon + setting_default_sensitive: Jautrioji medija pagal numatytuosius nustatymus yra paslėpta ir gali būti atskleista paspaudus + setting_display_media_default: Slėpti mediją, pažymėtą kaip jautrią + setting_display_media_hide_all: Visada slėpti mediją + setting_display_media_show_all: Visada rodyti mediją setting_use_blurhash: Gradientai pagrįsti paslėptų vaizdų spalvomis, tačiau užgožia bet kokias detales setting_use_pending_items: Slėpti laiko skalės naujienas po paspaudimo, vietoj automatinio kanalo slinkimo featured_tag: @@ -43,3 +62,23 @@ lt: name: Saitažodis trendable: Leisti šį saitažodį rodyti pagal trendus usable: Leisti įrašams naudoti šį saitažodį + user: + role: Vaidmuo + user_role: + permissions_as_keys: Leidimai + position: Prioritetas + webhook: + events: Įgalinti įvykiai + template: Naudingosios apkrovos šablonas + url: Galutinio taško URL + 'no': Ne + not_recommended: Nerekomenduojama + overridden: Pakeista + recommended: Rekomenduojama + required: + mark: "*" + text: privalomas + title: + sessions: + webauthn: Prisijungimui naudoti vieną iš saugumo raktų + 'yes': Taip diff --git a/config/locales/sl.yml b/config/locales/sl.yml index b31fe118a..ecff5a667 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -635,6 +635,7 @@ sl: created_at: Prijavljeno delete_and_resolve: Izbriši objave forwarded: Posredovano + forwarded_replies_explanation: To poročilo je od oddaljenega uporabnika in se nanaša na oddaljeno vsebino. Posredovano vam je bilo, ker je vsebina, o kateri poroča, odgovor enemu od vaših uporabnikov. forwarded_to: Posredovano na %{domain} mark_as_resolved: Označi kot rešeno mark_as_sensitive: Označi, kot občutljivo @@ -1032,8 +1033,6 @@ sl: new_trending_statuses: title: Trendne objave new_trending_tags: - no_approved_tags: Trenutno ni odobrenih ključnikov v trendu. - requirements: Vsak od teh kandidatov bi lahko presegel odobreni ključnik v trendu št. %{rank}, ki je trenutno %{lowest_tag_name} z rezultatom %{lowest_tag_score}. title: Ključniki v trendu subject: Novi trendi za pregled na %{instance} aliases: diff --git a/config/locales/sq.yml b/config/locales/sq.yml index b6a7736df..af1bb4644 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -993,7 +993,6 @@ sq: new_trending_statuses: title: Postime në modë new_trending_tags: - no_approved_tags: Aktualisht s’ka hashtag-ë në modë të miratuar. title: Hashtag-ë në modë subject: Gjëra të reja në modë për shqyrtim te %{instance} aliases: diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 6ccec7fd9..e8760697e 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -623,6 +623,7 @@ sr-Latn: created_at: Prijavljena delete_and_resolve: Obriši objave forwarded: Prosleđeno + forwarded_replies_explanation: Ovaj izveštaj je od udaljenog korisnika i o udaljenom sadržaju. Prosleđen vam je jer je prijavljeni sadržaj u odgovoru jednom od vaših korisnika. forwarded_to: Prosleđeno ka %{domain} mark_as_resolved: Označi kao rešenu mark_as_sensitive: Obeleži kao osetljivo @@ -1014,8 +1015,6 @@ sr-Latn: new_trending_statuses: title: Objave u trendu new_trending_tags: - no_approved_tags: Trenutno nema odobrenih heš oznaka u trendu. - requirements: 'Bilo koji od sledećih kandidata bi mogao prevazići #%{rank} odobrenu heš oznaku u trendu, koja je trenutno #%{lowest_tag_name} sa vrednošću %{lowest_tag_score}.' title: Heš oznake u trendu subject: Novi trendovi za pregled na %{instance} aliases: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index b271b15f1..b32d86f65 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1015,8 +1015,6 @@ sr: new_trending_statuses: title: Објаве у тренду new_trending_tags: - no_approved_tags: Тренутно нема одобрених хеш ознака у тренду. - requirements: 'Било који од следећих кандидата би могао превазићи #%{rank} одобрену хеш ознаку у тренду, која је тренутно #%{lowest_tag_name} са вредношћу %{lowest_tag_score}.' title: Хеш ознаке у тренду subject: Нови трендови за преглед на %{instance} aliases: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 8126455f4..f7a6f33a0 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -996,8 +996,6 @@ sv: new_trending_statuses: title: Trendande inlägg new_trending_tags: - no_approved_tags: Det finns för närvarande inga godkända trendande hashtaggar. - requirements: 'Någon av dessa kandidater skulle kunna överträffa #%{rank} godkända trendande hashtaggar, som för närvarande är #%{lowest_tag_name} med en poäng på %{lowest_tag_score}.' title: Trendande hashtaggar subject: Nya trender tillgängliga för granskning på %{instance} aliases: diff --git a/config/locales/th.yml b/config/locales/th.yml index 0b7498e7d..59a6b2c4f 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -979,8 +979,6 @@ th: new_trending_statuses: title: โพสต์ที่กำลังนิยม new_trending_tags: - no_approved_tags: ไม่มีแฮชแท็กที่กำลังนิยมที่ได้รับอนุมัติในปัจจุบัน - requirements: 'ตัวเลือกใดก็ตามนี้สามารถแซงหน้าแฮชแท็กที่กำลังนิยมที่ได้รับอนุมัติ #%{rank} ซึ่งคือ #%{lowest_tag_name} ในปัจจุบันด้วยคะแนน %{lowest_tag_score}' title: แฮชแท็กที่กำลังนิยม subject: แนวโน้มใหม่สำหรับตรวจทานใน %{instance} aliases: @@ -1557,7 +1555,7 @@ th: over_total_limit: คุณมีโพสต์ที่จัดกำหนดการไว้เกินขีดจำกัดที่ %{limit} แล้ว too_soon: วันที่จัดกำหนดการต้องอยู่ในอนาคต self_destruct: - lead_html: น่าเสียดาย %{domain} กำลังปิดตัวลงอย่างถาวร หากคุณมีบัญชีที่นั่น คุณจะไม่สามารถใช้บัญชีต่อไปได้ แต่คุณยังสามารถขอข้อมูลสำรองของข้อมูลของคุณ + lead_html: น่าเสียดาย %{domain} กำลังปิดตัวลงอย่างถาวร หากคุณมีบัญชีที่นั่น คุณจะไม่สามารถใช้บัญชีต่อไปได้ แต่คุณยังคงสามารถขอข้อมูลสำรองของข้อมูลของคุณ title: เซิร์ฟเวอร์นี้กำลังปิดตัวลง sessions: activity: กิจกรรมล่าสุด diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 5882eae31..098719eb7 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -997,8 +997,6 @@ tr: new_trending_statuses: title: Öne çıkan gönderiler new_trending_tags: - no_approved_tags: Şu anda onaylanmış öne çıkan etiket yok. - requirements: 'Aşağıdaki adaylardan herhangi biri, şu anda %{lowest_tag_score} skoruna sahip "%{lowest_tag_name}" olan #%{rank} onaylanmış öne çıkan etiketi geçebilir.' title: Öne çıkan etiketler subject: "%{instance}, inceleme bekleyen yeni öne çıkan öğelere sahip" aliases: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index e9eee14a1..139b8be30 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1033,8 +1033,6 @@ uk: new_trending_statuses: title: Популярні дописи new_trending_tags: - no_approved_tags: На цей час немає схвалених популярних хештегів. - requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного хештеґу, який зараз на #%{lowest_tag_name} з рейтингом %{lowest_tag_score}.' title: Популярні хештеги subject: Нове популярне до розгляду на %{instance} aliases: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 9d90d1d51..c06a84b97 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -599,6 +599,7 @@ vi: created_at: Báo cáo lúc delete_and_resolve: Xóa tút forwarded: Chuyển tiếp + forwarded_replies_explanation: Báo cáo này từ người dùng ở một máy chủ khác và về nội dung ở một máy chủ khác. Nó được chuyển tiếp tới bạn vì nội dung bị báo cáo là lượt trả lời cho một trong những người dùng của bạn. forwarded_to: Chuyển tiếp tới %{domain} mark_as_resolved: Xử lý xong mark_as_sensitive: Đánh dấu nhạy cảm @@ -978,8 +979,6 @@ vi: new_trending_statuses: title: Tút nổi bật new_trending_tags: - no_approved_tags: Hiện tại không có hashtag nổi bật nào được duyệt. - requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt hashtag nổi bật, với hiện tại là "%{lowest_tag_name}" với điểm số %{lowest_tag_score}.' title: Hashtag nổi bật subject: Nội dung nổi bật chờ duyệt trên %{instance} aliases: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index b788b53e1..ec4d71423 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -979,8 +979,6 @@ zh-CN: new_trending_statuses: title: 热门嘟文 new_trending_tags: - no_approved_tags: 目前没有经批准的热门标签。 - requirements: '这些候选人都可能会超过#%{rank} 批准的热门标签,目前是 #%{lowest_tag_name} ,分数为 %{lowest_tag_score}。' title: 热门标签 subject: "%{instance} 上有新热门等待审核" aliases: diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 5dd0d2e61..01a0a026a 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -979,8 +979,6 @@ zh-HK: new_trending_statuses: title: 熱門帖文 new_trending_tags: - no_approved_tags: 目前沒有經核准的熱門標籤。 - requirements: '任何一個候選都可能超過 #%{rank} 被核准的標籤。目前是 %{lowest_tag_name} 標籤,得分為 %{lowest_tag_score}。' title: 熱門標籤 subject: "%{instance} 上有待審核的新熱門" aliases: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 2f65855fc..b8cbf6e80 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -981,8 +981,6 @@ zh-TW: new_trending_statuses: title: 熱門嘟文 new_trending_tags: - no_approved_tags: 這些是目前仍未被審核之熱門主題標籤。 - requirements: '這些候選中的任何一個都可能超過 #%{rank} 已批准的熱門主題標籤,該主題標籤目前是 #%{lowest_tag_name},得分為 %{lowest_tag_score}。' title: 熱門主題標籤 subject: "%{instance} 有待審核之新熱門" aliases: diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb index ca8741730..c8f566f68 100644 --- a/spec/controllers/admin/invites_controller_spec.rb +++ b/spec/controllers/admin/invites_controller_spec.rb @@ -45,7 +45,7 @@ describe Admin::InvitesController do describe 'POST #deactivate_all' do it 'expires all invites, then redirects to admin_invites_path' do - invites = Fabricate.times(2, :invite, expires_at: nil) + invites = Fabricate.times(1, :invite, expires_at: nil) post :deactivate_all diff --git a/spec/controllers/api/v1/accounts/familiar_followers_controller_spec.rb b/spec/controllers/api/v1/accounts/familiar_followers_controller_spec.rb index bb075261f..226177309 100644 --- a/spec/controllers/api/v1/accounts/familiar_followers_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/familiar_followers_controller_spec.rb @@ -19,5 +19,17 @@ describe Api::V1::Accounts::FamiliarFollowersController do expect(response).to have_http_status(200) end + + context 'when there are duplicate account IDs in the params' do + let(:account_a) { Fabricate(:account) } + let(:account_b) { Fabricate(:account) } + + it 'removes duplicate account IDs from params' do + account_ids = [account_a, account_b, account_b, account_a, account_a].map { |a| a.id.to_s } + get :index, params: { id: account_ids } + + expect(body_as_json.pluck(:id)).to eq [account_a.id.to_s, account_b.id.to_s] + end + end end end diff --git a/spec/controllers/api/v1/admin/dimensions_controller_spec.rb b/spec/controllers/api/v1/admin/dimensions_controller_spec.rb deleted file mode 100644 index ea18efe38..000000000 --- a/spec/controllers/api/v1/admin/dimensions_controller_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Admin::DimensionsController do - render_views - - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } - let(:account) { Fabricate(:account) } - - before do - allow(controller).to receive(:doorkeeper_token) { token } - end - - describe 'POST #create' do - it 'returns http success' do - post :create, params: { account_id: account.id, limit: 2 } - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/admin/measures_controller_spec.rb b/spec/controllers/api/v1/admin/measures_controller_spec.rb deleted file mode 100644 index 03727a632..000000000 --- a/spec/controllers/api/v1/admin/measures_controller_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Admin::MeasuresController do - render_views - - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } - let(:account) { Fabricate(:account) } - - before do - allow(controller).to receive(:doorkeeper_token) { token } - end - - describe 'POST #create' do - it 'returns http success' do - post :create, params: { account_id: account.id, limit: 2 } - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/admin/retention_controller_spec.rb b/spec/controllers/api/v1/admin/retention_controller_spec.rb deleted file mode 100644 index 2381dbcb4..000000000 --- a/spec/controllers/api/v1/admin/retention_controller_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Admin::RetentionController do - render_views - - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'admin:read') } - let(:account) { Fabricate(:account) } - - before do - allow(controller).to receive(:doorkeeper_token) { token } - end - - describe 'POST #create' do - it 'returns http success' do - post :create, params: { account_id: account.id, limit: 2 } - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/custom_emojis_controller_spec.rb b/spec/controllers/api/v1/custom_emojis_controller_spec.rb deleted file mode 100644 index 08af57f40..000000000 --- a/spec/controllers/api/v1/custom_emojis_controller_spec.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Api::V1::CustomEmojisController do - render_views - - describe 'GET #index' do - before do - Fabricate(:custom_emoji) - get :index - end - - it 'returns http success' do - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/endorsements_controller_spec.rb b/spec/controllers/api/v1/endorsements_controller_spec.rb deleted file mode 100644 index 738804bb7..000000000 --- a/spec/controllers/api/v1/endorsements_controller_spec.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Api::V1::EndorsementsController do - let(:user) { Fabricate(:user) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } - - describe 'GET #index' do - it 'returns 200' do - allow(controller).to receive(:doorkeeper_token) { token } - get :index - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/instances/activity_controller_spec.rb b/spec/controllers/api/v1/instances/activity_controller_spec.rb deleted file mode 100644 index b446a521f..000000000 --- a/spec/controllers/api/v1/instances/activity_controller_spec.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Api::V1::Instances::ActivityController do - describe 'GET #show' do - it 'returns 200' do - get :show - expect(response).to have_http_status(200) - end - - context 'with !Setting.activity_api_enabled' do - it 'returns 404' do - Setting.activity_api_enabled = false - - get :show - expect(response).to have_http_status(404) - end - end - end -end diff --git a/spec/controllers/api/v1/instances/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/instances/domain_blocks_controller_spec.rb deleted file mode 100644 index 08f505c3d..000000000 --- a/spec/controllers/api/v1/instances/domain_blocks_controller_spec.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Instances::DomainBlocksController do - render_views - - describe 'GET #index' do - it 'returns http success' do - Setting.show_domain_blocks = 'all' - get :index - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/instances/extended_descriptions_controller_spec.rb b/spec/controllers/api/v1/instances/extended_descriptions_controller_spec.rb deleted file mode 100644 index 58c0d4b8f..000000000 --- a/spec/controllers/api/v1/instances/extended_descriptions_controller_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Instances::ExtendedDescriptionsController do - render_views - - describe 'GET #show' do - it 'returns http success' do - get :show - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/instances/peers_controller_spec.rb b/spec/controllers/api/v1/instances/peers_controller_spec.rb deleted file mode 100644 index 92b101915..000000000 --- a/spec/controllers/api/v1/instances/peers_controller_spec.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Api::V1::Instances::PeersController do - describe 'GET #index' do - it 'returns 200' do - get :index - expect(response).to have_http_status(200) - end - - context 'with !Setting.peers_api_enabled' do - it 'returns 404' do - Setting.peers_api_enabled = false - - get :index - expect(response).to have_http_status(404) - end - end - end -end diff --git a/spec/controllers/api/v1/instances/privacy_policies_controller_spec.rb b/spec/controllers/api/v1/instances/privacy_policies_controller_spec.rb deleted file mode 100644 index ac0bed9dc..000000000 --- a/spec/controllers/api/v1/instances/privacy_policies_controller_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Instances::PrivacyPoliciesController do - render_views - - describe 'GET #show' do - it 'returns http success' do - get :show - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/instances/rules_controller_spec.rb b/spec/controllers/api/v1/instances/rules_controller_spec.rb deleted file mode 100644 index 5af50239b..000000000 --- a/spec/controllers/api/v1/instances/rules_controller_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Instances::RulesController do - render_views - - describe 'GET #index' do - it 'returns http success' do - get :index - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb b/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb deleted file mode 100644 index f79687df6..000000000 --- a/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::Instances::TranslationLanguagesController do - describe 'GET #show' do - context 'when no translation service is configured' do - it 'returns empty language matrix', :aggregate_failures do - get :show - - expect(response).to have_http_status(200) - expect(body_as_json).to eq({}) - end - end - - context 'when a translation service is configured' do - before do - service = instance_double(TranslationService::DeepL, languages: { nil => %w(en de), 'en' => ['de'] }) - allow(TranslationService).to receive_messages(configured?: true, configured: service) - end - - it 'returns language matrix', :aggregate_failures do - get :show - - expect(response).to have_http_status(200) - expect(body_as_json).to eq({ und: %w(en de), en: ['de'] }) - end - end - end -end diff --git a/spec/controllers/api/v1/instances_controller_spec.rb b/spec/controllers/api/v1/instances_controller_spec.rb deleted file mode 100644 index fcc2c9288..000000000 --- a/spec/controllers/api/v1/instances_controller_spec.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Api::V1::InstancesController do - render_views - - let(:user) { Fabricate(:user) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } - - before do - allow(controller).to receive(:doorkeeper_token) { token } - end - - describe 'GET #show' do - it 'returns http success' do - get :show - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/preferences_controller_spec.rb b/spec/controllers/api/v1/preferences_controller_spec.rb deleted file mode 100644 index 79cc3066e..000000000 --- a/spec/controllers/api/v1/preferences_controller_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::PreferencesController do - render_views - - let(:user) { Fabricate(:user) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } - let(:account) { Fabricate(:account) } - - before do - allow(controller).to receive(:doorkeeper_token) { token } - end - - describe 'GET #index' do - it 'returns http success' do - get :index - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/scheduled_statuses_controller_spec.rb b/spec/controllers/api/v1/scheduled_statuses_controller_spec.rb deleted file mode 100644 index 256c4b272..000000000 --- a/spec/controllers/api/v1/scheduled_statuses_controller_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V1::ScheduledStatusesController do - render_views - - let(:user) { Fabricate(:user) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses') } - let(:account) { Fabricate(:account) } - - before do - allow(controller).to receive(:doorkeeper_token) { token } - end - - describe 'GET #index' do - it 'returns http success' do - get :index - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb b/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb index 2f2b30b07..e3a9bdb50 100644 --- a/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb @@ -9,13 +9,7 @@ describe Api::V1::Statuses::ReblogsController do let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:statuses', application: app) } - context 'with an oauth token' do - around do |example| - Sidekiq::Testing.fake! do - example.run - end - end - + context 'with an oauth token', :sidekiq_fake do before do allow(controller).to receive(:doorkeeper_token) { token } end diff --git a/spec/controllers/api/v2/instances_controller_spec.rb b/spec/controllers/api/v2/instances_controller_spec.rb deleted file mode 100644 index b7206da0a..000000000 --- a/spec/controllers/api/v2/instances_controller_spec.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe Api::V2::InstancesController do - render_views - - let(:user) { Fabricate(:user) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } - - before do - allow(controller).to receive(:doorkeeper_token) { token } - end - - describe 'GET #show' do - it 'returns http success' do - get :show - - expect(response).to have_http_status(200) - end - end -end diff --git a/spec/controllers/settings/exports_controller_spec.rb b/spec/controllers/settings/exports_controller_spec.rb index c8c11c3be..0bd1e80c3 100644 --- a/spec/controllers/settings/exports_controller_spec.rb +++ b/spec/controllers/settings/exports_controller_spec.rb @@ -38,12 +38,10 @@ describe Settings::ExportsController do expect(response).to redirect_to(settings_export_path) end - it 'queues BackupWorker job by 1' do - Sidekiq::Testing.fake! do - expect do - post :create - end.to change(BackupWorker.jobs, :size).by(1) - end + it 'queues BackupWorker job by 1', :sidekiq_fake do + expect do + post :create + end.to change(BackupWorker.jobs, :size).by(1) end end end diff --git a/spec/controllers/settings/preferences/appearance_controller_spec.rb b/spec/controllers/settings/preferences/appearance_controller_spec.rb index ee0ded1b9..261c426ac 100644 --- a/spec/controllers/settings/preferences/appearance_controller_spec.rb +++ b/spec/controllers/settings/preferences/appearance_controller_spec.rb @@ -28,11 +28,5 @@ describe Settings::Preferences::AppearanceController do expect(response).to redirect_to(settings_preferences_appearance_path) end - - it 'renders show on failure' do - put :update, params: { user: { locale: 'fake option' } } - - expect(response).to render_template('preferences/appearance/show') - end end end diff --git a/spec/controllers/settings/privacy_controller_spec.rb b/spec/controllers/settings/privacy_controller_spec.rb new file mode 100644 index 000000000..59fd34219 --- /dev/null +++ b/spec/controllers/settings/privacy_controller_spec.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Settings::PrivacyController do + render_views + + let!(:user) { Fabricate(:user) } + let(:account) { user.account } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + before do + get :show + end + + it 'returns http success with private cache control headers', :aggregate_failures do + expect(response) + .to have_http_status(200) + .and have_attributes( + headers: include( + 'Cache-Control' => 'private, no-store' + ) + ) + end + end + + describe 'PUT #update' do + context 'when update succeeds' do + before do + allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) + end + + it 'updates the user profile' do + put :update, params: { account: { discoverable: '1', settings: { indexable: '1' } } } + + expect(account.reload.discoverable) + .to be(true) + + expect(response) + .to redirect_to(settings_privacy_path) + + expect(ActivityPub::UpdateDistributionWorker) + .to have_received(:perform_async).with(account.id) + end + end + + context 'when update fails' do + before do + allow(UpdateAccountService).to receive(:new).and_return(failing_update_service) + allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) + end + + it 'updates the user profile' do + put :update, params: { account: { discoverable: '1', settings: { indexable: '1' } } } + + expect(response) + .to render_template(:show) + + expect(ActivityPub::UpdateDistributionWorker) + .to_not have_received(:perform_async) + end + + private + + def failing_update_service + instance_double(UpdateAccountService, call: false) + end + end + end +end diff --git a/spec/controllers/settings/verifications_controller_spec.rb b/spec/controllers/settings/verifications_controller_spec.rb new file mode 100644 index 000000000..1a8df485b --- /dev/null +++ b/spec/controllers/settings/verifications_controller_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Settings::VerificationsController do + render_views + + let!(:user) { Fabricate(:user) } + + before do + sign_in user, scope: :user + end + + describe 'GET #show' do + before do + get :show + end + + it 'returns http success with private cache control headers', :aggregate_failures do + expect(response) + .to have_http_status(200) + .and have_attributes( + headers: include( + 'Cache-Control' => 'private, no-store' + ) + ) + end + end +end diff --git a/spec/fabricators/scheduled_status_fabricator.rb b/spec/fabricators/scheduled_status_fabricator.rb index eed275ab9..d3d4f1bfd 100644 --- a/spec/fabricators/scheduled_status_fabricator.rb +++ b/spec/fabricators/scheduled_status_fabricator.rb @@ -3,4 +3,5 @@ Fabricator(:scheduled_status) do account { Fabricate.build(:account) } scheduled_at { 20.hours.from_now } + params { {} } end diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index 7594efd59..bdc1c45ea 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -23,7 +23,7 @@ RSpec.describe ActivityPub::Activity::Create do stub_request(:get, 'http://example.com/emojib.png').to_return(body: attachment_fixture('emojo.png'), headers: { 'Content-Type' => 'application/octet-stream' }) end - describe 'processing posts received out of order' do + describe 'processing posts received out of order', :sidekiq_fake do let(:follower) { Fabricate(:account, username: 'bob') } let(:object_json) do @@ -77,13 +77,6 @@ RSpec.describe ActivityPub::Activity::Create do follower.follow!(sender) end - around do |example| - Sidekiq::Testing.fake! do - example.run - Sidekiq::Worker.clear_all - end - end - it 'correctly processes posts and inserts them in timelines', :aggregate_failures do # Simulate a temporary failure preventing from fetching the parent post stub_request(:get, object_json[:id]).to_return(status: 500) diff --git a/spec/lib/mastodon/cli/accounts_spec.rb b/spec/lib/mastodon/cli/accounts_spec.rb index 2c8c99471..626cf4778 100644 --- a/spec/lib/mastodon/cli/accounts_spec.rb +++ b/spec/lib/mastodon/cli/accounts_spec.rb @@ -465,7 +465,7 @@ describe Mastodon::CLI::Accounts do end describe '#approve' do - let(:total_users) { 10 } + let(:total_users) { 4 } before do Form::AdminSettings.new(registrations_mode: 'approved').save @@ -482,7 +482,7 @@ describe Mastodon::CLI::Accounts do context 'with --number option' do context 'when the number is positive' do - let(:options) { { number: 3 } } + let(:options) { { number: 2 } } it 'approves the earliest n pending registrations' do cli.invoke(:approve, nil, options) @@ -779,6 +779,8 @@ describe Mastodon::CLI::Accounts do let(:arguments) { [account_example_com_a.acct, account_example_com_b.acct] } before do + # NOTE: `Account.find_remote` is stubbed so that `Account#reset_avatar!` + # can be stubbed on the individual accounts. allow(Account).to receive(:find_remote).with(account_example_com_a.username, account_example_com_a.domain).and_return(account_example_com_a) allow(Account).to receive(:find_remote).with(account_example_com_b.username, account_example_com_b.domain).and_return(account_example_com_b) allow(Account).to receive(:find_remote).with(account_example_net.username, account_example_net.domain).and_return(account_example_net) @@ -978,11 +980,10 @@ describe Mastodon::CLI::Accounts do end context 'when --all option is provided' do - let(:accounts) { Fabricate.times(3, :account) } - let(:options) { { all: true } } + let!(:accounts) { Fabricate.times(2, :account) } + let(:options) { { all: true } } before do - allow(Account).to receive(:local).and_return(Account.where(id: accounts.map(&:id))) cli.options = { all: true } end @@ -1269,7 +1270,7 @@ describe Mastodon::CLI::Accounts do end context 'when the given username is found' do - let(:total_relationships) { 10 } + let(:total_relationships) { 3 } let!(:accounts) { Fabricate.times(total_relationships, :account) } context 'with --follows option' do @@ -1324,8 +1325,8 @@ describe Mastodon::CLI::Accounts do let(:options) { { followers: true, follows: true } } before do - accounts.first(6).each { |account| account.follow!(target_account) } - accounts.last(4).each { |account| target_account.follow!(account) } + accounts.first(2).each { |account| account.follow!(target_account) } + accounts.last(1).each { |account| target_account.follow!(account) } end it 'resets all "followers" relationships from the target account' do @@ -1363,7 +1364,7 @@ describe Mastodon::CLI::Accounts do let!(:group_account) { Fabricate(:account, actor_type: 'Group', domain: 'example.com') } let!(:mentioned_account) { Fabricate(:account, domain: 'example.com') } let!(:prunable_accounts) do - Fabricate.times(3, :account, domain: 'example.com', bot: false, suspended_at: nil, silenced_at: nil) + Fabricate.times(2, :account, domain: 'example.com', bot: false, suspended_at: nil, silenced_at: nil) end before do @@ -1581,8 +1582,7 @@ describe Mastodon::CLI::Accounts do context 'when the specified account is redirecting to a different target account' do before do - allow(Account).to receive(:find_local).with(source_account.username).and_return(source_account) - allow(source_account).to receive(:moved_to_account_id).and_return(-1) + source_account.update(moved_to_account: Fabricate(:account)) end it 'exits with an error message' do @@ -1597,9 +1597,8 @@ describe Mastodon::CLI::Accounts do let(:options) { { target: target_account.acct, force: true } } before do + source_account.update(moved_to_account: Fabricate(:account)) target_account.aliases.create!(acct: source_account.acct) - allow(Account).to receive(:find_local).with(source_account.username).and_return(source_account) - allow(source_account).to receive(:moved_to_account_id).and_return(-1) end it_behaves_like 'a successful migration' diff --git a/spec/mailers/admin_mailer_spec.rb b/spec/mailers/admin_mailer_spec.rb index 9f0d89996..88ad7aa02 100644 --- a/spec/mailers/admin_mailer_spec.rb +++ b/spec/mailers/admin_mailer_spec.rb @@ -63,12 +63,14 @@ RSpec.describe AdminMailer do describe '.new_trends' do let(:recipient) { Fabricate(:account, username: 'Snurf') } - let(:links) { [] } - let(:statuses) { [] } - let(:tags) { [] } - let(:mail) { described_class.with(recipient: recipient).new_trends(links, tags, statuses) } + let(:link) { Fabricate(:preview_card, trendable: true, language: 'en') } + let(:status) { Fabricate(:status) } + let(:tag) { Fabricate(:tag) } + let(:mail) { described_class.with(recipient: recipient).new_trends([link], [tag], [status]) } before do + PreviewCardTrend.create!(preview_card: link) + StatusTrend.create!(status: status, account: Fabricate(:account)) recipient.user.update(locale: :en) end @@ -79,6 +81,9 @@ RSpec.describe AdminMailer do .and(deliver_from('notifications@localhost')) .and(have_subject('New trends up for review on cb6e6126.ngrok.io')) .and(have_body_text('The following items need a review before they can be displayed publicly')) + .and(have_body_text(ActivityPub::TagManager.instance.url_for(status))) + .and(have_body_text(link.title)) + .and(have_body_text(tag.display_name)) end end diff --git a/spec/mailers/previews/admin_mailer_preview.rb b/spec/mailers/previews/admin_mailer_preview.rb index bc8f0193b..942d40d56 100644 --- a/spec/mailers/previews/admin_mailer_preview.rb +++ b/spec/mailers/previews/admin_mailer_preview.rb @@ -3,6 +3,16 @@ # Preview all emails at http://localhost:3000/rails/mailers/admin_mailer class AdminMailerPreview < ActionMailer::Preview + # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_report + def new_report + AdminMailer.with(recipient: Account.first).new_report(Report.first) + end + + # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_appeal + def new_appeal + AdminMailer.with(recipient: Account.first).new_appeal(Appeal.first) + end + # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_pending_account def new_pending_account AdminMailer.with(recipient: Account.first).new_pending_account(User.pending.first) @@ -13,8 +23,13 @@ class AdminMailerPreview < ActionMailer::Preview AdminMailer.with(recipient: Account.first).new_trends(PreviewCard.joins(:trend).limit(3), Tag.limit(3), Status.joins(:trend).where(reblog_of_id: nil).limit(3)) end - # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_appeal - def new_appeal - AdminMailer.with(recipient: Account.first).new_appeal(Appeal.first) + # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_software_updates + def new_software_updates + AdminMailer.with(recipient: Account.first).new_software_updates + end + + # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_critical_software_updates + def new_critical_software_updates + AdminMailer.with(recipient: Account.first).new_critical_software_updates end end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index f77ecb055..9652ea191 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -450,10 +450,11 @@ RSpec.describe Account do expect(results).to eq [match] end - it 'limits by 10 by default' do - 11.times.each { Fabricate(:account, display_name: 'Display Name') } + it 'limits via constant by default' do + stub_const('AccountSearch::DEFAULT_LIMIT', 1) + 2.times.each { Fabricate(:account, display_name: 'Display Name') } results = described_class.search_for('display') - expect(results.size).to eq 10 + expect(results.size).to eq 1 end it 'accepts arbitrary limits' do @@ -594,9 +595,10 @@ RSpec.describe Account do end it 'limits by 10 by default' do - 11.times { Fabricate(:account, display_name: 'Display Name') } + stub_const('AccountSearch::DEFAULT_LIMIT', 1) + 2.times { Fabricate(:account, display_name: 'Display Name') } results = described_class.advanced_search_for('display', account) - expect(results.size).to eq 10 + expect(results.size).to eq 1 end it 'accepts arbitrary limits' do diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb index 7405bdfa2..74fff30c9 100644 --- a/spec/models/account_statuses_cleanup_policy_spec.rb +++ b/spec/models/account_statuses_cleanup_policy_spec.rb @@ -280,10 +280,10 @@ RSpec.describe AccountStatusesCleanupPolicy do let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) } before do - 4.times { faved_primary.increment_count!(:favourites_count) } - 5.times { faved_secondary.increment_count!(:favourites_count) } - 4.times { reblogged_primary.increment_count!(:reblogs_count) } - 5.times { reblogged_secondary.increment_count!(:reblogs_count) } + faved_primary.status_stat.update(favourites_count: 4) + faved_secondary.status_stat.update(favourites_count: 5) + reblogged_primary.status_stat.update(reblogs_count: 4) + reblogged_secondary.status_stat.update(reblogs_count: 5) end context 'when passed a max_id' do diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb index 604fe7318..5d64d565f 100644 --- a/spec/models/admin/account_action_spec.rb +++ b/spec/models/admin/account_action_spec.rb @@ -46,12 +46,10 @@ RSpec.describe Admin::AccountAction do expect(target_account).to be_suspended end - it 'queues Admin::SuspensionWorker by 1' do - Sidekiq::Testing.fake! do - expect do - subject - end.to change { Admin::SuspensionWorker.jobs.size }.by 1 - end + it 'queues Admin::SuspensionWorker by 1', :sidekiq_fake do + expect do + subject + end.to change { Admin::SuspensionWorker.jobs.size }.by 1 end end diff --git a/spec/models/status_pin_spec.rb b/spec/models/status_pin_spec.rb index 660b2e92a..da375009a 100644 --- a/spec/models/status_pin_spec.rb +++ b/spec/models/status_pin_spec.rb @@ -40,35 +40,34 @@ RSpec.describe StatusPin do expect(described_class.new(account: account, status: status).save).to be false end - max_pins = 5 - it 'does not allow pins above the max' do - account = Fabricate(:account) - status = [] + context 'with a pin limit' do + before { stub_const('StatusPinValidator::PIN_LIMIT', 2) } - (max_pins + 1).times do |i| - status[i] = Fabricate(:status, account: account) + it 'does not allow pins above the max' do + account = Fabricate(:account) + + Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) + + pin = described_class.new(account: account, status: Fabricate(:status, account: account)) + expect(pin.save) + .to be(false) + + expect(pin.errors[:base]) + .to contain_exactly(I18n.t('statuses.pin_errors.limit')) end - max_pins.times do |i| - expect(described_class.new(account: account, status: status[i]).save).to be true + it 'allows pins above the max for remote accounts' do + account = Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') + + Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) + + pin = described_class.new(account: account, status: Fabricate(:status, account: account)) + expect(pin.save) + .to be(true) + + expect(pin.errors[:base]) + .to be_empty end - - expect(described_class.new(account: account, status: status[max_pins]).save).to be false - end - - it 'allows pins above the max for remote accounts' do - account = Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') - status = [] - - (max_pins + 1).times do |i| - status[i] = Fabricate(:status, account: account) - end - - max_pins.times do |i| - expect(described_class.new(account: account, status: status[i]).save).to be true - end - - expect(described_class.new(account: account, status: status[max_pins]).save).to be true end end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index faf7fabf1..a2f8d2ca4 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -27,12 +27,6 @@ RSpec.describe User do expect(user).to model_have_error_on_field(:account) end - it 'is invalid without a valid locale' do - user = Fabricate.build(:user, locale: 'toto') - user.valid? - expect(user).to model_have_error_on_field(:locale) - end - it 'is invalid without a valid email' do user = Fabricate.build(:user, email: 'john@') user.valid? @@ -45,6 +39,18 @@ RSpec.describe User do expect(user.valid?).to be true end + it 'cleans out invalid locale' do + user = Fabricate.build(:user, locale: 'toto') + expect(user.valid?).to be true + expect(user.locale).to be_nil + end + + it 'cleans out invalid timezone' do + user = Fabricate.build(:user, time_zone: 'toto') + expect(user.valid?).to be true + expect(user.time_zone).to be_nil + end + it 'cleans out empty string from languages' do user = Fabricate.build(:user, chosen_languages: ['']) user.valid? diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 7deab6c7f..d30e7201c 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -60,7 +60,9 @@ RSpec.configure do |config| # By default, skip the elastic search integration specs config.filter_run_excluding search: true - config.fixture_path = Rails.root.join('spec', 'fixtures') + config.fixture_paths = [ + Rails.root.join('spec', 'fixtures'), + ] config.use_transactional_fixtures = true config.order = 'random' config.infer_spec_type_from_file_location! @@ -93,6 +95,13 @@ RSpec.configure do |config| self.use_transactional_tests = true end + config.around(:each, :sidekiq_fake) do |example| + Sidekiq::Testing.fake! do + example.run + Sidekiq::Worker.clear_all + end + end + config.before :each, type: :cli do stub_stdout stub_reset_connection_pools diff --git a/spec/requests/api/v1/accounts/relationships_spec.rb b/spec/requests/api/v1/accounts/relationships_spec.rb index e06ffdfae..cea45168a 100644 --- a/spec/requests/api/v1/accounts/relationships_spec.rb +++ b/spec/requests/api/v1/accounts/relationships_spec.rb @@ -79,6 +79,22 @@ describe 'GET /api/v1/accounts/relationships' do end end + context 'when there are duplicate IDs in the params' do + let(:params) { { id: [simon.id, lewis.id, lewis.id, lewis.id, simon.id] } } + + it 'removes duplicate account IDs from params' do + subject + + expect(body_as_json) + .to be_an(Enumerable) + .and have_attributes( + size: 2, + first: include(simon_item), + second: include(lewis_item) + ) + end + end + def simon_item { id: simon.id.to_s, diff --git a/spec/requests/api/v1/admin/dimensions_spec.rb b/spec/requests/api/v1/admin/dimensions_spec.rb new file mode 100644 index 000000000..87534a74b --- /dev/null +++ b/spec/requests/api/v1/admin/dimensions_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Admin Dimensions' do + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + let(:account) { Fabricate(:account) } + + describe 'GET /api/v1/admin/dimensions' do + context 'when not authorized' do + it 'returns http forbidden' do + post '/api/v1/admin/dimensions', params: { account_id: account.id, limit: 2 } + + expect(response) + .to have_http_status(403) + end + end + + context 'with correct scope' do + let(:scopes) { 'admin:read' } + + it 'returns http success and status json' do + post '/api/v1/admin/dimensions', params: { account_id: account.id, limit: 2 }, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_an(Array) + end + end + end +end diff --git a/spec/requests/api/v1/admin/domain_allows_spec.rb b/spec/requests/api/v1/admin/domain_allows_spec.rb index 6db1ab6e3..662a8f9a8 100644 --- a/spec/requests/api/v1/admin/domain_allows_spec.rb +++ b/spec/requests/api/v1/admin/domain_allows_spec.rb @@ -35,7 +35,7 @@ RSpec.describe 'Domain Allows' do end context 'when there are allowed domains' do - let!(:domain_allows) { Fabricate.times(5, :domain_allow) } + let!(:domain_allows) { Fabricate.times(2, :domain_allow) } let(:expected_response) do domain_allows.map do |domain_allow| { @@ -53,7 +53,7 @@ RSpec.describe 'Domain Allows' do end context 'with limit param' do - let(:params) { { limit: 2 } } + let(:params) { { limit: 1 } } it 'returns only the requested number of allowed domains' do subject diff --git a/spec/requests/api/v1/admin/measures_spec.rb b/spec/requests/api/v1/admin/measures_spec.rb new file mode 100644 index 000000000..15f2df84c --- /dev/null +++ b/spec/requests/api/v1/admin/measures_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Admin Measures' do + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + let(:account) { Fabricate(:account) } + + describe 'GET /api/v1/admin/measures' do + context 'when not authorized' do + it 'returns http forbidden' do + post '/api/v1/admin/measures', params: { account_id: account.id, limit: 2 } + + expect(response) + .to have_http_status(403) + end + end + + context 'with correct scope' do + let(:scopes) { 'admin:read' } + + it 'returns http success and status json' do + post '/api/v1/admin/measures', params: { account_id: account.id, limit: 2 }, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_an(Array) + end + end + end +end diff --git a/spec/requests/api/v1/admin/retention_spec.rb b/spec/requests/api/v1/admin/retention_spec.rb new file mode 100644 index 000000000..9178335ba --- /dev/null +++ b/spec/requests/api/v1/admin/retention_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Admin Retention' do + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + let(:account) { Fabricate(:account) } + + describe 'GET /api/v1/admin/retention' do + context 'when not authorized' do + it 'returns http forbidden' do + post '/api/v1/admin/retention', params: { account_id: account.id, limit: 2 } + + expect(response) + .to have_http_status(403) + end + end + + context 'with correct scope' do + let(:scopes) { 'admin:read' } + + it 'returns http success and status json' do + post '/api/v1/admin/retention', params: { account_id: account.id, limit: 2 }, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_an(Array) + end + end + end +end diff --git a/spec/requests/api/v1/bookmarks_spec.rb b/spec/requests/api/v1/bookmarks_spec.rb index 1f1cd35ca..18f4fddc2 100644 --- a/spec/requests/api/v1/bookmarks_spec.rb +++ b/spec/requests/api/v1/bookmarks_spec.rb @@ -14,7 +14,7 @@ RSpec.describe 'Bookmarks' do end let(:params) { {} } - let!(:bookmarks) { Fabricate.times(3, :bookmark, account: user.account) } + let!(:bookmarks) { Fabricate.times(2, :bookmark, account: user.account) } let(:expected_response) do bookmarks.map do |bookmark| @@ -37,7 +37,7 @@ RSpec.describe 'Bookmarks' do end context 'with limit param' do - let(:params) { { limit: 2 } } + let(:params) { { limit: 1 } } it 'paginates correctly', :aggregate_failures do subject diff --git a/spec/requests/api/v1/custom_emojis_spec.rb b/spec/requests/api/v1/custom_emojis_spec.rb new file mode 100644 index 000000000..5de0dda0b --- /dev/null +++ b/spec/requests/api/v1/custom_emojis_spec.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Custom Emojis' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + + describe 'GET /api/v1/custom_emojis' do + before do + Fabricate(:custom_emoji, domain: nil, disabled: false, visible_in_picker: true) + end + + context 'when logged out' do + it 'returns http success and json' do + get api_v1_custom_emojis_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and have_attributes( + first: include(shortcode: 'coolcat') + ) + end + end + + context 'when logged in' do + it 'returns http success and json' do + get api_v1_custom_emojis_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and have_attributes( + first: include(shortcode: 'coolcat') + ) + end + end + end +end diff --git a/spec/requests/api/v1/endorsements_spec.rb b/spec/requests/api/v1/endorsements_spec.rb new file mode 100644 index 000000000..e267f2abd --- /dev/null +++ b/spec/requests/api/v1/endorsements_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Endorsements' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + + describe 'GET /api/v1/endorsements' do + context 'when not authorized' do + it 'returns http unauthorized' do + get api_v1_endorsements_path + + expect(response) + .to have_http_status(401) + end + end + + context 'with wrong scope' do + before do + get api_v1_endorsements_path, headers: headers + end + + it_behaves_like 'forbidden for wrong scope', 'write write:accounts' + end + + context 'with correct scope' do + let(:scopes) { 'read:accounts' } + + context 'with endorsed accounts' do + let!(:account_pin) { Fabricate(:account_pin, account: user.account) } + + it 'returns http success and accounts json' do + get api_v1_endorsements_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and have_attributes( + first: include(acct: account_pin.target_account.acct) + ) + end + end + + context 'without endorsed accounts without json' do + it 'returns http success' do + get api_v1_endorsements_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to_not be_present + end + end + end + end +end diff --git a/spec/requests/api/v1/favourites_spec.rb b/spec/requests/api/v1/favourites_spec.rb index 713990592..2d8a42e71 100644 --- a/spec/requests/api/v1/favourites_spec.rb +++ b/spec/requests/api/v1/favourites_spec.rb @@ -14,7 +14,7 @@ RSpec.describe 'Favourites' do end let(:params) { {} } - let!(:favourites) { Fabricate.times(3, :favourite, account: user.account) } + let!(:favourites) { Fabricate.times(2, :favourite, account: user.account) } let(:expected_response) do favourites.map do |favourite| @@ -37,7 +37,7 @@ RSpec.describe 'Favourites' do end context 'with limit param' do - let(:params) { { limit: 2 } } + let(:params) { { limit: 1 } } it 'returns only the requested number of favourites' do subject diff --git a/spec/requests/api/v1/featured_tags_spec.rb b/spec/requests/api/v1/featured_tags_spec.rb index 6c171f6e4..c4aa2c0a2 100644 --- a/spec/requests/api/v1/featured_tags_spec.rb +++ b/spec/requests/api/v1/featured_tags_spec.rb @@ -32,7 +32,7 @@ RSpec.describe 'FeaturedTags' do end context 'when the requesting user has no featured tag' do - before { Fabricate.times(3, :featured_tag) } + before { Fabricate(:featured_tag) } it 'returns an empty body' do get '/api/v1/featured_tags', headers: headers @@ -44,7 +44,7 @@ RSpec.describe 'FeaturedTags' do end context 'when the requesting user has featured tags' do - let!(:user_featured_tags) { Fabricate.times(5, :featured_tag, account: user.account) } + let!(:user_featured_tags) { Fabricate.times(1, :featured_tag, account: user.account) } it 'returns only the featured tags belonging to the requesting user' do get '/api/v1/featured_tags', headers: headers diff --git a/spec/requests/api/v1/follow_requests_spec.rb b/spec/requests/api/v1/follow_requests_spec.rb index 1d78c9be1..a8898ccb3 100644 --- a/spec/requests/api/v1/follow_requests_spec.rb +++ b/spec/requests/api/v1/follow_requests_spec.rb @@ -13,7 +13,7 @@ RSpec.describe 'Follow requests' do get '/api/v1/follow_requests', headers: headers, params: params end - let(:accounts) { Fabricate.times(5, :account) } + let(:accounts) { Fabricate.times(2, :account) } let(:params) { {} } let(:expected_response) do @@ -40,7 +40,7 @@ RSpec.describe 'Follow requests' do end context 'with limit param' do - let(:params) { { limit: 2 } } + let(:params) { { limit: 1 } } it 'returns only the requested number of follow requests' do subject diff --git a/spec/requests/api/v1/followed_tags_spec.rb b/spec/requests/api/v1/followed_tags_spec.rb index 9391c7bdc..52ed1ba4b 100644 --- a/spec/requests/api/v1/followed_tags_spec.rb +++ b/spec/requests/api/v1/followed_tags_spec.rb @@ -13,7 +13,7 @@ RSpec.describe 'Followed tags' do get '/api/v1/followed_tags', headers: headers, params: params end - let!(:tag_follows) { Fabricate.times(5, :tag_follow, account: user.account) } + let!(:tag_follows) { Fabricate.times(2, :tag_follow, account: user.account) } let(:params) { {} } let(:expected_response) do @@ -41,7 +41,7 @@ RSpec.describe 'Followed tags' do end context 'with limit param' do - let(:params) { { limit: 3 } } + let(:params) { { limit: 1 } } it 'returns only the requested number of follow tags' do subject @@ -58,7 +58,7 @@ RSpec.describe 'Followed tags' do it 'sets the correct pagination header for the next path' do subject - expect(response.headers['Link'].find_link(%w(rel next)).href).to eq(api_v1_followed_tags_url(limit: params[:limit], max_id: tag_follows[2].id)) + expect(response.headers['Link'].find_link(%w(rel next)).href).to eq(api_v1_followed_tags_url(limit: params[:limit], max_id: tag_follows.last.id)) end end end diff --git a/spec/requests/api/v1/instance_spec.rb b/spec/requests/api/v1/instance_spec.rb new file mode 100644 index 000000000..9cac280c4 --- /dev/null +++ b/spec/requests/api/v1/instance_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Instances' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + + describe 'GET /api/v1/instance' do + context 'when not logged in' do + it 'returns http success and json' do + get api_v1_instance_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and include(title: 'Mastodon') + end + end + + context 'when logged in' do + it 'returns http success and json' do + get api_v1_instance_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and include(title: 'Mastodon') + end + end + end +end diff --git a/spec/requests/api/v1/instances/activity_spec.rb b/spec/requests/api/v1/instances/activity_spec.rb new file mode 100644 index 000000000..d1f92ef36 --- /dev/null +++ b/spec/requests/api/v1/instances/activity_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Activity' do + describe 'GET /api/v1/instance/activity' do + around do |example| + original = Setting.activity_api_enabled + example.run + Setting.activity_api_enabled = original + end + + context 'with activity api enabled' do + before { Setting.activity_api_enabled = true } + + it 'returns http success' do + get api_v1_instance_activity_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and(be_an(Array)) + .and(have_attributes(size: Api::V1::Instances::ActivityController::WEEKS_OF_ACTIVITY)) + end + end + + context 'with activity api diabled' do + before { Setting.activity_api_enabled = false } + + it 'returns not found' do + get api_v1_instance_activity_path + + expect(response) + .to have_http_status(404) + end + end + end +end diff --git a/spec/requests/api/v1/instances/domain_blocks_spec.rb b/spec/requests/api/v1/instances/domain_blocks_spec.rb new file mode 100644 index 000000000..99b5e2b6a --- /dev/null +++ b/spec/requests/api/v1/instances/domain_blocks_spec.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Domain Blocks' do + describe 'GET /api/v1/instance/domain_blocks' do + around do |example| + original = Setting.show_domain_blocks + example.run + Setting.show_domain_blocks = original + end + + before do + Fabricate(:domain_block) + end + + context 'with domain blocks set to all' do + before { Setting.show_domain_blocks = 'all' } + + it 'returns http success' do + get api_v1_instance_domain_blocks_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and(be_an(Array)) + .and(have_attributes(size: 1)) + end + end + + context 'with domain blocks set to users' do + before { Setting.show_domain_blocks = 'users' } + + it 'returns http not found' do + get api_v1_instance_domain_blocks_path + + expect(response) + .to have_http_status(404) + end + end + + context 'with domain blocks set to disabled' do + before { Setting.show_domain_blocks = 'disabled' } + + it 'returns http not found' do + get api_v1_instance_domain_blocks_path + + expect(response) + .to have_http_status(404) + end + end + end +end diff --git a/spec/requests/api/v1/instances/extended_descriptions_spec.rb b/spec/requests/api/v1/instances/extended_descriptions_spec.rb new file mode 100644 index 000000000..64982de68 --- /dev/null +++ b/spec/requests/api/v1/instances/extended_descriptions_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Extended Descriptions' do + describe 'GET /api/v1/instance/extended_description' do + it 'returns http success' do + get api_v1_instance_extended_description_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and include(:content) + end + end +end diff --git a/spec/requests/api/v1/instances/peers_spec.rb b/spec/requests/api/v1/instances/peers_spec.rb new file mode 100644 index 000000000..d3400ae8f --- /dev/null +++ b/spec/requests/api/v1/instances/peers_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Peers' do + describe 'GET /api/v1/instance/peers' do + around do |example| + original = Setting.peers_api_enabled + example.run + Setting.peers_api_enabled = original + end + + context 'with peers api enabled' do + before { Setting.peers_api_enabled = true } + + it 'returns http success' do + get api_v1_instance_peers_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_an(Array) + end + end + + context 'with peers api diabled' do + before { Setting.peers_api_enabled = false } + + it 'returns http not found' do + get api_v1_instance_peers_path + + expect(response) + .to have_http_status(404) + end + end + end +end diff --git a/spec/requests/api/v1/instances/privacy_policies_spec.rb b/spec/requests/api/v1/instances/privacy_policies_spec.rb new file mode 100644 index 000000000..24de98d88 --- /dev/null +++ b/spec/requests/api/v1/instances/privacy_policies_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Privacy Policy' do + describe 'GET /api/v1/instance/privacy_policy' do + it 'returns http success' do + get api_v1_instance_privacy_policy_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and include(:content) + end + end +end diff --git a/spec/requests/api/v1/instances/rules_spec.rb b/spec/requests/api/v1/instances/rules_spec.rb new file mode 100644 index 000000000..65b8d78c7 --- /dev/null +++ b/spec/requests/api/v1/instances/rules_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Rules' do + describe 'GET /api/v1/instance/rules' do + it 'returns http success' do + get api_v1_instance_rules_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_an(Array) + end + end +end diff --git a/spec/requests/api/v1/instances/translation_languages_spec.rb b/spec/requests/api/v1/instances/translation_languages_spec.rb new file mode 100644 index 000000000..0b7dd8314 --- /dev/null +++ b/spec/requests/api/v1/instances/translation_languages_spec.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Translation Languages' do + describe 'GET /api/v1/instances/translation_languages' do + context 'when no translation service is configured' do + it 'returns empty language matrix', :aggregate_failures do + get api_v1_instance_translation_languages_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to eq({}) + end + end + + context 'when a translation service is configured' do + before { configure_translation_service } + + it 'returns language matrix', :aggregate_failures do + get api_v1_instance_translation_languages_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to eq({ und: %w(en de), en: ['de'] }) + end + + private + + def configure_translation_service + allow(TranslationService).to receive_messages(configured?: true, configured: service_double) + end + + def service_double + instance_double(TranslationService::DeepL, languages: { nil => %w(en de), 'en' => ['de'] }) + end + end + end +end diff --git a/spec/requests/api/v1/lists/accounts_spec.rb b/spec/requests/api/v1/lists/accounts_spec.rb index 4d2a168b3..de4998235 100644 --- a/spec/requests/api/v1/lists/accounts_spec.rb +++ b/spec/requests/api/v1/lists/accounts_spec.rb @@ -15,7 +15,7 @@ RSpec.describe 'Accounts' do let(:params) { { limit: 0 } } let(:list) { Fabricate(:list, account: user.account) } - let(:accounts) { Fabricate.times(3, :account) } + let(:accounts) { Fabricate.times(2, :account) } let(:expected_response) do accounts.map do |account| diff --git a/spec/requests/api/v1/mutes_spec.rb b/spec/requests/api/v1/mutes_spec.rb index 9a1d16200..b2782a0c2 100644 --- a/spec/requests/api/v1/mutes_spec.rb +++ b/spec/requests/api/v1/mutes_spec.rb @@ -13,7 +13,7 @@ RSpec.describe 'Mutes' do get '/api/v1/mutes', headers: headers, params: params end - let!(:mutes) { Fabricate.times(3, :mute, account: user.account) } + let!(:mutes) { Fabricate.times(2, :mute, account: user.account) } let(:params) { {} } it_behaves_like 'forbidden for wrong scope', 'write write:mutes' @@ -33,7 +33,7 @@ RSpec.describe 'Mutes' do end context 'with limit param' do - let(:params) { { limit: 2 } } + let(:params) { { limit: 1 } } it 'returns only the requested number of muted accounts' do subject @@ -46,8 +46,8 @@ RSpec.describe 'Mutes' do headers = response.headers['Link'] - expect(headers.find_link(%w(rel prev)).href).to eq(api_v1_mutes_url(limit: params[:limit], since_id: mutes[2].id.to_s)) - expect(headers.find_link(%w(rel next)).href).to eq(api_v1_mutes_url(limit: params[:limit], max_id: mutes[1].id.to_s)) + expect(headers.find_link(%w(rel prev)).href).to eq(api_v1_mutes_url(limit: params[:limit], since_id: mutes.last.id.to_s)) + expect(headers.find_link(%w(rel next)).href).to eq(api_v1_mutes_url(limit: params[:limit], max_id: mutes.last.id.to_s)) end end @@ -72,8 +72,8 @@ RSpec.describe 'Mutes' do body = body_as_json - expect(body.size).to eq 2 - expect(body[0][:id]).to eq mutes[2].target_account_id.to_s + expect(body.size).to eq 1 + expect(body[0][:id]).to eq mutes[1].target_account_id.to_s end end diff --git a/spec/requests/api/v1/notifications_spec.rb b/spec/requests/api/v1/notifications_spec.rb index 7a879c35b..7a904816e 100644 --- a/spec/requests/api/v1/notifications_spec.rb +++ b/spec/requests/api/v1/notifications_spec.rb @@ -168,7 +168,7 @@ RSpec.describe 'Notifications' do end before do - Fabricate.times(3, :notification, account: user.account) + Fabricate(:notification, account: user.account) end it_behaves_like 'forbidden for wrong scope', 'read read:notifications' diff --git a/spec/requests/api/v1/preferences_spec.rb b/spec/requests/api/v1/preferences_spec.rb new file mode 100644 index 000000000..6f4188c35 --- /dev/null +++ b/spec/requests/api/v1/preferences_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Preferences' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + + describe 'GET /api/v1/preferences' do + context 'when not authorized' do + it 'returns http unauthorized' do + get api_v1_preferences_path + + expect(response) + .to have_http_status(401) + end + end + + context 'with wrong scope' do + before do + get api_v1_preferences_path, headers: headers + end + + it_behaves_like 'forbidden for wrong scope', 'write write:accounts' + end + + context 'with correct scope' do + let(:scopes) { 'read:accounts' } + + it 'returns http success' do + get api_v1_preferences_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + end + end + end +end diff --git a/spec/requests/api/v1/scheduled_status_spec.rb b/spec/requests/api/v1/scheduled_status_spec.rb new file mode 100644 index 000000000..49ccde275 --- /dev/null +++ b/spec/requests/api/v1/scheduled_status_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Scheduled Statuses' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + + describe 'GET /api/v1/scheduled_statuses' do + context 'when not authorized' do + it 'returns http unauthorized' do + get api_v1_scheduled_statuses_path + + expect(response) + .to have_http_status(401) + end + end + + context 'with wrong scope' do + before do + get api_v1_scheduled_statuses_path, headers: headers + end + + it_behaves_like 'forbidden for wrong scope', 'write write:statuses' + end + + context 'with correct scope' do + let(:scopes) { 'read:statuses' } + + context 'without scheduled statuses' do + it 'returns http success without json' do + get api_v1_scheduled_statuses_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to_not be_present + end + end + + context 'with scheduled statuses' do + let!(:scheduled_status) { Fabricate(:scheduled_status, account: user.account) } + + it 'returns http success and status json' do + get api_v1_scheduled_statuses_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and have_attributes( + first: include(id: scheduled_status.id.to_s) + ) + end + end + end + end +end diff --git a/spec/requests/api/v1/statuses/favourites_spec.rb b/spec/requests/api/v1/statuses/favourites_spec.rb index ac5e86f29..8f3e6e5c4 100644 --- a/spec/requests/api/v1/statuses/favourites_spec.rb +++ b/spec/requests/api/v1/statuses/favourites_spec.rb @@ -70,19 +70,13 @@ RSpec.describe 'Favourites' do end end - describe 'POST /api/v1/statuses/:status_id/unfavourite' do + describe 'POST /api/v1/statuses/:status_id/unfavourite', :sidekiq_fake do subject do post "/api/v1/statuses/#{status.id}/unfavourite", headers: headers end let(:status) { Fabricate(:status) } - around do |example| - Sidekiq::Testing.fake! do - example.run - end - end - it_behaves_like 'forbidden for wrong scope', 'read read:favourites' context 'with public status' do diff --git a/spec/requests/api/v1/statuses_spec.rb b/spec/requests/api/v1/statuses_spec.rb index 1b2dd2b5d..201674fcc 100644 --- a/spec/requests/api/v1/statuses_spec.rb +++ b/spec/requests/api/v1/statuses_spec.rb @@ -156,7 +156,7 @@ describe '/api/v1/statuses' do context 'when exceeding rate limit' do before do rate_limiter = RateLimiter.new(user.account, family: :statuses) - 300.times { rate_limiter.record! } + RateLimiter::FAMILIES[:statuses][:limit].times { rate_limiter.record! } end it 'returns rate limit headers', :aggregate_failures do diff --git a/spec/requests/api/v2/filters/filters_spec.rb b/spec/requests/api/v2/filters_spec.rb similarity index 99% rename from spec/requests/api/v2/filters/filters_spec.rb rename to spec/requests/api/v2/filters_spec.rb index 2ee24d809..fd0483abb 100644 --- a/spec/requests/api/v2/filters/filters_spec.rb +++ b/spec/requests/api/v2/filters_spec.rb @@ -23,7 +23,7 @@ RSpec.describe 'Filters' do get '/api/v2/filters', headers: headers end - let!(:filters) { Fabricate.times(3, :custom_filter, account: user.account) } + let!(:filters) { Fabricate.times(2, :custom_filter, account: user.account) } it_behaves_like 'forbidden for wrong scope', 'write write:filters' it_behaves_like 'unauthorized for invalid token' diff --git a/spec/requests/api/v2/instance_spec.rb b/spec/requests/api/v2/instance_spec.rb new file mode 100644 index 000000000..74574afbc --- /dev/null +++ b/spec/requests/api/v2/instance_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Instances' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + + describe 'GET /api/v2/instance' do + context 'when logged out' do + it 'returns http success and json' do + get api_v2_instance_path + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and include(title: 'Mastodon') + end + end + + context 'when logged in' do + it 'returns http success and json' do + get api_v2_instance_path, headers: headers + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_present + .and include(title: 'Mastodon') + end + end + end +end diff --git a/spec/requests/api/v2/media_spec.rb b/spec/requests/api/v2/media_spec.rb index fc6946be5..990fa5d0b 100644 --- a/spec/requests/api/v2/media_spec.rb +++ b/spec/requests/api/v2/media_spec.rb @@ -9,10 +9,82 @@ RSpec.describe 'Media API', :paperclip_processing do let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } describe 'POST /api/v2/media' do - it 'returns http success' do - post '/api/v2/media', headers: headers, params: { file: fixture_file_upload('attachment-jpg.123456_abcd', 'image/jpeg') } - expect(File.exist?(user.account.media_attachments.first.file.path(:small))).to be true - expect(response).to have_http_status(200) + context 'when small media format attachment is processed immediately' do + let(:params) { { file: fixture_file_upload('attachment-jpg.123456_abcd', 'image/jpeg') } } + + it 'returns http success' do + post '/api/v2/media', headers: headers, params: params + + expect(File.exist?(user.account.media_attachments.first.file.path(:small))) + .to be true + + expect(response) + .to have_http_status(200) + + expect(body_as_json) + .to be_a(Hash) + end + end + + context 'when large format media attachment has not been processed' do + let(:params) { { file: fixture_file_upload('attachment.webm', 'video/webm') } } + + it 'returns http accepted' do + post '/api/v2/media', headers: headers, params: params + + expect(File.exist?(user.account.media_attachments.first.file.path(:small))) + .to be true + + expect(response) + .to have_http_status(202) + + expect(body_as_json) + .to be_a(Hash) + end + end + + describe 'when paperclip errors occur' do + let(:media_attachments) { double } + let(:params) { { file: fixture_file_upload('attachment.jpg', 'image/jpeg') } } + + before do + allow(User).to receive(:find).with(token.resource_owner_id).and_return(user) + allow(user.account).to receive(:media_attachments).and_return(media_attachments) + end + + context 'when imagemagick cannot identify the file type' do + before do + allow(media_attachments).to receive(:create!).and_raise(Paperclip::Errors::NotIdentifiedByImageMagickError) + end + + it 'returns http unprocessable entity' do + post '/api/v2/media', headers: headers, params: params + + expect(response) + .to have_http_status(422) + + expect(body_as_json) + .to be_a(Hash) + .and include(error: /File type/) + end + end + + context 'when there is a generic error' do + before do + allow(media_attachments).to receive(:create!).and_raise(Paperclip::Error) + end + + it 'returns http 500' do + post '/api/v2/media', headers: headers, params: params + + expect(response) + .to have_http_status(500) + + expect(body_as_json) + .to be_a(Hash) + .and include(error: /processing/) + end + end end end end diff --git a/spec/requests/remote_interaction_helper_spec.rb b/spec/requests/remote_interaction_helper_spec.rb new file mode 100644 index 000000000..e6364fe8c --- /dev/null +++ b/spec/requests/remote_interaction_helper_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Remote Interaction Helper' do + describe 'GET /remote_interaction_helper' do + it 'returns http success' do + get remote_interaction_helper_path + + expect(response) + .to have_http_status(200) + .and render_template(:index, layout: 'helper_frame') + .and have_attributes( + headers: include( + 'X-Frame-Options' => 'SAMEORIGIN', + 'Referrer-Policy' => 'no-referrer', + 'Content-Security-Policy' => expected_csp_headers + ) + ) + end + end + + private + + def expected_csp_headers + <<~CSP.squish + default-src 'none'; frame-ancestors 'self'; form-action 'none'; script-src 'self' https://cb6e6126.ngrok.io 'wasm-unsafe-eval'; connect-src https: + CSP + end +end diff --git a/spec/services/bulk_import_service_spec.rb b/spec/services/bulk_import_service_spec.rb index 16d718815..3a3f95ccc 100644 --- a/spec/services/bulk_import_service_spec.rb +++ b/spec/services/bulk_import_service_spec.rb @@ -12,14 +12,7 @@ RSpec.describe BulkImportService do import.update(total_items: import.rows.count) end - describe '#call' do - around do |example| - Sidekiq::Testing.fake! do - example.run - Sidekiq::Worker.clear_all - end - end - + describe '#call', :sidekiq_fake do context 'when importing follows' do let(:import_type) { 'following' } let(:overwrite) { false } diff --git a/spec/services/update_status_service_spec.rb b/spec/services/update_status_service_spec.rb index eb38230b0..7f9f746c2 100644 --- a/spec/services/update_status_service_spec.rb +++ b/spec/services/update_status_service_spec.rb @@ -111,7 +111,7 @@ RSpec.describe UpdateStatusService, type: :service do end end - context 'when poll changes' do + context 'when poll changes', :sidekiq_fake do let(:account) { Fabricate(:account) } let!(:status) { Fabricate(:status, text: 'Foo', account: account, poll_attributes: { options: %w(Foo Bar), account: account, multiple: false, hide_totals: false, expires_at: 7.days.from_now }) } let!(:poll) { status.poll } @@ -120,9 +120,7 @@ RSpec.describe UpdateStatusService, type: :service do before do status.update(poll: poll) VoteService.new.call(voter, poll, [0]) - Sidekiq::Testing.fake! do - subject.call(status, status.account_id, text: 'Foo', poll: { options: %w(Bar Baz Foo), expires_in: 5.days.to_i }) - end + subject.call(status, status.account_id, text: 'Foo', poll: { options: %w(Bar Baz Foo), expires_in: 5.days.to_i }) end it 'updates poll' do diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb index 774296fda..34b342710 100644 --- a/spec/workers/move_worker_spec.rb +++ b/spec/workers/move_worker_spec.rb @@ -159,12 +159,9 @@ describe MoveWorker do describe '#perform' do context 'when both accounts are distant' do - it 'calls UnfollowFollowWorker' do - Sidekiq::Testing.fake! do - subject.perform(source_account.id, target_account.id) - expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, false) - Sidekiq::Worker.drain_all - end + it 'calls UnfollowFollowWorker', :sidekiq_fake do + subject.perform(source_account.id, target_account.id) + expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, false) end include_examples 'common tests' @@ -173,12 +170,9 @@ describe MoveWorker do context 'when target account is local' do let(:target_account) { Fabricate(:account) } - it 'calls UnfollowFollowWorker' do - Sidekiq::Testing.fake! do - subject.perform(source_account.id, target_account.id) - expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, true) - Sidekiq::Worker.clear_all - end + it 'calls UnfollowFollowWorker', :sidekiq_fake do + subject.perform(source_account.id, target_account.id) + expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, true) end include_examples 'common tests' diff --git a/spec/workers/poll_expiration_notify_worker_spec.rb b/spec/workers/poll_expiration_notify_worker_spec.rb index 78cbc1ee4..ca36a3759 100644 --- a/spec/workers/poll_expiration_notify_worker_spec.rb +++ b/spec/workers/poll_expiration_notify_worker_spec.rb @@ -10,13 +10,7 @@ describe PollExpirationNotifyWorker do let(:remote?) { false } let(:poll_vote) { Fabricate(:poll_vote, poll: poll) } - describe '#perform' do - around do |example| - Sidekiq::Testing.fake! do - example.run - end - end - + describe '#perform', :sidekiq_fake do it 'runs without error for missing record' do expect { worker.perform(nil) }.to_not raise_error end diff --git a/streaming/package.json b/streaming/package.json index a474e6226..aecc5752e 100644 --- a/streaming/package.json +++ b/streaming/package.json @@ -28,7 +28,7 @@ }, "devDependencies": { "@types/express": "^4.17.17", - "@types/npmlog": "^4.1.4", + "@types/npmlog": "^7.0.0", "@types/pg": "^8.6.6", "@types/uuid": "^9.0.0" }, diff --git a/yarn.lock b/yarn.lock index 864ebfc87..3275d1235 100644 --- a/yarn.lock +++ b/yarn.lock @@ -981,14 +981,14 @@ __metadata: linkType: hard "@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.3" + version: 7.23.4 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.4" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f960faed3975c8454c52d2b5d85daf0c9a27677b248d7933882e59b10202ade2a98c7b925ce0bae2b8eb4d66eb5d63a5588c1090d54eaa4cd235533d71228ff3 + checksum: bce490d22da5c87ff27fffaff6ad5a4d4979b8d7b72e30857f191e9c1e1824ba73bb8d7081166289369e388f94f0ce5383a593b1fc84d09464a062c75f824b0b languageName: node linkType: hard @@ -1200,8 +1200,8 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.22.4": - version: 7.23.3 - resolution: "@babel/plugin-transform-runtime@npm:7.23.3" + version: 7.23.4 + resolution: "@babel/plugin-transform-runtime@npm:7.23.4" dependencies: "@babel/helper-module-imports": "npm:^7.22.15" "@babel/helper-plugin-utils": "npm:^7.22.5" @@ -1211,7 +1211,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 111fc412cc3968402183086879e1625ad4b869309f2e5aa33498a71ba700d3196c151d506977b5b535e8ff2c42c0731d59bfbfcb158ecddeeb3c49d5d4a58c0a + checksum: 6ac29012550cdd10b65ec43fef0c7f43904ec458c43d597f627d8f52807413e57ea94e3986dbace576d734e67c2d09be5e43e77c72567d18f8c4ac5e19844625 languageName: node linkType: hard @@ -1483,11 +1483,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.23.2 - resolution: "@babel/runtime@npm:7.23.2" + version: 7.23.4 + resolution: "@babel/runtime@npm:7.23.4" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 271fcfad8574269d9967b8a1c03f2e1eab108a52ad7c96ed136eee0b11f46156f1186637bd5e79a4207163db9a00413cd70a6428e137b982d0ee8ab85eb9f438 + checksum: db2bf183cd0119599b903ca51ca0aeea8e0ab478a16be1aae10dd90473ed614159d3e5adfdd8f8f3d840402428ce0d90b5c01aae95da9e45a2dd83e02d85ca27 languageName: node linkType: hard @@ -1743,10 +1743,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.53.0": - version: 8.53.0 - resolution: "@eslint/js@npm:8.53.0" - checksum: d29f6c207b2f6dc4ef174d16a3c07b0d3a17ca3d805680496ff267edd773e3bac41db4e7dcab622ca1970d892535bd19671e2a756d4eac75e96fd8c8dcdb619b +"@eslint/js@npm:8.54.0": + version: 8.54.0 + resolution: "@eslint/js@npm:8.54.0" + checksum: d61fb4a0be6af2d8cb290121c329697664a75d6255a29926d5454fb02aeb02b87112f67fdf218d10abac42f90c570ac366126751baefc5405d0e017ed0c946c5 languageName: node linkType: hard @@ -1777,8 +1777,8 @@ __metadata: linkType: hard "@formatjs/cli@npm:^6.1.1": - version: 6.2.3 - resolution: "@formatjs/cli@npm:6.2.3" + version: 6.2.4 + resolution: "@formatjs/cli@npm:6.2.4" peerDependencies: vue: ^3.3.4 peerDependenciesMeta: @@ -1786,17 +1786,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 91eada7676333e2e647cbfbf9c0da88e4ca52e7b486dca73a7299594b0b0dea99de00e1b4110fac993633feb4bf5f26c97885b1a870dfd0ef95688d7f3234a03 - languageName: node - linkType: hard - -"@formatjs/ecma402-abstract@npm:1.17.4": - version: 1.17.4 - resolution: "@formatjs/ecma402-abstract@npm:1.17.4" - dependencies: - "@formatjs/intl-localematcher": "npm:0.5.1" - tslib: "npm:^2.4.0" - checksum: c24bf58cd3152ad64a29dfab185d1fde91e44423aabb041f332216b37a23256618efee1e252c0015e735bc688708ee279348e2a4a67a77f6cf918028848ef071 + checksum: 3f6bbbc633a3a6ebd4e6fcfc3a9f889bc044043452cbc8f81abcaee97aaef991a778ae785d3b9d21ecc5f55b147eb0009b44520bb895fe244b4c14a36d9b05bd languageName: node linkType: hard @@ -1819,17 +1809,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.7.2": - version: 2.7.2 - resolution: "@formatjs/icu-messageformat-parser@npm:2.7.2" - dependencies: - "@formatjs/ecma402-abstract": "npm:1.17.4" - "@formatjs/icu-skeleton-parser": "npm:1.6.4" - tslib: "npm:^2.4.0" - checksum: c7a2f7daecec9ba36acda2c5b7ef21f515883b886d4d9965d83c93bc55fc604f56c1097d4641608633c32917aaa0b9b0c65c0d162723428249dc29271270a064 - languageName: node - linkType: hard - "@formatjs/icu-messageformat-parser@npm:2.7.3": version: 2.7.3 resolution: "@formatjs/icu-messageformat-parser@npm:2.7.3" @@ -1841,16 +1820,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-skeleton-parser@npm:1.6.4": - version: 1.6.4 - resolution: "@formatjs/icu-skeleton-parser@npm:1.6.4" - dependencies: - "@formatjs/ecma402-abstract": "npm:1.17.4" - tslib: "npm:^2.4.0" - checksum: 3688aad6d12fe677ef0ce3d6a3424c5bde9ed223dc49841de8dd33c547bdd2858f8bce4437fcc135048b4f92385374776ab48e39b3cc5063a45bdb1ce85ad2d4 - languageName: node - linkType: hard - "@formatjs/icu-skeleton-parser@npm:1.7.0": version: 1.7.0 resolution: "@formatjs/icu-skeleton-parser@npm:1.7.0" @@ -1883,15 +1852,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-localematcher@npm:0.5.1": - version: 0.5.1 - resolution: "@formatjs/intl-localematcher@npm:0.5.1" - dependencies: - tslib: "npm:^2.4.0" - checksum: 2282db3e623d3f65681b6a2a2dbffc4f948b8411789f51af1b221610105f809ebec7f58f9afd5008e72c62ed5524c8c321f85c78cab0cffb632e20c0064b701b - languageName: node - linkType: hard - "@formatjs/intl-localematcher@npm:0.5.2": version: 0.5.2 resolution: "@formatjs/intl-localematcher@npm:0.5.2" @@ -1932,26 +1892,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.8": - version: 3.13.8 - resolution: "@formatjs/ts-transformer@npm:3.13.8" - dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.7.2" - "@types/json-stable-stringify": "npm:^1.0.32" - "@types/node": "npm:14 || 16 || 17" - chalk: "npm:^4.0.0" - json-stable-stringify: "npm:^1.0.1" - tslib: "npm:^2.4.0" - typescript: "npm:5" - peerDependencies: - ts-jest: ">=27" - peerDependenciesMeta: - ts-jest: - optional: true - checksum: 32b13b75732739ca016d9d654e5f40077cafa3ff2f924fbb5fd91155cd6af3292c5fee9be022bb224fb69d2ab60ed9cdda49ee83fbf9e1e8de470ee33ceae4f3 - languageName: node - linkType: hard - "@formatjs/ts-transformer@npm:3.13.9": version: 3.13.9 resolution: "@formatjs/ts-transformer@npm:3.13.9" @@ -2526,7 +2466,7 @@ __metadata: resolution: "@mastodon/streaming@workspace:streaming" dependencies: "@types/express": "npm:^4.17.17" - "@types/npmlog": "npm:^4.1.4" + "@types/npmlog": "npm:^7.0.0" "@types/pg": "npm:^8.6.6" "@types/uuid": "npm:^9.0.0" bufferutil: "npm:^4.0.7" @@ -2978,8 +2918,8 @@ __metadata: linkType: hard "@testing-library/react@npm:^14.0.0": - version: 14.1.0 - resolution: "@testing-library/react@npm:14.1.0" + version: 14.1.2 + resolution: "@testing-library/react@npm:14.1.2" dependencies: "@babel/runtime": "npm:^7.12.5" "@testing-library/dom": "npm:^9.0.0" @@ -2987,7 +2927,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 357ad80b11bdd4b6d10d2fb1bf86d5b39fb457cf09293033cf42bcc7a95738a86a2b12b760ae15bad326da0b9c074ca015d2bbf0baae7da38fdbc7c808925820 + checksum: b5b0990d3aa0ea8b37c55804e0d5d584fc638a5c7d4df90da9a0fdb00bc981b27b6991468b2dc719982a5d0b0107a41596063ce51ad519eeab47b22bc04d6779 languageName: node linkType: hard @@ -3336,12 +3276,12 @@ __metadata: languageName: node linkType: hard -"@types/npmlog@npm:^4.1.4": - version: 4.1.6 - resolution: "@types/npmlog@npm:4.1.6" +"@types/npmlog@npm:^7.0.0": + version: 7.0.0 + resolution: "@types/npmlog@npm:7.0.0" dependencies: "@types/node": "npm:*" - checksum: 432bfb14b29a383e095e099b2ddff4266051b43bc6c7ea242d10194acde2f1181a1e967bbb543f07979dd77743ead1954abac1128ec78cc2b86a5f7ea841ddcb + checksum: e94cb1d7dc6b1251d58d0a3cbf0c5b9e9b7c7649774cf816b9277fc10e1a09e65f2854357c4972d04d477f8beca3c8accb5e8546d594776e59e35ddfee79aff2 languageName: node linkType: hard @@ -3721,14 +3661,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.10.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.10.0" + version: 6.11.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.11.0" dependencies: "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.10.0" - "@typescript-eslint/type-utils": "npm:6.10.0" - "@typescript-eslint/utils": "npm:6.10.0" - "@typescript-eslint/visitor-keys": "npm:6.10.0" + "@typescript-eslint/scope-manager": "npm:6.11.0" + "@typescript-eslint/type-utils": "npm:6.11.0" + "@typescript-eslint/utils": "npm:6.11.0" + "@typescript-eslint/visitor-keys": "npm:6.11.0" debug: "npm:^4.3.4" graphemer: "npm:^1.4.0" ignore: "npm:^5.2.4" @@ -3741,44 +3681,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: f50b17cb753afbfc99549d38585eba8558949b977eb4661dd584e73ee946b3dbe944c9e3b12a233fa06b5e1c7d101730ac88a00c7a91b0a7f1e2c37a98e13c7a + checksum: 6645aa09b9d51c5e3ea781eaf74da75b94f83f3e2d7b3dd988d5ce7eb82dd87e3509471cf2ee8c6b2428d907df5f1b02f29dbd04f54c2653f9566c8c4ce98009 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.10.0 - resolution: "@typescript-eslint/parser@npm:6.10.0" + version: 6.11.0 + resolution: "@typescript-eslint/parser@npm:6.11.0" dependencies: - "@typescript-eslint/scope-manager": "npm:6.10.0" - "@typescript-eslint/types": "npm:6.10.0" - "@typescript-eslint/typescript-estree": "npm:6.10.0" - "@typescript-eslint/visitor-keys": "npm:6.10.0" + "@typescript-eslint/scope-manager": "npm:6.11.0" + "@typescript-eslint/types": "npm:6.11.0" + "@typescript-eslint/typescript-estree": "npm:6.11.0" + "@typescript-eslint/visitor-keys": "npm:6.11.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: fd86c31dfdde03636393a3a9cf16716856bb506923069f34d87af14fac363a33578f47476a15d272e4d7a764de00fd905ee11361cc06b81b302a9fa8ebe4c23c + checksum: e7caeb20069102e21f468fc0dbe7ff6fb6b1efa9e72f4c9f39d4a865ed0633f39130b593ef9ae8f394ca1d70563e15410faf30a482a97809951eaac6ed3a67da languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/scope-manager@npm:6.10.0" +"@typescript-eslint/scope-manager@npm:6.11.0": + version: 6.11.0 + resolution: "@typescript-eslint/scope-manager@npm:6.11.0" dependencies: - "@typescript-eslint/types": "npm:6.10.0" - "@typescript-eslint/visitor-keys": "npm:6.10.0" - checksum: a5fbee770d763852a7f426b950d495529139f1629fdcb30136c93f787acd82236db4272f78dff1d05a3a10a6406472ae95ae94ab75cfb618a06d75b8cc536cbf + "@typescript-eslint/types": "npm:6.11.0" + "@typescript-eslint/visitor-keys": "npm:6.11.0" + checksum: d8999e2d1a4cbde8a79df5e3ec416f0e3db9532d39f2f4bb5a0ebdf954ae75c183d3277579ba05268fe2c88e88ef87f0fa12f02bb8d95d9e67d92e411241f3a3 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/type-utils@npm:6.10.0" +"@typescript-eslint/type-utils@npm:6.11.0": + version: 6.11.0 + resolution: "@typescript-eslint/type-utils@npm:6.11.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:6.10.0" - "@typescript-eslint/utils": "npm:6.10.0" + "@typescript-eslint/typescript-estree": "npm:6.11.0" + "@typescript-eslint/utils": "npm:6.11.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.0.1" peerDependencies: @@ -3786,23 +3726,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: f7c425d4da4d53d78b3d6630216dc1f2809f8dcaed62dc3cf12252102a53103a2aa39a160b310ca1cedebf87b8c339013be0c2360710c7c836b775374730c10e + checksum: ff68f2e052b8d688f1dc1a0050746704c8e0ab6263b47f1f52da73a7d251678e4950af23a95e1cd8e3fcea2457e6e5294ddbe01d29dafa2fdfb5b11ed9452a3f languageName: node linkType: hard -"@typescript-eslint/types@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/types@npm:6.10.0" - checksum: 30f47de625405b3729db6d26a0376d98628bd966c70ca01fab1adcef91bba810d27ce643d844e42d1cc77bb2c6277e62efe278a090da63ba748dfe5710c4757b +"@typescript-eslint/types@npm:6.11.0": + version: 6.11.0 + resolution: "@typescript-eslint/types@npm:6.11.0" + checksum: 23182813db39a5e9b9bcc1e85306c953f7b8b22d3885e41fcac0bd725c170fbcb70f4ce55633678cc5921dcf062fa0e55635eb39480c118a4411a00354820223 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.10.0" +"@typescript-eslint/typescript-estree@npm:6.11.0": + version: 6.11.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.11.0" dependencies: - "@typescript-eslint/types": "npm:6.10.0" - "@typescript-eslint/visitor-keys": "npm:6.10.0" + "@typescript-eslint/types": "npm:6.11.0" + "@typescript-eslint/visitor-keys": "npm:6.11.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -3811,34 +3751,34 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: ca28ca5a55e2d431c649ad093e4a4302f2b37c430bbeebbe622b05c727fd14dab136aead5a96848499d3ff4d187889733f8871b8dd5205d19bed4a260ad74544 + checksum: 3e183e554e1bc74f065da3015f7137eb40c262f989c547701b1e3f4f20134e574e56b749288cd00d77b9d1ddb705546613c2457661ffc63b6060ffa97ba3aac8 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.10.0, @typescript-eslint/utils@npm:^6.5.0": - version: 6.10.0 - resolution: "@typescript-eslint/utils@npm:6.10.0" +"@typescript-eslint/utils@npm:6.11.0, @typescript-eslint/utils@npm:^6.5.0": + version: 6.11.0 + resolution: "@typescript-eslint/utils@npm:6.11.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" "@types/json-schema": "npm:^7.0.12" "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.10.0" - "@typescript-eslint/types": "npm:6.10.0" - "@typescript-eslint/typescript-estree": "npm:6.10.0" + "@typescript-eslint/scope-manager": "npm:6.11.0" + "@typescript-eslint/types": "npm:6.11.0" + "@typescript-eslint/typescript-estree": "npm:6.11.0" semver: "npm:^7.5.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 809a1d08b154f76ed7a99edddf872369f6ed93987cea19a18cb9f12b8390bddcff9138d9d94955545da54488d59e0001054bec13baf6d858a1761b059480b887 + checksum: c91eb4578607959acc2b43ddc791571682e45601a19b25d5d120786ed4af607656f83c5c1fa71972e549ddfb5542acf2f7d443ae93b32ee28192c22c106b8883 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.10.0" +"@typescript-eslint/visitor-keys@npm:6.11.0": + version: 6.11.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.11.0" dependencies: - "@typescript-eslint/types": "npm:6.10.0" + "@typescript-eslint/types": "npm:6.11.0" eslint-visitor-keys: "npm:^3.4.1" - checksum: f9223c148655ce00bb17db8aa92ee964e62c75d15095893e0b4d653c60a4033f456329b06de3eab4b404d8df359904f0dd6e3c8c842885c6d130e28ccd95ce03 + checksum: 5f48329422b7f286196661d39e93e9defd7c5cf80e6c84c8d03459853f5d9f86a5e91c5e80ea572dcdb907ebbe503bbcc77aeb8b468c294b2aa7b3ccfc81cb88 languageName: node linkType: hard @@ -5999,9 +5939,9 @@ __metadata: linkType: hard "core-js@npm:^3.30.2": - version: 3.33.2 - resolution: "core-js@npm:3.33.2" - checksum: d6a56ad3e134846c805ce936788dd58cb51e861f173ed1f830979735d7865ea6f6a5a437076c36c8d8b842ba0384d052998f160774a8da7712f0f51df60167fe + version: 3.33.3 + resolution: "core-js@npm:3.33.3" + checksum: 08abdc9470c8228b9d09f61e62ab312738681202c4c34e9638889125b304b235f34c4fe22e9d41c20906ac0fcc807dca57c5ff7d6b90021bf64e8fe23461d9ab languageName: node linkType: hard @@ -7405,11 +7345,11 @@ __metadata: linkType: hard "eslint-plugin-formatjs@npm:^4.10.1": - version: 4.11.2 - resolution: "eslint-plugin-formatjs@npm:4.11.2" + version: 4.11.3 + resolution: "eslint-plugin-formatjs@npm:4.11.3" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.7.2" - "@formatjs/ts-transformer": "npm:3.13.8" + "@formatjs/icu-messageformat-parser": "npm:2.7.3" + "@formatjs/ts-transformer": "npm:3.13.9" "@types/eslint": "npm:7 || 8" "@types/picomatch": "npm:^2.3.0" "@typescript-eslint/utils": "npm:^6.5.0" @@ -7421,7 +7361,7 @@ __metadata: unicode-emoji-utils: "npm:^1.1.1" peerDependencies: eslint: 7 || 8 - checksum: f5a6bffd9c65b9ce765be74d384618e543388720036b070d69d93c00b8c2bfded543141affc7793bf402f2c9177e2bbc395a7d1e8b806a40bfde1744c282a13c + checksum: 66481e0b5af5738bdb2b164ac1c74216c5c26f7c7400456a58387e71424bb30554aef39da43ce29bfd551f7dad678818d9af029022edadc4e1024349339f6984 languageName: node linkType: hard @@ -7588,13 +7528,13 @@ __metadata: linkType: hard "eslint@npm:^8.41.0": - version: 8.53.0 - resolution: "eslint@npm:8.53.0" + version: 8.54.0 + resolution: "eslint@npm:8.54.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" "@eslint/eslintrc": "npm:^2.1.3" - "@eslint/js": "npm:8.53.0" + "@eslint/js": "npm:8.54.0" "@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" @@ -7631,7 +7571,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: c5cd0049488c0463dab7d97466767ca5a1d0b3b59d0a223122683dc8039ecea30b27867fb9e38906b4c1ab9d09ece8a802a6c540d8905016f1cc4b4bb27329af + checksum: 4f205f832bdbd0218cde374b067791f4f76d7abe8de86b2dc849c273899051126d912ebf71531ee49b8eeaa22cad77febdc8f2876698dc2a76e84a8cb976af22 languageName: node linkType: hard