Merge remote-tracking branch 'parent/main' into upstream-20240716

This commit is contained in:
KMY 2024-07-16 09:01:12 +09:00
commit adee1645a3
203 changed files with 1707 additions and 1067 deletions

View file

@ -1,5 +1,5 @@
# This is a sample configuration file. You can generate your configuration # This is a sample configuration file. You can generate your configuration
# with the `rake mastodon:setup` interactive setup wizard, but to customize # with the `bundle exec rails mastodon:setup` interactive setup wizard, but to customize
# your setup even further, you'll need to edit it manually. This sample does # your setup even further, you'll need to edit it manually. This sample does
# not demonstrate all available configuration options. Please look at # not demonstrate all available configuration options. Please look at
# https://docs.joinmastodon.org/admin/config/ for the full documentation. # https://docs.joinmastodon.org/admin/config/ for the full documentation.
@ -40,14 +40,14 @@ ES_PASS=password
# Secrets # Secrets
# ------- # -------
# Make sure to use `rake secret` to generate secrets # Make sure to use `bundle exec rails secret` to generate secrets
# ------- # -------
SECRET_KEY_BASE= SECRET_KEY_BASE=
OTP_SECRET= OTP_SECRET=
# Web Push # Web Push
# -------- # --------
# Generate with `rake mastodon:webpush:generate_vapid_key` # Generate with `bundle exec rails mastodon:webpush:generate_vapid_key`
# -------- # --------
VAPID_PRIVATE_KEY= VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY= VAPID_PUBLIC_KEY=

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,29 +1,29 @@
name: Historical data migration test name: Historical data migration test
on: on:
merge_group:
push: push:
branches-ignore: branches:
- 'dependabot/**' - 'main'
- 'renovate/**' - 'stable-*'
paths:
- 'Gemfile*'
- '.ruby-version'
- '**/*.rb'
- '.github/workflows/test-migrations.yml'
- 'lib/tasks/tests.rake'
pull_request: pull_request:
paths:
- 'Gemfile*'
- '.ruby-version'
- '**/*.rb'
- '.github/workflows/test-migrations.yml'
- 'lib/tasks/tests.rake'
jobs: 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: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
strategy: strategy:
fail-fast: false fail-fast: false

View file

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

View file

@ -1,6 +1,6 @@
# This configuration was generated by # This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-offense-counts --no-auto-gen-timestamp` # `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 # The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base. # one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new # Note that changes in the inspected code, or installation of new
@ -14,7 +14,7 @@ Lint/NonLocalExitFromIterator:
Metrics/AbcSize: Metrics/AbcSize:
Max: 82 Max: 82
# Configuration parameters: CountBlocks, Max. # Configuration parameters: CountBlocks, CountModifierForms, Max.
Metrics/BlockNesting: Metrics/BlockNesting:
Exclude: Exclude:
- 'lib/tasks/mastodon.rake' - '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"] # Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.x"]
# renovate: datasource=docker depName=docker.io/ruby # 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"] # # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
# renovate: datasource=node-version depName=node # renovate: datasource=node-version depName=node
ARG NODE_MAJOR_VERSION="20" ARG NODE_MAJOR_VERSION="20"
@ -67,7 +67,9 @@ ENV \
# Optimize jemalloc 5.x performance # Optimize jemalloc 5.x performance
MALLOC_CONF="narenas:2,background_thread:true,thp:never,dirty_decay_ms:1000,muzzy_decay_ms:0" \ MALLOC_CONF="narenas:2,background_thread:true,thp:never,dirty_decay_ms:1000,muzzy_decay_ms:0" \
# Enable libvips, should not be changed # 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 # Set default shell used for running commands
SHELL ["/bin/bash", "-o", "pipefail", "-o", "errexit", "-c"] SHELL ["/bin/bash", "-o", "pipefail", "-o", "errexit", "-c"]

View file

@ -159,7 +159,7 @@ GEM
case_transform (0.2) case_transform (0.2)
activesupport activesupport
cbor (0.5.9.8) cbor (0.5.9.8)
charlock_holmes (0.7.8) charlock_holmes (0.7.9)
chewy (7.6.0) chewy (7.6.0)
activesupport (>= 5.2) activesupport (>= 5.2)
elasticsearch (>= 7.14.0, < 8) elasticsearch (>= 7.14.0, < 8)
@ -180,7 +180,7 @@ GEM
css_parser (1.17.1) css_parser (1.17.1)
addressable addressable
csv (3.3.0) csv (3.3.0)
database_cleaner-active_record (2.1.0) database_cleaner-active_record (2.2.0)
activerecord (>= 5.a) activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0) database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1) database_cleaner-core (2.0.1)
@ -346,7 +346,7 @@ GEM
activesupport (>= 3.0) activesupport (>= 3.0)
nokogiri (>= 1.6) nokogiri (>= 1.6)
io-console (0.7.2) io-console (0.7.2)
irb (1.13.2) irb (1.14.0)
rdoc (>= 4.0.0) rdoc (>= 4.0.0)
reline (>= 0.4.2) reline (>= 0.4.2)
jmespath (1.6.2) jmespath (1.6.2)
@ -583,15 +583,15 @@ GEM
orm_adapter (0.5.0) orm_adapter (0.5.0)
ox (2.14.18) ox (2.14.18)
parallel (1.25.1) parallel (1.25.1)
parser (3.3.3.0) parser (3.3.4.0)
ast (~> 2.4.1) ast (~> 2.4.1)
racc racc
parslet (2.0.0) parslet (2.0.0)
pastel (0.8.0) pastel (0.8.0)
tty-color (~> 0.5) tty-color (~> 0.5)
pg (1.5.6) pg (1.5.6)
pghero (3.5.0) pghero (3.6.0)
activerecord (>= 6) activerecord (>= 6.1)
premailer (1.23.0) premailer (1.23.0)
addressable addressable
css_parser (>= 1.12.0) css_parser (>= 1.12.0)
@ -733,13 +733,13 @@ GEM
rspec-mocks (~> 3.0) rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8) sidekiq (>= 5, < 8)
rspec-support (3.13.1) rspec-support (3.13.1)
rubocop (1.64.1) rubocop (1.65.0)
json (~> 2.3) json (~> 2.3)
language_server-protocol (>= 3.17.0) language_server-protocol (>= 3.17.0)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 3.3.0.2) parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0) rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0) regexp_parser (>= 2.4, < 3.0)
rexml (>= 3.2.5, < 4.0) rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.31.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
@ -756,7 +756,7 @@ GEM
rack (>= 1.1) rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0) rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (3.0.2) rubocop-rspec (3.0.3)
rubocop (~> 1.61) rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0) rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61) rubocop (~> 1.61)
@ -793,10 +793,10 @@ GEM
redis (>= 4.5.0, < 5) redis (>= 4.5.0, < 5)
sidekiq-bulk (0.2.0) sidekiq-bulk (0.2.0)
sidekiq sidekiq
sidekiq-scheduler (5.0.3) sidekiq-scheduler (5.0.5)
rufus-scheduler (~> 3.2) rufus-scheduler (~> 3.2)
sidekiq (>= 6, < 8) sidekiq (>= 6, < 8)
tilt (>= 1.4.0) tilt (>= 1.4.0, < 3)
sidekiq-unique-jobs (7.1.33) sidekiq-unique-jobs (7.1.33)
brpoplpush-redis_script (> 0.1.1, <= 2.0.0) brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
concurrent-ruby (~> 1.0, >= 1.0.5) concurrent-ruby (~> 1.0, >= 1.0.5)

View file

@ -28,14 +28,14 @@ class Api::V1::Notifications::RequestsController < Api::BaseController
end end
def dismiss def dismiss
@request.update!(dismissed: true) @request.destroy!
render_empty render_empty
end end
private private
def load_requests 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), limit_param(DEFAULT_ACCOUNTS_LIMIT),
params_slice(:max_id, :since_id, :min_id) params_slice(:max_id, :since_id, :min_id)
) )
@ -68,8 +68,4 @@ class Api::V1::Notifications::RequestsController < Api::BaseController
def pagination_since_id def pagination_since_id
@requests.first.id @requests.first.id
end end
def pagination_params(core_params)
params.slice(:dismissed).permit(:dismissed).merge(core_params)
end
end end

View file

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

View file

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

View file

