Merge commit '42698b4c5c
' into kb_migration
This commit is contained in:
commit
152b8eb4e6
215 changed files with 1302 additions and 914 deletions
56
.github/ISSUE_TEMPLATE/1.bug_report.yml
vendored
56
.github/ISSUE_TEMPLATE/1.bug_report.yml
vendored
|
@ -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
|
76
.github/ISSUE_TEMPLATE/1.web_bug_report.yml
vendored
Normal file
76
.github/ISSUE_TEMPLATE/1.web_bug_report.yml
vendored
Normal file
|
@ -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
|
65
.github/ISSUE_TEMPLATE/2.server_bug_report.yml
vendored
Normal file
65
.github/ISSUE_TEMPLATE/2.server_bug_report.yml
vendored
Normal file
|
@ -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
|
9
.github/workflows/build-nightly.yml
vendored
9
.github/workflows/build-nightly.yml
vendored
|
@ -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
|
||||
|
|
9
.github/workflows/build-push-pr.yml
vendored
9
.github/workflows/build-push-pr.yml
vendored
|
@ -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
|
||||
|
|
76
.github/workflows/crowdin-download.yml
vendored
Normal file
76
.github/workflows/crowdin-download.yml
vendored
Normal file
|
@ -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 <noreply@github.com>'
|
||||
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
|
35
.github/workflows/crowdin-upload.yml
vendored
Normal file
35
.github/workflows/crowdin-upload.yml
vendored
Normal file
|
@ -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 }}
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
1
Gemfile
1
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'
|
||||
|
|
17
Gemfile.lock
17
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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -190,6 +190,7 @@ class SwitchingColumnsArea extends PureComponent {
|
|||
|
||||
{singleColumn ? <Redirect from='/deck' to='/home' exact /> : null}
|
||||
{singleColumn && pathName.startsWith('/deck/') ? <Redirect from={pathName} to={pathName.slice(5)} /> : null}
|
||||
{!singleColumn && pathName === '/getting-started' ? <Redirect from='/getting-started' to='/deck/getting-started' exact /> : null}
|
||||
|
||||
<WrappedRoute path='/getting-started' component={GettingStarted} content={children} />
|
||||
<WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} />
|
||||
|
|
|
@ -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": "Лакальная стужка",
|
||||
|
|
|
@ -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": "Локална часова ос",
|
||||
|
|
|
@ -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": "<strong>তুমি কি জানতে?</strong> যেহেতু মাস্টোডন বিকেন্দ্রীভূত, কিছু অ্যাকাউন্ট তোমার নিজের ছাড়া অন্য কোনো সার্ভারে থাকতে পারে। অথচ তুমি তাদের সাথে কোনো সমস্যা ছাড়াই কথা বলতে পারছো! তাদের সার্ভার তাদের ব্যবহারকারী নামের দ্বিতীয় অর্ধাংশ!",
|
||||
"poll.closed": "বন্ধ",
|
||||
"poll.refresh": "বদলেছে কিনা দেখতে",
|
||||
"poll.total_people": "{count, plural, one {# ব্যক্তি} other {# ব্যক্তি}}",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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.",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "خط زمانی محلّی",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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.",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "プロフィールを完成させる",
|
||||
|
|
|
@ -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})",
|
||||
|
|
|
@ -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": "ဒေသစံတော်ချိန်",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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.",
|
||||
|
|
|
@ -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": "Посты только на выбранных языках будут отображаться на вашей домашней странице и в списке лент после изменения. Выберите «Нет», чтобы получать посты на всех языках.",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "本站時間軸",
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
@ -30,6 +30,7 @@ class StatusRelationshipsPresenter
|
|||
@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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ class ActivityPub::ProcessAccountService < BaseService
|
|||
|
||||
set_immediate_protocol_attributes!
|
||||
|
||||
@account.save
|
||||
@account.save!
|
||||
end
|
||||
|
||||
def update_account
|
||||
|
|
|
@ -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') }
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
16
app/views/auth/registrations/_session.html.haml
Normal file
16
app/views/auth/registrations/_session.html.haml
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
%hr.spacer/
|
||||
|
||||
= render 'sessions'
|
||||
= render partial: 'sessions', object: @sessions
|
||||
|
||||
- unless current_account.suspended?
|
||||
%hr.spacer/
|
||||
|
|
|
@ -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 }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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?
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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}%"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
sa:
|
||||
activerecord:
|
||||
attributes:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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: সত্যতা নির্ধারণ
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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: <strong>Consell:</strong> l'enllaç al vostre lloc web pot ser invisible. La part important és <code>rel="me"</code> que evita que us suplantin la identitat a llocs web amb contingut generat pels usuaris. Fins i tot podeu generar una etiqueta <code>link</code> a la capçalera de la pàgina en comptes d'una <code>a</code>, però el codi HTML ha de ser accessible sense requerir executar JavaScript.
|
||||
here_is_how: Així és com
|
||||
hint_html: "<strong>Verifikimi i identitetit të secilit në Mastodon është për këdo.</strong> 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
|
||||
|
|
|
@ -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: لەگەڵ ناوی پێشوو یەک ناگرێتەوە
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 <strong>%{count}</strong> eitem sy'n cyfateb i'ch chwiliad wedi'u dewis.
|
||||
many: Mae pob un o'r <strong>%{count}</strong> eitem sy'n cyfateb i'ch chwiliad wedi'u dewis.
|
||||
other: Mae pob un o'r <strong>%{count}</strong> eitem sy'n cyfateb i'ch chwiliad wedi'u dewis.
|
||||
two: Mae pob un o'r <strong>%{count}</strong> eitem sy'n cyfateb i'ch chwiliad wedi'u dewis.
|
||||
zero: Does <strong>%{count}</strong> 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:
|
||||
|
|
|
@ -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 <strong>%{domain}</strong> 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 <strong>dette gøre registreringsprocessen betydeligt mindre tilgængelig for nogle (især deaktiveret) personer</strong>. 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: "<strong>Tilpas hvad folk ser på din offentlige profil og ved siden af dine indlæg.</strong> 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 <a href="%{settings_path}">e-mail-notifikationsindstillinger</a>.
|
||||
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 <a href="%{settings_path}">e-mail-notifikationsindstillinger</a>.
|
||||
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: <strong>Tip:</strong> Linket på din hjemmeside kan være usynligt. Den vigtige del er <code>rel="me"</code> , som forhindrer impersonation på websteder med brugergenereret indhold. Du kan endda bruge et <code>link</code> tag i overskriften på siden i stedet for <code>a</code>, men HTML skal være tilgængelig uden at udføre JavaScript.
|
||||
here_is_how: Sådan gør du
|
||||
hint_html: "<strong>Bekræftelse af din identitet på Mastodon er for alle.</strong> 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:
|
||||
|
|
|
@ -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 <strong>@%{acct}</strong> 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: <strong>@%{acct}</strong> 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: <strong>Alle</strong> Meldungen gegen <strong>@%{acct}</strong> als erledigt markieren
|
||||
suspend_html: "<strong>@%{acct}</strong> 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: "<strong>Alle</strong> Meldungen gegen <strong>@%{acct}</strong> als erledigt markieren"
|
||||
delete_data_html: Das Profil und die Inhalte von <strong>@%{acct}</strong> werden in 30 Tagen gelöscht, es sei denn, sie werden in der Zwischenzeit entsperrt
|
||||
preview_preamble_html: "<strong>@%{acct}</strong> wird eine Warnung mit folgenden Inhalten erhalten:"
|
||||
record_strike_html: Einen Verstoß gegen <strong>@%{acct}</strong> eintragen, um bei zukünftigen Verstößen desselben Kontos besser reagieren zu können
|
||||
send_email_html: <strong>@%{acct}</strong> eine Verwarnung per E-Mail senden
|
||||
send_email_html: "<strong>@%{acct}</strong> 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:
|
||||
|
|
|
@ -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 <a href=\"%{terms_path}\">de regels fan de server</a> en <a href=\"%{policy_path}\">ús tsjinstbetingsten</a>."
|
||||
extra_html: |-
|
||||
128 / 5.000
|
||||
Kontrolearje ek <a href="%{terms_path}">de regels fan de server</a> en <a href="%{policy_path}">ús tsjinstbetingsten</a>.
|
||||
subject: 'Mastodon: Befêstigingsynstruksjes foar %{instance}'
|
||||
title: E-mailadres ferifiearje
|
||||
email_changed:
|
||||
|
|
|
@ -43,7 +43,7 @@ zh-CN:
|
|||
action: 更改密码
|
||||
explanation: 点击下面的链接来更改账户的密码。
|
||||
extra: 如果你并没有请求本次变更,请忽略此邮件。你的密码只有在你点击上面的链接并输入新密码后才会更改。
|
||||
subject: 'Mastodon:重置密码说明'
|
||||
subject: Mastodon:重置密码说明
|
||||
title: 重置密码
|
||||
two_factor_disabled:
|
||||
explanation: 账号的双重认证已禁用。现在仅使用邮箱和密码即可登录。
|
||||
|
|
|
@ -59,7 +59,7 @@ eo:
|
|||
error:
|
||||
title: Eraro okazis
|
||||
new:
|
||||
prompt_html: "%{client_name} volas permeso por aliri vian konton. <strong>Se vi ne konfidu ĝin, ne rajtigu ĝin.</strong>"
|
||||
prompt_html: "%{client_name} petas permeson por aliri vian konton. <strong>Se vi ne fidas ĝin, ne rajtigu ĝin.</strong>"
|
||||
review_permissions: Revizu permesojn
|
||||
title: Rajtigo bezonata
|
||||
show:
|
||||
|
|
|
@ -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: دریافت آگاهیای ارسالیتان
|
||||
|
|
|
@ -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: 게시물 게시
|
||||
|
|
|
@ -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: 接收帳號的推播通知
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -1236,7 +1236,7 @@ eo:
|
|||
other: <strong>%{count}</strong> eroj ĉe ĉi tiu paĝo elektitas.
|
||||
all_matching_items_selected_html:
|
||||
one: "<strong>%{count}</strong> ero kiu kongruas vian serĉon elektitas."
|
||||
other: <strong>%{count}</strong> eroj kiuj kongruas vian serĉon elektitas.
|
||||
other: "<strong>%{count}</strong> 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:
|
||||
|
|
|
@ -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: "<strong>%{count}</strong> elemento que coincide con tu búsqueda está seleccionado."
|
||||
other: Todos los <strong>%{count}</strong> 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 <a href="%{settings_path}"> configuración de notificaciones por correo electrónico.</a>.'
|
||||
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 <a href="%{settings_path}"> configuración de notificaciones por correo electrónico.</a>.
|
||||
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:
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue