Compare commits

...

64 commits

Author SHA1 Message Date
33ec036619 Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-17 09:27:49 +02:00
github-actions[bot]
66430cb25c
New Crowdin Translations (automated) (#31038)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-07-16 15:24:56 +00:00
Adam Niedzielski
a609940ec9
Fix test description in hashtag_bar (#30827) 2024-07-16 13:23:26 +00:00
Emelia Smith
aa88aca0ad
Add optional OAuth application to reports (#30539) 2024-07-16 13:23:08 +00:00
Adam Niedzielski
fa54b61216
Handle missing links in Webfinger response (#31030) 2024-07-16 13:21:16 +00:00
renovate[bot]
c27d194eb2
fix(deps): update dependency pino to v9.3.1 (#31032)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-16 13:20:34 +00:00
renovate[bot]
c3a2f9d993
chore(deps): update dependency json-schema to v4.3.1 (#31012)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-16 12:14:25 +00:00
Michael Stanclift
905921b2ef
Add missing "Update Report" string in audit log (#31033) 2024-07-16 07:06:19 +00:00
David Roetzel
9d0bce4072
Move filtered notifications bar in scrollable area (#30996)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-07-15 13:42:47 +00:00
renovate[bot]
0b97ec3f7b
fix(deps): update dependency @babel/core to v7.24.9 (#31029)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-15 13:03:57 +00:00
Matt Jankowski
543b59fa14
Clean up theme_helper style builders (#30617) 2024-07-15 13:03:23 +00:00
Matt Jankowski
91ef4a6fc5
Add assertion about key columns to account key generate spec (#30635) 2024-07-15 10:42:18 +00:00
Claire
1dd8262071
Add optional filtered attribute to notification entities in REST API (#31011) 2024-07-15 09:29:57 +00:00
github-actions[bot]
17117109ad
New Crowdin Translations (automated) (#31018)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-07-15 07:44:37 +00:00
mogaminsk
d61b536df3
Add i18n strings for instance favicon and logo settings label (#31016) 2024-07-15 07:38:48 +00:00
Matt Jankowski
00cb4a0313
Avoid repeated factory creation in media_attachments_vacuum_spec (#31000) 2024-07-12 14:09:16 +00:00
Emelia Smith
c953dca1de
Streaming: use pgPool.query instead of manually acquiring & releasing a connection (#30964) 2024-07-12 12:23:09 +00:00
renovate[bot]
b87c41115e
chore(deps): update dependency rubocop-rspec to v3.0.3 (#31009)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-12 12:20:32 +00:00
David Roetzel
35a437a03f
Destroy NotificationRequests that are dismissed (#31008) 2024-07-12 12:09:52 +00:00
renovate[bot]
c929b4cace
chore(deps): update dependency pghero to v3.6.0 (#30994)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-12 09:29:43 +00:00
renovate[bot]
9cc0607358
chore(deps): update dependency database_cleaner-active_record to v2.2.0 (#31007)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-12 09:29:10 +00:00
Matt Jankowski
43e24dbb13
Use include_pagination_headers in more places (#30999) 2024-07-12 08:30:52 +00:00
github-actions[bot]
28ad3588e4
New Crowdin Translations (automated) (#31006)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-07-12 08:25:27 +00:00
renovate[bot]
fdad4dc918
fix(deps): update babel monorepo to v7.24.8 (#31002)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-12 08:23:04 +00:00
Nick Schonning
cd1bc94cd2
Regen RuboCop TODO for 1.65.0 (#31003) 2024-07-12 08:22:31 +00:00
Matt Jankowski
73d53827ea
Add change assertion to invites destroy spec (#31004) 2024-07-12 08:19:15 +00:00
renovate[bot]
bb702e6b20
fix(deps): update dependency sass to v1.77.8 (#31005)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-12 08:18:35 +00:00
Claire
ad52b04a1c
Add setting to disable hover cards (#30931)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2024-07-11 19:42:58 +00:00
Renaud Chaput
8c8bee5a36
Change disabled buttons color in light mode to make it more visible (#30998) 2024-07-11 13:43:42 +00:00
Matt Jankowski
6c37529723
Use module: :auth to wrap devise_for routes config (#30990) 2024-07-11 11:13:55 +00:00
github-actions[bot]
c244b70dc2
New Crowdin Translations (automated) (#30993)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-07-11 10:38:35 +00:00
renovate[bot]
24bdba3413
chore(deps): update dependency rubocop to v1.65.0 (#30985)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-11 10:30:55 +00:00
renovate[bot]
631a5eec85
chore(deps): update dependency charlock_holmes to v0.7.9 (#30992)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 19:59:34 +00:00
Emelia Smith
d436696f46
Streaming: Fix incorrect type definitions (#30977) 2024-07-10 15:59:18 +00:00
David Roetzel
2ea9336b68
Do not pass unknown encoding names to nokogiri. (#30987) 2024-07-10 14:25:39 +00:00
Renaud Chaput
36592d10aa
Change Sidekiq readiness file to use an environment variable (#30988) 2024-07-10 12:57:25 +00:00
Renaud Chaput
182b9248c0
Fix SCSS mixed declarations deprecation (#30986) 2024-07-10 12:23:24 +00:00
github-actions[bot]
9984fca9a0
New Crowdin Translations (automated) (#30983)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-07-10 10:40:19 +00:00
renovate[bot]
8dea897a3b
chore(deps): update docker.io/ruby docker tag to v3.3.4 (#30980)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 10:04:52 +00:00
renovate[bot]
d0137910c6
chore(deps): update dependency ruby to v3.3.4 (#30969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 10:04:11 +00:00
renovate[bot]
c9f08f77ed
fix(deps): update dependency sass to v1.77.7 (#30981)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-10 06:55:26 +00:00
David Roetzel
967505ee9b
Add size limit for all PreviewCard URLs (#30973) 2024-07-09 13:11:34 +00:00
renovate[bot]
ef2e48e6da
fix(deps): update dependency glob to v10.4.5 (#30972)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-09 12:53:31 +00:00
Daniel M Brasil
3875bd138d
Fix HTTP 500 in /api/v1/polls/:id/votes (#25598) 2024-07-09 12:41:49 +00:00
Renaud Chaput
7542a134d5
Add a file for Sidekiq to signal it is ready to process jobs (#30971) 2024-07-09 10:47:08 +00:00
github-actions[bot]
249b4117f9
New Crowdin Translations (automated) (#30970)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-07-09 07:36:13 +00:00
Matt Jankowski
f47d761e12
Remove unneeded controller option in routes (#30958) 2024-07-09 07:34:19 +00:00
Matt Jankowski
7a30c68953
Use scope module: ... block for .well-known routes (#30959) 2024-07-09 07:34:15 +00:00
renovate[bot]
0dd4595704
fix(deps): update dependency glob to v10.4.4 (#30967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-09 07:27:13 +00:00
David Roetzel
fa8e972722
Fix author names as arrays in linked data. (#30957) 2024-07-08 16:04:36 +00:00
Matt Jankowski
f1300ad284
Rename jobs/attachments rspec tag names (#29762) 2024-07-08 16:01:08 +00:00
Matt Jankowski
79b0e192d9
Move test migrations paths check to workflow level (#30702) 2024-07-08 08:16:00 +00:00
Tianwei Dong
36d819bef3
Change to use an unified constant for max media attachments per status (#29073)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2024-07-08 08:10:57 +00:00
github-actions[bot]
1a37862a76
New Crowdin Translations (automated) (#30940)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-07-08 08:03:44 +00:00
Claire
d41b43ed4f
Limit attachments to MEDIA_ATTACHMENTS_LIMIT when returning posts through the API (#30932) 2024-07-08 07:41:50 +00:00
renovate[bot]
fd3bfc0710
fix(deps): update dependency postcss-preset-env to v9.6.0 (#30944)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-08 07:22:28 +00:00
Matt Jankowski
c29fdadefd
Use scope module: ... for more API routes (#30935) 2024-07-08 07:21:49 +00:00
renovate[bot]
bd285cdd02
fix(deps): update dependency glob to v10.4.3 (#30941)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-08 07:16:47 +00:00
renovate[bot]
bd84817848
chore(deps): update dependency irb to v1.14.0 (#30947)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-08 07:15:48 +00:00
renovate[bot]
5c3ec727ec
chore(deps): update dependency typescript to v5.5.3 (#30953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-08 07:11:29 +00:00
renovate[bot]
c5883e0999
chore(deps): update dependency @testing-library/dom to v10.3.1 (#30954)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-08 07:11:15 +00:00
Renaud Chaput
981395e4d6
Remove the title attribute when hovering a card anchor (#30948) 2024-07-07 16:14:15 +00:00
Renaud Chaput
0899c91d4b
Add the account hover card for account search results (#30949) 2024-07-07 16:13:10 +00:00
Matt Jankowski
1d35626dc7
Limit CI push triggers to main and stable-* branches (#30934) 2024-07-07 09:39:31 +00:00
207 changed files with 1535 additions and 858 deletions

View file

@ -1,8 +1,10 @@
name: Bundler Audit
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
branches:
- 'main'
- 'stable-*'
paths:
- 'Gemfile*'
- '.ruby-version'

View file

@ -2,9 +2,13 @@ name: Check i18n
on:
push:
branches: [main]
branches:
- 'main'
- 'stable-*'
pull_request:
branches: [main]
branches:
- 'main'
- 'stable-*'
env:
RAILS_ENV: test

View file

@ -1,11 +1,15 @@
name: 'CodeQL'
on:
merge_group:
push:
branches: ['main']
branches:
- 'main'
- 'stable-*'
pull_request:
# The branches below must be a subset of the branches above
branches: ['main']
branches:
- 'main'
- 'stable-*'
schedule:
- cron: '22 6 * * 1'

View file

@ -1,9 +1,11 @@
name: Crowdin / Upload translations
on:
merge_group:
push:
branches:
- main
- 'main'
- 'stable-*'
paths:
- crowdin.yml
- app/javascript/mastodon/locales/en.json

View file

@ -1,6 +1,10 @@
name: Check formatting
on:
merge_group:
push:
branches:
- 'main'
- 'stable-*'
pull_request:
jobs:

View file

@ -1,9 +1,10 @@
name: CSS Linting
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
branches:
- 'main'
- 'stable-*'
paths:
- 'package.json'
- 'yarn.lock'

View file

@ -1,9 +1,10 @@
name: Haml Linting
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
branches:
- 'main'
- 'stable-*'
paths:
- '.github/workflows/haml-lint-problem-matcher.json'
- '.github/workflows/lint-haml.yml'

View file

@ -1,9 +1,10 @@
name: JavaScript Linting
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
branches:
- 'main'
- 'stable-*'
paths:
- 'package.json'
- 'yarn.lock'

View file

@ -1,9 +1,10 @@
name: Ruby Linting
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
branches:
- 'main'
- 'stable-*'
paths:
- 'Gemfile*'
- '.rubocop*.yml'

View file

@ -1,9 +1,10 @@
name: JavaScript Testing
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
branches:
- 'main'
- 'stable-*'
paths:
- 'package.json'
- 'yarn.lock'

View file

@ -1,29 +1,29 @@
name: Historical data migration test
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
branches:
- 'main'
- 'stable-*'
paths:
- 'Gemfile*'
- '.ruby-version'
- '**/*.rb'
- '.github/workflows/test-migrations.yml'
- 'lib/tasks/tests.rake'
pull_request:
paths:
- 'Gemfile*'
- '.ruby-version'
- '**/*.rb'
- '.github/workflows/test-migrations.yml'
- 'lib/tasks/tests.rake'
jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
paths: '["Gemfile*", ".ruby-version", "**/*.rb", ".github/workflows/test-migrations.yml", "lib/tasks/tests.rake"]'
test:
runs-on: ubuntu-latest
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
strategy:
fail-fast: false

View file

@ -1,10 +1,11 @@
name: Ruby Testing
on:
merge_group:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
branches:
- 'main'
- 'stable-*'
pull_request:
env:
@ -223,7 +224,7 @@ jobs:
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
- run: bin/rspec --tag paperclip_processing
- run: bin/rspec --tag attachment_processing
- name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version'

View file

@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-offense-counts --no-auto-gen-timestamp`
# using RuboCop version 1.64.1.
# using RuboCop version 1.65.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
@ -14,7 +14,7 @@ Lint/NonLocalExitFromIterator:
Metrics/AbcSize:
Max: 82
# Configuration parameters: CountBlocks, Max.
# Configuration parameters: CountBlocks, CountModifierForms, Max.
Metrics/BlockNesting:
Exclude:
- 'lib/tasks/mastodon.rake'

View file

@ -1 +1 @@
3.3.3
3.3.4

View file

@ -12,7 +12,7 @@ ARG BUILDPLATFORM=${BUILDPLATFORM}
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.x"]
# renovate: datasource=docker depName=docker.io/ruby
ARG RUBY_VERSION="3.3.3"
ARG RUBY_VERSION="3.3.4"
# # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
# renovate: datasource=node-version depName=node
ARG NODE_MAJOR_VERSION="20"
@ -67,7 +67,9 @@ ENV \
# Optimize jemalloc 5.x performance
MALLOC_CONF="narenas:2,background_thread:true,thp:never,dirty_decay_ms:1000,muzzy_decay_ms:0" \
# Enable libvips, should not be changed
MASTODON_USE_LIBVIPS=true
MASTODON_USE_LIBVIPS=true \
# Sidekiq will touch tmp/sidekiq_process_has_started_and_will_begin_processing_jobs to indicate it is ready. This can be used for a readiness check in Kubernetes
MASTODON_SIDEKIQ_READY_FILENAME=sidekiq_process_has_started_and_will_begin_processing_jobs
# Set default shell used for running commands
SHELL ["/bin/bash", "-o", "pipefail", "-o", "errexit", "-c"]

View file

@ -159,7 +159,7 @@ GEM
case_transform (0.2)
activesupport
cbor (0.5.9.8)
charlock_holmes (0.7.8)
charlock_holmes (0.7.9)
chewy (7.6.0)
activesupport (>= 5.2)
elasticsearch (>= 7.14.0, < 8)
@ -180,7 +180,7 @@ GEM
css_parser (1.17.1)
addressable
csv (3.3.0)
database_cleaner-active_record (2.1.0)
database_cleaner-active_record (2.2.0)
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
@ -346,7 +346,7 @@ GEM
activesupport (>= 3.0)
nokogiri (>= 1.6)
io-console (0.7.2)
irb (1.13.2)
irb (1.14.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jmespath (1.6.2)
@ -367,7 +367,7 @@ GEM
json-ld-preloaded (3.3.0)
json-ld (~> 3.3)
rdf (~> 3.3)
json-schema (4.3.0)
json-schema (4.3.1)
addressable (>= 2.8)
jsonapi-renderer (0.2.2)
jwt (2.7.1)
@ -583,15 +583,15 @@ GEM
orm_adapter (0.5.0)
ox (2.14.18)
parallel (1.25.1)
parser (3.3.3.0)
parser (3.3.4.0)
ast (~> 2.4.1)
racc
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.5.6)
pghero (3.5.0)
activerecord (>= 6)
pghero (3.6.0)
activerecord (>= 6.1)
premailer (1.23.0)
addressable
css_parser (>= 1.12.0)
@ -733,13 +733,13 @@ GEM
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8)
rspec-support (3.13.1)
rubocop (1.64.1)
rubocop (1.65.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
regexp_parser (>= 2.4, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7)
@ -756,7 +756,7 @@ GEM
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (3.0.2)
rubocop-rspec (3.0.3)
rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61)

View file

@ -28,14 +28,14 @@ class Api::V1::Notifications::RequestsController < Api::BaseController
end
def dismiss
@request.update!(dismissed: true)
@request.destroy!
render_empty
end
private
def load_requests
requests = NotificationRequest.where(account: current_account).where(dismissed: truthy_param?(:dismissed) || false).includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id(
requests = NotificationRequest.where(account: current_account).includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params_slice(:max_id, :since_id, :min_id)
)
@ -68,8 +68,4 @@ class Api::V1::Notifications::RequestsController < Api::BaseController
def pagination_since_id
@requests.first.id
end
def pagination_params(core_params)
params.slice(:dismissed).permit(:dismissed).merge(core_params)
end
end

View file

@ -8,7 +8,7 @@ class Api::V1::Polls::VotesController < Api::BaseController
before_action :set_poll
def create
VoteService.new.call(current_account, @poll, vote_params[:choices])
VoteService.new.call(current_account, @poll, vote_params)
render json: @poll, serializer: REST::PollSerializer
end
@ -22,6 +22,6 @@ class Api::V1::Polls::VotesController < Api::BaseController
end
def vote_params
params.permit(choices: [])
params.require(:choices)
end
end

View file

@ -10,7 +10,7 @@ class Api::V1::ReportsController < Api::BaseController
@report = ReportService.new.call(
current_account,
reported_account,
report_params
report_params.merge(application: doorkeeper_token.application)
)
render json: @report, serializer: REST::ReportSerializer

View file

@ -3,8 +3,10 @@
module ThemeHelper
def theme_style_tags(theme)
if theme == 'system'
stylesheet_pack_tag('mastodon-light', media: 'not all and (prefers-color-scheme: dark)', crossorigin: 'anonymous') +
stylesheet_pack_tag('default', media: '(prefers-color-scheme: dark)', crossorigin: 'anonymous')
''.html_safe.tap do |tags|
tags << stylesheet_pack_tag('mastodon-light', media: 'not all and (prefers-color-scheme: dark)', crossorigin: 'anonymous')
tags << stylesheet_pack_tag('default', media: '(prefers-color-scheme: dark)', crossorigin: 'anonymous')
end
else
stylesheet_pack_tag theme, media: 'all', crossorigin: 'anonymous'
end
@ -12,8 +14,10 @@ module ThemeHelper
def theme_color_tags(theme)
if theme == 'system'
tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:dark], media: '(prefers-color-scheme: dark)') +
tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:light], media: '(prefers-color-scheme: light)')
''.html_safe.tap do |tags|
tags << tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:dark], media: '(prefers-color-scheme: dark)')
tags << tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:light], media: '(prefers-color-scheme: light)')
end
else
tag.meta name: 'theme-color', content: theme_color_for(theme)
end

View file

@ -279,7 +279,7 @@ export function submitComposeFail(error) {
export function uploadCompose(files) {
return function (dispatch, getState) {
const uploadLimit = 4;
const uploadLimit = getState().getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments']);
const media = getState().getIn(['compose', 'media_attachments']);
const pending = getState().getIn(['compose', 'pending_media_attachments']);
const progress = new Array(files.length).fill(0);
@ -299,7 +299,7 @@ export function uploadCompose(files) {
dispatch(uploadComposeRequest());
for (const [i, file] of Array.from(files).entries()) {
if (media.size + i > 3) break;
if (media.size + i > (uploadLimit - 1)) break;
const data = new FormData();
data.append('file', file);

View file

@ -165,7 +165,7 @@ describe('computeHashtagBarForStatus', () => {
);
});
it('puts the hashtags in the bar if a status content has hashtags in the only line and has a media', () => {
it('does not put the hashtags in the bar if a status content has hashtags in the only line and has a media', () => {
const status = createStatus(
'<p>This is my content! <a href="test">#hashtag</a></p>',
['hashtag'],

View file

@ -131,7 +131,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
return (
<div className={classNames('account', { 'account--minimal': minimal })}>
<div className='account__wrapper'>
<Link key={account.get('id')} className='account__display-name' title={account.get('acct')} to={`/@${account.get('acct')}`}>
<Link key={account.get('id')} className='account__display-name' title={account.get('acct')} to={`/@${account.get('acct')}`} data-hover-card-account={account.get('id')}>
<div className='account__avatar-wrapper'>
<Avatar account={account} size={size} />
</div>

View file

@ -43,6 +43,7 @@ export const HoverCardController: React.FC = () => {
useEffect(() => {
let isScrolling = false;
let currentAnchor: HTMLElement | null = null;
let currentTitle: string | null = null;
const open = (target: HTMLElement) => {
target.setAttribute('aria-describedby', 'hover-card');
@ -75,6 +76,9 @@ export const HoverCardController: React.FC = () => {
currentAnchor?.removeAttribute('aria-describedby');
currentAnchor = target;
currentTitle = target.getAttribute('title');
target.removeAttribute('title');
setEnterTimeout(() => {
open(target);
}, enterDelay);
@ -90,11 +94,20 @@ export const HoverCardController: React.FC = () => {
};
const handleMouseLeave = (e: MouseEvent) => {
const { target } = e;
if (!currentAnchor) {
return;
}
if (e.target === currentAnchor || e.target === cardRef.current) {
if (
currentTitle &&
target instanceof HTMLElement &&
target === currentAnchor
)
target.setAttribute('title', currentTitle);
if (target === currentAnchor || target === cardRef.current) {
cancelEnterTimeout();
setLeaveTimeout(() => {

View file

@ -305,13 +305,13 @@ class MediaGallery extends PureComponent {
style.aspectRatio = '3 / 2';
}
const size = media.take(4).size;
const size = media.size;
const uncached = media.every(attachment => attachment.get('type') === 'unknown');
if (this.isFullSizeEligible()) {
children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} lang={lang} displayWidth={width} visible={visible} />;
} else {
children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} displayWidth={width} visible={visible || uncached} />);
children = media.map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} lang={lang} size={size} displayWidth={width} visible={visible || uncached} />);
}
if (uncached) {

View file

@ -562,7 +562,7 @@ class Status extends ImmutablePureComponent {
<RelativeTimestamp timestamp={status.get('created_at')} />{status.get('edited_at') && <abbr title={intl.formatMessage(messages.edited, { date: intl.formatDate(status.get('edited_at'), { year: 'numeric', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }) })}> *</abbr>}
</a>
<a onClick={this.handleAccountClick} href={`/@${status.getIn(['account', 'acct'])}`} data-hover-card-account={status.getIn(['account', 'id'])} className='status__display-name' target='_blank' rel='noopener noreferrer'>
<a onClick={this.handleAccountClick} href={`/@${status.getIn(['account', 'acct'])}`} title={status.getIn(['account', 'acct'])} data-hover-card-account={status.getIn(['account', 'id'])} className='status__display-name' target='_blank' rel='noopener noreferrer'>
<div className='status__avatar'>
{statusAvatar}
</div>

View file

@ -116,7 +116,7 @@ class StatusContent extends PureComponent {
if (mention) {
link.addEventListener('click', this.onMentionClick.bind(this, mention), false);
link.removeAttribute('title');
link.setAttribute('title', `@${mention.get('acct')}`);
link.setAttribute('href', `/@${mention.get('acct')}`);
link.setAttribute('data-hover-card-account', mention.get('id'));
} else if (link.textContent[0] === '#' || (link.previousSibling && link.previousSibling.textContent && link.previousSibling.textContent[link.previousSibling.textContent.length - 1] === '#')) {

View file

@ -9,7 +9,7 @@ const mapStateToProps = state => {
const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0;
const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0;
const attachmentsSize = readyAttachmentsSize + pendingAttachmentsSize;
const isOverLimit = attachmentsSize > 3;
const isOverLimit = attachmentsSize > state.getIn(['server', 'server', 'configuration', 'statuses', 'max_media_attachments'])-1;
const hasVideoOrAudio = state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type')));
return {

View file

@ -435,7 +435,7 @@ class Notification extends ImmutablePureComponent {
const targetAccount = report.get('target_account');
const targetDisplayNameHtml = { __html: targetAccount.get('display_name_html') };
const targetLink = <bdi><Link className='notification__display-name' data-hover-card-account={targetAccount.get('id')} to={`/@${targetAccount.get('acct')}`} dangerouslySetInnerHTML={targetDisplayNameHtml} /></bdi>;
const targetLink = <bdi><Link className='notification__display-name' title={targetAccount.get('acct')} data-hover-card-account={targetAccount.get('id')} to={`/@${targetAccount.get('acct')}`} dangerouslySetInnerHTML={targetDisplayNameHtml} /></bdi>;
return (
<HotKeys handlers={this.getHandlers()}>
@ -458,7 +458,7 @@ class Notification extends ImmutablePureComponent {
const { notification } = this.props;
const account = notification.get('account');
const displayNameHtml = { __html: account.get('display_name_html') };
const link = <bdi><Link className='notification__display-name' href={`/@${account.get('acct')}`} data-hover-card-account={account.get('id')} to={`/@${account.get('acct')}`} dangerouslySetInnerHTML={displayNameHtml} /></bdi>;
const link = <bdi><Link className='notification__display-name' href={`/@${account.get('acct')}`} title={account.get('acct')} data-hover-card-account={account.get('id')} to={`/@${account.get('acct')}`} dangerouslySetInnerHTML={displayNameHtml} /></bdi>;
switch(notification.get('type')) {
case 'follow':

View file

@ -223,6 +223,13 @@ class Notifications extends PureComponent {
let scrollContainer;
const prepend = (
<>
{needsNotificationPermission && <NotificationsPermissionBanner />}
<FilteredNotificationsBanner />
</>
);
if (signedIn) {
scrollContainer = (
<ScrollableList
@ -232,7 +239,7 @@ class Notifications extends PureComponent {
showLoading={isLoading && notifications.size === 0}
hasMore={hasMore}
numPending={numPending}
prepend={needsNotificationPermission && <NotificationsPermissionBanner />}
prepend={prepend}
alwaysPrepend
emptyMessage={emptyMessage}
onLoadMore={this.handleLoadOlder}
@ -282,8 +289,6 @@ class Notifications extends PureComponent {
{filterBarContainer}
<FilteredNotificationsBanner />
{scrollContainer}
<Helmet>

View file

@ -25,7 +25,7 @@ import { clearHeight } from '../../actions/height_cache';
import { expandNotifications } from '../../actions/notifications';
import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server';
import { expandHomeTimeline } from '../../actions/timelines';
import initialState, { me, owner, singleUserMode, trendsEnabled, trendsAsLanding } from '../../initial_state';
import initialState, { me, owner, singleUserMode, trendsEnabled, trendsAsLanding, disableHoverCards } from '../../initial_state';
import BundleColumnError from './components/bundle_column_error';
import Header from './components/header';
@ -588,7 +588,7 @@ class UI extends PureComponent {
{layout !== 'mobile' && <PictureInPicture />}
<NotificationsContainer />
<HoverCardController />
{!disableHoverCards && <HoverCardController />}
<LoadingBarContainer className='loading-bar' />
<ModalContainer />
<UploadArea active={draggingOver} onClose={this.closeUploadModal} />

View file

@ -15,6 +15,7 @@
* @property {boolean=} boost_modal
* @property {boolean=} delete_modal
* @property {boolean=} disable_swiping
* @property {boolean=} disable_hover_cards
* @property {string=} disabled_account_id
* @property {string} display_media
* @property {string} domain
@ -86,6 +87,7 @@ export const autoPlayGif = getMeta('auto_play_gif');
export const boostModal = getMeta('boost_modal');
export const deleteModal = getMeta('delete_modal');
export const disableSwiping = getMeta('disable_swiping');
export const disableHoverCards = getMeta('disable_hover_cards');
export const disabledAccountId = getMeta('disabled_account_id');
export const displayMedia = getMeta('display_media');
export const domain = getMeta('domain');

View file

@ -4,7 +4,7 @@
"about.disclaimer": "ماستدون برنامج حر ومفتوح المصدر وعلامة تجارية لـ Mastodon GmbH.",
"about.domain_blocks.no_reason_available": "السبب غير متوفر",
"about.domain_blocks.preamble": "يسمح لك ماستدون عموماً بعرض المحتوى من المستخدمين من أي خادم آخر في الفدرالية والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادم بالذات.",
"about.domain_blocks.silenced.explanation": "عموماً، لن ترى ملفات التعريف والمحتوى من هذا الخادم، إلا إذا كنت تبحث عنه بشكل صريح أو تختار أن تتابعه.",
"about.domain_blocks.silenced.explanation": "لن تظهر لك ملفات التعريف الشخصية والمحتوى من هذا الخادوم، إلا إن بحثت عنه عمدًا أو تابعته.",
"about.domain_blocks.silenced.title": "محدود",
"about.domain_blocks.suspended.explanation": "لن يتم معالجة أي بيانات من هذا الخادم أو تخزينها أو تبادلها، مما يجعل أي تفاعل أو اتصال مع المستخدمين من هذا الخادم مستحيلا.",
"about.domain_blocks.suspended.title": "مُعلّق",
@ -21,7 +21,7 @@
"account.blocked": "محظور",
"account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي",
"account.cancel_follow_request": "إلغاء طلب المتابعة",
"account.copy": "نسخ الرابط إلى الحساب",
"account.copy": "نسخ الرابط إلى الملف الشخصي",
"account.direct": "إشارة خاصة لـ @{name}",
"account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}",
"account.domain_blocked": "اسم النِّطاق محظور",
@ -32,9 +32,10 @@
"account.featured_tags.last_status_never": "لا توجد رسائل",
"account.featured_tags.title": "وسوم {name} المميَّزة",
"account.follow": "متابعة",
"account.follow_back": "رد المتابعة",
"account.follow_back": "تابعهم بالمثل",
"account.followers": "مُتابِعون",
"account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.",
"account.followers_counter": "{count, plural, zero {}one {{counter} متابع} two {{counter} متابعين} few {{counter} متابعين} many {{counter} متابعين} other {{counter} متابعين}}",
"account.following": "الاشتراكات",
"account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.",
"account.go_to_profile": "اذهب إلى الملف الشخصي",
@ -51,7 +52,7 @@
"account.mute_notifications_short": "كتم الإشعارات",
"account.mute_short": "اكتم",
"account.muted": "مَكتوم",
"account.mutual": "متبادل",
"account.mutual": "متبادلة",
"account.no_bio": "لم يتم تقديم وصف.",
"account.open_original_page": "افتح الصفحة الأصلية",
"account.posts": "منشورات",
@ -70,8 +71,8 @@
"account.unmute_notifications_short": "إلغاء كَتم الإشعارات",
"account.unmute_short": "إلغاء الكتم",
"account_note.placeholder": "اضغط لإضافة مُلاحظة",
"admin.dashboard.daily_retention": "معدل الاحتفاظ بالمستخدم بعد التسجيل بيوم",
"admin.dashboard.monthly_retention": "معدل الاحتفاظ بالمستخدم بعد التسجيل بالشهور",
"admin.dashboard.daily_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالأيام",
"admin.dashboard.monthly_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالشهور",
"admin.dashboard.retention.average": "المعدل",
"admin.dashboard.retention.cohort": "شهر التسجيل",
"admin.dashboard.retention.cohort_size": "المستخدمون الجدد",
@ -87,12 +88,12 @@
"attachments_list.unprocessed": "(غير معالَج)",
"audio.hide": "إخفاء المقطع الصوتي",
"block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.",
"block_modal.show_less": "أظهر الأقل",
"block_modal.show_more": "أظهر المزيد",
"block_modal.show_less": "تفاصيل أقلّ",
"block_modal.show_more": "تفاصيل أكثر",
"block_modal.they_cant_mention": "لن يستطيع ذِكرك أو متابعتك.",
"block_modal.they_cant_see_posts": "لن يستطيع رؤية منشوراتك ولن ترى منشوراته.",
"block_modal.they_will_know": "يمكنه أن يرى أنه قد تم حظره.",
"block_modal.title": "أتريد حظر المستخدم؟",
"block_modal.they_cant_see_posts": "لن يستطيع مطالعة منشوراتك ولن تطالع منشوراته.",
"block_modal.they_will_know": "سيعلم أنه قد حُظِر.",
"block_modal.title": "أتريد حظر هذا المستخدم؟",
"block_modal.you_wont_see_mentions": "لن تر المنشورات التي يُشار فيهم إليه.",
"boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة",
"bundle_column_error.copy_stacktrace": "انسخ تقرير الخطأ",
@ -156,7 +157,7 @@
"compose_form.poll.single": "اختر واحدا",
"compose_form.poll.switch_to_multiple": "تغيِير الاستطلاع للسماح باِخيارات مُتعدِّدة",
"compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط",
"compose_form.poll.type": "الأسلوب",
"compose_form.poll.type": "الطراز",
"compose_form.publish": "نشر",
"compose_form.publish_form": "منشور جديد",
"compose_form.reply": "ردّ",

View file

@ -35,7 +35,9 @@
"account.follow_back": "Падпісацца ў адказ",
"account.followers": "Падпісчыкі",
"account.followers.empty": "Ніхто пакуль не падпісаны на гэтага карыстальніка.",
"account.followers_counter": "{count, plural, one {{counter} падпісчык} few {{counter} падпісчыкі} many {{counter} падпісчыкаў} other {{counter} падпісчыка}}",
"account.following": "Падпіскі",
"account.following_counter": "{count, plural, one {{counter} падпіска} few {{counter} падпіскі} many {{counter} падпісак} other {{counter} падпіскі}}",
"account.follows.empty": "Карыстальнік ні на каго не падпісаны.",
"account.go_to_profile": "Перайсці да профілю",
"account.hide_reblogs": "Схаваць пашырэнні ад @{name}",
@ -61,6 +63,7 @@
"account.requested_follow": "{name} адправіў запыт на падпіску",
"account.share": "Абагуліць профіль @{name}",
"account.show_reblogs": "Паказаць падштурхоўванні ад @{name}",
"account.statuses_counter": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
"account.unblock": "Разблакіраваць @{name}",
"account.unblock_domain": "Разблакіраваць дамен {domain}",
"account.unblock_short": "Разблакіраваць",
@ -412,6 +415,7 @@
"limited_account_hint.title": "Гэты профіль быў схаваны мадэратарамі",
"link_preview.author": "Ад {name}",
"link_preview.more_from_author": "Больш ад {name}",
"link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
"lists.account.add": "Дадаць да спісу",
"lists.account.remove": "Выдаліць са спісу",
"lists.delete": "Выдаліць спіс",

View file

@ -35,7 +35,9 @@
"account.follow_back": "Последване взаимно",
"account.followers": "Последователи",
"account.followers.empty": "Още никой не следва потребителя.",
"account.followers_counter": "{count, plural, one {{counter} последовател} other {{counter} последователи}}",
"account.following": "Последвано",
"account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}",
"account.follows.empty": "Потребителят още никого не следва.",
"account.go_to_profile": "Към профила",
"account.hide_reblogs": "Скриване на подсилвания от @{name}",
@ -61,6 +63,7 @@
"account.requested_follow": "{name} поиска да ви последва",
"account.share": "Споделяне на профила на @{name}",
"account.show_reblogs": "Показване на подсилвания от @{name}",
"account.statuses_counter": "{count, plural, one {{counter} публикация} other {{counter} публикации}}",
"account.unblock": "Отблокиране на @{name}",
"account.unblock_domain": "Отблокиране на домейн {domain}",
"account.unblock_short": "Отблокиране",

View file

@ -197,7 +197,7 @@
"copy_icon_button.copied": "Zkopírováno do schránky",
"copypaste.copied": "Zkopírováno",
"copypaste.copy_to_clipboard": "Zkopírovat do schránky",
"directory.federated": "Ze známého fedivesmíru",
"directory.federated": "Ze známého fediversu",
"directory.local": "Pouze z {domain}",
"directory.new_arrivals": "Nově příchozí",
"directory.recently_active": "Nedávno aktivní",
@ -213,7 +213,7 @@
"domain_block_modal.block_account_instead": "Raději blokovat @{name}",
"domain_block_modal.they_can_interact_with_old_posts": "Lidé z tohoto serveru mohou interagovat s vašimi starými příspěvky.",
"domain_block_modal.they_cant_follow": "Nikdo z tohoto serveru vás nemůže sledovat.",
"domain_block_modal.they_wont_know": "Nebude vědět, že je zablokován.",
"domain_block_modal.they_wont_know": "Nebude vědět, že je zablokován*a.",
"domain_block_modal.title": "Blokovat doménu?",
"domain_block_modal.you_will_lose_followers": "Všichni vaši sledující z tohoto serveru budou odstraněni.",
"domain_block_modal.you_wont_see_posts": "Neuvidíte příspěvky ani upozornění od uživatelů z tohoto serveru.",
@ -341,7 +341,7 @@
"hashtag.column_settings.tag_mode.any": "Jakýkoliv z těchto",
"hashtag.column_settings.tag_mode.none": "Žádný z těchto",
"hashtag.column_settings.tag_toggle": "Zahrnout v tomto sloupci další štítky",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} účastník} few {{counter} účastníci} other {{counter} účastníků}}",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} účastník*ice} few {{counter} účastníci} other {{counter} účastníků}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} příspěvek} few {{counter} příspěvky} other {{counter} příspěvků}}",
"hashtag.counter_by_uses_today": "Dnes {count, plural, one {{counter} příspěvek} few {{counter} příspěvky} other {{counter} příspěvků}}",
"hashtag.follow": "Sledovat hashtag",
@ -440,7 +440,7 @@
"mute_modal.show_options": "Zobrazit možnosti",
"mute_modal.they_can_mention_and_follow": "Mohou vás zmínit a sledovat, ale neuvidíte je.",
"mute_modal.they_wont_know": "Nebudou vědět, že byli skryti.",
"mute_modal.title": "Ztlumit uživatele?",
"mute_modal.title": "Ztlumit uživatele*ku?",
"mute_modal.you_wont_see_mentions": "Neuvidíte příspěvky, které je zmiňují.",
"mute_modal.you_wont_see_posts": "Stále budou moci vidět vaše příspěvky, ale vy jejich neuvidíte.",
"navigation_bar.about": "O aplikaci",
@ -566,8 +566,8 @@
"onboarding.share.message": "Jsem {username} na #Mastodonu! Pojď mě sledovat na {url}",
"onboarding.share.next_steps": "Možné další kroky:",
"onboarding.share.title": "Sdílejte svůj profil",
"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.lead": "Nyní jste součástí Mastodonu, unikátní sociální sítě, kde vy - ne algoritmus - vytváří vaše vlastní prožitky. Začněte na této nové sociální platformě:",
"onboarding.start.skip": "Nepotřebujete pomoci začít?",
"onboarding.start.title": "Dokázali jste to!",
"onboarding.steps.follow_people.body": "Mastodon je o sledování zajimavých lidí.",
"onboarding.steps.follow_people.title": "Přispůsobit vlastní domovský kanál",
@ -581,7 +581,7 @@
"onboarding.tips.accounts_from_other_servers": "<strong>Víte, že?</strong> Protože je Mastodon decentralizovaný, některé profily, na které narazíte, budou hostovány na jiných serverech, než je ten váš. A přesto s nimi můžete bezproblémově komunikovat! Jejich server se nachází v druhé polovině uživatelského jména!",
"onboarding.tips.migration": "<strong>Víte, že?</strong> Pokud máte pocit, že {domain} pro vás v budoucnu není vhodnou volbou, můžete se přesunout na jiný Mastodon server, aniž byste přišli o své sledující. Můžete dokonce hostovat svůj vlastní server!",
"onboarding.tips.verification": "<strong>Víte, že?</strong> Svůj účet můžete ověřit tak, že na své webové stránky umístíte odkaz na váš Mastodon profil a odkaz na stránku přidáte do svého profilu. Nejsou k tomu potřeba žádné poplatky ani dokumenty!",
"password_confirmation.exceeds_maxlength": "Potvrzení hesla překračuje maximální délku hesla",
"password_confirmation.exceeds_maxlength": "Potvrzení hesla překračuje maximální povolenou délku hesla",
"password_confirmation.mismatching": "Zadaná hesla se neshodují",
"picture_in_picture.restore": "Vrátit zpět",
"poll.closed": "Uzavřeno",
@ -665,7 +665,7 @@
"report.unfollow": "Přestat sledovat @{name}",
"report.unfollow_explanation": "Tento účet sledujete. Abyste už neviděli jeho příspěvky ve své domovské časové ose, přestaňte jej sledovat.",
"report_notification.attached_statuses": "{count, plural, one {{count} připojený příspěvek} few {{count} připojené příspěvky} many {{count} připojených příspěvků} other {{count} připojených příspěvků}}",
"report_notification.categories.legal": "Zákonné",
"report_notification.categories.legal": "Právní ustanovení",
"report_notification.categories.other": "Ostatní",
"report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Porušení pravidla",

View file

@ -48,8 +48,8 @@
"account.mention": "Crybwyll @{name}",
"account.moved_to": "Mae {name} wedi nodi fod eu cyfrif newydd yn:",
"account.mute": "Tewi @{name}",
"account.mute_notifications_short": "Distewi hysbysiadau",
"account.mute_short": "Tewi",
"account.mute_notifications_short": "Diffodd hysbysiadau",
"account.mute_short": "Anwybyddu",
"account.muted": "Wedi anwybyddu",
"account.mutual": "Cydgydnabod",
"account.no_bio": "Dim disgrifiad wedi'i gynnig.",
@ -92,7 +92,7 @@
"block_modal.they_cant_mention": "Nid ydynt yn gallu eich crybwyll na'ch dilyn.",
"block_modal.they_cant_see_posts": "Nid ydynt yn gallu gweld eich postiadau ac ni fyddwch yn gweld eu rhai hwy.",
"block_modal.they_will_know": "Gallant weld eu bod wedi'u rhwystro.",
"block_modal.title": "Rhwystro defnyddiwr?",
"block_modal.title": "Blocio defnyddiwr?",
"block_modal.you_wont_see_mentions": "Ni welwch bostiadau sy'n sôn amdanynt.",
"boost_modal.combo": "Mae modd pwyso {combo} er mwyn hepgor hyn tro nesa",
"bundle_column_error.copy_stacktrace": "Copïo'r adroddiad gwall",
@ -164,7 +164,7 @@
"compose_form.spoiler.marked": "Dileu rhybudd cynnwys",
"compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys",
"compose_form.spoiler_placeholder": "Rhybudd cynnwys (dewisol)",
"confirmation_modal.cancel": "Diddymu",
"confirmation_modal.cancel": "Canslo",
"confirmations.block.confirm": "Blocio",
"confirmations.cancel_follow_request.confirm": "Tynnu'r cais yn ôl",
"confirmations.cancel_follow_request.message": "Ydych chi'n siŵr eich bod am dynnu'ch cais i ddilyn {name} yn ôl?",
@ -174,7 +174,7 @@
"confirmations.delete_list.message": "Ydych chi'n siŵr eich bod eisiau dileu'r rhestr hwn am byth?",
"confirmations.discard_edit_media.confirm": "Dileu",
"confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg - eu dileu beth bynnag?",
"confirmations.domain_block.confirm": "Rhwystro gweinydd",
"confirmations.domain_block.confirm": "Blocio gweinydd",
"confirmations.domain_block.message": "Ydych chi wir, wir eisiau blocio'r holl {domain}? Fel arfer, mae blocio neu dewi pobl penodol yn broses mwy effeithiol. Fyddwch chi ddim yn gweld cynnwys o'r parth hwnnw mewn ffrydiau cyhoeddus neu yn eich hysbysiadau. Bydd eich dilynwyr o'r parth hwnnw yn cael eu ddileu.",
"confirmations.edit.confirm": "Golygu",
"confirmations.edit.message": "Bydd golygu nawr yn trosysgrifennu'r neges rydych yn ei ysgrifennu ar hyn o bryd. Ydych chi'n siŵr eich bod eisiau gwneud hyn?",
@ -201,17 +201,17 @@
"disabled_account_banner.account_settings": "Gosodiadau'r cyfrif",
"disabled_account_banner.text": "Mae eich cyfrif {disabledAccount} wedi ei analluogi ar hyn o bryd.",
"dismissable_banner.community_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl sydd â chyfrifon ar {domain}.",
"dismissable_banner.dismiss": "Diddymu",
"dismissable_banner.dismiss": "Cau",
"dismissable_banner.explore_links": "Dyma straeon newyddion syn cael eu rhannu fwyaf ar y we gymdeithasol heddiw. Mae'r straeon newyddion diweddaraf sy'n cael eu postio gan fwy o unigolion gwahanol yn cael eu graddio'n uwch.",
"dismissable_banner.explore_statuses": "Mae'r rhain yn bostiadau o bob rhan o'r we gymdeithasol sydd ar gynnydd heddiw. Mae postiadau mwy diweddar sydd â mwy o hybiau a ffefrynu'n cael eu graddio'n uwch.",
"dismissable_banner.explore_tags": "Mae'r rhain yn hashnodau sydd ar gynnydd ar y we gymdeithasol heddiw. Mae hashnodau sy'n cael eu defnyddio gan fwy o unigolion gwahanol yn cael eu graddio'n uwch.",
"dismissable_banner.public_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl ar y we gymdeithasol y mae pobl ar {domain} yn eu dilyn.",
"domain_block_modal.block": "Rhwystro gweinydd",
"domain_block_modal.block_account_instead": "Rhwystro @{name} yn lle hynny",
"domain_block_modal.block": "Blocio gweinydd",
"domain_block_modal.block_account_instead": "Blocio @{name} yn ei le",
"domain_block_modal.they_can_interact_with_old_posts": "Gall pobl o'r gweinydd hwn ryngweithio â'ch hen bostiadau.",
"domain_block_modal.they_cant_follow": "Ni all neb o'r gweinydd hwn eich dilyn.",
"domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu rhwystro.",
"domain_block_modal.title": "Rhwystro parth?",
"domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu blocio.",
"domain_block_modal.title": "Blocio parth?",
"domain_block_modal.you_will_lose_followers": "Bydd eich holl ddilynwyr o'r gweinydd hwn yn cael eu tynnu.",
"domain_block_modal.you_wont_see_posts": "Fyddwch chi ddim yn gweld postiadau na hysbysiadau gan ddefnyddwyr ar y gweinydd hwn.",
"domain_pill.activitypub_lets_connect": "Mae'n caniatáu ichi gysylltu a rhyngweithio â phobl nid yn unig ar Mastodon, ond ar draws gwahanol apiau cymdeithasol hefyd.",
@ -252,7 +252,7 @@
"empty_column.bookmarked_statuses": "Nid oes gennych unrhyw bostiad wedi'u cadw fel llyfrnodau eto. Pan fyddwch yn gosod nod tudalen i un, mi fydd yn ymddangos yma.",
"empty_column.community": "Mae'r ffrwd lleol yn wag. Beth am ysgrifennu rhywbeth cyhoeddus!",
"empty_column.direct": "Nid oes gennych unrhyw grybwylliadau preifat eto. Pan fyddwch chi'n anfon neu'n derbyn un, bydd yn ymddangos yma.",
"empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.",
"empty_column.domain_blocks": "Nid oes unrhyw barthau wedi'u blocio eto.",
"empty_column.explore_statuses": "Does dim yn trendio ar hyn o bryd. Dewch nôl nes ymlaen!",
"empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff bostiadau eto. Pan byddwch yn hoffi un, bydd yn ymddangos yma.",
"empty_column.favourites": "Nid oes unrhyw un wedi hoffi'r postiad hwn eto. Pan fydd rhywun yn gwneud hynny, byddan nhw'n ymddangos yma.",
@ -411,6 +411,7 @@
"limited_account_hint.action": "Dangos y proffil beth bynnag",
"limited_account_hint.title": "Mae'r proffil hwn wedi cael ei guddio gan gymedrolwyr {domain}.",
"link_preview.author": "Gan {name}",
"link_preview.more_from_author": "Mwy gan {name}",
"lists.account.add": "Ychwanegu at restr",
"lists.account.remove": "Tynnu o'r rhestr",
"lists.delete": "Dileu rhestr",
@ -484,9 +485,9 @@
"notification.reblog": "Hybodd {name} eich post",
"notification.relationships_severance_event": "Wedi colli cysylltiad â {name}",
"notification.relationships_severance_event.account_suspension": "Mae gweinyddwr o {from} wedi atal {target}, sy'n golygu na allwch dderbyn diweddariadau ganddynt mwyach na rhyngweithio â nhw.",
"notification.relationships_severance_event.domain_block": "Mae gweinyddwr o {from} wedi rhwystro {target}, gan gynnwys {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {# cyfrif}} arall rydych chi'n ei ddilyn.",
"notification.relationships_severance_event.domain_block": "Mae gweinyddwr o {from} wedi blocio {target}, gan gynnwys {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {# cyfrif}} arall rydych chi'n ei ddilyn.",
"notification.relationships_severance_event.learn_more": "Dysgu mwy",
"notification.relationships_severance_event.user_domain_block": "Rydych wedi rhwystro {target}, gan ddileu {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {#cyfrifon}} arall rydych yn ei ddilyn.",
"notification.relationships_severance_event.user_domain_block": "Rydych wedi blocio {target}, gan ddileu {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {#cyfrifon}} arall rydych yn ei ddilyn.",
"notification.status": "{name} newydd ei bostio",
"notification.update": "Golygodd {name} bostiad",
"notification_requests.accept": "Derbyn",
@ -803,7 +804,7 @@
"video.expand": "Ymestyn fideo",
"video.fullscreen": "Sgrin llawn",
"video.hide": "Cuddio fideo",
"video.mute": "Tewi sain",
"video.mute": "Diffodd sain",
"video.pause": "Oedi",
"video.play": "Chwarae",
"video.unmute": "Dad-dewi sain"

View file

@ -205,10 +205,10 @@
"disabled_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert.",
"dismissable_banner.community_timeline": "Das sind die neuesten öffentlichen Beiträge von Profilen, deren Konten von {domain} verwaltet werden.",
"dismissable_banner.dismiss": "Ablehnen",
"dismissable_banner.explore_links": "Diese Nachrichten werden heute am häufigsten im sozialen Netzwerk geteilt. Neuere Nachrichten, die von vielen verschiedenen Profilen veröffentlicht wurden, werden höher eingestuft.",
"dismissable_banner.explore_statuses": "Diese Beiträge stammen aus dem gesamten sozialen Netzwerk und gewinnen derzeit an Reichweite. Neuere Beiträge, die häufiger geteilt und favorisiert wurden, werden höher eingestuft.",
"dismissable_banner.explore_tags": "Das sind Hashtags, die derzeit an Reichweite gewinnen. Hashtags, die von vielen verschiedenen Profilen verwendet werden, werden höher eingestuft.",
"dismissable_banner.public_timeline": "Das sind die neuesten öffentlichen Beiträge von Profilen im sozialen Netzwerk, denen Leute auf {domain} folgen.",
"dismissable_banner.explore_links": "Diese Nachrichten werden heute am häufigsten im Social Web geteilt. Neuere Nachrichten, die von vielen verschiedenen Profilen geteilt wurden, erscheinen weiter oben.",
"dismissable_banner.explore_statuses": "Diese Beiträge sind heute im Social Web sehr beliebt. Neuere Beiträge, die häufiger geteilt und favorisiert wurden, erscheinen weiter oben.",
"dismissable_banner.explore_tags": "Diese Hashtags sind heute im Social Web sehr beliebt. Hashtags, die von vielen verschiedenen Profilen verwendet werden, erscheinen weiter oben.",
"dismissable_banner.public_timeline": "Das sind die neuesten öffentlichen Beiträge von Profilen im Social Web, denen Leute auf {domain} folgen.",
"domain_block_modal.block": "Server blockieren",
"domain_block_modal.block_account_instead": "Stattdessen @{name} blockieren",
"domain_block_modal.they_can_interact_with_old_posts": "Profile von diesem Server werden mit deinen älteren Beiträgen interagieren können.",

View file

@ -92,7 +92,7 @@
"block_modal.remote_users_caveat": "Ímoslle pedir ao servidor {domain} que respecte a túa decisión. Emporiso, non hai garantía de que atenda a petición xa que os servidores xestionan os bloqueos de formas diferentes. As publicacións públicas poderían aínda ser visibles para usuarias que non iniciaron sesión.",
"block_modal.show_less": "Mostrar menos",
"block_modal.show_more": "Mostrar máis",
"block_modal.they_cant_mention": "Non te poden seguir nin mencionar.",
"block_modal.they_cant_mention": "Non te pode seguir nin mencionar.",
"block_modal.they_cant_see_posts": "Non pode ver as túas publicacións nin ti as de ela.",
"block_modal.they_will_know": "Pode ver que a bloqueaches.",
"block_modal.title": "Bloquear usuaria?",
@ -216,7 +216,7 @@
"domain_block_modal.they_wont_know": "Non saberá que a bloqueaches.",
"domain_block_modal.title": "Bloquear dominio?",
"domain_block_modal.you_will_lose_followers": "Vanse eliminar todas as túas seguidoras deste servidor.",
"domain_block_modal.you_wont_see_posts": "Non verás publicacións ou notificación das usuarias neste servidor.",
"domain_block_modal.you_wont_see_posts": "Non verás publicacións ou notificacións das usuarias deste servidor.",
"domain_pill.activitypub_lets_connect": "Permíteche conectar e interactuar con persoas non só de Mastodon, se non tamén con outras apps sociais.",
"domain_pill.activitypub_like_language": "ActivityPub é algo así como o idioma que Mastodon fala con outras redes sociais.",
"domain_pill.server": "Servidor",

View file

@ -35,7 +35,9 @@
"account.follow_back": "フォローバック",
"account.followers": "フォロワー",
"account.followers.empty": "まだ誰もフォローしていません。",
"account.followers_counter": "{count, plural, other {{counter} フォロワー}}",
"account.following": "フォロー中",
"account.following_counter": "{count, plural, other {{counter} フォロー}}",
"account.follows.empty": "まだ誰もフォローしていません。",
"account.go_to_profile": "プロフィールページへ",
"account.hide_reblogs": "@{name}さんからのブーストを非表示",
@ -61,6 +63,7 @@
"account.requested_follow": "{name}さんがあなたにフォローリクエストしました",
"account.share": "@{name}さんのプロフィールを共有する",
"account.show_reblogs": "@{name}さんからのブーストを表示",
"account.statuses_counter": "{count, plural, other {{counter} 投稿}}",
"account.unblock": "@{name}さんのブロックを解除",
"account.unblock_domain": "{domain}のブロックを解除",
"account.unblock_short": "ブロック解除",
@ -412,6 +415,7 @@
"limited_account_hint.title": "このプロフィールは{domain}のモデレーターによって非表示にされています。",
"link_preview.author": "{name}",
"link_preview.more_from_author": "{name}さんの投稿をもっと読む",
"link_preview.shares": "{count, plural, other {{counter}件の投稿}}",
"lists.account.add": "リストに追加",
"lists.account.remove": "リストから外す",
"lists.delete": "リストを削除",
@ -692,9 +696,11 @@
"server_banner.about_active_users": "過去30日間にこのサーバーを使用している人 (月間アクティブユーザー)",
"server_banner.active_users": "人のアクティブユーザー",
"server_banner.administered_by": "管理者",
"server_banner.is_one_of_many": "{domain} は、数々の独立したMastodonサーバーのうちのひとつです。サーバーに登録してFediverseのコミュニティに加わってみませんか。",
"server_banner.server_stats": "サーバーの情報",
"sign_in_banner.create_account": "アカウント作成",
"sign_in_banner.follow_anyone": "連合内の誰でもフォローして投稿を時系列で見ることができます。アルゴリズム、広告、クリックベイトはありません。",
"sign_in_banner.mastodon_is": "Mastodonに参加して、世界で起きていることを見つけよう。",
"sign_in_banner.sign_in": "ログイン",
"sign_in_banner.sso_redirect": "ログインまたは登録",
"status.admin_account": "@{name}さんのモデレーション画面を開く",

View file

@ -1,6 +1,10 @@
{
"about.blocks": "Ulac agbur",
"about.contact": "Anermis:",
"about.disclaimer": "Mastodon d aseɣẓan ilelli, d aseɣẓan n uɣbalu yeldin, d tnezzut n Mastodon gGmbH.",
"about.domain_blocks.preamble": "Maṣṭudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an ɣur-k tsuraf i yellan deg uqeddac-agi.",
"about.domain_blocks.silenced.title": "Ɣur-s talast",
"about.domain_blocks.suspended.title": "Yeḥbes",
"about.not_available": "Talɣut-a ur tettwabder ara deg uqeddac-a.",
"about.powered_by": "Azeṭṭa inmetti yettwasɣelsen sɣur {mastodon}",
"about.rules": "Ilugan n uqeddac",
@ -24,9 +28,12 @@
"account.featured_tags.last_status_at": "Tasuffeɣt taneggarut ass n {date}",
"account.featured_tags.last_status_never": "Ulac tisuffaɣ",
"account.follow": "Ḍfer",
"account.follow_back": "Ḍfer-it ula d kečč·m",
"account.followers": "Imeḍfaren",
"account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.",
"account.followers_counter": "{count, plural, one {{counter} n umḍfar} other {{counter} n yimeḍfaren}}",
"account.following": "Yeṭṭafaṛ",
"account.following_counter": "{count, plural, one {{counter} yettwaḍfaren} other {{counter} yettwaḍfaren}}",
"account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.",
"account.go_to_profile": "Ddu ɣer umaɣnu",
"account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
@ -49,6 +56,7 @@
"account.requested_follow": "{name} yessuter ad k·m-yeḍfer",
"account.share": "Bḍu amaɣnu n @{name}",
"account.show_reblogs": "Ssken-d inebḍa n @{name}",
"account.statuses_counter": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}",
"account.unblock": "Serreḥ i @{name}",
"account.unblock_domain": "Ssken-d {domain}",
"account.unblock_short": "Serreḥ",
@ -166,6 +174,7 @@
"dismissable_banner.explore_tags": "D wiyi i d ihacṭagen i d-yettawin tamyigawt deg web anmetti ass-a. Ihacṭagen i sseqdacen ugar n medden, εlayit d imezwura.",
"domain_block_modal.block": "Sewḥel aqeddac",
"domain_block_modal.they_cant_follow": "Yiwen ur yezmir ad k·m-id-yeḍfer seg uqeddac-a.",
"domain_block_modal.title": "Sewḥel taɣult?",
"domain_pill.activitypub_like_language": "ActivityPub am tutlayt yettmeslay Mastodon d izeḍwan inmettiyen nniḍen.",
"domain_pill.server": "Aqeddac",
"domain_pill.username": "Isem n useqdac",
@ -214,6 +223,7 @@
"filter_modal.added.review_and_configure_title": "Iɣewwaṛen n imzizdig",
"filter_modal.added.settings_link": "asebter n yiɣewwaṛen",
"filter_modal.added.short_explanation": "Tasuffeɣt-a tettwarna ɣer taggayt-a n yimsizdegen: {title}.",
"filter_modal.added.title": "Yettwarna umsizdeg!",
"filter_modal.select_filter.expired": "yemmut",
"filter_modal.select_filter.prompt_new": "Taggayt tamaynutt : {name}",
"filter_modal.select_filter.search": "Nadi neɣ snulfu-d",
@ -224,9 +234,9 @@
"firehose.remote": "Iqeddacen nniḍen",
"follow_request.authorize": "Ssireg",
"follow_request.reject": "Agi",
"follow_suggestions.dismiss": "Ur ttɛawad ara ad t-id-sekneṭ",
"follow_suggestions.dismiss": "Dayen ur t-id-skan ara",
"follow_suggestions.view_all": "Wali-ten akk",
"follow_suggestions.who_to_follow": "Menhu ara ḍefṛeḍ",
"follow_suggestions.who_to_follow": "Ad tḍefreḍ?",
"followed_tags": "Ihacṭagen yettwaḍfaren",
"footer.about": "Ɣef",
"footer.directory": "Akaram n imeɣna",
@ -235,6 +245,7 @@
"footer.keyboard_shortcuts": "Inegzumen n unasiw",
"footer.privacy_policy": "Tasertit tabaḍnit",
"footer.source_code": "Wali tangalt taɣbalut",
"footer.status": "N tsuffeɣt",
"generic.saved": "Yettwasekles",
"getting_started.heading": "Bdu",
"hashtag.column_header.tag_mode.all": "d {additional}",
@ -313,11 +324,14 @@
"lightbox.previous": "Ɣer deffir",
"limited_account_hint.action": "Wali amaɣnu akken yebɣu yili",
"link_preview.author": "S-ɣur {name}",
"link_preview.more_from_author": "Ugar sɣur {name}",
"link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}",
"lists.account.add": "Rnu ɣer tebdart",
"lists.account.remove": "Kkes seg tebdart",
"lists.delete": "Kkes tabdart",
"lists.edit": "Ẓreg tabdart",
"lists.edit.submit": "Beddel azwel",
"lists.exclusive": "Ffer tisuffaɣ-a seg ugejdan",
"lists.new.create": "Rnu tabdart",
"lists.new.title_placeholder": "Azwel amaynut n tebdart",
"lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren",
@ -338,6 +352,7 @@
"navigation_bar.bookmarks": "Ticraḍ",
"navigation_bar.community_timeline": "Tasuddemt tadigant",
"navigation_bar.compose": "Aru tajewwiqt tamaynut",
"navigation_bar.direct": "Tibdarin tusligin",
"navigation_bar.discover": "Ẓer",
"navigation_bar.domain_blocks": "Tiɣula yeffren",
"navigation_bar.explore": "Snirem",
@ -357,9 +372,14 @@
"navigation_bar.search": "Nadi",
"navigation_bar.security": "Taɣellist",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
"notification.admin.report": "Yemla-t-id {name} {target}",
"notification.admin.sign_up": "Ijerred {name}",
"notification.favourite": "{name} yesmenyaf addad-ik·im",
"notification.follow": "iṭṭafar-ik·em-id {name}",
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
"notification.mention": "{name} yebder-ik-id",
"notification.moderation-warning.learn_more": "Issin ugar",
"notification.moderation_warning.action_suspend": "Yettwaseḥbes umiḍan-ik.",
"notification.own_poll": "Tafrant-ik·im tfuk",
"notification.poll": "Tfukk tefrant ideg tettekkaḍ",
"notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
@ -370,6 +390,7 @@
"notification_requests.notifications_from": "Ilɣa sɣur {name}",
"notifications.clear": "Sfeḍ tilɣa",
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?",
"notifications.column_settings.admin.report": "Ineqqisen imaynuten:",
"notifications.column_settings.alert": "Tilɣa n tnarit",
"notifications.column_settings.favourite": "Imenyafen:",
"notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin",
@ -384,6 +405,7 @@
"notifications.column_settings.sound": "Rmed imesli",
"notifications.column_settings.status": "Tisuffaɣ timaynutin :",
"notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra",
"notifications.column_settings.update": "Iẓreg:",
"notifications.filter.all": "Akk",
"notifications.filter.boosts": "Seǧhed",
"notifications.filter.favourites": "Imenyafen",
@ -413,6 +435,7 @@
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Ttwassnen deg Mastodon",
"onboarding.profile.display_name": "Isem ara d-yettwaskanen",
"onboarding.profile.display_name_hint": "Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer…",
"onboarding.profile.note": "Tameddurt",
"onboarding.profile.note_hint": "Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen …",
"onboarding.profile.save_and_continue": "Sekles, tkemmleḍ",
@ -441,6 +464,7 @@
"poll.total_votes": "{count, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
"poll.vote": "Dɣeṛ",
"poll.voted": "Tdeɣṛeḍ ɣef tririt-ayi",
"poll.votes": "{votes, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
"poll_button.add_poll": "Rnu asenqed",
"poll_button.remove_poll": "Kkes asenqed",
"privacy.change": "Seggem tabaḍnit n yizen",
@ -465,9 +489,12 @@
"relative_time.seconds": "{number}tas",
"relative_time.today": "assa",
"reply_indicator.cancel": "Sefsex",
"reply_indicator.poll": "Afmiḍi",
"report.block": "Sewḥel",
"report.categories.legal": "Azerfan",
"report.categories.other": "Tiyyaḍ",
"report.categories.spam": "Aspam",
"report.category.subtitle": "Fren amṣada akk ufrin",
"report.category.title_account": "ameɣnu",
"report.category.title_status": "tasuffeɣt",
"report.close": "Immed",
@ -476,13 +503,25 @@
"report.next": "Uḍfiṛ",
"report.placeholder": "Iwenniten-nniḍen",
"report.reasons.dislike": "Ur t-ḥemmleɣ ara",
"report.reasons.dislike_description": "D ayen akk ur bɣiɣ ara ad waliɣ",
"report.reasons.other": "D ayen nniḍen",
"report.reasons.other_description": "Ugur ur yemṣada ara akk d taggayin-nniḍen",
"report.reasons.spam": "D aspam",
"report.reasons.spam_description": "Yir iseɣwan, yir agman d tririyin i d-yettuɣalen",
"report.reasons.violation": "Truẓi n yilugan n uqeddac",
"report.reasons.violation_description": "Teẓriḍ y·tettruẓu kra n yilugan",
"report.rules.subtitle": "Fren ayen akk yemṣadan",
"report.rules.title": "Acu n yilugan i yettwarẓan?",
"report.statuses.subtitle": "Fren ayen akk yemṣadan",
"report.statuses.title": "Llant tsuffaɣ ara isdemren aneqqis-a?",
"report.submit": "Azen",
"report.target": "Mmel {target}",
"report.thanks.take_action_actionable": "Ideg nekkni nessenqad tuttra-inek•inem, tzemreḍ ad tḥadreḍ mgal @{name}:",
"report.thanks.title": "Ur tebɣiḍ ara ad twaliḍ aya?",
"report.thanks.title_actionable": "Tanemmirt ɣef uneqqis, ad nwali deg waya.",
"report.unfollow": "Seḥbes aḍfar n @{name}",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
"report_notification.categories.legal": "Azerfan",
"report_notification.categories.other": "Ayen nniḍen",
"report_notification.categories.spam": "Aspam",
"report_notification.open": "Ldi aneqqis",
@ -497,6 +536,7 @@
"search_popout.full_text_search_disabled_message": "Ur yelli ara deg {domain}.",
"search_popout.language_code": "Tangalt ISO n tutlayt",
"search_popout.options": "Iwellihen n unadi",
"search_popout.quick_actions": "Tigawin tiruradin",
"search_popout.recent": "Inadiyen ineggura",
"search_popout.user": "amseqdac",
"search_results.accounts": "Imeɣna",
@ -505,7 +545,9 @@
"search_results.see_all": "Wali-ten akk",
"search_results.statuses": "Tisuffaɣ",
"search_results.title": "Anadi ɣef {q}",
"server_banner.active_users": "iseqdacen urmiden",
"server_banner.administered_by": "Yettwadbel sɣur :",
"server_banner.server_stats": "Tidaddanin n uqeddac:",
"sign_in_banner.create_account": "Snulfu-d amiḍan",
"sign_in_banner.sign_in": "Qqen",
"sign_in_banner.sso_redirect": "Qqen neɣ jerred",
@ -516,13 +558,21 @@
"status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen",
"status.copy": "Nɣel assaɣ ɣer tasuffeɣt",
"status.delete": "Kkes",
"status.direct": "Bder-d @{name} weḥd-s",
"status.direct_indicator": "Abdar uslig",
"status.edit": "Ẓreg",
"status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}",
"status.embed": "Seddu",
"status.favourite": "Amenyaf",
"status.favourites": "{count, plural, one {n usmenyaf} other {n ismenyafen}}",
"status.filter": "Sizdeg tassufeɣt-a",
"status.filtered": "Yettwasizdeg",
"status.hide": "Ffer tasuffeɣt",
"status.history.created": "Yerna-t {name} {date}",
"status.history.edited": "Ibeddel-it {name} {date}",
"status.load_more": "Sali ugar",
"status.media.open": "Sit i ulday",
"status.media.show": "Sit i uskan",
"status.media_hidden": "Amidya yettwaffer",
"status.mention": "Bder-d @{name}",
"status.more": "Ugar",
@ -530,10 +580,11 @@
"status.mute_conversation": "Sgugem adiwenni",
"status.open": "Semɣeṛ tasuffeɣt-ayi",
"status.pin": "Senteḍ-itt deg umaɣnu",
"status.pinned": "Tijewwiqin yettwasentḍen",
"status.pinned": "Tisuffaɣ yettwasentḍen",
"status.read_more": "Issin ugar",
"status.reblog": "Bḍu",
"status.reblogged_by": "Yebḍa-tt {name}",
"status.reblogs": "{count, plural, one {n usnerni} other {n yisnernuyen}}",
"status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.",
"status.redraft": "Kkes tɛiwdeḍ tira",
"status.remove_bookmark": "Kkes tacreḍt",
@ -548,6 +599,7 @@
"status.show_less_all": "Semẓi akk tisuffɣin",
"status.show_more": "Ssken-d ugar",
"status.show_more_all": "Ẓerr ugar lebda",
"status.show_original": "Sken aɣbalu",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"status.translate": "Suqel",
"status.translated_from_with": "Yettwasuqel seg {lang} s {provider}",
@ -582,6 +634,7 @@
"upload_form.video_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt neɣ deg yiẓri",
"upload_modal.analyzing_picture": "Tasleḍt n tugna tetteddu…",
"upload_modal.apply": "Snes",
"upload_modal.applying": "Asnas…",
"upload_modal.choose_image": "Fren tugna",
"upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis",
"upload_modal.detect_text": "Sefru-d aḍris seg tugna",
@ -589,6 +642,7 @@
"upload_modal.preparing_ocr": "Aheyyi n OCR…",
"upload_modal.preview_label": "Taskant ({ratio})",
"upload_progress.label": "Asali iteddu...",
"upload_progress.processing": "Asesfer…",
"username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ",
"video.close": "Mdel tabidyutt",
"video.download": "Sidered afaylu",

View file

@ -35,6 +35,7 @@
"account.follow_back": "Sekot atpakaļ",
"account.followers": "Sekotāji",
"account.followers.empty": "Šim lietotājam vēl nav sekotāju.",
"account.followers_counter": "{count, plural, zero {{count} sekotāju} one {{count} sekotājs} other {{count} sekotāji}}",
"account.following": "Seko",
"account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
"account.go_to_profile": "Doties uz profilu",
@ -312,9 +313,9 @@
"home.column_settings.show_reblogs": "Rādīt pastiprinātos ierakstus",
"home.column_settings.show_replies": "Rādīt atbildes",
"home.hide_announcements": "Slēpt paziņojumus",
"home.pending_critical_update.body": "Lūdzu, pēc iespējas ātrāk atjaunini savu Mastodon serveri!",
"home.pending_critical_update.body": "Lūgums pēc iespējas drīzāk atjaunināt savu Mastodon serveri.",
"home.pending_critical_update.link": "Skatīt jauninājumus",
"home.pending_critical_update.title": "Pieejams kritisks drošības jauninājums!",
"home.pending_critical_update.title": "Ir pieejams būtisks drošības atjauninājums.",
"home.show_announcements": "Rādīt paziņojumus",
"interaction_modal.description.favourite": "Ar Mastodon kontu tu vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē, un saglabātu to vēlākai lasīšanai.",
"interaction_modal.description.follow": "Ar Mastodon kontu Tu vari sekot {name}, lai saņemtu lietotāja ierakstus savā mājas plūsmā.",

View file

@ -3,6 +3,8 @@
"about.contact": "Контакт:",
"about.disclaimer": "Mastodon є задарьнов проґрамов из удпертым кодом тай торговов значков Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Причины не ясні",
"about.domain_blocks.preamble": "Майбульш Mastodon поволят вам позирати контент тай комуніковати из хосновачами из другых федерованых серверув. Туй лиш уняткы учинені про сись конкретный сервер.",
"about.domain_blocks.silenced.explanation": "Вы майбульш не будете видіти профілі тай контент из сього сервера, кидь не будете го самі глядати авадь пудпишете ся на нього.",
"about.domain_blocks.silenced.title": "Обмежено",
"about.domain_blocks.suspended.explanation": "Ниякі податкы из сього сервера не будут уброблені, усокочені ци поміняні, што чинит невозможнов хоть-яку інтеракцію ци зязок из хосновачами из сього сервера.",
"about.domain_blocks.suspended.title": "Заблоковано",
@ -20,6 +22,7 @@
"account.browse_more_on_origin_server": "Позирайте бульше на ориґіналнум профілю",
"account.cancel_follow_request": "Удмінити пудписку",
"account.copy": "Зкопіровати удкликованя на профіл",
"account.direct": "Пошептати @{name}",
"account.disable_notifications": "Бульше не сповіщати ми коли {name} пише",
"account.domain_blocked": "Домен заблокованый",
"account.edit_profile": "Управити профіл",
@ -39,8 +42,10 @@
"account.joined_short": "Датум прикапчованя",
"account.languages": "Поміняти убрані языкы",
"account.link_verified_on": "Властность сього удкликованя было звірено {date}",
"account.locked_info": "Сись профіл є замкнутый. Ґазда акаунта буде ручно провіряти тко го може зафоловити.",
"account.media": "Медіа",
"account.moved_to": "Хосновач {name} указав, ож новый профіл йим є:",
"account.mention": "Спомянути @{name}",
"account.moved_to": "Хосновач {name} указав, ож новый профіл му є:",
"account.mute": "Стишити {name}",
"account.mute_notifications_short": "Стишити голошіня",
"account.mute_short": "Стишити",
@ -60,9 +65,12 @@
"account.unblock_short": "Розблоковати",
"account.unendorse": "Не указовати на профілови",
"account.unfollow": "Удписати ся",
"account.unmute": "Указовати {name}",
"account.unmute_notifications_short": "Указовати голошіня",
"account.unmute_short": "Указовати",
"account_note.placeholder": "Клопкніт обы додати примітку",
"admin.dashboard.retention.average": "Середньоє",
"admin.dashboard.retention.cohort": "Місяць прикапчованя",
"admin.dashboard.retention.cohort_size": "Нові хосновачі",
"admin.impact_report.instance_accounts": "Профілі из акаунтув, котрі ся удалят",
"admin.impact_report.instance_followers": "Пудписникы, котрых стратят наші хосновачі",
@ -70,11 +78,77 @@
"admin.impact_report.title": "Вплыв цілком",
"alert.rate_limited.message": "Попробуйте зась по {retry_time, time, medium}.",
"alert.rate_limited.title": "Частота обмежена",
"alert.unexpected.message": "Стала ся нечекана хыба.",
"alert.unexpected.title": "Ийой!",
"announcement.announcement": "Голошіня",
"audio.hide": "Зпрятати звук",
"block_modal.remote_users_caveat": "Попросиме ґазду сервера {domain} честовати вашоє рішеня. Айбо не ґарантуєме повный соглас, бо даякі серверы можут брати блокованя по-инчакому. Публичні дописы годно быти видко незалоґованым хосновачам.",
"block_modal.show_less": "Указати менше",
"block_modal.show_more": "Указати бульше",
"block_modal.they_cant_mention": "Они не можут вас споминати авадь слідовати.",
"block_modal.they_cant_see_posts": "Они не можут видіти ваші публикації, тай наспак — вы йихні.",
"block_modal.they_will_know": "Они видят, ож сут заблоковані.",
"block_modal.title": "Заблоковати хосновача?",
"block_modal.you_wont_see_mentions": "Не будете видіти публикації тай споминкы сього хосновача.",
"boost_modal.combo": "Можете клынцнути {combo} другый раз обы сесе пропустити",
"bundle_column_error.copy_stacktrace": "Укопіровати звіт за хыбу",
"bundle_column_error.error.body": "Не годни сьме указати зажадану сторунку. Годно быти спозад хыбы у нашум сістемі, авадь проблемы зумісности бравзера.",
"bundle_column_error.error.title": "Ийой!",
"bundle_column_error.network.body": "Стала ся хыба як сьме пробовали напаровати сторунку. Годно ся йсе было стати спозад слабого споєня вашого інтернета, авадь сервера.",
"bundle_column_error.network.title": "Хыба споєня",
"bundle_column_error.retry": "Попробуйте зась",
"bundle_column_error.return": "Вернути ся на головну",
"bundle_column_error.routing.body": "Не можеме найти сяку сторунку. Бизувні сьте, ож URL у адресному шорикови є добрый?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Заперти",
"bundle_modal_error.message": "Штось ся показило, закидь сьме ладовали сись компонент.",
"bundle_modal_error.retry": "Попробовати зась",
"closed_registrations.other_server_instructions": "Mastodon є децентралізованов платформов, можете си учинити профіл и на другому серверови тай комуніковати из сим."
"closed_registrations.other_server_instructions": "Mastodon є децентралізованов платформов, можете си учинити профіл и на другому серверови тай комуніковати из сим.",
"closed_registrations_modal.description": "Раз не мож учинити профіл на {domain}, айбо не мусите мати профіл ипен на серверови {domain} обы хосновати Mastodon.",
"closed_registrations_modal.find_another_server": "Найти другый сервер",
"column.about": "За сайт",
"column.blocks": "Заблоковані хосновачі",
"column.bookmarks": "Усокоченоє",
"column.direct": "Шептаня",
"column.directory": "Никати профілі",
"column.domain_blocks": "Заблоковані домены",
"column.favourites": "Убраноє",
"column.follow_requests": "Запросы на пудписку",
"column.lists": "Исписы",
"column.mutes": "Стишені хосновачі",
"column.notifications": "Убвіщеня",
"column.pins": "Закріплені публикації",
"column_back_button.label": "Назад",
"column_header.hide_settings": "Спрятати штімованя",
"column_header.moveLeft_settings": "Посунути колонку до ліва",
"column_header.moveRight_settings": "Посунути колонку до права",
"column_header.pin": "Закріпити",
"column_header.show_settings": "Указати штімованя",
"column_header.unpin": "Удкріпити",
"column_subheading.settings": "Штімованя",
"compose.language.change": "Поміняти язык",
"compose.language.search": "Глядати языкы...",
"compose.published.body": "Пост опубликованый.",
"compose.saved.body": "Пост усокоченый.",
"compose_form.direct_message_warning_learn_more": "Читайте бульше",
"compose_form.encryption_warning": "Публикації на Mastodon не шіфрувут ся. Не шырьте чутливу інформацію через Mastodon.",
"compose_form.hashtag_warning": "Сись пост не буде ся появляти у исписови по гештеґови, бо вун не є публичный. Лишек публичні посты буде видко за гештеґом.",
"compose_form.lock_disclaimer": "Ваш профіл є {locked}. Хоть-тко може ся на вас пудписати, обы видїти ваші ексклузівні посты.",
"compose_form.lock_disclaimer.lock": "замкнено",
"compose_form.placeholder": "Што нового?",
"compose_form.poll.duration": "Трывалость убзвідованя",
"compose_form.poll.multiple": "Дакулько варіантув",
"compose_form.poll.option_placeholder": "Варіант {number}",
"compose_form.poll.single": "Уберіт єден",
"compose_form.poll.switch_to_multiple": "Змінити убзвідованя обы поволити дакулько варіантув",
"compose_form.poll.switch_to_single": "Змінити убзвідованя обы поволити лишек єден варіант",
"compose_form.poll.type": "Стіл",
"compose_form.publish": "Публикація",
"compose_form.publish_form": "Нова публикація",
"compose_form.reply": "Удповідь",
"copypaste.copy_to_clipboard": "Копіровати у памнять",
"directory.recently_active": "Недавно актівні",
"disabled_account_banner.account_settings": "Штімованя акаунта",
"disabled_account_banner.text": "Ваш акаунт {disabledAccount} раз є неактівный.",
"dismissable_banner.community_timeline": "Туй сут недавні публикації уд профілув на серверови {domain}."
}

View file

@ -33,6 +33,7 @@
"account.mute": "@{name} නිහඬ කරන්න",
"account.mute_short": "නිහඬ",
"account.muted": "නිහඬ කළා",
"account.open_original_page": "මුල් පිටුව අරින්න",
"account.posts": "ලිපි",
"account.posts_with_replies": "ලිපි සහ පිළිතුරු",
"account.report": "@{name} වාර්තා කරන්න",
@ -51,6 +52,10 @@
"alert.unexpected.title": "අපොයි!",
"announcement.announcement": "නිවේදනය",
"audio.hide": "හඬපටය සඟවන්න",
"block_modal.show_less": "අඩුවෙන් පෙන්වන්න",
"block_modal.show_more": "තව පෙන්වන්න",
"block_modal.they_will_know": "අවහිර කළ බව දකිනු ඇත.",
"block_modal.title": "අවහිර කරන්නද?",
"boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට {combo} එබීමට හැකිය",
"bundle_column_error.copy_stacktrace": "දෝෂ වාර්තාවේ පිටපතක්",
"bundle_column_error.error.title": "අපොයි!",
@ -100,10 +105,13 @@
"compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත",
"compose_form.placeholder": "ඔබගේ සිතුවිලි මොනවාද?",
"compose_form.poll.duration": "මත විමසීමේ කාලය",
"compose_form.poll.option_placeholder": "විකල්පය {number}",
"compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයකට මත විමසුම වෙනස් කරන්න",
"compose_form.poll.switch_to_single": "තනි තේරීමකට මත විමසුම වෙනස් කරන්න",
"compose_form.poll.type": "ශෛලිය",
"compose_form.publish": "ප්‍රකාශනය",
"compose_form.publish_form": "නව ලිපිය",
"compose_form.reply": "පිළිතුරු",
"compose_form.spoiler.marked": "අන්තර්ගත අවවාදය ඉවත් කරන්න",
"compose_form.spoiler.unmarked": "අන්තර්ගත අවවාදයක් එක් කරන්න",
"confirmation_modal.cancel": "අවලංගු",
@ -123,6 +131,7 @@
"conversation.mark_as_read": "කියවූ බව යොදන්න",
"conversation.open": "සංවාදය බලන්න",
"conversation.with": "{names} සමඟ",
"copy_icon_button.copied": "පසුරුපුවරුවට පිටපත් විය",
"copypaste.copied": "පිටපත් විය",
"copypaste.copy_to_clipboard": "පසුරුපුවරුවට පිටපතක්",
"directory.federated": "දන්නා ෆෙඩිවර්ස් වෙතින්",
@ -130,6 +139,9 @@
"directory.new_arrivals": "නව පැමිණීම්",
"directory.recently_active": "මෑත දී සක්‍රියයි",
"disabled_account_banner.account_settings": "ගිණුමේ සැකසුම්",
"dismissable_banner.dismiss": "ඉවතලන්න",
"domain_pill.server": "සේවාදායකය",
"domain_pill.username": "පරිශ්‍රීලක නාමය",
"embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම ලිපිය ඔබගේ අඩවියට කාවද්දන්න.",
"embed.preview": "මෙන්න එය පෙනෙන අන්දම:",
"emoji_button.activity": "ක්‍රියාකාරකම",
@ -178,9 +190,13 @@
"filter_modal.select_filter.search": "සොයන්න හෝ සාදන්න",
"filter_modal.select_filter.title": "මෙම ලිපිය පෙරන්න",
"filter_modal.title.status": "ලිපියක් පෙරන්න",
"filtered_notifications_banner.title": "පෙරූ දැනුම්දීම්",
"firehose.all": "සියල්ල",
"firehose.local": "මෙම සේවාදායකය",
"firehose.remote": "වෙනත් සේවාදායක",
"follow_request.reject": "ප්‍රතික්‍ෂේප",
"follow_suggestions.dismiss": "නැවත පෙන්වන්න එපා",
"follow_suggestions.view_all": "සියල්ල බලන්න",
"footer.about": "පිළිබඳව",
"footer.directory": "පැතිකඩ නාමාවලිය",
"footer.get_app": "යෙදුම ගන්න",
@ -202,6 +218,7 @@
"home.pending_critical_update.link": "යාවත්කාල බලන්න",
"home.show_announcements": "නිවේදන පෙන්වන්න",
"interaction_modal.login.action": "මුලට ගෙනයන්න",
"interaction_modal.on_another_server": "වෙනත් සේවාදායකයක",
"interaction_modal.on_this_server": "මෙම සේවාදායකයෙහි",
"interaction_modal.title.favourite": "{name}ගේ ලිපිය ප්‍රිය කරන්න",
"interaction_modal.title.follow": "{name} අනුගමනය",

View file

@ -170,6 +170,8 @@
"domain_block_modal.block": "o weka e ma",
"domain_block_modal.you_will_lose_followers": "ma ni la jan alasa ale sina li weka",
"domain_block_modal.you_wont_see_posts": "sina ken ala lukin e toki tan jan pi ma ni",
"domain_pill.server": "ma",
"domain_pill.username": "nimi jan",
"embed.preview": "ni li jo e sitelen ni:",
"emoji_button.activity": "musi",
"emoji_button.flags": "len ma",
@ -274,6 +276,7 @@
"load_pending": "{count, plural, other {ijo sin #}}",
"loading_indicator.label": "ni li kama…",
"media_gallery.toggle_visible": "{number, plural, other {o len e sitelen}}",
"mute_modal.title": "sina wile ala wile kute e jan ni?",
"navigation_bar.about": "sona",
"navigation_bar.blocks": "jan weka",
"navigation_bar.compose": "o pali e toki sin",
@ -290,24 +293,33 @@
"notification.follow": " {name} li kute e sina",
"notification.follow_request": "{name} li wile kute e sina",
"notification.mention": "jan {name} li toki e sina",
"notification.moderation-warning.learn_more": "o kama sona e ijo ante",
"notification.poll": "sina pana lon pana la pana ni li pini",
"notification.reblog": "{name} li wawa e toki sina",
"notification.status": "{name} li toki",
"notification.update": "{name} li ante e toki",
"notification_requests.dismiss": "o weka",
"notifications.column_settings.favourite": "ijo pona:",
"notifications.column_settings.follow": "jan kute sin",
"notifications.column_settings.poll": "pana lon pana ni:",
"notifications.column_settings.reblog": "wawa:",
"notifications.column_settings.status": "toki sin:",
"notifications.column_settings.update": "ante toki:",
"notifications.filter.all": "ale",
"notifications.filter.boosts": "wawa",
"notifications.filter.favourites": "ijo pona",
"notifications.filter.mentions": "toki pi toki sina",
"notifications.filter.polls": "pana lon pana ni",
"onboarding.action.back": "o tawa monsi",
"onboarding.actions.back": "o tawa monsi",
"onboarding.compose.template": "toki a, #Mastodon o!",
"onboarding.profile.display_name": "nimi tawa jan ante",
"onboarding.profile.note": "sona sina",
"onboarding.share.lead": "o toki lon nasin Masoton pi alasa sina tawa jan",
"onboarding.share.message": "ilo #Mastodon la mi jan {username} a! o kute e mi lon ni: {url}",
"onboarding.start.title": "sina o kama pona a!",
"onboarding.tips.migration": "<strong>sina sona ala sona e ni?</strong> tenpo kama la sina pilin ike tawa ma {domain} la, sina ken tawa ma ante lon ilo Masoton. jan li kute e sina la jan ni li awen kute e sina. kin la sina ken lawa e ma pi sina taso a!",
"poll.closed": "ona li pini",
"poll.total_people": "{count, plural, other {jan #}}",
"poll.total_votes": "{count, plural, other {pana #}}",
"poll.vote": "o pana",
@ -315,9 +327,15 @@
"poll.votes": "{votes, plural, other {pana #}}",
"privacy.direct.long": "jan ale lon toki",
"privacy.public.short": "tawa ale",
"regeneration_indicator.label": "ni li kama…",
"relative_time.days": "{number}d",
"relative_time.full.just_now": "tenpo ni",
"relative_time.hours": "{number}h",
"relative_time.just_now": "tenpo ni",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "tenpo suno ni",
"reply_indicator.cancel": "o ala",
"report.block": "o weka e jan",
"report.block_explanation": "sina kama lukin ala e toki ona. ona li kama ala ken lukin e toki sina li kama ala ken kute e sina. ona li ken sona e kama ni.",
"report.categories.other": "ante",
@ -336,6 +354,7 @@
"report.thanks.title": "sina wile ala lukin e ni anu seme?",
"report.unfollow": "o pini kute e {name}",
"report_notification.categories.legal": "ike tawa nasin lawa",
"report_notification.categories.other": "ante",
"search.placeholder": "o alasa",
"search.quick_action.go_to_account": "o tawa lipu jan {x}",
"search_popout.language_code": "nimi toki kepeken nasin ISO",
@ -343,6 +362,7 @@
"search_results.see_all": "ale",
"search_results.statuses": "toki",
"search_results.title": "o alasa e {q}",
"server_banner.administered_by": "jan lawa:",
"status.block": "o weka e @{name}",
"status.cancel_reblog_private": "o pini e pana",
"status.delete": "o weka",
@ -356,12 +376,14 @@
"status.media.open": "o open",
"status.media.show": "o lukin",
"status.media_hidden": "sitelen li len",
"status.more": "kin",
"status.mute": "o len e @{name}",
"status.mute_conversation": "o kute ala e ijo pi toki ni",
"status.pin": "o sewi lon lipu sina",
"status.pinned": "toki sewi",
"status.reblog": "o wawa",
"status.share": "o pana tawa ante",
"status.show_filter_reason": "o lukin",
"status.show_less": "o lili e ni",
"status.show_less_all": "o lili e ale",
"status.show_more": "o suli e ni",
@ -378,7 +400,9 @@
"timeline_hint.resources.follows": "jan lukin",
"timeline_hint.resources.statuses": "ijo pi tenpo suli",
"trends.trending_now": "jan mute li toki",
"units.short.billion": "{count}B",
"units.short.million": "{count}AAA",
"units.short.thousand": "{count}K",
"upload_button.label": "o pana e sitelen anu kalama",
"upload_error.limit": "ilo li ken ala e suli pi ijo ni.",
"upload_form.audio_description": "o toki e ijo kute tawa jan pi kute ala, tawa jan pi kute lili",
@ -386,6 +410,7 @@
"upload_form.edit": "o ante",
"upload_form.thumbnail": "o ante e sitelen lili",
"upload_form.video_description": "o toki e ijo kute tawa jan pi kute ala, tawa jan pi kute lili, e ijo lukin tawa jan pi lukin ala, tawa jan pi lukin lili",
"upload_modal.analyzing_picture": "ilo li lukin e sitelen...",
"upload_modal.choose_image": "o wile e sitelen",
"upload_modal.description_placeholder": "mi pu jaki tan soweli",
"upload_modal.detect_text": "ilo o alasa e nimi tan sitelen",

View file

@ -217,18 +217,18 @@
"domain_block_modal.title": "Заблокувати домен?",
"domain_block_modal.you_will_lose_followers": "Усіх ваших підписників з цього сервера буде вилучено.",
"domain_block_modal.you_wont_see_posts": "Ви не бачитимете дописів і сповіщень від користувачів на цьому сервері.",
"domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних додатках.",
"domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Мастодонт розмовляє з іншими соціальними мережами.",
"domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних застосунках.",
"domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Mastodon розмовляє з іншими соціальними мережами.",
"domain_pill.server": "Сервер",
"domain_pill.their_handle": "Їхня адреса:",
"domain_pill.their_server": "Їхній цифровий дім, де живуть усі їхні пости.",
"domain_pill.their_server": "Їхній цифровий дім, де живуть усі їхні дописи.",
"domain_pill.their_username": "Їхній унікальний ідентифікатор на їхньому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.",
"domain_pill.username": "Ім'я користувача",
"domain_pill.whats_in_a_handle": "Що є в адресі?",
"domain_pill.who_they_are": "Оскільки дескриптори вказують, хто це і де він знаходиться, ви можете взаємодіяти з людьми через соціальну мережу платформ на основі <button>ActivityPub</button>.",
"domain_pill.who_you_are": "Оскільки ваш нікнейм вказує, хто ви та де ви, люди можуть взаємодіяти з вами через соціальну мережу платформ на основі <button>ActivityPub</button>.",
"domain_pill.your_handle": "Ваша адреса:",
"domain_pill.your_server": "Ваш цифровий дім, де живуть усі ваші публікації. Не подобається цей? Перенесіть сервери в будь-який час і залучайте своїх підписників.",
"domain_pill.your_server": "Ваш цифровий дім, де живуть усі ваші дописи. Не подобається цей? Перенесіть сервери в будь-який час і залучайте своїх підписників.",
"domain_pill.your_username": "Ваш унікальний ідентифікатор на цьому сервері. Ви можете знайти користувачів з однаковими іменами на різних серверах.",
"embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.",
"embed.preview": "Ось який вигляд це матиме:",
@ -489,9 +489,9 @@
"notification.reblog": "{name} поширює ваш допис",
"notification.relationships_severance_event": "Втрачено з'єднання з {name}",
"notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.",
"notification.relationships_severance_event.domain_block": "Адміністратор з {from} заблокував {target}, включаючи {followersCount} ваших підписників і {{followingCount, plural, one {# account} other {# accounts}}, на які ви підписані.",
"notification.relationships_severance_event.learn_more": ізнатися більше",
"notification.relationships_severance_event.user_domain_block": "Ви заблокували {target}, видаливши {followersCount} ваших підписників і {followingCount, plural, one {# account} other {# accounts}}, за якими ви стежите.",
"notification.relationships_severance_event.domain_block": "Адміністратор з {from} заблокував {target}, включаючи {followersCount} ваших підписників і {followingCount , plural, one {# обліковий запис} few {# облікові записи} many {# облікових записів} other {# обліковий запис}}, на які ви підписані.",
"notification.relationships_severance_event.learn_more": окладніше",
"notification.relationships_severance_event.user_domain_block": "Ви заблокували {target}, видаливши {followersCount} ваших підписників і {followingCount, plural, one {# обліковий запис} few {# облікові записи} many {# облікових записів} other {# обліковий запис}}, за якими ви стежите.",
"notification.status": "{name} щойно дописує",
"notification.update": "{name} змінює допис",
"notification_requests.accept": "Прийняти",

View file

@ -113,7 +113,7 @@
"closed_registrations.other_server_instructions": "因為 Mastodon 是去中心化的,所以您也能於其他伺服器上建立帳號,並仍然與這個伺服器互動。",
"closed_registrations_modal.description": "目前無法於 {domain} 建立新帳號,但也請別忘了,您並不一定需要有 {domain} 伺服器的帳號,也能使用 Mastodon。",
"closed_registrations_modal.find_another_server": "尋找另一個伺服器",
"closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以無論您於哪個伺服器新增帳號,都可以與此伺服器上的任何人跟隨及互動。您甚至能自行架設一個自己的伺服器!",
"closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以無論您於哪個伺服器新增帳號,都可以與此伺服器上的任何人跟隨及互動。您甚至能自行架設自己的伺服器!",
"closed_registrations_modal.title": "註冊 Mastodon",
"column.about": "關於",
"column.blocks": "已封鎖的使用者",
@ -271,7 +271,7 @@
"empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或者跟隨其他伺服器的使用者後,就會有嘟文出現了",
"error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,無法正常顯示此頁面。",
"error.unexpected_crash.explanation_addons": "此頁面無法被正常顯示,這可能是由瀏覽器附加元件或網頁自動翻譯工具造成的。",
"error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式檢視來使用 Mastodon。",
"error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式檢視來使用 Mastodon。",
"error.unexpected_crash.next_steps_addons": "請嘗試關閉它們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。",
"errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿",
"errors.unexpected_crash.report_issue": "回報問題",
@ -356,7 +356,7 @@
"home.show_announcements": "顯示公告",
"interaction_modal.description.favourite": "若於 Mastodon 上有個帳號,您可以將此嘟文加入最愛使作者知道您欣賞它且將它儲存下來。",
"interaction_modal.description.follow": "若於 Mastodon 上有個帳號,您可以跟隨 {name} 以於首頁時間軸接收他們的嘟文。",
"interaction_modal.description.reblog": "若於 Mastodon 上有個帳號,您可以轉嘟此嘟文以分享給您的跟隨者們。",
"interaction_modal.description.reblog": "若於 Mastodon 上有個帳號,您可以轉嘟此嘟文以向您的跟隨者們分享。",
"interaction_modal.description.reply": "若於 Mastodon 上有個帳號,您可以回覆此嘟文。",
"interaction_modal.login.action": "返回首頁",
"interaction_modal.login.prompt": "您帳號所屬伺服器之網域例如mastodon.social",
@ -552,7 +552,7 @@
"onboarding.follows.lead": "您的首頁時間軸是 Mastodon 的核心體驗。若您跟隨更多人,它將會變得更活躍有趣。這些個人檔案也許是個好起點,您可以隨時取消跟隨他們!",
"onboarding.follows.title": "客製化您的首頁時間軸",
"onboarding.profile.discoverable": "使我的個人檔案可以被找到",
"onboarding.profile.discoverable_hint": "當您於 Mastodon 上選擇加入可發現性時,您的嘟文可能會顯示於搜尋結果與趨勢中。您的個人檔案可能會被推薦與您志趣相投的人。",
"onboarding.profile.discoverable_hint": "當您於 Mastodon 上選擇加入可發現性時,您的嘟文可能會顯示於搜尋結果與趨勢中。您的個人檔案可能會被推薦與您志趣相投的人。",
"onboarding.profile.display_name": "顯示名稱",
"onboarding.profile.display_name_hint": "完整名稱或暱稱...",
"onboarding.profile.lead": "您隨時可以稍候於設定中完成此操作,將有更多自訂選項可使用。",
@ -797,7 +797,7 @@
"upload_modal.applying": "正在套用...",
"upload_modal.choose_image": "選擇圖片",
"upload_modal.description_placeholder": "我能吞下玻璃而不傷身體",
"upload_modal.detect_text": "圖片中偵測文字",
"upload_modal.detect_text": "圖片中偵測文字",
"upload_modal.edit_media": "編輯媒體",
"upload_modal.hint": "於預覽中點擊或拖曳圓圈以選擇將於所有縮圖中顯示的焦點。",
"upload_modal.preparing_ocr": "準備 OCR 中……",

View file

@ -48,6 +48,10 @@ html {
}
}
.icon-button:disabled {
color: darken($action-button-color, 25%);
}
.account__header__bar .avatar .account__avatar {
border-color: $white;
}

View file

@ -1366,6 +1366,8 @@ body > [data-popper-placement] {
min-height: 54px;
border-bottom: 1px solid var(--background-border-color);
cursor: auto;
opacity: 1;
animation: fade 150ms linear;
@keyframes fade {
0% {
@ -1377,9 +1379,6 @@ body > [data-popper-placement] {
}
}
opacity: 1;
animation: fade 150ms linear;
.media-gallery,
.video-player,
.audio-player,
@ -4851,8 +4850,10 @@ a.status-card {
&__menu {
@include search-popout;
padding: 0;
background: $ui-secondary-color;
& {
padding: 0;
background: $ui-secondary-color;
}
}
&__menu-list {
@ -10191,8 +10192,7 @@ noscript {
.filtered-notifications-banner {
display: flex;
align-items: center;
border: 1px solid var(--background-border-color);
border-top: 0;
border-bottom: 1px solid var(--background-border-color);
padding: 24px 32px;
gap: 16px;
color: $darker-text-color;

View file

@ -62,7 +62,8 @@ class LinkDetailsExtractor
end
def author_name
author['name']
name = author['name']
name.is_a?(Array) ? name.join(', ') : name
end
def author_url
@ -273,7 +274,7 @@ class LinkDetailsExtractor
end
def detect_encoding_and_parse_document
[detect_encoding, nil, @html_charset].uniq.each do |encoding|
[detect_encoding, nil, header_encoding].uniq.each do |encoding|
document = Nokogiri::HTML(@html, nil, encoding)
return document if document.to_s.valid_encoding?
end
@ -285,6 +286,13 @@ class LinkDetailsExtractor
guess&.fetch(:confidence, 0).to_i > 60 ? guess&.fetch(:encoding, nil) : nil
end
def header_encoding
Encoding.find(@html_charset).name if @html_charset
rescue ArgumentError
# Encoding from HTTP header is not recognized by ruby
nil
end
def detector
@detector ||= CharlockHolmes::EncodingDetector.new.tap do |detector|
detector.strip_tags = true
@ -294,7 +302,7 @@ class LinkDetailsExtractor
def html_entities_decode(string)
return if string.nil?
unicode_string = string.encode('UTF-8')
unicode_string = string.to_s.encode('UTF-8')
raise EncodingError, 'cannot convert string to valid UTF-8' unless unicode_string.valid_encoding?
html_entities.decode(unicode_string)

View file

@ -26,7 +26,7 @@ class Webfinger
private
def links
@links ||= @json['links'].index_by { |link| link['rel'] }
@links ||= @json.fetch('links', []).index_by { |link| link['rel'] }
end
def validate_response!

View file

@ -91,6 +91,10 @@ module User::HasSettings
settings['web.disable_swiping']
end
def setting_disable_hover_cards
settings['web.disable_hover_cards']
end
def setting_always_send_emails
settings['always_send_emails']
end

View file

@ -31,6 +31,6 @@ class NotificationPolicy < ApplicationRecord
private
def pending_notification_requests
@pending_notification_requests ||= notification_requests.where(dismissed: false).limit(MAX_MEANINGFUL_COUNT).pick(Arel.sql('count(*), coalesce(sum(notifications_count), 0)::bigint'))
@pending_notification_requests ||= notification_requests.limit(MAX_MEANINGFUL_COUNT).pick(Arel.sql('count(*), coalesce(sum(notifications_count), 0)::bigint'))
end
end

View file

@ -9,12 +9,13 @@
# from_account_id :bigint(8) not null
# last_status_id :bigint(8)
# notifications_count :bigint(8) default(0), not null
# dismissed :boolean default(FALSE), not null
# created_at :datetime not null
# updated_at :datetime not null
#
class NotificationRequest < ApplicationRecord
self.ignored_columns += %w(dismissed)
include Paginable
MAX_MEANINGFUL_COUNT = 100
@ -34,8 +35,6 @@ class NotificationRequest < ApplicationRecord
end
def reconsider_existence!
return if dismissed?
prepare_notifications_count
if notifications_count.positive?

View file

@ -46,6 +46,11 @@ class PreviewCard < ApplicationRecord
y_comp: 4,
}.freeze
# URL size limit to safely store in PosgreSQL's unique indexes
# Technically this is a byte-size limit but we use it as a
# character limit to work with length validation
URL_CHARACTER_LIMIT = 2692
self.inheritance_column = false
enum :type, { link: 0, photo: 1, video: 2, rich: 3 }
@ -63,7 +68,7 @@ class PreviewCard < ApplicationRecord
convert_options: { all: '-quality 90 +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' },
validate_media_type: false
validates :url, presence: true, uniqueness: true, url: true
validates :url, presence: true, uniqueness: true, url: true, length: { maximum: URL_CHARACTER_LIMIT }
validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES
validates_attachment_size :image, less_than: LIMIT
remotable_attachment :image, LIMIT

View file

@ -18,6 +18,7 @@
# category :integer default("other"), not null
# action_taken_at :datetime
# rule_ids :bigint(8) is an Array
# application_id :bigint(8)
#
class Report < ApplicationRecord
@ -31,6 +32,7 @@ class Report < ApplicationRecord
rate_limit by: :account, family: :reports
belongs_to :account
belongs_to :application, class_name: 'Doorkeeper::Application', optional: true
with_options class_name: 'Account' do
belongs_to :target_account

View file

@ -288,7 +288,7 @@ class Status < ApplicationRecord
else
map = media_attachments.index_by(&:id)
ordered_media_attachment_ids.filter_map { |media_attachment_id| map[media_attachment_id] }
end
end.take(MEDIA_ATTACHMENTS_LIMIT)
end
def replies_count

View file

@ -53,12 +53,14 @@ class StatusEdit < ApplicationRecord
def ordered_media_attachments
return @ordered_media_attachments if defined?(@ordered_media_attachments)
@ordered_media_attachments = if ordered_media_attachment_ids.nil?
[]
else
map = status.media_attachments.index_by(&:id)
ordered_media_attachment_ids.map.with_index { |media_attachment_id, index| PreservedMediaAttachment.new(media_attachment: map[media_attachment_id], description: media_descriptions[index]) }
end
@ordered_media_attachments = begin
if ordered_media_attachment_ids.nil?
[]
else
map = status.media_attachments.index_by(&:id)
ordered_media_attachment_ids.map.with_index { |media_attachment_id, index| PreservedMediaAttachment.new(media_attachment: map[media_attachment_id], description: media_descriptions[index]) }
end
end.take(Status::MEDIA_ATTACHMENTS_LIMIT)
end
def proper

View file

@ -25,6 +25,7 @@ class UserSettings
setting :use_pending_items, default: false
setting :use_system_font, default: false
setting :disable_swiping, default: false
setting :disable_hover_cards, default: false
setting :delete_modal, default: true
setting :reblog_modal, default: false
setting :reduce_motion, default: false

View file

@ -24,6 +24,7 @@ class InitialStateSerializer < ActiveModel::Serializer
store[:expand_spoilers] = object_account_user.setting_expand_spoilers
store[:reduce_motion] = object_account_user.setting_reduce_motion
store[:disable_swiping] = object_account_user.setting_disable_swiping
store[:disable_hover_cards] = object_account_user.setting_disable_hover_cards
store[:advanced_layout] = object_account_user.setting_advanced_layout
store[:use_blurhash] = object_account_user.setting_use_blurhash
store[:use_pending_items] = object_account_user.setting_use_pending_items

View file

@ -3,6 +3,8 @@
class REST::NotificationSerializer < ActiveModel::Serializer
attributes :id, :type, :created_at, :group_key
attribute :filtered, if: :filtered?
belongs_to :from_account, key: :account, serializer: REST::AccountSerializer
belongs_to :target_status, key: :status, if: :status_type?, serializer: REST::StatusSerializer
belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer
@ -32,4 +34,6 @@ class REST::NotificationSerializer < ActiveModel::Serializer
def moderation_warning_event?
object.type == :moderation_warning
end
delegate :filtered?, to: :object
end

View file

@ -15,9 +15,6 @@ class FetchLinkCardService < BaseService
)
}iox
# URL size limit to safely store in PosgreSQL's unique indexes
BYTESIZE_LIMIT = 2692
def call(status)
@status = status
@original_url = parse_urls
@ -32,7 +29,7 @@ class FetchLinkCardService < BaseService
end
attach_card if @card&.persisted?
rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, EncodingError => e
rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, EncodingError, ActiveRecord::RecordInvalid => e
Rails.logger.debug { "Error fetching link #{@original_url}: #{e}" }
nil
end
@ -88,7 +85,7 @@ class FetchLinkCardService < BaseService
def bad_url?(uri)
# Avoid local instance URLs and invalid URLs
uri.host.blank? || TagManager.instance.local_url?(uri.to_s) || !%w(http https).include?(uri.scheme) || uri.to_s.bytesize > BYTESIZE_LIMIT
uri.host.blank? || TagManager.instance.local_url?(uri.to_s) || !%w(http https).include?(uri.scheme)
end
def mention_link?(anchor)

View file

@ -10,6 +10,7 @@ class ReportService < BaseService
@comment = options.delete(:comment).presence || ''
@category = options[:rule_ids].present? ? 'violation' : (options.delete(:category).presence || 'other')
@rule_ids = options.delete(:rule_ids).presence
@application = options.delete(:application).presence
@options = options
raise ActiveRecord::RecordNotFound if @target_account.unavailable?
@ -35,7 +36,8 @@ class ReportService < BaseService
uri: @options[:uri],
forwarded: forward_to_origin?,
category: @category,
rule_ids: @rule_ids
rule_ids: @rule_ids,
application: @application
)
end

View file

@ -14,6 +14,12 @@
= admin_account_link_to report.account
- else
= report.account.domain
- if report.application.present?
.report-header__details__item
.report-header__details__item__header
%strong= t('admin.reports.reported_with_application')
.report-header__details__item__content
= report.application.name
.report-header__details__item
.report-header__details__item__header
%strong= t('admin.reports.status')

View file

@ -56,6 +56,7 @@
= ff.input :'web.auto_play', wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_auto_play_gif')
= ff.input :'web.reduce_motion', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_reduce_motion')
= ff.input :'web.disable_swiping', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_swiping')
= ff.input :'web.disable_hover_cards', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_hover_cards')
= ff.input :'web.use_system_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_font_ui')
%h4= t 'appearance.discovery'

View file

@ -5,6 +5,23 @@ require_relative '../../lib/mastodon/sidekiq_middleware'
Sidekiq.configure_server do |config|
config.redis = REDIS_SIDEKIQ_PARAMS
# This is used in Kubernetes setups, to signal that the Sidekiq process has started and will begin processing jobs
# This comes from https://github.com/sidekiq/sidekiq/wiki/Kubernetes#sidekiq
ready_filename = ENV.fetch('MASTODON_SIDEKIQ_READY_FILENAME', nil)
if ready_filename
raise 'MASTODON_SIDEKIQ_READY_FILENAME is not a valid filename' if File.basename(ready_filename) != ready_filename
ready_path = Rails.root.join('tmp', ready_filename)
config.on(:startup) do
FileUtils.touch(ready_path)
end
config.on(:shutdown) do
FileUtils.rm_f(ready_path)
end
end
config.server_middleware do |chain|
chain.add Mastodon::SidekiqMiddleware
end

View file

@ -21,6 +21,18 @@ kab:
username:
invalid: ilaq ad ilin isekkilen, uṭṭunen d yijerriden n wadda kan
reserved: yettwaṭṭef
admin/webhook:
attributes:
url:
invalid: mačči d URL ameɣtu
doorkeeper/application:
attributes:
website:
invalid: mačči d URL ameɣtu
import:
attributes:
data:
malformed: yir amsal
status:
attributes:
reblog:
@ -28,4 +40,20 @@ kab:
user:
attributes:
email:
blocked: isseqdac asaǧǧaw n yimayl ur yettusirgen ara
unreachable: ur d-ttban ara d akken yella
role_id:
elevated: ur yezmir ara ad iεeddi tamlilt-ik tamirant
user_role:
attributes:
permissions_as_keys:
dangerous: deg-s tisirag tiriɣelsanin i temlilt tazadurt
elevated: ur yezmir ara ad yesεu tirirag ur nelli ara deg temlilit-ik tamirant
own_role: ur yezmir ara ad yettwabeddel s temlilt-ik tamirant
position:
elevated: ur yezmir ara ad iεeddi tamlilt-ik tamirant
own_role: ur yezmir ara ad yettwabeddel s temlilt-ik tamirant
webhook:
attributes:
events:
invalid_permissions: ur yezmir ara ad yesεu tidyanin iwumi ur tesεiḍ ara tisirag

View file

@ -1762,6 +1762,10 @@ ar:
webauthn_authentication: مفاتيح الأمان
severed_relationships:
download: تنزيل (%{count})
lost_followers: المتابعون المفقودون
lost_follows: المتابعات المفقودة
preamble: بحجبكم اسم نطاق قد تخسرون متابَعاتٍ، و كذلك إذا قرّر مديرو الخادوم حظر خادوم ما. و في هذه الحالات يكون بوسعكم تنزيل قائمة بالصلات المبتورة لمعاينتها، مع القدرة على استيرادها إلى خادوم آخر.
purged: حذف مدير خادومكم المعلومات عن هذا الخادوم.
statuses:
attached:
audio:
@ -1978,6 +1982,7 @@ ar:
edit_profile_title: قم بتخصيص ملفك التعريفي
explanation: ها هي بعض النصائح قبل بداية الاستخدام
feature_action: اعرف المزيد
feature_audience: يتيح لكم مًستُدون إدارة جمهوركم بلا وسطاء. فبتنصيب و تشغيل مَستُودون على بنيتكم التحتية تمكنكم متابعة مستخدمي مَستُدون من أيّ خادوم،كما يمكنهم متابعتكم، بلا تحكُّم من أي طرف ثالث.
feature_audience_title: اِبنوا جُمهورَكم بِثِقَة
feature_control: أنتم الأدرى بالمحتوى الذي تريدون أن تطالعوه في فيض المنشورات الرئيس. لا خوارزميات تتحكم فيما يظهر لكم ولا إعلانات تضيع وقتكم. بحساب واحد تمكنكم متابعة من تشاؤون على أيّ خادوم ماستدون، وتلقّى منشوراتهم بترتيبها الزمني، لتصنعوا ركنكم الأليف في الإنترنت.
feature_control_title: تحكَّموا في فيض المنشورات الخاص بكم

View file

@ -118,7 +118,7 @@ cs:
promote: Povýšit
protocol: Protokol
public: Veřejný
push_subscription_expires: Odebírání PuSH expiruje
push_subscription_expires: Odebírání PuSH vyprší
redownload: Obnovit profil
redownloaded_msg: Profil účtu %{username} byl úspěšně obnoven ze zdroje
reject: Zamítnout

View file

@ -305,6 +305,7 @@ cy:
filter_by_action: Hidlo yn ôl gweithred
filter_by_user: Hidlo yn ôl defnyddiwr
title: Cofnod archwilio
unavailable_instance: "(nid yw enw'r parth ar gael)"
announcements:
destroyed_msg: Cyhoeddiad wedi'i ddileu'n llwyddiannus!
edit:
@ -1436,7 +1437,7 @@ cy:
domain_blocking_html: Rydych ar fin <strong>rhwystro</strong> hyd at <strong>%{total_items} parth</strong> o <strong>%{filename}</strong> .
following_html: Rydych ar fin <strong>dilyn</strong> hyd at <strong>%{total_items} cyfrif</strong> gan <strong>%{filename}</strong> .
lists_html: Rydych ar fin ychwanegu hyd at <strong>%{total_items} o gyfrifon</strong> o <strong>%{filename}</strong> at eich <strong>rhestrau</strong> . Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati.
muting_html: Rydych ar fin <strong>tewi</strong> hyd at <strong>%{total_items} cyfrif</strong> o <strong>%{filename}</strong> .
muting_html: Rydych ar fin <strong>anwybyddu</strong> hyd at <strong>%{total_items} cyfrif</strong> o <strong>%{filename}</strong>.
preface: Gallwch fewnforio data rydych chi wedi'i allforio o weinydd arall, fel rhestr o'r bobl rydych chi'n eu dilyn neu'n eu blocio.
recent_imports: Mewnforion diweddar
states:
@ -1529,9 +1530,9 @@ cy:
too_many: Methu atodi mwy na 4 ffeil
migrations:
acct: Symudwyd i
cancel: Diddymu ailgyfeirio
cancel_explanation: Bydd diddymu'r ailgyfeiriad yn ail agor eich cyfrif cyfredol, ond ni fydd yn dod â dilynwyr sydd wedi'u symud i'r cyfrif hwnnw yn ôl.
cancelled_msg: Wedi diddymu'r ailgyfeiriad yn llwyddiannus.
cancel: Canslo ailgyfeirio
cancel_explanation: Bydd canslo'r ailgyfeiriad yn ail agor eich cyfrif cyfredol, ond ni fydd yn dod â dilynwyr sydd wedi'u symud i'r cyfrif hwnnw yn ôl.
cancelled_msg: Wedi canslo'r ailgyfeiriad yn llwyddiannus.
errors:
already_moved: yw'r un cyfrif rydych chi wedi symud iddo eisoes
missing_also_known_as: nid yw'n arallenw o'r cyfrif hwn

View file

@ -93,7 +93,7 @@ cy:
updated: Mae eich cyfrinair wedi'i newid yn llwyddiannus. Rydych chi bellach wedi mewngofnodi.
updated_not_active: Mae eich cyfrinair wedi ei newid yn llwyddiannus.
registrations:
destroyed: Hwyl fawr! Mae eich cyfrif wedi ei ddiddymu'n llwyddiannus. Gobeithiwn eich gweld chi eto'n fuan.
destroyed: Hwyl fawr! Mae eich cyfrif wedi ei chanslo'n llwyddiannus. Gobeithiwn eich gweld chi eto'n fuan.
signed_up: Croeso! Rydych wedi cofrestru'n llwyddiannus.
signed_up_but_inactive: Yr ydych wedi cofrestru'n llwyddiannus. Fodd bynnag, ni allwn eich mewngofnodi achos nid yw eich cyfrif wedi ei hagor eto.
signed_up_but_locked: Rydych chi wedi cofrestru'n llwyddiannus. Fodd bynnag, ni allem eich mewngofnodi oherwydd bod eich cyfrif wedi'i gloi.

View file

@ -12,6 +12,7 @@ kab:
last_attempt: Γur-k yiwen n uɛraḍ-nniḍen kan send ad yettucekkel umiḍan-ik.
locked: Amiḍan-ik yettwargel.
not_found_in_database: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir.
omniauth_user_creation_failure: Tuccḍa lawan n tmerna n umiḍan i timagit-a.
pending: Amiḍan-inek mazal-it deg ɛiwed n tmuγli.
timeout: Tiɣimit n tuqqna tezri. Ma ulac aɣilif ɛiwed tuqqna akken ad tkemmleḍ.
unauthenticated: Ilaq ad teqqneḍ neɣ ad tjerrḍeḍ akken ad tkemmelḍ.
@ -47,21 +48,41 @@ kab:
subject: 'Mastodon: Iwellihen n uwennez n wawal uffir'
title: Aɛiwed n wawal uffir
two_factor_disabled:
explanation: Tuqqna tella tura s useqdec n tansa n yimayl tasuft d wawal n uεeddi.
subject: 'Mastodon: Asesteb s snat n tarrayin yensa'
subtitle: Asesteb s snat tarrayin i umiḍan-ik yensan.
title: Asesteb s snat n tarrayin insa
two_factor_enabled:
explanation: Ajuṭu yettusirwen s usnas TOTP yeqqnen ilaq i wakken ad teqqneḍ.
subject: 'Mastodon: Asesteb s snat n tarrayin yermed'
subtitle: Asesteb s snat tarrayin yettwarmed i umiḍan-ik.
title: Asesteb s snat n tarrayin irmed
two_factor_recovery_codes_changed:
explanation: Tangalt n tuɣalin tettwaḥbes sakin nesnulfa-d yiwet d tamaynut.
subject: 'Mastodon: Tingalin n tuɣalin n snat n tarayin ttwarnanat i tikkelt-nniḍen'
subtitle: Tangalt n tuɣalin tettwaḥbes sakin nesnulfa-d yiwet d tamaynut.
title: Tangalt n tuɣalin 2FA tettwabeddel
unlock_instructions:
subject: 'Mastodon: iwelihhen n userreḥ'
webauthn_credential:
added:
explanation: Tasarut-a n tɣellist tettwarna ɣer umiḍan-ik·im
subject: 'Maṣṭudun : Tasarutt tamaynutt n tɣellist'
title: Tasarut tamaynutt n tɣellist tamaynut tettwarna
deleted:
explanation: Tasarut-a n tɣellist tettwakkes seg umiḍan-ik·im
subject: 'Mastodon: Tasarut n tɣellsit tettwakkes'
title: Yiwet seg tsura-k·m n tɣellist tettwakkes
webauthn_disabled:
explanation: Yensa usesteb s tsura n tɣellist i umiḍan-ik.
extra: Tzemreḍ ad tkecmeḍ tura s useqdec asuf n ujuṭu yettwasran s usnas TOPTP yeqqnen.
subject: 'Mastodon: Asesteb s tsura n tɣellist yensa'
title: Tisura n tɣellist nsant
webauthn_enabled:
explanation: Asesteb n tsarut n tɣellist tettwarmed i umiḍan-ik.
extra: Tasarut-ik n tɣellist tezmer tura ad tettuseqdec i unekcum.
subject: 'Mastodon: Asesteb n tsarut n tɣellist yermed'
title: Tisura n tɣellist remdent
omniauth_callbacks:
failure: Ur nezmir ara ad ak·akem-nsesṭeb seg %{kind} acku "%{reason}".
success: Asesṭeb idda akken iwata seg umiḍan %{kind}.

View file

@ -75,7 +75,7 @@ nl:
title: Een van jouw beveiligingssleutels is verwijderd
webauthn_disabled:
explanation: Verificatie met beveiligingssleutels is uitgeschakeld voor je account.
extra: Het is nu alleen mogelijk om in te loggen met een door de authenticatie-app gegeneerde toegangscode.
extra: Het is nu alleen mogelijk om in te loggen met een door de authenticatie-app gegeneerde toegangscode als extra controle.
subject: 'Mastodon: Verificatie met beveiligingssleutels is uitgeschakeld'
title: Beveiligingssleutels uitgeschakeld
webauthn_enabled:

View file

@ -75,7 +75,7 @@ zh-TW:
title: 您的一支安全密鑰已經被移除
webauthn_disabled:
explanation: 您的帳號已停用安全金鑰身份驗證。
extra: 現在僅可使用配對的 TOTP 應用程式產生之 token 登入。
extra: 目前僅可使用配對的 TOTP 應用程式產生之 token 登入。
subject: Mastodon安全密鑰認證方式已停用
title: 已停用安全密鑰
webauthn_enabled:
@ -90,7 +90,7 @@ zh-TW:
no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。
send_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將於信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
send_paranoid_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將於信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
updated: 您的密碼已成功變更,現在已經登入。
updated: 您的密碼已成功變更,現在已經成功登入。
updated_not_active: 您的密碼已成功變更。
registrations:
destroyed: 再見!您的帳號已成功取消,期待再相逢。

View file

@ -20,7 +20,7 @@ cy:
applications:
buttons:
authorize: Awdurdodi
cancel: Diddymu
cancel: Canslo
destroy: Dinistrio
edit: Golygu
submit: Cyflwyno
@ -72,7 +72,7 @@ cy:
revoke: Ydych chi'n siŵr?
index:
authorized_at: Wedi'i awdurdodi ar %{date}
description_html: Mae'r rhain yn raglenni sy'n gallu cael mynediad i'ch cyfrif gan ddefnyddio'r API. Os oes yna rhaglenni nad ydych chi'n eu hadnabod yma, neu os yw rhaglen yn camymddwyn, gallwch chi ddiddymu ei fynediad.
description_html: Mae'r rhain yn raglenni sy'n gallu cael mynediad i'ch cyfrif gan ddefnyddio'r API. Os oes yna rhaglenni nad ydych chi'n eu hadnabod yma, neu os yw rhaglen yn camymddwyn, gallwch chi ddirymu ei fynediad.
last_used_at: Defnyddiwyd ddiwethaf ar %{date}
never_used: Erioed wedi'i ddefnyddio
scopes: Caniatâd
@ -83,7 +83,7 @@ cy:
access_denied: Mae perchennog yr adnodd neu'r gweinydd awdurdodi wedi atal y cais.
credential_flow_not_configured: Llif meini prawf cyfrinair perchennog yr adnodd wedi methu achos fod Doorkeeper.configure.resource_owner_from_credentials heb ei ffurfweddu.
invalid_client: Methodd dilysu cleient oherwydd cleient anhysbys, dim dilysiad cleient wedi'i gynnwys, neu ddull dilysu heb ei gefnogi.
invalid_grant: Mae'r grant awdurdodi ar yr amod yn annilys, wedi dod i ben, wedi'i ddiddymu, nid yw'n cyfateb i'r URI ailgyfeirio a ddefnyddiwyd yn y cais am awdurdodiad, neu wedi'i roi i gleient arall.
invalid_grant: Mae'r grant awdurdodi ar yr amod yn annilys, wedi dod i ben, wedi'i ddirymu, nid yw'n cyfateb i'r URI ailgyfeirio a ddefnyddiwyd yn y cais am awdurdodiad, neu wedi'i roi i gleient arall.
invalid_redirect_uri: Nid yw'r uri ailgyfeirio a gynhwysir yn ddilys.
invalid_request:
missing_param: 'Paramedr gofynnol ar goll: %{value}.'
@ -135,6 +135,7 @@ cy:
media: Atodiadau cyfryngau
mutes: Anwybyddiadau
notifications: Hysbysiadau
profile: Eich proffil Mastodon
push: Hysbysiadau gwthiadwy
reports: Adroddiadau
search: Chwilio
@ -165,6 +166,7 @@ cy:
admin:write:reports: cyflawni camau cymedroli ar adroddiadau
crypto: defnyddio amgryptio ben i ben
follow: addasu perthnasau cyfrif
profile: darllen dim ond gwybodaeth proffil eich cyfrif
push: derbyn eich hysbysiadau gwthiadwy
read: darllen holl ddata eich cyfrif
read:accounts: gweld gwybodaeth y cyfrif

View file

@ -5,6 +5,7 @@ kab:
doorkeeper/application:
name: Isem n usnas
redirect_uri: URI n uwelleh
scopes: Tinerfadin
website: Asmel web n usnas
errors:
models:
@ -39,6 +40,7 @@ kab:
empty: Ulac ɣur-k·m isnasen.
name: Isem
new: Asnas amaynut
scopes: Tinerfadin
show: Ẓer
title: Isnasen-ik·im
new:
@ -47,6 +49,8 @@ kab:
actions: Tigawin
application_id: ID n usnas
callback_urls: URL n tririt n wawal
scopes: Tinerfadin
secret: Tuffirt n umsaɣ
title: 'Asnas: %{name}'
authorizations:
buttons:
@ -55,6 +59,7 @@ kab:
error:
title: Tella-d tuccḍa
new:
review_permissions: Asenqed n tsirag
title: Tlaq tsiregt
show:
title: Nɣel tangalt n wurag sakkin senteḍ-itt deg usnas.
@ -64,8 +69,12 @@ kab:
confirmations:
revoke: Tetḥeqqeḍ?
index:
authorized_at: Yettwasireg ɣef %{date}
description_html: Ha-t-an yisnasen i izemren ad kecmen ɣer umiḍan-ik·im, s useqdec n API. Ma llan yisnasen ur teεqileḍ ara da, neɣ kra n wesnas ur iteddu ara akken ilaq, tzemreḍ ad tekkseḍ anekcum-is.
last_used_at: Yettwaseqdec i tikkelt taneggarut ass n %{date}
never_used: Urǧin yettwaseqdac
scopes: Tisirag
superapp: Adigan
title: Isnasen-ik·im yettusirgen
errors:
messages:
@ -82,13 +91,28 @@ kab:
destroy:
notice: Yettwaḥwi wesnas.
grouped_scopes:
access:
read: Anekcum i tɣuri kan
read/write: Anekcum i tɣuri d tira
write: Anekcum i tira kan
title:
accounts: Imiḍanen
admin/accounts: Tadbelt n imiḍan
admin/all: Akk timahilin tinebdalin
admin/reports: Tadbelt n yineqqisen
blocks: Yewḥel
bookmarks: Ticraḍ
conversations: Idiwenniyen
crypto: Awgelhen seg yixef ɣer yixef
favourites: Imenyafen
filters: Imzizdigen
follow: Aḍfar, asgugem akked usewḥel
follows: Aḍfar
lists: Tibdarin
media: Imeddayen n umidya
mutes: Yeggugem
notifications: Tilɣa
profile: Amaɣnu-k Mastodon
push: Tilɣa yettudemmren
reports: Ineqqisen
search: Nadi

View file

@ -31,7 +31,7 @@ ko:
form:
error: 이런! 오류를 확인하세요
help:
native_redirect_uri: "%{native_redirect_uri}에서 로컬 테스트를 할 수 있습니다."
native_redirect_uri: "%{native_redirect_uri}를 이용해 로컬 테스트를 할 수 있습니다"
redirect_uri: 한 줄에 하나의 URI를 작성하세요
scopes: 스페이스로 범위를 구분하세요. 빈 칸으로 놔두면 기본 범위를 사용합니다.
index:

View file

@ -25,7 +25,7 @@ lv:
edit: Labot
submit: Apstiprināt
confirmations:
destroy: Vai esi pārliecināts?
destroy: Vai tiešām?
edit:
title: Labot lietotni
form:
@ -69,7 +69,7 @@ lv:
buttons:
revoke: Atsaukt
confirmations:
revoke: Vai esi pārliecināts?
revoke: Vai tiešām?
index:
authorized_at: Autorizētas %{date}
description_html: Šīs ir lietotnes, kas var piekļūt Tavam kontam ar API. Ja šeit ir lietotnes, kuras neatpazīsti, vai lietotne darbojas ne tā, kā paredzēts, vari atsaukt tās piekļuvi.
@ -135,6 +135,7 @@ lv:
media: Multividesu pielikumi
mutes: Apklusinātie
notifications: Paziņojumi
profile: Tavs Mastodon profils
push: Uznirstošie paziņojumi
reports: Ziņojumi
search: Meklēt
@ -165,6 +166,7 @@ lv:
admin:write:reports: veikt moderācijas darbības pārskatos
crypto: lieto pilnīgu šifrēšanu
follow: mainīt konta attiecības
profile: lasīt tikai Tava konta profila informāciju
push: saņemt savus push paziņojumus
read: lasīt visus sava konta datus
read:accounts: apskatīt kontu informāciju

View file

@ -129,7 +129,7 @@ nl:
crypto: End-to-end-encryptie
favourites: Favorieten
filters: Filters
follow: Volgers, genegeerde en geblokkeerde gebruikers
follow: Gevolgde, genegeerde en geblokkeerde gebruikers
follows: Volgend
lists: Lijsten
media: Mediabijlagen

View file

@ -226,6 +226,7 @@ en:
update_custom_emoji: Update Custom Emoji
update_domain_block: Update Domain Block
update_ip_block: Update IP rule
update_report: Update Report
update_status: Update Post
update_user_role: Update Role
actions:
@ -638,6 +639,7 @@ en:
report: 'Report #%{id}'
reported_account: Reported account
reported_by: Reported by
reported_with_application: Reported with application
resolved: Resolved
resolved_msg: Report successfully resolved!
skip_to_actions: Skip to actions

View file

@ -290,6 +290,7 @@ ja:
filter_by_action: アクションでフィルター
filter_by_user: ユーザーでフィルター
title: 操作履歴
unavailable_instance: "(ドメイン名が利用できません)"
announcements:
destroyed_msg: お知らせが削除されました
edit:

View file

@ -1741,7 +1741,7 @@ ko:
contrast: 마스토돈 (고대비)
default: 마스토돈 (어두움)
mastodon-light: 마스토돈 (밝음)
system: 자동 선택 (시스템 테마 이용)
system: 자동 (시스템 테마 사용)
time:
formats:
default: "%Y-%m-%d %H:%M"

View file

@ -116,6 +116,8 @@ ro:
redownloaded_msg: S-a reîmprospătat cu succes profilul %{username} de la origine
reject: Respinge
rejected_msg: S-a respins cu succes cererea de înregistrare a utilizatorului %{username}
remote_suspension_irreversible: Datele acestui cont au fost șterse în mod ireversibil.
remote_suspension_reversible_hint_html: Contul a fost suspendat pe server-ul respectiv, iar datele vor fi șterse complet pe %{date}. Până atunci, server-ul remote poate restabili acest cont fără consecințe negative. Dacă dorești să elimini toate datele contului numaidecât, poți face acest lucru mai jos.
remove_avatar: Elimină avatar
remove_header: Elimină antet
removed_avatar_msg: S-a îndepărtat cu succes poza de profil a utilizatorului %{username}

View file

@ -1 +1,21 @@
---
ry:
accounts:
follow: Пудписати ся
following: Пудпискы
posts:
few: Публикації
one: Публикація
other: Публикації
posts_tab_heading: Публикації
imports:
titles:
following: Імпортованя пудписок
types:
following: Испис пудписок
notification_mailer:
follow:
body: "%{name} ся пудписує ся на вас!"
subject: "%{name} ся пудписує ся на вас"
relationships:
following: Пудпискы

View file

@ -211,6 +211,7 @@ ca:
setting_default_privacy: Privacitat dels tuts
setting_default_sensitive: Marcar sempre el contingut gràfic com a sensible
setting_delete_modal: Mostra la finestra de confirmació abans d'esborrar un tut
setting_disable_hover_cards: Deshabilita la vista prèvia del perfil en passar-hi per sobre
setting_disable_swiping: Desactiva les animacions
setting_display_media: Visualització multimèdia
setting_display_media_default: Per defecte
@ -242,11 +243,13 @@ ca:
warn: Oculta amb un avís
form_admin_settings:
activity_api_enabled: Publica a l'API estadístiques agregades sobre l'activitat dels usuaris
app_icon: Icona de l'aplicació
backups_retention_period: Període de retenció del arxiu d'usuari
bootstrap_timeline_accounts: Recomana sempre aquests comptes als nous usuaris
closed_registrations_message: Missatge personalitzat quan el registre no és accessible
content_cache_retention_period: Període de retenció del contingut remot
custom_css: CSS personalitzat
favicon: Icona de preferits
mascot: Mascota personalitzada (llegat)
media_cache_retention_period: Període de retenció del cau multimèdia
peers_api_enabled: Publica a l'API la llista de servidors descoberts

View file

@ -242,11 +242,13 @@ cy:
warn: Cuddio â rhybudd
form_admin_settings:
activity_api_enabled: Cyhoeddi ystadegau cyfanredol am weithgarwch defnyddwyr yn yr API
app_icon: Eicon ap
backups_retention_period: Cyfnod cadw archif defnyddwyr
bootstrap_timeline_accounts: Argymhellwch y cyfrifon hyn i ddefnyddwyr newydd bob amser
closed_registrations_message: Neges bersonol pan nad yw cofrestriadau ar gael
content_cache_retention_period: Cyfnod cadw cynnwys o bell
custom_css: CSS cyfaddas
favicon: Favicon
mascot: Mascot cyfaddas (hen)
media_cache_retention_period: Cyfnod cadw storfa cyfryngau
peers_api_enabled: Cyhoeddi rhestr o weinyddion a ddarganfuwyd yn yr API

View file

@ -211,6 +211,7 @@ da:
setting_default_privacy: Fortrolighed for indlæg
setting_default_sensitive: Markér altid medier som sensitive
setting_delete_modal: Vis bekræftelsesdialog før et indlæg slettes
setting_disable_hover_cards: Deaktivér profilforhåndsvisning ved svæv (hover)
setting_disable_swiping: Deaktivér strygebevægelser
setting_display_media: Medievisning
setting_display_media_default: Standard
@ -242,11 +243,13 @@ da:
warn: Skjul bag en advarsel
form_admin_settings:
activity_api_enabled: Offentliggør samlede statistikker vedr. brugeraktivitet i API'en
app_icon: App-ikon
backups_retention_period: Brugerarkivs opbevaringsperiode
bootstrap_timeline_accounts: Anbefal altid disse konti til nye brugere
closed_registrations_message: Tilpasset besked, når tilmelding er utilgængelig
content_cache_retention_period: Opbevaringsperiode for eksternt indhold
custom_css: Tilpasset CSS
favicon: Favikon
mascot: Tilpasset maskot (ældre funktion)
media_cache_retention_period: Media-cache opbevaringsperiode
peers_api_enabled: Udgiv liste over fundne server i API'en

View file

@ -211,6 +211,7 @@ de:
setting_default_privacy: Beitragssichtbarkeit
setting_default_sensitive: Medien immer mit einer Inhaltswarnung versehen
setting_delete_modal: Bestätigungsdialog beim Löschen eines Beitrags anzeigen
setting_disable_hover_cards: Profilvorschau deaktivieren, wenn die Maus über das Profil bewegt wird
setting_disable_swiping: Wischgesten deaktivieren
setting_display_media: Darstellung von Medien
setting_display_media_default: Standard
@ -242,11 +243,13 @@ de:
warn: Mit einer Inhaltswarnung ausblenden
form_admin_settings:
activity_api_enabled: Aggregierte Nutzungsdaten über die API veröffentlichen
app_icon: App-Symbol
backups_retention_period: Aufbewahrungsfrist für Archive
bootstrap_timeline_accounts: Neuen Nutzern immer diese Konten empfehlen
closed_registrations_message: Nachricht, falls Registrierungen deaktiviert sind
content_cache_retention_period: Aufbewahrungsfrist für externe Inhalte
custom_css: Eigenes CSS
favicon: Favicon
mascot: Benutzerdefiniertes Maskottchen (Legacy)
media_cache_retention_period: Aufbewahrungsfrist für Medien im Cache
peers_api_enabled: Die entdeckten Server im Fediverse über die API veröffentlichen

View file

@ -211,6 +211,7 @@ en:
setting_default_privacy: Posting privacy
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a post
setting_disable_hover_cards: Disable profile preview on hover
setting_disable_swiping: Disable swiping motions
setting_display_media: Media display
setting_display_media_default: Default
@ -242,11 +243,13 @@ en:
warn: Hide with a warning
form_admin_settings:
activity_api_enabled: Publish aggregate statistics about user activity in the API
app_icon: App icon
backups_retention_period: User archive retention period
bootstrap_timeline_accounts: Always recommend these accounts to new users
closed_registrations_message: Custom message when sign-ups are not available
content_cache_retention_period: Remote content retention period
custom_css: Custom CSS
favicon: Favicon
mascot: Custom mascot (legacy)
media_cache_retention_period: Media cache retention period
peers_api_enabled: Publish list of discovered servers in the API

View file

@ -203,6 +203,7 @@ eo:
setting_default_privacy: Privateco de afiŝado
setting_default_sensitive: Ĉiam marki plurmediojn kiel tiklaj
setting_delete_modal: Montri konfirman fenestron antaŭ ol forigi mesaĝon
setting_disable_hover_cards: Malebligi profilan antaŭmontron kiam oni musumas
setting_disable_swiping: Malebligi svingajn movojn
setting_display_media: Montrado de plurmedioj
setting_display_media_default: Implicita
@ -234,6 +235,7 @@ eo:
warn: Kaŝi malantaŭ averto
form_admin_settings:
activity_api_enabled: Publikigi entutajn statistikojn pri uzantagado en la API
app_icon: Apbildo
backups_retention_period: Uzantoarkivretendauro
bootstrap_timeline_accounts: Ĉiam rekomendi ĉi tiujn kontojn al novaj uzantoj
closed_registrations_message: Kutima mesaĝo kiam registroj ne estas disponeblaj

View file

@ -211,6 +211,7 @@ es-AR:
setting_default_privacy: Privacidad de mensajes
setting_default_sensitive: Siempre marcar medios como sensibles
setting_delete_modal: Mostrar diálogo de confirmación antes de eliminar un mensaje
setting_disable_hover_cards: Deshabilitar previsualización del perfil al pasar el cursor
setting_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización de medios
setting_display_media_default: Predeterminada
@ -242,11 +243,13 @@ es-AR:
warn: Ocultar con una advertencia
form_admin_settings:
activity_api_enabled: Publicar estadísticas agregadas sobre la actividad de la cuenta en la API
app_icon: Ícono de la aplicación
backups_retention_period: Período de retención del archivo historial del usuario
bootstrap_timeline_accounts: Siempre recomendar estas cuentas a usuarios nuevos
closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles
content_cache_retention_period: Período de retención de contenido remoto
custom_css: CSS personalizado
favicon: Favicón
mascot: Mascota personalizada (legado)
media_cache_retention_period: Período de retención de la caché de medios
peers_api_enabled: Publicar lista de servidores descubiertos en la API

View file

@ -211,6 +211,7 @@ es-MX:
setting_default_privacy: Privacidad de publicaciones
setting_default_sensitive: Marcar siempre imágenes como sensibles
setting_delete_modal: Mostrar diálogo de confirmación antes de borrar un toot
setting_disable_hover_cards: Desactivar vista previa del perfil al pasar el cursor
setting_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización multimedia
setting_display_media_default: Por defecto
@ -242,11 +243,13 @@ es-MX:
warn: Ocultar con una advertencia
form_admin_settings:
activity_api_enabled: Publicar estadísticas locales acerca de la actividad de usuario en la API
app_icon: Icono de la app
backups_retention_period: Período de retención del archivo de usuario
bootstrap_timeline_accounts: Recomendar siempre estas cuentas a nuevos usuarios
closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles
content_cache_retention_period: Período de retención de contenido remoto
custom_css: CSS personalizado
favicon: Favicon
mascot: Mascota personalizada (legado)
media_cache_retention_period: Período de retención de caché multimedia
peers_api_enabled: Publicar lista de servidores descubiertos en la API

View file

@ -211,6 +211,7 @@ es:
setting_default_privacy: Privacidad de publicaciones
setting_default_sensitive: Marcar siempre imágenes como sensibles
setting_delete_modal: Mostrar diálogo de confirmación antes de borrar una publicación
setting_disable_hover_cards: Desactivar vista previa del perfil al pasar el cursor
setting_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización multimedia
setting_display_media_default: Por defecto
@ -242,11 +243,13 @@ es:
warn: Ocultar con una advertencia
form_admin_settings:
activity_api_enabled: Publicar estadísticas agregadas sobre la actividad del usuario con la API
app_icon: Icono de la app
backups_retention_period: Período de retención del archivo de usuario
bootstrap_timeline_accounts: Recomendar siempre estas cuentas a nuevos usuarios
closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles
content_cache_retention_period: Período de retención de contenido remoto
custom_css: CSS personalizado
favicon: Favicon
mascot: Mascota personalizada (legado)
media_cache_retention_period: Período de retención de caché multimedia
peers_api_enabled: Publicar lista de servidores descubiertos en la API

View file

@ -211,6 +211,7 @@ fi:
setting_default_privacy: Julkaisun näkyvyys
setting_default_sensitive: Merkitse media aina arkaluonteiseksi
setting_delete_modal: Kysy vahvistusta ennen julkaisun poistamista
setting_disable_hover_cards: Poista käytöstä profiilin esikatselu osoitettaessa
setting_disable_swiping: Poista pyyhkäisyeleet käytöstä
setting_display_media: Median näyttäminen
setting_display_media_default: Oletus
@ -242,11 +243,13 @@ fi:
warn: Piilota varoittaen
form_admin_settings:
activity_api_enabled: Julkaise yhteenlasketut tilastot käyttäjätoiminnasta ohjelmointirajapinnassa
app_icon: Sovelluskuvake
backups_retention_period: Käyttäjän arkiston säilytysaika
bootstrap_timeline_accounts: Suosittele aina näitä tilejä uusille käyttäjille
closed_registrations_message: Mukautettu viesti, kun rekisteröityminen ei ole saatavilla
content_cache_retention_period: Etäsisällön säilytysaika
custom_css: Mukautettu CSS
favicon: Suosikkikuvake
mascot: Mukautettu maskotti (vanhentunut ominaisuus)
media_cache_retention_period: Mediasisältövälimuistin säilytysaika
peers_api_enabled: Julkaise löydettyjen palvelinten luettelo ohjelmointirajapinnassa

View file

@ -211,6 +211,7 @@ fo:
setting_default_privacy: Hvussu privatir eru postar?
setting_default_sensitive: Merk altíð miðlafílur sum viðkvæmar
setting_delete_modal: Vís váttanarmynd, áðrenn postar verða strikaðir
setting_disable_hover_cards: Ger undanvísing, tá músin verður flutt yvir vangan, óvirkna
setting_disable_swiping: Ger sveipurørslur óvirknar
setting_display_media: Vístir miðlar
setting_display_media_default: Sjálvvirði
@ -242,11 +243,13 @@ fo:
warn: Fjal við eini ávaring
form_admin_settings:
activity_api_enabled: Útgev samantald hagtøl um brúkaravirksemi í API'num
app_icon: App ikon
backups_retention_period: Hvussu leingi verða brúkarasøvn goymd
bootstrap_timeline_accounts: Mæl altíð nýggjum brúkarum at fylgja hesar kontur
closed_registrations_message: Serskild boð, tá tað ikki er møguligt at tilmelda seg
content_cache_retention_period: Tíðarskeið fyri varðveiðslu av fjartilfari
custom_css: Serskilt CSS
favicon: Favikon
mascot: Serskildur maskottur (arvur)
media_cache_retention_period: Tíðarskeið, har miðlagoymslur verða varðveittar
peers_api_enabled: Kunnger lista við uppdagaðum ambætarum í API'num

View file

@ -211,6 +211,7 @@ gl:
setting_default_privacy: Privacidade da publicación
setting_default_sensitive: Marcar sempre multimedia como sensible
setting_delete_modal: Solicitar confirmación antes de eliminar unha publicación
setting_disable_hover_cards: Desactivar vista previa do perfil ao poñerse enriba
setting_disable_swiping: Desactivar opcións de desprazamento
setting_display_media: Mostrar multimedia
setting_display_media_default: Por defecto
@ -242,11 +243,13 @@ gl:
warn: Agochar tras un aviso
form_admin_settings:
activity_api_enabled: Publicar na API estatísticas agregadas acerca da actividade das usuarias
app_icon: Icona da app
backups_retention_period: Período de retención do arquivo da usuaria
bootstrap_timeline_accounts: Recomendar sempre estas contas ás novas usuarias
closed_registrations_message: Mensaxe personalizada para cando o rexistro está pechado
content_cache_retention_period: Período de retención de contido remoto
custom_css: CSS personalizado
favicon: Favicon
mascot: Mascota propia (herdado)
media_cache_retention_period: Período de retención da caché multimedia
peers_api_enabled: Publicar na API unha lista dos servidores descubertos

View file

@ -211,6 +211,7 @@ he:
setting_default_privacy: פרטיות ההודעות
setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה
setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ
setting_disable_hover_cards: כבה הצצה מקדימה לפרופיל בעת מעבר עכבר מעליו
setting_disable_swiping: ביטול החלקת-צד
setting_display_media: תצוגת מדיה
setting_display_media_default: ברירת מחדל
@ -242,11 +243,13 @@ he:
warn: הסתרה עם אזהרה
form_admin_settings:
activity_api_enabled: פרסום סטטיסטיקות מקובצות עבור פעילות משתמשים באמצעות מנשק התוכנה
app_icon: אייקון יישומון
backups_retention_period: תקופת השמירה של ארכיון המשתמש
bootstrap_timeline_accounts: המלצה על חשבונות אלה למשתמשים חדשים
closed_registrations_message: הודעה מיוחדת כשההרשמה לא מאופשרת
content_cache_retention_period: תקופת השמירה על תוכן חיצוני
custom_css: CSS בהתאמה אישית
favicon: סמל מועדפים (Favicon)
mascot: סמל השרת (ישן)
media_cache_retention_period: תקופת שמירת מטמון מדיה
peers_api_enabled: פרסם רשימה של שרתים שנתגלו באמצעות ה-API

View file

@ -211,6 +211,7 @@ hu:
setting_default_privacy: Bejegyzések láthatósága
setting_default_sensitive: Minden médiafájl megjelölése kényesként
setting_delete_modal: Megerősítés kérése bejegyzés törlése előtt
setting_disable_hover_cards: Profilelőnézet letiltása föléhúzás esetén
setting_disable_swiping: Elhúzás művelet kikapcsolása
setting_display_media: Média megjelenítése
setting_display_media_default: Alapértelmezés
@ -242,11 +243,13 @@ hu:
warn: Elrejtés figyelmeztetéssel
form_admin_settings:
activity_api_enabled: Összesített statisztikák közzététele az API-ban a felhasználók aktivitásáról
app_icon: Alkalmazásikon
backups_retention_period: Felhasználói archívum megtartási időszaka
bootstrap_timeline_accounts: Mindig javasoljuk ezeket a fiókokat az új felhasználók számára
closed_registrations_message: A feliratkozáskor megjelenő egyéni üzenet nem érhető el
content_cache_retention_period: Távoli tartalmak megtartási időszaka
custom_css: Egyéni CSS
favicon: Könyvjelzőikon
mascot: Egyéni kabala (örökölt)
media_cache_retention_period: Média-gyorsítótár megtartási időszaka
peers_api_enabled: Felfedezett kiszolgálók listájának közzététele az API-ban

View file

@ -211,6 +211,7 @@ is:
setting_default_privacy: Gagnaleynd færslna
setting_default_sensitive: Alltaf merkja myndefni sem viðkvæmt
setting_delete_modal: Birta staðfestingarglugga áður en færslu er eytt
setting_disable_hover_cards: Gera óvirka forskoðun notandasniðs við yfirsvif
setting_disable_swiping: Gera strokuhreyfingar óvirkar
setting_display_media: Birting myndefnis
setting_display_media_default: Sjálfgefið
@ -242,11 +243,13 @@ is:
warn: Fela með aðvörun
form_admin_settings:
activity_api_enabled: Birta samantektartölfræði um virkni notanda í API-kerfisviðmótinu
app_icon: Táknmynd forrits
backups_retention_period: Tímalengd sem safni notandans er haldið eftir
bootstrap_timeline_accounts: Alltaf mæla með þessum notendaaðgöngum fyrir nýja notendur
closed_registrations_message: Sérsniðin skilaboð þegar ekki er hægt að nýskrá
content_cache_retention_period: Tímabil sem á að geyma fjartengt efni
custom_css: Sérsniðið CSS
favicon: Auðkennismynd
mascot: Sérsniðið gæludýr (eldra)
media_cache_retention_period: Tímalengd sem myndefni haldið
peers_api_enabled: Birta lista yfir uppgötvaða netþjóna í API-kerfisviðmótinu

View file

@ -211,6 +211,7 @@ it:
setting_default_privacy: Privacy dei post
setting_default_sensitive: Segna sempre i media come sensibili
setting_delete_modal: Mostra dialogo di conferma prima di eliminare un post
setting_disable_hover_cards: Disabilita l'anteprima del profilo al passaggio del mouse
setting_disable_swiping: Disabilita i movimenti di scorrimento
setting_display_media: Visualizzazione dei media
setting_display_media_default: Predefinita
@ -242,11 +243,13 @@ it:
warn: Nascondi con avviso
form_admin_settings:
activity_api_enabled: Pubblica le statistiche aggregate sull'attività degli utenti nell'API
app_icon: Icona app
backups_retention_period: Periodo di conservazione dell'archivio utente
bootstrap_timeline_accounts: Consiglia sempre questi account ai nuovi utenti
closed_registrations_message: Messaggio personalizzato quando le iscrizioni non sono disponibili
content_cache_retention_period: Periodo di ritenzione del contenuto remoto
custom_css: Personalizza CSS
favicon: Favicon
mascot: Personalizza mascotte (legacy)
media_cache_retention_period: Periodo di conservazione della cache multimediale
peers_api_enabled: Pubblica l'elenco dei server scoperti nell'API

Some files were not shown because too many files have changed in this diff Show more