@ -305,7 +305,7 @@ export function submitComposeFail(error) {
export function uploadCompose(files) { export function uploadCompose(files) {
return function (dispatch, getState) { 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 media = getState().getIn(['compose', 'media_attachments']);
const pending = getState().getIn(['compose', 'pending_media_attachments']); const pending = getState().getIn(['compose', 'pending_media_attachments']);
const defaultSensitive = getState().getIn(['compose', 'default_sensitive']); const defaultSensitive = getState().getIn(['compose', 'default_sensitive']);
@ -322,7 +322,7 @@ export function uploadCompose(files) {
dispatch(uploadComposeRequest()); dispatch(uploadComposeRequest());
for (const [i, file] of Array.from(files).entries()) { for (const [i, file] of Array.from(files).entries()) {
if (media.size + i >= 4) break; if (media.size + i > (uploadLimit - 1)) break;
const data = new FormData(); const data = new FormData();
data.append('file', file); data.append('file', file);

View file

@ -131,7 +131,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
return ( return (
<div className={classNames('account', { 'account--minimal': minimal })}> <div className={classNames('account', { 'account--minimal': minimal })}>
<div className='account__wrapper'> <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'> <div className='account__avatar-wrapper'>
<Avatar account={account} size={size} /> <Avatar account={account} size={size} />
</div> </div>

View file

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

View file

@ -13,7 +13,7 @@ import { debounce } from 'lodash';
import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react';
import { Blurhash } from 'mastodon/components/blurhash'; import { Blurhash } from 'mastodon/components/blurhash';
import { autoPlayGif, displayMedia, displayMediaExpand, useBlurhash } from '../initial_state'; import { autoPlayGif, displayMedia, useBlurhash } from '../initial_state';
import { IconButton } from './icon_button'; import { IconButton } from './icon_button';
@ -322,15 +322,13 @@ class MediaGallery extends PureComponent {
style.aspectRatio = '3 / 2'; style.aspectRatio = '3 / 2';
} }
const maxSize = displayMediaExpand ? 16 : 4; const size = media.size;
const size = media.take(maxSize).size;
const uncached = media.every(attachment => attachment.get('type') === 'unknown'); const uncached = media.every(attachment => attachment.get('type') === 'unknown');
if (this.isFullSizeEligible()) { if (this.isFullSizeEligible()) {
children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} lang={lang} displayWidth={width} visible={visible} />; children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} lang={lang} displayWidth={width} visible={visible} />;
} else { } else {
children = media.take(maxSize).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) { if (uncached) {

View file

@ -641,7 +641,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>} <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>
<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'> <div className='status__avatar'>
{statusAvatar} {statusAvatar}
</div> </div>

View file

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

View file

@ -8,7 +8,7 @@ const mapStateToProps = state => {
const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0; const readyAttachmentsSize = state.getIn(['compose', 'media_attachments']).size ?? 0;
const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0; const pendingAttachmentsSize = state.getIn(['compose', 'pending_media_attachments']).size ?? 0;
const attachmentsSize = readyAttachmentsSize + pendingAttachmentsSize; 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'))); const hasVideoOrAudio = state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type')));
return { return {

View file

@ -548,7 +548,7 @@ class Notification extends ImmutablePureComponent {
const targetAccount = report.get('target_account'); const targetAccount = report.get('target_account');
const targetDisplayNameHtml = { __html: targetAccount.get('display_name_html') }; 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 ( return (
<HotKeys handlers={this.getHandlers()}> <HotKeys handlers={this.getHandlers()}>
@ -571,7 +571,7 @@ class Notification extends ImmutablePureComponent {
const { notification } = this.props; const { notification } = this.props;
const account = notification.get('account'); const account = notification.get('account');
const displayNameHtml = { __html: account.get('display_name_html') }; 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')) { switch(notification.get('type')) {
case 'follow': case 'follow':

View file

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

View file

@ -141,7 +141,7 @@ export default class Card extends PureComponent {
const showAuthor = !!card.getIn(['authors', 0, 'accountId']); const showAuthor = !!card.getIn(['authors', 0, 'accountId']);
const description = ( const description = (
<div className='status-card__content'> <div className='status-card__content' dir='auto'>
<span className='status-card__host'> <span className='status-card__host'>
<span lang={language}>{provider}</span> <span lang={language}>{provider}</span>
{card.get('published_at') && <> · <RelativeTimestamp timestamp={card.get('published_at')} /></>} {card.get('published_at') && <> · <RelativeTimestamp timestamp={card.get('published_at')} /></>}

View file

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

View file

@ -31,10 +31,10 @@
* @property {boolean=} boost_modal * @property {boolean=} boost_modal
* @property {boolean=} delete_modal * @property {boolean=} delete_modal
* @property {boolean=} disable_swiping * @property {boolean=} disable_swiping
* @property {boolean=} disable_hover_cards
* @property {string=} disabled_account_id * @property {string=} disabled_account_id
* @property {string[]} enabled_visibilities * @property {string[]} enabled_visibilities
* @property {string} display_media * @property {string} display_media
* @property {boolean} display_media_expand
* @property {string} domain * @property {string} domain
* @property {string} dtl_tag * @property {string} dtl_tag
* @property {boolean} enable_emoji_reaction * @property {boolean} enable_emoji_reaction
@ -128,10 +128,10 @@ export const bookmarkCategoryNeeded = getMeta('bookmark_category_needed');
export const boostModal = getMeta('boost_modal'); export const boostModal = getMeta('boost_modal');
export const deleteModal = getMeta('delete_modal'); export const deleteModal = getMeta('delete_modal');
export const disableSwiping = getMeta('disable_swiping'); export const disableSwiping = getMeta('disable_swiping');
export const disableHoverCards = getMeta('disable_hover_cards');
export const disabledAccountId = getMeta('disabled_account_id'); export const disabledAccountId = getMeta('disabled_account_id');
export const enabledVisibilites = getMeta('enabled_visibilities'); export const enabledVisibilites = getMeta('enabled_visibilities');
export const displayMedia = getMeta('display_media'); export const displayMedia = getMeta('display_media');
export const displayMediaExpand = getMeta('display_media_expand');
export const domain = getMeta('domain'); export const domain = getMeta('domain');
export const dtlTag = getMeta('dtl_tag'); export const dtlTag = getMeta('dtl_tag');
export const enableEmojiReaction = getMeta('enable_emoji_reaction'); export const enableEmojiReaction = getMeta('enable_emoji_reaction');

View file

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

View file

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

View file

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

View file

@ -197,7 +197,7 @@
"copy_icon_button.copied": "Zkopírováno do schránky", "copy_icon_button.copied": "Zkopírováno do schránky",
"copypaste.copied": "Zkopírováno", "copypaste.copied": "Zkopírováno",
"copypaste.copy_to_clipboard": "Zkopírovat do schránky", "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.local": "Pouze z {domain}",
"directory.new_arrivals": "Nově příchozí", "directory.new_arrivals": "Nově příchozí",
"directory.recently_active": "Nedávno aktivní", "directory.recently_active": "Nedávno aktivní",
@ -213,7 +213,7 @@
"domain_block_modal.block_account_instead": "Raději blokovat @{name}", "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_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_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.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_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.", "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.any": "Jakýkoliv z těchto",
"hashtag.column_settings.tag_mode.none": "Žádný 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.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": "{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.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", "hashtag.follow": "Sledovat hashtag",
@ -440,7 +440,7 @@
"mute_modal.show_options": "Zobrazit možnosti", "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_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.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_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.", "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", "navigation_bar.about": "O aplikaci",
@ -566,8 +566,8 @@
"onboarding.share.message": "Jsem {username} na #Mastodonu! Pojď mě sledovat na {url}", "onboarding.share.message": "Jsem {username} na #Mastodonu! Pojď mě sledovat na {url}",
"onboarding.share.next_steps": "Možné další kroky:", "onboarding.share.next_steps": "Možné další kroky:",
"onboarding.share.title": "Sdílejte svůj profil", "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.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": "Want to skip right ahead?", "onboarding.start.skip": "Nepotřebujete pomoci začít?",
"onboarding.start.title": "Dokázali jste to!", "onboarding.start.title": "Dokázali jste to!",
"onboarding.steps.follow_people.body": "Mastodon je o sledování zajimavých lidí.", "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", "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.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.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!", "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í", "password_confirmation.mismatching": "Zadaná hesla se neshodují",
"picture_in_picture.restore": "Vrátit zpět", "picture_in_picture.restore": "Vrátit zpět",
"poll.closed": "Uzavřeno", "poll.closed": "Uzavřeno",
@ -665,7 +665,7 @@
"report.unfollow": "Přestat sledovat @{name}", "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.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.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.other": "Ostatní",
"report_notification.categories.spam": "Spam", "report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Porušení pravidla", "report_notification.categories.violation": "Porušení pravidla",

View file

@ -205,10 +205,10 @@
"disabled_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert.", "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.community_timeline": "Das sind die neuesten öffentlichen Beiträge von Profilen, deren Konten von {domain} verwaltet werden.",
"dismissable_banner.dismiss": "Ablehnen", "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_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 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_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": "Das sind Hashtags, die derzeit an Reichweite gewinnen. Hashtags, die von vielen verschiedenen Profilen verwendet werden, werden höher eingestuft.", "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 sozialen Netzwerk, denen Leute auf {domain} folgen.", "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": "Server blockieren",
"domain_block_modal.block_account_instead": "Stattdessen @{name} 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.", "domain_block_modal.they_can_interact_with_old_posts": "Profile von diesem Server werden mit deinen älteren Beiträgen interagieren können.",

View file

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

View file

@ -1,6 +1,10 @@
{ {
"about.blocks": "Ulac agbur",
"about.contact": "Anermis:", "about.contact": "Anermis:",
"about.disclaimer": "Mastodon d aseɣẓan ilelli, d aseɣẓan n uɣbalu yeldin, d tnezzut n Mastodon gGmbH.", "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.not_available": "Talɣut-a ur tettwabder ara deg uqeddac-a.",
"about.powered_by": "Azeṭṭa inmetti yettwasɣelsen sɣur {mastodon}", "about.powered_by": "Azeṭṭa inmetti yettwasɣelsen sɣur {mastodon}",
"about.rules": "Ilugan n uqeddac", "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_at": "Tasuffeɣt taneggarut ass n {date}",
"account.featured_tags.last_status_never": "Ulac tisuffaɣ", "account.featured_tags.last_status_never": "Ulac tisuffaɣ",
"account.follow": "Ḍfer", "account.follow": "Ḍfer",
"account.follow_back": "Ḍfer-it ula d kečč·m",
"account.followers": "Imeḍfaren", "account.followers": "Imeḍfaren",
"account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", "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": "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.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.",
"account.go_to_profile": "Ddu ɣer umaɣnu", "account.go_to_profile": "Ddu ɣer umaɣnu",
"account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
@ -49,6 +56,7 @@
"account.requested_follow": "{name} yessuter ad k·m-yeḍfer", "account.requested_follow": "{name} yessuter ad k·m-yeḍfer",
"account.share": "Bḍu amaɣnu n @{name}", "account.share": "Bḍu amaɣnu n @{name}",
"account.show_reblogs": "Ssken-d inebḍa 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": "Serreḥ i @{name}",
"account.unblock_domain": "Ssken-d {domain}", "account.unblock_domain": "Ssken-d {domain}",
"account.unblock_short": "Serreḥ", "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.", "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.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.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.activitypub_like_language": "ActivityPub am tutlayt yettmeslay Mastodon d izeḍwan inmettiyen nniḍen.",
"domain_pill.server": "Aqeddac", "domain_pill.server": "Aqeddac",
"domain_pill.username": "Isem n useqdac", "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.review_and_configure_title": "Iɣewwaṛen n imzizdig",
"filter_modal.added.settings_link": "asebter n yiɣewwaṛen", "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.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.expired": "yemmut",
"filter_modal.select_filter.prompt_new": "Taggayt tamaynutt : {name}", "filter_modal.select_filter.prompt_new": "Taggayt tamaynutt : {name}",
"filter_modal.select_filter.search": "Nadi neɣ snulfu-d", "filter_modal.select_filter.search": "Nadi neɣ snulfu-d",
@ -224,9 +234,9 @@
"firehose.remote": "Iqeddacen nniḍen", "firehose.remote": "Iqeddacen nniḍen",
"follow_request.authorize": "Ssireg", "follow_request.authorize": "Ssireg",
"follow_request.reject": "Agi", "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.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", "followed_tags": "Ihacṭagen yettwaḍfaren",
"footer.about": "Ɣef", "footer.about": "Ɣef",
"footer.directory": "Akaram n imeɣna", "footer.directory": "Akaram n imeɣna",
@ -235,6 +245,7 @@
"footer.keyboard_shortcuts": "Inegzumen n unasiw", "footer.keyboard_shortcuts": "Inegzumen n unasiw",
"footer.privacy_policy": "Tasertit tabaḍnit", "footer.privacy_policy": "Tasertit tabaḍnit",
"footer.source_code": "Wali tangalt taɣbalut", "footer.source_code": "Wali tangalt taɣbalut",
"footer.status": "N tsuffeɣt",
"generic.saved": "Yettwasekles", "generic.saved": "Yettwasekles",
"getting_started.heading": "Bdu", "getting_started.heading": "Bdu",
"hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.all": "d {additional}",
@ -313,11 +324,14 @@
"lightbox.previous": "Ɣer deffir", "lightbox.previous": "Ɣer deffir",
"limited_account_hint.action": "Wali amaɣnu akken yebɣu yili", "limited_account_hint.action": "Wali amaɣnu akken yebɣu yili",
"link_preview.author": "S-ɣur {name}", "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.add": "Rnu ɣer tebdart",
"lists.account.remove": "Kkes seg tebdart", "lists.account.remove": "Kkes seg tebdart",
"lists.delete": "Kkes tabdart", "lists.delete": "Kkes tabdart",
"lists.edit": "Ẓreg tabdart", "lists.edit": "Ẓreg tabdart",
"lists.edit.submit": "Beddel azwel", "lists.edit.submit": "Beddel azwel",
"lists.exclusive": "Ffer tisuffaɣ-a seg ugejdan",
"lists.new.create": "Rnu tabdart", "lists.new.create": "Rnu tabdart",
"lists.new.title_placeholder": "Azwel amaynut n tebdart", "lists.new.title_placeholder": "Azwel amaynut n tebdart",
"lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren", "lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren",
@ -338,6 +352,7 @@
"navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.bookmarks": "Ticraḍ",
"navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.community_timeline": "Tasuddemt tadigant",
"navigation_bar.compose": "Aru tajewwiqt tamaynut", "navigation_bar.compose": "Aru tajewwiqt tamaynut",
"navigation_bar.direct": "Tibdarin tusligin",
"navigation_bar.discover": "Ẓer", "navigation_bar.discover": "Ẓer",
"navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.domain_blocks": "Tiɣula yeffren",
"navigation_bar.explore": "Snirem", "navigation_bar.explore": "Snirem",
@ -357,9 +372,14 @@
"navigation_bar.search": "Nadi", "navigation_bar.search": "Nadi",
"navigation_bar.security": "Taɣellist", "navigation_bar.security": "Taɣellist",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "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": "iṭṭafar-ik·em-id {name}",
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ", "notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
"notification.mention": "{name} yebder-ik-id", "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.own_poll": "Tafrant-ik·im tfuk",
"notification.poll": "Tfukk tefrant ideg tettekkaḍ", "notification.poll": "Tfukk tefrant ideg tettekkaḍ",
"notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen", "notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
@ -370,6 +390,7 @@
"notification_requests.notifications_from": "Ilɣa sɣur {name}", "notification_requests.notifications_from": "Ilɣa sɣur {name}",
"notifications.clear": "Sfeḍ tilɣa", "notifications.clear": "Sfeḍ tilɣa",
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?", "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.alert": "Tilɣa n tnarit",
"notifications.column_settings.favourite": "Imenyafen:", "notifications.column_settings.favourite": "Imenyafen:",
"notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin", "notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin",
@ -384,6 +405,7 @@
"notifications.column_settings.sound": "Rmed imesli", "notifications.column_settings.sound": "Rmed imesli",
"notifications.column_settings.status": "Tisuffaɣ timaynutin :", "notifications.column_settings.status": "Tisuffaɣ timaynutin :",
"notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra", "notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra",
"notifications.column_settings.update": "Iẓreg:",
"notifications.filter.all": "Akk", "notifications.filter.all": "Akk",
"notifications.filter.boosts": "Seǧhed", "notifications.filter.boosts": "Seǧhed",
"notifications.filter.favourites": "Imenyafen", "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.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.follows.title": "Ttwassnen deg Mastodon",
"onboarding.profile.display_name": "Isem ara d-yettwaskanen", "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": "Tameddurt",
"onboarding.profile.note_hint": "Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen …", "onboarding.profile.note_hint": "Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen …",
"onboarding.profile.save_and_continue": "Sekles, tkemmleḍ", "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.total_votes": "{count, plural, one {# n udɣaṛ} other {# n yedɣaṛen}}",
"poll.vote": "Dɣeṛ", "poll.vote": "Dɣeṛ",
"poll.voted": "Tdeɣṛeḍ ɣef tririt-ayi", "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.add_poll": "Rnu asenqed",
"poll_button.remove_poll": "Kkes asenqed", "poll_button.remove_poll": "Kkes asenqed",
"privacy.change": "Seggem tabaḍnit n yizen", "privacy.change": "Seggem tabaḍnit n yizen",
@ -465,9 +489,12 @@
"relative_time.seconds": "{number}tas", "relative_time.seconds": "{number}tas",
"relative_time.today": "assa", "relative_time.today": "assa",
"reply_indicator.cancel": "Sefsex", "reply_indicator.cancel": "Sefsex",
"reply_indicator.poll": "Afmiḍi",
"report.block": "Sewḥel", "report.block": "Sewḥel",
"report.categories.legal": "Azerfan",
"report.categories.other": "Tiyyaḍ", "report.categories.other": "Tiyyaḍ",
"report.categories.spam": "Aspam", "report.categories.spam": "Aspam",
"report.category.subtitle": "Fren amṣada akk ufrin",
"report.category.title_account": "ameɣnu", "report.category.title_account": "ameɣnu",
"report.category.title_status": "tasuffeɣt", "report.category.title_status": "tasuffeɣt",
"report.close": "Immed", "report.close": "Immed",
@ -476,13 +503,25 @@
"report.next": "Uḍfiṛ", "report.next": "Uḍfiṛ",
"report.placeholder": "Iwenniten-nniḍen", "report.placeholder": "Iwenniten-nniḍen",
"report.reasons.dislike": "Ur t-ḥemmleɣ ara", "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": "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": "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.submit": "Azen",
"report.target": "Mmel {target}", "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": "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.unfollow": "Seḥbes aḍfar n @{name}",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "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.other": "Ayen nniḍen",
"report_notification.categories.spam": "Aspam", "report_notification.categories.spam": "Aspam",
"report_notification.open": "Ldi aneqqis", "report_notification.open": "Ldi aneqqis",
@ -497,6 +536,7 @@
"search_popout.full_text_search_disabled_message": "Ur yelli ara deg {domain}.", "search_popout.full_text_search_disabled_message": "Ur yelli ara deg {domain}.",
"search_popout.language_code": "Tangalt ISO n tutlayt", "search_popout.language_code": "Tangalt ISO n tutlayt",
"search_popout.options": "Iwellihen n unadi", "search_popout.options": "Iwellihen n unadi",
"search_popout.quick_actions": "Tigawin tiruradin",
"search_popout.recent": "Inadiyen ineggura", "search_popout.recent": "Inadiyen ineggura",
"search_popout.user": "amseqdac", "search_popout.user": "amseqdac",
"search_results.accounts": "Imeɣna", "search_results.accounts": "Imeɣna",
@ -505,7 +545,9 @@
"search_results.see_all": "Wali-ten akk", "search_results.see_all": "Wali-ten akk",
"search_results.statuses": "Tisuffaɣ", "search_results.statuses": "Tisuffaɣ",
"search_results.title": "Anadi ɣef {q}", "search_results.title": "Anadi ɣef {q}",
"server_banner.active_users": "iseqdacen urmiden",
"server_banner.administered_by": "Yettwadbel sɣur :", "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.create_account": "Snulfu-d amiḍan",
"sign_in_banner.sign_in": "Qqen", "sign_in_banner.sign_in": "Qqen",
"sign_in_banner.sso_redirect": "Qqen neɣ jerred", "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.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen",
"status.copy": "Nɣel assaɣ ɣer tasuffeɣt", "status.copy": "Nɣel assaɣ ɣer tasuffeɣt",
"status.delete": "Kkes", "status.delete": "Kkes",
"status.direct": "Bder-d @{name} weḥd-s",
"status.direct_indicator": "Abdar uslig",
"status.edit": "Ẓreg", "status.edit": "Ẓreg",
"status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}", "status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}",
"status.embed": "Seddu", "status.embed": "Seddu",
"status.favourite": "Amenyaf",
"status.favourites": "{count, plural, one {n usmenyaf} other {n ismenyafen}}",
"status.filter": "Sizdeg tassufeɣt-a", "status.filter": "Sizdeg tassufeɣt-a",
"status.filtered": "Yettwasizdeg", "status.filtered": "Yettwasizdeg",
"status.hide": "Ffer tasuffeɣt", "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.load_more": "Sali ugar",
"status.media.open": "Sit i ulday",
"status.media.show": "Sit i uskan",
"status.media_hidden": "Amidya yettwaffer", "status.media_hidden": "Amidya yettwaffer",
"status.mention": "Bder-d @{name}", "status.mention": "Bder-d @{name}",
"status.more": "Ugar", "status.more": "Ugar",
@ -534,6 +584,7 @@
"status.read_more": "Issin ugar", "status.read_more": "Issin ugar",
"status.reblog": "Bḍu", "status.reblog": "Bḍu",
"status.reblogged_by": "Yebḍa-tt {name}", "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.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.redraft": "Kkes tɛiwdeḍ tira",
"status.remove_bookmark": "Kkes tacreḍt", "status.remove_bookmark": "Kkes tacreḍt",
@ -548,6 +599,7 @@
"status.show_less_all": "Semẓi akk tisuffɣin", "status.show_less_all": "Semẓi akk tisuffɣin",
"status.show_more": "Ssken-d ugar", "status.show_more": "Ssken-d ugar",
"status.show_more_all": "Ẓerr ugar lebda", "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.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"status.translate": "Suqel", "status.translate": "Suqel",
"status.translated_from_with": "Yettwasuqel seg {lang} s {provider}", "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_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.analyzing_picture": "Tasleḍt n tugna tetteddu…",
"upload_modal.apply": "Snes", "upload_modal.apply": "Snes",
"upload_modal.applying": "Asnas…",
"upload_modal.choose_image": "Fren tugna", "upload_modal.choose_image": "Fren tugna",
"upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis", "upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis",
"upload_modal.detect_text": "Sefru-d aḍris seg tugna", "upload_modal.detect_text": "Sefru-d aḍris seg tugna",
@ -589,6 +642,7 @@
"upload_modal.preparing_ocr": "Aheyyi n OCR…", "upload_modal.preparing_ocr": "Aheyyi n OCR…",
"upload_modal.preview_label": "Taskant ({ratio})", "upload_modal.preview_label": "Taskant ({ratio})",
"upload_progress.label": "Asali iteddu...", "upload_progress.label": "Asali iteddu...",
"upload_progress.processing": "Asesfer…",
"username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ", "username.taken": "Yettwaṭṭef yisem-a n useqdac. Ɛreḍ wayeḍ",
"video.close": "Mdel tabidyutt", "video.close": "Mdel tabidyutt",
"video.download": "Sidered afaylu", "video.download": "Sidered afaylu",

View file

@ -35,6 +35,7 @@
"account.follow_back": "Sekot atpakaļ", "account.follow_back": "Sekot atpakaļ",
"account.followers": "Sekotāji", "account.followers": "Sekotāji",
"account.followers.empty": "Šim lietotājam vēl nav sekotāju.", "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.following": "Seko",
"account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
"account.go_to_profile": "Doties uz profilu", "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_reblogs": "Rādīt pastiprinātos ierakstus",
"home.column_settings.show_replies": "Rādīt atbildes", "home.column_settings.show_replies": "Rādīt atbildes",
"home.hide_announcements": "Slēpt paziņojumus", "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.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", "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.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ā.", "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.contact": "Контакт:",
"about.disclaimer": "Mastodon є задарьнов проґрамов из удпертым кодом тай торговов значков Mastodon gGmbH.", "about.disclaimer": "Mastodon є задарьнов проґрамов из удпертым кодом тай торговов значков Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Причины не ясні", "about.domain_blocks.no_reason_available": "Причины не ясні",
"about.domain_blocks.preamble": "Майбульш Mastodon поволят вам позирати контент тай комуніковати из хосновачами из другых федерованых серверув. Туй лиш уняткы учинені про сись конкретный сервер.",
"about.domain_blocks.silenced.explanation": "Вы майбульш не будете видіти профілі тай контент из сього сервера, кидь не будете го самі глядати авадь пудпишете ся на нього.",
"about.domain_blocks.silenced.title": "Обмежено", "about.domain_blocks.silenced.title": "Обмежено",
"about.domain_blocks.suspended.explanation": "Ниякі податкы из сього сервера не будут уброблені, усокочені ци поміняні, што чинит невозможнов хоть-яку інтеракцію ци зязок из хосновачами из сього сервера.", "about.domain_blocks.suspended.explanation": "Ниякі податкы из сього сервера не будут уброблені, усокочені ци поміняні, што чинит невозможнов хоть-яку інтеракцію ци зязок из хосновачами из сього сервера.",
"about.domain_blocks.suspended.title": "Заблоковано", "about.domain_blocks.suspended.title": "Заблоковано",
@ -20,6 +22,7 @@
"account.browse_more_on_origin_server": "Позирайте бульше на ориґіналнум профілю", "account.browse_more_on_origin_server": "Позирайте бульше на ориґіналнум профілю",
"account.cancel_follow_request": "Удмінити пудписку", "account.cancel_follow_request": "Удмінити пудписку",
"account.copy": "Зкопіровати удкликованя на профіл", "account.copy": "Зкопіровати удкликованя на профіл",
"account.direct": "Пошептати @{name}",
"account.disable_notifications": "Бульше не сповіщати ми коли {name} пише", "account.disable_notifications": "Бульше не сповіщати ми коли {name} пише",
"account.domain_blocked": "Домен заблокованый", "account.domain_blocked": "Домен заблокованый",
"account.edit_profile": "Управити профіл", "account.edit_profile": "Управити профіл",
@ -39,8 +42,10 @@
"account.joined_short": "Датум прикапчованя", "account.joined_short": "Датум прикапчованя",
"account.languages": "Поміняти убрані языкы", "account.languages": "Поміняти убрані языкы",
"account.link_verified_on": "Властность сього удкликованя было звірено {date}", "account.link_verified_on": "Властность сього удкликованя было звірено {date}",
"account.locked_info": "Сись профіл є замкнутый. Ґазда акаунта буде ручно провіряти тко го може зафоловити.",
"account.media": "Медіа", "account.media": "Медіа",
"account.moved_to": "Хосновач {name} указав, ож новый профіл йим є:", "account.mention": "Спомянути @{name}",
"account.moved_to": "Хосновач {name} указав, ож новый профіл му є:",
"account.mute": "Стишити {name}", "account.mute": "Стишити {name}",
"account.mute_notifications_short": "Стишити голошіня", "account.mute_notifications_short": "Стишити голошіня",
"account.mute_short": "Стишити", "account.mute_short": "Стишити",
@ -60,9 +65,12 @@
"account.unblock_short": "Розблоковати", "account.unblock_short": "Розблоковати",
"account.unendorse": "Не указовати на профілови", "account.unendorse": "Не указовати на профілови",
"account.unfollow": "Удписати ся", "account.unfollow": "Удписати ся",
"account.unmute": "Указовати {name}",
"account.unmute_notifications_short": "Указовати голошіня", "account.unmute_notifications_short": "Указовати голошіня",
"account.unmute_short": "Указовати", "account.unmute_short": "Указовати",
"account_note.placeholder": "Клопкніт обы додати примітку", "account_note.placeholder": "Клопкніт обы додати примітку",
"admin.dashboard.retention.average": "Середньоє",
"admin.dashboard.retention.cohort": "Місяць прикапчованя",
"admin.dashboard.retention.cohort_size": "Нові хосновачі", "admin.dashboard.retention.cohort_size": "Нові хосновачі",
"admin.impact_report.instance_accounts": "Профілі из акаунтув, котрі ся удалят", "admin.impact_report.instance_accounts": "Профілі из акаунтув, котрі ся удалят",
"admin.impact_report.instance_followers": "Пудписникы, котрых стратят наші хосновачі", "admin.impact_report.instance_followers": "Пудписникы, котрых стратят наші хосновачі",
@ -70,11 +78,77 @@
"admin.impact_report.title": "Вплыв цілком", "admin.impact_report.title": "Вплыв цілком",
"alert.rate_limited.message": "Попробуйте зась по {retry_time, time, medium}.", "alert.rate_limited.message": "Попробуйте зась по {retry_time, time, medium}.",
"alert.rate_limited.title": "Частота обмежена", "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.return": "Вернути ся на головну",
"bundle_column_error.routing.body": "Не можеме найти сяку сторунку. Бизувні сьте, ож URL у адресному шорикови є добрый?", "bundle_column_error.routing.body": "Не можеме найти сяку сторунку. Бизувні сьте, ож URL у адресному шорикови є добрый?",
"bundle_column_error.routing.title": "404", "bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Заперти", "bundle_modal_error.close": "Заперти",
"bundle_modal_error.message": "Штось ся показило, закидь сьме ладовали сись компонент.", "bundle_modal_error.message": "Штось ся показило, закидь сьме ладовали сись компонент.",
"bundle_modal_error.retry": "Попробовати зась", "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": "@{name} නිහඬ කරන්න",
"account.mute_short": "නිහඬ", "account.mute_short": "නිහඬ",
"account.muted": "නිහඬ කළා", "account.muted": "නිහඬ කළා",
"account.open_original_page": "මුල් පිටුව අරින්න",
"account.posts": "ලිපි", "account.posts": "ලිපි",
"account.posts_with_replies": "ලිපි සහ පිළිතුරු", "account.posts_with_replies": "ලිපි සහ පිළිතුරු",
"account.report": "@{name} වාර්තා කරන්න", "account.report": "@{name} වාර්තා කරන්න",
@ -51,6 +52,10 @@
"alert.unexpected.title": "අපොයි!", "alert.unexpected.title": "අපොයි!",
"announcement.announcement": "නිවේදනය", "announcement.announcement": "නිවේදනය",
"audio.hide": "හඬපටය සඟවන්න", "audio.hide": "හඬපටය සඟවන්න",
"block_modal.show_less": "අඩුවෙන් පෙන්වන්න",
"block_modal.show_more": "තව පෙන්වන්න",
"block_modal.they_will_know": "අවහිර කළ බව දකිනු ඇත.",
"block_modal.title": "අවහිර කරන්නද?",
"boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට {combo} එබීමට හැකිය", "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට {combo} එබීමට හැකිය",
"bundle_column_error.copy_stacktrace": "දෝෂ වාර්තාවේ පිටපතක්", "bundle_column_error.copy_stacktrace": "දෝෂ වාර්තාවේ පිටපතක්",
"bundle_column_error.error.title": "අපොයි!", "bundle_column_error.error.title": "අපොයි!",
@ -100,10 +105,13 @@
"compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත", "compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත",
"compose_form.placeholder": "ඔබගේ සිතුවිලි මොනවාද?", "compose_form.placeholder": "ඔබගේ සිතුවිලි මොනවාද?",
"compose_form.poll.duration": "මත විමසීමේ කාලය", "compose_form.poll.duration": "මත විමසීමේ කාලය",
"compose_form.poll.option_placeholder": "විකල්පය {number}",
"compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයකට මත විමසුම වෙනස් කරන්න", "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයකට මත විමසුම වෙනස් කරන්න",
"compose_form.poll.switch_to_single": "තනි තේරීමකට මත විමසුම වෙනස් කරන්න", "compose_form.poll.switch_to_single": "තනි තේරීමකට මත විමසුම වෙනස් කරන්න",
"compose_form.poll.type": "ශෛලිය",
"compose_form.publish": "ප්‍රකාශනය", "compose_form.publish": "ප්‍රකාශනය",
"compose_form.publish_form": "නව ලිපිය", "compose_form.publish_form": "නව ලිපිය",
"compose_form.reply": "පිළිතුරු",
"compose_form.spoiler.marked": "අන්තර්ගත අවවාදය ඉවත් කරන්න", "compose_form.spoiler.marked": "අන්තර්ගත අවවාදය ඉවත් කරන්න",
"compose_form.spoiler.unmarked": "අන්තර්ගත අවවාදයක් එක් කරන්න", "compose_form.spoiler.unmarked": "අන්තර්ගත අවවාදයක් එක් කරන්න",
"confirmation_modal.cancel": "අවලංගු", "confirmation_modal.cancel": "අවලංගු",
@ -123,6 +131,7 @@
"conversation.mark_as_read": "කියවූ බව යොදන්න", "conversation.mark_as_read": "කියවූ බව යොදන්න",
"conversation.open": "සංවාදය බලන්න", "conversation.open": "සංවාදය බලන්න",
"conversation.with": "{names} සමඟ", "conversation.with": "{names} සමඟ",
"copy_icon_button.copied": "පසුරුපුවරුවට පිටපත් විය",
"copypaste.copied": "පිටපත් විය", "copypaste.copied": "පිටපත් විය",
"copypaste.copy_to_clipboard": "පසුරුපුවරුවට පිටපතක්", "copypaste.copy_to_clipboard": "පසුරුපුවරුවට පිටපතක්",
"directory.federated": "දන්නා ෆෙඩිවර්ස් වෙතින්", "directory.federated": "දන්නා ෆෙඩිවර්ස් වෙතින්",
@ -130,6 +139,9 @@
"directory.new_arrivals": "නව පැමිණීම්", "directory.new_arrivals": "නව පැමිණීම්",
"directory.recently_active": "මෑත දී සක්‍රියයි", "directory.recently_active": "මෑත දී සක්‍රියයි",
"disabled_account_banner.account_settings": "ගිණුමේ සැකසුම්", "disabled_account_banner.account_settings": "ගිණුමේ සැකසුම්",
"dismissable_banner.dismiss": "ඉවතලන්න",
"domain_pill.server": "සේවාදායකය",
"domain_pill.username": "පරිශ්‍රීලක නාමය",
"embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම ලිපිය ඔබගේ අඩවියට කාවද්දන්න.", "embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම ලිපිය ඔබගේ අඩවියට කාවද්දන්න.",
"embed.preview": "මෙන්න එය පෙනෙන අන්දම:", "embed.preview": "මෙන්න එය පෙනෙන අන්දම:",
"emoji_button.activity": "ක්‍රියාකාරකම", "emoji_button.activity": "ක්‍රියාකාරකම",
@ -178,9 +190,13 @@
"filter_modal.select_filter.search": "සොයන්න හෝ සාදන්න", "filter_modal.select_filter.search": "සොයන්න හෝ සාදන්න",
"filter_modal.select_filter.title": "මෙම ලිපිය පෙරන්න", "filter_modal.select_filter.title": "මෙම ලිපිය පෙරන්න",
"filter_modal.title.status": "ලිපියක් පෙරන්න", "filter_modal.title.status": "ලිපියක් පෙරන්න",
"filtered_notifications_banner.title": "පෙරූ දැනුම්දීම්",
"firehose.all": "සියල්ල",
"firehose.local": "මෙම සේවාදායකය", "firehose.local": "මෙම සේවාදායකය",
"firehose.remote": "වෙනත් සේවාදායක", "firehose.remote": "වෙනත් සේවාදායක",
"follow_request.reject": "ප්‍රතික්‍ෂේප", "follow_request.reject": "ප්‍රතික්‍ෂේප",
"follow_suggestions.dismiss": "නැවත පෙන්වන්න එපා",
"follow_suggestions.view_all": "සියල්ල බලන්න",
"footer.about": "පිළිබඳව", "footer.about": "පිළිබඳව",
"footer.directory": "පැතිකඩ නාමාවලිය", "footer.directory": "පැතිකඩ නාමාවලිය",
"footer.get_app": "යෙදුම ගන්න", "footer.get_app": "යෙදුම ගන්න",
@ -202,6 +218,7 @@
"home.pending_critical_update.link": "යාවත්කාල බලන්න", "home.pending_critical_update.link": "යාවත්කාල බලන්න",
"home.show_announcements": "නිවේදන පෙන්වන්න", "home.show_announcements": "නිවේදන පෙන්වන්න",
"interaction_modal.login.action": "මුලට ගෙනයන්න", "interaction_modal.login.action": "මුලට ගෙනයන්න",
"interaction_modal.on_another_server": "වෙනත් සේවාදායකයක",
"interaction_modal.on_this_server": "මෙම සේවාදායකයෙහි", "interaction_modal.on_this_server": "මෙම සේවාදායකයෙහි",
"interaction_modal.title.favourite": "{name}ගේ ලිපිය ප්‍රිය කරන්න", "interaction_modal.title.favourite": "{name}ගේ ලිපිය ප්‍රිය කරන්න",
"interaction_modal.title.follow": "{name} අනුගමනය", "interaction_modal.title.follow": "{name} අනුගමනය",

View file

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

View file

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

View file

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

View file

@ -1381,6 +1381,8 @@ body > [data-popper-placement] {
min-height: 54px; min-height: 54px;
border-bottom: 1px solid var(--background-border-color); border-bottom: 1px solid var(--background-border-color);
cursor: auto; cursor: auto;
opacity: 1;
animation: fade 150ms linear;
@keyframes fade { @keyframes fade {
0% { 0% {
@ -1392,9 +1394,6 @@ body > [data-popper-placement] {
} }
} }
opacity: 1;
animation: fade 150ms linear;
.media-gallery, .media-gallery,
.video-player, .video-player,
.audio-player, .audio-player,
@ -5008,8 +5007,10 @@ a.status-card {
&__menu { &__menu {
@include search-popout; @include search-popout;
padding: 0; & {
background: $ui-secondary-color; padding: 0;
background: $ui-secondary-color;
}
} }
&__menu-list { &__menu-list {
@ -10622,8 +10623,7 @@ noscript {
.filtered-notifications-banner { .filtered-notifications-banner {
display: flex; display: flex;
align-items: center; align-items: center;
border: 1px solid var(--background-border-color); border-bottom: 1px solid var(--background-border-color);
border-top: 0;
padding: 24px 32px; padding: 24px 32px;
gap: 16px; gap: 16px;
color: $darker-text-color; color: $darker-text-color;
@ -10884,7 +10884,7 @@ noscript {
gap: 4px; gap: 4px;
dt { dt {
flex: 0 0 auto; flex: 0 1 auto;
color: $dark-text-color; color: $dark-text-color;
min-width: 0; min-width: 0;
overflow: hidden; overflow: hidden;

View file

@ -62,7 +62,8 @@ class LinkDetailsExtractor
end end
def author_name def author_name
author['name'] name = author['name']
name.is_a?(Array) ? name.join(', ') : name
end end
def author_url def author_url
@ -156,11 +157,11 @@ class LinkDetailsExtractor
end end
def title def title
html_entities.decode(structured_data&.headline || opengraph_tag('og:title') || document.xpath('//title').map(&:content).first).strip html_entities_decode(structured_data&.headline || opengraph_tag('og:title') || document.xpath('//title').map(&:content).first)&.strip
end end
def description def description
html_entities.decode(structured_data&.description || opengraph_tag('og:description') || meta_tag('description')) html_entities_decode(structured_data&.description || opengraph_tag('og:description') || meta_tag('description'))
end end
def published_at def published_at
@ -180,7 +181,7 @@ class LinkDetailsExtractor
end end
def provider_name def provider_name
html_entities.decode(structured_data&.publisher_name || opengraph_tag('og:site_name')) html_entities_decode(structured_data&.publisher_name || opengraph_tag('og:site_name'))
end end
def provider_url def provider_url
@ -188,7 +189,7 @@ class LinkDetailsExtractor
end end
def author_name def author_name
html_entities.decode(structured_data&.author_name || opengraph_tag('og:author') || opengraph_tag('og:author:username')) html_entities_decode(structured_data&.author_name || opengraph_tag('og:author') || opengraph_tag('og:author:username'))
end end
def author_url def author_url
@ -257,7 +258,7 @@ class LinkDetailsExtractor
next if json_ld.blank? next if json_ld.blank?
structured_data = StructuredData.new(html_entities.decode(json_ld)) structured_data = StructuredData.new(html_entities_decode(json_ld))
next unless structured_data.valid? next unless structured_data.valid?
@ -273,10 +274,11 @@ class LinkDetailsExtractor
end end
def detect_encoding_and_parse_document def detect_encoding_and_parse_document
[detect_encoding, nil, @html_charset, 'UTF-8'].uniq.each do |encoding| [detect_encoding, nil, header_encoding].uniq.each do |encoding|
document = Nokogiri::HTML(@html, nil, encoding) document = Nokogiri::HTML(@html, nil, encoding)
return document if document.to_s.valid_encoding? return document if document.to_s.valid_encoding?
end end
Nokogiri::HTML(@html, nil, 'UTF-8')
end end
def detect_encoding def detect_encoding
@ -284,12 +286,28 @@ class LinkDetailsExtractor
guess&.fetch(:confidence, 0).to_i > 60 ? guess&.fetch(:encoding, nil) : nil guess&.fetch(:confidence, 0).to_i > 60 ? guess&.fetch(:encoding, nil) : nil
end 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 def detector
@detector ||= CharlockHolmes::EncodingDetector.new.tap do |detector| @detector ||= CharlockHolmes::EncodingDetector.new.tap do |detector|
detector.strip_tags = true detector.strip_tags = true
end end
end end
def html_entities_decode(string)
return if string.nil?
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)
end
def html_entities def html_entities
@html_entities ||= HTMLEntities.new(:expanded) @html_entities ||= HTMLEntities.new(:expanded)
end end

View file

@ -175,10 +175,6 @@ module User::HasSettings
settings['web.display_media'] settings['web.display_media']
end end
def setting_display_media_expand
settings['web.display_media_expand']
end
def setting_expand_spoilers def setting_expand_spoilers
settings['web.expand_content_warnings'] settings['web.expand_content_warnings']
end end
@ -215,6 +211,10 @@ module User::HasSettings
settings['web.disable_swiping'] settings['web.disable_swiping']
end end
def setting_disable_hover_cards
settings['web.disable_hover_cards']
end
def setting_always_send_emails def setting_always_send_emails
settings['always_send_emails'] settings['always_send_emails']
end end

View file

@ -31,6 +31,6 @@ class NotificationPolicy < ApplicationRecord
private private
def pending_notification_requests 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
end end

View file

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

View file

@ -46,6 +46,11 @@ class PreviewCard < ApplicationRecord
y_comp: 4, y_comp: 4,
}.freeze }.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 self.inheritance_column = false
enum :type, { link: 0, photo: 1, video: 2, rich: 3 } 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' }, convert_options: { all: '-quality 90 +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' },
validate_media_type: false 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_content_type :image, content_type: IMAGE_MIME_TYPES
validates_attachment_size :image, less_than: LIMIT validates_attachment_size :image, less_than: LIMIT
remotable_attachment :image, LIMIT remotable_attachment :image, LIMIT

View file

@ -364,7 +364,7 @@ class Status < ApplicationRecord
else else
map = media_attachments.index_by(&:id) map = media_attachments.index_by(&:id)
ordered_media_attachment_ids.filter_map { |media_attachment_id| map[media_attachment_id] } ordered_media_attachment_ids.filter_map { |media_attachment_id| map[media_attachment_id] }
end end.take(media_attachments_max)
end end
def replies_count def replies_count
@ -610,6 +610,10 @@ class Status < ApplicationRecord
private private
def media_attachments_max
local? ? MEDIA_ATTACHMENTS_LIMIT : MEDIA_ATTACHMENTS_LIMIT_FROM_REMOTE
end
def update_status_stat!(attrs) def update_status_stat!(attrs)
return if marked_for_destruction? || destroyed? return if marked_for_destruction? || destroyed?

View file

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

View file

@ -58,6 +58,7 @@ class UserSettings
setting :use_system_font, default: false setting :use_system_font, default: false
setting :bookmark_category_needed, default: false setting :bookmark_category_needed, default: false
setting :disable_swiping, default: false setting :disable_swiping, default: false
setting :disable_hover_cards, default: false
setting :delete_modal, default: true setting :delete_modal, default: true
setting :enable_dtl_menu, default: false setting :enable_dtl_menu, default: false
setting :hide_recent_emojis, default: false setting :hide_recent_emojis, default: false
@ -67,7 +68,6 @@ class UserSettings
setting :reduce_motion, default: false setting :reduce_motion, default: false
setting :expand_content_warnings, default: false setting :expand_content_warnings, default: false
setting :display_media, default: 'default', in: %w(default show_all hide_all) setting :display_media, default: 'default', in: %w(default show_all hide_all)
setting :display_media_expand, default: true
setting :auto_play, default: true setting :auto_play, default: true
setting :simple_timeline_menu, default: false setting :simple_timeline_menu, default: false
setting :boost_menu, default: false setting :boost_menu, default: false

View file

@ -23,12 +23,12 @@ class InitialStateSerializer < ActiveModel::Serializer
store[:delete_modal] = object_account_user.setting_delete_modal store[:delete_modal] = object_account_user.setting_delete_modal
store[:auto_play_gif] = object_account_user.setting_auto_play_gif store[:auto_play_gif] = object_account_user.setting_auto_play_gif
store[:display_media] = object_account_user.setting_display_media store[:display_media] = object_account_user.setting_display_media
store[:display_media_expand] = object_account_user.setting_display_media_expand
store[:expand_spoilers] = object_account_user.setting_expand_spoilers store[:expand_spoilers] = object_account_user.setting_expand_spoilers
store[:enable_emoji_reaction] = object_account_user.setting_enable_emoji_reaction && Setting.enable_emoji_reaction store[:enable_emoji_reaction] = object_account_user.setting_enable_emoji_reaction && Setting.enable_emoji_reaction
store[:enable_dtl_menu] = object_account_user.setting_enable_dtl_menu store[:enable_dtl_menu] = object_account_user.setting_enable_dtl_menu
store[:reduce_motion] = object_account_user.setting_reduce_motion store[:reduce_motion] = object_account_user.setting_reduce_motion
store[:disable_swiping] = object_account_user.setting_disable_swiping 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[:advanced_layout] = object_account_user.setting_advanced_layout
store[:use_blurhash] = object_account_user.setting_use_blurhash store[:use_blurhash] = object_account_user.setting_use_blurhash
store[:use_pending_items] = object_account_user.setting_use_pending_items store[:use_pending_items] = object_account_user.setting_use_pending_items

View file

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

View file

@ -16,9 +16,6 @@ class FetchLinkCardService < BaseService
) )
}iox }iox
# URL size limit to safely store in PosgreSQL's unique indexes
BYTESIZE_LIMIT = 2692
def call(status) def call(status)
@status = status @status = status
@original_url = parse_urls @original_url = parse_urls
@ -33,7 +30,7 @@ class FetchLinkCardService < BaseService
end end
attach_card if @card&.persisted? attach_card if @card&.persisted?
rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Encoding::UndefinedConversionError => 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}" } Rails.logger.debug { "Error fetching link #{@original_url}: #{e}" }
nil nil
end end
@ -109,7 +106,7 @@ class FetchLinkCardService < BaseService
def bad_url?(uri) def bad_url?(uri)
# Avoid local instance URLs and invalid URLs # 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) ||
referenced_urls.include?(uri.to_s) || Setting.stop_link_preview_domains&.include?(uri.host) referenced_urls.include?(uri.to_s) || Setting.stop_link_preview_domains&.include?(uri.host)
end end

View file

@ -57,6 +57,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.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.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_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') = ff.input :'web.use_system_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_font_ui')
%h4= t 'appearance.custom_emoji_and_emoji_reactions' %h4= t 'appearance.custom_emoji_and_emoji_reactions'
@ -101,15 +102,6 @@
= ff.input :'web.trends', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_trends') = ff.input :'web.trends', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_trends')
= ff.input :'web.show_relationships', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_show_relationships') = ff.input :'web.show_relationships', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_show_relationships')
%h4= t 'appearance.media'
.fields-group
= ff.input :'web.display_media_expand',
kmyblue: true,
hint: I18n.t('simple_form.hints.defaults.setting_display_media_expand'),
label: I18n.t('simple_form.labels.defaults.setting_display_media_expand'),
wrapper: :with_label
%h4= t 'appearance.confirmation_dialogs' %h4= t 'appearance.confirmation_dialogs'
.fields-group .fields-group

View file

@ -5,6 +5,23 @@ require_relative '../../lib/mastodon/sidekiq_middleware'
Sidekiq.configure_server do |config| Sidekiq.configure_server do |config|
config.redis = REDIS_SIDEKIQ_PARAMS 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| config.server_middleware do |chain|
chain.add Mastodon::SidekiqMiddleware chain.add Mastodon::SidekiqMiddleware
end end

View file

@ -5,7 +5,7 @@ Rails.application.configure do
# You should only generate this once per instance. If you later decide to change it, all push subscription will # You should only generate this once per instance. If you later decide to change it, all push subscription will
# be invalidated, requiring the users to access the website again to resubscribe. # be invalidated, requiring the users to access the website again to resubscribe.
# #
# Generate with `rake mastodon:webpush:generate_vapid_key` task (`docker-compose run --rm web rake mastodon:webpush:generate_vapid_key` if you use docker compose) # Generate with `bundle exec rails mastodon:webpush:generate_vapid_key` task (`docker-compose run --rm web bundle exec rails mastodon:webpush:generate_vapid_key` if you use docker compose)
# #
# For more information visit https://rossta.net/blog/using-the-web-push-api-with-vapid.html # For more information visit https://rossta.net/blog/using-the-web-push-api-with-vapid.html

View file

@ -21,6 +21,18 @@ kab:
username: username:
invalid: ilaq ad ilin isekkilen, uṭṭunen d yijerriden n wadda kan invalid: ilaq ad ilin isekkilen, uṭṭunen d yijerriden n wadda kan
reserved: yettwaṭṭef 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: status:
attributes: attributes:
reblog: reblog:
@ -28,4 +40,20 @@ kab:
user: user:
attributes: attributes:
email: email:
blocked: isseqdac asaǧǧaw n yimayl ur yettusirgen ara
unreachable: ur d-ttban ara d akken yella 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: مفاتيح الأمان webauthn_authentication: مفاتيح الأمان
severed_relationships: severed_relationships:
download: تنزيل (%{count}) download: تنزيل (%{count})
lost_followers: المتابعون المفقودون
lost_follows: المتابعات المفقودة
preamble: بحجبكم اسم نطاق قد تخسرون متابَعاتٍ، و كذلك إذا قرّر مديرو الخادوم حظر خادوم ما. و في هذه الحالات يكون بوسعكم تنزيل قائمة بالصلات المبتورة لمعاينتها، مع القدرة على استيرادها إلى خادوم آخر.
purged: حذف مدير خادومكم المعلومات عن هذا الخادوم.
statuses: statuses:
attached: attached:
audio: audio:
@ -1978,6 +1982,7 @@ ar:
edit_profile_title: قم بتخصيص ملفك التعريفي edit_profile_title: قم بتخصيص ملفك التعريفي
explanation: ها هي بعض النصائح قبل بداية الاستخدام explanation: ها هي بعض النصائح قبل بداية الاستخدام
feature_action: اعرف المزيد feature_action: اعرف المزيد
feature_audience: يتيح لكم مًستُدون إدارة جمهوركم بلا وسطاء. فبتنصيب و تشغيل مَستُودون على بنيتكم التحتية تمكنكم متابعة مستخدمي مَستُدون من أيّ خادوم،كما يمكنهم متابعتكم، بلا تحكُّم من أي طرف ثالث.
feature_audience_title: اِبنوا جُمهورَكم بِثِقَة feature_audience_title: اِبنوا جُمهورَكم بِثِقَة
feature_control: أنتم الأدرى بالمحتوى الذي تريدون أن تطالعوه في فيض المنشورات الرئيس. لا خوارزميات تتحكم فيما يظهر لكم ولا إعلانات تضيع وقتكم. بحساب واحد تمكنكم متابعة من تشاؤون على أيّ خادوم ماستدون، وتلقّى منشوراتهم بترتيبها الزمني، لتصنعوا ركنكم الأليف في الإنترنت. feature_control: أنتم الأدرى بالمحتوى الذي تريدون أن تطالعوه في فيض المنشورات الرئيس. لا خوارزميات تتحكم فيما يظهر لكم ولا إعلانات تضيع وقتكم. بحساب واحد تمكنكم متابعة من تشاؤون على أيّ خادوم ماستدون، وتلقّى منشوراتهم بترتيبها الزمني، لتصنعوا ركنكم الأليف في الإنترنت.
feature_control_title: تحكَّموا في فيض المنشورات الخاص بكم feature_control_title: تحكَّموا في فيض المنشورات الخاص بكم

View file

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

View file

@ -12,6 +12,7 @@ kab:
last_attempt: Γur-k yiwen n uɛraḍ-nniḍen kan send ad yettucekkel umiḍan-ik. last_attempt: Γur-k yiwen n uɛraḍ-nniḍen kan send ad yettucekkel umiḍan-ik.
locked: Amiḍan-ik yettwargel. locked: Amiḍan-ik yettwargel.
not_found_in_database: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir. 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. 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ḍ. 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ḍ. unauthenticated: Ilaq ad teqqneḍ neɣ ad tjerrḍeḍ akken ad tkemmelḍ.
@ -47,21 +48,41 @@ kab:
subject: 'Mastodon: Iwellihen n uwennez n wawal uffir' subject: 'Mastodon: Iwellihen n uwennez n wawal uffir'
title: Aɛiwed n wawal uffir title: Aɛiwed n wawal uffir
two_factor_disabled: 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' 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 title: Asesteb s snat n tarrayin insa
two_factor_enabled: two_factor_enabled:
explanation: Ajuṭu yettusirwen s usnas TOTP yeqqnen ilaq i wakken ad teqqneḍ.
subject: 'Mastodon: Asesteb s snat n tarrayin yermed' 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 title: Asesteb s snat n tarrayin irmed
two_factor_recovery_codes_changed: two_factor_recovery_codes_changed:
explanation: Tangalt n tuɣalin tettwaḥbes sakin nesnulfa-d yiwet d tamaynut. 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' 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 title: Tangalt n tuɣalin 2FA tettwabeddel
unlock_instructions: unlock_instructions:
subject: 'Mastodon: iwelihhen n userreḥ' subject: 'Mastodon: iwelihhen n userreḥ'
webauthn_credential: webauthn_credential:
added: added:
explanation: Tasarut-a n tɣellist tettwarna ɣer umiḍan-ik·im
subject: 'Maṣṭudun : Tasarutt tamaynutt n tɣellist' subject: 'Maṣṭudun : Tasarutt tamaynutt n tɣellist'
title: Tasarut tamaynutt n tɣellist tamaynut tettwarna 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: omniauth_callbacks:
failure: Ur nezmir ara ad ak·akem-nsesṭeb seg %{kind} acku "%{reason}". failure: Ur nezmir ara ad ak·akem-nsesṭeb seg %{kind} acku "%{reason}".
success: Asesṭeb idda akken iwata seg umiḍan %{kind}. success: Asesṭeb idda akken iwata seg umiḍan %{kind}.

View file

@ -75,7 +75,7 @@ nl:
title: Een van jouw beveiligingssleutels is verwijderd title: Een van jouw beveiligingssleutels is verwijderd
webauthn_disabled: webauthn_disabled:
explanation: Verificatie met beveiligingssleutels is uitgeschakeld voor je account. 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' subject: 'Mastodon: Verificatie met beveiligingssleutels is uitgeschakeld'
title: Beveiligingssleutels uitgeschakeld title: Beveiligingssleutels uitgeschakeld
webauthn_enabled: webauthn_enabled:

View file

@ -5,6 +5,7 @@ kab:
doorkeeper/application: doorkeeper/application:
name: Isem n usnas name: Isem n usnas
redirect_uri: URI n uwelleh redirect_uri: URI n uwelleh
scopes: Tinerfadin
website: Asmel web n usnas website: Asmel web n usnas
errors: errors:
models: models:
@ -39,6 +40,7 @@ kab:
empty: Ulac ɣur-k·m isnasen. empty: Ulac ɣur-k·m isnasen.
name: Isem name: Isem
new: Asnas amaynut new: Asnas amaynut
scopes: Tinerfadin
show: Ẓer show: Ẓer
title: Isnasen-ik·im title: Isnasen-ik·im
new: new:
@ -47,6 +49,8 @@ kab:
actions: Tigawin actions: Tigawin
application_id: ID n usnas application_id: ID n usnas
callback_urls: URL n tririt n wawal callback_urls: URL n tririt n wawal
scopes: Tinerfadin
secret: Tuffirt n umsaɣ
title: 'Asnas: %{name}' title: 'Asnas: %{name}'
authorizations: authorizations:
buttons: buttons:
@ -55,6 +59,7 @@ kab:
error: error:
title: Tella-d tuccḍa title: Tella-d tuccḍa
new: new:
review_permissions: Asenqed n tsirag
title: Tlaq tsiregt title: Tlaq tsiregt
show: show:
title: Nɣel tangalt n wurag sakkin senteḍ-itt deg usnas. title: Nɣel tangalt n wurag sakkin senteḍ-itt deg usnas.
@ -64,8 +69,12 @@ kab:
confirmations: confirmations:
revoke: Tetḥeqqeḍ? revoke: Tetḥeqqeḍ?
index: 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. 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} last_used_at: Yettwaseqdec i tikkelt taneggarut ass n %{date}
never_used: Urǧin yettwaseqdac
scopes: Tisirag
superapp: Adigan
title: Isnasen-ik·im yettusirgen title: Isnasen-ik·im yettusirgen
errors: errors:
messages: messages:
@ -82,13 +91,28 @@ kab:
destroy: destroy:
notice: Yettwaḥwi wesnas. notice: Yettwaḥwi wesnas.
grouped_scopes: grouped_scopes:
access:
read: Anekcum i tɣuri kan
read/write: Anekcum i tɣuri d tira
write: Anekcum i tira kan
title: title:
accounts: Imiḍanen accounts: Imiḍanen
admin/accounts: Tadbelt n imiḍan 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 crypto: Awgelhen seg yixef ɣer yixef
favourites: Imenyafen
filters: Imzizdigen filters: Imzizdigen
follow: Aḍfar, asgugem akked usewḥel
follows: Aḍfar
lists: Tibdarin lists: Tibdarin
media: Imeddayen n umidya
mutes: Yeggugem
notifications: Tilɣa notifications: Tilɣa
profile: Amaɣnu-k Mastodon
push: Tilɣa yettudemmren push: Tilɣa yettudemmren
reports: Ineqqisen reports: Ineqqisen
search: Nadi search: Nadi

View file

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

View file

@ -25,7 +25,7 @@ lv:
edit: Labot edit: Labot
submit: Apstiprināt submit: Apstiprināt
confirmations: confirmations:
destroy: Vai esi pārliecināts? destroy: Vai tiešām?
edit: edit:
title: Labot lietotni title: Labot lietotni
form: form:
@ -69,7 +69,7 @@ lv:
buttons: buttons:
revoke: Atsaukt revoke: Atsaukt
confirmations: confirmations:
revoke: Vai esi pārliecināts? revoke: Vai tiešām?
index: index:
authorized_at: Autorizētas %{date} 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. 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 media: Multividesu pielikumi
mutes: Apklusinātie mutes: Apklusinātie
notifications: Paziņojumi notifications: Paziņojumi
profile: Tavs Mastodon profils
push: Uznirstošie paziņojumi push: Uznirstošie paziņojumi
reports: Ziņojumi reports: Ziņojumi
search: Meklēt search: Meklēt
@ -165,6 +166,7 @@ lv:
admin:write:reports: veikt moderācijas darbības pārskatos admin:write:reports: veikt moderācijas darbības pārskatos
crypto: lieto pilnīgu šifrēšanu crypto: lieto pilnīgu šifrēšanu
follow: mainīt konta attiecības follow: mainīt konta attiecības
profile: lasīt tikai Tava konta profila informāciju
push: saņemt savus push paziņojumus push: saņemt savus push paziņojumus
read: lasīt visus sava konta datus read: lasīt visus sava konta datus
read:accounts: apskatīt kontu informāciju read:accounts: apskatīt kontu informāciju

View file

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

View file

@ -1348,7 +1348,6 @@ en:
body: Mastodon is translated by volunteers. body: Mastodon is translated by volunteers.
guide_link: https://crowdin.com/project/mastodon guide_link: https://crowdin.com/project/mastodon
guide_link_text: Everyone can contribute. guide_link_text: Everyone can contribute.
media: Media
quotes: Quotes quotes: Quotes
remote_server_features: Other server features remote_server_features: Other server features
saved_posts: Saving posts saved_posts: Saving posts

View file

@ -31,18 +31,18 @@ gl:
created_msg: Nota de moderación creada correctamente! created_msg: Nota de moderación creada correctamente!
destroyed_msg: Nota de moderación eliminada de xeito correcto! destroyed_msg: Nota de moderación eliminada de xeito correcto!
accounts: accounts:
add_email_domain_block: Bloquear o dominio do email add_email_domain_block: Bloquear o dominio do enderezo
approve: Aprobar approve: Aprobar
approved_msg: Aprobada a solicitude de rexistro de %{username} approved_msg: Aprobada a solicitude de rexistro de %{username}
are_you_sure: Está segura? are_you_sure: Está segura?
avatar: Imaxe de perfil avatar: Imaxe de perfil
by_domain: Dominio by_domain: Dominio
change_email: change_email:
changed_msg: Email mudado de xeito correcto! changed_msg: Correo cambiado de xeito correcto!
current_email: Email actual current_email: Enderezo actual
label: Mudar email label: Cambiar de enderezo
new_email: Novo email new_email: Novo enderezo
submit: Mudar email submit: Cambiar de enderezo
title: Mudar email de %{username} title: Mudar email de %{username}
change_role: change_role:
changed_msg: Rol mudado correctamente! changed_msg: Rol mudado correctamente!
@ -64,10 +64,10 @@ gl:
display_name: Nome a amosar display_name: Nome a amosar
domain: Dominio domain: Dominio
edit: Editar edit: Editar
email: Email email: Enderezo de correo
email_status: Estado do email email_status: Estado do correo
enable: Activar enable: Activar
enable_sign_in_token_auth: Activar autenticación cun token no email enable_sign_in_token_auth: Activar autenticación cun token no correo
enabled: Activado enabled: Activado
enabled_msg: Desbloqueada a conta de %{username} enabled_msg: Desbloqueada a conta de %{username}
followers: Seguidoras followers: Seguidoras
@ -132,7 +132,7 @@ gl:
resubscribe: Resubscribir resubscribe: Resubscribir
role: Rol role: Rol
search: Procurar search: Procurar
search_same_email_domain: Outras usuarias co mesmo dominio de email search_same_email_domain: Outras usuarias co mesmo dominio de correo
search_same_ip: Outras usuarias co mesmo IP search_same_ip: Outras usuarias co mesmo IP
security: Seguridade security: Seguridade
security_measures: security_measures:
@ -154,9 +154,9 @@ gl:
suspension_irreversible: Elimináronse de xeito irreversible os datos desta conta. Podes reactivar a conta para facela usable novamente pero non recuperará os datos eliminados. suspension_irreversible: Elimináronse de xeito irreversible os datos desta conta. Podes reactivar a conta para facela usable novamente pero non recuperará os datos eliminados.
suspension_reversible_hint_html: Esta conta foi suspendida, e os datos serán totalmente eliminados o %{date}. Ata entón, a conta pode ser restaurada sen danos. Se desexas eliminar agora mesmo todos os datos da conta, podes facelo aquí embaixo. suspension_reversible_hint_html: Esta conta foi suspendida, e os datos serán totalmente eliminados o %{date}. Ata entón, a conta pode ser restaurada sen danos. Se desexas eliminar agora mesmo todos os datos da conta, podes facelo aquí embaixo.
title: Contas title: Contas
unblock_email: Desbloquear enderezo de email unblock_email: Desbloquear enderezo de correo
unblocked_email_msg: Enderezo de email de %{username} desbloqueado unblocked_email_msg: Enderezo de correo de %{username} desbloqueado
unconfirmed_email: Email non confirmado unconfirmed_email: Enderezo de correo sen confirmar
undo_sensitized: Desmarcar como sensible undo_sensitized: Desmarcar como sensible
undo_silenced: Desfacer acalar undo_silenced: Desfacer acalar
undo_suspension: Desfacer suspensión undo_suspension: Desfacer suspensión
@ -173,12 +173,12 @@ gl:
approve_appeal: Aprobar apelación approve_appeal: Aprobar apelación
approve_user: Aprobar Usuaria approve_user: Aprobar Usuaria
assigned_to_self_report: Asignar denuncia assigned_to_self_report: Asignar denuncia
change_email_user: Editar email da usuaria change_email_user: Editar correo electrónico da usuaria
change_role_user: Cambiar Rol da Usuaria change_role_user: Cambiar Rol da Usuaria
confirm_user: Confirmar usuaria confirm_user: Confirmar usuaria
create_account_warning: Crear aviso create_account_warning: Crear aviso
create_announcement: Crear anuncio create_announcement: Crear anuncio
create_canonical_email_block: Crear Bloqueo de email create_canonical_email_block: Crear Bloqueo de correo electrónico
create_custom_emoji: Crear emoticonas personalizadas create_custom_emoji: Crear emoticonas personalizadas
create_domain_allow: Crear Dominio Permitido create_domain_allow: Crear Dominio Permitido
create_domain_block: Crear bloquedo do Dominio create_domain_block: Crear bloquedo do Dominio
@ -188,7 +188,7 @@ gl:
create_user_role: Crear Rol create_user_role: Crear Rol
demote_user: Degradar usuaria demote_user: Degradar usuaria
destroy_announcement: Eliminar anuncio destroy_announcement: Eliminar anuncio
destroy_canonical_email_block: Eliminar Bloqueo de email destroy_canonical_email_block: Eliminar Bloqueo de correo electrónico
destroy_custom_emoji: Eliminar emoticona personalizada destroy_custom_emoji: Eliminar emoticona personalizada
destroy_domain_allow: Eliminar Dominio permitido destroy_domain_allow: Eliminar Dominio permitido
destroy_domain_block: Eliminar bloqueo do Dominio destroy_domain_block: Eliminar bloqueo do Dominio
@ -200,7 +200,7 @@ gl:
destroy_user_role: Eliminar Rol destroy_user_role: Eliminar Rol
disable_2fa_user: Desactivar 2FA disable_2fa_user: Desactivar 2FA
disable_custom_emoji: Desactivar emoticona personalizada disable_custom_emoji: Desactivar emoticona personalizada
disable_sign_in_token_auth_user: Desactivar Autenticación por token no email para Usuaria disable_sign_in_token_auth_user: Desactivar Autenticación con token no correo para Usuaria
disable_user: Desactivar usuaria disable_user: Desactivar usuaria
enable_custom_emoji: Activar emoticona personalizada enable_custom_emoji: Activar emoticona personalizada
enable_sign_in_token_auth_user: Activar Autenticación con token no email para Usuaria enable_sign_in_token_auth_user: Activar Autenticación con token no email para Usuaria
@ -211,14 +211,14 @@ gl:
reject_user: Rexeitar Usuaria reject_user: Rexeitar Usuaria
remove_avatar_user: Eliminar avatar remove_avatar_user: Eliminar avatar
reopen_report: Reabrir denuncia reopen_report: Reabrir denuncia
resend_user: Reenviar o email de confirmación resend_user: Reenviar o correo de confirmación
reset_password_user: Restabelecer contrasinal reset_password_user: Restabelecer contrasinal
resolve_report: Resolver denuncia resolve_report: Resolver denuncia
sensitive_account: Marca o multimedia da túa conta como sensible sensitive_account: Marca o multimedia da túa conta como sensible
silence_account: Silenciar conta silence_account: Silenciar conta
suspend_account: Suspender conta suspend_account: Suspender conta
unassigned_report: Desasignar denuncia unassigned_report: Desasignar denuncia
unblock_email_account: Desbloquear enderezo de email unblock_email_account: Desbloquear enderezo de correo
unsensitive_account: Retira a marca de sensible do multimedia da conta unsensitive_account: Retira a marca de sensible do multimedia da conta
unsilence_account: Deixar de silenciar conta unsilence_account: Deixar de silenciar conta
unsuspend_account: Retirar suspensión de conta unsuspend_account: Retirar suspensión de conta
@ -660,7 +660,7 @@ gl:
delete_data_html: Eliminar o perfil e contidos de <strong>@%{acct}</strong> para os próximos 30 días a non ser que sexa suspendida nese período delete_data_html: Eliminar o perfil e contidos de <strong>@%{acct}</strong> para os próximos 30 días a non ser que sexa suspendida nese período
preview_preamble_html: "<strong>@%{acct}</strong> vai recibir un aviso co seguinte contido:" preview_preamble_html: "<strong>@%{acct}</strong> vai recibir un aviso co seguinte contido:"
record_strike_html: Anotar un aviso contra <strong>@%{acct}</strong> para axudarche a xestionar futuros problemas con esta conta record_strike_html: Anotar un aviso contra <strong>@%{acct}</strong> para axudarche a xestionar futuros problemas con esta conta
send_email_html: Enviar un email de aviso a <strong>@%{acct}</strong> send_email_html: Enviar un correo de aviso a <strong>@%{acct}</strong>
warning_placeholder: Razóns adicionais optativas para a acción de moderación. warning_placeholder: Razóns adicionais optativas para a acción de moderación.
target_origin: Orixe da conta denunciada target_origin: Orixe da conta denunciada
title: Denuncias title: Denuncias
@ -1060,7 +1060,7 @@ gl:
redirect_to_app_html: Ímoste redirixir á app <strong>%{app_name}</strong>. Se iso non acontece, proba %{clicking_this_link} ou volve ti manualmente á app. redirect_to_app_html: Ímoste redirixir á app <strong>%{app_name}</strong>. Se iso non acontece, proba %{clicking_this_link} ou volve ti manualmente á app.
registration_complete: Completouse a creación da conta en %{domain}! registration_complete: Completouse a creación da conta en %{domain}!
welcome_title: Benvida, %{name}! welcome_title: Benvida, %{name}!
wrong_email_hint: Se o enderezo de email non é correcto, podes cambialo nos axustes da conta. wrong_email_hint: Se o enderezo de correo non é correcto, podes cambialo nos axustes da conta.
delete_account: Eliminar conta delete_account: Eliminar conta
delete_account_html: Se queres eliminar a túa conta, podes <a href="%{path}">facelo aquí</a>. Deberás confirmar a acción. delete_account_html: Se queres eliminar a túa conta, podes <a href="%{path}">facelo aquí</a>. Deberás confirmar a acción.
description: description:

View file

@ -306,6 +306,7 @@ ja:
filter_by_action: アクションでフィルター filter_by_action: アクションでフィルター
filter_by_user: ユーザーでフィルター filter_by_user: ユーザーでフィルター
title: 操作履歴 title: 操作履歴
unavailable_instance: "(ドメイン名が利用できません)"
announcements: announcements:
destroyed_msg: お知らせが削除されました destroyed_msg: お知らせが削除されました
edit: edit:
@ -1323,7 +1324,6 @@ ja:
body: Mastodonは有志によって翻訳されています。 body: Mastodonは有志によって翻訳されています。
guide_link: https://ja.crowdin.com/project/mastodon guide_link: https://ja.crowdin.com/project/mastodon
guide_link_text: 誰でも参加することができます。 guide_link_text: 誰でも参加することができます。
media: メディア
quotes: 引用 quotes: 引用
remote_server_features: 他のサーバーの機能 remote_server_features: 他のサーバーの機能
saved_posts: 投稿の記録 saved_posts: 投稿の記録

View file

@ -1741,7 +1741,7 @@ ko:
contrast: 마스토돈 (고대비) contrast: 마스토돈 (고대비)
default: 마스토돈 (어두움) default: 마스토돈 (어두움)
mastodon-light: 마스토돈 (밝음) mastodon-light: 마스토돈 (밝음)
system: 자동 선택 (시스템 테마 이용) system: 자동 (시스템 테마 사용)
time: time:
formats: formats:
default: "%Y-%m-%d %H:%M" 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 redownloaded_msg: S-a reîmprospătat cu succes profilul %{username} de la origine
reject: Respinge reject: Respinge
rejected_msg: S-a respins cu succes cererea de înregistrare a utilizatorului %{username} 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_avatar: Elimină avatar
remove_header: Elimină antet remove_header: Elimină antet
removed_avatar_msg: S-a îndepărtat cu succes poza de profil a utilizatorului %{username} removed_avatar_msg: S-a îndepărtat cu succes poza de profil a utilizatorului %{username}

View file

@ -1 +1,21 @@
---
ry: 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_privacy: Privacitat dels tuts
setting_default_sensitive: Marcar sempre el contingut gràfic com a sensible 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_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_disable_swiping: Desactiva les animacions
setting_display_media: Visualització multimèdia setting_display_media: Visualització multimèdia
setting_display_media_default: Per defecte setting_display_media_default: Per defecte

View file

@ -211,6 +211,7 @@ da:
setting_default_privacy: Fortrolighed for indlæg setting_default_privacy: Fortrolighed for indlæg
setting_default_sensitive: Markér altid medier som sensitive setting_default_sensitive: Markér altid medier som sensitive
setting_delete_modal: Vis bekræftelsesdialog før et indlæg slettes 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_disable_swiping: Deaktivér strygebevægelser
setting_display_media: Medievisning setting_display_media: Medievisning
setting_display_media_default: Standard setting_display_media_default: Standard

View file

@ -211,6 +211,7 @@ de:
setting_default_privacy: Beitragssichtbarkeit setting_default_privacy: Beitragssichtbarkeit
setting_default_sensitive: Medien immer mit einer Inhaltswarnung versehen setting_default_sensitive: Medien immer mit einer Inhaltswarnung versehen
setting_delete_modal: Bestätigungsdialog beim Löschen eines Beitrags anzeigen 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_disable_swiping: Wischgesten deaktivieren
setting_display_media: Darstellung von Medien setting_display_media: Darstellung von Medien
setting_display_media_default: Standard setting_display_media_default: Standard

View file

@ -66,7 +66,6 @@ en:
setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
setting_disallow_unlisted_public_searchability: この設定を有効にすると、非収載投稿と検索範囲「誰でも」は両立できず不特定多数からの検索が不可になります。Fedibirdと同じ挙動になります setting_disallow_unlisted_public_searchability: この設定を有効にすると、非収載投稿と検索範囲「誰でも」は両立できず不特定多数からの検索が不可になります。Fedibirdと同じ挙動になります
setting_display_media_default: Hide media marked as sensitive setting_display_media_default: Hide media marked as sensitive
setting_display_media_expand: Misskey and others can submit more than 4. The additions will be displayed up to 16. kmyblue will not allow uploading from kmyblue.
setting_display_media_hide_all: Always hide media setting_display_media_hide_all: Always hide media
setting_display_media_show_all: Always show media setting_display_media_show_all: Always show media
setting_dtl_force_searchability: 'With using #%{tag} tag, your post settings will be changed forcibly' setting_dtl_force_searchability: 'With using #%{tag} tag, your post settings will be changed forcibly'
@ -271,11 +270,11 @@ en:
setting_default_searchability_of_search: Your search setting setting_default_searchability_of_search: Your search setting
setting_default_sensitive: Always mark media as sensitive setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a post 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_disable_swiping: Disable swiping motions
setting_disallow_unlisted_public_searchability: Disallow everyone or local searchability when unlisted visibility setting_disallow_unlisted_public_searchability: Disallow everyone or local searchability when unlisted visibility
setting_display_media: Media display setting_display_media: Media display
setting_display_media_default: Default setting_display_media_default: Default
setting_display_media_expand: Show more medias
setting_display_media_hide_all: Hide all setting_display_media_hide_all: Hide all
setting_display_media_show_all: Show all setting_display_media_show_all: Show all
setting_dtl_force_searchability: Post searchability setting_dtl_force_searchability: Post searchability
@ -366,6 +365,7 @@ en:
exclude_quote: Exclude quote or references exclude_quote: Exclude quote or references
form_admin_settings: form_admin_settings:
activity_api_enabled: Publish aggregate statistics about user activity in the API activity_api_enabled: Publish aggregate statistics about user activity in the API
app_icon: App icon
backups_retention_period: User archive retention period backups_retention_period: User archive retention period
bootstrap_timeline_accounts: Always recommend these accounts to new users bootstrap_timeline_accounts: Always recommend these accounts to new users
check_lts_version_only: Check kmyblue LTS version only when update check check_lts_version_only: Check kmyblue LTS version only when update check
@ -377,6 +377,7 @@ en:
enable_local_timeline: Enable local timeline enable_local_timeline: Enable local timeline
enable_public_unlisted_visibility: Enable public-unlisted visibility / public-unlisted searchability enable_public_unlisted_visibility: Enable public-unlisted visibility / public-unlisted searchability
enable_public_visibility: Enable public visibility enable_public_visibility: Enable public visibility
favicon: Favicon
mascot: Custom mascot (legacy) mascot: Custom mascot (legacy)
media_cache_retention_period: Media cache retention period media_cache_retention_period: Media cache retention period
peers_api_enabled: Publish list of discovered servers in the API 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_privacy: Privateco de afiŝado
setting_default_sensitive: Ĉiam marki plurmediojn kiel tiklaj setting_default_sensitive: Ĉiam marki plurmediojn kiel tiklaj
setting_delete_modal: Montri konfirman fenestron antaŭ ol forigi mesaĝon 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_disable_swiping: Malebligi svingajn movojn
setting_display_media: Montrado de plurmedioj setting_display_media: Montrado de plurmedioj
setting_display_media_default: Implicita setting_display_media_default: Implicita

View file

@ -211,6 +211,7 @@ es-AR:
setting_default_privacy: Privacidad de mensajes setting_default_privacy: Privacidad de mensajes
setting_default_sensitive: Siempre marcar medios como sensibles setting_default_sensitive: Siempre marcar medios como sensibles
setting_delete_modal: Mostrar diálogo de confirmación antes de eliminar un mensaje 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_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización de medios setting_display_media: Visualización de medios
setting_display_media_default: Predeterminada setting_display_media_default: Predeterminada

View file

@ -211,6 +211,7 @@ es-MX:
setting_default_privacy: Privacidad de publicaciones setting_default_privacy: Privacidad de publicaciones
setting_default_sensitive: Marcar siempre imágenes como sensibles setting_default_sensitive: Marcar siempre imágenes como sensibles
setting_delete_modal: Mostrar diálogo de confirmación antes de borrar un toot 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_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización multimedia setting_display_media: Visualización multimedia
setting_display_media_default: Por defecto setting_display_media_default: Por defecto

View file

@ -211,6 +211,7 @@ es:
setting_default_privacy: Privacidad de publicaciones setting_default_privacy: Privacidad de publicaciones
setting_default_sensitive: Marcar siempre imágenes como sensibles 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_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_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización multimedia setting_display_media: Visualización multimedia
setting_display_media_default: Por defecto setting_display_media_default: Por defecto

View file

@ -211,6 +211,7 @@ fi:
setting_default_privacy: Julkaisun näkyvyys setting_default_privacy: Julkaisun näkyvyys
setting_default_sensitive: Merkitse media aina arkaluonteiseksi setting_default_sensitive: Merkitse media aina arkaluonteiseksi
setting_delete_modal: Kysy vahvistusta ennen julkaisun poistamista 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_disable_swiping: Poista pyyhkäisyeleet käytöstä
setting_display_media: Median näyttäminen setting_display_media: Median näyttäminen
setting_display_media_default: Oletus setting_display_media_default: Oletus

View file

@ -211,6 +211,7 @@ fo:
setting_default_privacy: Hvussu privatir eru postar? setting_default_privacy: Hvussu privatir eru postar?
setting_default_sensitive: Merk altíð miðlafílur sum viðkvæmar 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_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_disable_swiping: Ger sveipurørslur óvirknar
setting_display_media: Vístir miðlar setting_display_media: Vístir miðlar
setting_display_media_default: Sjálvvirði setting_display_media_default: Sjálvvirði

View file

@ -211,6 +211,7 @@ gl:
setting_default_privacy: Privacidade da publicación setting_default_privacy: Privacidade da publicación
setting_default_sensitive: Marcar sempre multimedia como sensible setting_default_sensitive: Marcar sempre multimedia como sensible
setting_delete_modal: Solicitar confirmación antes de eliminar unha publicación 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_disable_swiping: Desactivar opcións de desprazamento
setting_display_media: Mostrar multimedia setting_display_media: Mostrar multimedia
setting_display_media_default: Por defecto setting_display_media_default: Por defecto
@ -255,7 +256,7 @@ gl:
require_invite_text: Pedir unha razón para unirse require_invite_text: Pedir unha razón para unirse
show_domain_blocks: Amosar dominios bloqueados show_domain_blocks: Amosar dominios bloqueados
show_domain_blocks_rationale: Explicar porque están bloqueados os dominios show_domain_blocks_rationale: Explicar porque están bloqueados os dominios
site_contact_email: Email de contacto site_contact_email: Correo de contacto
site_contact_username: Nome do contacto site_contact_username: Nome do contacto
site_extended_description: Descrición ampla site_extended_description: Descrición ampla
site_short_description: Descrición do servidor site_short_description: Descrición do servidor

View file

@ -211,6 +211,7 @@ he:
setting_default_privacy: פרטיות ההודעות setting_default_privacy: פרטיות ההודעות
setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה
setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ
setting_disable_hover_cards: כבה הצצה מקדימה לפרופיל בעת מעבר עכבר מעליו
setting_disable_swiping: ביטול החלקת-צד setting_disable_swiping: ביטול החלקת-צד
setting_display_media: תצוגת מדיה setting_display_media: תצוגת מדיה
setting_display_media_default: ברירת מחדל setting_display_media_default: ברירת מחדל

View file

@ -211,6 +211,7 @@ is:
setting_default_privacy: Gagnaleynd færslna setting_default_privacy: Gagnaleynd færslna
setting_default_sensitive: Alltaf merkja myndefni sem viðkvæmt setting_default_sensitive: Alltaf merkja myndefni sem viðkvæmt
setting_delete_modal: Birta staðfestingarglugga áður en færslu er eytt 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_disable_swiping: Gera strokuhreyfingar óvirkar
setting_display_media: Birting myndefnis setting_display_media: Birting myndefnis
setting_display_media_default: Sjálfgefið setting_display_media_default: Sjálfgefið

View file

@ -211,6 +211,7 @@ it:
setting_default_privacy: Privacy dei post setting_default_privacy: Privacy dei post
setting_default_sensitive: Segna sempre i media come sensibili setting_default_sensitive: Segna sempre i media come sensibili
setting_delete_modal: Mostra dialogo di conferma prima di eliminare un post 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_disable_swiping: Disabilita i movimenti di scorrimento
setting_display_media: Visualizzazione dei media setting_display_media: Visualizzazione dei media
setting_display_media_default: Predefinita setting_display_media_default: Predefinita

View file

@ -66,7 +66,6 @@ ja:
setting_default_sensitive: 閲覧注意状態のメディアはデフォルトでは内容が伏せられ、クリックして初めて閲覧できるようになります setting_default_sensitive: 閲覧注意状態のメディアはデフォルトでは内容が伏せられ、クリックして初めて閲覧できるようになります
setting_disallow_unlisted_public_searchability: この設定を有効にすると、非収載投稿と検索範囲「誰でも」は両立できず不特定多数からの検索が不可になります。Fedibirdと同じ挙動になります setting_disallow_unlisted_public_searchability: この設定を有効にすると、非収載投稿と検索範囲「誰でも」は両立できず不特定多数からの検索が不可になります。Fedibirdと同じ挙動になります
setting_display_media_default: 閲覧注意としてマークされたメディアは隠す setting_display_media_default: 閲覧注意としてマークされたメディアは隠す
setting_display_media_expand: Misskeyなどは4個を超えて投稿可能です。その追加分を最大16個まで表示します。kmyblueからアップロードはできません
setting_display_media_hide_all: メディアを常に隠す setting_display_media_hide_all: メディアを常に隠す
setting_display_media_show_all: メディアを常に表示する setting_display_media_show_all: メディアを常に表示する
setting_dtl_force_searchability: 'ハッシュタグ #%{tag} をつけて投稿するとき、検索許可を強制的に置き換えるかを設定します' setting_dtl_force_searchability: 'ハッシュタグ #%{tag} をつけて投稿するとき、検索許可を強制的に置き換えるかを設定します'
@ -267,11 +266,11 @@ ja:
setting_default_searchability_of_search: 自分が検索するときの検索許可設定 setting_default_searchability_of_search: 自分が検索するときの検索許可設定
setting_default_sensitive: メディアを常に閲覧注意としてマークする setting_default_sensitive: メディアを常に閲覧注意としてマークする
setting_delete_modal: 投稿を削除する前に確認ダイアログを表示する setting_delete_modal: 投稿を削除する前に確認ダイアログを表示する
setting_disable_hover_cards: マウスオーバーでプロフィールをポップアップしない
setting_disable_swiping: スワイプでの切り替えを無効にする setting_disable_swiping: スワイプでの切り替えを無効にする
setting_disallow_unlisted_public_searchability: 非収載投稿の検索許可が「誰でも」「ローカルとフォロワー」だった場合、「フォロワーのみ」に変更する setting_disallow_unlisted_public_searchability: 非収載投稿の検索許可が「誰でも」「ローカルとフォロワー」だった場合、「フォロワーのみ」に変更する
setting_display_media: メディアの表示 setting_display_media: メディアの表示
setting_display_media_default: 標準 setting_display_media_default: 標準
setting_display_media_expand: 5個目以降のメディアも表示する (最大16)
setting_display_media_hide_all: 非表示 setting_display_media_hide_all: 非表示
setting_display_media_show_all: 表示 setting_display_media_show_all: 表示
setting_dtl_force_searchability: DTL投稿の検索許可 setting_dtl_force_searchability: DTL投稿の検索許可

View file

@ -5,6 +5,7 @@ kab:
account: account:
display_name: Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer. display_name: Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer.
fields: Asebter-ik·im agejdan, imqimen, leεmer, ayen tebɣiḍ. fields: Asebter-ik·im agejdan, imqimen, leεmer, ayen tebɣiḍ.
note: 'Tzemreḍ ad d-@tbedreḍ imdanen niḍen neɣ #ihacṭagen.'
account_alias: account_alias:
acct: Sekcem isem n umseqdac@domain n umiḍan s wansa itebγiḍ ad gujjeḍ acct: Sekcem isem n umseqdac@domain n umiḍan s wansa itebγiḍ ad gujjeḍ
account_migration: account_migration:
@ -27,6 +28,8 @@ kab:
name: 'Ha-t-an kra seg ihacṭagen i tesseqdaceḍ ussan-a ineggura maḍi :' name: 'Ha-t-an kra seg ihacṭagen i tesseqdaceḍ ussan-a ineggura maḍi :'
imports: imports:
data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun
invite_request:
text: Aya ad aɣ-iɛiwen ad nessenqed tuttra-k•m
ip_block: ip_block:
comment: D afrayan. Cfu ɣef wayɣer i terniḍ alugen-a. comment: D afrayan. Cfu ɣef wayɣer i terniḍ alugen-a.
severities: severities:
@ -36,6 +39,8 @@ kab:
fields: fields:
name: Tabzimt name: Tabzimt
value: Agbur value: Agbur
account_alias:
acct: Tansa n umiḍan aqbur
account_migration: account_migration:
acct: Tansa n umiḍan amaynut acct: Tansa n umiḍan amaynut
account_warning_preset: account_warning_preset:
@ -51,6 +56,7 @@ kab:
suspend: Ḥbes di leεḍil suspend: Ḥbes di leεḍil
announcement: announcement:
ends_at: Tagara n tedyant ends_at: Tagara n tedyant
starts_at: Tazwara n tedyant
text: Alɣu text: Alɣu
defaults: defaults:
autofollow: Ɛreḍ-it-id ad yeḍfer amiḍan-ik·im autofollow: Ɛreḍ-it-id ad yeḍfer amiḍan-ik·im
@ -59,18 +65,25 @@ kab:
chosen_languages: Sizdeg tutlayin chosen_languages: Sizdeg tutlayin
confirm_new_password: Sentem awal uffir amaynut confirm_new_password: Sentem awal uffir amaynut
confirm_password: Sentem awal uffir confirm_password: Sentem awal uffir
context: Isatalen n umsizdeg
current_password: Awal uffir n tura current_password: Awal uffir n tura
data: Isefka data: Isefka
display_name: Isem ara d-yettwaskanen display_name: Isem ara d-yettwaskanen
email: Tansa imayl email: Tansa imayl
expires_in: Ad yemmet expires_in: Ad yemmet
fields: Urtiyen niḍen
header: Ixef header: Ixef
honeypot: "%{label} (ur tettaččar ara)"
inbox_url: URL n tbewwaḍt n urmas yettwacudden
irreversible: Kkes deg wadeg n tuffra
locale: Tutlayt n wegrudem locale: Tutlayt n wegrudem
max_uses: Amḍan afellay n iseqdacen max_uses: Amḍan afellay n iseqdacen
new_password: Awal uffir amaynut new_password: Awal uffir amaynut
note: Tameddurt note: Tameddurt
otp_attempt: Tangalt n snat n tarayin otp_attempt: Tangalt n snat n tarayin
password: Awal uffir password: Awal uffir
phrase: Awal n tsarut neɣ tafyirt
setting_advanced_layout: Rmed agrudem n web leqqayen
setting_default_language: Tutlayt n tira setting_default_language: Tutlayt n tira
setting_default_privacy: Tabaḍnit n tira setting_default_privacy: Tabaḍnit n tira
setting_display_media_default: Akk-a kan setting_display_media_default: Akk-a kan
@ -88,8 +101,15 @@ kab:
featured_tag: featured_tag:
name: Ahacṭag name: Ahacṭag
form_admin_settings: form_admin_settings:
custom_css: CSS udmawan
profile_directory: Rmed akaram n imaγnuten
site_contact_email: Imayl n unermas
site_short_description: Aglam n uqeddac
site_terms: Tasertit tabaḍnit site_terms: Tasertit tabaḍnit
site_title: Isem n uqeddac site_title: Isem n uqeddac
status_page_url: URL n uusebter n waddaden
theme: Asentel amezwer
thumbnail: Tanfult n uqeddac
interactions: interactions:
must_be_follower: Ssewḥel ilɣa sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im must_be_follower: Ssewḥel ilɣa sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im
must_be_following: Ssewḥel ilɣa sɣur wid akked tid ur tettḍafareḍ ara must_be_following: Ssewḥel ilɣa sɣur wid akked tid ur tettḍafareḍ ara
@ -109,18 +129,25 @@ kab:
follow: Yeḍfer-ik·im-id walbɛaḍ follow: Yeḍfer-ik·im-id walbɛaḍ
follow_request: Ma yella win i d-yessutren ad k·em-yeḍfer follow_request: Ma yella win i d-yessutren ad k·em-yeḍfer
mention: Yuder-ik·em-id walbɛaḍ mention: Yuder-ik·em-id walbɛaḍ
pending_account: Amiḍan amaynut yesran asenqed
reblog: Yella win yesselhan adda-dik·im reblog: Yella win yesselhan adda-dik·im
report: Aneqis amaynut yettwazen
rule: rule:
hint: Isallen-nniḍen hint: Isallen-nniḍen
text: Alugen text: Alugen
tag: tag:
name: Ahacṭag name: Ahacṭag
user: user:
role: Tamlilt
time_zone: Tamnaḍt tasragant time_zone: Tamnaḍt tasragant
user_role: user_role:
name: Isem name: Isem
permissions_as_keys: Tisirag permissions_as_keys: Tisirag
webhook:
events: Tidyanin turmidin
'no': Ala 'no': Ala
not_recommended: Ur yettuwelleh ara
overridden: Yeččur
recommended: Yettuwelleh recommended: Yettuwelleh
required: required:
mark: "*" mark: "*"

View file

@ -211,6 +211,7 @@ ko:
setting_default_privacy: 게시물 프라이버시 setting_default_privacy: 게시물 프라이버시
setting_default_sensitive: 미디어를 언제나 민감한 콘텐츠로 설정 setting_default_sensitive: 미디어를 언제나 민감한 콘텐츠로 설정
setting_delete_modal: 게시물 삭제 전 확인 창을 표시 setting_delete_modal: 게시물 삭제 전 확인 창을 표시
setting_disable_hover_cards: 호버시 프로필 미리보기를 비활성화
setting_disable_swiping: 스와이프 모션 비활성화 setting_disable_swiping: 스와이프 모션 비활성화
setting_display_media: 미디어 표시 setting_display_media: 미디어 표시
setting_display_media_default: 기본 setting_display_media_default: 기본

View file

@ -211,6 +211,7 @@ nl:
setting_default_privacy: Zichtbaarheid van nieuwe berichten setting_default_privacy: Zichtbaarheid van nieuwe berichten
setting_default_sensitive: Media altijd als gevoelig markeren setting_default_sensitive: Media altijd als gevoelig markeren
setting_delete_modal: Vraag voor het verwijderen van een bericht een bevestiging setting_delete_modal: Vraag voor het verwijderen van een bericht een bevestiging
setting_disable_hover_cards: Profielvoorbeelden door eroverheen te zweven uitschakelen
setting_disable_swiping: Swipebewegingen uitschakelen setting_disable_swiping: Swipebewegingen uitschakelen
setting_display_media: Mediaweergave setting_display_media: Mediaweergave
setting_display_media_default: Standaard setting_display_media_default: Standaard

View file

@ -211,6 +211,7 @@ pl:
setting_default_privacy: Widoczność wpisów setting_default_privacy: Widoczność wpisów
setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
setting_delete_modal: Pytaj o potwierdzenie przed usunięciem wpisu setting_delete_modal: Pytaj o potwierdzenie przed usunięciem wpisu
setting_disable_hover_cards: Wyłącz podgląd profilu po najechaniu
setting_disable_swiping: Wyłącz ruchy przesuwania setting_disable_swiping: Wyłącz ruchy przesuwania
setting_display_media: Wyświetlanie zawartości multimedialnej setting_display_media: Wyświetlanie zawartości multimedialnej
setting_display_media_default: Domyślne setting_display_media_default: Domyślne

View file

@ -211,6 +211,7 @@ pt-PT:
setting_default_privacy: Privacidade da publicação setting_default_privacy: Privacidade da publicação
setting_default_sensitive: Marcar sempre os media como problemáticos setting_default_sensitive: Marcar sempre os media como problemáticos
setting_delete_modal: Solicitar confirmação antes de eliminar uma publicação setting_delete_modal: Solicitar confirmação antes de eliminar uma publicação
setting_disable_hover_cards: Desativar visualização de perfil ao passar o cursor
setting_disable_swiping: Desativar os movimentos de deslize setting_disable_swiping: Desativar os movimentos de deslize
setting_display_media: Visualização de media setting_display_media: Visualização de media
setting_display_media_default: Pré-definição setting_display_media_default: Pré-definição

View file

@ -2,6 +2,12 @@
ro: ro:
simple_form: simple_form:
hints: hints:
account:
discoverable: Este posibil ca postările și profilul tău să fie recomandate în diferite zone ale Mastodon, iar profilul tău ar poate fi sugerat altor utilizatori.
fields: Pagina ta principală, pronumele tale, vârsta, sau orice îți dorești.
indexable: Postările tale publice pot apărea în rezultatele căutărilor pe Mastodon. Persoanele care au interacționat cu postările tale vor putea să le caute oricând.
note: 'Poți @menționa alte persoane sau #hashtag-uri.'
unlocked: Alte persoane vă vor putea urmări fără a solicita aprobare. Debifați dacă doriți să revizuiți cererile și să alegeți dacă doriți să acceptați sau să respingeți noii urmăritori.
account_alias: account_alias:
acct: Specificați numele de utilizator@domeniu al contului de la care doriți să treceți acct: Specificați numele de utilizator@domeniu al contului de la care doriți să treceți
account_migration: account_migration:
@ -23,12 +29,14 @@ ro:
text: Poți folosi sintaxa de postare. Te rugăm să fii atent la spațiul pe care anunțul îl va ocupa pe ecranul utilizatorului text: Poți folosi sintaxa de postare. Te rugăm să fii atent la spațiul pe care anunțul îl va ocupa pe ecranul utilizatorului
defaults: defaults:
autofollow: Persoanele care se înregistrează datorită invitației tale te vor urmări automat autofollow: Persoanele care se înregistrează datorită invitației tale te vor urmări automat
avatar: WEBP, PNG, GIF sau JPG. Cel mult %{size}. Va fi redimensionată la %{dimensions}px
bot: Acest cont performează în cea mai mare parte acțiuni automate și nu poate fi monitorizat bot: Acest cont performează în cea mai mare parte acțiuni automate și nu poate fi monitorizat
context: Contextele în care filtrul trebuie aplicat context: Contextele în care filtrul trebuie aplicat
current_password: În scopuri de securitate, vă rugăm să introduceţi parola contului curent current_password: În scopuri de securitate, vă rugăm să introduceţi parola contului curent
current_username: Pentru a confirma, vă rugăm să introduceţi numele de utilizator al contului curent current_username: Pentru a confirma, vă rugăm să introduceţi numele de utilizator al contului curent
digest: Este trimis doar după o lungă perioadă de inactivitate și numai dacă primești mesaje personale în perioada de absență digest: Este trimis doar după o lungă perioadă de inactivitate și numai dacă primești mesaje personale în perioada de absență
email: Vei primi un e-mail de confirmare email: Vei primi un e-mail de confirmare
header: WEBP, PNG, GIF sau JPG. Cel mult %{size}. Va fi redimensionată la %{dimensions}px
inbox_url: Copiază adresa URL de pe prima pagină a reului pe care vrei să îl utilizezi inbox_url: Copiază adresa URL de pe prima pagină a reului pe care vrei să îl utilizezi
irreversible: Postările sortate vor dispărea ireversibil, chiar dacă filtrul este ulterior șters irreversible: Postările sortate vor dispărea ireversibil, chiar dacă filtrul este ulterior șters
locale: Limba interfaței de utilizator, e-mailurile si notificările push locale: Limba interfaței de utilizator, e-mailurile si notificările push
@ -36,17 +44,27 @@ ro:
phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări
scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia. scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia.
setting_aggregate_reblogs: Nu afișa impulsurile noi pentru postările care au fost deja recent impulsionate (afectează doar noile impulsuri primite) setting_aggregate_reblogs: Nu afișa impulsurile noi pentru postările care au fost deja recent impulsionate (afectează doar noile impulsuri primite)
setting_always_send_emails: În mod normal, notificările prin e-mail nu vor fi trimise când utilizați în mod activ Mastodon
setting_default_sensitive: Fișierele media sensibile sunt ascunse implicit și pot fi dezvăluite cu un clic setting_default_sensitive: Fișierele media sensibile sunt ascunse implicit și pot fi dezvăluite cu un clic
setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW) setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW)
setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media
setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil
setting_use_blurhash: Gradienții sunt bazați pe culorile vizualelor ascunse, dar ofuscă orice detalii setting_use_blurhash: Gradienții sunt bazați pe culorile vizualelor ascunse, dar ofuscă orice detalii
setting_use_pending_items: Ascunde actualizările cronologice din spatele unui click în loc de a derula automat fluxul setting_use_pending_items: Ascunde actualizările cronologice din spatele unui click în loc de a derula automat fluxul
username: Poți folosi litere, numere sau liniuțe de subliniere
whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă
domain_allow: domain_allow:
domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate
email_domain_block: email_domain_block:
domain: Acesta poate fi numele de domeniu care apare în adresa de e-mail sau în înregistrarea MX pe care o utilizează. Acestea vor fi verificate la înscriere.
with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră
featured_tag:
name: 'Iată câteva dintre hashtag-urile pe care le-ai folosit cel mai recent:'
filters:
action: Alege ce acţiune va fi efectuată atunci când o postare corespunde filtrului
actions:
hide: Ascunde complet conținutul filtrat, ca și cum nu ar exista
warn: Ascunde conținutul filtrat în spatele unui avertisment care menționează titlul filtrului
form_challenge: form_challenge:
current_password: Ați intrat într-o zonă securizată current_password: Ați intrat într-o zonă securizată
imports: imports:

View file

@ -211,6 +211,7 @@ sl:
setting_default_privacy: Zasebnost objave setting_default_privacy: Zasebnost objave
setting_default_sensitive: Vedno označi medije kot občutljive setting_default_sensitive: Vedno označi medije kot občutljive
setting_delete_modal: Pred brisanjem objave prikaži okno za pritrditev setting_delete_modal: Pred brisanjem objave prikaži okno za pritrditev
setting_disable_hover_cards: Onemogoči predogled profila pod kazalcem
setting_disable_swiping: Onemogoči poteze drsanja setting_disable_swiping: Onemogoči poteze drsanja
setting_display_media: Prikaz medijev setting_display_media: Prikaz medijev
setting_display_media_default: Privzeto setting_display_media_default: Privzeto

View file

@ -211,6 +211,7 @@ sq:
setting_default_privacy: Privatësi postimi setting_default_privacy: Privatësi postimi
setting_default_sensitive: Mediave vëru përherë shenjë si rezervat setting_default_sensitive: Mediave vëru përherë shenjë si rezervat
setting_delete_modal: Shfaq dialog ripohimi përpara fshirjes së një mesazhi setting_delete_modal: Shfaq dialog ripohimi përpara fshirjes së një mesazhi
setting_disable_hover_cards: Çaktivizo paraparje profili, kur i kalohet kursori përsipër
setting_disable_swiping: Çaktivizo lëvizje me fërkim setting_disable_swiping: Çaktivizo lëvizje me fërkim
setting_display_media: Shfaqje mediash setting_display_media: Shfaqje mediash
setting_display_media_default: Parazgjedhje setting_display_media_default: Parazgjedhje

View file

@ -211,6 +211,7 @@ sr-Latn:
setting_default_privacy: Privatnost objava setting_default_privacy: Privatnost objava
setting_default_sensitive: Uvek označi multimediju kao osetljivu setting_default_sensitive: Uvek označi multimediju kao osetljivu
setting_delete_modal: Prikaži dijalog za potvrdu pre brisanja objave setting_delete_modal: Prikaži dijalog za potvrdu pre brisanja objave
setting_disable_hover_cards: Onemogući pregled profila prelaskom kursora
setting_disable_swiping: Onemogući pokrete prevlačenja setting_disable_swiping: Onemogući pokrete prevlačenja
setting_display_media: Prikaz medija setting_display_media: Prikaz medija
setting_display_media_default: Podrazumevano setting_display_media_default: Podrazumevano

View file

@ -211,6 +211,7 @@ sr:
setting_default_privacy: Приватност објава setting_default_privacy: Приватност објава
setting_default_sensitive: Увек означи мултимедију као осетљиву setting_default_sensitive: Увек означи мултимедију као осетљиву
setting_delete_modal: Прикажи дијалог за потврду пре брисања објаве setting_delete_modal: Прикажи дијалог за потврду пре брисања објаве
setting_disable_hover_cards: Онемогући преглед профила преласком курсора
setting_disable_swiping: Онемогући покрете превлачења setting_disable_swiping: Онемогући покрете превлачења
setting_display_media: Приказ медија setting_display_media: Приказ медија
setting_display_media_default: Подразумевано setting_display_media_default: Подразумевано

View file

@ -211,6 +211,7 @@ th:
setting_default_privacy: ความเป็นส่วนตัวของการโพสต์ setting_default_privacy: ความเป็นส่วนตัวของการโพสต์
setting_default_sensitive: ทำเครื่องหมายสื่อว่าละเอียดอ่อนเสมอ setting_default_sensitive: ทำเครื่องหมายสื่อว่าละเอียดอ่อนเสมอ
setting_delete_modal: แสดงกล่องโต้ตอบการยืนยันก่อนลบโพสต์ setting_delete_modal: แสดงกล่องโต้ตอบการยืนยันก่อนลบโพสต์
setting_disable_hover_cards: ปิดใช้งานตัวอย่างโปรไฟล์เมื่อวางเมาส์เหนือ
setting_disable_swiping: ปิดใช้งานการเคลื่อนไหวในการปัด setting_disable_swiping: ปิดใช้งานการเคลื่อนไหวในการปัด
setting_display_media: การแสดงสื่อ setting_display_media: การแสดงสื่อ
setting_display_media_default: ค่าเริ่มต้น setting_display_media_default: ค่าเริ่มต้น

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