diff --git a/.github/ISSUE_TEMPLATE/1.bug_report.yml b/.github/ISSUE_TEMPLATE/1.bug_report.yml deleted file mode 100644 index 22f51f7bdf..0000000000 --- a/.github/ISSUE_TEMPLATE/1.bug_report.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Bug Report -description: If something isn't working as expected -labels: [bug] -body: - - type: markdown - attributes: - value: | - Make sure that you are submitting a new bug that was not previously reported or already fixed. - - Please use a concise and distinct title for the issue. - - type: textarea - attributes: - label: Steps to reproduce the problem - description: What were you trying to do? - value: | - 1. - 2. - 3. - ... - validations: - required: true - - type: input - attributes: - label: Expected behaviour - description: What should have happened? - validations: - required: true - - type: input - attributes: - label: Actual behaviour - description: What happened? - validations: - required: true - - type: textarea - attributes: - label: Detailed description - validations: - required: false - - type: textarea - attributes: - label: Specifications - description: | - What version or commit hash of Mastodon did you find this bug in? - - If a front-end issue, what browser and operating systems were you using? - placeholder: | - Mastodon 3.5.3 (or Edge) - Ruby 2.7.6 (or v3.1.2) - Node.js 16.18.0 - - Google Chrome 106.0.5249.119 - Firefox 105.0.3 - - etc... - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/1.web_bug_report.yml b/.github/ISSUE_TEMPLATE/1.web_bug_report.yml new file mode 100644 index 0000000000..20e27d103c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1.web_bug_report.yml @@ -0,0 +1,76 @@ +name: Bug Report (Web Interface) +description: If you are using Mastodon's web interface and something is not working as expected +labels: [bug, 'status/to triage', 'area/web interface'] +body: + - type: markdown + attributes: + value: | + Make sure that you are submitting a new bug that was not previously reported or already fixed. + + Please use a concise and distinct title for the issue. + - type: textarea + attributes: + label: Steps to reproduce the problem + description: What were you trying to do? + value: | + 1. + 2. + 3. + ... + validations: + required: true + - type: input + attributes: + label: Expected behaviour + description: What should have happened? + validations: + required: true + - type: input + attributes: + label: Actual behaviour + description: What happened? + validations: + required: true + - type: textarea + attributes: + label: Detailed description + validations: + required: false + - type: input + attributes: + label: Mastodon instance + description: The address of the Mastodon instance where you experienced the issue + placeholder: mastodon.social + validations: + required: true + - type: input + attributes: + label: Mastodon version + description: | + This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627` + placeholder: v4.1.2 + validations: + required: true + - type: input + attributes: + label: Browser name and version + description: | + What browser are you using when getting this bug? Please specify the version as well. + placeholder: Firefox 105.0.3 + validations: + required: true + - type: input + attributes: + label: Operating system + description: | + What OS are you running? Please specify the version as well. + placeholder: macOS 13.4.1 + validations: + required: true + - type: textarea + attributes: + label: Technical details + description: | + Any additional technical details you may have. This can include the full error log, inspector's output… + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2.server_bug_report.yml b/.github/ISSUE_TEMPLATE/2.server_bug_report.yml new file mode 100644 index 0000000000..49d5f57209 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2.server_bug_report.yml @@ -0,0 +1,65 @@ +name: Bug Report (server / API) +description: | + If something is not working as expected, but is not from using the web interface. +labels: [bug, 'status/to triage'] +body: + - type: markdown + attributes: + value: | + Make sure that you are submitting a new bug that was not previously reported or already fixed. + + Please use a concise and distinct title for the issue. + - type: textarea + attributes: + label: Steps to reproduce the problem + description: What were you trying to do? + value: | + 1. + 2. + 3. + ... + validations: + required: true + - type: input + attributes: + label: Expected behaviour + description: What should have happened? + validations: + required: true + - type: input + attributes: + label: Actual behaviour + description: What happened? + validations: + required: true + - type: textarea + attributes: + label: Detailed description + validations: + required: false + - type: input + attributes: + label: Mastodon instance + description: The address of the Mastodon instance where you experienced the issue + placeholder: mastodon.social + validations: + required: false + - type: input + attributes: + label: Mastodon version + description: | + This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627` + placeholder: v4.1.2 + validations: + required: false + - type: textarea + attributes: + label: Technical details + description: | + Any additional technical details you may have, like logs or error traces + value: | + If this is happening on your own Mastodon server, please fill out those: + - Ruby version: (from `ruby --version`, eg. v3.1.2) + - Node.js version: (from `node --version`, eg. v18.16.0) + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2.feature_request.yml b/.github/ISSUE_TEMPLATE/3.feature_request.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/2.feature_request.yml rename to .github/ISSUE_TEMPLATE/3.feature_request.yml diff --git a/.github/workflows/build-nightly.yml b/.github/workflows/build-nightly.yml index 1841456e89..b700790d8a 100644 --- a/.github/workflows/build-nightly.yml +++ b/.github/workflows/build-nightly.yml @@ -13,8 +13,10 @@ jobs: runs-on: ubuntu-latest steps: - id: version_vars + env: + TZ: Etc/UTC run: | - echo mastodon_version_suffix=+nightly-$(date +'%Y%m%d') >> $GITHUB_OUTPUT + echo mastodon_version_suffix=nightly-$(date +'%Y-%m-%d')>> $GITHUB_OUTPUT outputs: suffix: ${{ steps.version_vars.outputs.mastodon_version_suffix }} @@ -27,7 +29,8 @@ jobs: push_to_images: | tootsuite/mastodon ghcr.io/mastodon/mastodon - version_suffix: ${{ needs.compute-suffix.outputs.suffix }} + # The `+` is important here, result will be v4.1.2+nightly-2022-03-05 + version_suffix: +${{ needs.compute-suffix.outputs.suffix }} labels: | org.opencontainers.image.description=Nightly build image used for testing purposes flavor: | @@ -35,5 +38,5 @@ jobs: tags: | type=raw,value=edge type=raw,value=nightly - type=schedule,pattern=nightly-{{date 'YYYY-MM-DD' tz='Etc/UTC'}} + type=schedule,pattern=${{ needs.compute-suffix.outputs.suffix }} secrets: inherit diff --git a/.github/workflows/build-push-pr.yml b/.github/workflows/build-push-pr.yml index 06b95358db..2d20261286 100644 --- a/.github/workflows/build-push-pr.yml +++ b/.github/workflows/build-push-pr.yml @@ -10,8 +10,15 @@ permissions: jobs: compute-suffix: runs-on: ubuntu-latest - if: ${{ !github.event.pull_request.draft && contains(github.event.pull_request.labels.*.name, 'build-image') }} + # This is only allowed to run if: + # - the PR branch is in the `mastodon/mastodon` repository + # - the PR is not a draft + # - the PR has the "build-image" label + if: ${{ github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.draft && contains(github.event.pull_request.labels.*.name, 'build-image') }} steps: + # Repository needs to be cloned so `git rev-parse` below works + - name: Clone repository + uses: actions/checkout@v3 - id: version_vars run: | echo mastodon_version_suffix=+pr-${{ github.event.pull_request.number }}-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT diff --git a/.github/workflows/crowdin-download.yml b/.github/workflows/crowdin-download.yml new file mode 100644 index 0000000000..f6b2579ce8 --- /dev/null +++ b/.github/workflows/crowdin-download.yml @@ -0,0 +1,76 @@ +name: Crowdin / Download translations +on: + schedule: + - cron: '17 4 * * *' # Every day + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + download-translations: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Increase Git http.postBuffer + # This is needed due to a bug in Ubuntu's cURL version? + # See https://github.com/orgs/community/discussions/55820 + run: | + git config --global http.version HTTP/1.1 + git config --global http.postBuffer 157286400 + + # Download the translation files from Crowdin + - name: crowdin action + uses: crowdin/github-action@v1 + with: + upload_sources: false + upload_translations: false + download_translations: true + crowdin_branch_name: main + push_translations: false + create_pull_request: false + env: + CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + + # As the files are extracted from a Docker container, they belong to root:root + # We need to fix this before the next steps + - name: Fix file permissions + run: sudo chown -R runner:docker . + + # This is needed to run the normalize step + - name: Install native Ruby dependencies + run: sudo apt-get install -y libicu-dev libidn11-dev + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: .ruby-version + bundler-cache: true + + - name: Run i18n normalize task + run: bundle exec i18n-tasks normalize + + # Create or update the pull request + - name: Create Pull Request + uses: peter-evans/create-pull-request@v5.0.2 + with: + commit-message: 'New Crowdin translations' + title: 'New Crowdin Translations (automated)' + author: 'GitHub Actions ' + body: | + New Crowdin translations, automated with Github Actions + + See `.github/workflows/crowdin-download.yml` + + This PR will be updated every day with new translations. + + Due to a limitation in Github Actions, checks are not running on this PR without manual action. + If you want to run the checks, then close and re-open it. + branch: i18n/crowdin/translations + base: main + labels: i18n diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml new file mode 100644 index 0000000000..8bc9f51934 --- /dev/null +++ b/.github/workflows/crowdin-upload.yml @@ -0,0 +1,35 @@ +name: Crowdin / Upload translations + +on: + push: + branches: + - main + paths: + - crowdin.yml + - app/javascript/mastodon/locales/en.json + - config/locales/en.yml + - config/locales/simple_form.en.yml + - config/locales/activerecord.en.yml + - config/locales/devise.en.yml + - config/locales/doorkeeper.en.yml + - .github/workflows/crowdin-upload.yml + +jobs: + upload-translations: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: crowdin action + uses: crowdin/github-action@v1 + with: + upload_sources: true + upload_translations: false + download_translations: false + crowdin_branch_name: main + + env: + CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index dd5e8cf7f9..6d2aa0641f 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -1,13 +1,13 @@ # This configuration was generated by # `haml-lint --auto-gen-config` -# on 2023-07-17 15:30:11 -0400 using Haml-Lint version 0.48.0. +# on 2023-07-20 09:47:50 -0400 using Haml-Lint version 0.48.0. # The point is for the user to remove these configuration records # one by one as the lints are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of Haml-Lint, may require this file to be generated again. linters: - # Offense count: 959 + # Offense count: 951 LineLength: enabled: false @@ -15,7 +15,7 @@ linters: UnnecessaryStringOutput: enabled: false - # Offense count: 67 + # Offense count: 57 RuboCop: enabled: false @@ -26,20 +26,18 @@ linters: - 'app/views/admin/reports/show.html.haml' - 'app/views/disputes/strikes/show.html.haml' - # Offense count: 41 + # Offense count: 32 InstanceVariables: exclude: - 'app/views/admin/reports/_actions.html.haml' - 'app/views/admin/roles/_form.html.haml' - 'app/views/admin/webhooks/_form.html.haml' - - 'app/views/auth/registrations/_sessions.html.haml' - 'app/views/auth/registrations/_status.html.haml' - 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml' - 'app/views/authorize_interactions/_post_follow_actions.html.haml' - 'app/views/invites/_form.html.haml' - 'app/views/relationships/_account.html.haml' - 'app/views/shared/_og.html.haml' - - 'app/views/statuses/_status.html.haml' # Offense count: 3 IdNames: diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index ee346fdb05..835151619c 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -127,12 +127,6 @@ Lint/UselessAssignment: - 'spec/services/resolve_url_service_spec.rb' - 'spec/views/statuses/show.html.haml_spec.rb' -# This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: CheckForMethodsWithNoSideEffects. -Lint/Void: - Exclude: - - 'spec/services/resolve_account_service_spec.rb' - # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes. Metrics/AbcSize: Max: 150 diff --git a/Gemfile b/Gemfile index 0746970664..fcd10c5f9b 100644 --- a/Gemfile +++ b/Gemfile @@ -18,6 +18,7 @@ gem 'aws-sdk-s3', '~> 1.123', require: false gem 'fog-core', '<= 2.4.0' gem 'fog-openstack', '~> 0.3', require: false gem 'kt-paperclip', '~> 7.2' +gem 'md-paperclip-azure', '~> 2.2', require: false gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' diff --git a/Gemfile.lock b/Gemfile.lock index a75746355a..63a9388ee2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -118,6 +118,14 @@ GEM aws-sigv4 (~> 1.6) aws-sigv4 (1.6.0) aws-eventstream (~> 1, >= 1.0.2) + azure-storage-blob (2.0.3) + azure-storage-common (~> 2.0) + nokogiri (~> 1, >= 1.10.8) + azure-storage-common (2.0.4) + faraday (~> 1.0) + faraday_middleware (~> 1.0, >= 1.0.0.rc1) + net-http-persistent (~> 4.0) + nokogiri (~> 1, >= 1.10.8) bcrypt (3.1.18) better_errors (2.10.1) erubi (>= 1.0.0) @@ -261,6 +269,8 @@ GEM faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) fast_blank (1.0.1) fastimage (2.2.7) ffi (1.15.5) @@ -410,6 +420,10 @@ GEM mario-redis-lock (1.2.1) redis (>= 3.0.5) matrix (0.4.2) + md-paperclip-azure (2.2.0) + addressable (~> 2.5) + azure-storage-blob (~> 2.0.1) + hashie (~> 5.0) memory_profiler (1.0.1) method_source (1.0.0) mime-types (3.4.1) @@ -423,6 +437,8 @@ GEM multipart-post (2.3.0) net-http (0.3.2) uri + net-http-persistent (4.0.2) + connection_pool (~> 2.2) net-imap (0.3.6) date net-protocol @@ -822,6 +838,7 @@ DEPENDENCIES link_header (~> 0.0) lograge (~> 0.12) mario-redis-lock (~> 1.2) + md-paperclip-azure (~> 2.2) memory_profiler mime-types (~> 3.4.1) net-http (~> 0.3.2) diff --git a/app/controllers/api/v1/statuses/favourites_controller.rb b/app/controllers/api/v1/statuses/favourites_controller.rb index 2e21ce6a06..f3428e3df4 100644 --- a/app/controllers/api/v1/statuses/favourites_controller.rb +++ b/app/controllers/api/v1/statuses/favourites_controller.rb @@ -17,13 +17,16 @@ class Api::V1::Statuses::FavouritesController < Api::BaseController if fav @status = fav.status + count = [@status.favourites_count - 1, 0].max UnfavouriteWorker.perform_async(current_account.id, @status.id) else @status = Status.find(params[:status_id]) + count = @status.favourites_count authorize @status, :show? end - render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }) + relationships = StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }, attributes_map: { @status.id => { favourites_count: count } }) + render json: @status, serializer: REST::StatusSerializer, relationships: relationships rescue Mastodon::NotPermittedError not_found end diff --git a/app/controllers/api/v1/statuses/reblogs_controller.rb b/app/controllers/api/v1/statuses/reblogs_controller.rb index e3769437b7..3ca6231178 100644 --- a/app/controllers/api/v1/statuses/reblogs_controller.rb +++ b/app/controllers/api/v1/statuses/reblogs_controller.rb @@ -24,15 +24,18 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController if @status authorize @status, :unreblog? + @reblog = @status.reblog + count = [@reblog.reblogs_count - 1, 0].max @status.discard RemovalWorker.perform_async(@status.id) - @reblog = @status.reblog else @reblog = Status.find(params[:status_id]) + count = @reblog.reblogs_count authorize @reblog, :show? end - render json: @reblog, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }) + relationships = StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }, attributes_map: { @reblog.id => { reblogs_count: count } }) + render json: @reblog, serializer: REST::StatusSerializer, relationships: relationships rescue Mastodon::NotPermittedError not_found end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d6bb4fbffd..9fd3fe1601 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -249,6 +249,6 @@ module ApplicationHelper private def storage_host_var - ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil) + ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil) || ENV.fetch('AZURE_ALIAS_HOST', nil) end end diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb index d878029d9a..6037839a24 100644 --- a/app/helpers/statuses_helper.rb +++ b/app/helpers/statuses_helper.rb @@ -65,33 +65,6 @@ module StatusesHelper embedded_view? ? '_blank' : nil end - def style_classes(status, is_predecessor, is_successor, include_threads) - classes = ['entry'] - classes << 'entry-predecessor' if is_predecessor - classes << 'entry-reblog' if status.reblog? - classes << 'entry-successor' if is_successor - classes << 'entry-center' if include_threads - classes.join(' ') - end - - def microformats_classes(status, is_direct_parent, is_direct_child) - classes = [] - classes << 'p-in-reply-to' if is_direct_parent - classes << 'p-repost-of' if status.reblog? && is_direct_parent - classes << 'p-comment' if is_direct_child - classes.join(' ') - end - - def microformats_h_class(status, is_predecessor, is_successor, include_threads) - if is_predecessor || status.reblog? || is_successor - 'h-cite' - elsif include_threads - '' - else - 'h-entry' - end - end - def fa_visibility_icon(status) case status.visibility when 'public' diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index 44868f5730..b511605da3 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -190,6 +190,7 @@ class SwitchingColumnsArea extends PureComponent { {singleColumn ? : null} {singleColumn && pathName.startsWith('/deck/') ? : null} + {!singleColumn && pathName === '/getting-started' ? : null} diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 85380406cb..2ef46fad3b 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Схаваць апавяшчэнні ад гэтага карыстальніка?", "mute_modal.indefinite": "Бестэрмінова", "navigation_bar.about": "Пра нас", + "navigation_bar.advanced_interface": "Ireki web interfaze aurreratuan", "navigation_bar.blocks": "Заблакаваныя карыстальнікі", "navigation_bar.bookmarks": "Закладкі", "navigation_bar.community_timeline": "Лакальная стужка", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index c3c259490c..32d0ebfca1 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Скривате ли известията от потребителя?", "mute_modal.indefinite": "Неопределено", "navigation_bar.about": "Относно", + "navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс", "navigation_bar.blocks": "Блокирани потребители", "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална часова ос", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 00e55269d7..62a522346d 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -17,6 +17,7 @@ "account.badges.group": "দল", "account.block": "@{name} কে ব্লক করো", "account.block_domain": "{domain} থেকে সব লুকাও", + "account.block_short": "অবরোধ", "account.blocked": "অবরুদ্ধ", "account.browse_more_on_origin_server": "মূল প্রোফাইলটিতে আরও ব্রাউজ করুন", "account.cancel_follow_request": "অনুসরণ অনুরোধ প্রত্যাহার করুন", @@ -48,7 +49,10 @@ "account.mention": "@{name} কে উল্লেখ করুন", "account.moved_to": "{name} নির্দেশ করেছে যে তাদের নতুন অ্যাকাউন্ট এখন হলো:", "account.mute": "@{name} কে নিঃশব্দ করুন", + "account.mute_notifications_short": "বিজ্ঞপ্তি নিংশব্দ", + "account.mute_short": "নিঃশব্দ", "account.muted": "নিঃশব্দ", + "account.no_bio": "কোনো বর্ণনা দেওয়া হয়নি।", "account.open_original_page": "মূল পৃষ্ঠা খুলুন", "account.posts": "টুট", "account.posts_with_replies": "টুট এবং মতামত", @@ -64,6 +68,7 @@ "account.unendorse": "আপনার নিজের পাতায় এটা দেখবেন না", "account.unfollow": "অনুসরণ করো না", "account.unmute": "@{name} র কার্যকলাপ আবার দেখুন", + "account.unmute_notifications_short": "বিজ্ঞপ্তি শব্দ চালু করো", "account.unmute_short": "আনমিউট করুন", "account_note.placeholder": "নোট যোগ করতে ক্লিক করুন", "admin.dashboard.daily_retention": "সাইন আপের পর দিনে ব্যবহারকারীর ধরে রাখার হার", @@ -353,6 +358,7 @@ "onboarding.steps.setup_profile.title": "Customize your profile", "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", "onboarding.steps.share_profile.title": "Share your profile", + "onboarding.tips.accounts_from_other_servers": "তুমি কি জানতে? যেহেতু মাস্টোডন বিকেন্দ্রীভূত, কিছু অ্যাকাউন্ট তোমার নিজের ছাড়া অন্য কোনো সার্ভারে থাকতে পারে। অথচ তুমি তাদের সাথে কোনো সমস্যা ছাড়াই কথা বলতে পারছো! তাদের সার্ভার তাদের ব্যবহারকারী নামের দ্বিতীয় অর্ধাংশ!", "poll.closed": "বন্ধ", "poll.refresh": "বদলেছে কিনা দেখতে", "poll.total_people": "{count, plural, one {# ব্যক্তি} other {# ব্যক্তি}}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 627a6b800e..a01dad553a 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Cuddio hysbysiadau gan y defnyddiwr hwn?", "mute_modal.indefinite": "Parhaus", "navigation_bar.about": "Ynghylch", + "navigation_bar.advanced_interface": "Abrir coa interface web avanzada", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.bookmarks": "Llyfrnodau", "navigation_bar.community_timeline": "Ffrwd leol", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e4948dbe78..e60f9f6fe2 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -17,6 +17,7 @@ "account.badges.group": "Gruppe", "account.block": "Blokér @{name}", "account.block_domain": "Blokér domænet {domain}", + "account.block_short": "Bloker", "account.blocked": "Blokeret", "account.browse_more_on_origin_server": "Se mere på den oprindelige profil", "account.cancel_follow_request": "Annullér anmodning om at følge", @@ -48,7 +49,10 @@ "account.mention": "Nævn @{name}", "account.moved_to": "{name} har angivet, at vedkommendes nye konto nu er:", "account.mute": "Skjul @{name}", + "account.mute_notifications_short": "Slå lyden fra for notifikationer", + "account.mute_short": "Skjul (mute)", "account.muted": "Skjult (muted)", + "account.no_bio": "Ingen beskrivelse til rådighed.", "account.open_original_page": "Åbn oprindelig side", "account.posts": "Indlæg", "account.posts_with_replies": "Indlæg og svar", @@ -64,6 +68,7 @@ "account.unendorse": "Fjern visning på din profil", "account.unfollow": "Følg ikke længere", "account.unmute": "Vis @{name} igen (unmute)", + "account.unmute_notifications_short": "Slå lyden fra for notifikationer", "account.unmute_short": "Vis igen (unmute)", "account_note.placeholder": "Klik for at tilføje notat", "admin.dashboard.daily_retention": "Brugerfastholdelsesrate per dag efter tilmelding", @@ -71,6 +76,10 @@ "admin.dashboard.retention.average": "Gennemsnitlig", "admin.dashboard.retention.cohort": "Tilmeldingsmåned", "admin.dashboard.retention.cohort_size": "Nye brugere", + "admin.impact_report.instance_accounts": "Konti profiler, som dette ville slette", + "admin.impact_report.instance_followers": "Følgere vores brugere ville miste", + "admin.impact_report.instance_follows": "Følgere deres brugere ville miste", + "admin.impact_report.title": "Resumé af virkninger", "alert.rate_limited.message": "Forsøg igen efter {retry_time, time, medium}.", "alert.rate_limited.title": "Hastighedsbegrænset", "alert.unexpected.message": "En uventet fejl opstod.", @@ -266,7 +275,7 @@ "firehose.remote": "Andre servere", "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", - "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", + "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, synes {domain}-personalet, du måske bør gennemgå disse anmodninger manuelt.", "followed_tags": "Hashtag, som følges", "footer.about": "Om", "footer.directory": "Profiloversigt", @@ -289,9 +298,13 @@ "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne", "hashtag.follow": "Følg hashtag", "hashtag.unfollow": "Stop med at følge hashtag", + "home.actions.go_to_explore": "Se, hvad som trender", + "home.actions.go_to_suggestions": "Find nogle personer at følge", "home.column_settings.basic": "Grundlæggende", "home.column_settings.show_reblogs": "Vis boosts", "home.column_settings.show_replies": "Vis svar", + "home.explore_prompt.body": "Dit hjem feed vil have en blanding af indlæg fra de hashtags du har valgt at følge, de personer, du har valgt at følge, og de indlæg, de booste. Det ser temmelig stille lige nu, så hvordan vi:", + "home.explore_prompt.title": "Dette er din hjemmebase i Mastodon.", "home.hide_announcements": "Skjul bekendtgørelser", "home.show_announcements": "Vis bekendtgørelser", "interaction_modal.description.favourite": "Med en konto på Mastodon kan dette indlæg gøres til favorit for at lade forfatteren vide, at det værdsættes, samt gemme det til senere.", @@ -355,6 +368,7 @@ "lists.delete": "Slet liste", "lists.edit": "Redigér liste", "lists.edit.submit": "Skift titel", + "lists.exclusive": "Skjul disse indlæg hjemmefra", "lists.new.create": "Tilføj liste", "lists.new.title_placeholder": "Ny listetitel", "lists.replies_policy.followed": "Enhver bruger, der følges", @@ -371,6 +385,7 @@ "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", "navigation_bar.about": "Om", + "navigation_bar.advanced_interface": "Åbn i avanceret webgrænseflade", "navigation_bar.blocks": "Blokerede brugere", "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -528,6 +543,8 @@ "report.placeholder": "Yderligere kommentarer", "report.reasons.dislike": "Jeg bryder mig ikke om det", "report.reasons.dislike_description": "Det er ikke noget, man ønsker at se", + "report.reasons.legal": "Det er ulovligt", + "report.reasons.legal_description": "Du mener, at det er i strid med lovgivningen i dit eller serverens land", "report.reasons.other": "Det er noget andet", "report.reasons.other_description": "Problemet passer ikke ind i andre kategorier", "report.reasons.spam": "Det er spam", @@ -547,6 +564,7 @@ "report.unfollow": "Følg ikke længere @{name}", "report.unfollow_explanation": "Du følger denne konto. For ikke længere at se vedkommendes indlæg i dit hjemmefeed, kan du stoppe med at følge dem.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} poster}} vedhæftet", + "report_notification.categories.legal": "Juridisk", "report_notification.categories.other": "Andre", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Regelovertrædelse", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 03119bf2aa..793bf35427 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -135,6 +135,8 @@ "community.column_settings.remote_only": "Remote only", "compose.language.change": "Change language", "compose.language.search": "Search languages...", + "compose.published.body": "Příspěvek zveřejněn.", + "compose.published.open": "Open", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any sensitive information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is not public. Only public posts can be searched by hashtag.", @@ -383,6 +385,7 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", + "navigation_bar.advanced_interface": "Ireki web interfaze aurreratuan", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -470,7 +473,7 @@ "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!", - "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", + "onboarding.steps.follow_people.body": "Following interesting people is what Mastodon is all about.", "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": "Make your first post", @@ -616,6 +619,8 @@ "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", + "status.media.open": "Klikka fyri at lata upp", + "status.media.show": "Klik om te toanen", "status.media_hidden": "Media hidden", "status.mention": "Mention @{name}", "status.more": "More", @@ -646,6 +651,7 @@ "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}", "status.translate": "Translate", "status.translated_from_with": "Translated from {lang} using {provider}", + "status.uncached_media_warning": "A vista previa non está dispoñíble", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index cd82b54a4a..13712e861e 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "¿Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", + "navigation_bar.advanced_interface": "Abrir en la interfaz web avanzada", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronología local", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 9783436da1..d08db67f58 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?", "mute_modal.indefinite": "Lõpmatu", "navigation_bar.about": "Teave", + "navigation_bar.advanced_interface": "Ireki web interfaze aurreratuan", "navigation_bar.blocks": "Blokeeritud kasutajad", "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index cf31c45aa6..82919c6554 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -18,7 +18,7 @@ "account.block": "مسدود کردن ‎@{name}", "account.block_domain": "مسدود کردن دامنهٔ {domain}", "account.block_short": "انسداد", - "account.blocked": "مسدود", + "account.blocked": "مسدود شده", "account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی", "account.cancel_follow_request": "رد کردن درخواست پی‌گیری", "account.direct": "خصوصی از @{name} نام ببرید", @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "نهفتن آگاهی‌ها از این کاربر؟", "mute_modal.indefinite": "نامعلوم", "navigation_bar.about": "درباره", + "navigation_bar.advanced_interface": "بازکردن در رابط کاربری وب پیشرفته", "navigation_bar.blocks": "کاربران مسدود شده", "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index b065ee5f86..93694d241d 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -204,6 +204,7 @@ "dismissable_banner.explore_links": "Näistä uutisista puhuvat ihmiset juuri nyt tällä ja muilla hajautetun verkon palvelimilla.", "dismissable_banner.explore_statuses": "Nämä viestit juuri nyt tältä ja muilta hajautetun verkon palvelimilta ovat saamassa vetoa tältä palvelimelta.", "dismissable_banner.explore_tags": "Nämä aihetunnisteet saavat juuri nyt vetovoimaa tällä ja muilla hajautetun verkon palvelimilla olevien ihmisten keskuudessa.", + "dismissable_banner.public_timeline": "Nämä ovat viimeisimmät julkiset viestit sosiaalisen verkon ihmisiltä, joita {domain} käyttäjät seuraa.", "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", @@ -270,6 +271,8 @@ "filter_modal.select_filter.title": "Suodata tämä viesti", "filter_modal.title.status": "Suodata viesti", "firehose.all": "Kaikki", + "firehose.local": "Tämä palvelin", + "firehose.remote": "Muut palvelimet", "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, on palvelun {domain} ylläpito arvioinut, että saatat olla halukas tarkistamaan nämä seurauspyynnöt erikseen.", @@ -382,6 +385,7 @@ "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", "navigation_bar.about": "Tietoja", + "navigation_bar.advanced_interface": "Avaa edistyneessä käyttöliittymässä", "navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 9319890df3..c718b3f4ef 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Fjal fráboðanir frá hesum brúkaranum?", "mute_modal.indefinite": "Óásett tíðarskeið", "navigation_bar.about": "Um", + "navigation_bar.advanced_interface": "Lat upp í framkomnum vevmarkamóti", "navigation_bar.blocks": "Bannaðir brúkarar", "navigation_bar.bookmarks": "Goymd", "navigation_bar.community_timeline": "Lokal tíðarlinja", diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json index 73f21d6c28..aed2643926 100644 --- a/app/javascript/mastodon/locales/fr-QC.json +++ b/app/javascript/mastodon/locales/fr-QC.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Masquer les notifications de ce compte?", "mute_modal.indefinite": "Indéfinie", "navigation_bar.about": "À propos", + "navigation_bar.advanced_interface": "Ouvrir dans l’interface avancée", "navigation_bar.blocks": "Comptes bloqués", "navigation_bar.bookmarks": "Signets", "navigation_bar.community_timeline": "Fil local", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 6bd775dbe8..bcc9a10e68 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -135,6 +135,8 @@ "community.column_settings.remote_only": "Feadhainn chèin a-mhàin", "compose.language.change": "Atharraich an cànan", "compose.language.search": "Lorg cànan…", + "compose.published.body": "Postimi u botua.", + "compose.published.open": "Fosgail", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh dìomhair idir le Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais o nach eil e poblach. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", @@ -383,6 +385,7 @@ "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", "navigation_bar.about": "Mu dhèidhinn", + "navigation_bar.advanced_interface": "Ireki web interfaze aurreratuan", "navigation_bar.blocks": "Cleachdaichean bacte", "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", @@ -616,6 +619,8 @@ "status.history.created": "Chruthaich {name} {date} e", "status.history.edited": "Dheasaich {name} {date} e", "status.load_more": "Luchdaich barrachd dheth", + "status.media.open": "Klikoni për hapje", + "status.media.show": "Klikoni për shfaqje", "status.media_hidden": "Meadhan falaichte", "status.mention": "Thoir iomradh air @{name}", "status.more": "Barrachd", @@ -646,6 +651,7 @@ "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.translate": "Eadar-theangaich", "status.translated_from_with": "Air eadar-theangachadh o {lang} le {provider}", + "status.uncached_media_warning": "S’ka paraparje", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", "subscribed_languages.lead": "Cha nochd ach na postaichean sna cànanan a thagh thu air loidhnichean-ama na dachaigh ’s nan liostaichean às dèidh an atharrachaidh seo. Na tagh gin ma tha thu airson na postaichean uile fhaighinn ge b’ e dè an cànan.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 4fb9c217af..e0f1f4b1b2 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Agochar notificacións desta persoa?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", + "navigation_bar.advanced_interface": "Abrir coa interface web avanzada", "navigation_bar.blocks": "Usuarias bloqueadas", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronoloxía local", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 2c573d480c..cca4facea9 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -94,7 +94,7 @@ "boost_modal.combo": "次からは{combo}を押せばスキップできます", "bundle_column_error.copy_stacktrace": "エラーレポートをコピー", "bundle_column_error.error.body": "要求されたページをレンダリングできませんでした。コードのバグ、またはブラウザの互換性の問題が原因である可能性があります。", - "bundle_column_error.error.title": "あらら……", + "bundle_column_error.error.title": "おっと!", "bundle_column_error.network.body": "このページを読み込もうとしたときにエラーが発生しました。インターネット接続またはこのサーバーの一時的な問題が発生した可能性があります。", "bundle_column_error.network.title": "ネットワークエラー", "bundle_column_error.retry": "再試行", @@ -210,9 +210,9 @@ "disabled_account_banner.text": "あなたのアカウント『{disabledAccount}』は現在無効になっています。", "dismissable_banner.community_timeline": "これらは{domain}がホストしている人たちの最新の公開投稿です。", "dismissable_banner.dismiss": "閉じる", - "dismissable_banner.explore_links": "これらのニュース記事は現在分散型ネットワークの他のサーバーの人たちに話されています。", - "dismissable_banner.explore_statuses": "分散型ネットワーク内の他のサーバーのこれらの投稿は現在このサーバー上で注目されています。", - "dismissable_banner.explore_tags": "これらのハッシュタグは現在分散型ネットワークの他のサーバーの人たちに話されています。", + "dismissable_banner.explore_links": "ネットワーク上で話題になっているニュースです。たくさんのユーザーにシェアされた記事ほど上位に表示されます。", + "dismissable_banner.explore_statuses": "ネットワーク上で注目を集めている投稿です。ブーストやお気に入り登録の多い投稿が上位に表示されます。", + "dismissable_banner.explore_tags": "ネットワーク上でトレンドになっているハッシュタグです。たくさんのユーザーに使われたタグほど上位に表示されます。", "dismissable_banner.public_timeline": "{domain} のユーザーがリモートフォローしているアカウントからの公開投稿のタイムラインです。", "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", "embed.preview": "表示例:", @@ -246,7 +246,7 @@ "empty_column.follow_requests": "まだフォローリクエストを受けていません。フォローリクエストを受けるとここに表示されます。", "empty_column.followed_tags": "まだハッシュタグをフォローしていません。フォローするとここに表示されます。", "empty_column.hashtag": "このハッシュタグはまだ使われていません。", - "empty_column.home": "ホームタイムラインはまだ空っぽです。誰かフォローして埋めてみましょう。 {suggestions}", + "empty_column.home": "ホームタイムラインはまだ空っぽです。だれかをフォローして埋めてみましょう。", "empty_column.list": "このリストにはまだなにもありません。このリストのメンバーが新しい投稿をするとここに表示されます。", "empty_column.lists": "まだリストがありません。リストを作るとここに表示されます。", "empty_column.mutes": "まだ誰もミュートしていません。", @@ -485,18 +485,18 @@ "onboarding.actions.go_to_local_timeline": "ローカルの投稿を見る", "onboarding.compose.template": "#Mastodon はじめました", "onboarding.follows.empty": "おすすめに表示できるアカウントはまだありません。検索や「見つける」を活用して、ほかのアカウントを探してみましょう。", - "onboarding.follows.lead": "自分の手でタイムラインを作ってみましょう。フォローを増やせば、タイムラインはより賑やかでおもしろいものになります。最初のフォローの参考になりそうなアカウントをいくつか表示しています。気になったものがあれば、ここからフォローしてみましょう。フォローはいつでも解除して大丈夫です。", - "onboarding.follows.title": "おすすめのアカウント", + "onboarding.follows.lead": "ホームタイムラインは Mastodon の軸足となる場所です。たくさんのユーザーをフォローすることで、ホームタイムラインはよりにぎやかでおもしろいものになります。手はじめに、おすすめのアカウントから何人かフォローしてみましょう:", + "onboarding.follows.title": "ホームタイムラインを埋める", "onboarding.share.lead": "新しい Mastodon アカウントをみんなに紹介しましょう。", "onboarding.share.message": "「{username}」で #Mastodon はじめました! {url}", "onboarding.share.next_steps": "次のステップに進む:", "onboarding.share.title": "プロフィールをシェアする", - "onboarding.start.lead": "Mastodon アカウントの準備ができました。次のステップに進みましょう:", + "onboarding.start.lead": "Mastodon へようこそ。Mastodon は非中央集権型SNSのひとつで、ユーザーそれぞれの考えかたを尊重するプラットフォームです。ユーザーはどんな「好き」も自由に追いかけることができます。次のステップに進んで、新天地でのつながりをみつけましょう:", "onboarding.start.skip": "下のどれかをクリックしてチュートリアルを終了", "onboarding.start.title": "はじめに", - "onboarding.steps.follow_people.body": "タイムラインを充実させましょう。", - "onboarding.steps.follow_people.title": "最初の{count, plural, other {#人}}をフォローする", - "onboarding.steps.publish_status.body": "試しに何か書いてみましょう。", + "onboarding.steps.follow_people.body": "ユーザーをフォローしてみましょう。これが Mastodon を楽しむ基本です。", + "onboarding.steps.follow_people.title": "ホームタイムラインを埋める", + "onboarding.steps.publish_status.body": "試しになにか書いてみましょう。写真、ビデオ、アンケートなど、なんでも大丈夫です {emoji}", "onboarding.steps.publish_status.title": "はじめての投稿", "onboarding.steps.setup_profile.body": "ほかのユーザーが親しみやすいように、プロフィールを整えましょう。", "onboarding.steps.setup_profile.title": "プロフィールを完成させる", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index fe68ceea0a..be63be7e1c 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -373,7 +373,7 @@ "lists.new.title_placeholder": "새 리스트의 이름", "lists.replies_policy.followed": "팔로우 한 사용자 누구나", "lists.replies_policy.list": "리스트의 구성원", - "lists.replies_policy.none": "선택 안함", + "lists.replies_policy.none": "모두 제외", "lists.replies_policy.title": "답글 표시:", "lists.search": "팔로우 중인 사람들 중에서 찾기", "lists.subheading": "리스트", @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?", "mute_modal.indefinite": "무기한", "navigation_bar.about": "정보", + "navigation_bar.advanced_interface": "고급 웹 인터페이스에서 열기", "navigation_bar.blocks": "차단한 사용자", "navigation_bar.bookmarks": "북마크", "navigation_bar.community_timeline": "로컬 타임라인", @@ -392,7 +393,7 @@ "navigation_bar.direct": "개인적인 멘션", "navigation_bar.discover": "발견하기", "navigation_bar.domain_blocks": "차단한 도메인", - "navigation_bar.edit_profile": "프로필 편집", + "navigation_bar.edit_profile": "프로필 수정", "navigation_bar.explore": "둘러보기", "navigation_bar.favourites": "좋아요", "navigation_bar.filters": "뮤트한 단어", @@ -608,7 +609,7 @@ "status.direct": "@{name} 님에게 개인적으로 멘션", "status.direct_indicator": "개인적인 멘션", "status.edit": "수정", - "status.edited": "{date}에 편집됨", + "status.edited": "{date}에 수정함", "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", "status.favourite": "좋아요", @@ -682,7 +683,7 @@ "upload_form.audio_description": "청각 장애인을 위한 설명", "upload_form.description": "시각장애인을 위한 설명", "upload_form.description_missing": "설명이 추가되지 않음", - "upload_form.edit": "편집", + "upload_form.edit": "수정", "upload_form.thumbnail": "썸네일 변경", "upload_form.undo": "삭제", "upload_form.video_description": "청각, 시각 장애인을 위한 설명", @@ -692,7 +693,7 @@ "upload_modal.choose_image": "이미지 선택", "upload_modal.description_placeholder": "다람쥐 헌 쳇바퀴 타고파", "upload_modal.detect_text": "이미지에서 텍스트 추출", - "upload_modal.edit_media": "미디어 편집", + "upload_modal.edit_media": "미디어 수정", "upload_modal.hint": "미리보기를 클릭하거나 드래그 해서 포컬 포인트를 맞추세요. 이 점은 썸네일에 항상 보여질 부분을 나타냅니다.", "upload_modal.preparing_ocr": "OCR 준비 중…", "upload_modal.preview_label": "미리보기 ({ratio})", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 1f0dd68c44..15e48092de 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "ဤအကောင့်မှသတိပေးချက်များကိုပိတ်မလား?", "mute_modal.indefinite": "ရေတွက်လို့မရပါ", "navigation_bar.about": "အကြောင်း", + "navigation_bar.advanced_interface": "အဆင့်မြင့်ဝဘ်ပုံစံ ဖွင့်ပါ", "navigation_bar.blocks": "ဘလော့ထားသောအကောင့်များ", "navigation_bar.bookmarks": "မှတ်ထားသည်များ", "navigation_bar.community_timeline": "ဒေသစံတော်ချိန်", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 7f94820733..76484fa8a4 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Skjul varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", "navigation_bar.about": "Om", + "navigation_bar.advanced_interface": "Åpne i det avanserte nettgrensesnittet", "navigation_bar.blocks": "Blokkerte brukarar", "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index e6c8c3e3e7..2bb00ae290 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?", "mute_modal.indefinite": "På ubestemt tid", "navigation_bar.about": "Om", + "navigation_bar.advanced_interface": "Åpne i det avanserte nettgrensesnittet", "navigation_bar.blocks": "Blokkerte brukere", "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 6775e58d4e..376caaa673 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -76,6 +76,9 @@ "admin.dashboard.retention.average": "Średnia", "admin.dashboard.retention.cohort": "Miesiąc rejestracji", "admin.dashboard.retention.cohort_size": "Nowi użytkownicy", + "admin.impact_report.instance_accounts": "Profile kont, które usuną", + "admin.impact_report.instance_followers": "Obserwujący stracili nasi użytkownicy", + "admin.impact_report.instance_follows": "Obserwujący ich użytkownicy stracą", "admin.impact_report.title": "Podsumowanie wpływu", "alert.rate_limited.message": "Spróbuj ponownie po {retry_time, time, medium}.", "alert.rate_limited.title": "Ograniczony czasowo", @@ -301,6 +304,7 @@ "home.column_settings.show_reblogs": "Pokazuj podbicia", "home.column_settings.show_replies": "Pokazuj odpowiedzi", "home.explore_prompt.body": "Twój kanał główny będzie zawierał kombinację postów z tagów, które wybrano do obserwacji, osoby, które wybrano obserwować i wpisy, które one podbijają. Obecnie jest tu całkiem cicho, więc co myślisz o:", + "home.explore_prompt.title": "To twoja baza domowa w Mastodon.", "home.hide_announcements": "Ukryj ogłoszenia", "home.show_announcements": "Pokaż ogłoszenia", "interaction_modal.description.favourite": "Mając konto na Mastodonie, możesz dodawać wpisy do ulubionych by dać znać jego autorowi, że podoba Ci się ten wpis i zachować go na później.", @@ -381,6 +385,7 @@ "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", "navigation_bar.about": "O serwerze", + "navigation_bar.advanced_interface": "Otwórz w zaawansowanym interfejsie użytkownika", "navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index e93118ceee..8d9f4a6117 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -17,6 +17,7 @@ "account.badges.group": "Grupo", "account.block": "Bloquear @{name}", "account.block_domain": "Esconder tudo do domínio {domain}", + "account.block_short": "Bloquear", "account.blocked": "Bloqueado(a)", "account.browse_more_on_origin_server": "Encontrar mais no perfil original", "account.cancel_follow_request": "Retirar pedido para seguir", @@ -48,7 +49,10 @@ "account.mention": "Mencionar @{name}", "account.moved_to": "{name} indicou que a sua nova conta é agora:", "account.mute": "Silenciar @{name}", + "account.mute_notifications_short": "Silenciar notificações", + "account.mute_short": "Silenciar", "account.muted": "Silenciada", + "account.no_bio": "Nenhuma descrição fornecida.", "account.open_original_page": "Abrir a página original", "account.posts": "Publicações", "account.posts_with_replies": "Publicações e respostas", @@ -64,6 +68,7 @@ "account.unendorse": "Não destacar no perfil", "account.unfollow": "Deixar de seguir", "account.unmute": "Deixar de silenciar @{name}", + "account.unmute_notifications_short": "Parar de silenciar notificações", "account.unmute_short": "Deixar de silenciar", "account_note.placeholder": "Clique para adicionar nota", "admin.dashboard.daily_retention": "Taxa de retenção de utilizadores por dia após a inscrição", @@ -71,6 +76,10 @@ "admin.dashboard.retention.average": "Média", "admin.dashboard.retention.cohort": "Mês de inscrição", "admin.dashboard.retention.cohort_size": "Novos utilizadores", + "admin.impact_report.instance_accounts": "Perfis de contas que isto eliminaria", + "admin.impact_report.instance_followers": "Seguidores que os nossos utilizadores perderiam", + "admin.impact_report.instance_follows": "Seguidores que os utilizadores deles perderiam", + "admin.impact_report.title": "Resumo do impacto", "alert.rate_limited.message": "Volte a tentar depois das {retry_time, time, medium}.", "alert.rate_limited.title": "Limite de tentativas", "alert.unexpected.message": "Ocorreu um erro inesperado.", @@ -105,6 +114,7 @@ "column.directory": "Explorar perfis", "column.domain_blocks": "Domínios bloqueados", "column.favourites": "Preferidos", + "column.firehose": "Cronologias", "column.follow_requests": "Seguidores pendentes", "column.home": "Início", "column.lists": "Listas", @@ -125,6 +135,8 @@ "community.column_settings.remote_only": "Apenas remoto", "compose.language.change": "Alterar língua", "compose.language.search": "Pesquisar línguas...", + "compose.published.body": "Publicado.", + "compose.published.open": "Abrir", "compose_form.direct_message_warning_learn_more": "Conhecer mais", "compose_form.encryption_warning": "As publicações no Mastodon não são criptografadas de ponta a ponta. Não partilhe nenhuma informação sensível através do Mastodon.", "compose_form.hashtag_warning": "Esta publicação não será listada em qualquer etiqueta, pois não é pública. Apenas as publicações públicas podem ser pesquisadas por etiquetas.", @@ -192,6 +204,7 @@ "dismissable_banner.explore_links": "Essas histórias de notícias estão, no momento, a ser faladas por pessoas neste e noutros servidores da rede descentralizada.", "dismissable_banner.explore_statuses": "Estas publicações, deste e de outros servidores na rede descentralizada, estão, neste momento, a ganhar atenção neste servidor.", "dismissable_banner.explore_tags": "Estas #etiquetas estão presentemente a ganhar atenção entre as pessoas neste e noutros servidores da rede descentralizada.", + "dismissable_banner.public_timeline": "Estas são as publicações públicas mais recentes de pessoas na rede social que as pessoas em {domain} seguem.", "embed.instructions": "Incorpore esta publicação no seu site copiando o código abaixo.", "embed.preview": "Podes ver aqui como irá ficar:", "emoji_button.activity": "Actividade", @@ -257,6 +270,9 @@ "filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova", "filter_modal.select_filter.title": "Filtrar esta publicação", "filter_modal.title.status": "Filtrar uma publicação", + "firehose.all": "Todas", + "firehose.local": "Este servidor", + "firehose.remote": "Outros servidores", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", @@ -282,9 +298,13 @@ "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionais para esta coluna", "hashtag.follow": "Seguir #etiqueta", "hashtag.unfollow": "Deixar de seguir #etiqueta", + "home.actions.go_to_explore": "Veja as tendências atuais", + "home.actions.go_to_suggestions": "Encontrar pessoas para seguir", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar impulsos", "home.column_settings.show_replies": "Mostrar respostas", + "home.explore_prompt.body": "A sua página inicial terá uma mistura de publicações com as hashtags que escolheu seguir, das pessoas que escolheu seguir e as publicações que elas partilham. Parece bastante quieto por agora, então que tal:", + "home.explore_prompt.title": "Esta é a sua base principal dentro do Mastodon.", "home.hide_announcements": "Ocultar comunicações", "home.show_announcements": "Exibir comunicações", "interaction_modal.description.favourite": "Com uma conta no Mastodon, pode adicionar esta publicação aos marcadores para que o autor saiba que gostou e guardá-la para mais tarde.", @@ -348,6 +368,7 @@ "lists.delete": "Eliminar lista", "lists.edit": "Editar lista", "lists.edit.submit": "Mudar o título", + "lists.exclusive": "Ocultar essas publicações da página inicial", "lists.new.create": "Adicionar lista", "lists.new.title_placeholder": "Título da nova lista", "lists.replies_policy.followed": "Qualquer utilizador seguido", @@ -364,6 +385,7 @@ "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "mute_modal.indefinite": "Indefinidamente", "navigation_bar.about": "Sobre", + "navigation_bar.advanced_interface": "Abrir na interface web avançada", "navigation_bar.blocks": "Utilizadores bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronologia local", @@ -468,6 +490,7 @@ "picture_in_picture.restore": "Colocá-lo de volta", "poll.closed": "Fechado", "poll.refresh": "Recarregar", + "poll.reveal": "Ver resultados", "poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}", "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", @@ -520,6 +543,8 @@ "report.placeholder": "Comentários adicionais", "report.reasons.dislike": "Não gosto disto", "report.reasons.dislike_description": "Não é algo que deseje ver", + "report.reasons.legal": "É ilegal", + "report.reasons.legal_description": "Acredita que isto viola a lei do seu país ou do país do seu servidor", "report.reasons.other": "É outra coisa", "report.reasons.other_description": "O problema não se encaixa nas outras categorias", "report.reasons.spam": "É spam", @@ -539,6 +564,7 @@ "report.unfollow": "Deixar de seguir @{name}", "report.unfollow_explanation": "Está a seguir esta conta. Para não ver mais as publicações desta conta na sua página inicial, deixe de segui-la.", "report_notification.attached_statuses": "{count, plural,one {{count} publicação} other {{count} publicações}} em anexo", + "report_notification.categories.legal": "Legal", "report_notification.categories.other": "Outro", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Violação de regra", @@ -593,6 +619,8 @@ "status.history.created": "{name} criado em {date}", "status.history.edited": "{name} editado em {date}", "status.load_more": "Carregar mais", + "status.media.open": "Clique para abrir", + "status.media.show": "Clique para ver", "status.media_hidden": "Media escondida", "status.mention": "Mencionar @{name}", "status.more": "Mais", @@ -623,6 +651,7 @@ "status.title.with_attachments": "{user} publicou {attachmentCount, plural,one {um anexo} other {{attachmentCount} anexos}}", "status.translate": "Traduzir", "status.translated_from_with": "Traduzido do {lang} usando {provider}", + "status.uncached_media_warning": "Pré-visualização não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Desafixar do perfil", "subscribed_languages.lead": "Após a alteração, apenas as publicações nas línguas seleccionadas aparecerão na sua página inicial e listas. Não selecione nenhuma para receber publicações de todas as línguas.", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index fa95ad87d6..d15d36e348 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -78,6 +78,8 @@ "admin.dashboard.retention.cohort_size": "Новые пользователи", "admin.impact_report.instance_accounts": "Профили учетных записей, которые будут удалены", "admin.impact_report.instance_followers": "Последователи, которых потеряют наши пользователи", + "admin.impact_report.instance_follows": "Последователи, которых потеряют наши пользователи", + "admin.impact_report.title": "Резюме воздействия", "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.", "alert.rate_limited.title": "Ограничение количества запросов", "alert.unexpected.message": "Произошла непредвиденная ошибка.", @@ -112,6 +114,7 @@ "column.directory": "Просмотр профилей", "column.domain_blocks": "Заблокированные домены", "column.favourites": "Избранное", + "column.firehose": "Живая лента", "column.follow_requests": "Запросы на подписку", "column.home": "Главная", "column.lists": "Списки", @@ -132,6 +135,8 @@ "community.column_settings.remote_only": "Только удалённые", "compose.language.change": "Изменить язык", "compose.language.search": "Поиск языков...", + "compose.published.body": "Запись опубликована.", + "compose.published.open": "Открыть", "compose_form.direct_message_warning_learn_more": "Подробнее", "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь конфиденциальной информацией через Mastodon.", "compose_form.hashtag_warning": "Этот пост не будет виден ни под одним из хэштегов, так как он не публичный. Только публичные посты можно найти по хэштегу.", @@ -199,6 +204,7 @@ "dismissable_banner.explore_links": "Об этих новостях прямо сейчас говорят люди на этом и других серверах децентрализованной сети.", "dismissable_banner.explore_statuses": "Эти сообщения с этого и других серверов в децентрализованной сети сейчас набирают популярность на этом сервере.", "dismissable_banner.explore_tags": "Эти хэштеги привлекают людей на этом и других серверах децентрализованной сети прямо сейчас.", + "dismissable_banner.public_timeline": "Это самые последние публичные сообщения от людей в социальной сети, за которыми подписались пользователи {domain}.", "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:", "embed.preview": "Так это будет выглядеть:", "emoji_button.activity": "Занятия", @@ -264,6 +270,9 @@ "filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую", "filter_modal.select_filter.title": "Фильтровать этот пост", "filter_modal.title.status": "Фильтровать пост", + "firehose.all": "Все", + "firehose.local": "Текущий сервер", + "firehose.remote": "Другие серверы", "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Хотя ваша учетная запись не закрыта, команда {domain} подумала, что вы захотите просмотреть запросы от этих учетных записей вручную.", @@ -289,9 +298,13 @@ "hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки", "hashtag.follow": "Подписаться на новые посты", "hashtag.unfollow": "Отписаться", + "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.title": "Это ваша домашняя база в Мастодоне.", "home.hide_announcements": "Скрыть объявления", "home.show_announcements": "Показать объявления", "interaction_modal.description.favourite": "С учётной записью Mastodon, вы можете добавить этот пост в избранное, чтобы сохранить его на будущее и дать автору знать, что пост вам понравился.", @@ -355,6 +368,7 @@ "lists.delete": "Удалить список", "lists.edit": "Изменить список", "lists.edit.submit": "Изменить название", + "lists.exclusive": "Скрыть эти сообщения из дома", "lists.new.create": "Создать список", "lists.new.title_placeholder": "Название для нового списка", "lists.replies_policy.followed": "Любой подписанный пользователь", @@ -371,6 +385,7 @@ "mute_modal.hide_notifications": "Скрыть уведомления от этого пользователя?", "mute_modal.indefinite": "Не определена", "navigation_bar.about": "О проекте", + "navigation_bar.advanced_interface": "Включить многоколоночный интерфейс", "navigation_bar.blocks": "Заблокированные пользователи", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", @@ -475,6 +490,7 @@ "picture_in_picture.restore": "Вернуть обратно", "poll.closed": "Завершён", "poll.refresh": "Обновить", + "poll.reveal": "Результаты", "poll.total_people": "{count, plural, one {# человек} few {# человека} many {# человек} other {# человек}}", "poll.total_votes": "{count, plural, one {# голос} few {# голоса} many {# голосов} other {# голосов}}", "poll.vote": "Голосовать", @@ -527,6 +543,8 @@ "report.placeholder": "Дополнительные комментарии", "report.reasons.dislike": "Мне не нравится", "report.reasons.dislike_description": "Не хотел(а) бы видеть такой контент", + "report.reasons.legal": "Это незаконно", + "report.reasons.legal_description": "Вы считаете, что оно нарушает закон вашей страны или сервера", "report.reasons.other": "Другое", "report.reasons.other_description": "Проблема не попадает ни под одну из категорий", "report.reasons.spam": "Это спам", @@ -546,6 +564,7 @@ "report.unfollow": "Отписаться от @{name}", "report.unfollow_explanation": "Вы подписаны на этого пользователя. Чтобы не видеть его/её посты в своей домашней ленте, отпишитесь от него/неё.", "report_notification.attached_statuses": "{count, plural, one {{count} сообщение} few {{count} сообщения} many {{count} сообщений} other {{count} сообщений}} вложено", + "report_notification.categories.legal": "Правовая информация", "report_notification.categories.other": "Прочее", "report_notification.categories.spam": "Спам", "report_notification.categories.violation": "Нарушение правил", @@ -600,6 +619,8 @@ "status.history.created": "{name} создал {date}", "status.history.edited": "{name} отредактировал(а) {date}", "status.load_more": "Загрузить остальное", + "status.media.open": "Нажмите, чтобы открыть.", + "status.media.show": "Нажмите для просмотра", "status.media_hidden": "Файл скрыт", "status.mention": "Упомянуть @{name}", "status.more": "Ещё", @@ -630,6 +651,7 @@ "status.title.with_attachments": "{user} размещено {attachmentCount, plural, one {вложение} other {{attachmentCount} вложений}}", "status.translate": "Перевод", "status.translated_from_with": "Переведено с {lang}, используя {provider}", + "status.uncached_media_warning": "Прослушивание недоступно", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", "subscribed_languages.lead": "Посты только на выбранных языках будут отображаться на вашей домашней странице и в списке лент после изменения. Выберите «Нет», чтобы получать посты на всех языках.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 911296a25c..57cba68dd1 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -75,6 +75,10 @@ "admin.dashboard.retention.average": "Povprečje", "admin.dashboard.retention.cohort": "Mesec prijave", "admin.dashboard.retention.cohort_size": "Novi uporabniki", + "admin.impact_report.instance_accounts": "Profili računov, ki bi jih s tem izbrisali", + "admin.impact_report.instance_followers": "Sledilci, ki bi jih izgubili naši uporabniki", + "admin.impact_report.instance_follows": "Sledilci, ki bi jih izgubili njihovi uporabniki", + "admin.impact_report.title": "Povzetek učinka", "alert.rate_limited.message": "Poskusite znova čez {retry_time, time, medium}.", "alert.rate_limited.title": "Hitrost omejena", "alert.unexpected.message": "Zgodila se je nepričakovana napaka.", @@ -376,6 +380,7 @@ "mute_modal.hide_notifications": "Ali želite skriti obvestila tega uporabnika?", "mute_modal.indefinite": "Nedoločeno", "navigation_bar.about": "O Mastodonu", + "navigation_bar.advanced_interface": "Odpri v naprednem spletnem vmesniku", "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Krajevna časovnica", @@ -480,6 +485,7 @@ "picture_in_picture.restore": "Postavi nazaj", "poll.closed": "Zaprto", "poll.refresh": "Osveži", + "poll.reveal": "Poglej rezultate", "poll.total_people": "{count, plural, one {# oseba} two {# osebi} few {# osebe} other {# oseb}}", "poll.total_votes": "{count, plural, one {# glas} two {# glasova} few {# glasovi} other {# glasov}}", "poll.vote": "Glasuj", @@ -532,6 +538,7 @@ "report.placeholder": "Dodatni komentarji", "report.reasons.dislike": "Ni mi všeč", "report.reasons.dislike_description": "To ni tisto, kar želim videti", + "report.reasons.legal": "To ni legalno", "report.reasons.other": "Gre za nekaj drugega", "report.reasons.other_description": "Težava ne sodi v druge kategorije", "report.reasons.spam": "To je neželena vsebina", @@ -551,6 +558,7 @@ "report.unfollow": "Ne sledi več @{name}", "report.unfollow_explanation": "Temu računu sledite. Da ne boste več videli njegovih objav v svojem domačem viru, mu prenehajte slediti.", "report_notification.attached_statuses": "{count, plural, one {{count} objava pripeta} two {{count} objavi pripeti} few {{count} objave pripete} other {{count} objav pripetih}}", + "report_notification.categories.legal": "Legalno", "report_notification.categories.other": "Drugo", "report_notification.categories.spam": "Neželeno", "report_notification.categories.violation": "Kršitev pravila", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 0a2a9ca96b..d71eb8cb70 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?", "mute_modal.indefinite": "E pacaktuar", "navigation_bar.about": "Mbi", + "navigation_bar.advanced_interface": "Ireki web interfaze aurreratuan", "navigation_bar.blocks": "Përdorues të bllokuar", "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index bfd53a0aca..06d8b4d93c 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -209,7 +209,7 @@ "emoji_button.food": "Mat & dryck", "emoji_button.label": "Lägg till emoji", "emoji_button.nature": "Natur", - "emoji_button.not_found": "Inga emojos!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Inga matchande emojis hittades", "emoji_button.objects": "Objekt", "emoji_button.people": "Personer", "emoji_button.recent": "Ofta använda", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index e36a24742e..4624244529 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?", "mute_modal.indefinite": "Belirsiz", "navigation_bar.about": "Hakkında", + "navigation_bar.advanced_interface": "Gelişmiş web arayüzünde aç", "navigation_bar.blocks": "Engellenen kullanıcılar", "navigation_bar.bookmarks": "Yer İşaretleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 1dbe0438f3..a3bc66fad8 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "Ẩn thông báo từ người này?", "mute_modal.indefinite": "Vĩnh viễn", "navigation_bar.about": "Giới thiệu", + "navigation_bar.advanced_interface": "Dùng bố cục nhiều cột", "navigation_bar.blocks": "Người đã chặn", "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", @@ -648,7 +649,7 @@ "status.show_more_all": "Hiển thị tất cả", "status.show_original": "Bản gốc", "status.title.with_attachments": "{user} đã đăng {attachmentCount, plural, other {{attachmentCount} đính kèm}}", - "status.translate": "Dịch", + "status.translate": "Dịch Tút", "status.translated_from_with": "Dịch từ {lang} bằng {provider}", "status.uncached_media_warning": "Xem trước không sẵn có", "status.unmute_conversation": "Quan tâm", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 5c001f0eb6..bcec52261d 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -385,6 +385,7 @@ "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", "navigation_bar.about": "關於", + "navigation_bar.advanced_interface": "以進階網頁介面開啟", "navigation_bar.blocks": "已封鎖的使用者", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 586249c914..c38f9cd5a4 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -5,11 +5,16 @@ import { normalizeStatusTranslation } from '../actions/importer/normalizer'; import { REBLOG_REQUEST, REBLOG_FAIL, + UNREBLOG_REQUEST, + UNREBLOG_FAIL, FAVOURITE_REQUEST, FAVOURITE_FAIL, - UNFAVOURITE_SUCCESS, + UNFAVOURITE_REQUEST, + UNFAVOURITE_FAIL, BOOKMARK_REQUEST, BOOKMARK_FAIL, + UNBOOKMARK_REQUEST, + UNBOOKMARK_FAIL, } from '../actions/interactions'; import { STATUS_MUTE_SUCCESS, @@ -96,18 +101,28 @@ export default function statuses(state = initialState, action) { return importStatuses(state, action.statuses); case FAVOURITE_REQUEST: return state.setIn([action.status.get('id'), 'favourited'], true); - case UNFAVOURITE_SUCCESS: - return state.updateIn([action.status.get('id'), 'favourites_count'], x => Math.max(0, x - 1)); case FAVOURITE_FAIL: return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], false); + case UNFAVOURITE_REQUEST: + return state.setIn([action.status.get('id'), 'favourited'], false); + case UNFAVOURITE_FAIL: + return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'favourited'], true); case BOOKMARK_REQUEST: return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true); case BOOKMARK_FAIL: return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false); + case UNBOOKMARK_REQUEST: + return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], false); + case UNBOOKMARK_FAIL: + return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'bookmarked'], true); case REBLOG_REQUEST: return state.setIn([action.status.get('id'), 'reblogged'], true); case REBLOG_FAIL: return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], false); + case UNREBLOG_REQUEST: + return state.setIn([action.status.get('id'), 'reblogged'], false); + case UNREBLOG_FAIL: + return state.get(action.status.get('id')) === undefined ? state : state.setIn([action.status.get('id'), 'reblogged'], true); case STATUS_MUTE_SUCCESS: return state.setIn([action.id, 'muted'], true); case STATUS_UNMUTE_SUCCESS: diff --git a/app/lib/request.rb b/app/lib/request.rb index 425effa1ac..7386015d6d 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -4,14 +4,22 @@ require 'ipaddr' require 'socket' require 'resolv' -# Monkey-patch the HTTP.rb timeout class to avoid using a timeout block +# Use our own timeout class to avoid using HTTP.rb's timeout block # around the Socket#open method, since we use our own timeout blocks inside # that method # # Also changes how the read timeout behaves so that it is cumulative (closer # to HTTP::Timeout::Global, but still having distinct timeouts for other # operation types) -class HTTP::Timeout::PerOperation +class PerOperationWithDeadline < HTTP::Timeout::PerOperation + READ_DEADLINE = 30 + + def initialize(*args) + super + + @read_deadline = options.fetch(:read_deadline, READ_DEADLINE) + end + def connect(socket_class, host, port, nodelay = false) @socket = socket_class.open(host, port) @socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) if nodelay @@ -24,7 +32,7 @@ class HTTP::Timeout::PerOperation # Read data from the socket def readpartial(size, buffer = nil) - @deadline ||= Process.clock_gettime(Process::CLOCK_MONOTONIC) + @read_timeout + @deadline ||= Process.clock_gettime(Process::CLOCK_MONOTONIC) + @read_deadline timeout = false loop do @@ -33,7 +41,8 @@ class HTTP::Timeout::PerOperation return :eof if result.nil? remaining_time = @deadline - Process.clock_gettime(Process::CLOCK_MONOTONIC) - raise HTTP::TimeoutError, "Read timed out after #{@read_timeout} seconds" if timeout || remaining_time <= 0 + raise HTTP::TimeoutError, "Read timed out after #{@read_timeout} seconds" if timeout + raise HTTP::TimeoutError, "Read timed out after a total of #{@read_deadline} seconds" if remaining_time <= 0 return result if result != :wait_readable # marking the socket for timeout. Why is this not being raised immediately? @@ -46,7 +55,7 @@ class HTTP::Timeout::PerOperation # timeout. Else, the first timeout was a proper timeout. # This hack has to be done because io/wait#wait_readable doesn't provide a value for when # the socket is closed by the server, and HTTP::Parser doesn't provide the limit for the chunks. - timeout = true unless @socket.to_io.wait_readable(remaining_time) + timeout = true unless @socket.to_io.wait_readable([remaining_time, @read_timeout].min) end end end @@ -57,7 +66,7 @@ class Request # We enforce a 5s timeout on DNS resolving, 5s timeout on socket opening # and 5s timeout on the TLS handshake, meaning the worst case should take # about 15s in total - TIMEOUT = { connect: 5, read: 10, write: 10 }.freeze + TIMEOUT = { connect_timeout: 5, read_timeout: 10, write_timeout: 10, read_deadline: 30 }.freeze include RoutingHelper @@ -69,6 +78,7 @@ class Request @http_client = options.delete(:http_client) @allow_local = options.delete(:allow_local) @options = options.merge(socket_class: use_proxy? || @allow_local ? ProxySocket : Socket) + @options = @options.merge(timeout_class: PerOperationWithDeadline, timeout_options: TIMEOUT) @options = @options.merge(proxy_url) if use_proxy? @headers = {} @@ -129,7 +139,7 @@ class Request end def http_client - HTTP.use(:auto_inflate).timeout(TIMEOUT.dup).follow(max_hops: 3) + HTTP.use(:auto_inflate).follow(max_hops: 3) end end diff --git a/app/models/account.rb b/app/models/account.rb index 670b2c6083..a7ba027c55 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -94,12 +94,19 @@ class Account < ApplicationRecord # Remote user validations, also applies to internal actors validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { (!local? || actor_type == 'Application') && will_save_change_to_username? } + # Remote user validations + validates :uri, presence: true, unless: :local?, on: :create + # Local user validations validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } validates :display_name, length: { maximum: 30 }, if: -> { local? && will_save_change_to_display_name? } validates :note, note_length: { maximum: 500 }, if: -> { local? && will_save_change_to_note? } validates :fields, length: { maximum: 6 }, if: -> { local? && will_save_change_to_fields? } + validates :uri, absence: true, if: :local?, on: :create + validates :inbox_url, absence: true, if: :local?, on: :create + validates :shared_inbox_url, absence: true, if: :local?, on: :create + validates :followers_url, absence: true, if: :local?, on: :create scope :remote, -> { where.not(domain: nil) } scope :local, -> { where(domain: nil) } diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index 5ebb9aa25a..3a5f0e1589 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -4,7 +4,7 @@ class StatusRelationshipsPresenter PINNABLE_VISIBILITIES = %w(public public_unlisted unlisted login private).freeze attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map, - :bookmarks_map, :filters_map, :emoji_reactions_map + :bookmarks_map, :filters_map, :emoji_reactions_map, :attributes_map def initialize(statuses, current_account_id = nil, **options) @current_account_id = current_account_id @@ -23,13 +23,14 @@ class StatusRelationshipsPresenter conversation_ids = statuses.filter_map(&:conversation_id).uniq pinnable_status_ids = statuses.map(&:proper).filter_map { |s| s.id if s.account_id == current_account_id && PINNABLE_VISIBILITIES.include?(s.visibility) } - @filters_map = build_filters_map(statuses, current_account_id).merge(options[:filters_map] || {}) - @reblogs_map = Status.reblogs_map(status_ids, current_account_id).merge(options[:reblogs_map] || {}) - @favourites_map = Status.favourites_map(status_ids, current_account_id).merge(options[:favourites_map] || {}) - @bookmarks_map = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {}) - @mutes_map = Status.mutes_map(conversation_ids, current_account_id).merge(options[:mutes_map] || {}) - @pins_map = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {}) + @filters_map = build_filters_map(statuses, current_account_id).merge(options[:filters_map] || {}) + @reblogs_map = Status.reblogs_map(status_ids, current_account_id).merge(options[:reblogs_map] || {}) + @favourites_map = Status.favourites_map(status_ids, current_account_id).merge(options[:favourites_map] || {}) + @bookmarks_map = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {}) + @mutes_map = Status.mutes_map(conversation_ids, current_account_id).merge(options[:mutes_map] || {}) + @pins_map = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {}) @emoji_reactions_map = Status.emoji_reactions_map(status_ids, current_account_id).merge(options[:emoji_reactions_map] || {}) + @attributes_map = options[:attributes_map] || {} end end diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index e31636ccb6..1b4dec20dc 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -101,9 +101,17 @@ class REST::StatusSerializer < ActiveModel::Serializer status_reference_ids.size end + def reblogs_count + relationships&.attributes_map&.dig(object.id, :reblogs_count) || object.reblogs_count + end + + def favourites_count + relationships&.attributes_map&.dig(object.id, :favourites_count) || object.favourites_count + end + def favourited - if instance_options && instance_options[:relationships] - instance_options[:relationships].favourites_map[object.id] || false + if relationships + relationships.favourites_map[object.id] || false else current_user.account.favourited?(object) end @@ -125,40 +133,40 @@ class REST::StatusSerializer < ActiveModel::Serializer end def reblogged - if instance_options && instance_options[:relationships] - instance_options[:relationships].reblogs_map[object.id] || false + if relationships + relationships.reblogs_map[object.id] || false else current_user.account.reblogged?(object) end end def muted - if instance_options && instance_options[:relationships] - instance_options[:relationships].mutes_map[object.conversation_id] || false + if relationships + relationships.mutes_map[object.conversation_id] || false else current_user.account.muting_conversation?(object.conversation) end end def bookmarked - if instance_options && instance_options[:relationships] - instance_options[:relationships].bookmarks_map[object.id] || false + if relationships + relationships.bookmarks_map[object.id] || false else current_user.account.bookmarked?(object) end end def pinned - if instance_options && instance_options[:relationships] - instance_options[:relationships].pins_map[object.id] || false + if relationships + relationships.pins_map[object.id] || false else current_user.account.pinned?(object) end end def filtered - if instance_options && instance_options[:relationships] - instance_options[:relationships].filters_map[object.id] || [] + if relationships + relationships.filters_map[object.id] || [] else current_user.account.status_matches_filters(object) end @@ -183,6 +191,12 @@ class REST::StatusSerializer < ActiveModel::Serializer object.active_mentions.to_a.sort_by(&:id) end + private + + def relationships + instance_options && instance_options[:relationships] + end + class ApplicationSerializer < ActiveModel::Serializer attributes :name, :website diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 791107f66f..476dabdd77 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -82,7 +82,7 @@ class ActivityPub::ProcessAccountService < BaseService set_immediate_protocol_attributes! - @account.save + @account.save! end def update_account diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index d0897221db..57d944b57a 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -47,7 +47,7 @@ %label.batch-table__toolbar__select.batch-checkbox-all = check_box_tag :batch_checkbox_all, nil, false .batch-table__toolbar__actions - - if @accounts.any? { |account| account.user_pending? } + - if @accounts.any?(&:user_pending?) = f.button safe_join([fa_icon('check'), t('admin.accounts.approve')]), name: :approve, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } = f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } diff --git a/app/views/admin/reports/actions/preview.html.haml b/app/views/admin/reports/actions/preview.html.haml index 70edb48d80..eb67eebe0d 100644 --- a/app/views/admin/reports/actions/preview.html.haml +++ b/app/views/admin/reports/actions/preview.html.haml @@ -32,7 +32,7 @@ .fields-group = text_area_tag :text, nil, placeholder: t('admin.reports.summary.warning_placeholder') - - if !@report.other? + - unless @report.other? %p %strong= t('user_mailer.warning.reason') = t("user_mailer.warning.categories.#{@report.category}") diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml index 248718a73d..e94847d674 100644 --- a/app/views/admin/reports/index.html.haml +++ b/app/views/admin/reports/index.html.haml @@ -27,7 +27,7 @@ %button.button= t('admin.accounts.search') = link_to t('admin.accounts.reset'), admin_reports_path, class: 'button negative' -- @reports.group_by(&:target_account_id).each do |target_account_id, reports| +- @reports.group_by(&:target_account_id).each do |_target_account_id, reports| - target_account = reports.first.target_account .report-card .report-card__profile diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml index a286aaec33..2dd93d028c 100644 --- a/app/views/admin/reports/show.html.haml +++ b/app/views/admin/reports/show.html.haml @@ -92,7 +92,7 @@ = t('simple_form.yes') - else = t('simple_form.no') - - if !@report.action_taken_by_account.nil? + - if @report.action_taken_by_account.present? .report-header__details__item .report-header__details__item__header %strong= t('admin.reports.action_taken_by') diff --git a/app/views/auth/registrations/_session.html.haml b/app/views/auth/registrations/_session.html.haml new file mode 100644 index 0000000000..11eae566fa --- /dev/null +++ b/app/views/auth/registrations/_session.html.haml @@ -0,0 +1,16 @@ +%tr + %td + %span{ title: session.user_agent }< + = fa_icon "#{session_device_icon(session)} fw", 'aria-label': session_device_icon(session) + = ' ' + = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: session.browser.to_s), platform: t("sessions.platforms.#{session.platform}", default: session.platform.to_s) + %td + %samp= session.ip + %td + - if current_session.session_id == session.session_id + = t 'sessions.current_session' + - else + %time.time-ago{ datetime: session.updated_at.iso8601, title: l(session.updated_at) }= l(session.updated_at) + %td + - if current_session.session_id != session.session_id && !current_account.suspended? + = table_link_to 'times', t('sessions.revoke'), settings_session_path(session), method: :delete diff --git a/app/views/auth/registrations/_sessions.html.haml b/app/views/auth/registrations/_sessions.html.haml index 55d753c18a..929129a5a1 100644 --- a/app/views/auth/registrations/_sessions.html.haml +++ b/app/views/auth/registrations/_sessions.html.haml @@ -14,21 +14,4 @@ %th= t 'sessions.activity' %th %tbody - - @sessions.each do |session| - %tr - %td - %span{ title: session.user_agent }< - = fa_icon "#{session_device_icon(session)} fw", 'aria-label': session_device_icon(session) - = ' ' - = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: session.browser.to_s), platform: t("sessions.platforms.#{session.platform}", default: session.platform.to_s) - %td - %samp= session.ip - %td - - if current_session.session_id == session.session_id - = t 'sessions.current_session' - - else - %time.time-ago{ datetime: session.updated_at.iso8601, title: l(session.updated_at) }= l(session.updated_at) - %td - - if current_session.session_id != session.session_id && !current_account.suspended? - = table_link_to 'times', t('sessions.revoke'), settings_session_path(session), method: :delete - + = render partial: 'session', collection: sessions diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml index 27d3f331eb..3e9b0cb6bd 100644 --- a/app/views/auth/registrations/edit.html.haml +++ b/app/views/auth/registrations/edit.html.haml @@ -30,7 +30,7 @@ %hr.spacer/ -= render 'sessions' += render partial: 'sessions', object: @sessions - unless current_account.suspended? %hr.spacer/ diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 1329129e78..648a64d4d3 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -29,7 +29,7 @@ = stylesheet_pack_tag 'common', media: 'all', crossorigin: 'anonymous' = stylesheet_pack_tag current_theme, media: 'all', crossorigin: 'anonymous' = javascript_pack_tag 'common', crossorigin: 'anonymous' - = preload_pack_asset "locale/#{I18n.locale}-json.js", crossorigin: 'anonymous' + = preload_pack_asset "locale/#{I18n.locale}-json.js" = csrf_meta_tags unless skip_csrf_meta_tags? %meta{ name: 'style-nonce', content: request.content_security_policy_nonce } diff --git a/app/views/layouts/embedded.html.haml b/app/views/layouts/embedded.html.haml index 3ec091ec8a..c6450608e4 100644 --- a/app/views/layouts/embedded.html.haml +++ b/app/views/layouts/embedded.html.haml @@ -15,7 +15,7 @@ = stylesheet_pack_tag 'common', media: 'all', crossorigin: 'anonymous' = stylesheet_pack_tag Setting.default_settings['theme'], media: 'all', crossorigin: 'anonymous' = javascript_pack_tag 'common', integrity: true, crossorigin: 'anonymous' - = preload_pack_asset "locale/#{I18n.locale}-json.js", crossorigin: 'anonymous' + = preload_pack_asset "locale/#{I18n.locale}-json.js" = render_initial_state = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous' %body.embed diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml index 4ea3d2c45e..c85253ac08 100644 --- a/app/views/notification_mailer/_status.html.haml +++ b/app/views/notification_mailer/_status.html.haml @@ -33,7 +33,7 @@ .auto-dir = status_content_format(status) - - if status.ordered_media_attachments.size > 0 + - if status.ordered_media_attachments.size.positive? %p - status.ordered_media_attachments.each do |a| - if status.local? diff --git a/app/views/settings/applications/_fields.html.haml b/app/views/settings/applications/_fields.html.haml index f4deb5b6ff..4f5077d831 100644 --- a/app/views/settings/applications/_fields.html.haml +++ b/app/views/settings/applications/_fields.html.haml @@ -14,5 +14,5 @@ %label= t('activerecord.attributes.doorkeeper/application.scopes') %span.hint= t('simple_form.hints.defaults.scopes') - - Doorkeeper.configuration.scopes.group_by { |s| s.split(':').first }.each do |k, v| - = f.input :scopes, label: false, hint: false, collection: v.sort, wrapper: :with_block_label, include_blank: false, label_method: ->(scope) { safe_join([content_tag(:samp, scope, class: class_for_scope(scope)), content_tag(:span, t("doorkeeper.scopes.#{scope}"), class: 'hint')]) }, selected: f.object.scopes.all, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + - Doorkeeper.configuration.scopes.group_by { |s| s.split(':').first }.each do |_key, value| + = f.input :scopes, label: false, hint: false, collection: value.sort, wrapper: :with_block_label, include_blank: false, label_method: ->(scope) { safe_join([content_tag(:samp, scope, class: class_for_scope(scope)), content_tag(:span, t("doorkeeper.scopes.#{scope}"), class: 'hint')]) }, selected: f.object.scopes.all, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index 10b80b5ec2..478ccdb1e6 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -65,7 +65,7 @@ %h4= t 'appearance.sensitive_content' .fields-group - = ff.input :'web.display_media', collection: ['default', 'show_all', 'hide_all'], label_method: ->(item) { t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label, label: I18n.t('simple_form.labels.defaults.setting_display_media') + = ff.input :'web.display_media', collection: %w(default show_all hide_all), label_method: ->(item) { t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label, label: I18n.t('simple_form.labels.defaults.setting_display_media') .fields-group = ff.input :'web.display_media_expand', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_display_media_expand'), hint: I18n.t('simple_form.hints.defaults.setting_display_media_expand') diff --git a/app/views/shared/_web_app.html.haml b/app/views/shared/_web_app.html.haml index 9a1c3dc0bf..e9ca541691 100644 --- a/app/views/shared/_web_app.html.haml +++ b/app/views/shared/_web_app.html.haml @@ -1,8 +1,8 @@ - content_for :header_tags do - if user_signed_in? - = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/compose.js' + = preload_pack_asset 'features/home_timeline.js' + = preload_pack_asset 'features/notifications.js' %meta{ name: 'initialPath', content: request.path } %meta{ name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key } diff --git a/app/views/statuses/_poll.html.haml b/app/views/statuses/_poll.html.haml index 21870af446..b537eb48ca 100644 --- a/app/views/statuses/_poll.html.haml +++ b/app/views/statuses/_poll.html.haml @@ -8,7 +8,7 @@ - poll.loaded_options.each_with_index do |option, index| %li - if show_results - - percent = total_votes_count > 0 ? 100 * option.votes_count / total_votes_count : 0 + - percent = total_votes_count.positive? ? 100 * option.votes_count / total_votes_count : 0 %label.poll__option>< %span.poll__number>< = "#{percent.round}%" diff --git a/app/views/statuses/_status.html.haml b/app/views/statuses/_status.html.haml index afeb55fafd..bf51b5ff7d 100644 --- a/app/views/statuses/_status.html.haml +++ b/app/views/statuses/_status.html.haml @@ -1,61 +1,2 @@ -:ruby - pinned ||= false - include_threads ||= false - is_predecessor ||= false - is_successor ||= false - direct_reply_id ||= false - parent_id ||= false - is_direct_parent = direct_reply_id == status.id - is_direct_child = parent_id == status.in_reply_to_id - centered ||= include_threads && !is_predecessor && !is_successor - h_class = microformats_h_class(status, is_predecessor, is_successor, include_threads) - style_classes = style_classes(status, is_predecessor, is_successor, include_threads) - mf_classes = microformats_classes(status, is_direct_parent, is_direct_child) - entry_classes = "#{h_class} #{mf_classes} #{style_classes}" - -- if status.reply? && include_threads - - if @next_ancestor - .entry{ class: entry_classes } - = link_to_older ActivityPub::TagManager.instance.url_for(@next_ancestor) - - = render partial: 'statuses/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id } - -.entry{ class: entry_classes } - - - if status.reblog? - .status__prepend - .status__prepend-icon-wrapper - %i.status__prepend-icon.fa.fa-fw.fa-retweet - %span - = link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'status__display-name muted' do - %bdi - %strong.emojify= display_name(status.account, custom_emojify: true) - = t('stream_entries.reblogged') - - elsif pinned - .status__prepend - .status__prepend-icon-wrapper - %i.status__prepend-icon.fa.fa-fw.fa-thumb-tack - %span - = t('stream_entries.pinned') - - = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, hide_show_thread: is_predecessor || is_successor - -- if include_threads - - if @since_descendant_thread_id - .entry{ class: entry_classes } - = link_to_newer short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1) - - @descendant_threads.each do |thread| - = render partial: 'statuses/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id } - - - if thread[:next_status] - .entry{ class: entry_classes } - = link_to_newer ActivityPub::TagManager.instance.url_for(thread[:next_status]) - - if @next_descendant_thread - .entry{ class: entry_classes } - = link_to_newer short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1) - -- if include_threads && !embedded_view? && !user_signed_in? - .entry{ class: entry_classes } - = link_to_login class: 'load-more load-gap' do - = fa_icon 'comments' - = t('statuses.sign_in_to_participate') +.entry + = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, hide_show_thread: false diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index cb00a62d5f..b3bb336ed2 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -68,6 +68,7 @@ ignore_unused: - 'imports.overwrite_preambles.{following,blocking,muting,domain_blocking,bookmarks}_html' - 'imports.preambles.{following,blocking,muting,domain_blocking,bookmarks}_html' - 'mail_subscriptions.unsubscribe.emails.*' + - 'preferences.other' # some locales are missing other keys, therefore leading i18n-tasks to detect `preferences` as plural and not finding use ignore_inconsistent_interpolations: - '*.one' diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index 2e402bbd75..2d5624edd3 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -15,6 +15,7 @@ assets_host ||= host_to_url(base_host) media_host = host_to_url(ENV['S3_ALIAS_HOST']) media_host ||= host_to_url(ENV['S3_CLOUDFRONT_HOST']) +media_host ||= host_to_url(ENV['AZURE_ALIAS_HOST']) media_host ||= host_to_url(ENV['S3_HOSTNAME']) if ENV['S3_ENABLED'] == 'true' media_host ||= assets_host diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index f2da410dbe..12d8d69341 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -131,6 +131,26 @@ elsif ENV['SWIFT_ENABLED'] == 'true' fog_host: ENV['SWIFT_OBJECT_URL'], fog_public: true ) +elsif ENV['AZURE_ENABLED'] == 'true' + require 'paperclip-azure' + + Paperclip::Attachment.default_options.merge!( + storage: :azure, + azure_options: { + protocol: 'https', + }, + azure_credentials: { + storage_account_name: ENV['AZURE_STORAGE_ACCOUNT'], + storage_access_key: ENV['AZURE_STORAGE_ACCESS_KEY'], + container: ENV['AZURE_CONTAINER_NAME'], + } + ) + if ENV.has_key?('AZURE_ALIAS_HOST') + Paperclip::Attachment.default_options.merge!( + url: ':azure_alias_url', + azure_host_alias: ENV['AZURE_ALIAS_HOST'] + ) + end else Paperclip::Attachment.default_options.merge!( storage: :filesystem, diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index d6149ad261..c5b9d364b0 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -52,3 +52,7 @@ da: position: elevated: kan ikke være højere end din aktuelle rolle own_role: kan ikke ændres med din aktuelle rolle + webhook: + attributes: + events: + invalid_permissions: kan ikke inkludere begivenheder, du ikke har rettigheder til diff --git a/config/locales/activerecord.fr-QC.yml b/config/locales/activerecord.fr-QC.yml index f78eabcc2a..113f2a6d29 100644 --- a/config/locales/activerecord.fr-QC.yml +++ b/config/locales/activerecord.fr-QC.yml @@ -52,3 +52,7 @@ fr-QC: position: elevated: ne peut pas être supérieur à votre rôle actuel own_role: ne peut pas être modifié avec votre rôle actuel + webhook: + attributes: + events: + invalid_permissions: ne peut pas inclure des évènements pour lesquels vous n’avez pas les droits diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index 51d3e531b7..345097ca46 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -52,3 +52,7 @@ fr: position: elevated: ne peut pas être supérieur à votre rôle actuel own_role: ne peut pas être modifié avec votre rôle actuel + webhook: + attributes: + events: + invalid_permissions: ne peut pas inclure des évènements pour lesquels vous n’avez pas les droits diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index bfa4f69758..72c45d3580 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -52,3 +52,7 @@ pt-PT: position: elevated: não pode ser maior que o da sua função atual own_role: não pode ser alterado com a sua função atual + webhook: + attributes: + events: + invalid_permissions: não pode incluir eventos para os quais não tem permissão diff --git a/config/locales/activerecord.sa.yml b/config/locales/activerecord.sa.yml index 7181f6180e..b9868c4b85 100644 --- a/config/locales/activerecord.sa.yml +++ b/config/locales/activerecord.sa.yml @@ -1,3 +1,4 @@ +--- sa: activerecord: attributes: diff --git a/config/locales/af.yml b/config/locales/af.yml index fd64f52cbf..c7b20c12d5 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -95,9 +95,7 @@ af: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. exports: bookmarks: Boekmerke diff --git a/config/locales/an.yml b/config/locales/an.yml index 967b223d44..e46dcd3ef1 100644 --- a/config/locales/an.yml +++ b/config/locales/an.yml @@ -1487,8 +1487,7 @@ an: show_newer: Amostrar mas recients show_older: Amostrar mas antigos show_thread: Amostrar discusión - sign_in_to_participate: Rechistra-te pa participar en a conversación - title: '%{name}: «%{quote}»' + title: "%{name}: «%{quote}»" visibilities: direct: Directa private: Nomás amostrar a seguidores @@ -1532,8 +1531,6 @@ an: min_reblogs: Mantener publicacions reblogueadas mas de min_reblogs_hint: No borra garra d'as publicacions que haigan estau reblogueadas mas d'este numero de vegadas. Deixa en blanco pa eliminar publicacions sin importar lo numero de reblogueos stream_entries: - pinned: Publicación fixada - reblogged: retutau sensitive_content: Conteniu sensible strikes: errors: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 3679490588..25c8665c04 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -873,12 +873,12 @@ ar: no_status_selected: لم يتم تغيير أي منشورات متداوله حيث لم يتم اختيار أي منهم not_discoverable: الكاتب لم يختار أن يكون قابلا للاكتشاف shared_by: - zero: لم يتم مشاركته أو تفضيله مطلقًا - one: تمت مشاركته وتفضيله مرة واحدة - two: تمت مشاركته وتفضيله مرتين few: تمت مشاركته وتفضيله %{friendly_count} مرات many: تمت مشاركته وتفضيله %{friendly_count} مرات + one: تمت مشاركته وتفضيله مرة واحدة other: تمت مشاركته وتفضيله %{friendly_count} مرات + two: تمت مشاركته وتفضيله مرتين + zero: لم يتم مشاركته أو تفضيله مطلقًا title: المنشورات المتداولة tags: current_score: التقييم الحالي %{score} @@ -1325,6 +1325,9 @@ ar: failed_sign_in_html: فشل محاولة تسجيل الدخول مع %{method} من %{ip} (%{browser}) successful_sign_in_html: تم تسجيل الدخول بنجاح مع %{method} من %{ip} (%{browser}) title: تاريخ المصادقة + mail_subscriptions: + unsubscribe: + complete: إلغاء الاشتراك media_attachments: validations: images_and_video: ليس بالإمكان إرفاق فيديو في منشور يحتوي مسبقا على صور @@ -1619,7 +1622,6 @@ ar: show_newer: إظهار أحدث show_older: إظهار أقدم show_thread: اعرض خيط المحادثة - sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة title: '%{name}: "%{quote}"' visibilities: direct: مباشرة @@ -1665,8 +1667,6 @@ ar: min_reblogs: إبقاء المشاركات المعززة أكثر من min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات المشاركة stream_entries: - pinned: منشور مثبّت - reblogged: شارَكَه sensitive_content: محتوى حساس strikes: errors: diff --git a/config/locales/be.yml b/config/locales/be.yml index 4ac637d801..4464b0f9c2 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -1697,7 +1697,6 @@ be: show_newer: Паказаць навейшыя show_older: Паказаць старэйшыя show_thread: Паказаць ланцуг - sign_in_to_participate: Зарэгіструйцеся каб удзельнічаць у абмеркаванні title: '%{name}: "%{quote}"' visibilities: direct: Асабіста @@ -1743,8 +1742,6 @@ be: min_reblogs: Захаваць допісы, якія пашырылі хаця б min_reblogs_hint: Не выдаляе вашыя допісы, якія пашырыла прынамсі вызначаная колькасць людзей. Пакіньце гэтае поле пустым, каб допісы выдаляліся незалежна ад гэтай колькасці stream_entries: - pinned: Замацаваны допіс - reblogged: пашыраны sensitive_content: Далікатны змест strikes: errors: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index d27ff0cc6c..ac03d03902 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -1633,8 +1633,7 @@ bg: show_newer: Показване на по-нови show_older: Показване на по-стари show_thread: Показване на нишката - sign_in_to_participate: Влезте, за да участвате в разговора - title: '%{name}: „%{quote}“' + title: "%{name}: „%{quote}“" visibilities: direct: Директно private: Покажи само на последователите си @@ -1679,8 +1678,6 @@ bg: min_reblogs: Запазване на публикации с поне толкова споделяния min_reblogs_hint: Не се изтриват ваши публикации, споделени поне толкова пъти. Оставете празно, за да изтриете публикациите независимо от техния брой споделяния stream_entries: - pinned: Закачена публикация - reblogged: подсилено sensitive_content: Деликатно съдържание strikes: errors: diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 68fadab8b5..de4163f995 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -229,9 +229,7 @@ bn: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. verification: verification: সত্যতা নির্ধারণ diff --git a/config/locales/br.yml b/config/locales/br.yml index 370f29c38e..6a7158f1ce 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -338,9 +338,7 @@ br: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. exports: archive_takeout: @@ -503,9 +501,6 @@ br: '604800': 1 sizhunvezh '63113904': 2 vloavezh '7889238': 3 months - stream_entries: - pinned: Toud spilhennet - reblogged: en·he deus skignet themes: default: Mastodoñ (Teñval) mastodon-light: Mastodoñ (Sklaer) diff --git a/config/locales/bs.yml b/config/locales/bs.yml index f0a4b049e9..ed854b0a08 100644 --- a/config/locales/bs.yml +++ b/config/locales/bs.yml @@ -5,7 +5,5 @@ bs: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/ca.yml b/config/locales/ca.yml index c06be3398a..11084e5b6b 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1633,7 +1633,6 @@ ca: show_newer: Mostra els més nous show_older: Mostra els més vells show_thread: Mostra el fil - sign_in_to_participate: Inicia la sessió per participar a la conversa title: '%{name}: "%{quote}"' visibilities: direct: Directe @@ -1679,8 +1678,6 @@ ca: min_reblogs: Mantenir les publicacions impulsades més de min_reblogs_hint: No suprimeix cap de les teves publicacions que s'hagin impulsat més que aquest nombre de vegades. Deixa-ho en blanc per a suprimir les publicacions independentment del nombre d'impulsos que tinguin. stream_entries: - pinned: Publicació fixada - reblogged: ha impulsat sensitive_content: Contingut sensible strikes: errors: @@ -1782,6 +1779,8 @@ ca: signed_in_as: 'Sessió iniciada com a:' verification: extra_instructions_html: Consell: l'enllaç al vostre lloc web pot ser invisible. La part important és rel="me" que evita que us suplantin la identitat a llocs web amb contingut generat pels usuaris. Fins i tot podeu generar una etiqueta link a la capçalera de la pàgina en comptes d'una a, però el codi HTML ha de ser accessible sense requerir executar JavaScript. + here_is_how: Així és com + hint_html: "Verifikimi i identitetit të secilit në Mastodon është për këdo. Bazuar në standarde web të hapët, falas për so dhe për mot. Krejt ç’ju duhet është një sajt personal me të cilin ju njohin njerëzit. Kur bëni lidhjen me këtë sajt që nga profili juaj, do të kontrollojmë nëse sajti përgjigjet me një lidhje për te profili juaj dhe shfaq një tregues në të." instructions_html: Copieu i enganxeu el següent codi HTML al vostre lloc web. Després, afegiu l'adreça del vostre lloc web dins d'un dels camps extres del vostre perfil i deseu els canvis. verification: Verificació verified_links: Els teus enllaços verificats diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 459cc2ef31..5875a2a015 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -995,7 +995,6 @@ ckb: show_newer: نوێتر پیشان بدە show_older: پیشاندانی کۆنتر show_thread: نیشاندانی ڕشتە - sign_in_to_participate: بچۆ ژوورەوە بۆ بەشداریکردن لە گفتوگۆکەدا visibilities: private: شوێنکەوتوانی تەنها private_long: تەنها بۆ شوێنکەوتوانی پیشان بدە @@ -1004,8 +1003,6 @@ ckb: unlisted: پێرست نەبووە unlisted_long: هەموو کەس دەتوانێت بیبینێت، بەڵام لە هێڵی کاتی گشتی دا نەریزراوە stream_entries: - pinned: توتی چەسپکراو - reblogged: بەهێزکردن sensitive_content: ناوەڕۆکی هەستیار tags: does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە diff --git a/config/locales/co.yml b/config/locales/co.yml index 6992eaca58..39db6df348 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -982,7 +982,6 @@ co: show_newer: Vede i più ricenti show_older: Vede i più anziani show_thread: Vede u filu - sign_in_to_participate: Cunnettatevi per participà à a cunversazione title: '%{name}: "%{quote}"' visibilities: direct: Direttu @@ -1020,8 +1019,6 @@ co: min_reblogs: Cunservà i statuti spartuti più di min_reblogs_hint: Ùn sguassa micca i vostri statuti chì anu ricevuti più chì stu numeru di spartere. Lasciate viotu per sguassà i statuti senza piglià in contu u numaru di spartere stream_entries: - pinned: Statutu puntarulatu - reblogged: hà spartutu sensitive_content: Cuntenutu sensibile tags: does_not_match_previous_name: ùn currisponde micca à l'anzianu nome diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 157d52b536..79c40c1eb7 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1641,8 +1641,7 @@ cs: show_newer: Zobrazit novější show_older: Zobrazit starší show_thread: Zobrazit vlákno - sign_in_to_participate: Chcete-li se zúčastnit této konverzace, přihlaste se - title: '%{name}: „%{quote}“' + title: "%{name}: „%{quote}“" visibilities: direct: Přímé private: Pouze pro sledující @@ -1687,8 +1686,6 @@ cs: min_reblogs: Zachovat příspěvky boostnuté alespoň min_reblogs_hint: Nesmaže žádný z vašich příspěvků, který byl boostnut alespoň tolikrát. Ponechte prázdné pro mazání příspěvků bez ohledu na počet jejich boostnutí stream_entries: - pinned: Připnutý příspěvek - reblogged: boostnul sensitive_content: Citlivý obsah strikes: errors: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 8c3b84be48..a9e7ab4aa2 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -513,6 +513,8 @@ cy: few: Ymdrechion wedi methu ar %{count} diwrnod gwahanol. many: Ymdrechion wedi methu ar %{count} diwrnod gwahanol. other: Ymdrechion wedi methu ar %{count} diwrnod gwahanol. + two: Ymdrechion wedi methu ar %{count} ddiwrnod gwahanol. + zero: Ymdrechion wedi methu ar %{count} o ddyddiau gwahanol. no_failures_recorded: Dim methiannau wedi'u cofnodi. title: Argaeledd warning: Bu'r ymgais olaf i gysylltu â'r gweinydd hwn yn aflwyddiannus @@ -1333,6 +1335,8 @@ cy: few: Mae pob un o'r %{count} eitem sy'n cyfateb i'ch chwiliad wedi'u dewis. many: Mae pob un o'r %{count} eitem sy'n cyfateb i'ch chwiliad wedi'u dewis. other: Mae pob un o'r %{count} eitem sy'n cyfateb i'ch chwiliad wedi'u dewis. + two: Mae pob un o'r %{count} eitem sy'n cyfateb i'ch chwiliad wedi'u dewis. + zero: Does %{count} o eitemau sy'n cyfateb i'ch chwiliad wedi'u dewis. cancel: Diddymu changes_saved_msg: Llwyddwyd i gadw'r newidiadau! confirm: Cadarnhau @@ -1761,7 +1765,6 @@ cy: show_newer: Dangos y diweddaraf show_older: Dangos pethau hŷn show_thread: Dangos trywydd - sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs title: '%{name}: "%{quote}"' visibilities: direct: Uniongyrchol @@ -1807,8 +1810,6 @@ cy: min_reblogs: Cadw postiadau wedi eu hybu o leiaf min_reblogs_hint: Nid yw'n dileu unrhyw un o'ch postiadau sydd wedi cael eu hybu o leiaf y nifer hwn o weithiau. Gadewch yn wag i ddileu postiadau waeth beth fo'u nifer o hybiadau stream_entries: - pinned: Postiad wedi'i binio - reblogged: hybwyd sensitive_content: Cynnwys sensitif strikes: errors: diff --git a/config/locales/da.yml b/config/locales/da.yml index 4d3c47da92..aac8268ef8 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -381,6 +381,15 @@ da: undo: Forbyd federering med domæne domain_blocks: add_new: Tilføj ny domæneblokering + confirm_suspension: + cancel: Fortryd + confirm: Suspendér + permanent_action: Fortrydelse af suspensionen vil ikke genoprette nogen data eller sammenhæng. + preamble_html: Du er ved at suspendere %{domain} og dets underdomæner. + remove_all_data: Dette vil fjerne alt indhold, medier og profildata for dette domænes konti fra din server. + stop_communication: Din server vil stoppe kommunikationen med disse servere. + title: Annullér domæneblokering for domænet %{domain} + undo_relationships: Dette vil fortryde ethvert følgeforhold mellem konti for disse servere og din. created_msg: Domæneblokering under behandling destroyed_msg: Domæneblokering er blevet fjernet domain: Domæne @@ -730,6 +739,9 @@ da: branding: preamble: Serverens branding adskiller den fra andres i netværket. Oplysningerne kan vises på tværs af div. miljøer, såsom Mastodon-webgrænsefladen, dedikerede applikationer, i-link forhåndsvisninger på andre websteder og i besked-apps mv. Oplysningerne bør derfor være klare og detaljerede, men samtidig kortfattede. title: Branding + captcha_enabled: + desc_html: Dette er afhængig af eksterne scripts fra hCaptcha, som kan være en sikkerhed og privatlivets fred. Derudover kan dette gøre registreringsprocessen betydeligt mindre tilgængelig for nogle (især deaktiveret) personer. Af disse grunde bedes De overveje alternative foranstaltninger såsom godkendelsesbaseret eller inviteret til at blive registreret. + title: Kræv nye brugere for at løse en CAPTCHA for at bekræfte deres konto content_retention: preamble: Styr, hvordan Mastodon gemmer brugergenereret indhold. title: Indholdsopbevaring @@ -965,6 +977,7 @@ da: notification_preferences: Skift e-mailpræferencer salutation: "%{name}" settings: 'Skift e-mailpræferencer: %{link}' + unsubscribe: Opsig abonnement view: 'Vis:' view_profile: Vis profil view_status: Vis status @@ -978,6 +991,10 @@ da: your_token: Dit adgangstoken auth: apply_for_account: Anmod om en konto + captcha_confirmation: + help_html: Hvis du har problemer med at løse CAPTCHA, kan du komme i kontakt med os via %{email} og vi kan hjælpe dig. + hint_html: Bare en ting mere! Vi er nødt til at bekræfte, at du er et menneske (dette er, så vi kan holde spam ud!). Løs CAPTCHA nedenfor og klik på "Fortsæt". + title: Sikkerhedstjek confirmations: wrong_email_hint: Er denne e-mailadresse ikke korrekt, kan den ændres i kontoindstillinger. delete_account: Slet konto @@ -1014,8 +1031,11 @@ da: rules: accept: Acceptér back: Tilbage + invited_by: 'Du kan tilmelde dig %{domain} takket være den invitation, du har modtaget fra:' preamble: Disse er opsat og håndhæves af %{domain}-moderatorerne. + preamble_invited: Før du fortsætter, bedes du overveje de grundregler, der er fastsat af moderatorerne af %{domain}. title: Nogle grundregler. + title_invited: Du er blevet spiddet! security: Sikkerhed set_new_password: Opsæt ny adgangskode setup: @@ -1128,6 +1148,11 @@ da: your_appeal_rejected: Din appel er afvist domain_validator: invalid_domain: er ikke et gyldigt domænenavn + edit_profile: + basic_information: Oplysninger + hint_html: "Tilpas hvad folk ser på din offentlige profil og ved siden af dine indlæg. Andre personer vil mere sandsynligt følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede." + other: Andre + safety_and_privacy: Sikkerhed og Privatliv errors: '400': Din indsendte anmodning er ugyldig eller fejlbehæftet. '403': Du har ikke tilladelse til at se denne side. @@ -1322,6 +1347,21 @@ da: failed_sign_in_html: Mislykket indlogning med %{method} fra %{ip} (%{browser}) successful_sign_in_html: Gennemført indlogning med %{method} fra %{ip} (%{browser}) title: Godkendelseshistorik + mail_subscriptions: + unsubscribe: + action: Ja, afmeld + complete: Frameldt + confirmation_html: Er du sikker på, at du vil afmelde dig fra at modtage %{type} for Mastodon på %{domain} til din e-mail på %{email}? Du kan altid gentilmelde dig dine e-mail-notifikationsindstillinger. + emails: + notification_emails: + favourite: favorit notifikations e-mails + follow: favorit notifikations e-mails + follow_request: følg anmodning e-mails + mention: favorit notifikations e-mails + reblog: favorit notifikations e-mails + resubscribe_html: Hvis du ved en fejl har afmeldt dig, kan du gentilmelde dig dine e-mail-notifikationsindstillinger. + success_html: Du vil ikke længere modtage %{type} for Mastodon på %{domain} til din e-mail på %{email}. + title: Opsig abonnement media_attachments: validations: images_and_video: En video kan ikke vedhæftes et indlæg med billedindhold @@ -1437,6 +1477,7 @@ da: expired: Afstemningen er allerede afsluttet invalid_choice: Den valgte stemmemulighed findes ikke over_character_limit: må maks. udgøre %{max} tegn hver + self_vote: Du kan ikke stemme på dit eget indlæg. too_few_options: skal have flere end ét valg too_many_options: for mange svar (maks. %{max}) preferences: @@ -1592,7 +1633,6 @@ da: show_newer: Vis nyere show_older: Vis ældre show_thread: Vis tråd - sign_in_to_participate: Log ind for at deltage i konversationen title: '%{name}: "%{quote}"' visibilities: direct: Direkte @@ -1638,8 +1678,6 @@ da: min_reblogs: Behold indlæg boostet mindst min_reblogs_hint: Sletter ingen egne indlæg, som er boostet flere end dette antal gange. Lad stå tomt for at ignorere denne tærskel under sletning stream_entries: - pinned: Fastgjort indlæg - reblogged: boostet sensitive_content: Sensitivt indhold strikes: errors: @@ -1740,7 +1778,12 @@ da: seamless_external_login: Du er logget ind via en ekstern tjeneste, så adgangskode- og e-mailindstillinger er utilgængelige. signed_in_as: 'Logget ind som:' verification: + extra_instructions_html: Tip: Linket på din hjemmeside kan være usynligt. Den vigtige del er rel="me" , som forhindrer impersonation på websteder med brugergenereret indhold. Du kan endda bruge et link tag i overskriften på siden i stedet for a, men HTML skal være tilgængelig uden at udføre JavaScript. + here_is_how: Sådan gør du + hint_html: "Bekræftelse af din identitet på Mastodon er for alle. Baseret på åbne webstandarder, nu og for evigt gratis. Alt du behøver er en personlig hjemmeside, som folk genkende dig ved. Når du linker til denne hjemmeside fra din profil, vi vil kontrollere, at hjemmesiden linker tilbage til din profil og vise en visuel indikator på det." + instructions_html: Kopier og indsæt koden nedenfor i HTML på din hjemmeside. Tilføj derefter adressen på dit websted i et af de ekstra felter på din profil fra fanen "Rediger profil" og gem ændringer. verification: Bekræftelse + verified_links: "%d bekræftede links" webauthn_credentials: add: Tilføj ny sikkerhedsnøgle create: diff --git a/config/locales/de.yml b/config/locales/de.yml index 79027fb85f..cc0da6c777 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -644,13 +644,13 @@ de: delete_html: Die anstößigen Beiträge entfernen mark_as_sensitive_html: Medien der anstößigen Beiträge mit einer Inhaltswarnung versehen silence_html: Schränkt die Reichweite von @%{acct} stark ein, indem das Profil und dessen Inhalte nur für Personen sichtbar sind, die dem Profil bereits folgen oder es manuell aufrufen - suspend_html: @%{acct} sperren, sodass das Profil und dessen Inhalte nicht mehr zugänglich sind und keine Interaktion mehr möglich ist - close_report: 'Meldung Nr. %{id} als erledigt markieren' - close_reports_html: Alle Meldungen gegen @%{acct} als erledigt markieren + suspend_html: "@%{acct} sperren, sodass das Profil und dessen Inhalte nicht mehr zugänglich sind und keine Interaktion mehr möglich ist" + close_report: Meldung Nr. %{id} als erledigt markieren + close_reports_html: "Alle Meldungen gegen @%{acct} als erledigt markieren" delete_data_html: Das Profil und die Inhalte von @%{acct} werden in 30 Tagen gelöscht, es sei denn, sie werden in der Zwischenzeit entsperrt preview_preamble_html: "@%{acct} wird eine Warnung mit folgenden Inhalten erhalten:" record_strike_html: Einen Verstoß gegen @%{acct} eintragen, um bei zukünftigen Verstößen desselben Kontos besser reagieren zu können - send_email_html: @%{acct} eine Verwarnung per E-Mail senden + send_email_html: "@%{acct} eine Verwarnung per E-Mail senden" warning_placeholder: Optional zusätzliche Begründung für die Moderationsmaßnahme. target_origin: Domain des gemeldeten Kontos title: Meldungen @@ -1633,8 +1633,7 @@ de: show_newer: Neuere anzeigen show_older: Ältere anzeigen show_thread: Thread anzeigen - sign_in_to_participate: Melde dich an, um an der Unterhaltung teilzunehmen - title: '%{name}: „%{quote}“' + title: "%{name}: „%{quote}“" visibilities: direct: Direktnachricht private: Nur eigene Follower @@ -1679,8 +1678,6 @@ de: min_reblogs: Beiträge behalten, die mindestens so oft geteilt wurden min_reblogs_hint: Löscht keine Beiträge, die mindestens so oft geteilt worden sind. Lass das Feld leer, um alle Beiträge – unabhängig der Anzahl an geteilten Beiträgen – zu löschen stream_entries: - pinned: Angehefteter Beitrag - reblogged: teilte sensitive_content: Inhaltswarnung strikes: errors: diff --git a/config/locales/devise.fy.yml b/config/locales/devise.fy.yml index d15e95d26a..9483d15f19 100644 --- a/config/locales/devise.fy.yml +++ b/config/locales/devise.fy.yml @@ -7,7 +7,7 @@ fy: failure: already_authenticated: Jo binne al oanmeld. inactive: Jo account is noch net aktivearre. - invalid: '%{authentication_keys} of wachtwurd ûnjildich.' + invalid: "%{authentication_keys} of wachtwurd ûnjildich." last_attempt: Jo hawwe noch ien besykjen oer eardat jo account blokkearre wurdt. locked: Jo account is blokkearre. not_found_in_database: '%{authentication_keys} of wachtwurd ûnjildich.' @@ -21,7 +21,9 @@ fy: action_with_app: Befêstigje en nei %{app} tebekgean explanation: Jo hawwe in account op %{host} oanmakke en mei ien klik kinne jo dizze aktivearje. Wannear’t jo dizze account net oanmakke hawwe, meie jo dit e-mailberjocht negearje. explanation_when_pending: Jo freegje mei dit e-mailadres in útnûging oan foar %{host}. Neidat jo jo e-mailadres befêstige hawwe, beoardielje wy jo oanfraach. Jo kinne oant dan noch net oanmelde. Wannear’t jo oanfraach ôfwêzen wurdt, wurde jo gegevens fuortsmiten en hoege jo dêrnei fierder neat mear te dwaan. Wannear’t jo dit net wiene, kinne jo dit e-mailberjocht negearje. - extra_html: "128 / 5.000\nKontrolearje ek de regels fan de server en ús tsjinstbetingsten." + extra_html: |- + 128 / 5.000 + Kontrolearje ek de regels fan de server en ús tsjinstbetingsten. subject: 'Mastodon: Befêstigingsynstruksjes foar %{instance}' title: E-mailadres ferifiearje email_changed: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 27313beafc..8c2e04c581 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -43,7 +43,7 @@ zh-CN: action: 更改密码 explanation: 点击下面的链接来更改账户的密码。 extra: 如果你并没有请求本次变更,请忽略此邮件。你的密码只有在你点击上面的链接并输入新密码后才会更改。 - subject: 'Mastodon:重置密码说明' + subject: Mastodon:重置密码说明 title: 重置密码 two_factor_disabled: explanation: 账号的双重认证已禁用。现在仅使用邮箱和密码即可登录。 diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index 7b77270fa5..39fbc691ca 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -59,7 +59,7 @@ eo: error: title: Eraro okazis new: - prompt_html: "%{client_name} volas permeso por aliri vian konton. Se vi ne konfidu ĝin, ne rajtigu ĝin." + prompt_html: "%{client_name} petas permeson por aliri vian konton. Se vi ne fidas ĝin, ne rajtigu ĝin." review_permissions: Revizu permesojn title: Rajtigo bezonata show: diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml index be5c1714b5..f7c2d336a2 100644 --- a/config/locales/doorkeeper.fa.yml +++ b/config/locales/doorkeeper.fa.yml @@ -146,12 +146,17 @@ fa: application: title: درخواست اجازهٔ OAuth scopes: - "admin:read": خواندن تمام داده‌ها روی کارساز - "admin:read:accounts": خواندن اطّلاعات حساس از همهٔ حساب‌ها - "admin:read:reports": خواندن اطّلاعات حساس از همهٔ گزارش‌ها و حساب‌های گزارش‌شده - "admin:write": تغییر تمام داده‌ها روی کارساز - "admin:write:accounts": انجام کنش مدیریتی روی حساب‌ها - "admin:write:reports": انجام کنش مدیریتی روی گزارش‌ها + admin:read: خواندن تمام داده‌ها روی کارساز + admin:read:accounts: خواندن اطّلاعات حساس از همهٔ حساب‌ها + admin:read:domain_allows: خواندن اطّلاعات حساس از همهٔ دامنه ها اجازه داده شد + admin:read:domain_blocks: خواندن اطّلاعات حساس از همهٔ دامنه های مسدودشده + admin:read:email_domain_blocks: خواندن اطّلاعات حساس از همهٔ دامنه های رایانامه های مسدودشده + admin:read:ip_blocks: خواندن اطّلاعات حساس از همهٔ IPهای مسدودشده + admin:read:reports: خواندن اطّلاعات حساس از همهٔ گزارش‌ها و حساب‌های گزارش‌شده + admin:write: تغییر تمام داده‌ها روی کارساز + admin:write:accounts: انجام کنش مدیریتی روی حساب‌ها + admin:write:ip_blocks: انجام کنش مدیریتی روی مسدودسازی های IP + admin:write:reports: انجام کنش مدیریتی روی گزارش‌ها crypto: از رمزگذاری سرتاسر استفاده کنید follow: پیگیری، مسدودسازی، لغو مسدودسازی، و لغو پیگیری حساب‌ها push: دریافت آگاهی‌ای ارسالیتان diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml index 0edf15343e..fbf99849c9 100644 --- a/config/locales/doorkeeper.ko.yml +++ b/config/locales/doorkeeper.ko.yml @@ -179,16 +179,16 @@ ko: "read:search": 당신의 권한으로 검색 "read:statuses": 모든 게시물 보기 write: 계정 정보 수정 - "write:accounts": 프로필 수정 - "write:blocks": 계정 및 도메인 차단 - "write:bookmarks": 게시물을 북마크에 넣기 - "write:conversations": 뮤트 및 대화 삭제 - "write:favourites": 게시물 좋아요 - "write:filters": 필터 만들기 - "write:follows": 사람을 팔로우 - "write:lists": 리스트 만들기 - "write:media": 미디어 파일 업로드 - "write:mutes": 사람이나 대화 뮤트 - "write:notifications": 알림 모두 지우기 - "write:reports": 다른 사람을 신고 - "write:statuses": 게시물 게시 + write:accounts: 프로필 수정 + write:blocks: 계정 및 도메인 차단 + write:bookmarks: 게시물을 북마크에 넣기 + write:conversations: 뮤트 및 대화 삭제 + write:favourites: 게시물 좋아요 + write:filters: 필터 만들기 + write:follows: 사람을 팔로우 + write:lists: 리스트 만들기 + write:media: 미디어 파일 업로드 + write:mutes: 사람이나 대화 뮤트 + write:notifications: 알림 모두 지우기 + write:reports: 다른 사람을 신고 + write:statuses: 게시물 게시 diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml index b5ff8bde6e..7b949cce27 100644 --- a/config/locales/doorkeeper.zh-TW.yml +++ b/config/locales/doorkeeper.zh-TW.yml @@ -146,22 +146,22 @@ zh-TW: application: title: 需要 OAuth 授權 scopes: - "admin:read": 讀取伺服器的所有資料 - "admin:read:accounts": 讀取所有帳號的敏感內容 - "admin:read:canonical_email_blocks": 讀取所有電子郵件黑名單之敏感內容 - "admin:read:domain_allows": 讀取所有網域白名單之敏感內容 - "admin:read:domain_blocks": 讀取所有網域黑名單之敏感內容 - "admin:read:email_domain_blocks": 讀取所有電子郵件黑名單之敏感內容 - "admin:read:ip_blocks": 讀取所有 IP 黑名單之敏感內容 - "admin:read:reports": 讀取所有回報 / 被回報帳號之敏感內容 - "admin:write": 修改伺服器的所有資料 - "admin:write:accounts": 對帳號進行管理動作 - "admin:write:canonical_email_blocks": 對電子郵件黑名單進行管理動作 - "admin:write:domain_allows": 對網域白名單進行管理動作 - "admin:write:domain_blocks": 對網域黑名單進行管理動作 - "admin:write:email_domain_blocks": 對電子郵件黑名單進行管理動作 - "admin:write:ip_blocks": 對 IP 黑名單進行管理動作 - "admin:write:reports": 對報告進行管理動作 + admin:read: 讀取伺服器的所有資料 + admin:read:accounts: 讀取所有帳號的敏感內容 + admin:read:canonical_email_blocks: 讀取所有電子郵件黑名單之敏感內容 + admin:read:domain_allows: 讀取所有網域白名單之敏感內容 + admin:read:domain_blocks: 讀取所有網域黑名單之敏感內容 + admin:read:email_domain_blocks: 讀取所有電子郵件黑名單之敏感內容 + admin:read:ip_blocks: 讀取所有 IP 黑名單之敏感內容 + admin:read:reports: 讀取所有回報 / 被回報帳號之敏感內容 + admin:write: 修改伺服器的所有資料 + admin:write:accounts: 對帳號進行管理動作 + admin:write:canonical_email_blocks: 對電子郵件黑名單進行管理動作 + admin:write:domain_allows: 對網域白名單進行管理動作 + admin:write:domain_blocks: 對網域黑名單進行管理動作 + admin:write:email_domain_blocks: 對電子郵件黑名單進行管理動作 + admin:write:ip_blocks: 對 IP 黑名單進行管理動作 + admin:write:reports: 對報告進行管理動作 crypto: 使用端到端加密 follow: 修改帳號關係 push: 接收帳號的推播通知 diff --git a/config/locales/el.yml b/config/locales/el.yml index 5e74a2c5bf..6ccc9de0de 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1569,7 +1569,6 @@ el: show_newer: Εμφάνιση νεότερων show_older: Εμφάνιση παλαιότερων show_thread: Εμφάνιση νήματος - sign_in_to_participate: Συνδέσου για να συμμετάσχεις στη συζήτηση title: '%{name}: "%{quote}"' visibilities: direct: Άμεση @@ -1615,8 +1614,6 @@ el: min_reblogs: Διατήρηση αναρτήσεων που έχουν ενισχυθεί τουλάχιστον min_reblogs_hint: Δεν διαγράφει καμία από τις δημοσιεύσεις σας που έχει λάβει τουλάχιστον αυτόν τον αριθμό ενισχύσεων. Αφήστε κενό για να διαγράψετε δημοσιεύσεις ανεξάρτητα από τον αριθμό των ενισχύσεων stream_entries: - pinned: Καρφιτσωμένη ανάρτηση - reblogged: ενισχύθηκε sensitive_content: Ευαίσθητο περιεχόμενο strikes: errors: diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 37a3536fad..2b1cb0e92a 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1633,7 +1633,6 @@ en-GB: show_newer: Show newer show_older: Show older show_thread: Show thread - sign_in_to_participate: Sign in to participate in the conversation title: '%{name}: "%{quote}"' visibilities: direct: Direct @@ -1679,8 +1678,6 @@ en-GB: min_reblogs: Keep posts boosted at least min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts stream_entries: - pinned: Pinned post - reblogged: boosted sensitive_content: Sensitive content strikes: errors: diff --git a/config/locales/en.yml b/config/locales/en.yml index 9867ab6a58..19012a9b0b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -809,7 +809,7 @@ en: approved: Approval required for sign up none: Nobody can sign up open: Anyone can sign up - title: Server Settings + title: Server settings site_uploads: delete: Delete uploaded file destroyed_msg: Site upload successfully deleted! @@ -1746,7 +1746,6 @@ en: show_newer: Show newer show_older: Show older show_thread: Show thread - sign_in_to_participate: Login to participate in the conversation title: '%{name}: "%{quote}"' visibilities: direct: Direct @@ -1795,8 +1794,6 @@ en: min_reblogs: Keep posts boosted at least min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts stream_entries: - pinned: Pinned post - reblogged: boosted sensitive_content: Sensitive content strikes: errors: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index fd1c517a6d..1ee8d34a47 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -1236,7 +1236,7 @@ eo: other: %{count} eroj ĉe ĉi tiu paĝo elektitas. all_matching_items_selected_html: one: "%{count} ero kiu kongruas vian serĉon elektitas." - other: %{count} eroj kiuj kongruas vian serĉon elektitas. + other: "%{count} eroj kiuj kongruas vian serĉon elektitas." cancel: Nuligi changes_saved_msg: Ŝanĝoj sukcese konservitaj! confirm: Konfirmi @@ -1257,7 +1257,7 @@ eo: errors: empty: Malpena CSV-dosiero incompatible_type: Nekongrua kun la elektita importotipo - invalid_csv_file: 'Nevalida CSV-dosiero. %{error}' + invalid_csv_file: Nevalida CSV-dosiero. %{error} over_rows_processing_limit: enhavas pli ol %{count} vicoj too_large: La dosiero estas tro larĝa failures: Malsukcesoj @@ -1586,8 +1586,7 @@ eo: show_newer: Montri pli novajn show_older: Montri pli malnovajn show_thread: Montri la mesaĝaron - sign_in_to_participate: Ensalutu por partopreni la konversacion - title: '%{name}: “%{quote}”' + title: "%{name}: “%{quote}”" visibilities: direct: Rekta private: Montri nur al sekvantoj @@ -1632,8 +1631,6 @@ eo: min_reblogs: Konservi diskonitajn mesaĝojn almenau min_reblogs_hint: Oni ne forigas viajn afiŝojn kiuj estas diskonigitaj almenaŭ ĉi tiun nombron da fojoj. Lasu malplena por forigi afiŝojn sendepende de iliaj nombroj da diskonigoj stream_entries: - pinned: Fiksita afiŝo - reblogged: diskonigita sensitive_content: Tikla enhavo strikes: errors: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 1e52c02eb1..12f7d73828 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -993,7 +993,7 @@ es-AR: apply_for_account: Solicitar una cuenta captcha_confirmation: help_html: Si tenés problemas resolviendo la CAPTCHA, podés ponerte en contacto con nosotros a través de %{email} y te vamos a ayudar. - hint_html: '¡Sólo una cosa más! Necesitamos confirmar que sos humano (¡esto es para que podamos mantener el spam fuera!). Resuelvé la CAPTCHA abajo y hacé clic en "Continuar".' + hint_html: ¡Sólo una cosa más! Necesitamos confirmar que sos humano (¡esto es para que podamos mantener el spam fuera!). Resuelvé la CAPTCHA abajo y hacé clic en "Continuar". title: Comprobación de seguridad confirmations: wrong_email_hint: Si esa dirección de correo electrónico no es correcta, podés cambiarla en la configuración de la cuenta. @@ -1242,7 +1242,7 @@ es-AR: one: "%{count} elemento que coincide con tu búsqueda está seleccionado." other: Todos los %{count} elementos que coinciden con tu búsqueda están seleccionados. cancel: Cancelar - changes_saved_msg: '¡Cambios guardados exitosamente!' + changes_saved_msg: "¡Cambios guardados exitosamente!" confirm: Confirmar copy: Copiar delete: Eliminar @@ -1351,7 +1351,7 @@ es-AR: unsubscribe: action: Sí, desuscribir complete: Desuscripto - confirmation_html: '¿Estás seguro que querés dejar de recibir %{type} de Mastodon en %{domain} a tu correo electrónico %{email}? Siempre podrás volver a suscribirte desde la configuración de notificaciones por correo electrónico..' + confirmation_html: ¿Estás seguro que querés dejar de recibir %{type} de Mastodon en %{domain} a tu correo electrónico %{email}? Siempre podrás volver a suscribirte desde la configuración de notificaciones por correo electrónico.. emails: notification_emails: favourite: notificaciones de favoritos por correo electrónico @@ -1633,7 +1633,6 @@ es-AR: show_newer: Mostrar más recientes show_older: Mostrar más antiguos show_thread: Mostrar hilo - sign_in_to_participate: Iniciá sesión para participar en la conversación title: '%{name}: "%{quote}"' visibilities: direct: Directo @@ -1679,8 +1678,6 @@ es-AR: min_reblogs: Conservar adhesiones de por lo menos min_reblogs_hint: No elimina ninguno de tus mensajes que haya recibido más de esta cantidad de adhesiones. Dejá en blanco para eliminar mensajes independientemente de su número de adhesiones. stream_entries: - pinned: Mensaje fijado - reblogged: adhirió a este mensaje sensitive_content: Contenido sensible strikes: errors: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 774397f774..008f72fe4c 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -993,7 +993,7 @@ es-MX: apply_for_account: Solicitar una cuenta captcha_confirmation: help_html: Si tienes problemas resolviendo el CAPTCHA, puedes contactarnos a través del correo %{email} y te ayudaremos. - hint_html: '¡Una última cosita! Necesitamos confirmar que eres humano (¡así podemos evitar el spam!). Resuelve este CAPTCHA de debajo y pulsa en "Continuar".' + hint_html: ¡Una última cosita! Necesitamos confirmar que eres humano (¡así podemos evitar el spam!). Resuelve este CAPTCHA de debajo y pulsa en "Continuar". title: Comprobación de seguridad confirmations: wrong_email_hint: Si esa dirección de correo electrónico no es correcta, puedes cambiarla en la configuración de la cuenta. @@ -1242,7 +1242,7 @@ es-MX: one: "%{count} elemento que coincide con su búsqueda está seleccionado." other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados. cancel: Cancelar - changes_saved_msg: '¡Cambios guardados con éxito!' + changes_saved_msg: "¡Cambios guardados con éxito!" confirm: Confirmar copy: Copiar delete: Eliminar @@ -1351,7 +1351,7 @@ es-MX: unsubscribe: action: Sí, darse de baja complete: Has cancelado tu suscripción - confirmation_html: '¿Estás seguro de que quieres dejar de recibir %{type} de Mastodon en %{domain} a tu email %{email}? Siempre podrás volver a suscribirte desde los ajustes de notificación por correo..' + confirmation_html: ¿Estás seguro de que quieres dejar de recibir %{type} de Mastodon en %{domain} a tu email %{email}? Siempre podrás volver a suscribirte desde los ajustes de notificación por correo.. emails: notification_emails: favourite: notificaciones de me gusta por correo @@ -1633,8 +1633,7 @@ es-MX: show_newer: Mostrar más recientes show_older: Mostrar más antiguos show_thread: Mostrar discusión - sign_in_to_participate: Regístrate para participar en la conversación - title: '%{name}: «%{quote}»' + title: "%{name}: «%{quote}»" visibilities: direct: Directa private: Sólo mostrar a seguidores @@ -1679,8 +1678,6 @@ es-MX: min_reblogs: Mantener publicaciones reblogueadas más de min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos stream_entries: - pinned: Toot fijado - reblogged: retooteado sensitive_content: Contenido sensible strikes: errors: diff --git a/config/locales/es.yml b/config/locales/es.yml index 24db46db7f..fc8f8260da 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -993,7 +993,7 @@ es: apply_for_account: Solicitar una cuenta captcha_confirmation: help_html: Si tienes problemas resolviendo el CAPTCHA, puedes contactarnos por email en %{email} y te ayudaremos. - hint_html: '¡Una última cosita! Necesitamos confirmar que eres humano (¡así podemos evitar el spam!). Resuelve este CAPTCHA de debajo y pulsa en "Continuar".' + hint_html: ¡Una última cosita! Necesitamos confirmar que eres humano (¡así podemos evitar el spam!). Resuelve este CAPTCHA de debajo y pulsa en "Continuar". title: Comprobación de seguridad confirmations: wrong_email_hint: Si esa dirección de correo electrónico no es correcta, puedes cambiarla en la configuración de la cuenta. @@ -1242,7 +1242,7 @@ es: one: "%{count} elemento que coincide con su búsqueda está seleccionado." other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados. cancel: Cancelar - changes_saved_msg: '¡Cambios guardados con éxito!' + changes_saved_msg: "¡Cambios guardados con éxito!" confirm: Confirmar copy: Copiar delete: Eliminar @@ -1351,7 +1351,7 @@ es: unsubscribe: action: Sí, cancelar suscripción complete: Has cancelado tu suscripción - confirmation_html: '¿Estás seguro de que quieres dejar de recibir %{type} de Mastodon en %{domain} a tu email %{email}? Siempre podrás volver a suscribirte desde los ajustes de notificación por correo..' + confirmation_html: ¿Estás seguro de que quieres dejar de recibir %{type} de Mastodon en %{domain} a tu email %{email}? Siempre podrás volver a suscribirte desde los ajustes de notificación por correo.. emails: notification_emails: favourite: notificaciones de me gusta por correo @@ -1633,8 +1633,7 @@ es: show_newer: Mostrar más recientes show_older: Mostrar más antiguos show_thread: Mostrar discusión - sign_in_to_participate: Inicia sesión para participar en la conversación - title: '%{name}: «%{quote}»' + title: "%{name}: «%{quote}»" visibilities: direct: Directa private: Sólo mostrar a seguidores @@ -1679,8 +1678,6 @@ es: min_reblogs: Mantener publicaciones reblogueadas más de min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos stream_entries: - pinned: Publicación fijada - reblogged: impulsó sensitive_content: Contenido sensible strikes: errors: diff --git a/config/locales/et.yml b/config/locales/et.yml index fc4991c39f..574c1432f6 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1633,7 +1633,6 @@ et: show_newer: Uuemate kuvamine show_older: Vanemate kuvamine show_thread: Kuva lõim - sign_in_to_participate: Logi sisse, et liituda vestlusega title: '%{name}: "%{quote}"' visibilities: direct: Otsene @@ -1679,8 +1678,6 @@ et: min_reblogs: Säilita postitused jagatud vähemalt min_reblogs_hint: Ei kustuta postitusi, kui need on jagatud vähemalt nii mitu korda. Tühjaks jättes kustuvad postitused olenemata jagamistest stream_entries: - pinned: Kinnitatud postitus - reblogged: jagatud sensitive_content: Tundlik sisu strikes: errors: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index d2d69d0205..b4c95f2f14 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -385,7 +385,7 @@ eu: cancel: Utzi confirm: Eten permanent_action: Etenaldia uzteak ez ditu datuak edo elkarreraginak leheneratuko. - preamble_html: %{domain} eta bere azpidomeinuak etetzera zoaz. + preamble_html: "%{domain} eta bere azpidomeinuak etetzera zoaz." remove_all_data: Honek domeinuko kontuen eduki, media, eta profiletako datu guztiak kenduko ditu zure zerbitzaritik. stop_communication: Zure zerbitzariak zerbitzari hauekin komunikatzeari utziko dio. title: Berretsi %{domain} domeinuaren blokeoa @@ -1246,7 +1246,7 @@ eu: empty: CSV fitxategi hutsa incompatible_type: Ez da bateragarria aukeratutako inportatze-motarekin invalid_csv_file: 'CSV fitxategi baliogabea. Errorea: %{error}' - over_rows_processing_limit: '%{count} lerro baina gehiago ditu' + over_rows_processing_limit: "%{count} lerro baina gehiago ditu" too_large: Fitxategia handiegia da failures: Akatsak imported: Inportatuta @@ -1589,7 +1589,6 @@ eu: show_newer: Erakutsi berriagoak show_older: Erakutsi zaharragoak show_thread: Erakutsi haria - sign_in_to_participate: Eman izena elkarrizketan parte hartzeko title: '%{name}: "%{quote}"' visibilities: direct: Zuzena @@ -1635,8 +1634,6 @@ eu: min_reblogs: Mantendu bultzada kopuru hau duten bidalketak min_reblogs_hint: Gutxienez bultzada kopuru hau jaso duten zure bidalketak ez dira ezabatuko. Hutsik utziz gero bultzada kopurua ez da kontuan hartuko bidalketak ezabatzean stream_entries: - pinned: Finkatutako bidalketa - reblogged: (r)en bultzada sensitive_content: 'Kontuz: Eduki hunkigarria' strikes: errors: diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 17b022c7bc..2b2d677e90 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -651,6 +651,8 @@ fa: follow_recommendations: پیروی از پیشنهادها profile_directory: شاخهٔ نمایه public_timelines: خط زمانی‌های عمومی + publish_discovered_servers: انتشار سرورهای یافته‌شده + publish_statistics: انتشار آمار title: کشف trends: پرطرفدارها domain_blocks: @@ -726,6 +728,7 @@ fa: allow_provider: اجازه به ناشر disallow: اجازه ندادن به پیوند disallow_provider: اجازه ندادن به ناشر + no_link_selected: هیچ پیوندی تغییر نکرد زیرا هیچ‌کدام از آن‌ها انتخاب نشده بودند title: پیوندهای داغ pending_review: بازبینی منتظر preview_card_providers: @@ -748,6 +751,7 @@ fa: trending_rank: 'پرطرفدار #%{rank}' usable: قابل استفاده title: پرطرفدار + trending: پرطرفدار warning_presets: add_new: افزودن تازه delete: زدودن @@ -795,6 +799,7 @@ fa: new_trending_statuses: title: فرسته‌های داغ new_trending_tags: + no_approved_tags: در حال حاضر هیچ برچسب پرطرفداری پذیرفته نشده است. title: برچسب‌های داغ subject: موضوغ داغ تازه‌ای در %{instance} نیازمند بررسی است aliases: @@ -820,6 +825,7 @@ fa: notification_preferences: تغییر ترجیحات ایمیل salutation: "%{name}،" settings: 'تغییر تنظیمات ایمیل: %{link}' + unsubscribe: لغو اشتراک view: 'نمایش:' view_profile: دیدن نمایه view_status: دیدن نوشته‌ها @@ -833,12 +839,15 @@ fa: your_token: کد دسترسی شما auth: apply_for_account: درخواست یک حساب + captcha_confirmation: + title: بررسی های امنیتی delete_account: پاک‌کردن حساب delete_account_html: اگر می‌خواهید حساب خود را پاک کنید، از این‌جا پیش بروید. از شما درخواست تأیید خواهد شد. description: prefix_invited_by_user: "@%{name} شما را به عضویت در این کارساز ماستودون دعوت کرده است!" prefix_sign_up: همین امروز عضو ماستودون شوید! suffix: با داشتن حساب می‌توانید دیگران را پی بگیرید، نوشته‌های تازه منتشر کنید، و با کاربران دیگر از هر سرور ماستودون دیگری و حتی سرورهای دیگر در ارتباط باشید! + didnt_get_confirmation: یک پیوند تأیید را دریافت نکردید؟ dont_have_your_security_key: کلید امنیتیتان را ندارید؟ forgot_password: گذرواژه خود را فراموش کرده‌اید؟ invalid_reset_password_token: کد بازنشانی گذرواژه نامعتبر یا منقضی شده است. لطفاً کد دیگری درخواست کنید. @@ -850,15 +859,24 @@ fa: migrate_account: نقل مکان به یک حساب دیگر migrate_account_html: اگر می‌خواهید این حساب را به حساب دیگری منتقل کنید، این‌جا را کلیک کنید. or_log_in_with: یا ورود به وسیلهٔ + progress: + confirm: تأیید رایانامه + details: جزئیات شما providers: cas: CAS saml: SAML register: عضو شوید - registration_closed: "سرور %{instance} عضو تازه‌ای نمی‌پذیرد" + registration_closed: سرور %{instance} عضو تازه‌ای نمی‌پذیرد + resend_confirmation: ارسال مجدد پیوند تایید reset_password: بازنشانی گذرواژه + rules: + accept: پذیرفتن + back: بازگشت + title_invited: شما دعوت شده اید. security: امنیت set_new_password: تعین گذرواژه جدید setup: + email_settings_hint_html: برای تأیید %{email}، روی پیوندی که برای شما ارسال کردیم ضربه بزنید. همین جا منتظر می‌مانیم. link_not_received: پیوندی نگرفتید؟ title: صندوق ورودیتان را بررسی کنید sign_in: @@ -960,6 +978,9 @@ fa: your_appeal_rejected: درخواست تجدیدنظرتان رد شد domain_validator: invalid_domain: نام دامین معتبر نیست + edit_profile: + basic_information: اطلاعات پایه + other: سایر errors: '400': درخواستی که فرستادید نامعتبر یا اشتباه بود. '403': شما اجازهٔ دیدن این صفحه را ندارید. @@ -995,6 +1016,8 @@ fa: storage: تصویرهای ذخیره‌شده featured_tags: add_new: افزودن تازه + errors: + limit: شما بیشترین تعداد مجاز برچسب‌ها را دارید hint_html: "برچسب‌های برگزیده چیستند؟ این برچسب‌ها به طور واضحی روی نمایهٔ عمومیتان نمایش یافته می‌گذارد افراد فرسته‌های عمومیتان زیرشان را مرور کنند. ابزاری عالی برای دنبال کردن آثار خلاقانه یا پروژه‌های بلندمدت است." filters: contexts: @@ -1013,6 +1036,10 @@ fa: index: delete: پاک‌کردن empty: هیچ پالایه‌ای ندارید. + expires_on: در %{date} منقضی می شود + keywords: + one: "%{count} کلیدواژه" + other: "%{count} کلیدواژه" statuses: one: "%{count} فرسته" other: "%{count} فرسته" @@ -1031,7 +1058,9 @@ fa: title: فرسته‌های پالوده generic: all: همه + cancel: لغو changes_saved_msg: تغییرات با موفقیت ذخیره شدند! + confirm: تأیید copy: رونوشت delete: حذف deselect: ناگزینش همه @@ -1045,13 +1074,23 @@ fa: imports: errors: over_rows_processing_limit: دارای بیش از %{count} ردیف + too_large: حجم فایل خیلی بزرگ است + imported: وارد شد modes: merge: ادغام merge_long: داده‌های فعلی را داشته باشید و داده‌های تازه‌ای بیفزایید overwrite: بازنویسی overwrite_long: داده‌های فعلی را پاک کنید و داده‌های تازه‌ای بیفزایید preface: می‌توانید داده‌هایی را که از کارسازی دیگر برون‌ریخته‌اید، چون سیاهه‌ای از افرادی که پی گرفته یا مسدود می‌کنید را درون‌ریزی کنید. + recent_imports: واردشده‌های اخیر + states: + finished: پایان یافته + in_progress: در حال پیشرفت + scheduled: برنامه‌ریزی شده + unconfirmed: تایید نشده + status: وضعیت success: داده‌های شما با موفقیت بارگذاری شد و به زودی پردازش می‌شود + time_started: آغاز شده در types: blocking: سیاههٔ انسداد bookmarks: نشانک‌ها @@ -1092,6 +1131,10 @@ fa: failed_sign_in_html: تلاش‌های شکست‌خوردهٔ ورود با %{method} از %{ip} (%{browser}) successful_sign_in_html: ورودهای موفق با %{method} از %{ip} (%{browser}) title: تاریخچهٔ تأیید هویت + mail_subscriptions: + unsubscribe: + complete: لغو اشتراک شد + title: لغو اشتراک media_attachments: validations: images_and_video: نمی‌توان برای نوشته‌ای که تصویر دارد ویدیو بارگذاری کرد @@ -1207,6 +1250,7 @@ fa: expired: این نظرسنجی به پایان رسیده است invalid_choice: گزینه رای دادن وجود ندارد over_character_limit: هر کدام نمی‌تواند از %{max} نویسه طولانی‌تر باشد + self_vote: شما نمی توانید در نظرسنجی خودتان رای دهید too_few_options: حتماً باید بیش از یک گزینه داشته باشد too_many_options: نمی‌تواند بیشتر از %{max} گزینه داشته باشد preferences: @@ -1221,6 +1265,9 @@ fa: unrecognized_emoji: شکلک شناخته‌شده‌ای نیست relationships: activity: فعالیت حساب + confirm_follow_selected_followers: آیا مطمئنید که می خواهید دنبال کننده های انتخابی را دنبال کنید؟ + confirm_remove_selected_followers: آیا شما واقعا می خواهید دنبال کننده های انتخابی را حذف کنید؟ + confirm_remove_selected_follows: آیا شما واقعا می خواهید دنبال شده های انتخابی را حذف کنید؟ dormant: غیرفعال follow_selected_followers: پیگیری پیگیران انتخاب شده followers: پی‌گیران @@ -1355,8 +1402,7 @@ fa: show_newer: نمایش جدیدتر show_older: نمایش قدیمی‌تر show_thread: نمایش رشته - sign_in_to_participate: برای شرکت در گفتگو وارد حساب خود شوید - title: '%{name}: «%{quote}»' + title: "%{name}: «%{quote}»" visibilities: direct: مستقیم private: خصوصی @@ -1401,8 +1447,6 @@ fa: min_reblogs: نگه داشتن فرسته‌هایی با تقویت بیش از min_reblogs_hint: هیچ یک از فرسته‌هایتان را که بیش از این تعداد تقویت شده باشند، حذف نمی‌کند. برای حذف فرسته‌ها فارغ از تعداد تقویت‌هایشان، خالی بگذارید stream_entries: - pinned: نوشته‌های ثابت - reblogged: تقویت شده sensitive_content: محتوای حساس strikes: errors: @@ -1450,6 +1494,7 @@ fa: suspicious_sign_in: change_password: تغییر گذرواژه‌تان details: 'جزییات ورود:' + title: یک ورود جدید warning: appeal: فرستادن یک درخواست تجدیدنظر appeal_description: اگر فکر می‌کنید این یک خطا است، می‌توانید یک درخواست تجدیدنظر به کارکنان %{instance} ارسال کنید. @@ -1487,7 +1532,9 @@ fa: seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شده‌اید، به همین دلیل تنظیمات ایمیل و گذرواژه برای شما در دسترس نیست. signed_in_as: 'واردشده به نام:' verification: + here_is_how: به اینصورت verification: تأیید + verified_links: "‏پیوندهای تأییدشده‌ شما" webauthn_credentials: add: افزودن کلید امنیتی create: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 1dfa96b567..b9b46d98ad 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -389,6 +389,7 @@ fi: remove_all_data: Tämä poistaa palvelimeltasi kaiken sisällön, median ja profiilitiedot tämän verkkotunnuksen tileiltä. stop_communication: Palvelimesi lopettaa näiden palvelinten viestinnän. title: Vahvista verkkotunnuksen %{domain} esto + undo_relationships: Tämä kumoaa näiden palvelimien ja sinun tilien välisen seurannan. created_msg: Verkkotunnuksen estoa käsitellään destroyed_msg: Verkkotunnuksen esto on peruttu domain: Verkkotunnus @@ -739,6 +740,7 @@ fi: preamble: Palvelimesi brändäys erottaa sen muista verkon palvelimista. Nämä tiedot voidaan näyttää useissa eri ympäristöissä, kuten Mastodonin käyttöliittymässä, sovelluksissa, linkkien esikatselu muilla sivustoilla ja viestisovelluksien sisällä ja niin edelleen. Tästä syystä on parasta pitää nämä tiedot selkeinä, lyhyinä ja ytimekkäinä. title: Brändäys captcha_enabled: + desc_html: Tämä perustuu ulkoisiin skripteihin hCaptchasta, mikä voi olla turvallisuus- ja yksityisyysongelma. Lisäksi tämä voi tehdä rekisteröinnin ihmisille huomattavasti (erityisesti vammaisten) helpommaksi. Harkitse vaihtoehtoisia toimenpiteitä, kuten hyväksymisperusteista tai kutsupohjaista rekisteröintiä. title: Vaadi uusia käyttäjiä vahvistaamaan tilinsä ratkaisemalla CAPTCHA-vahvistus content_retention: preamble: Määritä, miten käyttäjän luoma sisältö tallennetaan Mastodoniin. @@ -1030,7 +1032,7 @@ fi: accept: Hyväksy back: Takaisin invited_by: 'Seuraavalta käyttäjältä vastaanottamasi kutsun ansiosta voit liittyä palvelimelle %{domain}:' - preamble: '%{domain} valvojat määrittävät ja valvovat sääntöjä.' + preamble: "%{domain} valvojat määrittävät ja valvovat sääntöjä." preamble_invited: Ennen kuin jatkat, huomioi palvelimen %{domain} valvojien asettamat perussäännöt. title: Joitakin perussääntöjä. title_invited: Sinut on kutsuttu. @@ -1148,6 +1150,7 @@ fi: invalid_domain: ei ole kelvollinen toimialueen nimi edit_profile: basic_information: Perustiedot + hint_html: "Mukauta mitä ihmiset näkevät julkisessa profiilissasi ja sinun julkaisujen vieressä. Ihmiset todennäköisesti seuraavat ja kirjoittavat sinulle, kun sinulla on täytetty profiili ja profiilikuva." other: Muu safety_and_privacy: Turvallisuus ja yksityisyys errors: @@ -1348,6 +1351,16 @@ fi: unsubscribe: action: Kyllä, peru tilaus complete: Tilaus lopetettiin + confirmation_html: Oletko varma, että haluat lopettaa käyttäjän %{type} vastaanottamisen Mastodonista %{domain} sähköpostiisi osoitteessa %{email}? Voit aina tilata sähköposti-ilmoitusasetuksesi uudelleen . + emails: + notification_emails: + favourite: sähköpostit ilmoituksille + follow: seuraa sähköpostin ilmoituksia + follow_request: seuraa pyyntöjä sähköpostiin + mention: mainitse sähköpostin ilmoitukset + reblog: tehosta sähköpostien ilmoituksia + resubscribe_html: Jos olet perunut tilauksen erehdyksellä, voit tilata uudelleen sähköpostin ilmoitusasetuksistasi. + success_html: Et enää saa %{type} Mastodonilta %{domain} sähköpostiisi osoitteeseen %{email}. title: Lopeta tilaus media_attachments: validations: @@ -1620,8 +1633,7 @@ fi: show_newer: Näytä uudemmat show_older: Näytä vanhempi show_thread: Näytä ketju - sign_in_to_participate: Kirjaudu osallistuaksesi keskusteluun - title: '%{name}: ”%{quote}”' + title: "%{name}: ”%{quote}”" visibilities: direct: Suoraan private: Vain seuraajille @@ -1666,8 +1678,6 @@ fi: min_reblogs: Pidä viestit tehostettuna vähintään min_reblogs_hint: Ei poista yhtään viestiäsi, jota on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi viestejä riippumatta niiden tehosteiden määrästä stream_entries: - pinned: Kiinnitetty tuuttaus - reblogged: tehosti sensitive_content: Arkaluontoista sisältöä strikes: errors: @@ -1768,6 +1778,10 @@ fi: seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä. signed_in_as: 'Kirjautunut tilillä:' verification: + extra_instructions_html: Vihje: Sivuston linkki voi olla näkymätön. Tärkeä osa on rel="me" joka estää personoinnin verkkosivustoilla, joilla on käyttäjän luomaa sisältöä. Voit jopa käyttää linkkiä tag sivun otsikossa sen sijaan a, mutta HTML:n on oltava käytettävissä suorittamatta JavaScriptiä. + here_is_how: Näin voit tehdä sen + hint_html: "Henkilöllisyytesi varmentaminen Mastodonissa on kaikille. Perustuu avoimiin web-standardeihin, nyt ja ikuisesti ilmaiseksi. Kaikki mitä tarvitset on henkilökohtainen sivusto, että ihmiset tunnistavat sinut. Kun linkit tälle sivustolle profiilistasi, tarkistamme, että sivusto linkit takaisin profiiliisi ja näyttää visuaalinen indikaattori sitä." + instructions_html: Kopioi ja liitä alla oleva koodi verkkosivusi HTML:ään. Lisää sitten sivustosi osoite johonkin ylimääräisestä kentästä profiilissasi "Muokkaa profiilia" -välilehdestä ja tallenna muutokset. verification: Vahvistus verified_links: Vahvistetut linkkisi webauthn_credentials: diff --git a/config/locales/fo.yml b/config/locales/fo.yml index ef17a43bf8..6c5611caba 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1633,7 +1633,6 @@ fo: show_newer: Vís nýggjari show_older: Vís eldri show_thread: Vís tráð - sign_in_to_participate: Rita inn fyri at luttaka í samrøðuni title: '%{name}: "%{quote}"' visibilities: direct: Beinleiðis @@ -1679,8 +1678,6 @@ fo: min_reblogs: Varðveit postar, sum eru stimbraðir í minsta lagi min_reblogs_hint: Strikar ikki postar hjá tær, sum eru stimbraðir í minsta lagi so ofta. Lat vera blankt, um postar skulu strikast óansæð, hvussu ofta teir eru stimbraðir stream_entries: - pinned: Festir postar - reblogged: stimbraður sensitive_content: Viðkvæmt innihald strikes: errors: diff --git a/config/locales/fr-QC.yml b/config/locales/fr-QC.yml index 16bcb36ba5..9193132574 100644 --- a/config/locales/fr-QC.yml +++ b/config/locales/fr-QC.yml @@ -1019,6 +1019,7 @@ fr-QC: progress: confirm: Confirmez l'e-mail details: Vos infos + review: Notre avis rules: Accepter les règles providers: cas: CAS @@ -1030,12 +1031,16 @@ fr-QC: rules: accept: Accepter back: Retour + invited_by: 'Vous pouvez rejoindre %{domain} grâve à l''invitation de :' preamble: Celles-ci sont définies et appliqués par les modérateurs de %{domain}. + preamble_invited: Avant de continuer, veuillez lire les règles de base définies par les modérateurs de %{domain}. title: Quelques règles de base. title_invited: Vous avez été invité·e. security: Sécurité set_new_password: Définir le nouveau mot de passe setup: + email_below_hint_html: Vérifiez votre dossier de spam ou demandez qu’on vous le renvoie. Vous pouvez corriger votre adresse e-mail si elle est incorrecte. + email_settings_hint_html: Cliquez sur le lien que nous vous avons envoyé pour vérifier l’adresse %{email}. Nous vous attendons ici. link_not_received: Vous n'avez pas reçu de lien ? new_confirmation_instructions_sent: Vous recevrez un nouveau courriel avec votre lien de confirmation dans quelques minutes! title: Vérifiez votre boîte de réception @@ -1043,6 +1048,7 @@ fr-QC: preamble_html: Connectez-vous avec vos identifiants sur %{domain}. Si votre compte est hébergé sur un autre serveur, vous ne pourrez pas vous connecter ici. title: Se connecter à %{domain} sign_up: + manual_review: Les inscriptions sur %{domain} passent par une revue manuelle de nos modérateurs. Pour les aider, écrivez un peu plus sur vous et pourquoi vous souhaitez créer un compte sur %{domain}. preamble: Avec un compte sur ce serveur Mastodon, vous serez en mesure de suivre toute autre personne sur le réseau, quel que soit l’endroit où son compte est hébergé. title: Mettons les choses en place pour %{domain}. status: @@ -1144,6 +1150,7 @@ fr-QC: invalid_domain: n’est pas un nom de domaine valide edit_profile: basic_information: Informations de base + hint_html: "Personnalisez ce que les gens voient sur votre profil public et à côté de vos messages. Les autres personnes seront plus susceptibles de vous suivre et d’interagir avec vous lorsque vous avez un profil complet et une photo." other: Autre safety_and_privacy: Sécurité et confidentialité errors: @@ -1253,15 +1260,50 @@ fr-QC: imports: errors: empty: Fichier CSV vide + incompatible_type: Incompatible avec le type d’import sélectionné invalid_csv_file: 'Fichier CSV non valide. Erreur : %{error}' over_rows_processing_limit: contient plus de %{count} lignes + too_large: Le fichier est trop lourd + failures: Échecs + imported: Importé + mismatched_types_warning: Il semblerait que vous avez sélectionné le mauvais type pour cet import, veuillez vérifier attentivement. modes: merge: Fusionner merge_long: Garder les enregistrements existants et ajouter les nouveaux overwrite: Écraser overwrite_long: Remplacer les enregistrements actuels par les nouveaux + overwrite_preambles: + blocking_html: Vous allez remplacer votre liste de blocage par près de %{total_items} comptes tirés de %{filename}. + bookmarks_html: Vous allez remplacer vos signets par près de %{total_items} posts tirés de %{filename}. + domain_blocking_html: Vous allez remplacer votre liste de blocage de domaines par près de %{total_items} domaines tirés de %{filename}. + following_html: Vous allez suivre jusqu’à %{total_items} comptes depuis %{filename} et arrêter de suivre n’importe qui d’autre. + muting_html: Vous allez remplacer votre liste de comptes masqués par près de %{total_items} comptes tirés de %{filename}. + preambles: + blocking_html: Vous allez bloquer près de %{total_items} comptes tirés de %{filename}. + bookmarks_html: Vous allez ajouter près de %{total_items} messages de %{filename} à vos signets. + domain_blocking_html: Vous allez bloquer près de %{total_items} domaines tirés de %{filename}. + following_html: Vous allez suivre près de %{total_items} comptes tirés de %{filename}. + muting_html: Vous allez masquer près de %{total_items} comptes tirés de %{filename}. preface: Vous pouvez importer certaines données que vous avez exporté d’un autre serveur, comme une liste des personnes que vous suivez ou bloquez sur votre compte. + recent_imports: Récents imports + states: + finished: Terminé + in_progress: En cours + scheduled: Programmé + unconfirmed: Non confirmé + status: Statut success: Vos données ont été importées avec succès et seront traitées en temps et en heure + time_started: Démarré le + titles: + blocking: En cours d’importation des comptes bloqués + bookmarks: En cours d’importation des signets + domain_blocking: En cours d’importation des domaines bloqués + following: En cours d’importation des comptes suivis + muting: En cours d’importation des comptes masqués + type: Type d’import + type_groups: + constructive: Abonnements et signets + destructive: Blocages et masquages types: blocking: Liste de comptes bloqués bookmarks: Marque-pages @@ -1305,6 +1347,21 @@ fr-QC: failed_sign_in_html: Tentative de connexion échouée avec %{method} de %{ip} (%{browser}) successful_sign_in_html: Connexion réussie avec %{method} de %{ip} (%{browser}) title: Historique d'authentification + mail_subscriptions: + unsubscribe: + action: Oui, se désinscrire + complete: Désinscrit + confirmation_html: Êtes-vous sûr de vouloir vous désinscrire des %{type} de la part du Mastodon installé sur %{domain} vers votre adresse %{email}? Vous pouvez toujours vous réabonner à partir de vos paramètres de notification par e-mail. + emails: + notification_emails: + favourite: e-mails de notifications de signets + follow: e-mails de notifications d’abonnements + follow_request: e-mails de demandes d’abonnements + mention: e-mails de notifications de mentions + reblog: e-mails de notifications de boost + resubscribe_html: Si vous vous êtes désabonné par erreur, vous pouvez vous réinscrire à partir de vos paramètres de notification par e-mail. + success_html: Vous ne serez plus inscrits aux %{type} du Mastodon installé sur %{domain} à votre adresse %{email}. + title: Se désinscrire media_attachments: validations: images_and_video: Impossible de joindre une vidéo à un message contenant déjà des images @@ -1420,6 +1477,7 @@ fr-QC: expired: Ce sondage est déjà terminé invalid_choice: L'option de vote choisie n'existe pas over_character_limit: ne peuvent être plus long que %{max} caractères chacun + self_vote: Vous ne pouvez pas voter à vos propres sondages too_few_options: doit avoir plus qu’une proposition too_many_options: ne peut contenir plus de %{max} propositions preferences: @@ -1575,8 +1633,7 @@ fr-QC: show_newer: Plus récents show_older: Plus anciens show_thread: Afficher le fil de discussion - sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation - title: '%{name} : « %{quote} »' + title: "%{name} : « %{quote} »" visibilities: direct: Direct private: Abonné⋅e⋅s uniquement @@ -1621,8 +1678,6 @@ fr-QC: min_reblogs: Conserver les messages partagés au moins min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages stream_entries: - pinned: Message épinglé - reblogged: a partagé sensitive_content: Contenu sensible strikes: errors: @@ -1723,7 +1778,12 @@ fr-QC: seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles. signed_in_as: 'Connecté·e en tant que :' verification: + extra_instructions_html: Astuce : Le lien sur votre site Web peut être invisible. La partie importante est rel="me" qui évite que soient pris en compte d’autres liens provenant de contenu générés par des utilisateurs tiers. Vous pouvez même utiliser une balise link dans l’en-tête de la page au lieu de a, mais le HTML doit être accessible sans avoir besoin d’exécuter du JavaScript. + here_is_how: Voici comment + hint_html: "La vérification de son profil sur Mastodon est accessible à tous. Elle s’appuie sur des standards ouverts du web, gratuits aujourd’hui et pour toujours. Tout ce dont vous avez besoin, c’est d’un site web personnel qui vous est associé dans l’esprit des gens. Lorsque vous ajoutez un lien depuis votre profil, nous vérifierons que le site web renvoie à son tour à votre profil Mastodon et montrerons un indicateur visuel à côté du lien si c’est le cas." + instructions_html: Copiez et collez le code ci-dessous dans le code HTML de votre site web. Ajoutez ensuite l’adresse de votre site dans l’un des champs supplémentaires de votre profil à partir de l‘onglet « Modifier le profil » et enregistrez les modifications. verification: Vérification + verified_links: Vos liens vérifiés webauthn_credentials: add: Ajouter une nouvelle clé de sécurité create: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index d27e3a3fbd..741f3a13d9 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1039,12 +1039,16 @@ fr: security: Sécurité set_new_password: Définir le nouveau mot de passe setup: + email_below_hint_html: Vérifiez votre dossier de spam ou demandez qu’on vous le renvoie. Vous pouvez corriger votre adresse e-mail si elle est incorrecte. + email_settings_hint_html: Cliquez sur le lien que nous vous avons envoyé pour vérifier l’adresse %{email}. Nous vous attendons ici. link_not_received: Vous n'avez pas reçu de lien ? + new_confirmation_instructions_sent: Vous allez recevoir un nouvel e-mail de confirmation dans quelques minutes ! title: Vérifiez votre boîte de réception sign_in: preamble_html: Connectez-vous avec vos identifiants sur %{domain}. Si votre compte est hébergé sur un autre serveur, vous ne pourrez pas vous connecter ici. title: Se connecter à %{domain} sign_up: + manual_review: Les inscriptions sur %{domain} passent par une revue manuelle de nos modérateurs. Pour les aider, écrivez un peu plus sur vous et pourquoi vous souhaitez créer un compte sur %{domain}. preamble: Avec un compte sur ce serveur Mastodon, vous serez en mesure de suivre toute autre personne sur le réseau, quel que soit l’endroit où son compte est hébergé. title: Mettons les choses en place pour %{domain}. status: @@ -1146,6 +1150,7 @@ fr: invalid_domain: n’est pas un nom de domaine valide edit_profile: basic_information: Informations de base + hint_html: "Personnalisez ce que les gens voient sur votre profil public et à côté de vos messages. Les autres personnes seront plus susceptibles de vous suivre et d’interagir avec vous lorsque vous avez un profil complet et une photo." other: Autre safety_and_privacy: Sécurité et confidentialité errors: @@ -1255,15 +1260,50 @@ fr: imports: errors: empty: Fichier CSV vide + incompatible_type: Incompatible avec le type d’import sélectionné invalid_csv_file: 'Fichier CSV non valide. Erreur : %{error}' over_rows_processing_limit: contient plus de %{count} lignes + too_large: Le fichier est trop lourd + failures: Échecs + imported: Importé + mismatched_types_warning: Il semblerait que vous avez sélectionné le mauvais type pour cet import, veuillez vérifier attentivement. modes: merge: Fusionner merge_long: Garder les enregistrements existants et ajouter les nouveaux overwrite: Écraser overwrite_long: Remplacer les enregistrements actuels par les nouveaux + overwrite_preambles: + blocking_html: Vous allez remplacer votre liste de blocage par près de %{total_items} comptes tirés de %{filename}. + bookmarks_html: Vous allez remplacer vos signets par près de %{total_items} posts tirés de %{filename}. + domain_blocking_html: Vous allez remplacer votre liste de blocage de domaines par près de %{total_items} domaines tirés de %{filename}. + following_html: Vous allez suivre jusqu’à %{total_items} comptes depuis %{filename} et arrêter de suivre n’importe qui d’autre. + muting_html: Vous allez remplacer votre liste de comptes masqués par près de %{total_items} comptes tirés de %{filename}. + preambles: + blocking_html: Vous allez bloquer près de %{total_items} comptes tirés de %{filename}. + bookmarks_html: Vous allez ajouter près de %{total_items} messages de %{filename} à vos signets. + domain_blocking_html: Vous allez bloquer près de %{total_items} domaines tirés de %{filename}. + following_html: Vous allez suivre près de %{total_items} comptes tirés de %{filename}. + muting_html: Vous allez masquer près de %{total_items} comptes tirés de %{filename}. preface: Vous pouvez importer certaines données que vous avez exporté d’un autre serveur, comme une liste des personnes que vous suivez ou bloquez sur votre compte. + recent_imports: Récents imports + states: + finished: Terminé + in_progress: En cours + scheduled: Programmé + unconfirmed: Non confirmé + status: Statut success: Vos données ont été importées avec succès et seront traitées en temps et en heure + time_started: Démarré le + titles: + blocking: En cours d’importation des comptes bloqués + bookmarks: En cours d’importation des signets + domain_blocking: En cours d’importation des domaines bloqués + following: En cours d’importation des comptes suivis + muting: En cours d’importation des comptes masqués + type: Type d’import + type_groups: + constructive: Abonnements et signets + destructive: Blocages et masquages types: blocking: Liste de comptes bloqués bookmarks: Marque-pages @@ -1307,6 +1347,21 @@ fr: failed_sign_in_html: Tentative de connexion échouée avec %{method} de %{ip} (%{browser}) successful_sign_in_html: Connexion réussie avec %{method} de %{ip} (%{browser}) title: Historique d'authentification + mail_subscriptions: + unsubscribe: + action: Oui, se désinscrire + complete: Désinscrit + confirmation_html: Êtes-vous sûr de vouloir vous désinscrire des %{type} de la part du Mastodon installé sur %{domain} vers votre adresse %{email}? Vous pouvez toujours vous réabonner à partir de vos paramètres de notification par e-mail. + emails: + notification_emails: + favourite: e-mails de notifications de signets + follow: e-mails de notifications d’abonnements + follow_request: e-mails de demandes d’abonnements + mention: e-mails de notifications de mentions + reblog: e-mails de notifications de boost + resubscribe_html: Si vous vous êtes désabonné par erreur, vous pouvez vous réinscrire à partir de vos paramètres de notification par e-mail. + success_html: Vous ne serez plus inscrits aux %{type} du Mastodon installé sur %{domain} à votre adresse %{email}. + title: Se désinscrire media_attachments: validations: images_and_video: Impossible de joindre une vidéo à un message contenant déjà des images @@ -1422,6 +1477,7 @@ fr: expired: Ce sondage est déjà terminé invalid_choice: L'option de vote choisie n'existe pas over_character_limit: ne peuvent être plus long que %{max} caractères chacun + self_vote: Vous ne pouvez pas voter à vos propres sondages too_few_options: doit avoir plus qu’une proposition too_many_options: ne peut contenir plus de %{max} propositions preferences: @@ -1577,8 +1633,7 @@ fr: show_newer: Plus récents show_older: Plus anciens show_thread: Afficher le fil de discussion - sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation - title: '%{name} : « %{quote} »' + title: "%{name} : « %{quote} »" visibilities: direct: Direct private: Abonné⋅e⋅s uniquement @@ -1623,8 +1678,6 @@ fr: min_reblogs: Conserver les messages partagés au moins min_reblogs_hint: Ne supprime aucun de vos messages qui ont été partagés au moins ce nombre de fois. Laisser vide pour supprimer les messages indépendamment de leur nombre de partages stream_entries: - pinned: Message épinglé - reblogged: a partagé sensitive_content: Contenu sensible strikes: errors: @@ -1725,7 +1778,12 @@ fr: seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles. signed_in_as: 'Connecté·e en tant que :' verification: + extra_instructions_html: Astuce : Le lien sur votre site Web peut être invisible. La partie importante est rel="me" qui évite que soient pris en compte d’autres liens provenant de contenu générés par des utilisateurs tiers. Vous pouvez même utiliser une balise link dans l’en-tête de la page au lieu de a, mais le HTML doit être accessible sans avoir besoin d’exécuter du JavaScript. + here_is_how: Voici comment + hint_html: "La vérification de son profil sur Mastodon est accessible à tous. Elle s’appuie sur des standards ouverts du web, gratuits aujourd’hui et pour toujours. Tout ce dont vous avez besoin, c’est d’un site web personnel qui vous est associé dans l’esprit des gens. Lorsque vous ajoutez un lien depuis votre profil, nous vérifierons que le site web renvoie à son tour à votre profil Mastodon et montrerons un indicateur visuel à côté du lien si c’est le cas." + instructions_html: Copiez et collez le code ci-dessous dans le code HTML de votre site web. Ajoutez ensuite l’adresse de votre site dans l’un des champs supplémentaires de votre profil à partir de l‘onglet « Modifier le profil » et enregistrez les modifications. verification: Vérification + verified_links: Vos liens vérifiés webauthn_credentials: add: Ajouter une nouvelle clé de sécurité create: diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 79d15b972b..3099cba663 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -1633,7 +1633,6 @@ fy: show_newer: Nijere toane show_older: Aldere toane show_thread: Petear toane - sign_in_to_participate: Meld jo oan om oan dit petear mei te dwaan title: '%{name}: "%{quote}"' visibilities: direct: Direkt @@ -1679,8 +1678,6 @@ fy: min_reblogs: Berjochten dy’t op syn minst safolle kear boost binne behâlde min_reblogs_hint: Smyt gjin berjochten dy’t op syn minst safolle kear boost binne fuort. Lit leech om berjochten likefolle it tal boosts fuort te smiten stream_entries: - pinned: Fêstsette berjocht - reblogged: boostte sensitive_content: Gefoelige ynhâld strikes: errors: diff --git a/config/locales/ga.yml b/config/locales/ga.yml index cb1575aeb9..13635f5a57 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -367,9 +367,7 @@ ga: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. exports: archive_takeout: @@ -502,7 +500,6 @@ ga: '63113904': 2 bhliain '7889238': 3 mhí stream_entries: - pinned: Postáil pionnáilte sensitive_content: Ábhar íogair two_factor_authentication: edit: Cuir in eagar diff --git a/config/locales/gd.yml b/config/locales/gd.yml index fe71e58f37..d1842b19ef 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1061,13 +1061,13 @@ gd: cas: CAS saml: SAML register: Clàraich leinn - registration_closed: "Cha ghabh %{instance} ri buill ùra" + registration_closed: Cha ghabh %{instance} ri buill ùra resend_confirmation: Cuir an ceangal dearbhaidh a-rithist reset_password: Ath-shuidhich am facal-faire rules: accept: Gabh ris back: Air ais - invited_by: '’S urrainn dhut ballrachd fhaighinn air %{domain} leis a’ chuireadh a fhuair thu o:' + invited_by: "’S urrainn dhut ballrachd fhaighinn air %{domain} leis a’ chuireadh a fhuair thu o:" preamble: Tha iad ’gan stèidheachadh is a chur an gnìomh leis na maoir aig %{domain}. preamble_invited: Mus lean thu air adhart, thoir an aire air na riaghailtean a shuidhich na maoir aig %{domain}. title: Riaghailtean bunasach. @@ -1183,7 +1183,7 @@ gd: your_appeal_pending: Chuir thu ath-thagradh a-null your_appeal_rejected: Chaidh an t-ath-thagradh agad a dhiùltadh domain_validator: - invalid_domain: '– chan eil seo ’na ainm àrainne dligheach' + invalid_domain: "– chan eil seo ’na ainm àrainne dligheach" edit_profile: basic_information: Fiosrachadh bunasach hint_html: "Gnàthaich na chithear air a’ phròifil phoblach agad is ri taobh nam postaichean agad. Bidh càch nas buailtiche do leantainn agus conaltradh leat nuair a bhios tu air a’ phròifil agad a lìonadh agus dealbh rithe." @@ -1285,8 +1285,6 @@ gd: all_matching_items_selected_html: one: "Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu." two: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. - few: Chaidh %{count} nithean a thaghadh a fhreagras dha na lorg thu. - other: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. cancel: Sguir dheth changes_saved_msg: Chaidh na h-atharraichean a shàbhaladh! confirm: Dearbh @@ -1334,7 +1332,7 @@ gd: domain_blocking_html: Tha thu an impis suas ri %{total_items} àrainn(ean) o %{filename} a bhacadh. following_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a leantainn. muting_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a mhùchadh. - preface: '’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine a leanas tu no a tha thu a’ bacadh.' + preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine a leanas tu no a tha thu a’ bacadh." recent_imports: Ion-phortaidhean o chionn goirid states: finished: Deiseil @@ -1528,10 +1526,10 @@ gd: duration_too_short: '– tha seo ro aithghearr' expired: Tha an cunntas-bheachd air a thighinn gu crìoch invalid_choice: Chan eil an roghainn dhan a bhòt thu ann - over_character_limit: '– chan fhaod a bhith nas fhaide na %{max} caractar' + over_character_limit: "– chan fhaod a bhith nas fhaide na %{max} caractar" self_vote: Chan urrainn dhut bhòtadh sna chunntasan-bheachd agad fhèin - too_few_options: '– feumaidh iomadh nì a bhith aige' - too_many_options: '– chan fhaod còrr is %{max} nì a bhith ’na bhroinn' + too_few_options: "– feumaidh iomadh nì a bhith aige" + too_many_options: "– chan fhaod còrr is %{max} nì a bhith ’na bhroinn" preferences: other: Eile posting_defaults: Bun-roghainnean a’ phostaidh @@ -1697,8 +1695,7 @@ gd: show_newer: Seall feadhainn as ùire show_older: Seall feadhainn as sine show_thread: Seall an snàithlean - sign_in_to_participate: Clàraich a-steach a ghabhail pàirt sa chòmhradh - title: '%{name}: “%{quote}”' + title: "%{name}: “%{quote}”" visibilities: direct: Dìreach private: Luchd-leantainn a-mhàin @@ -1743,8 +1740,6 @@ gd: min_reblogs: Cùm na tha ’ga bhrosnachadh le co-dhiù min_reblogs_hint: Cha dèid gin dhe na postaichean agad a sguabadh às a tha ’gam brosnachadh an àireamh de thursan seo air a char as lugha. Fàg seo bàn airson postaichean a sguabadh às ge b’ e co mheud turas a tha iad ’gam brosnachadh stream_entries: - pinned: Post prìnichte - reblogged: '’ga bhrosnachadh' sensitive_content: Susbaint fhrionasach strikes: errors: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index a24cadad9c..39180552b2 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1633,7 +1633,6 @@ gl: show_newer: Mostrar o máis novo show_older: Mostrar o máis vello show_thread: Amosar fío - sign_in_to_participate: Accede e participa na conversa title: '%{name}: "%{quote}"' visibilities: direct: Directa @@ -1679,8 +1678,6 @@ gl: min_reblogs: Manter publicacións promovidas máis de min_reblogs_hint: Non elimina ningunha das túas publicacións se foron promovidas máis deste número de veces. Deixa en branco para eliminar publicacións independentemente do seu número de promocións stream_entries: - pinned: Publicación fixada - reblogged: promoveu sensitive_content: Contido sensible strikes: errors: diff --git a/config/locales/he.yml b/config/locales/he.yml index 7799fefaa0..2487c5f1fd 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1285,8 +1285,6 @@ he: all_matching_items_selected_html: one: "נבחר פריט %{count} שתאם לחיפוש בעמוד זה." two: נבחרו %{count} פריטים שתאמו לחיפוש בעמוד זה. - many: נבחרו %{count} פריטים שתאמו לחיפוש בעמוד זה. - other: נבחרו %{count} פריטים שתאמו לחיפוש בעמוד זה. cancel: ביטול changes_saved_msg: השינויים נשמרו בהצלחה! confirm: אישור @@ -1697,7 +1695,6 @@ he: show_newer: הצג חדשים יותר show_older: הצג ישנים יותר show_thread: הצג שרשור - sign_in_to_participate: הכנס כדי להשתתף בשיחה title: '%{name}: "%{quote}"' visibilities: direct: ישיר @@ -1743,8 +1740,6 @@ he: min_reblogs: שמור הודעות מהודהדות לפחות min_reblogs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר ההדהודים שקיבלו stream_entries: - pinned: הודעה נעוצה - reblogged: הודהד sensitive_content: תוכן רגיש strikes: errors: diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 17d7475457..ef0164dc56 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -12,9 +12,7 @@ hi: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. relationships: follow_failure: चुने हुए अकाउंट्स में से कुछ को फ़ॉलो नहीं किया जा सकता diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 47e4d4bd09..ac19bda3ff 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -82,9 +82,7 @@ hr: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. exports: archive_takeout: @@ -208,7 +206,6 @@ hr: public: Javno unlisted: Neprikazano stream_entries: - reblogged: boostano sensitive_content: Osjetljivi sadržaj two_factor_authentication: disable: Onemogući 2FA diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 014abdb9a0..d1c86fcfc2 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -388,7 +388,7 @@ hu: preamble_html: A %{domain} domain és aldomainjeinek felfüggesztésére készülsz. remove_all_data: A kiszolgálódról a domainhez tartozó fiókok minden tartalmát, médiáját, profiladatát el fogja távolítani. stop_communication: A kiszolgálód nem fog kommunikálni ezekkel a kiszolgálókkal. - title: '%{domain} domain letiltásának megerősítése' + title: "%{domain} domain letiltásának megerősítése" undo_relationships: Minden kapcsolatot megszüntet az ezen kiszolgálókon lévő fiókok és a te kiszolgálód fiókjai között. created_msg: A domain-tiltás feldolgozása folyamatban destroyed_msg: A domain tiltása feloldva @@ -870,7 +870,7 @@ hu: not_discoverable: A szerző nem járult hozzá, hogy mások rátalálhassanak shared_by: one: Egy alkalommal megosztva és kedvencek közé helyezve - other: '%{friendly_count} alkalommal megosztva és kedvencek közé helyezve' + other: "%{friendly_count} alkalommal megosztva és kedvencek közé helyezve" title: Felkapott bejegyzések tags: current_score: 'Jelenlegi pontszám: %{score}' @@ -1633,8 +1633,7 @@ hu: show_newer: Újabbak mutatása show_older: Régebbiek mutatása show_thread: Szál mutatása - sign_in_to_participate: Bejelentkezés a beszélgetésben részvételhez - title: '%{name}: „%{quote}”' + title: "%{name}: „%{quote}”" visibilities: direct: Közvetlen private: Csak követőknek @@ -1679,8 +1678,6 @@ hu: min_reblogs: Bejegyzések megtartása, melyeket többször toltak meg, mint min_reblogs_hint: Egyetlen olyan bejegyzésedet sem törli, melyet ennél többször toltak meg. Hagyd üresen, hogy a megtolások számától függetlenül töröljük a bejegyzéseket stream_entries: - pinned: Kitűzött bejegyzés - reblogged: megtolta sensitive_content: Kényes tartalom strikes: errors: diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 3da27a0446..1898513863 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -532,7 +532,6 @@ hy: '404': Էջը, որը փնտրում ես գոյութիւն չունի։ '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Չափազանց շատ հարցումներ '500': title: Էջը ճիշտ չէ @@ -802,7 +801,6 @@ hy: show_newer: Ցուցադրել նորերը show_older: Ցուցադրել հները show_thread: Բացել շղթան - sign_in_to_participate: Մուտք գործէք՝ զրոյցին միանալու համար title: '%{name}: "%{quote}"' visibilities: direct: Հասցէագրուած @@ -824,8 +822,6 @@ hy: '63113904': 2 տարի '7889238': 3 ամիս stream_entries: - pinned: Ամրացուած գրառում - reblogged: տարածուած sensitive_content: Կասկածելի բովանդակութիւն themes: contrast: Mastodon (բարձր կոնտրաստով) diff --git a/config/locales/id.yml b/config/locales/id.yml index d34ff17b21..e1e136c8d2 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1447,7 +1447,6 @@ id: show_newer: Tampilkan lebih baru show_older: Tampilkan lebih lama show_thread: Tampilkan utas - sign_in_to_participate: Masuk untuk mengikuti percakapan title: '%{name}: "%{quote}"' visibilities: direct: Langsung @@ -1492,8 +1491,6 @@ id: min_reblogs: Simpan kiriman yang di-boost lebih dari min_reblogs_hint: Tidak menghapus kiriman Anda yang di-boost lebih dari sekian kali. Kosongkan bila ingin menghapus kiriman tanpa peduli jumlah boost-nya stream_entries: - pinned: Kiriman tersemat - reblogged: di-boost-kan sensitive_content: Konten sensitif strikes: errors: diff --git a/config/locales/ig.yml b/config/locales/ig.yml index 669524d8c0..4098a77ede 100644 --- a/config/locales/ig.yml +++ b/config/locales/ig.yml @@ -5,7 +5,5 @@ ig: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/io.yml b/config/locales/io.yml index e1900e8287..42786dad00 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -1436,7 +1436,6 @@ io: show_newer: Montrez plu nova kozo show_older: Montrez plu olda kozo show_thread: Montrez postaro - sign_in_to_participate: Registrez por partoprenar en konverso title: '%{name}: "%{quote}"' visibilities: direct: Direta @@ -1481,8 +1480,6 @@ io: min_reblogs: Retenez bustita posti mine min_reblogs_hint: Ne efacas irga vua posti quo bustigesos mine ca foyoquanto. Restez quale vakua por efacar posti sen suciar olia foyoquanto stream_entries: - pinned: Pinglagita posto - reblogged: diskonocigita sensitive_content: Titiliva kontenajo strikes: errors: diff --git a/config/locales/is.yml b/config/locales/is.yml index d899d305d1..b77baa211c 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -740,7 +740,9 @@ is: preamble: Útlitsleg einkenni aðgreina netþjóninn þinn frá öðrum netþjónum á netkerfinu. Þessar upplýsingar geta birst á margvíslegum stöðum, eins og til dæmis í vefviðmóti Mastodon, einstökum forritum, í forskoðun tengla á öðrum vefsvæðum og innan samskiptaforrita, svo eitthvað sé talið. Þess vegna er vest að þessar upplýsingar séu skýrar, stuttar og tæmandi. title: Útlitsleg aðgreining captcha_enabled: - desc_html: "Þetta stuðlast á utanaðkomandi forskriftum frá hCaptcha, sem gæti haft í för með sér öryggisveikleika og vegið að friðhelgi notenda.\nAukinheldur gæti þetta gert nýskráningarferlið óaðgengilegra sumum (sérstaklega fyrir fatlaða). Þess vegna er rétt að skoða aðra valmöguleika svo sem nýskráningar háðar samþykki eða boði." + desc_html: |- + Þetta stuðlast á utanaðkomandi forskriftum frá hCaptcha, sem gæti haft í för með sér öryggisveikleika og vegið að friðhelgi notenda. + Aukinheldur gæti þetta gert nýskráningarferlið óaðgengilegra sumum (sérstaklega fyrir fatlaða). Þess vegna er rétt að skoða aðra valmöguleika svo sem nýskráningar háðar samþykki eða boði. title: Nýir notendur munu þurfa að standast Turing skynpróf til að staðfesta notendaaðganginn content_retention: preamble: Stýrðu hvernig efni frá notendum sé geymt í Mastodon. @@ -993,7 +995,9 @@ is: apply_for_account: Biðja um notandaaðgang captcha_confirmation: help_html: Ef þú átt í erfiðleikum með að leysa Turing skynpróf, geturðu hafst samband við okkur á netfanginu %{email} og við munum aðstoða þig. - hint_html: "Bara eitt enn! Við þurfum að ganga úr skugga um að þú sért mennskur (þetta er gert til að draga úr amapósti).\nLeystu Turing skynprófið og smelltu á \"Áfram\"." + hint_html: |- + Bara eitt enn! Við þurfum að ganga úr skugga um að þú sért mennskur (þetta er gert til að draga úr amapósti). + Leystu Turing skynprófið og smelltu á "Áfram". title: Öryggisathugun confirmations: wrong_email_hint: Ef það tölvupóstfang er ekki rétt geturðu breytt því í stillingum notandaaðgangsins. @@ -1633,8 +1637,7 @@ is: show_newer: Sýna nýrri show_older: Sýna eldri show_thread: Birta þráð - sign_in_to_participate: Skráðu þig inn til að taka þátt í samtalinu - title: '%{name}: „%{quote}‟' + title: "%{name}: „%{quote}‟" visibilities: direct: Beint private: Einungis fylgjendur @@ -1679,8 +1682,6 @@ is: min_reblogs: Halda færslum sem eru endurbirtar oftar en min_reblogs_hint: Eyðir ekki þínum eigin færslum sem endurbirtar hafa verið þetta oft. Skildu þetta eftir autt til að eyða færslum burtséð frá fjölda endurbirtinga stream_entries: - pinned: Fest færsla - reblogged: endurbirt sensitive_content: Viðkvæmt efni strikes: errors: diff --git a/config/locales/it.yml b/config/locales/it.yml index 1aa8467951..fd9dca3e75 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1633,7 +1633,6 @@ it: show_newer: Mostra più nuovi show_older: Mostra più vecchi show_thread: Mostra thread - sign_in_to_participate: Accedi per partecipare alla conversazione title: '%{name}: "%{quote}"' visibilities: direct: Diretto @@ -1679,8 +1678,6 @@ it: min_reblogs: Conserva i post condivisi più di min_reblogs_hint: Non cancella nessuno dei tuoi post che è stato condiviso più di questo numero di volte. Lascia vuoto per cancellare i post indipendentemente dal loro numero di condivisioni stream_entries: - pinned: Post fissato in cima - reblogged: condiviso sensitive_content: Materiale sensibile strikes: errors: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 1dbd259a34..134a769eb7 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -383,10 +383,10 @@ ja: cancel: キャンセル confirm: ブロック permanent_action: 失われたデータやフォロー関係は、ブロックを解除しても元に戻せません。 - preamble_html: %{domain} と、そのサブドメインをブロックします。 + preamble_html: "%{domain} と、そのサブドメインをブロックします。" remove_all_data: この操作により、対象のドメインにあるアカウントからのコンテンツやメディア、プロフィール情報はすべて削除されます。 stop_communication: ブロックしたサーバーとは通信を行わなくなります。 - title: '%{domain} をブロック' + title: "%{domain} をブロック" undo_relationships: この操作により、このサーバーと対象サーバーのアカウント間のフォロー関係はすべて解除されます。 created_msg: ドメインブロック処理を完了しました destroyed_msg: ドメインブロックを外しました @@ -776,6 +776,7 @@ ja: preamble: サーバーのブランディングは、ネットワーク上の他のサーバーと区別するためのものです。この情報は、Mastodon の Web インターフェース、ネイティブアプリケーション、他の Web サイトやメッセージングアプリのリンクプレビューなど、様々な所で表示される可能性があります。このため、明確で短く、簡潔に記載することをおすすめします。 title: ブランディング captcha_enabled: + desc_html: この機能は hCaptcha による外部スクリプトを使用しますが、hCaptcha にはセキュリティとプライバシーの懸念が考えられます。また、CAPTCHAにより新規登録のアクセシビリティが大幅に損なわれる可能性があり、身体および精神障害者においては特に顕著です。以上の理由から、承認制や招待制を基本とするなど、代わりの登録手順を提供することを検討してください。 title: 新規ユーザーのアカウント確認にCHAPCHAを要求する content_retention: preamble: ユーザーが生成したコンテンツがどのように Mastodon に保存されるかを管理します。 @@ -910,7 +911,7 @@ ja: no_status_selected: 何も選択されていないため、変更されていません not_discoverable: 投稿者は発見可能であることに同意していません shared_by: - other: '%{friendly_count}回の共有、お気に入り' + other: "%{friendly_count}回の共有、お気に入り" title: トレンド投稿 tags: current_score: 現在のスコア %{score} @@ -1348,7 +1349,7 @@ ja: empty: CSVファイルの内容がありません incompatible_type: 選択したインポート項目とファイルの内容が異なります invalid_csv_file: '無効なCSVファイルです。エラー: %{error}' - over_rows_processing_limit: '%{count}行以上' + over_rows_processing_limit: "%{count}行以上" too_large: ファイルが大きすぎます failures: 失敗 imported: インポート済み @@ -1359,17 +1360,17 @@ ja: overwrite: 上書き overwrite_long: 現在のレコードを新しいもので置き換えます overwrite_preambles: - blocking_html: %{filename}%{total_items}個のアカウントブロックしたアカウントリストを置き換えます。 - bookmarks_html: %{filename}%{total_items}件の投稿ブックマークの一覧を置き換えます。 - domain_blocking_html: %{filename}%{total_items}個のドメイン非表示にしたドメインリストを置き換えます。 - following_html: %{filename}%{total_items}個のアカウントフォローします。また、この中に含まれていないアカウントのフォローを解除します。 - muting_html: %{filename}%{total_items}個のアカウントミュートしたアカウントリストを置き換えます。 + blocking_html: "%{filename}%{total_items}個のアカウントブロックしたアカウントリストを置き換えます。" + bookmarks_html: "%{filename}%{total_items}件の投稿ブックマークの一覧を置き換えます。" + domain_blocking_html: "%{filename}%{total_items}個のドメイン非表示にしたドメインリストを置き換えます。" + following_html: "%{filename}%{total_items}個のアカウントフォローします。また、この中に含まれていないアカウントのフォローを解除します。" + muting_html: "%{filename}%{total_items}個のアカウントミュートしたアカウントリストを置き換えます。" preambles: - blocking_html: %{filename}%{total_items}個のアカウントブロックします。 - bookmarks_html: %{filename}%{total_items}件の投稿ブックマークに追加します。 - domain_blocking_html: %{filename}%{total_items}個のドメイン非表示にします。 - following_html: %{filename}%{total_items}個のアカウントフォローします。 - muting_html: %{filename}%{total_items}個のアカウントミュートします。 + blocking_html: "%{filename}%{total_items}個のアカウントブロックします。" + bookmarks_html: "%{filename}%{total_items}件の投稿ブックマークに追加します。" + domain_blocking_html: "%{filename}%{total_items}個のドメイン非表示にします。" + following_html: "%{filename}%{total_items}個のアカウントフォローします。" + muting_html: "%{filename}%{total_items}個のアカウントミュートします。" preface: 他のサーバーでエクスポートされたファイルから、フォロー/ブロックした情報をこのサーバー上のアカウントにインポートできます。 recent_imports: 最近のインポート states: @@ -1434,16 +1435,18 @@ ja: title: 認証履歴 mail_subscriptions: unsubscribe: - action: はい、購読解除します - complete: 購読解除済み + action: 購読を解除する + complete: 購読を解除しました + confirmation_html: '%{domain} の Mastodon による %{email} への%{type}を購読解除しますか? 再購読が必要になった場合はメール通知の設定からいつでも再開できます。' emails: notification_emails: - favourite: お気に入りの通知メール - follow: 通知メールをフォローする - follow_request: フォローリクエストのメール送信 - mention: 返信通知のメール送信 - reblog: ブースト通知のメール送信 + favourite: お気に入り登録の通知メール + follow: フォロー通知メール + follow_request: フォローリクエスト通知メール + mention: 返信の通知メール + reblog: ブーストの通知メール resubscribe_html: 間違って配信を停止した場合は、 メール通知設定から再登録できます。 + success_html: "%{domain} の Mastodon から %{email} への%{type}の配信が停止されました。" title: 購読の解除 media_attachments: validations: @@ -1727,7 +1730,6 @@ ja: show_newer: 新しいものを表示 show_older: 古いものを表示 show_thread: スレッドを表示 - sign_in_to_participate: ログインして会話に参加 title: '%{name}: "%{quote}"' visibilities: direct: ダイレクト @@ -1782,8 +1784,6 @@ ja: min_reblogs: ブーストの基準値 min_reblogs_hint: この数以上、ブーストされた投稿を削除せずに残します。空白にしておくと、ブーストされた数に関わらず投稿を削除します。 stream_entries: - pinned: 固定された投稿 - reblogged: さんがブースト sensitive_content: 閲覧注意 strikes: errors: diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 95f860ace0..4be0e0866d 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -456,7 +456,6 @@ ka: ownership: სხვისი ტუტი ვერ აიპინება reblog: ბუსტი ვერ აიპინება show_more: მეტის ჩვენება - sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია visibilities: private: მხოლოდ-მიმდევრები private_long: აჩვენე მხოლოდ მიმდევრებს @@ -465,8 +464,6 @@ ka: unlisted: ჩამოუთვლელი unlisted_long: ხედავს ყველა, მაგრამ არ ჩანს საჯარო თაიმლაინებში stream_entries: - pinned: აპინული ტუტი - reblogged: გაზრდილი sensitive_content: მგრძნობიარე კონტენტი themes: contrast: მაღალი კონტრასტი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 3d73ba6645..56ce0a2f52 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -713,7 +713,6 @@ kab: show_more: Ssken-d ugar show_newer: Ssken-d timaynutin show_thread: Ssken-d lxiḍ - sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni title: '%{name} : "%{quote}"' visibilities: direct: Usrid @@ -733,7 +732,6 @@ kab: '63113904': 2 n yiseggasen '7889238': 3 n wayyuren stream_entries: - pinned: Tijewwiqt yettwasentḍen sensitive_content: Agbur amḥulfu themes: contrast: Maṣṭudun (agnil awriran) diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 57bde6dac7..4c4905e75d 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -690,7 +690,6 @@ kk: vote: Дауыс беру show_more: Тағы әкел show_thread: Тақырыпты көрсет - sign_in_to_participate: Сұхбатқа қатысу үшін кіріңіз visibilities: private: Тек оқырмандарға private_long: Тек оқырмандарға ғана көрінеді @@ -699,8 +698,6 @@ kk: unlisted: Тізімге енбеген unlisted_long: Бәрі көре алады, бірақ ашық тізімдерге ене алмайды stream_entries: - pinned: Жабыстырылған жазба - reblogged: бөлісті sensitive_content: Нәзік мазмұн tags: does_not_match_previous_name: алдыңғы атқа сәйкес келмейді diff --git a/config/locales/kn.yml b/config/locales/kn.yml index d1389f945d..724abe0c64 100644 --- a/config/locales/kn.yml +++ b/config/locales/kn.yml @@ -5,7 +5,5 @@ kn: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 47d1b5a011..018a54f3f8 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -40,7 +40,7 @@ ko: label: 이메일 바꾸기 new_email: 새 이메일 submit: 이메일 바꾸기 - title: '%{username}의 이메일 바꾸기' + title: "%{username}의 이메일 바꾸기" change_role: changed_msg: 역할이 성공적으로 변경되었습니다! label: 역할 변경 @@ -60,7 +60,7 @@ ko: disabled: 비활성화됨 display_name: 표시되는 이름 domain: 도메인 - edit: 편집 + edit: 수정 email: 이메일 email_status: 이메일 상태 enable: 활성화 @@ -151,7 +151,7 @@ ko: suspension_reversible_hint_html: 계정이 정지되었습니다, 그리고 %{date}에 데이터가 완전히 삭제될 것입니다. 그 때까지는 어떤 안 좋은 효과 없이 계정이 복구 될 수 있습니다. 만약 지금 당장 계정의 모든 데이터를 삭제하고 싶다면, 아래에서 행할 수 있습니다. title: 계정 unblock_email: 이메일 차단 해제하기 - unblocked_email_msg: '%{username}의 이메일 주소를 성공적으로 차단 해제했습니다' + unblocked_email_msg: "%{username}의 이메일 주소를 성공적으로 차단 해제했습니다" unconfirmed_email: 확인되지 않은 이메일 주소 undo_sensitized: 민감함으로 설정 취소 undo_silenced: 제한 해제 @@ -378,10 +378,10 @@ ko: cancel: 취소 confirm: 정지 permanent_action: 정지를 취소한다고 해서 데이터나 관계가 돌아오진 않습니다. - preamble_html: %{domain}과 서브도메인들을 차단하려고 합니다. + preamble_html: "%{domain}과 서브도메인들을 차단하려고 합니다." remove_all_data: 이 동작은 이 도메인의 모든 콘텐츠, 미디어, 프로필 데이터를 서버에서 지울 것입니다. stop_communication: 이 서버들과의 교신이 중지될 것입니다. - title: '%{domain} 도메인 차단 확인' + title: "%{domain} 도메인 차단 확인" undo_relationships: 이 동작은 이 서버 계정들과 저 서버 계정들 사이의 팔로우 관계들을 취소할 것입니다. created_msg: 도메인 차단 처리를 완료했습니다 destroyed_msg: 도메인 차단이 해제되었습니다 @@ -611,7 +611,7 @@ ko: notes_description_html: 확인하고 다른 중재자나 미래의 자신을 위해 기록을 작성합니다 processed_msg: '신고 #%{id}가 정상적으로 처리되었습니다' quick_actions_description_html: '빠른 조치를 취하거나 아래로 스크롤해서 신고된 콘텐츠를 확인하세요:' - remote_user_placeholder: '%{instance}의 리모트 이용자' + remote_user_placeholder: "%{instance}의 리모트 이용자" reopen: 신고 재검토 report: '신고 #%{id}' reported_account: 신고 대상 계정 @@ -1022,7 +1022,7 @@ ko: set_new_password: 새 암호 설정 setup: email_below_hint_html: 스팸 폴더를 체크해보거나, 이메일 주소를 틀렸을 수 있으니 새 확인 링크를 요청해보세요. - email_settings_hint_html: '%{email}을 인증하기 위해 우리가 보낸 링크를 누르세요. 여기서 기다리겠습니다.' + email_settings_hint_html: "%{email}을 인증하기 위해 우리가 보낸 링크를 누르세요. 여기서 기다리겠습니다." link_not_received: 링크를 못 받으셨나요? new_confirmation_instructions_sent: 확인 링크가 담긴 이메일이 몇 분 안에 도착할것입니다! title: 수신함 확인하기 @@ -1185,7 +1185,7 @@ ko: keywords: 키워드 statuses: 개별 게시물 statuses_hint_html: 이 필터는 아래의 키워드에 매칭되는지 여부와 관계 없이 몇몇개의 게시물들에 별개로 적용되었습니다. 검토하거나 필터에서 삭제하세요 - title: 필터 편집 + title: 필터 수정 errors: deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요. invalid_context: 컨텍스트가 없거나 올바르지 않습니다 @@ -1237,7 +1237,7 @@ ko: empty: 빈 CSV 파일 incompatible_type: 호환되지 않는 가져오기 유형을 선택함 invalid_csv_file: '올바르지 않은 CSV 파일입니다. 오류: %{error}' - over_rows_processing_limit: '%{count}개 이상의 열을 포함합니다' + over_rows_processing_limit: "%{count}개 이상의 열을 포함합니다" too_large: 파일이 너무 큼 failures: 실패함 imported: 가져옴 @@ -1251,14 +1251,14 @@ ko: blocking_html: 나의 차단 목록%{filename}에서 가져온 %{total_items} 개의 계정으로 덮어 씌우려고 합니다. bookmarks_html: 나의 북마크%{filename}에서 가져온 %{total_items} 개의 게시물로 덮어 씌우려고 합니다. domain_blocking_html: 나의 도메인 차단 목록%{filename}에서 가져온 %{total_items} 개의 도메인으로 덮어 씌우려고 합니다. - following_html: %{filename}에서 가져온 %{total_items} 개의 계정팔로우하고 나머지 계정을 팔로우 해제하려고 합니다. + following_html: "%{filename}에서 가져온 %{total_items} 개의 계정팔로우하고 나머지 계정을 팔로우 해제하려고 합니다." muting_html: 나의 뮤트한 계정 목록%{filename}에서 가져온 %{total_items} 개의 계정으로 덮어 씌우려고 합니다. preambles: - blocking_html: %{filename}에서 가져온 %{total_items}개의 계정을 차단하려고 합니다. - bookmarks_html: %{filename}에서 가져온 %{total_items}개의 게시물을 북마크에 추가하려고 합니다. - domain_blocking_html: %{filename}에서 가져온 %{total_items}개의 도메인을 차단하려고 합니다. - following_html: %{filename}에서 가져온 %{total_items}개의 계정을 팔로우하려고 합니다. - muting_html: %{filename}에서 가져온 %{total_items}개의 계정을 뮤트하려고 합니다. + blocking_html: "%{filename}에서 가져온 %{total_items}개의 계정을 차단하려고 합니다." + bookmarks_html: "%{filename}에서 가져온 %{total_items}개의 게시물을 북마크에 추가하려고 합니다." + domain_blocking_html: "%{filename}에서 가져온 %{total_items}개의 도메인을 차단하려고 합니다." + following_html: "%{filename}에서 가져온 %{total_items}개의 계정을 팔로우하려고 합니다." + muting_html: "%{filename}에서 가져온 %{total_items}개의 계정을 뮤트하려고 합니다." preface: 다른 서버에서 내보내기 한 파일에서 팔로우 / 차단 정보를 이 계정으로 불러올 수 있습니다. recent_imports: 최근의 가져오기 states: @@ -1541,7 +1541,7 @@ ko: windows_mobile: 윈도우 모바일 windows_phone: 윈도우 폰 revoke: 삭제 - revoke_success: 세션을 성공적으로 삭제하였습니다 + revoke_success: 세션을 성공적으로 취소하였습니다 title: 세션 view_authentication_history: 내 계정에 대한 인증 이력 보기 settings: @@ -1553,7 +1553,7 @@ ko: back: 마스토돈으로 돌아가기 delete: 계정 삭제 development: 개발 - edit_profile: 프로필 편집 + edit_profile: 프로필 수정 export: 데이터 내보내기 featured_tags: 추천 해시태그 import: 데이터 가져오기 @@ -1601,7 +1601,6 @@ ko: show_newer: 새로운 것 표시 show_older: 오래된 것 표시 show_thread: 글타래 보기 - sign_in_to_participate: 대화에 참여 위해 로그인 하기 title: '%{name}: "%{quote}"' visibilities: direct: 다이렉트 @@ -1647,8 +1646,6 @@ ko: min_reblogs: 해당 횟수 이상 부스트된 게시물 유지 min_reblogs_hint: 이 횟수 이상의 부스트가 된 게시물은 삭제하지 않습니다. 부스트 수와 관계없이 게시물을 지우고 싶다면 공백으로 두세요 stream_entries: - pinned: 고정된 게시물 - reblogged: 님이 부스트 했습니다 sensitive_content: 민감한 내용 strikes: errors: @@ -1668,7 +1665,7 @@ ko: add: 추가 disable: 비활성화 disabled_success: 2단계 인증이 비활성화 되었습니다. - edit: 편집 + edit: 수정 enabled: 2단계 인증이 활성화 되어 있습니다 enabled_success: 2단계 인증이 활성화 되었습니다 generate_recovery_codes: 복구 코드 생성 @@ -1682,12 +1679,12 @@ ko: user_mailer: appeal_approved: action: 내 계정으로 가기 - explanation: '%{strike_date}에 일어난 중재결정에 대한 소명을 %{appeal_date}에 작성했으며 승낙되었습니다. 당신의 계정은 정상적인 상태로 돌아왔습니다.' + explanation: "%{strike_date}에 일어난 중재결정에 대한 소명을 %{appeal_date}에 작성했으며 승낙되었습니다. 당신의 계정은 정상적인 상태로 돌아왔습니다." subject: 귀하가 %{date}에 작성한 소명이 승낙되었습니다 title: 소명이 받아들여짐 appeal_rejected: - explanation: '%{strike_date}에 일어난 중재결정에 대한 소명을 %{appeal_date}에 작성했지만 반려되었습니다.' - subject: '%{date}에 작성한 소명이 반려되었습니다.' + explanation: "%{strike_date}에 일어난 중재결정에 대한 소명을 %{appeal_date}에 작성했지만 반려되었습니다." + subject: "%{date}에 작성한 소명이 반려되었습니다." title: 이의 제기가 거절되었습니다 backup_ready: explanation: 마스토돈 계정의 전체 백업을 요청하셨지요. 이제 다운로드할 수 있습니다! @@ -1733,7 +1730,7 @@ ko: suspend: 계정 정지 됨 welcome: edit_profile_action: 프로필 설정 - edit_profile_step: 프로필 사진을 업로드하고, 사람들에게 표시 될 이름을 바꾸는 것 등으로 당신의 프로필을 커스텀 할 수 있습니다. 사람들이 당신을 팔로우 하기 전에 리뷰를 거치게 할 수도 있습니다. + edit_profile_step: 프로필 사진을 업로드하거나 사람들에게 표시할 이름을 바꾸는 것 등으로 자신의 프로필을 커스텀 할 수 있습니다. 새로운 팔로워를 검토 후에 허용하도록 할 수도 있습니다. explanation: 시작하기 전에 몇가지 팁들을 준비했습니다 final_action: 포스팅 시작하기 final_step: '게시물을 올리세요! 팔로워가 없더라도, 공개 게시물들은 다른 사람에게 보여질 수 있습니다, 예를 들자면 로컬이나 연합 타임라인 등이 있습니다. 사람들에게 자신을 소개하고 싶다면 #툿친소 해시태그를 이용해보세요.' diff --git a/config/locales/ku.yml b/config/locales/ku.yml index c784372944..0733a73a5e 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -1479,8 +1479,7 @@ ku: show_newer: Nûtirîn nîşan bide show_older: Kevntirîn nîşan bide show_thread: Mijarê nîşan bide - sign_in_to_participate: Ji bo tevlî sohbetê bibî xwe tomar bike - title: '%{name}%{quote}' + title: "%{name}%{quote}" visibilities: direct: Rasterast private: Tenê şopîneran @@ -1524,8 +1523,6 @@ ku: min_reblogs: Şandiyên ku bêtir hatine bilindkirin veşêre min_reblogs_hint: Şandî ku ji ji vê hejmarê bêtir bilindkirin wergirtibe nayê jêbirin. Vala bihêle da ku şandiyan jê bibî tevlî ku çiqas hezkirin wergirtibe stream_entries: - pinned: Şandiya derzîkirî - reblogged: bilindkirî sensitive_content: Naveroka hestiyarî strikes: errors: diff --git a/config/locales/kw.yml b/config/locales/kw.yml index d12f282a1c..b0970d8bbd 100644 --- a/config/locales/kw.yml +++ b/config/locales/kw.yml @@ -10,9 +10,7 @@ kw: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. settings: account: Akont diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 3b3d0406a9..56769a2c6b 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -457,7 +457,6 @@ lt: ownership: Kitų vartotojų toot'ai negali būti prisegti reblog: Pakeltos žinutės negali būti prisegtos show_more: Daugiau - sign_in_to_participate: Prisijunkite jeigu norite dalyvauti pokalbyje visibilities: private: Tik sekėjams private_long: Rodyti tik sekėjams @@ -466,8 +465,6 @@ lt: unlisted: Neįtrauktas į sąrašus unlisted_long: Matyti gali visi, tačiau nėra įtraukta į viešas laiko juostas stream_entries: - pinned: Prisegtas toot'as - reblogged: pakeltas sensitive_content: Jautrus turinys themes: contrast: Mastodon (Didelio Kontrasto) diff --git a/config/locales/lv.yml b/config/locales/lv.yml index aa1fa4a71d..ee8737883a 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1237,8 +1237,6 @@ lv: other: Šajā lapā ir atlasīti %{count} vienumi. all_matching_items_selected_html: zero: Atlasīts %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam. - one: "Atlasīts %{count} vienums, kas atbilst tavam meklēšanas vaicājumam." - other: Atlasīti visi %{count} vienumi, kas atbilst tavam meklēšanas vaicājumam. cancel: Atcelt changes_saved_msg: Izmaiņas veiksmīgi saglabātas! confirm: Apstiprināt @@ -1624,8 +1622,7 @@ lv: show_newer: Nekad nerādīt show_older: Rādīt senākus show_thread: Rādīt tematu - sign_in_to_participate: Lai piedalītos sarunā, pieraksties - title: '%{name}: “%{quote}”' + title: "%{name}: “%{quote}”" visibilities: direct: Tiešs private: Tikai sekotājiem @@ -1670,8 +1667,6 @@ lv: min_reblogs: Saglabāt ziņas izceltas vismaz min_reblogs_hint: Neizdzēš nevienu no tavām ziņām, kas ir izceltas vismaz tik reižu. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to izcēlumu skaita stream_entries: - pinned: Piespraustā ziņa - reblogged: izceltie sensitive_content: Sensitīvs saturs strikes: errors: diff --git a/config/locales/mk.yml b/config/locales/mk.yml index 33a2c89791..5f315edd15 100644 --- a/config/locales/mk.yml +++ b/config/locales/mk.yml @@ -5,7 +5,5 @@ mk: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/ml.yml b/config/locales/ml.yml index ea9652c13f..14e25cda97 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -83,9 +83,7 @@ ml: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. filters: contexts: diff --git a/config/locales/mr.yml b/config/locales/mr.yml index 973891ff3f..4744018973 100644 --- a/config/locales/mr.yml +++ b/config/locales/mr.yml @@ -5,7 +5,5 @@ mr: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 157afd7569..014c35e507 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -942,7 +942,6 @@ ms: edited_at_html: Disunting %{date} poll: vote: Undi - sign_in_to_participate: Daftar masuk untuk menyertai perbualan visibilities: direct: Terus private: Pengikut sahaja @@ -968,7 +967,6 @@ ms: '7889238': 3 bulan min_favs: Simpan hantaran digemarkan sekurang-kurangnya stream_entries: - pinned: Hantaran disemat sensitive_content: Kandungan sensitif strikes: errors: diff --git a/config/locales/my.yml b/config/locales/my.yml index d8ab26d9b8..be72ca0979 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -124,7 +124,7 @@ my: send: အတည်ပြုချက်လင့်ခ်ကို ပြန်လည်ပေးပို့ပါ success: အတည်ပြုချက်လင့်ခ် ပို့ပြီးပါပြီ။ reset: ပြန်သတ်မှတ်မည် - reset_password: လျှို့ဝှတ်နံပါတ်အားပြန်သတ်မှတ်မည် + reset_password: လျှို့ဝှတ်နံပါတ်အားပြန်သတ်မှတ်မည် resubscribe: ပြန်လည်စာရင်းသွင်းပါ role: အခန်းကဏ္ဍ search: ရှာရန် @@ -330,7 +330,7 @@ my: no_emoji_selected: မည်သည့်အီမိုဂျီကိုမျှ ရွေးချယ်ထားခြင်းမရှိသောကြောင့် ပြောင်းလဲခြင်းမရှိပါ not_permitted: ဤလုပ်ဆောင်ချက်ကို ဆောင်ရွက်ရန် သင့်ကို ခွင့်မပြုပါ။ overwrite: ထပ်ရေးရန် - shortcode: တိုတိုကုတ် + shortcode: တိုတိုကုတ် shortcode_hint: အက္ခရာဂဏန်းများနှင့် underscore များဖြင့် အနည်းဆုံး စာလုံး ၂ လုံးရှိရပါမည် title: စိတ်ကြိုက်အီမိုဂျီများ uncategorized: အမျိုးအစားခွဲခြားထားခြင်းမရှိပါ @@ -379,10 +379,10 @@ my: confirm: ရပ်ဆိုင်းရန် permanent_action: ဆိုင်းငံ့စနစ်ပယ်ဖျက်ခြင်းသည် အချက်အလက် သို့မဟုတ် ဆက်ဆံရေးကို ပြန်လည်ရရှိမည်မဟုတ်ပါ။ preamble_html: သင်သည် %{domain} နှင့် ၎င်း၏ ဒိုမိန်းခွဲများကို ရပ်ဆိုင်းတော့မည်ဖြစ်သည်။ - remove_all_data: '၎င်းက ဤဒိုမိန်းအကောင့်များအတွက် အကြောင်းအရာ၊ မီဒီယာနှင့် ပရိုဖိုင်အချက်အလက်အားလုံးကို သင့်ဆာဗာမှ ဖယ်ရှားမည်ဖြစ်သည်။' + remove_all_data: "၎င်းက ဤဒိုမိန်းအကောင့်များအတွက် အကြောင်းအရာ၊ မီဒီယာနှင့် ပရိုဖိုင်အချက်အလက်အားလုံးကို သင့်ဆာဗာမှ ဖယ်ရှားမည်ဖြစ်သည်။" stop_communication: သင့်ဆာဗာမှ ဤဆာဗာများနှင့် ဆက်သွယ်ခြင်းကို ရပ်သွားပါမည်။ - title: '%{domain} အတွက် ဒိုမိန်းပိတ်ဆို့ခြင်းကို အတည်ပြုပါ' - undo_relationships: '၎င်းသည် ဤဆာဗာများနှင့် သင့်အကောင့်များကြားတွင် လိုက်နာရမည့် ဆက်ဆံရေးကို ပြန်ပြင်လိုက်ပါမည်။' + title: "%{domain} အတွက် ဒိုမိန်းပိတ်ဆို့ခြင်းကို အတည်ပြုပါ" + undo_relationships: "၎င်းသည် ဤဆာဗာများနှင့် သင့်အကောင့်များကြားတွင် လိုက်နာရမည့် ဆက်ဆံရေးကို ပြန်ပြင်လိုက်ပါမည်။" created_msg: ဒိုမိန်းပိတ်ပင်ခြင်းကို ယခုလုပ်ဆောင်နေပါသည် destroyed_msg: ဒိုမိန်းပိတ်ဆို့ခြင်းကို ပြန်ပြင်လိုက်ပါပြီ။ domain: ဒိုမိန်း @@ -726,7 +726,8 @@ my: preamble: သင့်ဆာဗာအကြောင်းကို ကွန်ရက်အတွင်းရှိ အခြားဆာဗာများနှင့် ကွဲပြားစေရန်ဆောင်ရွက်ပါ။ Mastodon ၏ ဝဘ်အင်တာဖေ့စ်၊ မူရင်းအက်လီကေးရှင်းများ၊ အခြားဝဘ်ဆိုက်များပေါ်ရှိ လင့်ခ်အစမ်းကြည့်ရှုခြင်းများနှင့် မက်ဆေ့ခ်ျပေးပို့ခြင်းအက်ပ်များအတွင်း အစရှိသည့် အမျိုးမျိုးတွင် ဤအချက်အလက်များကို ပြသနိုင်ပါသည်။ ထို့ကြောင့် ဤအချက်အလက်များကို တိုတောင်းရှင်းလင်းစွာ ရေးသင့်ပါသည်။ title: ခေါင်းစဉ်တပ်ခြင်း captcha_enabled: - title: '၎င်းတို့၏အကောင့်ကိုအတည်ပြုရန်အတွက် CAPTCHA ဖြေရှင်းရန် အသုံးပြုသူအသစ်များ လိုအပ်သည်' + desc_html: "၎င်းသည် လုံခြုံရေးနှင့် ကိုယ်ရေးကိုယ်တာဆိုင်ရာ hCaptcha မှ ပြင်ပ script များအပေါ်တွင် မူတည်ပါသည်။ ထို့ပြင် မှတ်ပုံတင်ခြင်းလုပ်ငန်းစဉ်ကို အချို့သော သူများ (အထူးသဖြင့် မသန်စွမ်းသူများ) အတွက် သက်ရောက်မှုအားနည်းနေပါသည်။။ ဤအကြောင်းများကြောင့် ခွင့်ပြုချက်အခြေခံ သို့မဟုတ် ဖိတ်ခေါ်မှုအခြေခံ မှတ်ပုံတင်ခြင်းကဲ့သို့သော အခြားအစီအမံများကို ထည့်သွင်းစဉ်းစားသင့်ပါသည်။" + title: "၎င်းတို့၏အကောင့်ကိုအတည်ပြုရန်အတွက် CAPTCHA ဖြေရှင်းရန် အသုံးပြုသူအသစ်များ လိုအပ်သည်" content_retention: preamble: Mastodon တွင် အသုံးပြုသူဖန်တီးထားသော အကြောင်းအရာများ မည်သို့သိမ်းဆည်းမည်ကို ထိန်းချုပ်ပါ။ title: အကြောင်းအရာ ဆက်လက်ရှိနေခြင်း @@ -957,9 +958,9 @@ my: application_mailer: notification_preferences: အီးမေးလ် သတ်မှတ်ချက်များကို ပြောင်းပါ salutation: "%{name}" - settings: 'အီးမေးလ် သတ်မှတ်ချက်များကို ပြောင်းပါ - %{link}' + settings: အီးမေးလ် သတ်မှတ်ချက်များကို ပြောင်းပါ - %{link} unsubscribe: စာရင်းမှထွက်ရန် - view: 'ကြည့်ရှုရန် -' + view: ကြည့်ရှုရန် - view_profile: ပရိုဖိုင်ကိုကြည့်ရန် view_status: ပို့စ်ကိုကြည့်ရန် applications: @@ -1012,8 +1013,8 @@ my: rules: accept: လက်ခံပါ back: နောက်သို့ - invited_by: 'သင်လက်ခံရရှိသော ဖိတ်ကြားချက်ကြောင့် %{domain} သို့ ပါဝင်နိုင်သည်-' - preamble: '၎င်းတို့ကို %{domain} စိစစ်သူများမှ အတည်ပြုပါသည်။' + invited_by: သင်လက်ခံရရှိသော ဖိတ်ကြားချက်ကြောင့် %{domain} သို့ ပါဝင်နိုင်သည်- + preamble: "၎င်းတို့ကို %{domain} စိစစ်သူများမှ အတည်ပြုပါသည်။" preamble_invited: ဆက်လက်မလုပ်ဆောင်မီ ကျေးဇူးပြု၍ %{domain} ၏ ကြီးကြပ်သူများမှ သတ်မှတ်သော မြေပြင်စည်းမျဉ်းများကို သုံးသပ်ပါ။ title: အခြေခံစည်းမျဉ်းအချို့ title_invited: သင့်ကို ဖိတ်ခေါ်ထားပြီးဖြစ်သည်။ @@ -1235,8 +1236,8 @@ my: errors: empty: CSV ဖိုင်အလွတ် incompatible_type: ရွေးချယ်ထားသော ထည့်သွင်းထားသည့်အမျိုးအစားနှင့် ကိုက်ညီမှုမရှိပါ - invalid_csv_file: 'မမှန်ကန်သော CSV ဖိုင်။ အမှား - %{error}' - over_rows_processing_limit: '%{count} တန်းထက် ပိုနေပါသည်' + invalid_csv_file: မမှန်ကန်သော CSV ဖိုင်။ အမှား - %{error} + over_rows_processing_limit: "%{count} တန်းထက် ပိုနေပါသည်" too_large: ဖိုင်ဆိုဒ်ကြီးနေပါသည် failures: မအောင်မြင် imported: ထည့်သွင်းခြင်း @@ -1378,7 +1379,7 @@ my: carry_mutes_over_text: ဤအသုံးပြုသူသည် သင်အသံပိတ်ထားသော %{acct} မှ ပြောင်းရွှေ့ခဲ့သည်။ copy_account_note_text: 'ဤအသုံးပြုသူသည် %{acct} မှ ပြောင်းရွှေ့ခဲ့သည်။ ဤသည်မှာ ၎င်းတို့နှင့်ပတ်သက်သော ယခင်မှတ်စုများဖြစ်သည် -' navigation: - toggle_menu: မီနူးပြောင်းရန် + toggle_menu: မီနူးပြောင်းရန် notification_mailer: admin: report: @@ -1600,7 +1601,6 @@ my: show_newer: ပို့စ်အသစ်များပြရန် show_older: ပို့စ်အဟောင်းများပြရန် show_thread: Thread ကို ပြပါ - sign_in_to_participate: စကားဝိုင်းတွင် ပါဝင်ရန် အကောင့်ဝင်ပါ title: '%{name}: "%{quote}"' visibilities: direct: တိုက်ရိုက် @@ -1646,8 +1646,6 @@ my: min_reblogs: အနည်းဆုံးအားဖြင့် Boost လုပ်ထားသည့်ပို့စ်များကို သိမ်းဆည်းပါ min_reblogs_hint: အနည်းဆုံး ဤအကြိမ်အရေအတွက်ကို မြှင့်တင်ထားသည့် သင့်ပို့စ်များကို မဖျက်ပါ။ ၎င်းတို့၏ မြှင့်တင်မှုအရေအတွက်ကို မခွဲခြားဘဲ ပို့စ်များကို ဖျက်ရန် ချန်ထားပါ stream_entries: - pinned: ပင်တွဲထားသောပို့စ် - reblogged: Boost လုပ်ခဲ့သည် sensitive_content: သတိထားရသော အကြောင်းအရာ strikes: errors: @@ -1748,7 +1746,9 @@ my: seamless_external_login: ပြင်ပဝန်ဆောင်မှုမှတစ်ဆင့် အကောင့်ဝင်ထားသောကြောင့် စကားဝှက်နှင့် အီးမေးလ်သတ်မှတ်ချက်များကို မရနိုင်ပါ။ signed_in_as: 'အဖြစ် အကောင့်ဝင်ခဲ့သည် -' verification: + extra_instructions_html: အကြံပြုချက်- သင့်ဝဘ်ဆိုက်ရှိ လင့်ခ်ကို မမြင်နိုင်ပါ။ အရေးကြီးသော အပိုင်းမှာ rel="me" သည် အသုံးပြုသူဖန်တီးထားသော အကြောင်းအရာများဖြင့် ဝဘ်ဆိုက်များတွင် အယောင်ဆောင်ခြင်းကို တားဆီးပေးသည်။ a အစား စာမျက်နှာ၏ ခေါင်းစီးတွင် link တဂ်ကိုပင် သုံးနိုင်သော်လည်း HTML ကို JavaScript မလုပ်ဆောင်ဘဲ အသုံးပြုနိုင်ရပါမည်။ here_is_how: ဘယ်လိုလဲ + hint_html: "Mastodon တွင် သင့်အထောက်အထားအတည်ပြုခြင်းသည် လူတိုင်းအတွက်ဖြစ်သည်။ ပွင့်လင်းသော ဝဘ်စံနှုန်းများကို အခြေခံ၍ ယခုနှင့် ထာဝရ အခမဲ့အသုံးပြုနိုင်ပါသည်။ သင်လိုအပ်သမျှမှာ သင့်အား လူများက အသိအမှတ်ပြုသည့် ကိုယ်ပိုင်ဝဘ်ဆိုဒ်တစ်ခုဖြစ်သည်။ သင့်ပရိုဖိုင်မှ ဤဝဘ်ဆိုက်သို့ လင့်ခ်ချိတ်သောအခါ ဝဘ်ဆိုဒ်သည် သင့်ပရိုဖိုင်သို့ လင့်ခ်ချိတ်ကြောင်း စစ်ဆေးပြီး ၎င်းတွင် မြင်သာသော အညွှန်းကို ပြသပါမည်။" instructions_html: သင့်ဝဘ်ဆိုဒ်ရှိ HTML တွင် အောက်ပါကုဒ်ကို ကူးယူပြီး ထည့်ပါ။ ထို့နောက် "ပရိုဖိုင်တည်းဖြတ်ရန်" တက်ဘ်မှ သင့်ပရိုဖိုင်ရှိ အပိုအကွက်များထဲမှ တစ်ခုထဲသို့ သင့်ဝဘ်ဆိုက်လိပ်စာကို ထည့်ကာ အပြောင်းအလဲများကို သိမ်းဆည်းပါ။ verification: စိစစ်ခြင်း verified_links: အတည်ပြုထားသောလင့်ခ်များ diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 1197ada0cf..150798e0d4 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1633,7 +1633,6 @@ nl: show_newer: Nieuwere tonen show_older: Oudere tonen show_thread: Gesprek tonen - sign_in_to_participate: Log in om deel te nemen aan het gesprek title: '%{name}: "%{quote}"' visibilities: direct: Privébericht @@ -1679,8 +1678,6 @@ nl: min_reblogs: Berichten die minstens zoveel keer zijn geboost behouden min_reblogs_hint: Verwijdert geen berichten die tenminste zoveel keer zijn geboost. Laat leeg om berichten ongeacht het aantal boosts te verwijderen stream_entries: - pinned: Vastgemaakt bericht - reblogged: boostte sensitive_content: Gevoelige inhoud strikes: errors: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 69951b94ec..19ead16caf 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1608,8 +1608,7 @@ nn: show_newer: Vis nyere show_older: Vis eldre show_thread: Vis tråden - sign_in_to_participate: Logg inn for å verta med i samtalen - title: '%{name}: «%{quote}»' + title: "%{name}: «%{quote}»" visibilities: direct: Direkte private: Berre fylgjarar @@ -1654,8 +1653,6 @@ nn: min_reblogs: Behold innlegg fremhevet av minst min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger stream_entries: - pinned: Festa tut - reblogged: framheva sensitive_content: Ømtolig innhald strikes: errors: diff --git a/config/locales/no.yml b/config/locales/no.yml index b59423813c..19b8228ea2 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1555,8 +1555,7 @@ show_newer: Vis nyere show_older: Vis eldre show_thread: Vis tråden - sign_in_to_participate: Logg på for å delta i samtalen - title: '%{name}: «%{quote}»' + title: "%{name}: «%{quote}»" visibilities: direct: Direkte private: Privat @@ -1601,8 +1600,6 @@ min_reblogs: Behold innlegg fremhevet av minst min_reblogs_hint: Sletter ikke noen av dine innlegg som har blitt fremhevet minst dette antall ganger. La stå tom for å slette innlegg uavhengig av antall fremhevinger stream_entries: - pinned: Festet innlegg - reblogged: fremhevet sensitive_content: Følsomt innhold strikes: errors: diff --git a/config/locales/oc.yml b/config/locales/oc.yml index ff8c61f223..aec6234e32 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -889,7 +889,6 @@ oc: show_newer: Veire mai recents show_older: Veire mai ancians show_thread: Mostrar lo fil - sign_in_to_participate: Inscrivètz-vos per participar a la conversacion title: '%{name} : "%{quote}"' visibilities: direct: Dirècte @@ -932,8 +931,6 @@ oc: min_reblogs: Gardar las publicacions partejadas al mens min_reblogs_hint: Suprimís pas vòstras publicacions qu’an agut aqueste nombre de partiment. Daissar blanc per suprimir las publicacions sens far cas als partiments stream_entries: - pinned: Tut penjat - reblogged: a partejat sensitive_content: Contengut sensible tags: does_not_match_previous_name: correspond pas al nom precedent diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 8b4c0353c2..f60078b062 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1697,7 +1697,6 @@ pl: show_newer: Pokaż nowsze show_older: Pokaż starsze show_thread: Pokaż wątek - sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji title: '%{name}: "%{quote}"' visibilities: direct: Bezpośredni @@ -1743,8 +1742,6 @@ pl: min_reblogs: Utrzymuj posty wzmocnione więcej niż min_reblogs_hint: Nie usuwa żadnego z Twoich wpisów, które zostały wzmocnione więcej niż tyle razy. Pozostaw puste, aby usunąć posty bez względu na ich liczbę wzmocnień stream_entries: - pinned: Przypięty wpis - reblogged: podbił sensitive_content: Wrażliwa zawartość strikes: errors: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index aa7fc9c5f4..79f77f6c02 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1633,7 +1633,6 @@ pt-BR: show_newer: Mostrar mais recentes show_older: Mostrar mais antigos show_thread: Mostrar conversa - sign_in_to_participate: Entre para participar dessa conversa title: '%{name}: "%{quote}"' visibilities: direct: Direto @@ -1679,8 +1678,6 @@ pt-BR: min_reblogs: Manter publicações impulsionadas por ao menos min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos stream_entries: - pinned: Toot fixado - reblogged: deu boost sensitive_content: Conteúdo sensível strikes: errors: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index b724af3950..ae5a605797 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -381,6 +381,15 @@ pt-PT: undo: Revogar federação com o domínio domain_blocks: add_new: Adicionar novo bloqueio de domínio + confirm_suspension: + cancel: Cancelar + confirm: Suspender + permanent_action: Desfazer a suspensão não restaurará nenhum dado ou relacionamento. + preamble_html: Está prestes a suspender %{domain} e seus subdomínios. + remove_all_data: Isto irá remover todo o conteúdo, media e dados de perfil para este domínio do seu servidor. + stop_communication: O seu servidor irá parar de comunicar com esses servidores. + title: Confirmar o bloqueio de domínio para %{domain} + undo_relationships: Isto irá desfazer qualquer relação entre as contas desses servidores e as suas. created_msg: Bloqueio do domínio está a ser processado destroyed_msg: Retirado o bloqueio de domínio domain: Domínio @@ -730,6 +739,9 @@ pt-PT: branding: preamble: A marca do seu servidor diferencia-a doutros servidores na rede. Essa informação pode ser exibida em vários contexos, como a interface na teia do Mastodon, aplicações nativas, visualizações de hiperligações noutros sites, em aplicações de mensagens, etc. Por esta razão, é melhor manter esta informação clara, curta e concisa. title: Marca + captcha_enabled: + desc_html: Isto depende de scripts externos da hCaptcha, o que pode ser uma preocupação de segurança e privacidade. Além disso, isto pode tornar o processo de registo menos acessível para algumas pessoas (especialmente as com limitações físicas). Por isso, considere medidas alternativas tais como registo mediante aprovação ou sob convite. + title: Requerer que novos utilizadores resolvam um CAPTCHA para confirmar a sua conta content_retention: preamble: Controle como o conteúdo gerado pelos utilizadores é armazenado no Mastodon. title: Retenção de conteúdo @@ -965,6 +977,7 @@ pt-PT: notification_preferences: Alterar preferências de e-mail salutation: "%{name}," settings: 'Alterar preferências de e-mail: %{link}' + unsubscribe: Cancelar subscrição view: 'Ver:' view_profile: Ver perfil view_status: Ver publicação @@ -978,6 +991,10 @@ pt-PT: your_token: O teu token de acesso auth: apply_for_account: Solicitar uma conta + captcha_confirmation: + help_html: Se tiver problemas a resolver o CAPTCHA, pode entrar em contacto conosco através de %{email} e poderemos ajudá-lo. + hint_html: Só mais uma coisa! Precisamos confirmar que você é um humano (isto para que possamos evitar spam!). Resolva o CAPTCHA abaixo e clique em "Continuar". + title: Verificação de segurança confirmations: wrong_email_hint: Se esse endereço de e-mail não estiver correto, você pode alterá-lo nas configurações da conta. delete_account: Eliminar conta @@ -1014,8 +1031,11 @@ pt-PT: rules: accept: Aceitar back: Retroceder + invited_by: 'Pode inscrever-se em %{domain} graças ao convite que recebeu de:' preamble: Estas são definidas e aplicadas pelos moderadores de %{domain}. + preamble_invited: Antes de prosseguir, por favor, considere as regras base definidas pelos moderadores de %{domain}. title: Algumas regras básicas. + title_invited: Foi convidado. security: Alterar palavra-passe set_new_password: Editar palavra-passe setup: @@ -1128,6 +1148,11 @@ pt-PT: your_appeal_rejected: O seu recurso foi indeferido domain_validator: invalid_domain: não é um nome de domínio válido + edit_profile: + basic_information: Informação básica + hint_html: "Personalize o que as pessoas veem no seu perfil público e junto das suas publicações. É mais provável que as outras pessoas o sigam de volta ou interajam consigo se tiver um perfil preenchido e uma imagem de perfil." + other: Outro + safety_and_privacy: Segurança e privacidade errors: '400': O pedido que submeteu foi inválido ou mal formulado. '403': Não tens a permissão necessária para ver esta página. @@ -1322,6 +1347,21 @@ pt-PT: failed_sign_in_html: Tentativa falhada de início de sessão com %{method} de %{ip} (%{browser}) successful_sign_in_html: Sessão correctamente iniciada com %{method} de %{ip} (%{browser}) title: Histórico de autenticação + mail_subscriptions: + unsubscribe: + action: Sim, cancelar subscrição + complete: Subscrição Cancelada + confirmation_html: Tem a certeza que deseja cancelar a subscrição para receber %{type} pelo Mastodon em %{domain} no seu e-mail em %{email}? Pode sempre subcrever novamente nas suas configurações de notificação de e-mail. + emails: + notification_emails: + favourite: e-mails de notificação de favorito + follow: e-mails de notificação de seguidor + follow_request: e-mails de notificação de pedido de seguidor + mention: e-mails de notificação de menção + reblog: e-mails de notificação de partilha + resubscribe_html: Se cancelou a subscrição por engano, pode subscrever novamente nas suas configurações de notificação de e-mail. + success_html: Não receberá novamente %{type} pelo Mastodon em %{domain} para o seu e-mail em %{email}. + title: Cancelar subscrição media_attachments: validations: images_and_video: Não é possível anexar um vídeo a uma publicação que já contém imagens @@ -1437,6 +1477,7 @@ pt-PT: expired: A sondagem já terminou invalid_choice: A opção de voto escolhida não existe over_character_limit: não pode ter mais do que %{max} caracteres cada um + self_vote: Não pode votar numa sondagem criada por si too_few_options: tem de ter mais do que um item too_many_options: não pode conter mais do que %{max} itens preferences: @@ -1592,7 +1633,6 @@ pt-PT: show_newer: Mostrar mais recentes show_older: Mostrar mais antigos show_thread: Mostrar conversa - sign_in_to_participate: Inicie a sessão para participar na conversa title: '%{name}: "%{quote}"' visibilities: direct: Direto @@ -1638,8 +1678,6 @@ pt-PT: min_reblogs: Manter as publicações reforçadas mais de min_reblogs_hint: Não apaga nenhuma das suas publicações que tenha sido partilhada mais do que este número de vezes. Deixe em branco para apagar as publicações, independentemente do número de partilhas stream_entries: - pinned: Publicação afixada - reblogged: reforçada sensitive_content: Conteúdo problemático strikes: errors: @@ -1740,7 +1778,12 @@ pt-PT: seamless_external_login: Tu estás ligado via um serviço externo. Por isso, as configurações da palavra-passe e do e-mail não estão disponíveis. signed_in_as: 'Registado como:' verification: + extra_instructions_html: Dica: A ligação no seu site pode ser invisível. A parte importante é rel="me" que impede a personificação em sites com conteúdo gerado pelo utilizador. Pode até utilizar uma etiqueta link no cabeçalho da página ao invés de a, mas o HTML deve ser acessível sem executar JavaScript. + here_is_how: Veja como + hint_html: "Verificar a sua identidade no Mastodon é para todos. Baseado em normas públicas da web, agora e para sempre gratuitas. Tudo o que precisa é de um site pessoal pelo qual as pessoas o reconheçam. Quando coloca no seu perfil uma ligação para esse site, vamos verificar que o site tem uma ligação de volta para o seu perfil e mostrar um indicador visual." + instructions_html: Copie e cole o código abaixo no HTML do seu site. Em seguida, adicione o endereço do seu site em um dos campos extras no seu perfil, na aba "Editar perfil" e salve as alterações. verification: Verificação + verified_links: As suas ligações verificadas webauthn_credentials: add: Adicionar nova chave de segurança create: diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 7835bfd726..c4e242f475 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -678,7 +678,6 @@ ro: vote: Votează show_more: Arată mai mult show_thread: Arată discuția - sign_in_to_participate: Conectează-te pentru a participa la conversație visibilities: private: Doar urmăritorii private_long: Arată doar urmăritorilor @@ -686,8 +685,6 @@ ro: unlisted: Nelistat unlisted_long: Toată lumea poate vedea, dar nu este listată pe fluxurile publice stream_entries: - pinned: Postare fixată - reblogged: impulsionată sensitive_content: Conținut sensibil tags: does_not_match_previous_name: nu se potrivește cu numele anterior diff --git a/config/locales/ru.yml b/config/locales/ru.yml index fdd46bf42d..6488147651 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -395,6 +395,15 @@ ru: undo: Убрать из белого списка domain_blocks: add_new: Заблокировать домен + confirm_suspension: + cancel: Отмена + confirm: Приостановить + permanent_action: Отмена приостановки не восстановит никаких данных или отношений. + preamble_html: Вы собираетесь приостановить %{domain} и его субдомены. + remove_all_data: Это удалит весь контент, мультимедиа и данные профиля для учетных записей этого домена с вашего сервера. + stop_communication: Ваш сервер перестанет общаться с этими серверами. + title: Снять блокировку с домена %{domain} + undo_relationships: Это отменит связь между аккаунтами этих серверов и вашими. created_msg: Блокировка домена обрабатывается destroyed_msg: Блокировка домена снята domain: Домен @@ -758,6 +767,9 @@ ru: branding: preamble: Брендинг вашего сервера отличает его от других серверов сети. Эта информация может отображаться в различных средах, таких как веб-интерфейс Mastodon, нативные приложения, в виде предпросмотра ссылок на других веб-сайтах, в почтовых приложениях и так далее. По этой причине лучше держать эту информацию ясной, короткой и краткой. title: Брендинг + captcha_enabled: + desc_html: Это зависит от внешних скриптов из hCaptcha, которые могут представлять интерес для безопасности и конфиденциальности. Кроме того, это может сделать процесс регистрации значительно менее доступным для некоторых (особенно отключенных) людей. По этим причинам просьба рассмотреть альтернативные меры, такие, как регистрация, основанная на официальном утверждении или на приглашении. + title: Запрашивать новых пользователей для решения CAPTCHA для подтверждения учетной записи content_retention: preamble: Управление сохранением пользовательского контента в Mastodon. title: Хранение контента @@ -1001,6 +1013,7 @@ ru: notification_preferences: Настроить уведомления можно здесь salutation: "%{name}," settings: 'Настроить уведомления можно здесь: %{link}' + unsubscribe: Отписаться view: 'Просмотр:' view_profile: Просмотреть профиль view_status: Просмотреть пост @@ -1014,6 +1027,10 @@ ru: your_token: Ваш токен доступа auth: apply_for_account: Запросить аккаунт + captcha_confirmation: + help_html: Если у вас есть проблемы с CAPTCHA, вы можете связаться с нами через %{email} и мы вам поможем. + hint_html: Еще одна вещь! Нам нужно подтвердить, что вы человек (так что мы можем держать спам!). Решите капчу ниже и нажмите кнопку «Продолжить». + title: Проверка безопасности confirmations: wrong_email_hint: Если этот адрес электронной почты неверен, вы можете изменить его в настройках аккаунта. delete_account: Удалить учётную запись @@ -1656,7 +1673,6 @@ ru: show_newer: Показать более новое show_older: Показать старые show_thread: Открыть обсуждение - sign_in_to_participate: Войдите, чтобы принять участие в дискуссии title: '%{name}: "%{quote}"' visibilities: direct: Адресованный @@ -1702,8 +1718,6 @@ ru: min_reblogs: Порог продвижений min_reblogs_hint: Не удаляет ваши посты, количество продвижений которых достигло указанного выше значения. Оставьте поле пустым, чтобы удалять посты независимо от количества продвижений. stream_entries: - pinned: Закреплённый пост - reblogged: продвинул(а) sensitive_content: Содержимое деликатного характера strikes: errors: diff --git a/config/locales/sa.yml b/config/locales/sa.yml index 76cb942fe7..3cdacf2f2f 100644 --- a/config/locales/sa.yml +++ b/config/locales/sa.yml @@ -5,7 +5,5 @@ sa: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 66f7a01453..9187ef0a60 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -930,7 +930,6 @@ sc: show_newer: Ammustra is prus noos show_older: Ammustra is prus betzos show_thread: Ammustra su tema - sign_in_to_participate: Identìfica·ti pro partetzipare in s'arresonada title: '%{name}: "%{quote}"' visibilities: direct: Deretu @@ -951,8 +950,6 @@ sc: '63113904': 2 annos '7889238': 3 meses stream_entries: - pinned: Tut apicadu - reblogged: cumpartzidu sensitive_content: Cuntenutu sensìbile tags: does_not_match_previous_name: non cointzidet cun su nòmine anteriore diff --git a/config/locales/sco.yml b/config/locales/sco.yml index d5898e83ee..6dd93bbaa9 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -1471,7 +1471,6 @@ sco: show_newer: Shaw newer show_older: Shaw aulder show_thread: Shaw threid - sign_in_to_participate: Sign in fir tae tak pairt in the conversation title: '%{name}: "%{quote}"' visibilities: direct: Direck @@ -1516,8 +1515,6 @@ sco: min_reblogs: Keep posts heezed at least min_reblogs_hint: Disnae delete onie o yer posts thit's been heezed at least this nummer o times. Lea blank fir tae delete posts regairdless o their number o heezes stream_entries: - pinned: Preent post - reblogged: heezed sensitive_content: Sensitive content strikes: errors: diff --git a/config/locales/si.yml b/config/locales/si.yml index 43ad60d5b6..5a1f749d00 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -1264,7 +1264,6 @@ si: show_newer: අලුත්ම පෙන්වන්න show_older: පැරණි පෙන්වන්න show_thread: නූල් පෙන්වන්න - sign_in_to_participate: සංවාදයට සහභාගී වීමට පුරන්න title: '%{name}: "%{quote}"' visibilities: direct: සෘජු @@ -1309,8 +1308,6 @@ si: min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න stream_entries: - pinned: ඇමිණූ ලිපිය - reblogged: ඉහල නැංවීය sensitive_content: සංවේදී අන්තර්ගතයකි strikes: errors: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 3f96549714..b8d6d2b854 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -1,6 +1,10 @@ da: simple_form: hints: + account: + display_name: Dit fulde navn eller dit sjove navn. + fields: Din hjemmeside, udtaler, alder, hvad du ønsker. + note: 'Du kan @nævne andre personer eller #hashtags.' account_alias: acct: Angiv brugernavn@domain for den konto, hvorfra du vil flytte account_migration: @@ -129,6 +133,7 @@ da: position: Højere rolle bestemmer konfliktløsning i visse situationer. Visse handlinger kan kun udføres på roller med lavere prioritet webhook: events: Vælg begivenheder at sende + template: Skriv din egen JSON nyttelast ved hjælp af variabel interpolation. Lad feltet stå tomt for standard JSON. url: Hvor begivenheder sendes til labels: account: @@ -294,6 +299,7 @@ da: usable: Tillad indlæg at benytte dette hashtag user: role: Rolle + time_zone: Tidszone user_role: color: Badge-farve highlighted: Vis rolle som badge på brugerprofiler @@ -302,6 +308,7 @@ da: position: Prioritet webhook: events: Aktive begivenheder + template: Payload skabelon url: Endepunkts-URL 'no': 'Nej' not_recommended: Ikke anbefalet diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index f077816100..0cd077c4cb 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -4,7 +4,7 @@ es: account: display_name: Tu nombre completo o tu apodo. fields: Tu carta de presentación, pronombres, edad, lo que quieras. - note: 'Puedes mencionar a otra gente o etiquetas.' + note: Puedes mencionar a otra gente o etiquetas. account_alias: acct: Especifique su nombre de usuario@dominio de la cuenta de donde se desea migrar account_migration: diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index eb60b975e2..eb4ec696c8 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -133,6 +133,7 @@ et: position: Kõrgem roll otsustab teatud olukordades konfliktide lahendamise. Teatud toiminguid saab teha ainult madalama prioriteediga rollidega webhook: events: Saadetavate sündmuste valik + template: Cruthaich an JSON payload agad fhèin le eadar-phòlachadh chaochladairean. Fàg seo bàn airson JSON bunaiteach fhaighinn. url: Kuhu sündmused saadetakse labels: account: @@ -307,6 +308,7 @@ et: position: Positsioon webhook: events: Lubatud sündmused + template: Gjedhe ngarkese url: Lõpp-punkti URL 'no': 'Ei' not_recommended: Pole soovitatav diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 67beaa2f64..ea746bd276 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -76,6 +76,7 @@ fa: backups_retention_period: نگه داشتن بایگانی‌های کاربری برای روزهای مشخّص شده. bootstrap_timeline_accounts: سنجاق کردنThese accounts will be pinned to the top of new users' follow recommendations. closed_registrations_message: نمایش داده هنگام بسته بودن ثبت‌نام‌ها + require_invite_text: زمانی که نام‌نویسی ها نیازمند تایید دستی است، متن «چرا می‌خواهید بپیوندید؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید form_challenge: current_password: شما در حال ورود به یک منطقهٔ‌ حفاظت‌شده هستید imports: diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index de3d1434f7..a22461389a 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -133,6 +133,7 @@ fi: position: Korkeampi rooli ratkaisee konfliktit tietyissä tilanteissa. Tiettyjä toimintoja voidaan suorittaa vain rooleille, joiden prioriteetti on pienempi webhook: events: Valitse lähetettävät tapahtumat + template: Luo oma JSON hyötykuorma käyttäen muuttujan interpolointia. Jätä tyhjäksi oletuksena JSON. url: Mihin tapahtumat lähetetään labels: account: @@ -307,6 +308,7 @@ fi: position: Prioriteetti webhook: events: Tapahtumat käytössä + template: Maksun malli url: Päätepisteen URL 'no': 'Ei' not_recommended: Ei suositella diff --git a/config/locales/simple_form.fr-QC.yml b/config/locales/simple_form.fr-QC.yml index 7d4723e186..6f9a31ba17 100644 --- a/config/locales/simple_form.fr-QC.yml +++ b/config/locales/simple_form.fr-QC.yml @@ -2,7 +2,9 @@ fr-QC: simple_form: hints: account: + display_name: Votre nom complet ou votre nom rigolo. fields: Votre page d'accueil, pronoms, âge, tout ce que vous voulez. + note: 'Vous pouvez @mentionner d’autres personnes ou des #hashtags.' account_alias: acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez faire migrer account_migration: @@ -131,6 +133,7 @@ fr-QC: position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure webhook: events: Sélectionnez les événements à envoyer + template: Écrivez votre propre bloc JSON avec la possibilité d’utiliser de l’interpolation de variables. Laissez vider pour utiliser le bloc JSON par défaut. url: Là où les événements seront envoyés labels: account: @@ -296,6 +299,7 @@ fr-QC: usable: Autoriser les messages à utiliser ce hashtag user: role: Rôle + time_zone: Fuseau horaire user_role: color: Couleur du badge highlighted: Afficher le rôle avec un badge sur les profils des utilisateur·rice·s @@ -304,6 +308,7 @@ fr-QC: position: Priorité webhook: events: Événements activés + template: Modèle de payload url: URL du point de terminaison 'no': 'Non' not_recommended: Non recommandé diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 423c99273a..5a31dcdc1f 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -1,6 +1,10 @@ fr: simple_form: hints: + account: + display_name: Votre nom complet ou votre nom rigolo. + fields: Votre page personnelle, vos pronoms, votre âge, ce que vous voulez. + note: 'Vous pouvez @mentionner d’autres personnes ou des #hashtags.' account_alias: acct: Spécifiez l’identifiant@domaine du compte à partir duquel vous souhaitez migrer account_migration: @@ -129,6 +133,7 @@ fr: position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure webhook: events: Sélectionnez les événements à envoyer + template: Écrivez votre propre bloc JSON avec la possibilité d’utiliser de l’interpolation de variables. Laissez vider pour utiliser le bloc JSON par défaut. url: Là où les événements seront envoyés labels: account: @@ -294,6 +299,7 @@ fr: usable: Autoriser les messages à utiliser ce hashtag user: role: Rôle + time_zone: Fuseau horaire user_role: color: Couleur du badge highlighted: Afficher le rôle avec un badge sur les profils des utilisateur·rice·s @@ -302,6 +308,7 @@ fr: position: Priorité webhook: events: Événements activés + template: Modèle de payload url: URL du point de terminaison 'no': 'Non' not_recommended: Non recommandé diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 3eb990acfc..90c1a48e26 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -4,7 +4,7 @@ gd: account: display_name: D’ ainm slàn no spòrsail. fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu. - note: '’S urrainn dhut @iomradh a thoirt air càch no air #tagaicheanHais.' + note: "’S urrainn dhut @iomradh a thoirt air càch no air #tagaicheanHais." account_alias: acct: Sònraich ainm-cleachdaiche@àrainn dhen chunntas a tha thu airson imrich uaithe account_migration: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index cbddd7d72f..411efb1103 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -93,7 +93,7 @@ ja: backups_retention_period: 生成されたユーザーのアーカイブを指定した日数の間保持します。 bootstrap_timeline_accounts: これらのアカウントは、新しいユーザー向けのおすすめユーザーの一番上にピン留めされます。 closed_registrations_message: アカウント作成を停止している時に表示されます - content_cache_retention_period: 正の値に設定されている場合、他のサーバーの投稿は指定された日数の後に削除されます。元に戻せません。 + content_cache_retention_period: 指定した日数が経過した他のサーバーの投稿とブーストを削除します。削除された投稿は再取得できない場合があります。削除された投稿についたブックマークやお気に入り、ブーストも失われ、元に戻せません。 custom_css: ウェブ版のMastodonでカスタムスタイルを適用できます。 mascot: 上級者向けWebインターフェースのイラストを上書きします。 media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。 @@ -146,7 +146,7 @@ ja: position: 場合により、より高いロールのユーザーが紛争の解決を決定します。特定のアクションは優先度が低いロールでのみ実行できます。 webhook: events: 送信するイベントを選択 - template: 変数補間を使用して、独自のJSONペイロードを構成します。デフォルトのJSONを使用する場合は空白のままにします。 + template: 変数補完を使用して、独自のJSONペイロードを構成できます。デフォルトのJSONを使用する場合は空白のままにします。 url: イベントの送信先 kmyblue: kmyblue labels: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index a7b3a10eb2..1a966bca76 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -82,7 +82,7 @@ ko: closed_registrations_message: 새 가입을 차단했을 때 표시됩니다 content_cache_retention_period: 다른 서버의 게시물과 부스트들은 지정한 일수가 지나면 삭제될 것입니다. 몇몇 게시물들은 복구가 불가능할 것입니다. 관련된 북마크, 좋아요, 부스트 또한 읽어버릴 것이며 취소도 할 수 없습니다. custom_css: 사용자 지정 스타일을 웹 버전의 마스토돈에 지정할 수 있습니다. - mascot: 고급 사용자 인터페이스에 있는 일러스트를 교체합니다. + mascot: 고급 웹 인터페이스의 그림을 대체합니다. media_cache_retention_period: 양수로 설정된 경우 다운로드된 미디어 파일들은 지정된 일수가 지나면 삭제될 것이고 필요할 때 다시 다운로드 될 것입니다. peers_api_enabled: 이 서버가 연합우주에서 만났던 서버들에 대한 도메인 네임의 목록입니다. 해당 서버와 어떤 연합을 했는지에 대한 정보는 전혀 포함되지 않고, 단순히 그 서버를 알고 있는지에 대한 것입니다. 이것은 일반적으로 연합에 대한 통계를 수집할 때 사용됩니다. profile_directory: 프로필 책자는 발견되기를 희망하는 모든 사람들의 목록을 나열합니다. @@ -194,7 +194,7 @@ ko: otp_attempt: 이중 인증 코드 password: 암호 phrase: 키워드 또는 문장 - setting_advanced_layout: 고급 웹 UI 활성화 + setting_advanced_layout: 고급 웹 인터페이스 활성화 setting_aggregate_reblogs: 타임라인의 부스트를 그룹화 setting_always_send_emails: 항상 이메일 알림 보내기 setting_auto_play_gif: 애니메이션 GIF를 자동 재생 diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 11cd61e230..a87842ae33 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -1,6 +1,10 @@ pl: simple_form: hints: + account: + display_name: Twoje imię lub imię zabawne. + fields: Twoja strona główna, rzeczy, wiek, cokolwiek chcesz. + note: 'Możesz @wymienić innych ludzi lub #hashtags.' account_alias: acct: Określ nazwę@domenę konta z którego chcesz się przenieść account_migration: @@ -129,6 +133,7 @@ pl: position: Wyższa rola decyduje o rozwiązywaniu konfliktów w pewnych sytuacjach. Niektóre działania mogą być wykonywane tylko na rolach z niższym priorytetem webhook: events: Wybierz zdarzenia do wysłania + template: Stwórz własny ładunek JSON za pomocą zmiennej interpolacji. Pozostaw puste dla domyślnego JSON. url: Dokąd będą wysłane zdarzenia labels: account: @@ -303,6 +308,7 @@ pl: position: Priorytet webhook: events: Włączone zdarzenia + template: Szablon obciążenia url: Endpoint URL 'no': 'Nie' not_recommended: Niezalecane diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 0faf9f11ca..b1b176d7be 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -1,6 +1,10 @@ pt-PT: simple_form: hints: + account: + display_name: O seu nome completo ou o seu nome divertido. + fields: A sua página inicial, os seus pronomes, idade e tudo o que quiser. + note: 'Pode @mencionar outras pessoas ou #hashtags.' account_alias: acct: Especifique o utilizador@domínio da conta de onde você deseja migrar account_migration: @@ -129,6 +133,7 @@ pt-PT: position: Cargos mais altos decidem a resolução de conflitos em certas situações. Certas ações só podem ser executadas em cargos com uma menor prioridade webhook: events: Selecione os eventos a enviar + template: Componha o seu próprio conteúdo JSON utilizando a interpolação de variáveis. Deixar em branco para o JSON predefinido. url: Para onde os eventos serão enviados labels: account: @@ -294,6 +299,7 @@ pt-PT: usable: Permitir que as publicações usem esta etiqueta user: role: Cargo + time_zone: Fuso horário user_role: color: Cor do emblema highlighted: Apresentar o cargo como emblema nos perfis de utilizador @@ -302,6 +308,7 @@ pt-PT: position: Prioridade webhook: events: Eventos ativados + template: Modelo de conteúdo url: URL do Endpoint 'no': 'Não' not_recommended: Não recomendado diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index c68bee5c23..cab3d9c64b 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -294,6 +294,7 @@ sv: usable: Tillåt inlägg att använda denna hashtagg user: role: Roll + time_zone: Tidszon user_role: color: Emblemsfärg highlighted: Visa roll som emblem på användarprofiler diff --git a/config/locales/simple_form.tt.yml b/config/locales/simple_form.tt.yml index 7ba978b9b0..6ca6e0ce7e 100644 --- a/config/locales/simple_form.tt.yml +++ b/config/locales/simple_form.tt.yml @@ -53,7 +53,7 @@ tt: color: Бейдж төсе name: Исем permissions_as_keys: Рөхсәтләр - 'no': 'Юк' + 'no': Юк recommended: Тәкъдим ителгән required: mark: "*" diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 59824f20ef..8866be281c 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -80,7 +80,10 @@ uk: backups_retention_period: Зберігати створені архіви користувача вказану кількість днів. bootstrap_timeline_accounts: Ці облікові записи будуть закріплені в топі пропозицій для нових користувачів. closed_registrations_message: Показується, коли реєстрація закрита - content_cache_retention_period: "Матеріали з інших серверів будуть видалені після вказаної кількості днів, коли встановлено позитивне значення. Ця дія може бути незворотна.\n\nМатеріали з інших серверів будуть видалені після вказаної кількості днів. Ця дія може бути незворотна. Усі пов'язані з ними закладки та поширення також будуть втрачені." + content_cache_retention_period: |- + Матеріали з інших серверів будуть видалені після вказаної кількості днів, коли встановлено позитивне значення. Ця дія може бути незворотна. + + Матеріали з інших серверів будуть видалені після вказаної кількості днів. Ця дія може бути незворотна. Усі пов'язані з ними закладки та поширення також будуть втрачені. custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon. mascot: Змінює ілюстрацію в розширеному вебінтерфейсі. media_cache_retention_period: Завантажені медіафайли будуть видалені після вказаної кількості днів після встановлення додатного значення та повторного завантаження за запитом. diff --git a/config/locales/sk.yml b/config/locales/sk.yml index b0b11242de..5cd5519de4 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -1123,7 +1123,6 @@ sk: vote: Hlasuj show_more: Ukáž viac show_thread: Ukáž diskusné vlákno - sign_in_to_participate: Prihlás sa pre zapojenie do diskusie title: '%{name}: „%{quote}"' visibilities: private: Iba pre sledovateľov @@ -1137,8 +1136,6 @@ sk: keep_pinned_hint: Nevymaže žiadne s tvojich pripnutých príspevkov keep_self_bookmark: Ponechaj príspevky, ktoré sú záložkami stream_entries: - pinned: Pripnutý príspevok - reblogged: vyzdvihli sensitive_content: Senzitívny obsah tags: does_not_match_previous_name: nezhoduje sa s predošlým názvom diff --git a/config/locales/sl.yml b/config/locales/sl.yml index f6f1e8d988..a18b68c9a7 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1273,8 +1273,6 @@ sl: all_matching_items_selected_html: one: "Izbran je %{count} element, ki ustreza vašemu iskanju." two: Izbrana sta %{count} elementa, ki ustrezata vašemu iskanju. - few: Izbrani so %{count} elementi, ki ustrezajo vašemu iskanju. - other: Izbranih je %{count} elementov, ki ustrezajo vašemu iskanju. cancel: Prekliči changes_saved_msg: Spremembe so uspešno shranjene! confirm: Potrdi @@ -1658,8 +1656,7 @@ sl: show_newer: Pokaži novejše show_older: Pokaži starejše show_thread: Pokaži nit - sign_in_to_participate: Prijavite se, če želite sodelovati v pogovoru - title: '%{name}: »%{quote}«' + title: "%{name}: »%{quote}«" visibilities: direct: Neposredno private: Samo sledilci @@ -1704,8 +1701,6 @@ sl: min_reblogs: Obdrži objave izpostavljene vsaj min_reblogs_hint: Ne izbriše nobene od vaših objav, ki je bila vsaj tolikokrat podprta. Pustite prazno, če želite izbrisati objave ne glede na število izpostavitev stream_entries: - pinned: Pripeta objava - reblogged: izpostavljeno sensitive_content: Občutljiva vsebina strikes: errors: diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 1c2e01ce9e..d46040052c 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1,6 +1,6 @@ sq: about: - about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!' + about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک، هیچ چاودێرییەکی کۆمپانیا، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت بە لە ماستۆدۆن!' contact_missing: I parregulluar contact_unavailable: N/A hosted_on: Mastodon i strehuar në %{domain} @@ -474,6 +474,7 @@ sq: one: Përpjekje e dështuar në %{count} ditë. other: Përpjekje e dështuar në %{count} ditë të ndryshme. no_failures_recorded: S’ka dështime të regjistruara. + title: Disponueshmëria warning: Përpjekja e fundit për t’u lidhur me këtë shërbyes ka qenë e pasuksesshme back_to_all: Krejt back_to_limited: E kufizuar @@ -665,6 +666,7 @@ sq: other: "%{count} përdorues" categories: administration: Administrim + devops: DevOps invites: Ftesa moderation: Moderim special: Special @@ -715,6 +717,7 @@ sq: view_audit_log_description: U lejon përdoruesve të shohin një historik veprimesh administrative te shërbyesi view_dashboard: Shihni Pultin view_dashboard_description: U lejon përdoruesve të hyjnë te pulti dhe shohin shifra të ndryshme matjesh + view_devops: DevOps view_devops_description: U lejon përdoruesve të hyjnë në pultet Sidekiq dhe pgHero title: Role rules: @@ -737,6 +740,7 @@ sq: preamble: Elementët e markës të shërbyesit tuaj e dallojnë atë nga shërbyes të tjerë në rrjet. Këto hollësi mund të shfaqen në një larmi mjedisesh, bie fjala, në ndërfaqen web të Mastodon-it, aplikacione për platforma të ndryshme, në paraparje lidhjesh në sajte të tjerë dhe brenda aplikacionesh për shkëmbim mesazhesh, e me radhë. Për këtë arsyes, më e mira është që këto hollësi të jenë të qarta, të shkurtra dhe të kursyera. title: Elementë marke captcha_enabled: + desc_html: Гэта функцыянальнасць залежыць ад знешніх скрыптоў hCaptcha, што можа быць праблемай бяспекі і прыватнасці. Акрамя таго, гэта можа зрабіць працэс рэгістрацыі значна менш даступным для некаторых людзей, асабліва інвалідаў. Па гэтых прычынах, калі ласка, разгледзьце альтэрнатыўныя меры, такія як рэгістрацыя на аснове зацвярджэння або запрашэння. title: Kërko prej përdoruesve të rinj të zgjidhin një CAPTCHA, si ripohim të llogarisë të tyre content_retention: preamble: Kontrolloni se si depozitohen në Mastodon lënda e prodhuar nga përdoruesit. @@ -847,6 +851,7 @@ sq: other: Ndarë me të tjerë nga %{count} vetë gjatë javës së kaluar title: Lidhje në modë usage_comparison: Ndarë %{today} herë sot, kundrejt %{yesterday} dje + not_allowed_to_trend: غير مسموح ظهوره في المتداولة only_allowed: Lejuar vetëm pending_review: Në pritje të shqyrtimit preview_card_providers: @@ -884,6 +889,7 @@ sq: peaked_on_and_decaying: Kulmoi më %{date}, tani në rënie title: Hashtag-ë në modë trendable: Mund të shfaqet nën të modës + trending_rank: 'U trendu #%{rank}' usable: Mund të përdoret usage_comparison: Përdorur %{today} herë sot, krahasuar me %{yesterday} dje used_by_over_week: @@ -945,6 +951,7 @@ sq: title: Postime në modë new_trending_tags: no_approved_tags: Aktualisht s’ka hashtag-ë në modë të miratuar. + 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: Hashtag-ë në modë subject: Gjëra të reja në modë për shqyrtim te %{instance} aliases: @@ -1345,6 +1352,13 @@ sq: action: Po, shpajtomëni complete: U shpajtuat confirmation_html: Jeni i sigurt se doni të shpajtoheni prej marrjes së %{type} për Mastodon në %{domain} te email-i juaj në %{email}? Mundeni përherë të ripajtoheni, që prej rregullimeve tuaja për njoftime me email. + emails: + notification_emails: + favourite: notificaciones de me gusta por correo + follow: notificaciones de seguidores por correo + follow_request: notificaciones de peticiones de seguimiento por correo + mention: notificaciones de menciones por correo + reblog: notificaciones de impulsos por correo resubscribe_html: Nëse u shpajtuat gabimisht, mund të ripajtoheni që nga rregullimet tuaja për njoftime me email. success_html: S’do të merrni më %{type} për Mastodon në %{domain} te email juaj %{email}. title: Shpajtohuni @@ -1619,7 +1633,6 @@ sq: show_newer: Shfaq më të reja show_older: Shfaq më të vjetra show_thread: Shfaq rrjedhën - sign_in_to_participate: Bëni hyrjen, që të merrni pjesë te biseda title: '%{name}: "%{quote}"' visibilities: direct: I drejtpërdrejtë @@ -1665,8 +1678,6 @@ sq: min_reblogs: Mbaji postimet e përforcuara më shumë se min_reblogs_hint: Nuk fshihet ndonjë nga postimet tuaja që kanë marrë më shumë se sa ky numër përforcimesh. Lëreni të zbrazët për të fshirë postimet, pavarësisht të numrit të përforcimeve për to stream_entries: - pinned: Mesazh i fiksuar - reblogged: të përforcuara sensitive_content: Lëndë rezervat strikes: errors: diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 86f90849ad..9bc897eecb 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -1665,8 +1665,7 @@ sr-Latn: show_newer: Nikad ne prikazuj show_older: Prikaži starije show_thread: Prikaži niz - sign_in_to_participate: Prijavite se da učestvujete u razgovoru - title: '%{name}: „%{quote}”' + title: "%{name}: „%{quote}”" visibilities: direct: Direktno private: Samo pratioci @@ -1711,8 +1710,6 @@ sr-Latn: min_reblogs: Zadrži objave podržane barem min_reblogs_hint: Ne briše nijednu vašu objavu koja je bila podržana najmanje ovoliko puta. Ostavite prazno za brisanje objava bez obzira na njihov broj podržavanja stream_entries: - pinned: Zakačena objava - reblogged: podržano sensitive_content: Osetljiv sadržaj strikes: errors: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index fe9fab7acf..a1213dc111 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1665,8 +1665,7 @@ sr: show_newer: Никад не приказуј show_older: Прикажи старије show_thread: Прикажи низ - sign_in_to_participate: Пријавите се да учествујете у разговору - title: '%{name}: „%{quote}”' + title: "%{name}: „%{quote}”" visibilities: direct: Директно private: Само пратиоци @@ -1711,8 +1710,6 @@ sr: min_reblogs: Задржи објаве подржане барем min_reblogs_hint: Не брише ниједну вашу објаву која је била подржана најмање оволико пута. Оставите празно за брисање објава без обзира на њихов број подржавања stream_entries: - pinned: Закачена објава - reblogged: подржано sensitive_content: Осетљив садржај strikes: errors: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 7acfe278b7..57a28f9c3e 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -214,7 +214,7 @@ sv: reset_password_user: Återställ lösenord resolve_report: Lös rapport sensitive_account: Markera mediet i ditt konto som känsligt - silence_account: Tysta konto + silence_account: Begränsa konto suspend_account: Stäng av konto unassigned_report: Återkalla rapport unblock_email_account: Avblockera e-postadress @@ -1216,7 +1216,7 @@ sv: other: %{count} objekt på denna sida valda. all_matching_items_selected_html: one: "%{count} objekt som matchar din sökning är valt." - other: %{count} objekt som matchar din sökning är valda. + other: "%{count} objekt som matchar din sökning är valda." cancel: Avbryt changes_saved_msg: Ändringar sparade! confirm: Bekräfta @@ -1569,7 +1569,6 @@ sv: show_newer: Visa nyare show_older: Visa äldre show_thread: Visa tråd - sign_in_to_participate: Logga in för att delta i konversationen title: '%{name}: "%{quote}"' visibilities: direct: Direkt @@ -1615,8 +1614,6 @@ sv: min_reblogs: Behåll boostade inlägg i minst min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostar stream_entries: - pinned: Fäst inlägg - reblogged: boostad sensitive_content: Känsligt innehåll strikes: errors: diff --git a/config/locales/szl.yml b/config/locales/szl.yml index ae956fad95..c3954ddbda 100644 --- a/config/locales/szl.yml +++ b/config/locales/szl.yml @@ -5,7 +5,5 @@ szl: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/ta.yml b/config/locales/ta.yml index cb65bde898..a8f4858cda 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -202,9 +202,7 @@ ta: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. filters: index: diff --git a/config/locales/tai.yml b/config/locales/tai.yml index 01312d1c18..f347ac6200 100644 --- a/config/locales/tai.yml +++ b/config/locales/tai.yml @@ -1,3 +1,4 @@ +--- tai: errors: '400': The request you submitted was invalid or malformed. @@ -5,7 +6,5 @@ tai: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/te.yml b/config/locales/te.yml index 34c8fd9b80..71f813c1d0 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -75,7 +75,5 @@ te: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/th.yml b/config/locales/th.yml index e297f54c99..5fde84a1d2 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1601,7 +1601,6 @@ th: show_newer: แสดงที่ใหม่กว่า show_older: แสดงที่เก่ากว่า show_thread: แสดงกระทู้ - sign_in_to_participate: เข้าสู่ระบบเพื่อเข้าร่วมการสนทนา title: '%{name}: "%{quote}"' visibilities: direct: โดยตรง @@ -1647,8 +1646,6 @@ th: min_reblogs: เก็บโพสต์ที่ได้รับการดันอย่างน้อย min_reblogs_hint: ไม่ลบโพสต์ใดก็ตามของคุณที่ได้รับจำนวนครั้งการดันอย่างน้อยเท่านี้ เว้นว่างไว้เพื่อลบโพสต์โดยไม่คำนึงถึงจำนวนการดันของโพสต์ stream_entries: - pinned: โพสต์ที่ปักหมุด - reblogged: ดันแล้ว sensitive_content: เนื้อหาที่ละเอียดอ่อน strikes: errors: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 332fd22bd2..dd5a964008 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -385,10 +385,10 @@ tr: cancel: İptal et confirm: Askıya al permanent_action: Askıyı kaldırmak herhangi bir veriyi veya ilişkiyi geri getirmez. - preamble_html: %{domain} ve alt alan adlarını askıya almak üzeresiniz. + preamble_html: "%{domain} ve alt alan adlarını askıya almak üzeresiniz." remove_all_data: Bu sunucunuzdaki bu alan adının hesaplarından tüm veriyi, içeriği, ve profil verisini kaldıracaktır. stop_communication: Sunucunuzun bu sunucularla iletişimi durduracaktır. - title: '%{domain} için alan adı engelini doğrulayın' + title: "%{domain} için alan adı engelini doğrulayın" undo_relationships: Bu kendi sunucularınız ve diğerlerindeki hesaplar arasındaki herhangi bir takip ilişkisini geri alacaktır. created_msg: Domain bloğu şu an işleniyor destroyed_msg: Domain bloğu silindi @@ -870,7 +870,7 @@ tr: not_discoverable: Yazar keşfedilebilir olmamayı seçiyor shared_by: one: Bir defa paylaşıldı veya favorilendi - other: '%{friendly_count} defa paylaşıldı veya beğenildi' + other: "%{friendly_count} defa paylaşıldı veya beğenildi" title: Öne çıkan gönderiler tags: current_score: Mevcut puan %{score} @@ -1262,7 +1262,7 @@ tr: empty: Boş CSV Dosyası incompatible_type: Seçilen içe aktarma türüyle uyumsuz invalid_csv_file: 'Geçersiz CSV dosyası. Hata: %{error}' - over_rows_processing_limit: '%{count} satırdan fazlasını içeriyor' + over_rows_processing_limit: "%{count} satırdan fazlasını içeriyor" too_large: Dosya çok büyük failures: Başarısızlıklar imported: İçe aktarılan @@ -1273,17 +1273,17 @@ tr: overwrite: Üzerine yaz overwrite_long: Mevcut kayıtları yenileriyle değiştir overwrite_preambles: - blocking_html: Engel listenizi, %{filename} dosyasından, %{total_items} hesapla değiştirmek üzeresiniz. - bookmarks_html: Yerimlerinizi, %{filename} dosyasından, %{total_items} gönderiyle değiştirmek üzeresiniz. - domain_blocking_html: Alan adı engel listenizi, %{filename} dosyasından, %{total_items} alan adıyla değiştirmek üzeresiniz. - following_html: %{filename} dosyasından %{total_items} hesabı takip etmeye başlamak ve diğer herkesi takipten çıkmak üzeresiniz. - muting_html: Sessize alınmış hesaplar listenizi, %{filename} dosyasından, %{total_items} hesapla değiştirmek üzeresiniz. + blocking_html: "Engel listenizi, %{filename} dosyasından, %{total_items} hesapla değiştirmek üzeresiniz." + bookmarks_html: "Yerimlerinizi, %{filename} dosyasından, %{total_items} gönderiyle değiştirmek üzeresiniz." + domain_blocking_html: "Alan adı engel listenizi, %{filename} dosyasından, %{total_items} alan adıyla değiştirmek üzeresiniz." + following_html: "%{filename} dosyasından %{total_items} hesabı takip etmeye başlamak ve diğer herkesi takipten çıkmak üzeresiniz." + muting_html: "Sessize alınmış hesaplar listenizi, %{filename} dosyasından, %{total_items} hesapla değiştirmek üzeresiniz." preambles: - blocking_html: %{filename} dosyasından %{total_items} hesabı engellemek üzeresiniz. - bookmarks_html: %{filename} dosyasından %{total_items} gönderiyi yerimlerinize eklemek üzeresiniz. - domain_blocking_html: %{filename} dosyasından %{total_items} alan adını engellemek üzeresiniz. - following_html: %{filename} dosyasından %{total_items} hesabı takip etmek üzeresiniz. - muting_html: %{filename} dosyasından %{total_items} hesabı sessize almak üzeresiniz. + blocking_html: "%{filename} dosyasından %{total_items} hesabı engellemek üzeresiniz." + bookmarks_html: "%{filename} dosyasından %{total_items} gönderiyi yerimlerinize eklemek üzeresiniz." + domain_blocking_html: "%{filename} dosyasından %{total_items} alan adını engellemek üzeresiniz." + following_html: "%{filename} dosyasından %{total_items} hesabı takip etmek üzeresiniz." + muting_html: "%{filename} dosyasından %{total_items} hesabı sessize almak üzeresiniz." preface: Diğer sunucudan alarak oluşturduğunuz dosyalar sayesinde, bu sunucudaki hesabınıza takipçilerinizi aktarabilir veya istemediğiniz kişileri otomatik olarak engelleyebilirsiniz. recent_imports: Son içe aktarmalar states: @@ -1633,7 +1633,6 @@ tr: show_newer: Yenileri göster show_older: Eskileri göster show_thread: Konuyu göster - sign_in_to_participate: Sohbete katılmak için oturum açın title: '%{name}: "%{quote}"' visibilities: direct: Doğrudan @@ -1679,8 +1678,6 @@ tr: min_reblogs: Şundan daha fazla teşvik edilen gönderileri sakla min_reblogs_hint: Bu belirtilenden daha fazla teşvik edilen gönderilerinizin herhangi birini silmez. Teşvik sayısından bağımsız olarak gönderilerin silinmesi için burayı boş bırakın stream_entries: - pinned: Sabitlenmiş gönderi - reblogged: boostladı sensitive_content: Hassas içerik strikes: errors: diff --git a/config/locales/tt.yml b/config/locales/tt.yml index 8aa73c5847..6cab55d409 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -24,12 +24,12 @@ tt: label: Emailны үзгәртү new_email: Яңа эл. почта submit: Emailны үзгәртү - title: '%{username} өчен эл. почтаны үзгәртү' + title: "%{username} өчен эл. почтаны үзгәртү" change_role: changed_msg: Роль уңышлы үзгәртелде! label: Рольне үзгәртү no_role: Рольсез - title: '%{username} өчен рольне үзгәртү' + title: "%{username} өчен рольне үзгәртү" confirm: Раслау confirmed: Расланды delete: Мәгълүматны бетерү @@ -67,8 +67,8 @@ tt: reject: Кире кагу remove_avatar: Аватарны бетерү remove_header: Башламаны бетерү - removed_avatar_msg: '%{username} хисабының аватар рәсеме уңышлы бетерелде' - removed_header_msg: '%{username} хисабының башлам рәсеме уңышлы бетерелде' + removed_avatar_msg: "%{username} хисабының аватар рәсеме уңышлы бетерелде" + removed_header_msg: "%{username} хисабының башлам рәсеме уңышлы бетерелде" resend_confirmation: success: Тикшерү сылтамасы уңышлы җибәрелде! reset: Ташлату @@ -377,9 +377,7 @@ tt: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. exports: archive_takeout: @@ -537,7 +535,7 @@ tt: other: "%{count} рәсем" video: other: "%{count} видео" - edited_at_html: '%{date} көнне төзәтте' + edited_at_html: "%{date} көнне төзәтте" open_in_web: Веб-та ачу poll: total_people: diff --git a/config/locales/ug.yml b/config/locales/ug.yml index 1218b6fc89..c39b714907 100644 --- a/config/locales/ug.yml +++ b/config/locales/ug.yml @@ -5,7 +5,5 @@ ug: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 0d2043a81c..293ad54119 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1697,7 +1697,6 @@ uk: show_newer: Показати новіші show_older: Показати давніші show_thread: Відкрити обговорення - sign_in_to_participate: Увійдіть для участі в бесіді title: '%{name}: "%{quote}"' visibilities: direct: Особисто @@ -1743,8 +1742,6 @@ uk: min_reblogs: Залишати дописи, поширені більше ніж min_reblogs_hint: Не видаляти ваших дописів, що були поширені більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх поширень stream_entries: - pinned: Закріплений допис - reblogged: поширив sensitive_content: Дражливий зміст strikes: errors: diff --git a/config/locales/ur.yml b/config/locales/ur.yml index 4af62cbb5f..43c3c0f4de 100644 --- a/config/locales/ur.yml +++ b/config/locales/ur.yml @@ -5,7 +5,5 @@ ur: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/uz.yml b/config/locales/uz.yml index 41128d2f84..41b40d0946 100644 --- a/config/locales/uz.yml +++ b/config/locales/uz.yml @@ -44,7 +44,5 @@ uz: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/vi.yml b/config/locales/vi.yml index a90bc347e7..a9686e6f08 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1601,7 +1601,6 @@ vi: show_newer: Mới hơn show_older: Cũ hơn show_thread: Trích nguyên văn - sign_in_to_participate: Đăng nhập để trả lời tút này title: '%{name}: "%{quote}"' visibilities: direct: Nhắn riêng @@ -1647,8 +1646,6 @@ vi: min_reblogs: Giữ những tút đã đăng lại lâu hơn min_reblogs_hint: Những tút có lượt đăng lại nhiều hơn số này sẽ không bị xóa. Để trống nếu bạn muốn xóa hết stream_entries: - pinned: Tút đã ghim - reblogged: đăng lại sensitive_content: NSFW strikes: errors: diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 4a4eead7bc..2072a31701 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -87,9 +87,7 @@ zgh: '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': '429': Too many requests - '500': '503': The page could not be served due to a temporary server failure. exports: archive_takeout: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index fc01c6063c..406251a107 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -958,9 +958,9 @@ zh-CN: application_mailer: notification_preferences: 更改电子邮件首选项 salutation: "%{name}:" - settings: '使用此链接更改你的电子邮件首选项:%{link}' + settings: 使用此链接更改你的电子邮件首选项:%{link} unsubscribe: 取消订阅 - view: '点此链接查看详情:' + view: 点此链接查看详情: view_profile: 查看个人资料页 view_status: 查看嘟文 applications: @@ -1013,7 +1013,7 @@ zh-CN: rules: accept: 接受 back: 返回 - invited_by: '你可以加入%{domain},这是由于你收到了他人的邀请,邀请来自:' + invited_by: 你可以加入%{domain},这是由于你收到了他人的邀请,邀请来自: preamble: 这些由 %{domain} 监察员设置和执行。 preamble_invited: 在您继续之前,请考虑 %{domain} 的管理员设定的基本规则。 title: 一些基本规则。 @@ -1377,7 +1377,7 @@ zh-CN: move_handler: carry_blocks_over_text: 这个用户迁移自你屏蔽过的 %{acct} carry_mutes_over_text: 这个用户由你隐藏过的 %{acct} 迁移而来 - copy_account_note_text: '这个用户迁移自 %{acct},你曾为其添加备注:' + copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注: navigation: toggle_menu: 隐藏/显示菜单 notification_mailer: @@ -1601,8 +1601,7 @@ zh-CN: show_newer: 显示更新内容 show_older: 显示更早内容 show_thread: 显示全部对话 - sign_in_to_participate: 登录以加入对话 - title: '%{name}:“%{quote}”' + title: "%{name}:“%{quote}”" visibilities: direct: 私信 private: 仅关注者 @@ -1647,8 +1646,6 @@ zh-CN: min_reblogs: 保留如下嘟文:转嘟数超过 min_reblogs_hint: 转嘟数超过该阈值的的嘟文不会被删除。如果留空,则无论嘟文获得多少转嘟,都将被删除。 stream_entries: - pinned: 置顶嘟文 - reblogged: 转嘟 sensitive_content: 敏感内容 strikes: errors: diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index fceedf85e2..7073c403ac 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -1506,8 +1506,7 @@ zh-HK: show_newer: 顯示較新嘟文 show_older: 顯示較舊嘟文 show_thread: 顯示討論串 - sign_in_to_participate: 登入以加入討論 - title: '%{name}:「%{quote}」' + title: "%{name}:「%{quote}」" visibilities: direct: 私人訊息 private: 關注者觀看 @@ -1552,8 +1551,6 @@ zh-HK: min_reblogs: 保留超過嘟文轉嘟門檻 min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除嘟文。 stream_entries: - pinned: 置頂文章 - reblogged: 轉推 sensitive_content: 敏感內容 strikes: errors: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 3ac38cab90..f92b4f50c5 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -726,7 +726,9 @@ zh-TW: preamble: 您的伺服器品牌使之從聯邦宇宙網路中其他伺服器間凸顯自己。此資訊可能於各種不同的環境中顯示,例如 Mastodon 網頁介面、原生應用程式、其他網頁上的連結預覽或是其他通訊應用程式等等。因此,請盡可能保持此資訊簡潔明朗。 title: 品牌化 captcha_enabled: - desc_html: "此功能依賴於來自 hCaptcha 之外部腳本,其可能有安全及隱私顧慮。\n此外,這將大幅降低註冊流程對某些族群之易用性,特別是無障礙需求人士。基於此因,請考慮其他替代性方案,例如審核制或是邀請制之註冊流程。" + desc_html: |- + 此功能依賴於來自 hCaptcha 之外部腳本,其可能有安全及隱私顧慮。 + 此外,這將大幅降低註冊流程對某些族群之易用性,特別是無障礙需求人士。基於此因,請考慮其他替代性方案,例如審核制或是邀請制之註冊流程。 title: 要求新使用者完成 CAPTCHA 挑戰以確認帳號 content_retention: preamble: 控制使用者產生內容如何儲存於 Mastodon 上。 @@ -945,7 +947,7 @@ zh-TW: remove: 取消連結別名 appearance: advanced_web_interface: 進階網頁介面 - advanced_web_interface_hint: '進階網頁介面可讓您設定許多不同的欄位來善用螢幕空間,依需要同時查看許多不同的資訊如:首頁、通知、聯邦宇宙時間軸、任意數量的列表和主題標籤。' + advanced_web_interface_hint: 進階網頁介面可讓您設定許多不同的欄位來善用螢幕空間,依需要同時查看許多不同的資訊如:首頁、通知、聯邦宇宙時間軸、任意數量的列表和主題標籤。 animations_and_accessibility: 動畫與無障礙設定 confirmation_dialogs: 確認對話框 discovery: 探索 @@ -958,9 +960,9 @@ zh-TW: application_mailer: notification_preferences: 變更電子郵件設定 salutation: "%{name}、" - settings: '變更電子郵件設定︰%{link}' + settings: 變更電子郵件設定︰%{link} unsubscribe: 取消訂閱 - view: '進入瀏覽:' + view: 進入瀏覽: view_profile: 檢視個人檔案 view_status: 檢視嘟文 applications: @@ -1013,7 +1015,7 @@ zh-TW: rules: accept: 接受 back: 上一頁 - invited_by: '您可以藉由來自此處之邀請而加入 %{domain}' + invited_by: 您可以藉由來自此處之邀請而加入 %{domain} preamble: 這些被 %{domain} 的管管們制定以及實施。 preamble_invited: 在您繼續之前,請考慮由 %{domain} 管理員設立的伺服器規則。 title: 一些基本守則。 @@ -1236,7 +1238,7 @@ zh-TW: errors: empty: 空的 CSV 檔案 incompatible_type: 與所選的匯入類型不相容 - invalid_csv_file: '無效的 CSV 檔案。錯誤訊息:%{error}' + invalid_csv_file: 無效的 CSV 檔案。錯誤訊息:%{error} over_rows_processing_limit: 含有超過 %{count} 行 too_large: 檔案大小過大 failures: 失敗 @@ -1601,8 +1603,7 @@ zh-TW: show_newer: 顯示較新嘟文 show_older: 顯示較舊嘟文 show_thread: 顯示討論串 - sign_in_to_participate: 登入以加入討論 - title: '%{name}:「%{quote}」' + title: "%{name}:「%{quote}」" visibilities: direct: 私訊 private: 僅限跟隨者 @@ -1647,8 +1648,6 @@ zh-TW: min_reblogs: 保留超過嘟文轉嘟門檻 min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除該嘟文。 stream_entries: - pinned: 釘選嘟文 - reblogged: 轉嘟 sensitive_content: 敏感內容 strikes: errors: diff --git a/config/webpack/shared.js b/config/webpack/shared.js index bb6ae74c33..3b69282d53 100644 --- a/config/webpack/shared.js +++ b/config/webpack/shared.js @@ -34,6 +34,7 @@ module.exports = { chunkFilename: 'js/[name]-[chunkhash].chunk.js', hotUpdateChunkFilename: 'js/[id]-[hash].hot-update.js', hashFunction: 'sha256', + crossOriginLoading: 'anonymous', path: output.path, publicPath: output.publicPath, }, diff --git a/crowdin.yml b/crowdin.yml index 5cd4a744aa..d05b0e69f5 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,5 +1,10 @@ +# This is needed for the Github Action +project_id_env: CROWDIN_PROJECT_ID +api_token_env: CROWDIN_PERSONAL_TOKEN + skip_untranslated_strings: 1 commit_message: '[ci skip]' +preserve_hierarchy: true files: - source: /app/javascript/mastodon/locales/en.json translation: /app/javascript/mastodon/locales/%two_letters_code%.json diff --git a/lib/webpacker/helper_extensions.rb b/lib/webpacker/helper_extensions.rb index 8f46d76313..3872e3d86d 100644 --- a/lib/webpacker/helper_extensions.rb +++ b/lib/webpacker/helper_extensions.rb @@ -13,7 +13,14 @@ module Webpacker::HelperExtensions def preload_pack_asset(name, **options) src, integrity = current_webpacker_instance.manifest.lookup!(name, with_integrity: true) - preload_link_tag(src, options.merge(integrity: integrity)) + + # This attribute will only work if the assets are on a different domain. + # And Webpack will (correctly) only add it in this case, so we need to conditionally set it here + # otherwise the preloaded request and the real request will have different crossorigin values + # and the preloaded file wont be loaded + crossorigin = 'anonymous' if Rails.configuration.action_controller.asset_host.present? + + preload_link_tag(src, options.merge(integrity: integrity, crossorigin: crossorigin)) 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 6eac02b232..16ce95dc22 100644 --- a/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb @@ -10,6 +10,12 @@ describe Api::V1::Statuses::ReblogsController do 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 + before do allow(controller).to receive(:doorkeeper_token) { token } end diff --git a/spec/fabricators/account_fabricator.rb b/spec/fabricators/account_fabricator.rb index 6ffbba5849..534b8ae843 100644 --- a/spec/fabricators/account_fabricator.rb +++ b/spec/fabricators/account_fabricator.rb @@ -13,5 +13,6 @@ Fabricator(:account) do suspended_at { |attrs| attrs[:suspended] ? Time.now.utc : nil } silenced_at { |attrs| attrs[:silenced] ? Time.now.utc : nil } user { |attrs| attrs[:domain].nil? ? Fabricate.build(:user, account: nil) : nil } + uri { |attrs| attrs[:domain].nil? ? '' : "https://#{attrs[:domain]}/users/#{attrs[:username]}" } discoverable true end diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb index b7824ca604..c67e1f3f2b 100644 --- a/spec/helpers/statuses_helper_spec.rb +++ b/spec/helpers/statuses_helper_spec.rb @@ -114,129 +114,4 @@ describe StatusesHelper do params[:controller] = StatusesHelper::EMBEDDED_CONTROLLER params[:action] = StatusesHelper::EMBEDDED_ACTION end - - describe '#style_classes' do - it do - status = instance_double(Status, reblog?: false) - classes = helper.style_classes(status, false, false, false) - - expect(classes).to eq 'entry' - end - - it do - status = instance_double(Status, reblog?: true) - classes = helper.style_classes(status, false, false, false) - - expect(classes).to eq 'entry entry-reblog' - end - - it do - status = instance_double(Status, reblog?: false) - classes = helper.style_classes(status, true, false, false) - - expect(classes).to eq 'entry entry-predecessor' - end - - it do - status = instance_double(Status, reblog?: false) - classes = helper.style_classes(status, false, true, false) - - expect(classes).to eq 'entry entry-successor' - end - - it do - status = instance_double(Status, reblog?: false) - classes = helper.style_classes(status, false, false, true) - - expect(classes).to eq 'entry entry-center' - end - - it do - status = instance_double(Status, reblog?: true) - classes = helper.style_classes(status, true, true, true) - - expect(classes).to eq 'entry entry-predecessor entry-reblog entry-successor entry-center' - end - end - - describe '#microformats_classes' do - it do - status = instance_double(Status, reblog?: false) - classes = helper.microformats_classes(status, false, false) - - expect(classes).to eq '' - end - - it do - status = instance_double(Status, reblog?: false) - classes = helper.microformats_classes(status, true, false) - - expect(classes).to eq 'p-in-reply-to' - end - - it do - status = instance_double(Status, reblog?: false) - classes = helper.microformats_classes(status, false, true) - - expect(classes).to eq 'p-comment' - end - - it do - status = instance_double(Status, reblog?: true) - classes = helper.microformats_classes(status, true, false) - - expect(classes).to eq 'p-in-reply-to p-repost-of' - end - - it do - status = instance_double(Status, reblog?: true) - classes = helper.microformats_classes(status, true, true) - - expect(classes).to eq 'p-in-reply-to p-repost-of p-comment' - end - end - - describe '#microformats_h_class' do - it do - status = instance_double(Status, reblog?: false) - css_class = helper.microformats_h_class(status, false, false, false) - - expect(css_class).to eq 'h-entry' - end - - it do - status = instance_double(Status, reblog?: true) - css_class = helper.microformats_h_class(status, false, false, false) - - expect(css_class).to eq 'h-cite' - end - - it do - status = instance_double(Status, reblog?: false) - css_class = helper.microformats_h_class(status, true, false, false) - - expect(css_class).to eq 'h-cite' - end - - it do - status = instance_double(Status, reblog?: false) - css_class = helper.microformats_h_class(status, false, true, false) - - expect(css_class).to eq 'h-cite' - end - - it do - status = instance_double(Status, reblog?: false) - css_class = helper.microformats_h_class(status, false, false, true) - - expect(css_class).to eq '' - end - - it do - status = instance_double(Status, reblog?: true) - css_class = helper.microformats_h_class(status, true, true, true) - - expect(css_class).to eq 'h-cite' - end - end end diff --git a/spec/lib/account_reach_finder_spec.rb b/spec/lib/account_reach_finder_spec.rb index 7c6c20968f..e5d85656a2 100644 --- a/spec/lib/account_reach_finder_spec.rb +++ b/spec/lib/account_reach_finder_spec.rb @@ -5,15 +5,15 @@ require 'rails_helper' RSpec.describe AccountReachFinder do let(:account) { Fabricate(:account) } - let(:ap_follower_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-1') } - let(:ap_follower_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-2') } - let(:ap_follower_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/a/inbox', shared_inbox_url: 'https://foo.bar/inbox') } + let(:ap_follower_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-1', domain: 'example.com') } + let(:ap_follower_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-2', domain: 'example.org') } + let(:ap_follower_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/a/inbox', domain: 'foo.bar', shared_inbox_url: 'https://foo.bar/inbox') } - let(:ap_mentioned_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/b/inbox', shared_inbox_url: 'https://foo.bar/inbox') } - let(:ap_mentioned_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-3') } - let(:ap_mentioned_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-4') } + let(:ap_mentioned_with_shared) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/users/b/inbox', domain: 'foo.bar', shared_inbox_url: 'https://foo.bar/inbox') } + let(:ap_mentioned_example_com) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/inbox-3', domain: 'example.com') } + let(:ap_mentioned_example_org) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.org/inbox-4', domain: 'example.org') } - let(:unrelated_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/unrelated-inbox') } + let(:unrelated_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://example.com/unrelated-inbox', domain: 'example.com') } before do ap_follower_example_com.follow!(account) diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb index 365861bcd8..8ad892975d 100644 --- a/spec/lib/activitypub/activity/announce_spec.rb +++ b/spec/lib/activitypub/activity/announce_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' RSpec.describe ActivityPub::Activity::Announce do subject { described_class.new(json, sender) } - let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor') } + let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor', domain: 'example.com') } let(:recipient) { Fabricate(:account) } let(:status) { Fabricate(:status, account: recipient) } @@ -114,7 +114,7 @@ RSpec.describe ActivityPub::Activity::Announce do context 'when the sender is relayed' do subject { described_class.new(json, sender, relayed_through_actor: relay_account) } - let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox') } + let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox', domain: 'relay.example.com') } let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') } let(:object_json) { 'https://example.com/actor/hello-world' } diff --git a/spec/lib/activitypub/activity/update_spec.rb b/spec/lib/activitypub/activity/update_spec.rb index f77279c028..87e96d2d1b 100644 --- a/spec/lib/activitypub/activity/update_spec.rb +++ b/spec/lib/activitypub/activity/update_spec.rb @@ -5,22 +5,38 @@ require 'rails_helper' RSpec.describe ActivityPub::Activity::Update do subject { described_class.new(json, sender) } - let!(:sender) { Fabricate(:account) } - - before do - sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender)) - end + let!(:sender) { Fabricate(:account, domain: 'example.com', inbox_url: 'https://example.com/foo/inbox', outbox_url: 'https://example.com/foo/outbox') } describe '#perform' do context 'with an Actor object' do - let(:modified_sender) do - sender.tap do |modified_sender| - modified_sender.display_name = 'Totally modified now' - end - end - let(:actor_json) do - ActiveModelSerializers::SerializableResource.new(modified_sender, serializer: ActivityPub::ActorSerializer, adapter: ActivityPub::Adapter).as_json + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + 'https://w3id.org/security/v1', + { + manuallyApprovesFollowers: 'as:manuallyApprovesFollowers', + toot: 'http://joinmastodon.org/ns#', + featured: { '@id': 'toot:featured', '@type': '@id' }, + featuredTags: { '@id': 'toot:featuredTags', '@type': '@id' }, + }, + ], + id: sender.uri, + type: 'Person', + following: 'https://example.com/users/dfsdf/following', + followers: 'https://example.com/users/dfsdf/followers', + inbox: sender.inbox_url, + outbox: sender.outbox_url, + featured: 'https://example.com/users/dfsdf/featured', + featuredTags: 'https://example.com/users/dfsdf/tags', + preferredUsername: sender.username, + name: 'Totally modified now', + publicKey: { + id: "#{sender.uri}#main-key", + owner: sender.uri, + publicKeyPem: sender.public_key, + }, + } end let(:json) do @@ -28,7 +44,7 @@ RSpec.describe ActivityPub::Activity::Update do '@context': 'https://www.w3.org/ns/activitystreams', id: 'foo', type: 'Update', - actor: ActivityPub::TagManager.instance.uri_for(sender), + actor: sender.uri, object: actor_json, }.with_indifferent_access end @@ -38,6 +54,7 @@ RSpec.describe ActivityPub::Activity::Update do stub_request(:get, actor_json[:followers]).to_return(status: 404) stub_request(:get, actor_json[:following]).to_return(status: 404) stub_request(:get, actor_json[:featured]).to_return(status: 404) + stub_request(:get, actor_json[:featuredTags]).to_return(status: 404) subject.perform end @@ -49,17 +66,17 @@ RSpec.describe ActivityPub::Activity::Update do context 'with a Question object' do let!(:at_time) { Time.now.utc } - let!(:status) { Fabricate(:status, account: sender, poll: Poll.new(account: sender, options: %w(Bar Baz), cached_tallies: [0, 0], expires_at: at_time + 5.days)) } + let!(:status) { Fabricate(:status, uri: 'https://example.com/statuses/poll', account: sender, poll: Poll.new(account: sender, options: %w(Bar Baz), cached_tallies: [0, 0], expires_at: at_time + 5.days)) } let(:json) do { '@context': 'https://www.w3.org/ns/activitystreams', id: 'foo', type: 'Update', - actor: ActivityPub::TagManager.instance.uri_for(sender), + actor: sender.uri, object: { type: 'Question', - id: ActivityPub::TagManager.instance.uri_for(status), + id: status.uri, content: 'Foo', endTime: (at_time + 5.days).iso8601, oneOf: [ diff --git a/spec/lib/activitypub/linked_data_signature_spec.rb b/spec/lib/activitypub/linked_data_signature_spec.rb index 619d6df124..6a6ad1a706 100644 --- a/spec/lib/activitypub/linked_data_signature_spec.rb +++ b/spec/lib/activitypub/linked_data_signature_spec.rb @@ -7,7 +7,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do subject { described_class.new(json) } - let!(:sender) { Fabricate(:account, uri: 'http://example.com/alice') } + let!(:sender) { Fabricate(:account, uri: 'http://example.com/alice', domain: 'example.com') } let(:raw_json) do { diff --git a/spec/lib/activitypub/tag_manager_spec.rb b/spec/lib/activitypub/tag_manager_spec.rb index 596e91e954..2bff125a6a 100644 --- a/spec/lib/activitypub/tag_manager_spec.rb +++ b/spec/lib/activitypub/tag_manager_spec.rb @@ -139,7 +139,7 @@ RSpec.describe ActivityPub::TagManager do end it 'returns the remote account by matching URI without fragment part' do - account = Fabricate(:account, uri: 'https://example.com/123') + account = Fabricate(:account, uri: 'https://example.com/123', domain: 'example.com') expect(subject.uri_to_resource('https://example.com/123#456', Account)).to eq account end diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 3efb97cb18..636c2d4257 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -8,19 +8,6 @@ RSpec.describe NotificationMailer do let(:foreign_status) { Fabricate(:status, account: sender, text: 'The body of the foreign status') } let(:own_status) { Fabricate(:status, account: receiver.account, text: 'The body of the own status') } - shared_examples 'localized subject' do |*args, **kwrest| - it 'renders subject localized for the locale of the receiver' do - locale = :de - receiver.update!(locale: locale) - expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: locale)) - end - - it 'renders subject localized for the default locale if the locale of the receiver is unavailable' do - receiver.update!(locale: nil) - expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: I18n.default_locale)) - end - end - describe 'mention' do let(:mention) { Mention.create!(account: receiver.account, status: foreign_status) } let(:notification) { Notification.create!(account: receiver.account, activity: mention) } diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb index 3c42a2bb7a..5affa66e07 100644 --- a/spec/mailers/user_mailer_spec.rb +++ b/spec/mailers/user_mailer_spec.rb @@ -5,19 +5,6 @@ require 'rails_helper' describe UserMailer do let(:receiver) { Fabricate(:user) } - shared_examples 'localized subject' do |*args, **kwrest| - it 'renders subject localized for the locale of the receiver' do - locale = :de - receiver.update!(locale: locale) - expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: locale)) - end - - it 'renders subject localized for the default locale if the locale of the receiver is unavailable' do - receiver.update!(locale: nil) - expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: I18n.default_locale)) - end - end - describe 'confirmation_instructions' do let(:mail) { described_class.confirmation_instructions(receiver, 'spec') } diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index d473a819e7..cf593349a7 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -963,12 +963,12 @@ RSpec.describe Account do context 'when is remote' do it 'does not generate keys' do key = OpenSSL::PKey::RSA.new(1024).public_key - account = described_class.create!(domain: 'remote', username: Faker::Internet.user_name(separators: ['_']), public_key: key.to_pem) + account = described_class.create!(domain: 'remote', uri: 'https://remote/actor', username: Faker::Internet.user_name(separators: ['_']), public_key: key.to_pem) expect(account.keypair.params).to eq key.params end it 'normalizes domain' do - account = described_class.create!(domain: 'にゃん', username: Faker::Internet.user_name(separators: ['_'])) + account = described_class.create!(domain: 'にゃん', uri: 'https://xn--r9j5b5b/actor', username: Faker::Internet.user_name(separators: ['_'])) expect(account.domain).to eq 'xn--r9j5b5b' end end diff --git a/spec/requests/api/v1/statuses/favourites_spec.rb b/spec/requests/api/v1/statuses/favourites_spec.rb index 021b8806ed..ac5e86f297 100644 --- a/spec/requests/api/v1/statuses/favourites_spec.rb +++ b/spec/requests/api/v1/statuses/favourites_spec.rb @@ -77,6 +77,12 @@ RSpec.describe 'Favourites' do 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 @@ -88,6 +94,9 @@ RSpec.describe 'Favourites' do subject expect(response).to have_http_status(200) + expect(user.account.favourited?(status)).to be true + + UnfavouriteWorker.drain expect(user.account.favourited?(status)).to be false end @@ -110,6 +119,9 @@ RSpec.describe 'Favourites' do subject expect(response).to have_http_status(200) + expect(user.account.favourited?(status)).to be true + + UnfavouriteWorker.drain expect(user.account.favourited?(status)).to be false end diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb index 61e5c3c9b6..68ab491e4e 100644 --- a/spec/services/delete_account_service_spec.rb +++ b/spec/services/delete_account_service_spec.rb @@ -65,8 +65,8 @@ RSpec.describe DeleteAccountService, type: :service do stub_request(:post, 'https://bob.com/inbox').to_return(status: 201) end - let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', protocol: :activitypub) } - let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } + let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', domain: 'alice.com', protocol: :activitypub) } + let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', domain: 'bob.com', protocol: :activitypub) } include_examples 'common behavior' do let!(:account) { Fabricate(:account) } @@ -87,12 +87,34 @@ RSpec.describe DeleteAccountService, type: :service do end include_examples 'common behavior' do - let!(:account) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } + let!(:account) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } let!(:local_follower) { Fabricate(:account) } - it 'sends a reject follow to follower inboxes' do + it 'sends expected activities to followed and follower inboxes' do subject - expect(a_request(:post, account.inbox_url)).to have_been_made.once + + expect(a_request(:post, account.inbox_url).with( + body: + hash_including({ + 'type' => 'Reject', + 'object' => hash_including({ + 'type' => 'Follow', + 'actor' => account.uri, + 'object' => ActivityPub::TagManager.instance.uri_for(local_follower), + }), + }) + )).to have_been_made.once + + expect(a_request(:post, account.inbox_url).with( + body: hash_including({ + 'type' => 'Undo', + 'object' => hash_including({ + 'type' => 'Follow', + 'actor' => ActivityPub::TagManager.instance.uri_for(local_follower), + 'object' => account.uri, + }), + }) + )).to have_been_made.once end end end diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index ed22a8147a..f446d0ca6d 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -209,11 +209,6 @@ RSpec.describe ResolveAccountService, type: :service do fail_occurred = false return_values = Concurrent::Array.new - # Preload classes that throw circular dependency errors in threads - Account - TagManager - DomainBlock - threads = Array.new(5) do Thread.new do true while wait_for_start diff --git a/spec/services/resolve_url_service_spec.rb b/spec/services/resolve_url_service_spec.rb index 99761b6c73..7991aa6ef1 100644 --- a/spec/services/resolve_url_service_spec.rb +++ b/spec/services/resolve_url_service_spec.rb @@ -8,7 +8,7 @@ describe ResolveURLService, type: :service do describe '#call' do it 'returns nil when there is no resource url' do url = 'http://example.com/missing-resource' - known_account = Fabricate(:account, uri: url) + known_account = Fabricate(:account, uri: url, domain: 'example.com') service = instance_double(FetchResourceService) allow(FetchResourceService).to receive(:new).and_return service @@ -20,7 +20,7 @@ describe ResolveURLService, type: :service do it 'returns known account on temporary error' do url = 'http://example.com/missing-resource' - known_account = Fabricate(:account, uri: url) + known_account = Fabricate(:account, uri: url, domain: 'example.com') service = instance_double(FetchResourceService) allow(FetchResourceService).to receive(:new).and_return service diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb index f9206b7ea2..7cdbc873e3 100644 --- a/spec/services/suspend_account_service_spec.rb +++ b/spec/services/suspend_account_service_spec.rb @@ -44,8 +44,8 @@ RSpec.describe SuspendAccountService, type: :service do include_examples 'common behavior' do let!(:account) { Fabricate(:account) } - let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub) } - let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } + let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub, domain: 'alice.com') } + let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } let!(:report) { Fabricate(:report, account: remote_reporter, target_account: account) } before do diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb index 7ef2630aeb..3c13d5bd39 100644 --- a/spec/services/unsuspend_account_service_spec.rb +++ b/spec/services/unsuspend_account_service_spec.rb @@ -38,8 +38,8 @@ RSpec.describe UnsuspendAccountService, type: :service do include_examples 'with common context' do let!(:account) { Fabricate(:account) } - let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub) } - let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } + let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub, domain: 'alice.com') } + let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } let!(:report) { Fabricate(:report, account: remote_reporter, target_account: account) } before do diff --git a/spec/support/examples/mailers.rb b/spec/support/examples/mailers.rb new file mode 100644 index 0000000000..213e873b4e --- /dev/null +++ b/spec/support/examples/mailers.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +shared_examples 'localized subject' do |*args, **kwrest| + it 'renders subject localized for the locale of the receiver' do + locale = :de + receiver.update!(locale: locale) + expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: locale)) + end + + it 'renders subject localized for the default locale if the locale of the receiver is unavailable' do + receiver.update!(locale: nil) + expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: I18n.default_locale)) + end +end diff --git a/spec/workers/activitypub/distribute_poll_update_worker_spec.rb b/spec/workers/activitypub/distribute_poll_update_worker_spec.rb index 947acab3bc..0bdbf63903 100644 --- a/spec/workers/activitypub/distribute_poll_update_worker_spec.rb +++ b/spec/workers/activitypub/distribute_poll_update_worker_spec.rb @@ -6,7 +6,7 @@ describe ActivityPub::DistributePollUpdateWorker do subject { described_class.new } let(:account) { Fabricate(:account) } - let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com') } + let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com', domain: 'example.com') } let(:poll) { Fabricate(:poll, account: account) } let!(:status) { Fabricate(:status, account: account, poll: poll) } diff --git a/spec/workers/activitypub/distribution_worker_spec.rb b/spec/workers/activitypub/distribution_worker_spec.rb index 06d6ac7383..d8803f6b8a 100644 --- a/spec/workers/activitypub/distribution_worker_spec.rb +++ b/spec/workers/activitypub/distribution_worker_spec.rb @@ -6,7 +6,7 @@ describe ActivityPub::DistributionWorker do subject { described_class.new } let(:status) { Fabricate(:status) } - let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com') } + let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com', domain: 'example.com') } describe '#perform' do before do @@ -36,7 +36,7 @@ describe ActivityPub::DistributionWorker do end context 'with direct status' do - let(:mentioned_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/inbox') } + let(:mentioned_account) { Fabricate(:account, protocol: :activitypub, inbox_url: 'https://foo.bar/inbox', domain: 'foo.bar') } before do status.update(visibility: :direct) diff --git a/spec/workers/activitypub/fetch_replies_worker_spec.rb b/spec/workers/activitypub/fetch_replies_worker_spec.rb index 91ef3c4b92..ff4d049a26 100644 --- a/spec/workers/activitypub/fetch_replies_worker_spec.rb +++ b/spec/workers/activitypub/fetch_replies_worker_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ActivityPub::FetchRepliesWorker do subject { described_class.new } - let(:account) { Fabricate(:account, uri: 'https://example.com/user/1') } + let(:account) { Fabricate(:account, domain: 'example.com') } let(:status) { Fabricate(:status, account: account) } let(:payload) do diff --git a/spec/workers/activitypub/move_distribution_worker_spec.rb b/spec/workers/activitypub/move_distribution_worker_spec.rb index 4df6b2f161..b8601f78cf 100644 --- a/spec/workers/activitypub/move_distribution_worker_spec.rb +++ b/spec/workers/activitypub/move_distribution_worker_spec.rb @@ -6,8 +6,8 @@ describe ActivityPub::MoveDistributionWorker do subject { described_class.new } let(:migration) { Fabricate(:account_migration) } - let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com') } - let(:blocker) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example2.com') } + let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com', domain: 'example.com') } + let(:blocker) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example2.com', domain: 'example2.com') } describe '#perform' do before do diff --git a/spec/workers/activitypub/status_update_distribution_worker_spec.rb b/spec/workers/activitypub/status_update_distribution_worker_spec.rb index cf55a461d8..c500bac959 100644 --- a/spec/workers/activitypub/status_update_distribution_worker_spec.rb +++ b/spec/workers/activitypub/status_update_distribution_worker_spec.rb @@ -6,7 +6,7 @@ describe ActivityPub::StatusUpdateDistributionWorker do subject { described_class.new } let(:status) { Fabricate(:status, text: 'foo') } - let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com') } + let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com', domain: 'example.com') } describe '#perform' do before do diff --git a/spec/workers/activitypub/update_distribution_worker_spec.rb b/spec/workers/activitypub/update_distribution_worker_spec.rb index 7b1e6ff543..d0eeda43bf 100644 --- a/spec/workers/activitypub/update_distribution_worker_spec.rb +++ b/spec/workers/activitypub/update_distribution_worker_spec.rb @@ -6,7 +6,7 @@ describe ActivityPub::UpdateDistributionWorker do subject { described_class.new } let(:account) { Fabricate(:account) } - let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com') } + let(:follower) { Fabricate(:account, protocol: :activitypub, inbox_url: 'http://example.com', domain: 'example.com') } describe '#perform' do before do