Merge pull request #2806 from ClearlyClaire/glitch-soc/merge-upstream

Merge upstream changes up to c8b9e60ec1
pull/2807/head
Claire 2024-08-07 08:48:46 +02:00 committed by GitHub
commit 241d76075c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
88 changed files with 1361 additions and 711 deletions

View File

@ -211,7 +211,7 @@ FROM build AS ffmpeg
# ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"] # ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"]
# renovate: datasource=repology depName=ffmpeg packageName=openpkg_current/ffmpeg # renovate: datasource=repology depName=ffmpeg packageName=openpkg_current/ffmpeg
ARG FFMPEG_VERSION=7.0.1 ARG FFMPEG_VERSION=7.0.2
# ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"] # ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"]
ARG FFMPEG_URL=https://ffmpeg.org/releases ARG FFMPEG_URL=https://ffmpeg.org/releases

View File

@ -16,7 +16,7 @@ gem 'pghero'
gem 'aws-sdk-s3', '~> 1.123', require: false gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'blurhash', '~> 0.1' gem 'blurhash', '~> 0.1'
gem 'fog-core', '<= 2.4.0' gem 'fog-core', '<= 2.5.0'
gem 'fog-openstack', '~> 1.0', require: false gem 'fog-openstack', '~> 1.0', require: false
gem 'kt-paperclip', '~> 7.2' gem 'kt-paperclip', '~> 7.2'
gem 'md-paperclip-azure', '~> 2.2', require: false gem 'md-paperclip-azure', '~> 2.2', require: false

View File

@ -100,8 +100,8 @@ GEM
attr_required (1.0.2) attr_required (1.0.2)
awrence (1.2.1) awrence (1.2.1)
aws-eventstream (1.3.0) aws-eventstream (1.3.0)
aws-partitions (1.950.0) aws-partitions (1.961.0)
aws-sdk-core (3.201.0) aws-sdk-core (3.201.3)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8) aws-sigv4 (~> 1.8)
@ -109,11 +109,11 @@ GEM
aws-sdk-kms (1.88.0) aws-sdk-kms (1.88.0)
aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-core (~> 3, >= 3.201.0)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.156.0) aws-sdk-s3 (1.157.0)
aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
aws-sigv4 (1.8.0) aws-sigv4 (1.9.1)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
azure-storage-blob (2.0.3) azure-storage-blob (2.0.3)
azure-storage-common (~> 2.0) azure-storage-common (~> 2.0)
@ -135,7 +135,7 @@ GEM
binding_of_caller (1.0.1) binding_of_caller (1.0.1)
debug_inspector (>= 1.2.0) debug_inspector (>= 1.2.0)
blurhash (0.1.7) blurhash (0.1.7)
bootsnap (1.18.3) bootsnap (1.18.4)
msgpack (~> 1.2) msgpack (~> 1.2)
brakeman (6.1.2) brakeman (6.1.2)
racc racc
@ -229,7 +229,7 @@ GEM
erubi (1.13.0) erubi (1.13.0)
et-orbi (1.2.11) et-orbi (1.2.11)
tzinfo tzinfo
excon (0.110.0) excon (0.111.0)
fabrication (2.31.0) fabrication (2.31.0)
faker (3.4.2) faker (3.4.2)
i18n (>= 1.8.11, < 2) i18n (>= 1.8.11, < 2)
@ -269,7 +269,7 @@ GEM
flatware-rspec (2.3.2) flatware-rspec (2.3.2)
flatware (= 2.3.2) flatware (= 2.3.2)
rspec (>= 3.6) rspec (>= 3.6)
fog-core (2.4.0) fog-core (2.5.0)
builder builder
excon (~> 0.71) excon (~> 0.71)
formatador (>= 0.2, < 2.0) formatador (>= 0.2, < 2.0)
@ -429,7 +429,7 @@ GEM
memory_profiler (1.0.2) memory_profiler (1.0.2)
mime-types (3.5.2) mime-types (3.5.2)
mime-types-data (~> 3.2015) mime-types-data (~> 3.2015)
mime-types-data (3.2024.0604) mime-types-data (3.2024.0702)
mini_mime (1.1.5) mini_mime (1.1.5)
mini_portile2 (2.8.7) mini_portile2 (2.8.7)
minitest (5.24.1) minitest (5.24.1)
@ -758,7 +758,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.3) rubocop-rspec (3.0.4)
rubocop (~> 1.61) rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0) rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61) rubocop (~> 1.61)
@ -796,7 +796,7 @@ 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.5) sidekiq-scheduler (5.0.6)
rufus-scheduler (~> 3.2) rufus-scheduler (~> 3.2)
sidekiq (>= 6, < 8) sidekiq (>= 6, < 8)
tilt (>= 1.4.0, < 3) tilt (>= 1.4.0, < 3)
@ -945,7 +945,7 @@ DEPENDENCIES
fast_blank (~> 1.0) fast_blank (~> 1.0)
fastimage fastimage
flatware-rspec flatware-rspec
fog-core (<= 2.4.0) fog-core (<= 2.5.0)
fog-openstack (~> 1.0) fog-openstack (~> 1.0)
fuubar (~> 2.5) fuubar (~> 2.5)
haml-rails (~> 2.0) haml-rails (~> 2.0)

View File

@ -16,10 +16,10 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
@group_metadata = load_group_metadata @group_metadata = load_group_metadata
@grouped_notifications = load_grouped_notifications @grouped_notifications = load_grouped_notifications
@relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id) @relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
@sample_accounts = @grouped_notifications.flat_map(&:sample_accounts) @presenter = GroupedNotificationsPresenter.new(@grouped_notifications, expand_accounts: expand_accounts_param)
# Preload associations to avoid N+1s # Preload associations to avoid N+1s
ActiveRecord::Associations::Preloader.new(records: @sample_accounts, associations: [:account_stat, { user: :role }]).call ActiveRecord::Associations::Preloader.new(records: @presenter.accounts, associations: [:account_stat, { user: :role }]).call
end end
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#index rendering') do |span| MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#index rendering') do |span|
@ -27,14 +27,14 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
span.add_attributes( span.add_attributes(
'app.notification_grouping.count' => @grouped_notifications.size, 'app.notification_grouping.count' => @grouped_notifications.size,
'app.notification_grouping.sample_account.count' => @sample_accounts.size, 'app.notification_grouping.account.count' => @presenter.accounts.size,
'app.notification_grouping.sample_account.unique_count' => @sample_accounts.pluck(:id).uniq.size, 'app.notification_grouping.partial_account.count' => @presenter.partial_accounts.size,
'app.notification_grouping.status.count' => statuses.size, 'app.notification_grouping.status.count' => statuses.size,
'app.notification_grouping.status.unique_count' => statuses.uniq.size 'app.notification_grouping.status.unique_count' => statuses.uniq.size,
'app.notification_grouping.expand_accounts_param' => expand_accounts_param
) )
presenter = GroupedNotificationsPresenter.new(@grouped_notifications) render json: @presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata, expand_accounts: expand_accounts_param
render json: presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata
end end
end end
@ -131,4 +131,15 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
def pagination_params(core_params) def pagination_params(core_params)
params.slice(:limit, :types, :exclude_types, :include_filtered).permit(:limit, :include_filtered, types: [], exclude_types: []).merge(core_params) params.slice(:limit, :types, :exclude_types, :include_filtered).permit(:limit, :include_filtered, types: [], exclude_types: []).merge(core_params)
end end
def expand_accounts_param
case params[:expand_accounts]
when nil, 'full'
'full'
when 'partial_avatars'
'partial_avatars'
else
raise Mastodon::InvalidParameterError, "Invalid value for 'expand_accounts': '#{params[:expand_accounts]}', allowed values are 'full' and 'partial_avatars'"
end
end
end end

View File

@ -431,6 +431,42 @@ Rails.delegate(document, 'img.custom-emoji', 'mouseout', ({ target }) => {
target.src = target.dataset.static; target.src = target.dataset.static;
}); });
const setInputDisabled = (
input: HTMLInputElement | HTMLSelectElement,
disabled: boolean,
) => {
input.disabled = disabled;
const wrapper = input.closest('.with_label');
if (wrapper) {
wrapper.classList.toggle('disabled', input.disabled);
const hidden =
input.type === 'checkbox' &&
wrapper.querySelector<HTMLInputElement>('input[type=hidden][value="0"]');
if (hidden) {
hidden.disabled = input.disabled;
}
}
};
Rails.delegate(
document,
'#account_statuses_cleanup_policy_enabled',
'change',
({ target }) => {
if (!(target instanceof HTMLInputElement) || !target.form) return;
target.form
.querySelectorAll<
HTMLInputElement | HTMLSelectElement
>('input:not([type=hidden], #account_statuses_cleanup_policy_enabled), select')
.forEach((input) => {
setInputDisabled(input, !target.checked);
});
},
);
// Empty the honeypot fields in JS in case something like an extension // Empty the honeypot fields in JS in case something like an extension
// automatically filled them. // automatically filled them.
Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => { Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {

View File

@ -106,7 +106,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
</> </>
); );
} else if (defaultAction === 'mute') { } else if (defaultAction === 'mute') {
buttons = <Button title={intl.formatMessage(messages.mute)} onClick={handleMute} />; buttons = <Button text={intl.formatMessage(messages.mute)} onClick={handleMute} />;
} else if (defaultAction === 'block') { } else if (defaultAction === 'block') {
buttons = <Button text={intl.formatMessage(messages.block)} onClick={handleBlock} />; buttons = <Button text={intl.formatMessage(messages.block)} onClick={handleBlock} />;
} else if (!account.get('suspended') && !account.get('moved') || following) { } else if (!account.get('suspended') && !account.get('moved') || following) {

View File

@ -1,5 +1,7 @@
import { useEffect, forwardRef } from 'react'; import { useEffect, forwardRef } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames'; import classNames from 'classnames';
import { fetchAccount } from 'flavours/glitch/actions/accounts'; import { fetchAccount } from 'flavours/glitch/actions/accounts';
@ -25,6 +27,11 @@ export const HoverCardAccount = forwardRef<
accountId ? state.accounts.get(accountId) : undefined, accountId ? state.accounts.get(accountId) : undefined,
); );
const note = useAppSelector(
(state) =>
state.relationships.getIn([accountId, 'note']) as string | undefined,
);
useEffect(() => { useEffect(() => {
if (accountId && !account) { if (accountId && !account) {
dispatch(fetchAccount(accountId)); dispatch(fetchAccount(accountId));
@ -57,6 +64,17 @@ export const HoverCardAccount = forwardRef<
className='hover-card__bio' className='hover-card__bio'
/> />
<AccountFields fields={account.fields} limit={2} /> <AccountFields fields={account.fields} limit={2} />
{note && note.length > 0 && (
<dl className='hover-card__note'>
<dt className='hover-card__note-label'>
<FormattedMessage
id='account.account_note_header'
defaultMessage='Personal note'
/>
</dt>
<dd>{note}</dd>
</dl>
)}
</div> </div>
<div className='hover-card__number'> <div className='hover-card__number'>

View File

@ -431,6 +431,42 @@ Rails.delegate(document, 'img.custom-emoji', 'mouseout', ({ target }) => {
target.src = target.dataset.static; target.src = target.dataset.static;
}); });
const setInputDisabled = (
input: HTMLInputElement | HTMLSelectElement,
disabled: boolean,
) => {
input.disabled = disabled;
const wrapper = input.closest('.with_label');
if (wrapper) {
wrapper.classList.toggle('disabled', input.disabled);
const hidden =
input.type === 'checkbox' &&
wrapper.querySelector<HTMLInputElement>('input[type=hidden][value="0"]');
if (hidden) {
hidden.disabled = input.disabled;
}
}
};
Rails.delegate(
document,
'#account_statuses_cleanup_policy_enabled',
'change',
({ target }) => {
if (!(target instanceof HTMLInputElement) || !target.form) return;
target.form
.querySelectorAll<
HTMLInputElement | HTMLSelectElement
>('input:not([type=hidden], #account_statuses_cleanup_policy_enabled), select')
.forEach((input) => {
setInputDisabled(input, !target.checked);
});
},
);
// Empty the honeypot fields in JS in case something like an extension // Empty the honeypot fields in JS in case something like an extension
// automatically filled them. // automatically filled them.
Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => { Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {

View File

@ -151,7 +151,7 @@ class AccountNote extends ImmutablePureComponent {
return ( return (
<div className='account__header__account-note'> <div className='account__header__account-note'>
<label htmlFor={`account-note-${account.get('id')}`}> <label htmlFor={`account-note-${account.get('id')}`}>
<FormattedMessage id='account.account_note_header' defaultMessage='Note' /> <InlineAlert show={saved} /> <FormattedMessage id='account.account_note_header' defaultMessage='Personal note' /> <InlineAlert show={saved} />
</label> </label>
<Textarea <Textarea

View File

@ -44,7 +44,7 @@ const ColumnSettings = () => {
settingPath={['minimizeFilteredBanner']} settingPath={['minimizeFilteredBanner']}
onChange={onChange} onChange={onChange}
label={ label={
<FormattedMessage id='notification_requests.minimize_banner' defaultMessage='Minimize filtred notifications banner' /> <FormattedMessage id='notification_requests.minimize_banner' defaultMessage='Minimize filtered notifications banner' />
} }
/> />
</div> </div>

View File

@ -1,5 +1,6 @@
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
import { blockAccountSuccess, muteAccountSuccess } from 'flavours/glitch/actions/accounts';
import { import {
NOTIFICATION_REQUESTS_EXPAND_REQUEST, NOTIFICATION_REQUESTS_EXPAND_REQUEST,
NOTIFICATION_REQUESTS_EXPAND_SUCCESS, NOTIFICATION_REQUESTS_EXPAND_SUCCESS,
@ -51,6 +52,14 @@ const removeRequest = (state, id) => {
return state.update('items', list => list.filterNot(item => item.get('id') === id)); return state.update('items', list => list.filterNot(item => item.get('id') === id));
}; };
const removeRequestByAccount = (state, account_id) => {
if (state.getIn(['current', 'item', 'account']) === account_id) {
state = state.setIn(['current', 'removed'], true);
}
return state.update('items', list => list.filterNot(item => item.get('account') === account_id));
};
export const notificationRequestsReducer = (state = initialState, action) => { export const notificationRequestsReducer = (state = initialState, action) => {
switch(action.type) { switch(action.type) {
case NOTIFICATION_REQUESTS_FETCH_SUCCESS: case NOTIFICATION_REQUESTS_FETCH_SUCCESS:
@ -74,6 +83,10 @@ export const notificationRequestsReducer = (state = initialState, action) => {
case NOTIFICATION_REQUEST_ACCEPT_REQUEST: case NOTIFICATION_REQUEST_ACCEPT_REQUEST:
case NOTIFICATION_REQUEST_DISMISS_REQUEST: case NOTIFICATION_REQUEST_DISMISS_REQUEST:
return removeRequest(state, action.id); return removeRequest(state, action.id);
case blockAccountSuccess.type:
return removeRequestByAccount(state, action.payload.relationship.id);
case muteAccountSuccess.type:
return action.payload.relationship.muting_notifications ? removeRequestByAccount(state, action.payload.relationship.id) : state;
case NOTIFICATION_REQUEST_FETCH_REQUEST: case NOTIFICATION_REQUEST_FETCH_REQUEST:
return state.set('current', initialState.get('current').set('isLoading', true)); return state.set('current', initialState.get('current').set('isLoading', true));
case NOTIFICATION_REQUEST_FETCH_SUCCESS: case NOTIFICATION_REQUEST_FETCH_SUCCESS:

View File

@ -1,9 +1,8 @@
import type { GetThunkAPI } from '@reduxjs/toolkit';
import { createAsyncThunk } from '@reduxjs/toolkit'; import { createAsyncThunk } from '@reduxjs/toolkit';
// eslint-disable-next-line @typescript-eslint/no-restricted-imports // eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import type { BaseThunkAPI } from '@reduxjs/toolkit/dist/createAsyncThunk';
import type { AppDispatch, RootState } from './store'; import type { AppDispatch, RootState } from './store';
export const useAppDispatch = useDispatch.withTypes<AppDispatch>(); export const useAppDispatch = useDispatch.withTypes<AppDispatch>();
@ -25,29 +24,20 @@ export const createAppAsyncThunk = createAsyncThunk.withTypes<{
rejectValue: AsyncThunkRejectValue; rejectValue: AsyncThunkRejectValue;
}>(); }>();
type AppThunkApi = Pick< interface AppThunkConfig {
BaseThunkAPI<
RootState,
unknown,
AppDispatch,
AsyncThunkRejectValue,
AppMeta,
AppMeta
>,
'getState' | 'dispatch'
>;
interface AppThunkOptions {
skipLoading?: boolean;
}
const createBaseAsyncThunk = createAsyncThunk.withTypes<{
state: RootState; state: RootState;
dispatch: AppDispatch; dispatch: AppDispatch;
rejectValue: AsyncThunkRejectValue; rejectValue: AsyncThunkRejectValue;
fulfilledMeta: AppMeta; fulfilledMeta: AppMeta;
rejectedMeta: AppMeta; rejectedMeta: AppMeta;
}>(); }
type AppThunkApi = Pick<GetThunkAPI<AppThunkConfig>, 'getState' | 'dispatch'>;
interface AppThunkOptions {
skipLoading?: boolean;
}
const createBaseAsyncThunk = createAsyncThunk.withTypes<AppThunkConfig>();
export function createThunk<Arg = void, Returned = void>( export function createThunk<Arg = void, Returned = void>(
name: string, name: string,

View File

@ -3268,6 +3268,11 @@ $ui-header-logo-wordmark-width: 99px;
.explore__search-header { .explore__search-header {
display: flex; display: flex;
} }
.explore__search-results {
border: 0;
border-radius: 0;
}
} }
.icon-with-badge { .icon-with-badge {
@ -7906,7 +7911,7 @@ img.modal-warning {
display: flex; display: flex;
flex-shrink: 0; flex-shrink: 0;
@media screen and (max-width: $no-gap-breakpoint) { @media screen and (max-width: $no-gap-breakpoint - 1px) {
border-right: 0; border-right: 0;
border-left: 0; border-left: 0;
} }
@ -8627,16 +8632,17 @@ noscript {
.verified { .verified {
border: 1px solid rgba($valid-value-color, 0.5); border: 1px solid rgba($valid-value-color, 0.5);
margin-top: -1px; margin-top: -1px;
margin-inline: -1px;
&:first-child { &:first-child {
border-top-left-radius: 4px; border-top-left-radius: 4px;
border-top-right-radius: 4px; border-top-right-radius: 4px;
margin-top: 0;
} }
&:last-child { &:last-child {
border-bottom-left-radius: 4px; border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px; border-bottom-right-radius: 4px;
margin-bottom: -1px;
} }
dt, dt,
@ -11171,6 +11177,25 @@ noscript {
} }
} }
&__note {
&-label {
color: $dark-text-color;
font-size: 12px;
font-weight: 500;
text-transform: uppercase;
}
dd {
white-space: pre-line;
color: $secondary-text-color;
overflow: hidden;
line-clamp: 3; // Not yet supported in browers
display: -webkit-box; // The next 3 properties are needed
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
}
.display-name { .display-name {
font-size: 15px; font-size: 15px;
line-height: 22px; line-height: 22px;

View File

@ -106,7 +106,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
</> </>
); );
} else if (defaultAction === 'mute') { } else if (defaultAction === 'mute') {
buttons = <Button title={intl.formatMessage(messages.mute)} onClick={handleMute} />; buttons = <Button text={intl.formatMessage(messages.mute)} onClick={handleMute} />;
} else if (defaultAction === 'block') { } else if (defaultAction === 'block') {
buttons = <Button text={intl.formatMessage(messages.block)} onClick={handleBlock} />; buttons = <Button text={intl.formatMessage(messages.block)} onClick={handleBlock} />;
} else if (!account.get('suspended') && !account.get('moved') || following) { } else if (!account.get('suspended') && !account.get('moved') || following) {

View File

@ -1,5 +1,7 @@
import { useEffect, forwardRef } from 'react'; import { useEffect, forwardRef } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames'; import classNames from 'classnames';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
@ -25,6 +27,11 @@ export const HoverCardAccount = forwardRef<
accountId ? state.accounts.get(accountId) : undefined, accountId ? state.accounts.get(accountId) : undefined,
); );
const note = useAppSelector(
(state) =>
state.relationships.getIn([accountId, 'note']) as string | undefined,
);
useEffect(() => { useEffect(() => {
if (accountId && !account) { if (accountId && !account) {
dispatch(fetchAccount(accountId)); dispatch(fetchAccount(accountId));
@ -53,6 +60,17 @@ export const HoverCardAccount = forwardRef<
className='hover-card__bio' className='hover-card__bio'
/> />
<AccountFields fields={account.fields} limit={2} /> <AccountFields fields={account.fields} limit={2} />
{note && note.length > 0 && (
<dl className='hover-card__note'>
<dt className='hover-card__note-label'>
<FormattedMessage
id='account.account_note_header'
defaultMessage='Personal note'
/>
</dt>
<dd>{note}</dd>
</dl>
)}
</div> </div>
<div className='hover-card__number'> <div className='hover-card__number'>

View File

@ -151,7 +151,7 @@ class AccountNote extends ImmutablePureComponent {
return ( return (
<div className='account__header__account-note'> <div className='account__header__account-note'>
<label htmlFor={`account-note-${account.get('id')}`}> <label htmlFor={`account-note-${account.get('id')}`}>
<FormattedMessage id='account.account_note_header' defaultMessage='Note' /> <InlineAlert show={saved} /> <FormattedMessage id='account.account_note_header' defaultMessage='Personal note' /> <InlineAlert show={saved} />
</label> </label>
<Textarea <Textarea

View File

@ -44,7 +44,7 @@ const ColumnSettings = () => {
settingPath={['minimizeFilteredBanner']} settingPath={['minimizeFilteredBanner']}
onChange={onChange} onChange={onChange}
label={ label={
<FormattedMessage id='notification_requests.minimize_banner' defaultMessage='Minimize filtred notifications banner' /> <FormattedMessage id='notification_requests.minimize_banner' defaultMessage='Minimize filtered notifications banner' />
} }
/> />
</div> </div>

View File

@ -171,21 +171,28 @@
"confirmations.block.confirm": "Заблакіраваць", "confirmations.block.confirm": "Заблакіраваць",
"confirmations.delete.confirm": "Выдаліць", "confirmations.delete.confirm": "Выдаліць",
"confirmations.delete.message": "Вы ўпэўненыя, што хочаце выдаліць гэты допіс?", "confirmations.delete.message": "Вы ўпэўненыя, што хочаце выдаліць гэты допіс?",
"confirmations.delete.title": "Выдаліць допіс?",
"confirmations.delete_list.confirm": "Выдаліць", "confirmations.delete_list.confirm": "Выдаліць",
"confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты чарнавік?", "confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты чарнавік?",
"confirmations.delete_list.title": "Выдаліць спіс?",
"confirmations.discard_edit_media.confirm": "Адмяніць", "confirmations.discard_edit_media.confirm": "Адмяніць",
"confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?", "confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
"confirmations.edit.confirm": "Рэдагаваць", "confirmations.edit.confirm": "Рэдагаваць",
"confirmations.edit.message": "Калі вы зменіце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?", "confirmations.edit.message": "Калі вы зменіце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?",
"confirmations.edit.title": "Замяніць допіс?",
"confirmations.logout.confirm": "Выйсці", "confirmations.logout.confirm": "Выйсці",
"confirmations.logout.message": "Вы ўпэўненыя, што хочаце выйсці?", "confirmations.logout.message": "Вы ўпэўненыя, што хочаце выйсці?",
"confirmations.logout.title": "Выйсці?",
"confirmations.mute.confirm": "Ігнараваць", "confirmations.mute.confirm": "Ігнараваць",
"confirmations.redraft.confirm": "Выдаліць і перапісаць", "confirmations.redraft.confirm": "Выдаліць і перапісаць",
"confirmations.redraft.message": "Вы ўпэўнены, што хочаце выдаліць допіс і перапісаць яго? Упадабанні і пашырэнні згубяцца, а адказы да арыгінальнага допісу асірацеюць.", "confirmations.redraft.message": "Вы ўпэўнены, што хочаце выдаліць допіс і перапісаць яго? Упадабанні і пашырэнні згубяцца, а адказы да арыгінальнага допісу асірацеюць.",
"confirmations.redraft.title": "Выдаліць і перапісаць допіс?",
"confirmations.reply.confirm": "Адказаць", "confirmations.reply.confirm": "Адказаць",
"confirmations.reply.message": "Калі вы адкажаце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?", "confirmations.reply.message": "Калі вы адкажаце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?",
"confirmations.reply.title": "Замяніць допіс?",
"confirmations.unfollow.confirm": "Адпісацца", "confirmations.unfollow.confirm": "Адпісацца",
"confirmations.unfollow.message": "Вы ўпэўненыя, што хочаце адпісацца ад {name}?", "confirmations.unfollow.message": "Вы ўпэўненыя, што хочаце адпісацца ад {name}?",
"confirmations.unfollow.title": "Адпісацца ад карыстальніка?",
"conversation.delete": "Выдаліць размову", "conversation.delete": "Выдаліць размову",
"conversation.mark_as_read": "Адзначыць прачытаным", "conversation.mark_as_read": "Адзначыць прачытаным",
"conversation.open": "Прагледзець размову", "conversation.open": "Прагледзець размову",
@ -293,6 +300,7 @@
"filter_modal.select_filter.subtitle": "Скарыстайцеся існуючай катэгорыяй або стварыце новую", "filter_modal.select_filter.subtitle": "Скарыстайцеся існуючай катэгорыяй або стварыце новую",
"filter_modal.select_filter.title": "Фільтраваць гэты допіс", "filter_modal.select_filter.title": "Фільтраваць гэты допіс",
"filter_modal.title.status": "Фільтраваць допіс", "filter_modal.title.status": "Фільтраваць допіс",
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце",
"filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні", "filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні",
"firehose.all": "Усе", "firehose.all": "Усе",
"firehose.local": "Гэты сервер", "firehose.local": "Гэты сервер",
@ -341,7 +349,7 @@
"hashtag.follow": "Падпісацца на хэштэг", "hashtag.follow": "Падпісацца на хэштэг",
"hashtag.unfollow": "Адпісацца ад хэштэга", "hashtag.unfollow": "Адпісацца ад хэштэга",
"hashtags.and_other": "…і яшчэ {count, plural, other {#}}", "hashtags.and_other": "…і яшчэ {count, plural, other {#}}",
"home.column_settings.show_reblogs": "Паказаць пашырэнні", "home.column_settings.show_reblogs": "Паказваць пашырэнні",
"home.column_settings.show_replies": "Паказваць адказы", "home.column_settings.show_replies": "Паказваць адказы",
"home.hide_announcements": "Схаваць аб'явы", "home.hide_announcements": "Схаваць аб'явы",
"home.pending_critical_update.body": "Калі ласка, абнавіце свой сервер Mastodon як мага хутчэй!", "home.pending_critical_update.body": "Калі ласка, абнавіце свой сервер Mastodon як мага хутчэй!",
@ -437,6 +445,8 @@
"mute_modal.title": "Ігнараваць карыстальніка?", "mute_modal.title": "Ігнараваць карыстальніка?",
"mute_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.", "mute_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
"mute_modal.you_wont_see_posts": "Карыстальнік па-ранейшаму будзе бачыць вашыя паведамленні, але вы не будзеце паведамленні карыстальніка.", "mute_modal.you_wont_see_posts": "Карыстальнік па-ранейшаму будзе бачыць вашыя паведамленні, але вы не будзеце паведамленні карыстальніка.",
"name_and_others": "{name} і {count, plural, one {# іншы} many {# іншых} other {# іншых}}",
"name_and_others_with_link": "{name} і <a>{count, plural, one {# іншы} many {# іншых} other {# іншых}}</a>",
"navigation_bar.about": "Пра нас", "navigation_bar.about": "Пра нас",
"navigation_bar.advanced_interface": "Адкрыць у пашыраным вэб-інтэрфейсе", "navigation_bar.advanced_interface": "Адкрыць у пашыраным вэб-інтэрфейсе",
"navigation_bar.blocks": "Заблакіраваныя карыстальнікі", "navigation_bar.blocks": "Заблакіраваныя карыстальнікі",
@ -464,6 +474,10 @@
"navigation_bar.security": "Бяспека", "navigation_bar.security": "Бяспека",
"not_signed_in_indicator.not_signed_in": "Вам трэба ўвайсці каб атрымаць доступ да гэтага рэсурсу.", "not_signed_in_indicator.not_signed_in": "Вам трэба ўвайсці каб атрымаць доступ да гэтага рэсурсу.",
"notification.admin.report": "{name} паскардзіўся на {target}", "notification.admin.report": "{name} паскардзіўся на {target}",
"notification.admin.report_account": "{name} паскардзіўся на {count, plural, one {# допіс} many {# допісаў} other {# допіса}} ад {target} з прычыны {category}",
"notification.admin.report_account_other": "{name} паскардзіўся на {count, plural, one {# допіс} many {# допісаў} other {# допіса}} ад {target}",
"notification.admin.report_statuses": "{name} паскардзіўся на {target} з прычыны {category}",
"notification.admin.report_statuses_other": "{name} паскардзіўся на {target}",
"notification.admin.sign_up": "{name} зарэгістраваўся", "notification.admin.sign_up": "{name} зарэгістраваўся",
"notification.favourite": "Ваш допіс упадабаны {name}", "notification.favourite": "Ваш допіс упадабаны {name}",
"notification.follow": "{name} падпісаўся на вас", "notification.follow": "{name} падпісаўся на вас",
@ -479,6 +493,8 @@
"notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.", "notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.",
"notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў прыпынены.", "notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў прыпынены.",
"notification.own_poll": "Ваша апытанне скончылася", "notification.own_poll": "Ваша апытанне скончылася",
"notification.poll": "Апытанне, дзе вы прынялі ўдзел, скончылася",
"notification.private_mention": "{name} згадаў вас асабіста",
"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}, што азначае, што вы больш не можаце атрымліваць ад іх абнаўлення ці ўзаемадзейнічаць з імі.",
@ -489,13 +505,18 @@
"notification.update": "Допіс {name} адрэдагаваны", "notification.update": "Допіс {name} адрэдагаваны",
"notification_requests.accept": "Прыняць", "notification_requests.accept": "Прыняць",
"notification_requests.dismiss": "Адхіліць", "notification_requests.dismiss": "Адхіліць",
"notification_requests.maximize": "Разгарнуць",
"notification_requests.minimize_banner": "Згарнуць банер адфільтраваных апавяшчэнняў",
"notification_requests.notifications_from": "Апавяшчэнні ад {name}", "notification_requests.notifications_from": "Апавяшчэнні ад {name}",
"notification_requests.title": "Адфільтраваныя апавяшчэнні", "notification_requests.title": "Адфільтраваныя апавяшчэнні",
"notifications.clear": "Ачысціць апавяшчэнні", "notifications.clear": "Ачысціць апавяшчэнні",
"notifications.clear_confirmation": "Вы ўпэўнены, што жадаеце назаўсёды сцерці ўсё паведамленні?", "notifications.clear_confirmation": "Вы ўпэўнены, што жадаеце назаўсёды сцерці ўсё паведамленні?",
"notifications.clear_title": "Ачысціць апавяшчэнні?",
"notifications.column_settings.admin.report": "Новыя скаргі:", "notifications.column_settings.admin.report": "Новыя скаргі:",
"notifications.column_settings.admin.sign_up": "Новыя ўваходы:", "notifications.column_settings.admin.sign_up": "Новыя ўваходы:",
"notifications.column_settings.alert": "Апавяшчэнні на працоўным стале", "notifications.column_settings.alert": "Апавяшчэнні на працоўным стале",
"notifications.column_settings.beta.category": "Эксперыментальныя функцыі",
"notifications.column_settings.beta.grouping": "Групаваць апавяшчэннi",
"notifications.column_settings.favourite": "Упадабанае:", "notifications.column_settings.favourite": "Упадабанае:",
"notifications.column_settings.filter_bar.advanced": "Паказаць усе катэгорыі", "notifications.column_settings.filter_bar.advanced": "Паказаць усе катэгорыі",
"notifications.column_settings.filter_bar.category": "Панэль хуткай фільтрацыі", "notifications.column_settings.filter_bar.category": "Панэль хуткай фільтрацыі",
@ -659,9 +680,13 @@
"report.unfollow_explanation": "Вы падпісаныя на гэты ўліковы запіс. Каб не бачыць допісы з яго ў вашай стужцы, адпішыцеся.", "report.unfollow_explanation": "Вы падпісаныя на гэты ўліковы запіс. Каб не бачыць допісы з яго ў вашай стужцы, адпішыцеся.",
"report_notification.attached_statuses": "{count, plural, one {{count} допіс прымацаваны} few {{count} допісы прымацаваны} many {{count} допісаў прымацавана} other {{count} допісу прымацавана}}", "report_notification.attached_statuses": "{count, plural, one {{count} допіс прымацаваны} few {{count} допісы прымацаваны} many {{count} допісаў прымацавана} other {{count} допісу прымацавана}}",
"report_notification.categories.legal": "Права", "report_notification.categories.legal": "Права",
"report_notification.categories.legal_sentence": "нелегальнае змесціва",
"report_notification.categories.other": "Іншае", "report_notification.categories.other": "Іншае",
"report_notification.categories.other_sentence": "іншае",
"report_notification.categories.spam": "Спам", "report_notification.categories.spam": "Спам",
"report_notification.categories.spam_sentence": "спам",
"report_notification.categories.violation": "Парушэнне правілаў", "report_notification.categories.violation": "Парушэнне правілаў",
"report_notification.categories.violation_sentence": "парушэнне правілаў",
"report_notification.open": "Адкрыць скаргу", "report_notification.open": "Адкрыць скаргу",
"search.no_recent_searches": "Гісторыя пошуку пустая", "search.no_recent_searches": "Гісторыя пошуку пустая",
"search.placeholder": "Пошук", "search.placeholder": "Пошук",
@ -689,8 +714,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": "Сачыце за кім заўгодна ва ўсім fediverse і глядзіце ўсё ў храналагічным парадку. Ніякіх алгарытмаў, рэкламы або клікбэйту.",
"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}",
@ -765,8 +793,8 @@
"time_remaining.seconds": "{number, plural, one {засталася # секунда} few {засталося # секунды} many {засталося # секунд} other {засталося # секунды}}", "time_remaining.seconds": "{number, plural, one {засталася # секунда} few {засталося # секунды} many {засталося # секунд} other {засталося # секунды}}",
"timeline_hint.remote_resource_not_displayed": "{resource} з іншых сервераў не адлюстроўваецца.", "timeline_hint.remote_resource_not_displayed": "{resource} з іншых сервераў не адлюстроўваецца.",
"timeline_hint.resources.followers": "Падпісчыкі", "timeline_hint.resources.followers": "Падпісчыкі",
"timeline_hint.resources.follows": "Падпісаны на", "timeline_hint.resources.follows": "Падпіскі",
"timeline_hint.resources.statuses": "Старэйшыя допісы", "timeline_hint.resources.statuses": "Старыя допісы",
"trends.counter_by_accounts": "{count, plural, one {{counter} чалавек} few {{counter} чалавекі} many {{counter} людзей} other {{counter} чалавек}} за {days, plural, one {{days} апошні дзень} few {{days} апошнія дні} many {{days} апошніх дзён} other {{days} апошніх дзён}}", "trends.counter_by_accounts": "{count, plural, one {{counter} чалавек} few {{counter} чалавекі} many {{counter} людзей} other {{counter} чалавек}} за {days, plural, one {{days} апошні дзень} few {{days} апошнія дні} many {{days} апошніх дзён} other {{days} апошніх дзён}}",
"trends.trending_now": "Актуальнае", "trends.trending_now": "Актуальнае",
"ui.beforeunload": "Ваш чарнавік знішчыцца калі вы пакінеце Mastodon.", "ui.beforeunload": "Ваш чарнавік знішчыцца калі вы пакінеце Mastodon.",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} промени публикация", "notification.update": "{name} промени публикация",
"notification_requests.accept": "Приемам", "notification_requests.accept": "Приемам",
"notification_requests.dismiss": "Отхвърлям", "notification_requests.dismiss": "Отхвърлям",
"notification_requests.maximize": "Максимизиране",
"notification_requests.minimize_banner": "Минимизиране на банера за филтрирани известия",
"notification_requests.notifications_from": "Известия от {name}", "notification_requests.notifications_from": "Известия от {name}",
"notification_requests.title": "Филтрирани известия", "notification_requests.title": "Филтрирани известия",
"notifications.clear": "Изчистване на известията", "notifications.clear": "Изчистване на известията",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} ha editat un tut", "notification.update": "{name} ha editat un tut",
"notification_requests.accept": "Accepta", "notification_requests.accept": "Accepta",
"notification_requests.dismiss": "Ignora", "notification_requests.dismiss": "Ignora",
"notification_requests.maximize": "Maximitza",
"notification_requests.minimize_banner": "Minimitza el bàner de notificacions filtrades",
"notification_requests.notifications_from": "Notificacions de {name}", "notification_requests.notifications_from": "Notificacions de {name}",
"notification_requests.title": "Notificacions filtrades", "notification_requests.title": "Notificacions filtrades",
"notifications.clear": "Esborra les notificacions", "notifications.clear": "Esborra les notificacions",

View File

@ -171,21 +171,28 @@
"confirmations.block.confirm": "Blokovat", "confirmations.block.confirm": "Blokovat",
"confirmations.delete.confirm": "Smazat", "confirmations.delete.confirm": "Smazat",
"confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?", "confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?",
"confirmations.delete.title": "Smazat příspěvek?",
"confirmations.delete_list.confirm": "Smazat", "confirmations.delete_list.confirm": "Smazat",
"confirmations.delete_list.message": "Opravdu chcete tento seznam navždy smazat?", "confirmations.delete_list.message": "Opravdu chcete tento seznam navždy smazat?",
"confirmations.delete_list.title": "Smazat seznam?",
"confirmations.discard_edit_media.confirm": "Zahodit", "confirmations.discard_edit_media.confirm": "Zahodit",
"confirmations.discard_edit_media.message": "Máte neuložené změny popisku médií nebo náhledu, chcete je přesto zahodit?", "confirmations.discard_edit_media.message": "Máte neuložené změny popisku médií nebo náhledu, chcete je přesto zahodit?",
"confirmations.edit.confirm": "Upravit", "confirmations.edit.confirm": "Upravit",
"confirmations.edit.message": "Editovat teď znamená přepsání zprávy, kterou právě tvoříte. Opravdu chcete pokračovat?", "confirmations.edit.message": "Editovat teď znamená přepsání zprávy, kterou právě tvoříte. Opravdu chcete pokračovat?",
"confirmations.edit.title": "Přepsat příspěvek?",
"confirmations.logout.confirm": "Odhlásit se", "confirmations.logout.confirm": "Odhlásit se",
"confirmations.logout.message": "Opravdu se chcete odhlásit?", "confirmations.logout.message": "Opravdu se chcete odhlásit?",
"confirmations.logout.title": "Odhlásit se?",
"confirmations.mute.confirm": "Skrýt", "confirmations.mute.confirm": "Skrýt",
"confirmations.redraft.confirm": "Smazat a přepsat", "confirmations.redraft.confirm": "Smazat a přepsat",
"confirmations.redraft.message": "Jste si jistí, že chcete odstranit tento příspěvek a vytvořit z něj koncept? Oblíbené a boosty budou ztraceny a odpovědi na původní příspěvek ztratí kontext.", "confirmations.redraft.message": "Jste si jistí, že chcete odstranit tento příspěvek a vytvořit z něj koncept? Oblíbené a boosty budou ztraceny a odpovědi na původní příspěvek ztratí kontext.",
"confirmations.redraft.title": "Smazat a přepracovat příspěvek na koncept?",
"confirmations.reply.confirm": "Odpovědět", "confirmations.reply.confirm": "Odpovědět",
"confirmations.reply.message": "Odpověď přepíše vaši rozepsanou zprávu. Opravdu chcete pokračovat?", "confirmations.reply.message": "Odpověď přepíše vaši rozepsanou zprávu. Opravdu chcete pokračovat?",
"confirmations.reply.title": "Přepsat příspěvek?",
"confirmations.unfollow.confirm": "Přestat sledovat", "confirmations.unfollow.confirm": "Přestat sledovat",
"confirmations.unfollow.message": "Opravdu chcete {name} přestat sledovat?", "confirmations.unfollow.message": "Opravdu chcete {name} přestat sledovat?",
"confirmations.unfollow.title": "Přestat sledovat uživatele?",
"conversation.delete": "Smazat konverzaci", "conversation.delete": "Smazat konverzaci",
"conversation.mark_as_read": "Označit jako přečtené", "conversation.mark_as_read": "Označit jako přečtené",
"conversation.open": "Zobrazit konverzaci", "conversation.open": "Zobrazit konverzaci",
@ -479,6 +486,7 @@
"notification.moderation_warning.action_silence": "Váš účet byl omezen.", "notification.moderation_warning.action_silence": "Váš účet byl omezen.",
"notification.moderation_warning.action_suspend": "Váš účet byl pozastaven.", "notification.moderation_warning.action_suspend": "Váš účet byl pozastaven.",
"notification.own_poll": "Vaše anketa skončila", "notification.own_poll": "Vaše anketa skončila",
"notification.poll": "Anketa, ve které jste hlasovali, skončila",
"notification.reblog": "Uživatel {name} boostnul váš příspěvek", "notification.reblog": "Uživatel {name} boostnul váš příspěvek",
"notification.relationships_severance_event": "Kontakt ztracen s {name}", "notification.relationships_severance_event": "Kontakt ztracen s {name}",
"notification.relationships_severance_event.account_suspension": "Administrátor z {from} pozastavil {target}, což znamená, že již od nich nemůžete přijímat aktualizace nebo s nimi interagovat.", "notification.relationships_severance_event.account_suspension": "Administrátor z {from} pozastavil {target}, což znamená, že již od nich nemůžete přijímat aktualizace nebo s nimi interagovat.",
@ -489,13 +497,17 @@
"notification.update": "Uživatel {name} upravil příspěvek", "notification.update": "Uživatel {name} upravil příspěvek",
"notification_requests.accept": "Přijmout", "notification_requests.accept": "Přijmout",
"notification_requests.dismiss": "Zamítnout", "notification_requests.dismiss": "Zamítnout",
"notification_requests.maximize": "Maximalizovat",
"notification_requests.minimize_banner": "Minimalizovat banner filtrovaných oznámení",
"notification_requests.notifications_from": "Oznámení od {name}", "notification_requests.notifications_from": "Oznámení od {name}",
"notification_requests.title": "Vyfiltrovaná oznámení", "notification_requests.title": "Vyfiltrovaná oznámení",
"notifications.clear": "Vyčistit oznámení", "notifications.clear": "Vyčistit oznámení",
"notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?", "notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?",
"notifications.clear_title": "Vyčistit oznámení?",
"notifications.column_settings.admin.report": "Nová hlášení:", "notifications.column_settings.admin.report": "Nová hlášení:",
"notifications.column_settings.admin.sign_up": "Nové registrace:", "notifications.column_settings.admin.sign_up": "Nové registrace:",
"notifications.column_settings.alert": "Oznámení na počítači", "notifications.column_settings.alert": "Oznámení na počítači",
"notifications.column_settings.beta.category": "Experimentální funkce",
"notifications.column_settings.favourite": "Oblíbené:", "notifications.column_settings.favourite": "Oblíbené:",
"notifications.column_settings.filter_bar.advanced": "Zobrazit všechny kategorie", "notifications.column_settings.filter_bar.advanced": "Zobrazit všechny kategorie",
"notifications.column_settings.filter_bar.category": "Panel rychlého filtrování", "notifications.column_settings.filter_bar.category": "Panel rychlého filtrování",
@ -659,9 +671,13 @@
"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": "Právní ustanovení", "report_notification.categories.legal": "Právní ustanovení",
"report_notification.categories.legal_sentence": "nezákonný obsah",
"report_notification.categories.other": "Ostatní", "report_notification.categories.other": "Ostatní",
"report_notification.categories.other_sentence": "další",
"report_notification.categories.spam": "Spam", "report_notification.categories.spam": "Spam",
"report_notification.categories.spam_sentence": "spam",
"report_notification.categories.violation": "Porušení pravidla", "report_notification.categories.violation": "Porušení pravidla",
"report_notification.categories.violation_sentence": "porušení pravidla",
"report_notification.open": "Otevřít hlášení", "report_notification.open": "Otevřít hlášení",
"search.no_recent_searches": "Žádná nedávná vyhledávání", "search.no_recent_searches": "Žádná nedávná vyhledávání",
"search.placeholder": "Hledat", "search.placeholder": "Hledat",

View File

@ -3,7 +3,7 @@
"about.contact": "Cysylltwch â:", "about.contact": "Cysylltwch â:",
"about.disclaimer": "Mae Mastodon yn feddalwedd cod agored rhydd ac o dan hawlfraint Mastodon gGmbH.", "about.disclaimer": "Mae Mastodon yn feddalwedd cod agored rhydd ac o dan hawlfraint Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael", "about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael",
"about.domain_blocks.preamble": "Fel rheol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.", "about.domain_blocks.preamble": "Fel rheol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffedysawd a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.",
"about.domain_blocks.silenced.explanation": "Fel rheol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.", "about.domain_blocks.silenced.explanation": "Fel rheol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.",
"about.domain_blocks.silenced.title": "Cyfyngedig", "about.domain_blocks.silenced.title": "Cyfyngedig",
"about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei gadw na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.", "about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei gadw na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.",
@ -503,6 +503,7 @@
"notification.update": "Golygodd {name} bostiad", "notification.update": "Golygodd {name} bostiad",
"notification_requests.accept": "Derbyn", "notification_requests.accept": "Derbyn",
"notification_requests.dismiss": "Cau", "notification_requests.dismiss": "Cau",
"notification_requests.maximize": "Mwyhau",
"notification_requests.notifications_from": "Hysbysiadau gan {name}", "notification_requests.notifications_from": "Hysbysiadau gan {name}",
"notification_requests.title": "Hysbysiadau wedi'u hidlo", "notification_requests.title": "Hysbysiadau wedi'u hidlo",
"notifications.clear": "Clirio hysbysiadau", "notifications.clear": "Clirio hysbysiadau",
@ -710,8 +711,11 @@
"server_banner.about_active_users": "Pobl sy'n defnyddio'r gweinydd hwn yn ystod y 30 diwrnod diwethaf (Defnyddwyr Gweithredol Misol)", "server_banner.about_active_users": "Pobl sy'n defnyddio'r gweinydd hwn yn ystod y 30 diwrnod diwethaf (Defnyddwyr Gweithredol Misol)",
"server_banner.active_users": "defnyddwyr gweithredol", "server_banner.active_users": "defnyddwyr gweithredol",
"server_banner.administered_by": "Gweinyddir gan:", "server_banner.administered_by": "Gweinyddir gan:",
"server_banner.is_one_of_many": "Mae {domain} yn un o'r nifer o weinyddion Mastodon annibynnol y gallwch eu defnyddio i gymryd rhan yn y ffedysawd.",
"server_banner.server_stats": "Ystadegau'r gweinydd:", "server_banner.server_stats": "Ystadegau'r gweinydd:",
"sign_in_banner.create_account": "Creu cyfrif", "sign_in_banner.create_account": "Creu cyfrif",
"sign_in_banner.follow_anyone": "Dilynwch unrhyw un ar draws y ffedysawd a gweld y cyfan mewn trefn gronolegol. Dim algorithmau, hysbysebion, na straeon er mwyn cliciadau yn y golwg.",
"sign_in_banner.mastodon_is": "Mastodon yw'r ffordd orau o gadw i fyny â'r hyn sy'n digwydd.",
"sign_in_banner.sign_in": "Mewngofnodi", "sign_in_banner.sign_in": "Mewngofnodi",
"sign_in_banner.sso_redirect": "Mewngofnodi neu Gofrestru", "sign_in_banner.sso_redirect": "Mewngofnodi neu Gofrestru",
"status.admin_account": "Agor rhyngwyneb cymedroli ar gyfer @{name}", "status.admin_account": "Agor rhyngwyneb cymedroli ar gyfer @{name}",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} redigerede et indlæg", "notification.update": "{name} redigerede et indlæg",
"notification_requests.accept": "Acceptér", "notification_requests.accept": "Acceptér",
"notification_requests.dismiss": "Afvis", "notification_requests.dismiss": "Afvis",
"notification_requests.maximize": "Maksimér",
"notification_requests.minimize_banner": "Minimér filtrerede notifikationsbanner",
"notification_requests.notifications_from": "Notifikationer fra {name}", "notification_requests.notifications_from": "Notifikationer fra {name}",
"notification_requests.title": "Filtrerede notifikationer", "notification_requests.title": "Filtrerede notifikationer",
"notifications.clear": "Ryd notifikationer", "notifications.clear": "Ryd notifikationer",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} bearbeitete einen Beitrag", "notification.update": "{name} bearbeitete einen Beitrag",
"notification_requests.accept": "Akzeptieren", "notification_requests.accept": "Akzeptieren",
"notification_requests.dismiss": "Ablehnen", "notification_requests.dismiss": "Ablehnen",
"notification_requests.maximize": "Maximieren",
"notification_requests.minimize_banner": "Banner für gefilterte Benachrichtigungen minimieren",
"notification_requests.notifications_from": "Benachrichtigungen von {name}", "notification_requests.notifications_from": "Benachrichtigungen von {name}",
"notification_requests.title": "Gefilterte Benachrichtigungen", "notification_requests.title": "Gefilterte Benachrichtigungen",
"notifications.clear": "Benachrichtigungen löschen", "notifications.clear": "Benachrichtigungen löschen",
@ -687,7 +689,7 @@
"report_notification.categories.violation_sentence": "Regelverletzung", "report_notification.categories.violation_sentence": "Regelverletzung",
"report_notification.open": "Meldung öffnen", "report_notification.open": "Meldung öffnen",
"search.no_recent_searches": "Keine früheren Suchanfragen", "search.no_recent_searches": "Keine früheren Suchanfragen",
"search.placeholder": "Suche", "search.placeholder": "Suchen",
"search.quick_action.account_search": "Profile passend zu {x}", "search.quick_action.account_search": "Profile passend zu {x}",
"search.quick_action.go_to_account": "Profil {x} aufrufen", "search.quick_action.go_to_account": "Profil {x} aufrufen",
"search.quick_action.go_to_hashtag": "Hashtag {x} aufrufen", "search.quick_action.go_to_hashtag": "Hashtag {x} aufrufen",

View File

@ -11,7 +11,7 @@
"about.not_available": "This information has not been made available on this server.", "about.not_available": "This information has not been made available on this server.",
"about.powered_by": "Decentralized social media powered by {mastodon}", "about.powered_by": "Decentralized social media powered by {mastodon}",
"about.rules": "Server rules", "about.rules": "Server rules",
"account.account_note_header": "Note", "account.account_note_header": "Personal note",
"account.add_or_remove_from_list": "Add or Remove from lists", "account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Automated", "account.badges.bot": "Automated",
"account.badges.group": "Group", "account.badges.group": "Group",
@ -506,7 +506,7 @@
"notification_requests.accept": "Accept", "notification_requests.accept": "Accept",
"notification_requests.dismiss": "Dismiss", "notification_requests.dismiss": "Dismiss",
"notification_requests.maximize": "Maximize", "notification_requests.maximize": "Maximize",
"notification_requests.minimize_banner": "Minimize filtred notifications banner", "notification_requests.minimize_banner": "Minimize filtered notifications banner",
"notification_requests.notifications_from": "Notifications from {name}", "notification_requests.notifications_from": "Notifications from {name}",
"notification_requests.title": "Filtered notifications", "notification_requests.title": "Filtered notifications",
"notifications.clear": "Clear notifications", "notifications.clear": "Clear notifications",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} editó un mensaje", "notification.update": "{name} editó un mensaje",
"notification_requests.accept": "Aceptar", "notification_requests.accept": "Aceptar",
"notification_requests.dismiss": "Descartar", "notification_requests.dismiss": "Descartar",
"notification_requests.maximize": "Maximizar",
"notification_requests.minimize_banner": "Minimizar la barra de notificaciones filtradas",
"notification_requests.notifications_from": "Notificaciones de {name}", "notification_requests.notifications_from": "Notificaciones de {name}",
"notification_requests.title": "Notificaciones filtradas", "notification_requests.title": "Notificaciones filtradas",
"notifications.clear": "Limpiar notificaciones", "notifications.clear": "Limpiar notificaciones",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} editó una publicación", "notification.update": "{name} editó una publicación",
"notification_requests.accept": "Aceptar", "notification_requests.accept": "Aceptar",
"notification_requests.dismiss": "Descartar", "notification_requests.dismiss": "Descartar",
"notification_requests.maximize": "Maximizar",
"notification_requests.minimize_banner": "Minimizar banner de notificaciones filtradas",
"notification_requests.notifications_from": "Notificaciones de {name}", "notification_requests.notifications_from": "Notificaciones de {name}",
"notification_requests.title": "Notificaciones filtradas", "notification_requests.title": "Notificaciones filtradas",
"notifications.clear": "Limpiar notificaciones", "notifications.clear": "Limpiar notificaciones",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} editó una publicación", "notification.update": "{name} editó una publicación",
"notification_requests.accept": "Aceptar", "notification_requests.accept": "Aceptar",
"notification_requests.dismiss": "Descartar", "notification_requests.dismiss": "Descartar",
"notification_requests.maximize": "Maximizar",
"notification_requests.minimize_banner": "Minimizar banner de notificaciones filtradas",
"notification_requests.notifications_from": "Notificaciones de {name}", "notification_requests.notifications_from": "Notificaciones de {name}",
"notification_requests.title": "Notificaciones filtradas", "notification_requests.title": "Notificaciones filtradas",
"notifications.clear": "Limpiar notificaciones", "notifications.clear": "Limpiar notificaciones",

View File

@ -86,6 +86,10 @@
"announcement.announcement": "اعلامیه", "announcement.announcement": "اعلامیه",
"attachments_list.unprocessed": "(پردازش نشده)", "attachments_list.unprocessed": "(پردازش نشده)",
"audio.hide": "نهفتن صدا", "audio.hide": "نهفتن صدا",
"block_modal.show_less": "نمایش کم‌تر",
"block_modal.show_more": "نمایش بیش‌تر",
"block_modal.title": "انسداد کاربر؟",
"block_modal.you_wont_see_mentions": "فرسته‌هایی که از اون نام برده را نخواهید دید.",
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
"bundle_column_error.copy_stacktrace": "رونوشت از گزارش خطا", "bundle_column_error.copy_stacktrace": "رونوشت از گزارش خطا",
"bundle_column_error.error.body": "صفحهٔ درخواستی نتوانست پرداخت شود. ممکن است به خاطر اشکالی در کدمان یا مشکل سازگاری مرورگر باشد.", "bundle_column_error.error.body": "صفحهٔ درخواستی نتوانست پرداخت شود. ممکن است به خاطر اشکالی در کدمان یا مشکل سازگاری مرورگر باشد.",
@ -160,21 +164,28 @@
"confirmations.block.confirm": "انسداد", "confirmations.block.confirm": "انسداد",
"confirmations.delete.confirm": "حذف", "confirmations.delete.confirm": "حذف",
"confirmations.delete.message": "آیا مطمئنید که می‌خواهید این فرسته را حذف کنید؟", "confirmations.delete.message": "آیا مطمئنید که می‌خواهید این فرسته را حذف کنید؟",
"confirmations.delete.title": "حذف فرسته؟",
"confirmations.delete_list.confirm": "حذف", "confirmations.delete_list.confirm": "حذف",
"confirmations.delete_list.message": "مطمئنید می‌خواهید این سیاهه را برای همیشه حذف کنید؟", "confirmations.delete_list.message": "مطمئنید می‌خواهید این سیاهه را برای همیشه حذف کنید؟",
"confirmations.delete_list.title": "حذف سیاهه؟",
"confirmations.discard_edit_media.confirm": "دور انداختن", "confirmations.discard_edit_media.confirm": "دور انداختن",
"confirmations.discard_edit_media.message": "تغییرات ذخیره نشده‌ای در توضیحات یا پیش‌نمایش رسانه دارید. همگی نادیده گرفته شوند؟", "confirmations.discard_edit_media.message": "تغییرات ذخیره نشده‌ای در توضیحات یا پیش‌نمایش رسانه دارید. همگی نادیده گرفته شوند؟",
"confirmations.edit.confirm": "ویرایش", "confirmations.edit.confirm": "ویرایش",
"confirmations.edit.message": "در صورت ویرایش، پیامی که در حال نوشتنش بودید از بین خواهد رفت. می‌خواهید ادامه دهید؟", "confirmations.edit.message": "در صورت ویرایش، پیامی که در حال نوشتنش بودید از بین خواهد رفت. می‌خواهید ادامه دهید؟",
"confirmations.edit.title": "رونویسی فرسته؟",
"confirmations.logout.confirm": "خروج از حساب", "confirmations.logout.confirm": "خروج از حساب",
"confirmations.logout.message": "مطمئنید می‌خواهید خارج شوید؟", "confirmations.logout.message": "مطمئنید می‌خواهید خارج شوید؟",
"confirmations.logout.title": "خروج؟",
"confirmations.mute.confirm": "خموش", "confirmations.mute.confirm": "خموش",
"confirmations.redraft.confirm": "حذف و بازنویسی", "confirmations.redraft.confirm": "حذف و بازنویسی",
"confirmations.redraft.message": "مطمئنید که می‌خواهید این فرسته را حذف کنید و از نو بنویسید؟ با این کار تقویت‌ها و پسندهایش از دست رفته و پاسخ‌ها به آن بی‌مرجع می‌شود.", "confirmations.redraft.message": "مطمئنید که می‌خواهید این فرسته را حذف کنید و از نو بنویسید؟ با این کار تقویت‌ها و پسندهایش از دست رفته و پاسخ‌ها به آن بی‌مرجع می‌شود.",
"confirmations.redraft.title": "حذف و پیش‌نویسی دوبارهٔ فرسته؟",
"confirmations.reply.confirm": "پاسخ", "confirmations.reply.confirm": "پاسخ",
"confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. می‌خواهید ادامه دهید؟", "confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. می‌خواهید ادامه دهید؟",
"confirmations.reply.title": "رونویسی فرسته؟",
"confirmations.unfollow.confirm": "پی‌نگرفتن", "confirmations.unfollow.confirm": "پی‌نگرفتن",
"confirmations.unfollow.message": "مطمئنید که می‌خواهید به پی‌گیری از {name} پایان دهید؟", "confirmations.unfollow.message": "مطمئنید که می‌خواهید به پی‌گیری از {name} پایان دهید؟",
"confirmations.unfollow.title": "ناپی‌گیری کاربر؟",
"conversation.delete": "حذف گفتگو", "conversation.delete": "حذف گفتگو",
"conversation.mark_as_read": "علامت‌گذاری به عنوان خوانده شده", "conversation.mark_as_read": "علامت‌گذاری به عنوان خوانده شده",
"conversation.open": "دیدن گفتگو", "conversation.open": "دیدن گفتگو",
@ -194,6 +205,10 @@
"dismissable_banner.explore_statuses": "هم‌اکنون این فرسته‌ها از این کارساز و دیگر کارسازهای شبکهٔ نامتمرکز داغ شده‌اند.", "dismissable_banner.explore_statuses": "هم‌اکنون این فرسته‌ها از این کارساز و دیگر کارسازهای شبکهٔ نامتمرکز داغ شده‌اند.",
"dismissable_banner.explore_tags": "هم‌اکنون این برچسب‌ها بین افراد این کارساز و دیگر کارسازهای شبکهٔ نامتمرکز داغ شده‌اند.", "dismissable_banner.explore_tags": "هم‌اکنون این برچسب‌ها بین افراد این کارساز و دیگر کارسازهای شبکهٔ نامتمرکز داغ شده‌اند.",
"dismissable_banner.public_timeline": "این‌ها جدیدترین فرسته‌های عمومی از افرادی روی وب اجتماعیند که اعضای {domain} پی می‌گیرندشان.", "dismissable_banner.public_timeline": "این‌ها جدیدترین فرسته‌های عمومی از افرادی روی وب اجتماعیند که اعضای {domain} پی می‌گیرندشان.",
"domain_block_modal.block": "انسداد کارساز",
"domain_block_modal.title": "انسداد دامنه؟",
"domain_pill.server": "کارساز",
"domain_pill.username": "نام کاربری",
"embed.instructions": "جاسازی این فرسته روی پایگاهتان با رونوشت کردن کد زیر.", "embed.instructions": "جاسازی این فرسته روی پایگاهتان با رونوشت کردن کد زیر.",
"embed.preview": "این گونه دیده خواهد شد:", "embed.preview": "این گونه دیده خواهد شد:",
"emoji_button.activity": "فعالیت", "emoji_button.activity": "فعالیت",
@ -388,6 +403,8 @@
"loading_indicator.label": "در حال بارگذاری…", "loading_indicator.label": "در حال بارگذاری…",
"media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}", "media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}",
"moved_to_account_banner.text": "حسابتان {disabledAccount} اکنون از کار افتاده؛ چرا که به {movedToAccount} منتقل شدید.", "moved_to_account_banner.text": "حسابتان {disabledAccount} اکنون از کار افتاده؛ چرا که به {movedToAccount} منتقل شدید.",
"mute_modal.show_options": "نمایش گزینه‌ها",
"mute_modal.title": "خموشی کاربر؟",
"navigation_bar.about": "درباره", "navigation_bar.about": "درباره",
"navigation_bar.advanced_interface": "بازکردن در رابط کاربری وب پیشرفته", "navigation_bar.advanced_interface": "بازکردن در رابط کاربری وب پیشرفته",
"navigation_bar.blocks": "کاربران مسدود شده", "navigation_bar.blocks": "کاربران مسدود شده",
@ -420,15 +437,21 @@
"notification.follow": "{name} پی‌گیرتان شد", "notification.follow": "{name} پی‌گیرتان شد",
"notification.follow_request": "{name} درخواست پی‌گیریتان را داد", "notification.follow_request": "{name} درخواست پی‌گیریتان را داد",
"notification.mention": "{name} به شما اشاره کرد", "notification.mention": "{name} به شما اشاره کرد",
"notification.moderation-warning.learn_more": "بیشتر بدانید",
"notification.own_poll": "نظرسنجیتان پایان یافت", "notification.own_poll": "نظرسنجیتان پایان یافت",
"notification.reblog": "{name} فرسته‌تان را تقویت کرد", "notification.reblog": "{name} فرسته‌تان را تقویت کرد",
"notification.relationships_severance_event.learn_more": "بیشتر بدانید",
"notification.status": "{name} چیزی فرستاد", "notification.status": "{name} چیزی فرستاد",
"notification.update": "{name} فرسته‌ای را ویرایش کرد", "notification.update": "{name} فرسته‌ای را ویرایش کرد",
"notification_requests.accept": "پذیرش",
"notification_requests.dismiss": "دورانداختن",
"notification_requests.maximize": "بیشنه",
"notifications.clear": "پاک‌سازی آگاهی‌ها", "notifications.clear": "پاک‌سازی آگاهی‌ها",
"notifications.clear_confirmation": "مطمئنید می‌خواهید همهٔ آگاهی‌هایتان را برای همیشه پاک کنید؟", "notifications.clear_confirmation": "مطمئنید می‌خواهید همهٔ آگاهی‌هایتان را برای همیشه پاک کنید؟",
"notifications.column_settings.admin.report": "گزارش‌های جدید:", "notifications.column_settings.admin.report": "گزارش‌های جدید:",
"notifications.column_settings.admin.sign_up": "ثبت نام‌های جدید:", "notifications.column_settings.admin.sign_up": "ثبت نام‌های جدید:",
"notifications.column_settings.alert": "آگاهی‌های میزکار", "notifications.column_settings.alert": "آگاهی‌های میزکار",
"notifications.column_settings.beta.category": "ویژگی‌های آزمایشی",
"notifications.column_settings.favourite": "برگزیده‌ها:", "notifications.column_settings.favourite": "برگزیده‌ها:",
"notifications.column_settings.follow": "پی‌گیرندگان جدید:", "notifications.column_settings.follow": "پی‌گیرندگان جدید:",
"notifications.column_settings.follow_request": "درخواست‌های جدید پی‌گیری:", "notifications.column_settings.follow_request": "درخواست‌های جدید پی‌گیری:",
@ -583,8 +606,11 @@
"report.unfollow_explanation": "شما این حساب را پی‌گرفته‌اید، برای اینکه دیگر فرسته‌هایش را در خوراک خانه‌تان نبینید؛ آن را پی‌نگیرید.", "report.unfollow_explanation": "شما این حساب را پی‌گرفته‌اید، برای اینکه دیگر فرسته‌هایش را در خوراک خانه‌تان نبینید؛ آن را پی‌نگیرید.",
"report_notification.attached_statuses": "{count, plural, one {{count} فرسته} other {{count} فرسته}} پیوست شده", "report_notification.attached_statuses": "{count, plural, one {{count} فرسته} other {{count} فرسته}} پیوست شده",
"report_notification.categories.legal": "قانونی", "report_notification.categories.legal": "قانونی",
"report_notification.categories.legal_sentence": "محتوای غیرقانونی",
"report_notification.categories.other": "دیگر", "report_notification.categories.other": "دیگر",
"report_notification.categories.other_sentence": "دیگر",
"report_notification.categories.spam": "هرزنامه", "report_notification.categories.spam": "هرزنامه",
"report_notification.categories.spam_sentence": "هرزنامه",
"report_notification.categories.violation": "تخطّی از قانون", "report_notification.categories.violation": "تخطّی از قانون",
"report_notification.open": "گشودن گزارش", "report_notification.open": "گشودن گزارش",
"search.no_recent_searches": "جست‌وجوی اخیری نیست", "search.no_recent_searches": "جست‌وجوی اخیری نیست",

View File

@ -3,7 +3,7 @@
"about.contact": "Yhteydenotto:", "about.contact": "Yhteydenotto:",
"about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.", "about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.",
"about.domain_blocks.no_reason_available": "Syy ei ole tiedossa", "about.domain_blocks.no_reason_available": "Syy ei ole tiedossa",
"about.domain_blocks.preamble": "Mastodonin avulla voidaan yleensä tarkastella minkä tahansa fediversumiin kuuluvan palvelimen sisältöä, ja olla yhteyksissä eri palvelinten käyttäjien kanssa. Nämä poikkeukset koskevat yksin tätä palvelinta.", "about.domain_blocks.preamble": "Mastodonin avulla voi yleensä tarkastella minkä tahansa fediversumiin kuuluvan palvelimen sisältöä ja olla yhteyksissä eri palvelinten käyttäjien kanssa. Nämä poikkeukset koskevat yksin tätä palvelinta.",
"about.domain_blocks.silenced.explanation": "Et yleensä näe tämän palvelimen profiileja ja sisältöä, jollet erityisesti etsi juuri sitä tai liity siihen seuraamalla.", "about.domain_blocks.silenced.explanation": "Et yleensä näe tämän palvelimen profiileja ja sisältöä, jollet erityisesti etsi juuri sitä tai liity siihen seuraamalla.",
"about.domain_blocks.silenced.title": "Rajoitettu", "about.domain_blocks.silenced.title": "Rajoitettu",
"about.domain_blocks.suspended.explanation": "Mitään tämän palvelimen tietoja ei käsitellä, tallenneta eikä vaihdeta, mikä tekee vuorovaikutuksesta ja viestinnästä sen käyttäjien kanssa mahdotonta.", "about.domain_blocks.suspended.explanation": "Mitään tämän palvelimen tietoja ei käsitellä, tallenneta eikä vaihdeta, mikä tekee vuorovaikutuksesta ja viestinnästä sen käyttäjien kanssa mahdotonta.",
@ -30,7 +30,7 @@
"account.endorse": "Suosittele profiilissasi", "account.endorse": "Suosittele profiilissasi",
"account.featured_tags.last_status_at": "Viimeisin julkaisu {date}", "account.featured_tags.last_status_at": "Viimeisin julkaisu {date}",
"account.featured_tags.last_status_never": "Ei julkaisuja", "account.featured_tags.last_status_never": "Ei julkaisuja",
"account.featured_tags.title": "Käyttäjän {name} esille nostamat aihetunnisteet", "account.featured_tags.title": "Käyttäjän {name} suosittelemat aihetunnisteet",
"account.follow": "Seuraa", "account.follow": "Seuraa",
"account.follow_back": "Seuraa takaisin", "account.follow_back": "Seuraa takaisin",
"account.followers": "Seuraajat", "account.followers": "Seuraajat",
@ -143,7 +143,7 @@
"community.column_settings.media_only": "Vain media", "community.column_settings.media_only": "Vain media",
"community.column_settings.remote_only": "Vain etätilit", "community.column_settings.remote_only": "Vain etätilit",
"compose.language.change": "Vaihda kieli", "compose.language.change": "Vaihda kieli",
"compose.language.search": "Hae kieliä...", "compose.language.search": "Hae kieliä",
"compose.published.body": "Julkaisu lähetetty.", "compose.published.body": "Julkaisu lähetetty.",
"compose.published.open": "Avaa", "compose.published.open": "Avaa",
"compose.saved.body": "Julkaisu tallennettu.", "compose.saved.body": "Julkaisu tallennettu.",
@ -228,8 +228,8 @@
"domain_pill.their_username": "Hänen yksilöllinen tunnisteensa omalla palvelimellaan. Eri palvelimilta on mahdollista löytää käyttäjiä, joilla on sama käyttäjänimi.", "domain_pill.their_username": "Hänen yksilöllinen tunnisteensa omalla palvelimellaan. Eri palvelimilta on mahdollista löytää käyttäjiä, joilla on sama käyttäjänimi.",
"domain_pill.username": "Käyttäjänimi", "domain_pill.username": "Käyttäjänimi",
"domain_pill.whats_in_a_handle": "Mitä käyttäjätunnuksessa on?", "domain_pill.whats_in_a_handle": "Mitä käyttäjätunnuksessa on?",
"domain_pill.who_they_are": "Koska käyttäjätunnukset kertovat, kuka ja missä joku on, voit olla vuorovaikutuksessa ihmisten kanssa kaikkialla sosiaalisessa verkossa, joka koostuu <button>ActivityPub-pohjaisista alustoista</button>.", "domain_pill.who_they_are": "Koska käyttäjätunnukset kertovat, kuka ja missä joku on, voit olla vuorovaikutuksessa käyttäjien kanssa kaikkialla sosiaalisessa verkossa, joka koostuu <button>ActivityPub-pohjaisista alustoista</button>.",
"domain_pill.who_you_are": "Koska käyttäjätunnuksesi kertoo, kuka ja missä olet, ihmiset voivat olla vaikutuksessa kanssasi kaikkialla sosiaalisessa verkossa, joka koostuu <button>ActivityPub-pohjaisista alustoista</button>.", "domain_pill.who_you_are": "Koska käyttäjätunnuksesi kertoo, kuka ja missä olet, käyttäjät voivat olla vaikutuksessa kanssasi kaikkialla sosiaalisessa verkossa, joka koostuu <button>ActivityPub-pohjaisista alustoista</button>.",
"domain_pill.your_handle": "Käyttäjätunnuksesi:", "domain_pill.your_handle": "Käyttäjätunnuksesi:",
"domain_pill.your_server": "Digitaalinen kotisi, jossa kaikki julkaisusi sijaitsevat. Etkö pidä tästä? Siirry palvelimelta toiselle milloin tahansa ja tuo myös seuraajasi mukanasi.", "domain_pill.your_server": "Digitaalinen kotisi, jossa kaikki julkaisusi sijaitsevat. Etkö pidä tästä? Siirry palvelimelta toiselle milloin tahansa ja tuo myös seuraajasi mukanasi.",
"domain_pill.your_username": "Yksilöllinen tunnisteesi tällä palvelimella. Eri palvelimilta on mahdollista löytää käyttäjiä, joilla on sama käyttäjänimi.", "domain_pill.your_username": "Yksilöllinen tunnisteesi tällä palvelimella. Eri palvelimilta on mahdollista löytää käyttäjiä, joilla on sama käyttäjänimi.",
@ -246,7 +246,7 @@
"emoji_button.objects": "Esineet", "emoji_button.objects": "Esineet",
"emoji_button.people": "Ihmiset", "emoji_button.people": "Ihmiset",
"emoji_button.recent": "Usein käytetyt", "emoji_button.recent": "Usein käytetyt",
"emoji_button.search": "Hae...", "emoji_button.search": "Hae",
"emoji_button.search_results": "Hakutulokset", "emoji_button.search_results": "Hakutulokset",
"emoji_button.symbols": "Symbolit", "emoji_button.symbols": "Symbolit",
"emoji_button.travel": "Matkailu ja paikat", "emoji_button.travel": "Matkailu ja paikat",
@ -279,7 +279,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle", "errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle",
"errors.unexpected_crash.report_issue": "Ilmoita ongelmasta", "errors.unexpected_crash.report_issue": "Ilmoita ongelmasta",
"explore.search_results": "Hakutulokset", "explore.search_results": "Hakutulokset",
"explore.suggested_follows": "Henkilöt", "explore.suggested_follows": "Käyttäjät",
"explore.title": "Selaa", "explore.title": "Selaa",
"explore.trending_links": "Uutiset", "explore.trending_links": "Uutiset",
"explore.trending_statuses": "Julkaisut", "explore.trending_statuses": "Julkaisut",
@ -381,7 +381,7 @@
"keyboard_shortcuts.compose": "Kohdista kirjoituskenttään", "keyboard_shortcuts.compose": "Kohdista kirjoituskenttään",
"keyboard_shortcuts.description": "Kuvaus", "keyboard_shortcuts.description": "Kuvaus",
"keyboard_shortcuts.direct": "Avaa yksityismainintojen sarake", "keyboard_shortcuts.direct": "Avaa yksityismainintojen sarake",
"keyboard_shortcuts.down": "Siirry listassa alaspäin", "keyboard_shortcuts.down": "Siirry luettelossa eteenpäin",
"keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.enter": "Avaa julkaisu",
"keyboard_shortcuts.favourite": "Lisää julkaisu suosikkeihin", "keyboard_shortcuts.favourite": "Lisää julkaisu suosikkeihin",
"keyboard_shortcuts.favourites": "Avaa suosikkiluettelo", "keyboard_shortcuts.favourites": "Avaa suosikkiluettelo",
@ -401,13 +401,13 @@
"keyboard_shortcuts.reply": "Vastaa julkaisuun", "keyboard_shortcuts.reply": "Vastaa julkaisuun",
"keyboard_shortcuts.requests": "Avaa seurantapyyntöjen luettelo", "keyboard_shortcuts.requests": "Avaa seurantapyyntöjen luettelo",
"keyboard_shortcuts.search": "Kohdista hakukenttään", "keyboard_shortcuts.search": "Kohdista hakukenttään",
"keyboard_shortcuts.spoilers": "Näytä/piilota sisältövaroituskenttä", "keyboard_shortcuts.spoilers": "Näytä tai piilota sisältövaroituskenttä",
"keyboard_shortcuts.start": "Avaa Näin pääset alkuun -sarake", "keyboard_shortcuts.start": "Avaa Näin pääset alkuun -sarake",
"keyboard_shortcuts.toggle_hidden": "Näytä/piilota sisältövaroituksella merkitty teksti", "keyboard_shortcuts.toggle_hidden": "Näytä tai piilota sisältövaroituksella merkitty teksti",
"keyboard_shortcuts.toggle_sensitivity": "Näytä/piilota media", "keyboard_shortcuts.toggle_sensitivity": "Näytä tai piilota media",
"keyboard_shortcuts.toot": "Luo uusi julkaisu", "keyboard_shortcuts.toot": "Luo uusi julkaisu",
"keyboard_shortcuts.unfocus": "Poistu teksti-/hakukentästä", "keyboard_shortcuts.unfocus": "Poistu kirjoitus- tai hakukentästä",
"keyboard_shortcuts.up": "Siirry listassa ylöspäin", "keyboard_shortcuts.up": "Siirry luettelossa taaksepäin",
"lightbox.close": "Sulje", "lightbox.close": "Sulje",
"lightbox.compress": "Tiivis kuvankatselunäkymä", "lightbox.compress": "Tiivis kuvankatselunäkymä",
"lightbox.expand": "Laajennettu kuvankatselunäkymä", "lightbox.expand": "Laajennettu kuvankatselunäkymä",
@ -415,7 +415,7 @@
"lightbox.previous": "Edellinen", "lightbox.previous": "Edellinen",
"limited_account_hint.action": "Näytä profiili joka tapauksessa", "limited_account_hint.action": "Näytä profiili joka tapauksessa",
"limited_account_hint.title": "Palvelimen {domain} moderaattorit ovat piilottaneet tämän profiilin.", "limited_account_hint.title": "Palvelimen {domain} moderaattorit ovat piilottaneet tämän profiilin.",
"link_preview.author": "Julkaissut {name}", "link_preview.author": "Tehnyt {name}",
"link_preview.more_from_author": "Lisää tekijältä {name}", "link_preview.more_from_author": "Lisää tekijältä {name}",
"link_preview.shares": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}", "link_preview.shares": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}",
"lists.account.add": "Lisää listalle", "lists.account.add": "Lisää listalle",
@ -453,7 +453,7 @@
"navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.bookmarks": "Kirjanmerkit",
"navigation_bar.community_timeline": "Paikallinen aikajana", "navigation_bar.community_timeline": "Paikallinen aikajana",
"navigation_bar.compose": "Luo uusi julkaisu", "navigation_bar.compose": "Luo uusi julkaisu",
"navigation_bar.direct": "Yksityiset maininnat", "navigation_bar.direct": "Yksityismaininnat",
"navigation_bar.discover": "Löydä uutta", "navigation_bar.discover": "Löydä uutta",
"navigation_bar.domain_blocks": "Estetyt verkkotunnukset", "navigation_bar.domain_blocks": "Estetyt verkkotunnukset",
"navigation_bar.explore": "Selaa", "navigation_bar.explore": "Selaa",
@ -505,6 +505,8 @@
"notification.update": "{name} muokkasi julkaisua", "notification.update": "{name} muokkasi julkaisua",
"notification_requests.accept": "Hyväksy", "notification_requests.accept": "Hyväksy",
"notification_requests.dismiss": "Hylkää", "notification_requests.dismiss": "Hylkää",
"notification_requests.maximize": "Suurenna",
"notification_requests.minimize_banner": "Pienennä suodatettujen ilmoitusten palkki",
"notification_requests.notifications_from": "Ilmoitukset käyttäjältä {name}", "notification_requests.notifications_from": "Ilmoitukset käyttäjältä {name}",
"notification_requests.title": "Suodatetut ilmoitukset", "notification_requests.title": "Suodatetut ilmoitukset",
"notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear": "Tyhjennä ilmoitukset",
@ -581,7 +583,7 @@
"onboarding.start.lead": "Uusi Mastodon-tilisi on nyt valmiina käyttöön. Kyseessä on ainutlaatuinen, hajautettu sosiaalisen median alusta, jolla sinä itse algoritmin sijaan määrität käyttökokemuksesi. Näin hyödyt Mastodonista eniten:", "onboarding.start.lead": "Uusi Mastodon-tilisi on nyt valmiina käyttöön. Kyseessä on ainutlaatuinen, hajautettu sosiaalisen median alusta, jolla sinä itse algoritmin sijaan määrität käyttökokemuksesi. Näin hyödyt Mastodonista eniten:",
"onboarding.start.skip": "Haluatko hypätä suoraan eteenpäin ilman alkuunpääsyohjeistuksia?", "onboarding.start.skip": "Haluatko hypätä suoraan eteenpäin ilman alkuunpääsyohjeistuksia?",
"onboarding.start.title": "Olet tehnyt sen!", "onboarding.start.title": "Olet tehnyt sen!",
"onboarding.steps.follow_people.body": "Mastodon perustuu sinua kiinnostavien henkilöjen julkaisujen seuraamiseen.", "onboarding.steps.follow_people.body": "Mastodonissa on kyse kiinnostavien käyttäjien seuraamisesta.",
"onboarding.steps.follow_people.title": "Mukauta kotisyötettäsi", "onboarding.steps.follow_people.title": "Mukauta kotisyötettäsi",
"onboarding.steps.publish_status.body": "Tervehdi maailmaa sanoin, kuvin tai äänestyksin {emoji}", "onboarding.steps.publish_status.body": "Tervehdi maailmaa sanoin, kuvin tai äänestyksin {emoji}",
"onboarding.steps.publish_status.title": "Laadi ensimmäinen julkaisusi", "onboarding.steps.publish_status.title": "Laadi ensimmäinen julkaisusi",
@ -596,10 +598,10 @@
"password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden", "password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden",
"password_confirmation.mismatching": "Salasanan vahvistus ei täsmää", "password_confirmation.mismatching": "Salasanan vahvistus ei täsmää",
"picture_in_picture.restore": "Laita se takaisin", "picture_in_picture.restore": "Laita se takaisin",
"poll.closed": "Suljettu", "poll.closed": "Päättynyt",
"poll.refresh": "Päivitä", "poll.refresh": "Päivitä",
"poll.reveal": "Näytä tulokset", "poll.reveal": "Näytä tulokset",
"poll.total_people": "{count, plural, one {# henkilö} other {# henkilöä}}", "poll.total_people": "{count, plural, one {# käyttäjä} other {# käyttäjää}}",
"poll.total_votes": "{count, plural, one {# ääni} other {# ääntä}}", "poll.total_votes": "{count, plural, one {# ääni} other {# ääntä}}",
"poll.vote": "Äänestä", "poll.vote": "Äänestä",
"poll.voted": "Äänestit tätä vastausta", "poll.voted": "Äänestit tätä vastausta",
@ -608,7 +610,7 @@
"poll_button.remove_poll": "Poista äänestys", "poll_button.remove_poll": "Poista äänestys",
"privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.change": "Muuta julkaisun näkyvyyttä",
"privacy.direct.long": "Kaikki tässä julkaisussa mainitut", "privacy.direct.long": "Kaikki tässä julkaisussa mainitut",
"privacy.direct.short": "Tietyt henkilöt", "privacy.direct.short": "Tietyt käyttäjät",
"privacy.private.long": "Vain seuraajasi", "privacy.private.long": "Vain seuraajasi",
"privacy.private.short": "Seuraajat", "privacy.private.short": "Seuraajat",
"privacy.public.long": "Kuka tahansa Mastodonissa ja sen ulkopuolella", "privacy.public.long": "Kuka tahansa Mastodonissa ja sen ulkopuolella",
@ -730,7 +732,7 @@
"status.delete": "Poista", "status.delete": "Poista",
"status.detailed_status": "Yksityiskohtainen keskustelunäkymä", "status.detailed_status": "Yksityiskohtainen keskustelunäkymä",
"status.direct": "Mainitse @{name} yksityisesti", "status.direct": "Mainitse @{name} yksityisesti",
"status.direct_indicator": "Yksityinen maininta", "status.direct_indicator": "Yksityismaininta",
"status.edit": "Muokkaa", "status.edit": "Muokkaa",
"status.edited": "Viimeksi muokattu {date}", "status.edited": "Viimeksi muokattu {date}",
"status.edited_x_times": "Muokattu {count, plural, one {{count} kerran} other {{count} kertaa}}", "status.edited_x_times": "Muokattu {count, plural, one {{count} kerran} other {{count} kertaa}}",
@ -781,7 +783,7 @@
"status.unpin": "Irrota profiilista", "status.unpin": "Irrota profiilista",
"subscribed_languages.lead": "Vain valituilla kielillä kirjoitetut julkaisut näkyvät koti- ja lista-aikajanoillasi muutoksen jälkeen. Älä valitse mitään, jos haluat nähdä julkaisuja kaikilla kielillä.", "subscribed_languages.lead": "Vain valituilla kielillä kirjoitetut julkaisut näkyvät koti- ja lista-aikajanoillasi muutoksen jälkeen. Älä valitse mitään, jos haluat nähdä julkaisuja kaikilla kielillä.",
"subscribed_languages.save": "Tallenna muutokset", "subscribed_languages.save": "Tallenna muutokset",
"subscribed_languages.target": "Vaihda tilatut kielet {target}", "subscribed_languages.target": "Vaihda tilattuja kieliä käyttäjältä {target}",
"tabs_bar.home": "Koti", "tabs_bar.home": "Koti",
"tabs_bar.notifications": "Ilmoitukset", "tabs_bar.notifications": "Ilmoitukset",
"time_remaining.days": "{number, plural, one {# päivä} other {# päivää}} jäljellä", "time_remaining.days": "{number, plural, one {# päivä} other {# päivää}} jäljellä",
@ -793,7 +795,7 @@
"timeline_hint.resources.followers": "seuraajat", "timeline_hint.resources.followers": "seuraajat",
"timeline_hint.resources.follows": "seuratut", "timeline_hint.resources.follows": "seuratut",
"timeline_hint.resources.statuses": "vanhemmat julkaisut", "timeline_hint.resources.statuses": "vanhemmat julkaisut",
"trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} {days, plural, one {viime päivänä} other {viimeisenä {days} päivänä}}", "trends.counter_by_accounts": "{count, plural, one {{counter} käyttäjä} other {{counter} käyttäjää}} {days, plural, one {viime päivänä} other {viimeisenä {days} päivänä}}",
"trends.trending_now": "Suosittua nyt", "trends.trending_now": "Suosittua nyt",
"ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.", "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
"units.short.billion": "{count} mrd.", "units.short.billion": "{count} mrd.",
@ -818,7 +820,7 @@
"upload_modal.hint": "Napsauta tai vedä ympyrä esikatselussa valitaksesi keskipiste, joka näkyy aina pienoiskuvissa.", "upload_modal.hint": "Napsauta tai vedä ympyrä esikatselussa valitaksesi keskipiste, joka näkyy aina pienoiskuvissa.",
"upload_modal.preparing_ocr": "Valmistellaan tekstintunnistusta…", "upload_modal.preparing_ocr": "Valmistellaan tekstintunnistusta…",
"upload_modal.preview_label": "Esikatselu ({ratio})", "upload_modal.preview_label": "Esikatselu ({ratio})",
"upload_progress.label": "Lähetetään...", "upload_progress.label": "Lähetetään",
"upload_progress.processing": "Käsitellään…", "upload_progress.processing": "Käsitellään…",
"username.taken": "Tämä käyttäjänimi on jo käytössä. Kokeile toista", "username.taken": "Tämä käyttäjänimi on jo käytössä. Kokeile toista",
"video.close": "Sulje video", "video.close": "Sulje video",

View File

@ -505,6 +505,7 @@
"notification.update": "{name} rættaði ein post", "notification.update": "{name} rættaði ein post",
"notification_requests.accept": "Góðtak", "notification_requests.accept": "Góðtak",
"notification_requests.dismiss": "Avvís", "notification_requests.dismiss": "Avvís",
"notification_requests.maximize": "Mesta",
"notification_requests.notifications_from": "Fráboðanir frá {name}", "notification_requests.notifications_from": "Fráboðanir frá {name}",
"notification_requests.title": "Sáldaðar fráboðanir", "notification_requests.title": "Sáldaðar fráboðanir",
"notifications.clear": "Rudda fráboðanir", "notifications.clear": "Rudda fráboðanir",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} editou unha publicación", "notification.update": "{name} editou unha publicación",
"notification_requests.accept": "Aceptar", "notification_requests.accept": "Aceptar",
"notification_requests.dismiss": "Desbotar", "notification_requests.dismiss": "Desbotar",
"notification_requests.maximize": "Maximizar",
"notification_requests.minimize_banner": "Minimizar o anuncio de notificacións filtradas",
"notification_requests.notifications_from": "Notificacións de {name}", "notification_requests.notifications_from": "Notificacións de {name}",
"notification_requests.title": "Notificacións filtradas", "notification_requests.title": "Notificacións filtradas",
"notifications.clear": "Limpar notificacións", "notifications.clear": "Limpar notificacións",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} ערכו הודעה", "notification.update": "{name} ערכו הודעה",
"notification_requests.accept": "לקבל", "notification_requests.accept": "לקבל",
"notification_requests.dismiss": "לבטל", "notification_requests.dismiss": "לבטל",
"notification_requests.maximize": "הגדלה למקסימום",
"notification_requests.minimize_banner": "להקטין את כותרת ההודעות המפולטרות",
"notification_requests.notifications_from": "התראות מ־ {name}", "notification_requests.notifications_from": "התראות מ־ {name}",
"notification_requests.title": "התראות מסוננות", "notification_requests.title": "התראות מסוננות",
"notifications.clear": "הסרת התראות", "notifications.clear": "הסרת התראות",

View File

@ -160,7 +160,7 @@
"compose_form.poll.switch_to_multiple": "Szavazás megváltoztatása több választásosra", "compose_form.poll.switch_to_multiple": "Szavazás megváltoztatása több választásosra",
"compose_form.poll.switch_to_single": "Szavazás megváltoztatása egyetlen választásosra", "compose_form.poll.switch_to_single": "Szavazás megváltoztatása egyetlen választásosra",
"compose_form.poll.type": "Stílus", "compose_form.poll.type": "Stílus",
"compose_form.publish": "Bejegyzés", "compose_form.publish": "Közzététel",
"compose_form.publish_form": "Új bejegyzés", "compose_form.publish_form": "Új bejegyzés",
"compose_form.reply": "Válasz", "compose_form.reply": "Válasz",
"compose_form.save_changes": "Frissítés", "compose_form.save_changes": "Frissítés",
@ -505,6 +505,8 @@
"notification.update": "{name} szerkesztett egy bejegyzést", "notification.update": "{name} szerkesztett egy bejegyzést",
"notification_requests.accept": "Elfogadás", "notification_requests.accept": "Elfogadás",
"notification_requests.dismiss": "Elvetés", "notification_requests.dismiss": "Elvetés",
"notification_requests.maximize": "Maximalizálás",
"notification_requests.minimize_banner": "Szűrt értesítések sávjának minimalizálása",
"notification_requests.notifications_from": "{name} értesítései", "notification_requests.notifications_from": "{name} értesítései",
"notification_requests.title": "Szűrt értesítések", "notification_requests.title": "Szűrt értesítések",
"notifications.clear": "Értesítések törlése", "notifications.clear": "Értesítések törlése",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} breytti færslu", "notification.update": "{name} breytti færslu",
"notification_requests.accept": "Samþykkja", "notification_requests.accept": "Samþykkja",
"notification_requests.dismiss": "Afgreiða", "notification_requests.dismiss": "Afgreiða",
"notification_requests.maximize": "Hámarka",
"notification_requests.minimize_banner": "Minnka borða með síuðum tilkynningum",
"notification_requests.notifications_from": "Tilkynningar frá {name}", "notification_requests.notifications_from": "Tilkynningar frá {name}",
"notification_requests.title": "Síaðar tilkynningar", "notification_requests.title": "Síaðar tilkynningar",
"notifications.clear": "Hreinsa tilkynningar", "notifications.clear": "Hreinsa tilkynningar",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} ha modificato un post", "notification.update": "{name} ha modificato un post",
"notification_requests.accept": "Accetta", "notification_requests.accept": "Accetta",
"notification_requests.dismiss": "Ignora", "notification_requests.dismiss": "Ignora",
"notification_requests.maximize": "Ingrandisci",
"notification_requests.minimize_banner": "Minimizza il banner delle notifiche filtrate",
"notification_requests.notifications_from": "Notifiche da {name}", "notification_requests.notifications_from": "Notifiche da {name}",
"notification_requests.title": "Notifiche filtrate", "notification_requests.title": "Notifiche filtrate",
"notifications.clear": "Cancella le notifiche", "notifications.clear": "Cancella le notifiche",

View File

@ -293,6 +293,7 @@
"filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します", "filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します",
"filter_modal.select_filter.title": "この投稿をフィルターする", "filter_modal.select_filter.title": "この投稿をフィルターする",
"filter_modal.title.status": "投稿をフィルターする", "filter_modal.title.status": "投稿をフィルターする",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {すべて完了しました} other {#人の通知がブロックされています}}",
"filtered_notifications_banner.title": "保留中の通知", "filtered_notifications_banner.title": "保留中の通知",
"firehose.all": "すべて", "firehose.all": "すべて",
"firehose.local": "このサーバー", "firehose.local": "このサーバー",
@ -489,6 +490,7 @@
"notification.update": "{name}さんが投稿を編集しました", "notification.update": "{name}さんが投稿を編集しました",
"notification_requests.accept": "受け入れる", "notification_requests.accept": "受け入れる",
"notification_requests.dismiss": "無視", "notification_requests.dismiss": "無視",
"notification_requests.minimize_banner": "「保留中の通知」のバナーを最小化する",
"notification_requests.notifications_from": "{name}からの通知", "notification_requests.notifications_from": "{name}からの通知",
"notification_requests.title": "保留中の通知", "notification_requests.title": "保留中の通知",
"notifications.clear": "通知を消去", "notifications.clear": "通知を消去",

View File

@ -804,7 +804,7 @@
"upload_error.limit": "파일 업로드 제한에 도달했습니다.", "upload_error.limit": "파일 업로드 제한에 도달했습니다.",
"upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.", "upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.",
"upload_form.audio_description": "청각 장애인을 위한 설명", "upload_form.audio_description": "청각 장애인을 위한 설명",
"upload_form.description": "시각장애인 위한 설명", "upload_form.description": "시각장애인이나 저시력자를 위한 설명",
"upload_form.edit": "수정", "upload_form.edit": "수정",
"upload_form.thumbnail": "썸네일 변경", "upload_form.thumbnail": "썸네일 변경",
"upload_form.video_description": "청각, 시각 장애인을 위한 설명", "upload_form.video_description": "청각, 시각 장애인을 위한 설명",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} heeft een bericht bewerkt", "notification.update": "{name} heeft een bericht bewerkt",
"notification_requests.accept": "Accepteren", "notification_requests.accept": "Accepteren",
"notification_requests.dismiss": "Afwijzen", "notification_requests.dismiss": "Afwijzen",
"notification_requests.maximize": "Maximaliseer",
"notification_requests.minimize_banner": "Banner met gefilterde meldingen minimaliseren",
"notification_requests.notifications_from": "Meldingen van {name}", "notification_requests.notifications_from": "Meldingen van {name}",
"notification_requests.title": "Gefilterde meldingen", "notification_requests.title": "Gefilterde meldingen",
"notifications.clear": "Meldingen verwijderen", "notifications.clear": "Meldingen verwijderen",

View File

@ -29,6 +29,9 @@
"account.follows.empty": "ਇਹ ਵਰਤੋਂਕਾਰ ਹਾਲੇ ਕਿਸੇ ਨੂੰ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।", "account.follows.empty": "ਇਹ ਵਰਤੋਂਕਾਰ ਹਾਲੇ ਕਿਸੇ ਨੂੰ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।",
"account.go_to_profile": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਜਾਓ", "account.go_to_profile": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਜਾਓ",
"account.media": "ਮੀਡੀਆ", "account.media": "ਮੀਡੀਆ",
"account.mute": "{name} ਨੂੰ ਮੌਨ ਕਰੋ",
"account.mute_notifications_short": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਮੌਨ ਕਰੋ",
"account.mute_short": "ਮੌਨ ਕਰੋ",
"account.muted": "ਮੌਨ ਕੀਤੀਆਂ", "account.muted": "ਮੌਨ ਕੀਤੀਆਂ",
"account.mutual": "ਸਾਂਝੇ", "account.mutual": "ਸਾਂਝੇ",
"account.no_bio": "ਕੋਈ ਵਰਣਨ ਨਹੀਂ ਦਿੱਤਾ।", "account.no_bio": "ਕੋਈ ਵਰਣਨ ਨਹੀਂ ਦਿੱਤਾ।",

View File

@ -504,6 +504,8 @@
"notification.update": "{name} edytował(a) post", "notification.update": "{name} edytował(a) post",
"notification_requests.accept": "Akceptuj", "notification_requests.accept": "Akceptuj",
"notification_requests.dismiss": "Odrzuć", "notification_requests.dismiss": "Odrzuć",
"notification_requests.maximize": "Zmaksymalizuj",
"notification_requests.minimize_banner": "Zminimalizuj baner powiadomień filtrowanych",
"notification_requests.notifications_from": "Powiadomienia od {name}", "notification_requests.notifications_from": "Powiadomienia od {name}",
"notification_requests.title": "Powiadomienia filtrowane", "notification_requests.title": "Powiadomienia filtrowane",
"notifications.clear": "Wyczyść powiadomienia", "notifications.clear": "Wyczyść powiadomienia",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} editou uma publicação", "notification.update": "{name} editou uma publicação",
"notification_requests.accept": "Aceitar", "notification_requests.accept": "Aceitar",
"notification_requests.dismiss": "Descartar", "notification_requests.dismiss": "Descartar",
"notification_requests.maximize": "Maximizar",
"notification_requests.minimize_banner": "Minimizar o cabeçalho das notificações filtradas",
"notification_requests.notifications_from": "Notificações de {name}", "notification_requests.notifications_from": "Notificações de {name}",
"notification_requests.title": "Notificações filtradas", "notification_requests.title": "Notificações filtradas",
"notifications.clear": "Limpar notificações", "notifications.clear": "Limpar notificações",

View File

@ -129,6 +129,7 @@
"compose.language.change": "Поміняти язык", "compose.language.change": "Поміняти язык",
"compose.language.search": "Глядати языкы...", "compose.language.search": "Глядати языкы...",
"compose.published.body": "Пост опубликованый.", "compose.published.body": "Пост опубликованый.",
"compose.published.open": "Удкрыти",
"compose.saved.body": "Пост усокоченый.", "compose.saved.body": "Пост усокоченый.",
"compose_form.direct_message_warning_learn_more": "Читайте бульше", "compose_form.direct_message_warning_learn_more": "Читайте бульше",
"compose_form.encryption_warning": "Публикації на Mastodon не шіфрувут ся. Не шырьте чутливу інформацію через Mastodon.", "compose_form.encryption_warning": "Публикації на Mastodon не шіфрувут ся. Не шырьте чутливу інформацію через Mastodon.",

View File

@ -215,6 +215,7 @@
"domain_block_modal.title": "Blokovať doménu?", "domain_block_modal.title": "Blokovať doménu?",
"domain_block_modal.you_will_lose_followers": "Všetci tvoji nasledovatelia z tohto servera budú odstránení.", "domain_block_modal.you_will_lose_followers": "Všetci tvoji nasledovatelia z tohto servera budú odstránení.",
"domain_block_modal.you_wont_see_posts": "Neuvidíš príspevky, ani oboznámenia od užívateľov na tomto serveri.", "domain_block_modal.you_wont_see_posts": "Neuvidíš príspevky, ani oboznámenia od užívateľov na tomto serveri.",
"domain_pill.activitypub_like_language": "ActivityPub je ako jazyk, ktorým Mastodon hovorí s ostatnými sociálnymi sieťami.",
"domain_pill.server": "Server", "domain_pill.server": "Server",
"domain_pill.their_server": "Ich digitálny domov, kde žijú všetky ich príspevky.", "domain_pill.their_server": "Ich digitálny domov, kde žijú všetky ich príspevky.",
"domain_pill.username": "Používateľské meno", "domain_pill.username": "Používateľské meno",
@ -449,12 +450,14 @@
"navigation_bar.security": "Zabezpečenie", "navigation_bar.security": "Zabezpečenie",
"not_signed_in_indicator.not_signed_in": "Ak chcete získať prístup k tomuto zdroju, prihláste sa.", "not_signed_in_indicator.not_signed_in": "Ak chcete získať prístup k tomuto zdroju, prihláste sa.",
"notification.admin.report": "Účet {name} nahlásil {target}", "notification.admin.report": "Účet {name} nahlásil {target}",
"notification.admin.report_statuses_other": "{name} nahlásil/a {target}",
"notification.admin.sign_up": "Nová registráciu účtu {name}", "notification.admin.sign_up": "Nová registráciu účtu {name}",
"notification.favourite": "{name} hviezdičkuje váš príspevok", "notification.favourite": "{name} hviezdičkuje váš príspevok",
"notification.follow": "{name} vás sleduje", "notification.follow": "{name} vás sleduje",
"notification.follow_request": "{name} vás žiada sledovať", "notification.follow_request": "{name} vás žiada sledovať",
"notification.mention": "{name} vás spomína", "notification.mention": "{name} vás spomína",
"notification.moderation-warning.learn_more": "Zisti viac", "notification.moderation-warning.learn_more": "Zisti viac",
"notification.moderation_warning.action_delete_statuses": "Niektoré z tvojich príspevkov boli odstránené.",
"notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.", "notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.",
"notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.", "notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.",
"notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.", "notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.",
@ -471,6 +474,7 @@
"notification_requests.title": "Filtrované oboznámenia", "notification_requests.title": "Filtrované oboznámenia",
"notifications.clear": "Vyčistiť upozornenia", "notifications.clear": "Vyčistiť upozornenia",
"notifications.clear_confirmation": "Určite chcete nenávratne odstrániť všetky svoje upozornenia?", "notifications.clear_confirmation": "Určite chcete nenávratne odstrániť všetky svoje upozornenia?",
"notifications.clear_title": "Vyčistiť upozornenia?",
"notifications.column_settings.admin.report": "Nové hlásenia:", "notifications.column_settings.admin.report": "Nové hlásenia:",
"notifications.column_settings.admin.sign_up": "Nové registrácie:", "notifications.column_settings.admin.sign_up": "Nové registrácie:",
"notifications.column_settings.alert": "Upozornenia na ploche", "notifications.column_settings.alert": "Upozornenia na ploche",
@ -632,9 +636,12 @@
"report.unfollow_explanation": "Tento účet sledujete. Ak už nechcete vidieť jeho príspevky vo svojom domovskom kanáli, prestaňte ho sledovať.", "report.unfollow_explanation": "Tento účet sledujete. Ak už nechcete vidieť jeho príspevky vo svojom domovskom kanáli, prestaňte ho sledovať.",
"report_notification.attached_statuses": "{count, plural, one {{count} príspevok} few {{count} príspevky} other {{count} príspevkov}} ako príloha", "report_notification.attached_statuses": "{count, plural, one {{count} príspevok} few {{count} príspevky} other {{count} príspevkov}} ako príloha",
"report_notification.categories.legal": "Právne", "report_notification.categories.legal": "Právne",
"report_notification.categories.legal_sentence": "nelegálny obsah",
"report_notification.categories.other": "Ostatné", "report_notification.categories.other": "Ostatné",
"report_notification.categories.other_sentence": "ostatné",
"report_notification.categories.spam": "Spam", "report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Porušenie pravidla", "report_notification.categories.violation": "Porušenie pravidla",
"report_notification.categories.violation_sentence": "porušenie pravidla",
"report_notification.open": "Otvoriť hlásenie", "report_notification.open": "Otvoriť hlásenie",
"search.no_recent_searches": "Žiadne nedávne vyhľadávania", "search.no_recent_searches": "Žiadne nedávne vyhľadávania",
"search.placeholder": "Hľadať", "search.placeholder": "Hľadať",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} përpunoi një postim", "notification.update": "{name} përpunoi një postim",
"notification_requests.accept": "Pranoje", "notification_requests.accept": "Pranoje",
"notification_requests.dismiss": "Hidhe tej", "notification_requests.dismiss": "Hidhe tej",
"notification_requests.maximize": "Maksimizoje",
"notification_requests.minimize_banner": "Minimizo banderolë njoftimesh të filtruara",
"notification_requests.notifications_from": "Njoftime prej {name}", "notification_requests.notifications_from": "Njoftime prej {name}",
"notification_requests.title": "Njoftime të filtruar", "notification_requests.title": "Njoftime të filtruar",
"notifications.clear": "Spastroji njoftimet", "notifications.clear": "Spastroji njoftimet",

View File

@ -300,6 +300,7 @@
"filter_modal.select_filter.subtitle": "Mevcut bir kategoriyi kullan veya yeni bir tane oluştur", "filter_modal.select_filter.subtitle": "Mevcut bir kategoriyi kullan veya yeni bir tane oluştur",
"filter_modal.select_filter.title": "Bu gönderiyi süzgeçle", "filter_modal.select_filter.title": "Bu gönderiyi süzgeçle",
"filter_modal.title.status": "Bir gönderi süzgeçle", "filter_modal.title.status": "Bir gönderi süzgeçle",
"filtered_notifications_banner.pending_requests": "Bildiğiniz {count, plural, =0 {hiç kimseden} one {bir kişiden} other {# kişiden}}",
"filtered_notifications_banner.title": "Filtrelenmiş bildirimler", "filtered_notifications_banner.title": "Filtrelenmiş bildirimler",
"firehose.all": "Tümü", "firehose.all": "Tümü",
"firehose.local": "Bu sunucu", "firehose.local": "Bu sunucu",
@ -504,6 +505,8 @@
"notification.update": "{name} bir gönderiyi düzenledi", "notification.update": "{name} bir gönderiyi düzenledi",
"notification_requests.accept": "Onayla", "notification_requests.accept": "Onayla",
"notification_requests.dismiss": "Yoksay", "notification_requests.dismiss": "Yoksay",
"notification_requests.maximize": "Büyüt",
"notification_requests.minimize_banner": "Filtrelenmiş bildirimler başlığını küçült",
"notification_requests.notifications_from": "{name} bildirimleri", "notification_requests.notifications_from": "{name} bildirimleri",
"notification_requests.title": "Filtrelenmiş bildirimler", "notification_requests.title": "Filtrelenmiş bildirimler",
"notifications.clear": "Bildirimleri temizle", "notifications.clear": "Bildirimleri temizle",

View File

@ -300,6 +300,7 @@
"filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову", "filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову",
"filter_modal.select_filter.title": "Фільтрувати цей допис", "filter_modal.select_filter.title": "Фільтрувати цей допис",
"filter_modal.title.status": "Фільтрувати допис", "filter_modal.title.status": "Фільтрувати допис",
"filtered_notifications_banner.pending_requests": "Від {count, plural, =0 {жодної особи} one {однієї особи} few {# осіб} many {# осіб} other {# особи}}, котрих ви можете знати",
"filtered_notifications_banner.title": "Відфільтровані сповіщення", "filtered_notifications_banner.title": "Відфільтровані сповіщення",
"firehose.all": "Всі", "firehose.all": "Всі",
"firehose.local": "Цей сервер", "firehose.local": "Цей сервер",
@ -473,10 +474,10 @@
"navigation_bar.security": "Безпека", "navigation_bar.security": "Безпека",
"not_signed_in_indicator.not_signed_in": "Ви повинні увійти, щоб отримати доступ до цього ресурсу.", "not_signed_in_indicator.not_signed_in": "Ви повинні увійти, щоб отримати доступ до цього ресурсу.",
"notification.admin.report": "Скарга від {name} на {target}", "notification.admin.report": "Скарга від {name} на {target}",
"notification.admin.report_account": "{name} повідомив(ла) про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target} в категорії {category}", "notification.admin.report_account": "{name} повідомляє про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target} в категорії {category}",
"notification.admin.report_account_other": "{name} повідомив(ла) про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target}", "notification.admin.report_account_other": "{name} повідомляє про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target}",
"notification.admin.report_statuses": "{name} повідомив(ла) про {target} в категорії {category}", "notification.admin.report_statuses": "{name} повідомляє про {target} в категорії {category}",
"notification.admin.report_statuses_other": "{name} повідомив(ла) про {target}", "notification.admin.report_statuses_other": "{name} повідомляє про {target}",
"notification.admin.sign_up": "{name} приєдналися", "notification.admin.sign_up": "{name} приєдналися",
"notification.favourite": "Ваш допис сподобався {name}", "notification.favourite": "Ваш допис сподобався {name}",
"notification.follow": "{name} підписалися на вас", "notification.follow": "{name} підписалися на вас",
@ -493,7 +494,7 @@
"notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.", "notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.",
"notification.own_poll": "Ваше опитування завершилося", "notification.own_poll": "Ваше опитування завершилося",
"notification.poll": "Опитування, в якому ви проголосували, завершено", "notification.poll": "Опитування, в якому ви проголосували, завершено",
"notification.private_mention": "{name} приватно згадав(ла) вас", "notification.private_mention": "{name} приватно згадує вас",
"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}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.",
@ -504,6 +505,8 @@
"notification.update": "{name} змінює допис", "notification.update": "{name} змінює допис",
"notification_requests.accept": "Прийняти", "notification_requests.accept": "Прийняти",
"notification_requests.dismiss": "Відхилити", "notification_requests.dismiss": "Відхилити",
"notification_requests.maximize": "Розгорнути",
"notification_requests.minimize_banner": "Мінімізувати відфільтрований банер сповіщень",
"notification_requests.notifications_from": "Сповіщення від {name}", "notification_requests.notifications_from": "Сповіщення від {name}",
"notification_requests.title": "Відфільтровані сповіщення", "notification_requests.title": "Відфільтровані сповіщення",
"notifications.clear": "Очистити сповіщення", "notifications.clear": "Очистити сповіщення",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} đã sửa tút", "notification.update": "{name} đã sửa tút",
"notification_requests.accept": "Chấp nhận", "notification_requests.accept": "Chấp nhận",
"notification_requests.dismiss": "Bỏ qua", "notification_requests.dismiss": "Bỏ qua",
"notification_requests.maximize": "Tối đa",
"notification_requests.minimize_banner": "Tinh giản banner lọc thông báo",
"notification_requests.notifications_from": "Thông báo từ {name}", "notification_requests.notifications_from": "Thông báo từ {name}",
"notification_requests.title": "Thông báo đã lọc", "notification_requests.title": "Thông báo đã lọc",
"notifications.clear": "Xóa hết thông báo", "notifications.clear": "Xóa hết thông báo",

View File

@ -1,12 +1,12 @@
{ {
"about.blocks": "受限服务器", "about.blocks": "被限制的服务器",
"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.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。",
"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": "已封禁",
"about.not_available": "此信息在当前服务器尚不可用。", "about.not_available": "此信息在当前服务器尚不可用。",
"about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体", "about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体",
@ -81,7 +81,7 @@
"admin.impact_report.instance_accounts": "将要删除的账户资料", "admin.impact_report.instance_accounts": "将要删除的账户资料",
"admin.impact_report.instance_followers": "本实例用户即将丢失的关注者", "admin.impact_report.instance_followers": "本实例用户即将丢失的关注者",
"admin.impact_report.instance_follows": "对方实例用户将会丢失的关注者", "admin.impact_report.instance_follows": "对方实例用户将会丢失的关注者",
"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.message": "发生了意外错误。",
@ -91,10 +91,10 @@
"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} 即可跳过此提示",
@ -171,28 +171,28 @@
"confirmations.block.confirm": "屏蔽", "confirmations.block.confirm": "屏蔽",
"confirmations.delete.confirm": "删除", "confirmations.delete.confirm": "删除",
"confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete.message": "你确定要删除这条嘟文吗?",
"confirmations.delete.title": "删除嘟文?", "confirmations.delete.title": "确认删除嘟文?",
"confirmations.delete_list.confirm": "删除", "confirmations.delete_list.confirm": "删除",
"confirmations.delete_list.message": "确定永久删除这个列表吗?", "confirmations.delete_list.message": "确定永久删除这个列表吗?",
"confirmations.delete_list.title": "删除列表?", "confirmations.delete_list.title": "确认删除列表?",
"confirmations.discard_edit_media.confirm": "丢弃", "confirmations.discard_edit_media.confirm": "丢弃",
"confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍要丢弃吗?", "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍要丢弃吗?",
"confirmations.edit.confirm": "编辑", "confirmations.edit.confirm": "编辑",
"confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?", "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?",
"confirmations.edit.title": "覆盖嘟文?", "confirmations.edit.title": "确认覆盖嘟文?",
"confirmations.logout.confirm": "退出登录", "confirmations.logout.confirm": "退出登录",
"confirmations.logout.message": "确定要退出登录吗?", "confirmations.logout.message": "确定要退出登录吗?",
"confirmations.logout.title": "退出登录?", "confirmations.logout.title": "是否退出登录?",
"confirmations.mute.confirm": "隐藏", "confirmations.mute.confirm": "隐藏",
"confirmations.redraft.confirm": "删除并重新编辑", "confirmations.redraft.confirm": "删除并重新编辑",
"confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。", "confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。",
"confirmations.redraft.title": "删除并重新嘟文?", "confirmations.redraft.title": "是否删除并重新编辑嘟文?",
"confirmations.reply.confirm": "回复", "confirmations.reply.confirm": "回复",
"confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?",
"confirmations.reply.title": "覆盖嘟文?", "confirmations.reply.title": "确认覆盖嘟文?",
"confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.confirm": "取消关注",
"confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
"confirmations.unfollow.title": "取消关注用户?", "confirmations.unfollow.title": "是否取消关注用户?",
"conversation.delete": "删除对话", "conversation.delete": "删除对话",
"conversation.mark_as_read": "标记为已读", "conversation.mark_as_read": "标记为已读",
"conversation.open": "查看对话", "conversation.open": "查看对话",
@ -505,11 +505,13 @@
"notification.update": "{name} 编辑了嘟文", "notification.update": "{name} 编辑了嘟文",
"notification_requests.accept": "接受", "notification_requests.accept": "接受",
"notification_requests.dismiss": "拒绝", "notification_requests.dismiss": "拒绝",
"notification_requests.maximize": "最大化",
"notification_requests.minimize_banner": "最小化被过滤通知的横幅",
"notification_requests.notifications_from": "来自 {name} 的通知", "notification_requests.notifications_from": "来自 {name} 的通知",
"notification_requests.title": "通知(已过滤)", "notification_requests.title": "通知(已过滤)",
"notifications.clear": "清空通知列表", "notifications.clear": "清空通知列表",
"notifications.clear_confirmation": "你确定要永久清空通知列表吗?", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?",
"notifications.clear_title": "清空通知?", "notifications.clear_title": "是否清空通知?",
"notifications.column_settings.admin.report": "新举报:", "notifications.column_settings.admin.report": "新举报:",
"notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.admin.sign_up": "新注册:",
"notifications.column_settings.alert": "桌面通知", "notifications.column_settings.alert": "桌面通知",

View File

@ -505,6 +505,8 @@
"notification.update": "{name} 已編輯嘟文", "notification.update": "{name} 已編輯嘟文",
"notification_requests.accept": "接受", "notification_requests.accept": "接受",
"notification_requests.dismiss": "關閉", "notification_requests.dismiss": "關閉",
"notification_requests.maximize": "最大化",
"notification_requests.minimize_banner": "最小化已過濾通知橫幅",
"notification_requests.notifications_from": "來自 {name} 之通知", "notification_requests.notifications_from": "來自 {name} 之通知",
"notification_requests.title": "已過濾之通知", "notification_requests.title": "已過濾之通知",
"notifications.clear": "清除通知", "notifications.clear": "清除通知",

View File

@ -1,5 +1,6 @@
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
import { blockAccountSuccess, muteAccountSuccess } from 'mastodon/actions/accounts';
import { import {
NOTIFICATION_REQUESTS_EXPAND_REQUEST, NOTIFICATION_REQUESTS_EXPAND_REQUEST,
NOTIFICATION_REQUESTS_EXPAND_SUCCESS, NOTIFICATION_REQUESTS_EXPAND_SUCCESS,
@ -51,6 +52,14 @@ const removeRequest = (state, id) => {
return state.update('items', list => list.filterNot(item => item.get('id') === id)); return state.update('items', list => list.filterNot(item => item.get('id') === id));
}; };
const removeRequestByAccount = (state, account_id) => {
if (state.getIn(['current', 'item', 'account']) === account_id) {
state = state.setIn(['current', 'removed'], true);
}
return state.update('items', list => list.filterNot(item => item.get('account') === account_id));
};
export const notificationRequestsReducer = (state = initialState, action) => { export const notificationRequestsReducer = (state = initialState, action) => {
switch(action.type) { switch(action.type) {
case NOTIFICATION_REQUESTS_FETCH_SUCCESS: case NOTIFICATION_REQUESTS_FETCH_SUCCESS:
@ -74,6 +83,10 @@ export const notificationRequestsReducer = (state = initialState, action) => {
case NOTIFICATION_REQUEST_ACCEPT_REQUEST: case NOTIFICATION_REQUEST_ACCEPT_REQUEST:
case NOTIFICATION_REQUEST_DISMISS_REQUEST: case NOTIFICATION_REQUEST_DISMISS_REQUEST:
return removeRequest(state, action.id); return removeRequest(state, action.id);
case blockAccountSuccess.type:
return removeRequestByAccount(state, action.payload.relationship.id);
case muteAccountSuccess.type:
return action.payload.relationship.muting_notifications ? removeRequestByAccount(state, action.payload.relationship.id) : state;
case NOTIFICATION_REQUEST_FETCH_REQUEST: case NOTIFICATION_REQUEST_FETCH_REQUEST:
return state.set('current', initialState.get('current').set('isLoading', true)); return state.set('current', initialState.get('current').set('isLoading', true));
case NOTIFICATION_REQUEST_FETCH_SUCCESS: case NOTIFICATION_REQUEST_FETCH_SUCCESS:

View File

@ -1,9 +1,8 @@
import type { GetThunkAPI } from '@reduxjs/toolkit';
import { createAsyncThunk } from '@reduxjs/toolkit'; import { createAsyncThunk } from '@reduxjs/toolkit';
// eslint-disable-next-line @typescript-eslint/no-restricted-imports // eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import type { BaseThunkAPI } from '@reduxjs/toolkit/dist/createAsyncThunk';
import type { AppDispatch, RootState } from './store'; import type { AppDispatch, RootState } from './store';
export const useAppDispatch = useDispatch.withTypes<AppDispatch>(); export const useAppDispatch = useDispatch.withTypes<AppDispatch>();
@ -25,29 +24,20 @@ export const createAppAsyncThunk = createAsyncThunk.withTypes<{
rejectValue: AsyncThunkRejectValue; rejectValue: AsyncThunkRejectValue;
}>(); }>();
type AppThunkApi = Pick< interface AppThunkConfig {
BaseThunkAPI<
RootState,
unknown,
AppDispatch,
AsyncThunkRejectValue,
AppMeta,
AppMeta
>,
'getState' | 'dispatch'
>;
interface AppThunkOptions {
skipLoading?: boolean;
}
const createBaseAsyncThunk = createAsyncThunk.withTypes<{
state: RootState; state: RootState;
dispatch: AppDispatch; dispatch: AppDispatch;
rejectValue: AsyncThunkRejectValue; rejectValue: AsyncThunkRejectValue;
fulfilledMeta: AppMeta; fulfilledMeta: AppMeta;
rejectedMeta: AppMeta; rejectedMeta: AppMeta;
}>(); }
type AppThunkApi = Pick<GetThunkAPI<AppThunkConfig>, 'getState' | 'dispatch'>;
interface AppThunkOptions {
skipLoading?: boolean;
}
const createBaseAsyncThunk = createAsyncThunk.withTypes<AppThunkConfig>();
export function createThunk<Arg = void, Returned = void>( export function createThunk<Arg = void, Returned = void>(
name: string, name: string,

View File

@ -3086,6 +3086,11 @@ $ui-header-logo-wordmark-width: 99px;
.explore__search-header { .explore__search-header {
display: flex; display: flex;
} }
.explore__search-results {
border: 0;
border-radius: 0;
}
} }
.icon-with-badge { .icon-with-badge {
@ -7354,7 +7359,7 @@ a.status-card {
display: flex; display: flex;
flex-shrink: 0; flex-shrink: 0;
@media screen and (max-width: $no-gap-breakpoint) { @media screen and (max-width: $no-gap-breakpoint - 1px) {
border-right: 0; border-right: 0;
border-left: 0; border-left: 0;
} }
@ -8076,16 +8081,17 @@ noscript {
.verified { .verified {
border: 1px solid rgba($valid-value-color, 0.5); border: 1px solid rgba($valid-value-color, 0.5);
margin-top: -1px; margin-top: -1px;
margin-inline: -1px;
&:first-child { &:first-child {
border-top-left-radius: 4px; border-top-left-radius: 4px;
border-top-right-radius: 4px; border-top-right-radius: 4px;
margin-top: 0;
} }
&:last-child { &:last-child {
border-bottom-left-radius: 4px; border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px; border-bottom-right-radius: 4px;
margin-bottom: -1px;
} }
dt, dt,
@ -10622,6 +10628,25 @@ noscript {
} }
} }
&__note {
&-label {
color: $dark-text-color;
font-size: 12px;
font-weight: 500;
text-transform: uppercase;
}
dd {
white-space: pre-line;
color: $secondary-text-color;
overflow: hidden;
line-clamp: 3; // Not yet supported in browers
display: -webkit-box; // The next 3 properties are needed
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
}
.display-name { .display-name {
font-size: 15px; font-size: 15px;
line-height: 22px; line-height: 22px;

View File

@ -101,7 +101,9 @@ class LinkDetailsExtractor
end end
def json def json
@json ||= root_array(Oj.load(@data)).compact.find { |obj| SUPPORTED_TYPES.include?(obj['@type']) } || {} @json ||= root_array(Oj.load(@data))
.map { |node| JSON::LD::API.compact(node, 'https://schema.org') }
.find { |node| SUPPORTED_TYPES.include?(node['type']) } || {}
end end
end end

View File

@ -234,13 +234,17 @@ class Request
end end
def body_with_limit(limit = 1.megabyte) def body_with_limit(limit = 1.megabyte)
raise Mastodon::LengthValidationError if content_length.present? && content_length > limit require_limit_not_exceeded!(limit)
contents = truncated_body(limit) contents = truncated_body(limit)
raise Mastodon::LengthValidationError if contents.bytesize > limit raise Mastodon::LengthValidationError, "Body size exceeds limit of #{limit}" if contents.bytesize > limit
contents contents
end end
def require_limit_not_exceeded!(limit)
raise Mastodon::LengthValidationError, "Content-Length #{content_length} exceeds limit of #{limit}" if content_length.present? && content_length > limit
end
end end
if ::HTTP::Response.methods.include?(:body_with_limit) && !Rails.env.production? if ::HTTP::Response.methods.include?(:body_with_limit) && !Rails.env.production?

View File

@ -1,10 +1,11 @@
# frozen_string_literal: true # frozen_string_literal: true
class GroupedNotificationsPresenter < ActiveModelSerializers::Model class GroupedNotificationsPresenter < ActiveModelSerializers::Model
def initialize(grouped_notifications) def initialize(grouped_notifications, options = {})
super() super()
@grouped_notifications = grouped_notifications @grouped_notifications = grouped_notifications
@options = options
end end
def notification_groups def notification_groups
@ -16,6 +17,28 @@ class GroupedNotificationsPresenter < ActiveModelSerializers::Model
end end
def accounts def accounts
@accounts ||= begin
if partial_avatars?
@grouped_notifications.map { |group| group.sample_accounts.first }.uniq(&:id)
else
@grouped_notifications.flat_map(&:sample_accounts).uniq(&:id) @grouped_notifications.flat_map(&:sample_accounts).uniq(&:id)
end end
end end
end
def partial_accounts
@partial_accounts ||= begin
if partial_avatars?
@grouped_notifications.flat_map { |group| group.sample_accounts[1...] }.uniq(&:id).filter { |account| accounts.exclude?(account) }
else
[]
end
end
end
private
def partial_avatars?
@options[:expand_accounts] == 'partial_avatars'
end
end

View File

@ -1,7 +1,22 @@
# frozen_string_literal: true # frozen_string_literal: true
class REST::DedupNotificationGroupSerializer < ActiveModel::Serializer class REST::DedupNotificationGroupSerializer < ActiveModel::Serializer
class PartialAccountSerializer < REST::AccountSerializer
# This is a hack to reset ActiveModel::Serializer internals and only expose the attributes
# we care about.
self._attributes_data = {}
self._reflections = []
self._links = []
attributes :id, :acct, :locked, :bot, :url, :avatar, :avatar_static
end
has_many :accounts, serializer: REST::AccountSerializer has_many :accounts, serializer: REST::AccountSerializer
has_many :partial_accounts, serializer: PartialAccountSerializer, if: :return_partial_accounts?
has_many :statuses, serializer: REST::StatusSerializer has_many :statuses, serializer: REST::StatusSerializer
has_many :notification_groups, serializer: REST::NotificationGroupSerializer has_many :notification_groups, serializer: REST::NotificationGroupSerializer
def return_partial_accounts?
instance_options[:expand_accounts] == 'partial_avatars'
end
end end

View File

@ -7,6 +7,7 @@ class AfterBlockService < BaseService
clear_home_feed! clear_home_feed!
clear_list_feeds! clear_list_feeds!
clear_notification_requests!
clear_notifications! clear_notifications!
clear_conversations! clear_conversations!
end end
@ -28,4 +29,8 @@ class AfterBlockService < BaseService
def clear_notifications! def clear_notifications!
Notification.where(account: @account).where(from_account: @target_account).in_batches.delete_all Notification.where(account: @account).where(from_account: @target_account).in_batches.delete_all
end end
def clear_notification_requests!
NotificationRequest.where(account: @account, from_account: @target_account).destroy_all
end
end end

View File

@ -14,6 +14,7 @@
wrapper: :with_label wrapper: :with_label
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :min_status_age, = f.input :min_status_age,
disabled: !@policy.enabled?,
collection: AccountStatusesCleanupPolicy::ALLOWED_MIN_STATUS_AGE.map(&:to_i), collection: AccountStatusesCleanupPolicy::ALLOWED_MIN_STATUS_AGE.map(&:to_i),
hint: false, hint: false,
include_blank: false, include_blank: false,
@ -28,11 +29,13 @@
.fields-row .fields-row
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :keep_pinned, = f.input :keep_pinned,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.keep_pinned_hint'), hint: t('statuses_cleanup.keep_pinned_hint'),
label: t('statuses_cleanup.keep_pinned'), label: t('statuses_cleanup.keep_pinned'),
wrapper: :with_label wrapper: :with_label
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :keep_direct, = f.input :keep_direct,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.keep_direct_hint'), hint: t('statuses_cleanup.keep_direct_hint'),
label: t('statuses_cleanup.keep_direct'), label: t('statuses_cleanup.keep_direct'),
wrapper: :with_label wrapper: :with_label
@ -40,11 +43,13 @@
.fields-row .fields-row
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :keep_self_fav, = f.input :keep_self_fav,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.keep_self_fav_hint'), hint: t('statuses_cleanup.keep_self_fav_hint'),
label: t('statuses_cleanup.keep_self_fav'), label: t('statuses_cleanup.keep_self_fav'),
wrapper: :with_label wrapper: :with_label
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :keep_self_bookmark, = f.input :keep_self_bookmark,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.keep_self_bookmark_hint'), hint: t('statuses_cleanup.keep_self_bookmark_hint'),
label: t('statuses_cleanup.keep_self_bookmark'), label: t('statuses_cleanup.keep_self_bookmark'),
wrapper: :with_label wrapper: :with_label
@ -52,11 +57,13 @@
.fields-row .fields-row
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :keep_polls, = f.input :keep_polls,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.keep_polls_hint'), hint: t('statuses_cleanup.keep_polls_hint'),
label: t('statuses_cleanup.keep_polls'), label: t('statuses_cleanup.keep_polls'),
wrapper: :with_label wrapper: :with_label
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :keep_media, = f.input :keep_media,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.keep_media_hint'), hint: t('statuses_cleanup.keep_media_hint'),
label: t('statuses_cleanup.keep_media'), label: t('statuses_cleanup.keep_media'),
wrapper: :with_label wrapper: :with_label
@ -66,12 +73,14 @@
.fields-row .fields-row
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :min_favs, = f.input :min_favs,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.min_favs_hint'), hint: t('statuses_cleanup.min_favs_hint'),
input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_favs') }, input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_favs') },
label: t('statuses_cleanup.min_favs'), label: t('statuses_cleanup.min_favs'),
wrapper: :with_label wrapper: :with_label
.fields-row__column.fields-row__column-6.fields-group .fields-row__column.fields-row__column-6.fields-group
= f.input :min_reblogs, = f.input :min_reblogs,
disabled: !@policy.enabled?,
hint: t('statuses_cleanup.min_reblogs_hint'), hint: t('statuses_cleanup.min_reblogs_hint'),
input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_reblogs') }, input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_reblogs') },
label: t('statuses_cleanup.min_reblogs'), label: t('statuses_cleanup.min_reblogs'),

View File

@ -232,6 +232,7 @@ be:
update_custom_emoji: Абнавіць адвольныя эмодзі update_custom_emoji: Абнавіць адвольныя эмодзі
update_domain_block: Актуалізаваць блакіроўку дамена update_domain_block: Актуалізаваць блакіроўку дамена
update_ip_block: Абнавіць IP правіла update_ip_block: Абнавіць IP правіла
update_report: Абнавіць скаргу
update_status: Абнавіць допіс update_status: Абнавіць допіс
update_user_role: Абнавіць ролю update_user_role: Абнавіць ролю
actions: actions:
@ -299,6 +300,7 @@ be:
filter_by_action: Фільтраваць па дзеянню filter_by_action: Фільтраваць па дзеянню
filter_by_user: Адфільтраваць па карыстальніку filter_by_user: Адфільтраваць па карыстальніку
title: Аўдыт title: Аўдыт
unavailable_instance: "(імя дамена недаступнае)"
announcements: announcements:
destroyed_msg: Аб'ява паспяхова выдалена! destroyed_msg: Аб'ява паспяхова выдалена!
edit: edit:
@ -485,6 +487,9 @@ be:
title: Рэкамендацыі падпісак title: Рэкамендацыі падпісак
unsuppress: Аднавіць рэкамендацыі падпісак unsuppress: Аднавіць рэкамендацыі падпісак
instances: instances:
audit_log:
title: Нядаўнія журналы аўдыту
view_all: Праглядзець поўныя журналы аўдыту
availability: availability:
description_html: description_html:
few: Калі дастаўка на дамен не атрымоўваецца праз <strong>%{count} іншыя дні</strong>, далейшыя спробы дастаўкі не будуць зроблены, пакуль не будзе атрымана дастаўка <em>з</em> дамена. few: Калі дастаўка на дамен не атрымоўваецца праз <strong>%{count} іншыя дні</strong>, далейшыя спробы дастаўкі не будуць зроблены, пакуль не будзе атрымана дастаўка <em>з</em> дамена.
@ -661,6 +666,7 @@ be:
report: 'Скарга #%{id}' report: 'Скарга #%{id}'
reported_account: Уліковы запіс парушальніка reported_account: Уліковы запіс парушальніка
reported_by: Адпраўнік скаргі reported_by: Адпраўнік скаргі
reported_with_application: Паведамлена праз праграму
resolved: Вырашана resolved: Вырашана
resolved_msg: Скарга была паспяхова вырашана! resolved_msg: Скарга была паспяхова вырашана!
skip_to_actions: Прапусціць дзеянні skip_to_actions: Прапусціць дзеянні
@ -907,7 +913,23 @@ be:
action: Для падрабязнасцей націсніце тут action: Для падрабязнасцей націсніце тут
message_html: "<strong>Ваша сховішча не наладжана. Прыватнасць карыстальнікаў пад пагрозай.</strong>" message_html: "<strong>Ваша сховішча не наладжана. Прыватнасць карыстальнікаў пад пагрозай.</strong>"
tags: tags:
moderation:
not_trendable: Не ў трэндзе
not_usable: Непрыгодныя
pending_review: Чакае праверкі
review_requested: Патрабуюць прагледжвання
reviewed: Прагледжаныя
title: Стан
trendable: У трэндзе
unreviewed: Непрагледжаныя
usable: Прыгодныя
name: Назва
newest: Спачатку новыя
oldest: Спачатку старыя
reset: Скінуць
review: Стан праверкі review: Стан праверкі
search: Пошук
title: Хэштэгі
updated_msg: Налады хэштэгаў паспяхова змененыя updated_msg: Налады хэштэгаў паспяхова змененыя
title: Адміністрацыя title: Адміністрацыя
trends: trends:

View File

@ -232,6 +232,7 @@ cs:
update_custom_emoji: Aktualizovat vlastní emoji update_custom_emoji: Aktualizovat vlastní emoji
update_domain_block: Změnit blokaci domény update_domain_block: Změnit blokaci domény
update_ip_block: Aktualizovat pravidlo IP update_ip_block: Aktualizovat pravidlo IP
update_report: Upravit hlášení
update_status: Aktualizovat Příspěvek update_status: Aktualizovat Příspěvek
update_user_role: Aktualizovat roli update_user_role: Aktualizovat roli
actions: actions:
@ -486,6 +487,9 @@ cs:
title: Doporučená sledování title: Doporučená sledování
unsuppress: Obnovit doporučení sledování unsuppress: Obnovit doporučení sledování
instances: instances:
audit_log:
title: Nedávné protokoly auditu
view_all: Zobrazit úplné protokoly auditu
availability: availability:
description_html: description_html:
few: Pokud doručování na doménu selže ve <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény. few: Pokud doručování na doménu selže ve <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
@ -662,6 +666,7 @@ cs:
report: 'Hlášení #%{id}' report: 'Hlášení #%{id}'
reported_account: Nahlášený účet reported_account: Nahlášený účet
reported_by: Nahlášeno uživatelem reported_by: Nahlášeno uživatelem
reported_with_application: Nahlášeno aplikací
resolved: Vyřešeno resolved: Vyřešeno
resolved_msg: Hlášení úspěšně vyřešeno! resolved_msg: Hlášení úspěšně vyřešeno!
skip_to_actions: Přeskočit k akcím skip_to_actions: Přeskočit k akcím
@ -908,7 +913,23 @@ cs:
action: Pro více informací se podívejte zde action: Pro více informací se podívejte zde
message_html: "<strong>Váš object storage je špatně nakonfigurován. Soukromí vašich uživatelů je ohroženo.</strong>" message_html: "<strong>Váš object storage je špatně nakonfigurován. Soukromí vašich uživatelů je ohroženo.</strong>"
tags: tags:
moderation:
not_trendable: Netrendovatelné
not_usable: Nepoužitelné
pending_review: Čeká na posouzení
review_requested: Posouzení vyžádáno
reviewed: Posouzené
title: Stav
trendable: Trendovatelné
unreviewed: Neposouzené
usable: Použitelné
name: Název
newest: Nejnovější
oldest: Nejstarší
reset: Resetovat
review: Stav posouzení review: Stav posouzení
search: Hledat
title: Hashtagy
updated_msg: Nastavení hashtagů bylo úspěšně aktualizováno updated_msg: Nastavení hashtagů bylo úspěšně aktualizováno
title: Administrace title: Administrace
trends: trends:

View File

@ -17,11 +17,11 @@ cy:
zero: Dilynwyr zero: Dilynwyr
following: Yn dilyn following: Yn dilyn
instance_actor_flash: Mae'r cyfrif hwn yn actor rhithwir sy'n cael ei ddefnyddio i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei atal. instance_actor_flash: Mae'r cyfrif hwn yn actor rhithwir sy'n cael ei ddefnyddio i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei atal.
last_active: y diweddaraf last_active: gweithgar ddiwethaf
link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date} link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date}
nothing_here: Does dim byd yma! nothing_here: Does dim byd yma!
pin_errors: pin_errors:
following: Rhaid i chi fod yn dilyn yn barod y person rydych am ei gymeradwyo following: Rhaid i chi fod yn dilyn y person rydych am ei gymeradwyo, yn barod.
posts: posts:
few: Postiadau few: Postiadau
many: Postiadau many: Postiadau
@ -503,6 +503,9 @@ cy:
title: Dilyn yr argymhellion title: Dilyn yr argymhellion
unsuppress: Adfer argymhelliad dilyn unsuppress: Adfer argymhelliad dilyn
instances: instances:
audit_log:
title: Cofnodion Archwilio Diweddar
view_all: Gweld y cofnodion archwilio llawn
availability: availability:
description_html: description_html:
few: Os bydd anfon i'r parth yn methu ar <strong>%{count} o ddiwrnodau gwahanol</strong> heb lwyddo, ni fydd unrhyw ymdrechion dosbarthu pellach yn cael eu gwneud oni bai y bydd danfoniad yn cael ei dderbyn <em>o'r</em> parth. few: Os bydd anfon i'r parth yn methu ar <strong>%{count} o ddiwrnodau gwahanol</strong> heb lwyddo, ni fydd unrhyw ymdrechion dosbarthu pellach yn cael eu gwneud oni bai y bydd danfoniad yn cael ei dderbyn <em>o'r</em> parth.
@ -938,7 +941,23 @@ cy:
action: Ewch yma am fwy o wybodaeth action: Ewch yma am fwy o wybodaeth
message_html: "<strong>Mae eich storfa gwrthrychau wedi'i cham ffurfweddu. Mae preifatrwydd eich defnyddwyr mewn perygl.</strong>" message_html: "<strong>Mae eich storfa gwrthrychau wedi'i cham ffurfweddu. Mae preifatrwydd eich defnyddwyr mewn perygl.</strong>"
tags: tags:
moderation:
not_trendable: Ddim yn dueddol
not_usable: Ddim yn ddefnyddiadwy
pending_review: O dan ystyriaeth
review_requested: Gofynnwyd am adolygiad
reviewed: Adolygwyd
title: Statws
trendable: Tueddadwy
unreviewed: Heb ei adolygu
usable: Defnyddiadwy
name: Enw
newest: Mwyaf newydd
oldest: Hynaf
reset: Ailosod
review: Adolygu statws review: Adolygu statws
search: Chwilio
title: Hashnodau
updated_msg: Gosodiadau hashnodau wedi'i diweddaru'n llwyddiannus updated_msg: Gosodiadau hashnodau wedi'i diweddaru'n llwyddiannus
title: Gweinyddiaeth title: Gweinyddiaeth
trends: trends:

View File

@ -642,6 +642,7 @@ da:
report: 'Anmeldelse #%{id}' report: 'Anmeldelse #%{id}'
reported_account: Anmeldt konto reported_account: Anmeldt konto
reported_by: Anmeldt af reported_by: Anmeldt af
reported_with_application: Rapporteret via applikation
resolved: Løst resolved: Løst
resolved_msg: Anmeldelse løst! resolved_msg: Anmeldelse løst!
skip_to_actions: Overspring til foranstaltninger skip_to_actions: Overspring til foranstaltninger
@ -887,8 +888,8 @@ da:
moderation: moderation:
not_trendable: Ikke trendegnet not_trendable: Ikke trendegnet
not_usable: Ikke brugbar not_usable: Ikke brugbar
pending_review: Afventer revision pending_review: Afventer gennemgang
review_requested: Revision anmodet review_requested: Gennemgang ønsket
reviewed: Revideret reviewed: Revideret
title: Status title: Status
trendable: Trendegnet trendable: Trendegnet
@ -898,7 +899,7 @@ da:
newest: Seneste newest: Seneste
oldest: Ældste oldest: Ældste
reset: Nulstil reset: Nulstil
review: Revisionsstatus review: Gennmgangsstatus
search: Søg search: Søg
title: Hashtags title: Hashtags
updated_msg: Hashtag-indstillinger opdateret updated_msg: Hashtag-indstillinger opdateret
@ -923,7 +924,7 @@ da:
usage_comparison: Delt %{today} gange i dag, sammenlignet med %{yesterday} i går usage_comparison: Delt %{today} gange i dag, sammenlignet med %{yesterday} i går
not_allowed_to_trend: Ikke tilladt at trende not_allowed_to_trend: Ikke tilladt at trende
only_allowed: Kun tilladte only_allowed: Kun tilladte
pending_review: Afventer revision pending_review: Afventer gennemgang
preview_card_providers: preview_card_providers:
allowed: Links fra denne udgiver kan trende allowed: Links fra denne udgiver kan trende
description_html: Disse er domæner, hvorfra links ofte deles på serveren. Links vil ikke trende offentligt, medmindre man har godkendt domænet for linket. Godkendelse/afvisning indbefatter underdomæner. description_html: Disse er domæner, hvorfra links ofte deles på serveren. Links vil ikke trende offentligt, medmindre man har godkendt domænet for linket. Godkendelse/afvisning indbefatter underdomæner.
@ -1023,14 +1024,14 @@ da:
body: Nye Mastodon-versioner er udgivet. Opgradering bør overvejes! body: Nye Mastodon-versioner er udgivet. Opgradering bør overvejes!
subject: Nye Mastodon-versioner er tilgængelige til %{instance}! subject: Nye Mastodon-versioner er tilgængelige til %{instance}!
new_trends: new_trends:
body: 'Flg. emner kræver revision, inden de kan vises offentligt:' body: 'Flg. emner kræver gennemgang, inden de kan vises offentligt:'
new_trending_links: new_trending_links:
title: Populære links title: Populære links
new_trending_statuses: new_trending_statuses:
title: Populære opslag title: Populære opslag
new_trending_tags: new_trending_tags:
title: Populære hashtags title: Populære hashtags
subject: Nye tendenser klar til revision på %{instance} subject: Nye tendenser klar til gennemgang på %{instance}
aliases: aliases:
add_new: Opret alias add_new: Opret alias
created_msg: Nyt alias oprettet. Du kan nu påbegynde flytningen fra den gamle konto. created_msg: Nyt alias oprettet. Du kan nu påbegynde flytningen fra den gamle konto.

View File

@ -1130,7 +1130,7 @@ de:
new_confirmation_instructions_sent: In wenigen Minuten wirst du eine neue E-Mail mit dem Bestätigungslink erhalten! new_confirmation_instructions_sent: In wenigen Minuten wirst du eine neue E-Mail mit dem Bestätigungslink erhalten!
title: Überprüfe dein E-Mail-Postfach title: Überprüfe dein E-Mail-Postfach
sign_in: sign_in:
preamble_html: Melde dich mit deinen Zugangsdaten für <strong>%{domain}</strong> an. Solltest du dein Konto auf einem anderen Server registriert haben, ist eine Anmeldung hier nicht möglich. preamble_html: Melde dich mit deinen Zugangsdaten für <strong>%{domain}</strong> an. Falls dein Konto auf einem anderen Server erstellt wurde, ist eine Anmeldung hier nicht möglich.
title: Bei %{domain} anmelden title: Bei %{domain} anmelden
sign_up: sign_up:
manual_review: Registrierungen für den Server %{domain} werden manuell durch unsere Moderator*innen überprüft. Um uns dabei zu unterstützen, schreibe etwas über dich und sage uns, weshalb du ein Konto auf %{domain} anlegen möchtest. manual_review: Registrierungen für den Server %{domain} werden manuell durch unsere Moderator*innen überprüft. Um uns dabei zu unterstützen, schreibe etwas über dich und sage uns, weshalb du ein Konto auf %{domain} anlegen möchtest.

View File

@ -83,6 +83,7 @@ be:
access_denied: Уласнік рэсурсу або сэрвер аўтарызацыі адхіліў ваш запыт. access_denied: Уласнік рэсурсу або сэрвер аўтарызацыі адхіліў ваш запыт.
credential_flow_not_configured: Resource Owner Password Credentials flow не прайшоў з-за таго, што ўласцівасць Doorkeeper.configure.resource_owner_from_credentials была не вызначана. credential_flow_not_configured: Resource Owner Password Credentials flow не прайшоў з-за таго, што ўласцівасць Doorkeeper.configure.resource_owner_from_credentials была не вызначана.
invalid_client: Збой аўтэнтыфікацыі кліента з-за невядомага кліента, адсутнасці аўтэнтыфікацыі кліента або метаду аўтэнтыфікацыі, які не падтрымліваецца. invalid_client: Збой аўтэнтыфікацыі кліента з-за невядомага кліента, адсутнасці аўтэнтыфікацыі кліента або метаду аўтэнтыфікацыі, які не падтрымліваецца.
invalid_code_challenge_method: Метад праверкі кода павінен быць S256, просты тэкст не падтрымліваецца.
invalid_grant: Прадастаўлены дазвол на аўтарызацыю несапраўдны, пратэрмінованы, быў адкліканы, не адпавядае URI перанакіравання, які выкарыстоўваецца ў запыце аўтарызацыі або быў выдадзены іншаму кліенту. invalid_grant: Прадастаўлены дазвол на аўтарызацыю несапраўдны, пратэрмінованы, быў адкліканы, не адпавядае URI перанакіравання, які выкарыстоўваецца ў запыце аўтарызацыі або быў выдадзены іншаму кліенту.
invalid_redirect_uri: Прадстаўлены URI перанакіравання не сапраўдны. invalid_redirect_uri: Прадстаўлены URI перанакіравання не сапраўдны.
invalid_request: invalid_request:

View File

@ -20,7 +20,7 @@ hu:
applications: applications:
buttons: buttons:
authorize: Hitelesítés authorize: Hitelesítés
cancel: Mégsem cancel: Mégse
destroy: Törlés destroy: Törlés
edit: Szerkesztés edit: Szerkesztés
submit: Elküldés submit: Elküldés
@ -51,20 +51,20 @@ hu:
application_id: Ügyfélkulcs application_id: Ügyfélkulcs
callback_urls: Visszahívási URL-ek callback_urls: Visszahívási URL-ek
scopes: Hatáskörök scopes: Hatáskörök
secret: Ügyfél titkos kulcs secret: Ügyféltitok
title: 'Alkalmazás: %{name}' title: 'Alkalmazás: %{name}'
authorizations: authorizations:
buttons: buttons:
authorize: Hitelesítés authorize: Engedélyezés
deny: Tiltás deny: Tiltás
error: error:
title: Hiba történt title: Hiba történt
new: new:
prompt_html: "%{client_name} szeretné elérni a fiókodat. Ez egy harmadik féltől származó alkalmazás. <strong>Ha nem bízol meg benne, ne addj felhatalmazást neki.</strong>" prompt_html: "%{client_name} szeretné elérni a fiókodat. Ez egy harmadik féltől származó alkalmazás. <strong>Ha nem bízol meg benne, ne addj felhatalmazást neki.</strong>"
review_permissions: Jogosultságok áttekintése review_permissions: Jogosultságok áttekintése
title: Hitelesítés szükséges title: Engedélyezés szükséges
show: show:
title: Másold le ezt az engedélyező kódot és írd be az alkalmazásba. title: Másold le ezt az engedélyezési kódot és írd be az alkalmazásba.
authorized_applications: authorized_applications:
buttons: buttons:
revoke: Visszavonás revoke: Visszavonás
@ -83,6 +83,7 @@ hu:
access_denied: Az erőforrás tulajdonosa vagy az engedélyező kiszolgáló elutasította a kérést. access_denied: Az erőforrás tulajdonosa vagy az engedélyező kiszolgáló elutasította a kérést.
credential_flow_not_configured: Az erőforrás tulajdonos jelszóadatainak átadása megszakadt, mert a Doorkeeper.configure.resource_owner_from_credentials beállítatlan. credential_flow_not_configured: Az erőforrás tulajdonos jelszóadatainak átadása megszakadt, mert a Doorkeeper.configure.resource_owner_from_credentials beállítatlan.
invalid_client: A kliens hitelesítése megszakadt, mert ismeretlen a kliens, a kliens nem küldött hitelesítést, vagy a hitelesítés módja nem támogatott. invalid_client: A kliens hitelesítése megszakadt, mert ismeretlen a kliens, a kliens nem küldött hitelesítést, vagy a hitelesítés módja nem támogatott.
invalid_code_challenge_method: A kódkihívási módszernek S256-nak kell lennie, az egyszerű kód nem támogatott.
invalid_grant: A biztosított hitelesítés érvénytelen, lejárt, visszavont, vagy nem egyezik a hitelesítési kérésben használt URI-val, vagy más kliensnek címezték. invalid_grant: A biztosított hitelesítés érvénytelen, lejárt, visszavont, vagy nem egyezik a hitelesítési kérésben használt URI-val, vagy más kliensnek címezték.
invalid_redirect_uri: Az átirányító URI nem valós. invalid_redirect_uri: Az átirányító URI nem valós.
invalid_request: invalid_request:

View File

@ -17,7 +17,7 @@ fi:
link_verified_on: Tämän linkin omistus on tarkastettu %{date} link_verified_on: Tämän linkin omistus on tarkastettu %{date}
nothing_here: Täällä ei ole mitään! nothing_here: Täällä ei ole mitään!
pin_errors: pin_errors:
following: Sinun täytyy seurata henkilöä jota haluat tukea following: Sinun täytyy seurata yttäjää, jota haluat tukea
posts: posts:
one: Julkaisu one: Julkaisu
other: viestiä other: viestiä
@ -632,7 +632,7 @@ fi:
create_and_resolve: Ratkaise ja lisää muistiinpano create_and_resolve: Ratkaise ja lisää muistiinpano
create_and_unresolve: Avaa uudelleen ja lisää muistiinpano create_and_unresolve: Avaa uudelleen ja lisää muistiinpano
delete: Poista delete: Poista
placeholder: Kuvaile tehtyjä toimia tai lisää muita käyttäjään liittyviä merkintöjä... placeholder: Kuvaile tehtyjä toimia tai lisää muita käyttäjään liittyviä merkintöjä
title: Muistiinpanot title: Muistiinpanot
notes_description_html: Tarkastele ja jätä muistiinpanoja muille moderaattoreille ja itsellesi tulevaisuuteen notes_description_html: Tarkastele ja jätä muistiinpanoja muille moderaattoreille ja itsellesi tulevaisuuteen
processed_msg: Raportin nro %{id} käsittely onnistui processed_msg: Raportin nro %{id} käsittely onnistui
@ -771,7 +771,7 @@ fi:
public_timelines: Julkiset aikajanat public_timelines: Julkiset aikajanat
publish_discovered_servers: Julkaise löydetyt palvelimet publish_discovered_servers: Julkaise löydetyt palvelimet
publish_statistics: Julkaise tilastot publish_statistics: Julkaise tilastot
title: Löydettävyys title: Löytäminen
trends: Trendit trends: Trendit
domain_blocks: domain_blocks:
all: Kaikille all: Kaikille
@ -838,7 +838,7 @@ fi:
delete_statuses: "%{name} poisti käyttäjän %{target} julkaisut" delete_statuses: "%{name} poisti käyttäjän %{target} julkaisut"
disable: "%{name} jäädytti %{target} tilin" disable: "%{name} jäädytti %{target} tilin"
mark_statuses_as_sensitive: "%{name} merkitsi käyttäjän %{target} julkaisut arkaluonteisiksi" mark_statuses_as_sensitive: "%{name} merkitsi käyttäjän %{target} julkaisut arkaluonteisiksi"
none: "%{name} lähetti varoituksen henkilölle %{target}" none: "%{name} lähetti varoituksen käyttäjälle %{target}"
sensitive: "%{name} merkitsi käyttäjän %{target} tilin arkaluonteiseksi" sensitive: "%{name} merkitsi käyttäjän %{target} tilin arkaluonteiseksi"
silence: "%{name} rajoitti käyttäjän %{target} tiliä" silence: "%{name} rajoitti käyttäjän %{target} tiliä"
suspend: "%{name} jäädytti käyttäjän %{target} tilin" suspend: "%{name} jäädytti käyttäjän %{target} tilin"
@ -918,8 +918,8 @@ fi:
publishers: publishers:
no_publisher_selected: Julkaisijoita ei muutettu, koska yhtään ei ollut valittuna no_publisher_selected: Julkaisijoita ei muutettu, koska yhtään ei ollut valittuna
shared_by_over_week: shared_by_over_week:
one: Jakanut yksi henkilö viimeisen viikon aikana one: Jakanut yksi käyttäjä viimeisen viikon aikana
other: Jakanut %{count} henkilöä viimeisen viikon aikana other: Jakanut %{count} käyttäjää viimeisen viikon aikana
title: Suositut linkit title: Suositut linkit
usage_comparison: Jaettu tänään %{today} kertaa verrattuna eilisen %{yesterday} kertaan usage_comparison: Jaettu tänään %{today} kertaa verrattuna eilisen %{yesterday} kertaan
not_allowed_to_trend: Ei saa trendata not_allowed_to_trend: Ei saa trendata
@ -951,7 +951,7 @@ fi:
tag_servers_dimension: Suosituimmat palvelimet tag_servers_dimension: Suosituimmat palvelimet
tag_servers_measure: eri palvelimet tag_servers_measure: eri palvelimet
tag_uses_measure: käyttökerrat yhteensä tag_uses_measure: käyttökerrat yhteensä
description_html: Nämä aihetunnisteet näkyvät parhaillaan monissa julkaisuissa, jotka palvelimesi näkee. Tämä luettelo voi auttaa käyttäjiäsi selvittämään, mistä ihmiset puhuvat eniten juuri nyt. Mitkään aihetunnisteet ei näy julkisesti ennen kuin hyväksyt ne. description_html: Nämä aihetunnisteet näkyvät parhaillaan monissa julkaisuissa, jotka palvelimesi näkee. Tämä luettelo voi auttaa käyttäjiäsi selvittämään, mistä puhutaan eniten juuri nyt. Mitkään aihetunnisteet ei näy julkisesti ennen kuin hyväksyt ne.
listable: Voi ehdottaa listable: Voi ehdottaa
no_tag_selected: Tunnisteita ei muutettu, koska yhtään ei ollut valittuna no_tag_selected: Tunnisteita ei muutettu, koska yhtään ei ollut valittuna
not_listable: Ei ehdoteta not_listable: Ei ehdoteta
@ -964,8 +964,8 @@ fi:
usable: Voi käyttää usable: Voi käyttää
usage_comparison: Käytetty tänään %{today} kertaa, verrattuna elisen %{yesterday} kertaan usage_comparison: Käytetty tänään %{today} kertaa, verrattuna elisen %{yesterday} kertaan
used_by_over_week: used_by_over_week:
one: Käyttänyt yksi henkilö viimeisen viikon aikana one: Käyttänyt yksi käyttäjä viimeisen viikon aikana
other: Käyttänyt %{count} henkilöä viimeisen viikon aikana other: Käyttänyt %{count} käyttäjää viimeisen viikon aikana
title: Trendit title: Trendit
trending: Trendaus trending: Trendaus
warning_presets: warning_presets:
@ -1043,8 +1043,8 @@ fi:
advanced_web_interface: Edistynyt selainkäyttöliittymä advanced_web_interface: Edistynyt selainkäyttöliittymä
advanced_web_interface_hint: 'Jos haluat hyödyntää näytön koko leveyttä, edistyneen selainkäyttöliittymän avulla voit määrittää useita erilaisia sarakkeita, niin näet kerralla niin paljon tietoa kuin haluat: kotisyöte, ilmoitukset, yleinen aikajana, mikä tahansa määrä listoja ja aihetunnisteita.' advanced_web_interface_hint: 'Jos haluat hyödyntää näytön koko leveyttä, edistyneen selainkäyttöliittymän avulla voit määrittää useita erilaisia sarakkeita, niin näet kerralla niin paljon tietoa kuin haluat: kotisyöte, ilmoitukset, yleinen aikajana, mikä tahansa määrä listoja ja aihetunnisteita.'
animations_and_accessibility: Animaatiot ja saavutettavuus animations_and_accessibility: Animaatiot ja saavutettavuus
confirmation_dialogs: Vahvistusvalinnat confirmation_dialogs: Vahvistusikkunat
discovery: Löydettävyys discovery: Löytäminen
localization: localization:
body: Mastodonin ovat kääntäneet vapaaehtoiset. body: Mastodonin ovat kääntäneet vapaaehtoiset.
guide_link: https://crowdin.com/project/mastodon guide_link: https://crowdin.com/project/mastodon
@ -1092,7 +1092,7 @@ fi:
dont_have_your_security_key: Eikö sinulla ole suojausavainta? dont_have_your_security_key: Eikö sinulla ole suojausavainta?
forgot_password: Unohditko salasanasi? forgot_password: Unohditko salasanasi?
invalid_reset_password_token: Salasanan palautustunnus on virheellinen tai vanhentunut. Pyydä uusi. invalid_reset_password_token: Salasanan palautustunnus on virheellinen tai vanhentunut. Pyydä uusi.
link_to_otp: Syötä puhelimesi kaksivaiheisen todennuksen koodi tai palautuskoodi link_to_otp: Syötä kaksivaiheisen todennuksen tunnusluku puhelimestasi tai palautuskoodi
link_to_webauth: Käytä suojausavaintasi link_to_webauth: Käytä suojausavaintasi
log_in_with: Kirjaudu käyttäen log_in_with: Kirjaudu käyttäen
login: Kirjaudu sisään login: Kirjaudu sisään
@ -1134,7 +1134,7 @@ fi:
title: Kirjaudu palvelimelle %{domain} title: Kirjaudu palvelimelle %{domain}
sign_up: sign_up:
manual_review: Palvelimen %{domain} ylläpito tarkastaa rekisteröitymiset käsin. Helpottaaksesi rekisteröitymisesi käsittelyä kerro hieman itsestäsi ja siitä, miksi haluat luoda käyttäjätilin palvelimelle %{domain}. manual_review: Palvelimen %{domain} ylläpito tarkastaa rekisteröitymiset käsin. Helpottaaksesi rekisteröitymisesi käsittelyä kerro hieman itsestäsi ja siitä, miksi haluat luoda käyttäjätilin palvelimelle %{domain}.
preamble: Kun sinulla on tili tällä Mastodon-palvelimella, voit seurata kaikkia muita verkossa olevia henkilöitä riippumatta siitä, missä heidän tilinsä on. preamble: Kun sinulla on tili tällä Mastodon-palvelimella, voit seurata kaikkia muita verkossa olevia käyttäjiä riippumatta siitä, missä heidän tilinsä on.
title: Otetaan %{domain} käyttöösi. title: Otetaan %{domain} käyttöösi.
status: status:
account_status: Tilin tila account_status: Tilin tila
@ -1224,7 +1224,7 @@ fi:
invalid_domain: ei ole kelvollinen verkkotunnus invalid_domain: ei ole kelvollinen verkkotunnus
edit_profile: edit_profile:
basic_information: Perustiedot basic_information: Perustiedot
hint_html: "<strong>Mukauta, mitä ihmiset näkevät julkisessa profiilissasi ja julkaisujesi vieressä.</strong> Ihmiset seuraavat sinua takaisin ja ovat kanssasi vuorovaikutuksessa todennäköisemmin, kun sinulla on täytetty profiili ja profiilikuva." hint_html: "<strong>Mukauta, mitä ihmiset näkevät julkisessa profiilissasi ja julkaisujesi vieressä.</strong> Sinua seurataan takaisin ja kanssasi ollaan vuorovaikutuksessa todennäköisemmin, kun sinulla on täytetty profiili ja profiilikuva."
other: Muut other: Muut
errors: errors:
'400': Lähettämäsi pyyntö oli virheellinen tai muotoiltu virheellisesti. '400': Lähettämäsi pyyntö oli virheellinen tai muotoiltu virheellisesti.
@ -1249,7 +1249,7 @@ fi:
date: Päiväys date: Päiväys
download: Lataa arkisto download: Lataa arkisto
hint_html: Voit pyytää arkistoa omista <strong>julkaisuista ja mediasta</strong>. Viedyt tiedot ovat ActivityPub-muodossa, ja ne voi lukea millä tahansa yhteensopivalla ohjelmalla. Voit pyytää arkistoa 7 päivän välein. hint_html: Voit pyytää arkistoa omista <strong>julkaisuista ja mediasta</strong>. Viedyt tiedot ovat ActivityPub-muodossa, ja ne voi lukea millä tahansa yhteensopivalla ohjelmalla. Voit pyytää arkistoa 7 päivän välein.
in_progress: Arkistoa kootaan... in_progress: Arkistoa kootaan
request: Pyydä arkisto request: Pyydä arkisto
size: Koko size: Koko
blocks: Estot blocks: Estot
@ -1262,8 +1262,8 @@ fi:
featured_tags: featured_tags:
add_new: Lisää uusi add_new: Lisää uusi
errors: errors:
limit: Olet nostanut esille jo enimmäismäärän aihetunnisteita limit: Suosittelet jo aihetunnisteiden enimmäismäärää
hint_html: "<strong>Nosta tärkeimmät aihetunnisteesi esille profiilissasi.</strong> Erinomainen työkalu, jolla pidät kirjaa luovista teoksistasi ja pitkäaikaisista projekteistasi. Esille nostamasi aihetunnisteet ovat näyttävällä paikalla profiilissasi ja mahdollistavat nopean pääsyn julkaisuihisi." hint_html: "<strong>Suosittele tärkeimpiä aihetunnisteitasi profiilissasi.</strong> Erinomainen työkalu, jolla pidät kirjaa luovista teoksistasi ja pitkäaikaisista projekteistasi. Suosittelemasi aihetunnisteet ovat näyttävällä paikalla profiilissasi ja mahdollistavat nopean pääsyn julkaisuihisi."
filters: filters:
contexts: contexts:
account: Profiilit account: Profiilit
@ -1359,7 +1359,7 @@ fi:
following_html: Olet aikeissa <strong>seurata</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>. following_html: Olet aikeissa <strong>seurata</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>.
lists_html: Olet aikeissa lisätä <strong>listoihisi</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>. Uusia listoja luodaan, jos sopivaa kohdelistaa ei ole olemassa. lists_html: Olet aikeissa lisätä <strong>listoihisi</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>. Uusia listoja luodaan, jos sopivaa kohdelistaa ei ole olemassa.
muting_html: Olet aikeissa <strong>mykistää</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>. muting_html: Olet aikeissa <strong>mykistää</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>.
preface: Voit tuoda toiselta palvelimelta viemiäsi tietoja, kuten seuraamiesi tai estämiesi henkilöiden luettelon. preface: Voit tuoda toiselta palvelimelta viemiäsi tietoja, kuten seuraamiesi tai estämiesi käyttäjien luettelon.
recent_imports: Viimeksi tuotu recent_imports: Viimeksi tuotu
states: states:
finished: Valmis finished: Valmis
@ -1386,7 +1386,7 @@ fi:
domain_blocking: Verkkotunnusten estoluettelo domain_blocking: Verkkotunnusten estoluettelo
following: Seurattujen luettelo following: Seurattujen luettelo
lists: Listat lists: Listat
muting: Mykistettyjen luettelo muting: Mykistysluettelo
upload: Lähetä upload: Lähetä
invites: invites:
delete: Poista käytöstä delete: Poista käytöstä
@ -1480,7 +1480,7 @@ fi:
title: Moderointi title: Moderointi
move_handler: move_handler:
carry_blocks_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka olit estänyt. carry_blocks_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka olit estänyt.
carry_mutes_over_text: Tämä käyttäjä siirtyi tililtä %{acct}, jonka olet mykistänyt. carry_mutes_over_text: Tämä käyttäjä muutti tilistä %{acct}, jonka olet mykistänyt.
copy_account_note_text: 'Tämä käyttäjä siirtyi tililtä %{acct}. Nämä olivat muistiinpanosi hänestä:' copy_account_note_text: 'Tämä käyttäjä siirtyi tililtä %{acct}. Nämä olivat muistiinpanosi hänestä:'
navigation: navigation:
toggle_menu: Avaa/sulje valikko toggle_menu: Avaa/sulje valikko
@ -1569,7 +1569,7 @@ fi:
reach: Tavoittavuus reach: Tavoittavuus
reach_hint_html: Määritä, haluatko tulla uusien käyttäjien löytämäksi ja seuraamaksi. Haluatko julkaisujesi näkyvän Selaa-sivulla? Haluatko muiden käyttäjien näkevän sinut seurantasuosituksissaan? Haluatko hyväksyä kaikki uudet seuraajat automaattisesti vai päättää jokaisesta erikseen? reach_hint_html: Määritä, haluatko tulla uusien käyttäjien löytämäksi ja seuraamaksi. Haluatko julkaisujesi näkyvän Selaa-sivulla? Haluatko muiden käyttäjien näkevän sinut seurantasuosituksissaan? Haluatko hyväksyä kaikki uudet seuraajat automaattisesti vai päättää jokaisesta erikseen?
search: Haku search: Haku
search_hint_html: Määritä, kuinka haluat tulla löydetyksi. Haluatko, että ihmiset löytävät sinut julkisten julkaisujesi perusteella? Haluatko, että ihmiset Mastodonin ulkopuolella löytävät profiilisi tehdessään hakuja verkossa? Otathan huomioon, ettei julkisten tietojen täyttä kaikista hakukoneista poisjäämistä voi taata. search_hint_html: Määritä, kuinka haluat tulla löydetyksi. Haluatko, että sinut löydetään julkisten julkaisujesi perusteella? Haluatko, että Mastodonin ulkopuoliset ihmiset löytävät profiilisi tehdessään hakuja verkossa? Otathan huomioon, ettei julkisten tietojen täyttä kaikista hakukoneista poisjäämistä voi taata.
title: Yksityisyys ja tavoittavuus title: Yksityisyys ja tavoittavuus
privacy_policy: privacy_policy:
title: Tietosuojakäytäntö title: Tietosuojakäytäntö
@ -1675,16 +1675,16 @@ fi:
development: Kehitys development: Kehitys
edit_profile: Muokkaa profiilia edit_profile: Muokkaa profiilia
export: Vie tietoja export: Vie tietoja
featured_tags: Esille nostetut aihetunnisteet featured_tags: Suositellut aihetunnisteet
import: Tuo tietoja import: Tuo tietoja
import_and_export: Tuonti ja vienti import_and_export: Tuonti ja vienti
migrate: Tilin muutto toisaalle migrate: Tilin muutto toisaalle
notifications: Sähköposti-ilmoitukset notifications: Sähköposti-ilmoitukset
preferences: Ominaisuudet preferences: Asetukset
profile: Julkinen profiili profile: Julkinen profiili
relationships: Seuratut ja seuraajat relationships: Seuratut ja seuraajat
severed_relationships: Katkenneet seurantasuhteet severed_relationships: Katkenneet suhteet
statuses_cleanup: Autom. julkaisujen poisto statuses_cleanup: Julkaisujen automaattipoisto
strikes: Moderointivaroitukset strikes: Moderointivaroitukset
two_factor_authentication: Kaksivaiheinen todennus two_factor_authentication: Kaksivaiheinen todennus
webauthn_authentication: Suojausavaimet webauthn_authentication: Suojausavaimet
@ -1729,8 +1729,8 @@ fi:
reblog: Tehostusta ei voi kiinnittää reblog: Tehostusta ei voi kiinnittää
poll: poll:
total_people: total_people:
one: "%{count} henkilö" one: "%{count} käyttäjä"
other: "%{count} henkilöä" other: "%{count} käyttäjää"
total_votes: total_votes:
one: "%{count} ääni" one: "%{count} ääni"
other: "%{count} ääntä" other: "%{count} ääntä"
@ -1750,7 +1750,7 @@ fi:
enabled: Poista vanhat julkaisut automaattisesti enabled: Poista vanhat julkaisut automaattisesti
enabled_hint: Poistaa julkaisusi automaattisesti, kun ne saavuttavat valitun ikäkynnyksen, ellei jokin alla olevista poikkeuksista tule kyseeseen enabled_hint: Poistaa julkaisusi automaattisesti, kun ne saavuttavat valitun ikäkynnyksen, ellei jokin alla olevista poikkeuksista tule kyseeseen
exceptions: Poikkeukset exceptions: Poikkeukset
explanation: Koska julkaisujen poistaminen on raskas toimi, se tapahtuu hitaasti ajan mittaan, kun palvelin ei ole muutoin ruuhkainen. Siksi viestejäsi voi poistua vasta tovi sen jälkeen, kun ne ovat saavuttaneet ikäkynnyksen. explanation: Koska julkaisujen poistaminen on raskas toimi, se tapahtuu hitaasti aikaa myöten silloin kun palvelin ei ole muutoin ruuhkainen. Siksi viestejäsi voi poistua vasta tovi sen jälkeen kun ne ovat ylittäneet ikäkynnyksen.
ignore_favs: Ohita suosikit ignore_favs: Ohita suosikit
ignore_reblogs: Ohita tehostukset ignore_reblogs: Ohita tehostukset
interaction_exceptions: Vuorovaikutuksiin perustuvat poikkeukset interaction_exceptions: Vuorovaikutuksiin perustuvat poikkeukset
@ -1857,7 +1857,7 @@ fi:
explanation: explanation:
delete_statuses: Joidenkin julkaisuistasi on havaittu rikkovan ainakin yhtä yhteisön sääntöä, joten palvelimen %{instance} moderaattorit ovat poistaneet ne. delete_statuses: Joidenkin julkaisuistasi on havaittu rikkovan ainakin yhtä yhteisön sääntöä, joten palvelimen %{instance} moderaattorit ovat poistaneet ne.
disable: Et voi enää käyttää tiliäsi, mutta profiilisi ja muut tiedot pysyvät muuttumattomina. Voit pyytää varmuuskopiota tiedoistasi, vaihtaa tilin asetuksia tai poistaa tilisi. disable: Et voi enää käyttää tiliäsi, mutta profiilisi ja muut tiedot pysyvät muuttumattomina. Voit pyytää varmuuskopiota tiedoistasi, vaihtaa tilin asetuksia tai poistaa tilisi.
mark_statuses_as_sensitive: Palvelimen %{instance} moderaattorit ovat merkinneet osan julkaisuistasi arkaluonteisiksi. Tämä tarkoittaa sitä, että ihmisten täytyy napauttaa mediaa ennen kuin sen esikatselu näytetään. Voit merkitä median itse arkaluonteiseksi, kun julkaiset tulevaisuudessa. mark_statuses_as_sensitive: Palvelimen %{instance} moderaattorit ovat merkinneet osan julkaisuistasi arkaluonteisiksi. Tämä tarkoittaa sitä, että mediaa täytyy napauttaa ennen kuin sen esikatselu näytetään. Voit merkitä median itse arkaluonteiseksi, kun julkaiset tulevaisuudessa.
sensitive: Tästä lähtien kaikki lähetetyt mediatiedostot merkitään arkaluonteisiksi ja piilotetaan napsautusvaroituksen taakse. sensitive: Tästä lähtien kaikki lähetetyt mediatiedostot merkitään arkaluonteisiksi ja piilotetaan napsautusvaroituksen taakse.
silence: Voit edelleen käyttää tiliäsi, mutta vain sinua jo seuraavat käyttäjät näkevät julkaisusi tällä palvelimella ja sinut voidaan sulkea pois eri löytämisominaisuuksista. Toiset voivat kuitenkin edelleen seurata sinua manuaalisesti. silence: Voit edelleen käyttää tiliäsi, mutta vain sinua jo seuraavat käyttäjät näkevät julkaisusi tällä palvelimella ja sinut voidaan sulkea pois eri löytämisominaisuuksista. Toiset voivat kuitenkin edelleen seurata sinua manuaalisesti.
suspend: Et voi enää käyttää tiliäsi, eivätkä profiilisi ja muut tiedot ole enää käytettävissä. Voit silti kirjautua sisään pyytääksesi tietojesi varmuuskopiota, kunnes tiedot on poistettu kokonaan noin 30 päivän kuluttua. Säilytämme kuitenkin joitain perustietoja, jotka estävät sinua kiertämästä jäädytystä. suspend: Et voi enää käyttää tiliäsi, eivätkä profiilisi ja muut tiedot ole enää käytettävissä. Voit silti kirjautua sisään pyytääksesi tietojesi varmuuskopiota, kunnes tiedot on poistettu kokonaan noin 30 päivän kuluttua. Säilytämme kuitenkin joitain perustietoja, jotka estävät sinua kiertämästä jäädytystä.
@ -1900,14 +1900,14 @@ fi:
feature_moderation: Mastodon palauttaa päätöksenteon käsiisi. Jokainen palvelin luo omat sääntönsä ja määräyksensä, joita valvotaan paikallisesti eikä ylhäältä alas kuten kaupallisessa sosiaalisessa mediassa, mikä tekee siitä joustavimman vastaamaan eri ihmisryhmien tarpeisiin. Liity palvelimelle, jonka säännöt sopivat sinulle, tai ylläpidä omaa palvelinta. feature_moderation: Mastodon palauttaa päätöksenteon käsiisi. Jokainen palvelin luo omat sääntönsä ja määräyksensä, joita valvotaan paikallisesti eikä ylhäältä alas kuten kaupallisessa sosiaalisessa mediassa, mikä tekee siitä joustavimman vastaamaan eri ihmisryhmien tarpeisiin. Liity palvelimelle, jonka säännöt sopivat sinulle, tai ylläpidä omaa palvelinta.
feature_moderation_title: Moderointi juuri kuten sen pitäisi olla feature_moderation_title: Moderointi juuri kuten sen pitäisi olla
follow_action: Seuraa follow_action: Seuraa
follow_step: Mastodonissa on kyse kiinnostavien ihmisten seuraamisesta. follow_step: Mastodonissa on kyse kiinnostavien käyttäjien seuraamisesta.
follow_title: Mukauta kotisyötettäsi follow_title: Mukauta kotisyötettäsi
follows_subtitle: Seuraa tunnettuja tilejä follows_subtitle: Seuraa tunnettuja tilejä
follows_title: Seurantaehdotuksia follows_title: Seurantaehdotuksia
follows_view_more: Näytä lisää seurattavia henkilöitä follows_view_more: Näytä lisää seurattavia käyttäjiä
hashtags_recent_count: hashtags_recent_count:
one: "%{people} henkilö viimeisenä 2 päivänä" one: "%{people} käyttäjä viimeisenä 2 päivänä"
other: "%{people} henkilöä viimeisenä 2 päivänä" other: "%{people} käyttäjää viimeisenä 2 päivänä"
hashtags_subtitle: Tutki, mikä on ollut suosittua viimeisenä 2 päivänä hashtags_subtitle: Tutki, mikä on ollut suosittua viimeisenä 2 päivänä
hashtags_title: Suositut aihetunnisteet hashtags_title: Suositut aihetunnisteet
hashtags_view_more: Näytä lisää suosittuja aihetunnisteita hashtags_view_more: Näytä lisää suosittuja aihetunnisteita
@ -1921,9 +1921,9 @@ fi:
subject: Tervetuloa Mastodoniin subject: Tervetuloa Mastodoniin
title: Tervetuloa mukaan, %{name}! title: Tervetuloa mukaan, %{name}!
users: users:
follow_limit_reached: Et voi seurata yli %{limit} henkilöä follow_limit_reached: Et voi seurata yli %{limit} käyttäjää
go_to_sso_account_settings: Avaa identiteettitarjoajasi tiliasetukset go_to_sso_account_settings: Avaa identiteettitarjoajasi tiliasetukset
invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi invalid_otp_token: Virheellinen kaksivaiheisen todennuksen koodi
otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyden osoitteeseen %{email} otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyden osoitteeseen %{email}
rate_limited: Liian monta todennusyritystä yritä uudelleen myöhemmin. rate_limited: Liian monta todennusyritystä yritä uudelleen myöhemmin.
seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä. seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä.

View File

@ -882,6 +882,9 @@ ia:
action: Consulta hic pro plus information action: Consulta hic pro plus information
message_html: "<strong>Tu immagazinage de objectos es mal configurate. Le confidentialitate de tu usatores es in risco.</strong>" message_html: "<strong>Tu immagazinage de objectos es mal configurate. Le confidentialitate de tu usatores es in risco.</strong>"
tags: tags:
moderation:
pending_review: Attende revision
title: Stato
name: Nomine name: Nomine
review: Revide le stato review: Revide le stato
search: Cercar search: Cercar

View File

@ -211,6 +211,7 @@ be:
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: Перадвызначана
@ -242,11 +243,13 @@ be:
warn: Схаваць з папярэджаннем warn: Схаваць з папярэджаннем
form_admin_settings: form_admin_settings:
activity_api_enabled: Апублікаваць зводную статыстыку аб актыўнасці карыстальнікаў API activity_api_enabled: Апублікаваць зводную статыстыку аб актыўнасці карыстальнікаў API
app_icon: Значок праграмы
backups_retention_period: Працягласць захавання архіву карыстальніка backups_retention_period: Працягласць захавання архіву карыстальніка
bootstrap_timeline_accounts: Заўсёды раіць гэтыя ўліковыя запісы новым карыстальнікам bootstrap_timeline_accounts: Заўсёды раіць гэтыя ўліковыя запісы новым карыстальнікам
closed_registrations_message: Уласнае паведамленне, калі рэгістрацыя немагчымая closed_registrations_message: Уласнае паведамленне, калі рэгістрацыя немагчымая
content_cache_retention_period: Перыяд захоўвання выдаленага змесціва content_cache_retention_period: Перыяд захоўвання выдаленага змесціва
custom_css: CSS карыстальніка custom_css: CSS карыстальніка
favicon: Значок сайта
mascot: Уласны маскот(спадчына) mascot: Уласны маскот(спадчына)
media_cache_retention_period: Працягласць захавання кэшу для медыя media_cache_retention_period: Працягласць захавання кэшу для медыя
peers_api_enabled: Апублікаваць спіс знойдзеных сервераў у API peers_api_enabled: Апублікаваць спіс знойдзеных сервераў у API
@ -311,6 +314,7 @@ be:
listable: Дазволіць паказ хэштэгу ў пошуку і ў каталозе профіляў listable: Дазволіць паказ хэштэгу ў пошуку і ў каталозе профіляў
name: Хэштэг name: Хэштэг
trendable: Дазволіць паказ гэтага хэштэга ў трэндах trendable: Дазволіць паказ гэтага хэштэга ў трэндах
usable: Дазволіць допісам выкарыстоўваць гэты хэштэг лакальна
user: user:
role: Роля role: Роля
time_zone: Часавы пояс time_zone: Часавы пояс

View File

@ -242,11 +242,13 @@ cs:
warn: Skrýt s varováním warn: Skrýt s varováním
form_admin_settings: form_admin_settings:
activity_api_enabled: Zveřejnit souhrnné statistiky o aktivitě uživatele v API activity_api_enabled: Zveřejnit souhrnné statistiky o aktivitě uživatele v API
app_icon: Ikona aplikace
backups_retention_period: Doba uchovávání archivu uživatelů backups_retention_period: Doba uchovávání archivu uživatelů
bootstrap_timeline_accounts: Vždy doporučovat tyto účty novým uživatelům bootstrap_timeline_accounts: Vždy doporučovat tyto účty novým uživatelům
closed_registrations_message: Vlastní zpráva, když přihlášení není k dispozici closed_registrations_message: Vlastní zpráva, když přihlášení není k dispozici
content_cache_retention_period: Doba uchovávání vzdáleného obsahu content_cache_retention_period: Doba uchovávání vzdáleného obsahu
custom_css: Vlastní CSS custom_css: Vlastní CSS
favicon: Favicon
mascot: Vlastní maskot (zastaralé) mascot: Vlastní maskot (zastaralé)
media_cache_retention_period: Doba uchovávání mezipaměti médií media_cache_retention_period: Doba uchovávání mezipaměti médií
peers_api_enabled: Zveřejnit seznam nalezených serverů v API peers_api_enabled: Zveřejnit seznam nalezených serverů v API

View File

@ -314,6 +314,7 @@ cy:
listable: Caniatáu i'r hashnod hwn ymddangos mewn chwiliadau ac awgrymiadau listable: Caniatáu i'r hashnod hwn ymddangos mewn chwiliadau ac awgrymiadau
name: Hashnod name: Hashnod
trendable: Caniatáu i'r hashnod hwn ymddangos o dan bynciau llosg trendable: Caniatáu i'r hashnod hwn ymddangos o dan bynciau llosg
usable: Caniatáu i bostiadau ddefnyddio'r hashnod hwn yn lleol
user: user:
role: Rôl role: Rôl
time_zone: Cylchfa amser time_zone: Cylchfa amser

View File

@ -314,7 +314,7 @@ es-MX:
listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
name: Etiqueta name: Etiqueta
trendable: Permitir que esta etiqueta aparezca bajo tendencias trendable: Permitir que esta etiqueta aparezca bajo tendencias
usable: Permitir a las publicacions usar esta etiqueta localmente usable: Permitir a las publicaciones usar esta etiqueta localmente
user: user:
role: Rol role: Rol
time_zone: Zona horaria time_zone: Zona horaria

View File

@ -314,7 +314,7 @@ es:
listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
name: Etiqueta name: Etiqueta
trendable: Permitir que esta etiqueta aparezca bajo tendencias trendable: Permitir que esta etiqueta aparezca bajo tendencias
usable: Permitir a las publicacions usar esta etiqueta localmente usable: Permitir a las publicaciones usar esta etiqueta localmente
user: user:
role: Rol role: Rol
time_zone: Zona horaria time_zone: Zona horaria

View File

@ -6,7 +6,7 @@ fi:
discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille. discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille.
display_name: Koko nimesi tai lempinimesi. display_name: Koko nimesi tai lempinimesi.
fields: Verkkosivustosi, pronominisi, ikäsi ja mitä ikinä haluatkaan ilmoittaa. fields: Verkkosivustosi, pronominisi, ikäsi ja mitä ikinä haluatkaan ilmoittaa.
indexable: Julkiset julkaisusi voivat näkyä hakutuloksissa Mastodonissa. Ihmiset, jotka ovat olleet vuorovaikutuksessa julkaisujesi kanssa, voivat etsiä niitä asetuksesta riippumatta. indexable: Julkiset julkaisusi voivat näkyä Mastodonin hakutuloksissa. Käyttäjät, jotka ovat olleet vuorovaikutuksessa julkaisujesi kanssa, voivat etsiä niitä asetuksesta riippumatta.
note: 'Voit @mainita muita käyttäjiä tai #aihetunnisteita.' note: 'Voit @mainita muita käyttäjiä tai #aihetunnisteita.'
show_collections: Käyttäjät voivat selata seurattujasi ja seuraajiasi. Käyttäjät, joita seuraat, näkevät joka tapauksessa, että seuraat heitä. show_collections: Käyttäjät voivat selata seurattujasi ja seuraajiasi. Käyttäjät, joita seuraat, näkevät joka tapauksessa, että seuraat heitä.
unlocked: Käyttäjät voivat seurata sinua pyytämättä hyväksyntääsi. Poista valinta, jos haluat tarkistaa sekä hyväksyä tai hylätä vastaanottamasi seurantapyynnöt. unlocked: Käyttäjät voivat seurata sinua pyytämättä hyväksyntääsi. Poista valinta, jos haluat tarkistaa sekä hyväksyä tai hylätä vastaanottamasi seurantapyynnöt.
@ -38,7 +38,7 @@ fi:
appeal: appeal:
text: Voit valittaa varoituksesta vain kerran text: Voit valittaa varoituksesta vain kerran
defaults: defaults:
autofollow: Henkilöt, jotka rekisteröityvät kutsun kautta, seuraavat sinua automaattisesti autofollow: Kutsun kautta rekisteröityvät käyttäjät seuraavat sinua automaattisesti
avatar: WEBP, PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px avatar: WEBP, PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
bot: Ilmaise muille, että tili suorittaa enimmäkseen automaattisia toimia eikä sitä valvota bot: Ilmaise muille, että tili suorittaa enimmäkseen automaattisia toimia eikä sitä valvota
context: Ainakin yksi konteksti, jossa suodattimen pitäisi olla voimassa context: Ainakin yksi konteksti, jossa suodattimen pitäisi olla voimassa
@ -49,14 +49,14 @@ fi:
header: WEBP, PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px header: WEBP, PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
inbox_url: Kopioi URL-osoite haluamasi välittäjän etusivulta inbox_url: Kopioi URL-osoite haluamasi välittäjän etusivulta
irreversible: Suodatetut julkaisut katoavat peruuttamattomasti, vaikka suodatin poistettaisiin myöhemmin irreversible: Suodatetut julkaisut katoavat peruuttamattomasti, vaikka suodatin poistettaisiin myöhemmin
locale: Käyttöliittymän, sähköpostien ja puskuilmoitusten kieli locale: Käyttöliittymän, sähköpostiviestien ja puskuilmoitusten kieli
password: Käytä vähintään 8:aa merkkiä password: Käytä vähintään 8:aa merkkiä
phrase: Täsmää riippumatta tekstin aakkoslajista tai julkaisun sisältövaroituksesta phrase: Täsmää riippumatta tekstin aakkoslajista tai julkaisun sisältövaroituksesta
scopes: Mihin ohjelmointirajapintoihin sovelluksella on pääsy. Jos valitset ylätason käyttöoikeuden, sinun ei tarvitse valita yksittäisiä. scopes: Mihin ohjelmointirajapintoihin sovelluksella on pääsy. Jos valitset ylätason käyttöoikeuden, sinun ei tarvitse valita yksittäisiä.
setting_aggregate_reblogs: Älä näytä uusia tehostuksia julkaisuille, joita on äskettäin tehostettu (koskee vain juuri vastaanotettuja tehostuksia) setting_aggregate_reblogs: Älä näytä uusia tehostuksia julkaisuille, joita on äskettäin tehostettu (koskee vain juuri vastaanotettuja tehostuksia)
setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät Mastodonia aktiivisesti setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät Mastodonia aktiivisesti
setting_default_sensitive: Arkaluonteinen media piilotetaan oletusarvoisesti, ja se voidaan näyttää yhdellä napsautuksella setting_default_sensitive: Arkaluonteinen media piilotetaan oletusarvoisesti, ja se voidaan näyttää yhdellä napsautuksella
setting_display_media_default: Piilota arkaluonteiseksi merkitty media setting_display_media_default: Piilota arkaluonteiseksi merkitty mediasisältö
setting_display_media_hide_all: Piilota mediasisältö aina setting_display_media_hide_all: Piilota mediasisältö aina
setting_display_media_show_all: Näytä mediasisältö aina setting_display_media_show_all: Näytä mediasisältö aina
setting_use_blurhash: Liukuvärit perustuvat piilotettujen kuvien väreihin mutta sumentavat yksityiskohdat setting_use_blurhash: Liukuvärit perustuvat piilotettujen kuvien väreihin mutta sumentavat yksityiskohdat
@ -89,12 +89,12 @@ fi:
peers_api_enabled: Luettelo verkkotunnuksista, jotka tämä palvelin on kohdannut fediversumissa. Se ei kerro, federoitko tietyn palvelimen kanssa, vaan että palvelimesi on ylipäätään tietoinen siitä. Tätä tietoa käytetään palveluissa, jotka keräävät tilastoja federoinnista yleisellä tasolla. peers_api_enabled: Luettelo verkkotunnuksista, jotka tämä palvelin on kohdannut fediversumissa. Se ei kerro, federoitko tietyn palvelimen kanssa, vaan että palvelimesi on ylipäätään tietoinen siitä. Tätä tietoa käytetään palveluissa, jotka keräävät tilastoja federoinnista yleisellä tasolla.
profile_directory: Profiilihakemisto luetteloi kaikki käyttäjät, jotka ovat valinneet olla löydettävissä. profile_directory: Profiilihakemisto luetteloi kaikki käyttäjät, jotka ovat valinneet olla löydettävissä.
require_invite_text: Kun rekisteröityminen vaatii manuaalisen hyväksynnän, tee ”Miksi haluat liittyä?” -tekstikentästä pakollinen vapaaehtoisen sijaan require_invite_text: Kun rekisteröityminen vaatii manuaalisen hyväksynnän, tee ”Miksi haluat liittyä?” -tekstikentästä pakollinen vapaaehtoisen sijaan
site_contact_email: Miten ihmiset voivat tavoittaa sinut oikeus- tai tukikysymyksissä. site_contact_email: Miten sinut voi tavoittaa oikeus- tai tukikysymyksissä.
site_contact_username: Miten ihmiset voivat tavoittaa sinut Mastodonissa. site_contact_username: Miten sinut voi tavoittaa Mastodonissa.
site_extended_description: Kaikki lisätiedot, jotka voivat olla hyödyllisiä kävijöille ja käyttäjille. Voidaan jäsentää Markdown-syntaksilla. site_extended_description: Kaikki lisätiedot, jotka voivat olla hyödyllisiä kävijöille ja käyttäjille. Voidaan jäsentää Markdown-syntaksilla.
site_short_description: Lyhyt kuvaus, joka auttaa yksilöimään palvelimesi. Kuka sitä johtaa, ja keille se on tarkoitettu? site_short_description: Lyhyt kuvaus, joka auttaa yksilöimään palvelimesi. Kuka sitä johtaa, ja keille se on tarkoitettu?
site_terms: Käytä omaa tietosuojakäytäntöä tai jätä tyhjäksi, jos haluat käyttää oletusta. Voidaan jäsentää Markdown-syntaksilla. site_terms: Käytä omaa tietosuojakäytäntöä tai jätä tyhjäksi, jos haluat käyttää oletusta. Voidaan jäsentää Markdown-syntaksilla.
site_title: Miten ihmiset voivat viitata palvelimeesi sen verkkotunnuksen lisäksi. site_title: Miten palvelimeesi voi viitata sen verkkotunnuksen lisäksi.
status_page_url: URL-osoite sivulle, josta tämän palvelimen tilan voi ongelmatilanteissa tarkistaa status_page_url: URL-osoite sivulle, josta tämän palvelimen tilan voi ongelmatilanteissa tarkistaa
theme: Teema, jonka uloskirjautuneet vierailijat ja uudet käyttäjät näkevät. theme: Teema, jonka uloskirjautuneet vierailijat ja uudet käyttäjät näkevät.
thumbnail: Noin 2:1 kuva näkyy palvelimen tietojen ohessa. thumbnail: Noin 2:1 kuva näkyy palvelimen tietojen ohessa.
@ -121,7 +121,7 @@ fi:
hint: Vapaaehtoinen. Anna yksityiskohtaisempia tietoja säännöstä hint: Vapaaehtoinen. Anna yksityiskohtaisempia tietoja säännöstä
text: Kuvaile sääntöä tai edellytystä palvelimesi käyttäjille. Suosi tiivistä, yksinkertaista ilmaisua text: Kuvaile sääntöä tai edellytystä palvelimesi käyttäjille. Suosi tiivistä, yksinkertaista ilmaisua
sessions: sessions:
otp: 'Näppäile mobiilisovelluksessa näkyvä kaksivaiheisen todennuksen tunnusluku, tai käytä tarvittaessa palautuskoodia:' otp: 'Näppäile mobiilisovelluksessa näkyvä kaksivaiheisen todennuksen tunnusluku tai käytä tarvittaessa palautuskoodia:'
webauthn: Jos kyseessä on USB-avain, muista laittaa se paikalleen ja tarvittaessa napauttaa sitä. webauthn: Jos kyseessä on USB-avain, muista laittaa se paikalleen ja tarvittaessa napauttaa sitä.
settings: settings:
indexable: Profiilisi voi näkyä Googlen, Bingin ja muiden hakukoneiden hakutuloksissa. indexable: Profiilisi voi näkyä Googlen, Bingin ja muiden hakukoneiden hakutuloksissa.
@ -135,7 +135,7 @@ fi:
color: Väri, jota käytetään roolille kaikkialla käyttöliittymässä, RGB-heksadesimaalimuodossa color: Väri, jota käytetään roolille kaikkialla käyttöliittymässä, RGB-heksadesimaalimuodossa
highlighted: Tämä tekee roolista julkisesti näkyvän highlighted: Tämä tekee roolista julkisesti näkyvän
name: Roolin julkinen nimi, jos rooli on asetettu näytettäväksi merkkinä name: Roolin julkinen nimi, jos rooli on asetettu näytettäväksi merkkinä
permissions_as_keys: Käyttäjillä, joilla on tämä rooli, on käyttöoikeus... permissions_as_keys: Käyttäjillä, joilla on tämä rooli, on käyttöoikeus
position: Korkeampi rooli ratkaisee konfliktit tietyissä tilanteissa. Tiettyjä toimia voidaan suorittaa vain rooleilla, joiden prioriteetti on pienempi position: Korkeampi rooli ratkaisee konfliktit tietyissä tilanteissa. Tiettyjä toimia voidaan suorittaa vain rooleilla, joiden prioriteetti on pienempi
webhook: webhook:
events: Valitse lähetettävät tapahtumat events: Valitse lähetettävät tapahtumat
@ -213,7 +213,7 @@ fi:
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_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äkyminen
setting_display_media_default: Oletus setting_display_media_default: Oletus
setting_display_media_hide_all: Piilota kaikki setting_display_media_hide_all: Piilota kaikki
setting_display_media_show_all: Näytä kaikki setting_display_media_show_all: Näytä kaikki
@ -224,7 +224,7 @@ fi:
setting_theme: Sivuston teema setting_theme: Sivuston teema
setting_trends: Näytä päivän trendit setting_trends: Näytä päivän trendit
setting_unfollow_modal: Kysy vahvistusta ennen seuraamisen lopettamista setting_unfollow_modal: Kysy vahvistusta ennen seuraamisen lopettamista
setting_use_blurhash: Käytä värikästä liukusävytystä piilotetulle medialle setting_use_blurhash: Käytä värikästä liukusävytystä piilotetulle mediasisällölle
setting_use_pending_items: Hidas tila setting_use_pending_items: Hidas tila
severity: Vakavuus severity: Vakavuus
sign_in_token_attempt: Turvakoodi sign_in_token_attempt: Turvakoodi
@ -294,7 +294,7 @@ fi:
follow: Joku seurasi sinua follow: Joku seurasi sinua
follow_request: Joku pyysi lupaa seurata sinua follow_request: Joku pyysi lupaa seurata sinua
mention: Joku mainitsi sinut mention: Joku mainitsi sinut
pending_account: Uusi tili tarvitsee tarkistuksen pending_account: Uusi tili tarvitsee tarkastuksen
reblog: Joku tehosti julkaisuasi reblog: Joku tehosti julkaisuasi
report: Uusi raportti lähetettiin report: Uusi raportti lähetettiin
software_updates: software_updates:

View File

@ -15,7 +15,7 @@ sk:
type_html: Vyber si, čo urobiť s účtom <strong>%{acct}</strong> type_html: Vyber si, čo urobiť s účtom <strong>%{acct}</strong>
warning_preset_id: Voliteľné. Stále môžeš vložiť vlastný text na samý koniec predlohy warning_preset_id: Voliteľné. Stále môžeš vložiť vlastný text na samý koniec predlohy
defaults: defaults:
autofollow: Ľudia ktorí sa zaregistrujú prostredníctvom pozvánky, ťa budú inheď následovať autofollow: Ľudia ktorí sa zaregistrujú prostredníctvom pozvánky, ťa budú inheď nasledovať
avatar: WEBP, PNG, GIF, alebo JPG. Najviac %{size}. Bude zmenšený na %{dimensions}px avatar: WEBP, PNG, GIF, alebo JPG. Najviac %{size}. Bude zmenšený na %{dimensions}px
bot: Tento účet vykonáva hlavne automatizované akcie, a je pravdepodobne nespravovaný bot: Tento účet vykonáva hlavne automatizované akcie, a je pravdepodobne nespravovaný
context: Jedno, alebo viac kritérií, v ktorých má byť filtrovanie uplatnené context: Jedno, alebo viac kritérií, v ktorých má byť filtrovanie uplatnené

View File

@ -314,6 +314,7 @@ tr:
listable: Bu etiketin aramalarda ve profil dizininde görünmesine izin ver listable: Bu etiketin aramalarda ve profil dizininde görünmesine izin ver
name: Etiket name: Etiket
trendable: Bu etiketin gündem altında görünmesine izin ver trendable: Bu etiketin gündem altında görünmesine izin ver
usable: Gönderilerin yerelde bu etiketi kullanmasına izin ver
user: user:
role: Rol role: Rol
time_zone: Zaman dilimi time_zone: Zaman dilimi

View File

@ -77,13 +77,13 @@ uk:
warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра
form_admin_settings: form_admin_settings:
activity_api_enabled: Кількість локальних опублікованих дописів, активних і нових користувачів у тижневих розрізах activity_api_enabled: Кількість локальних опублікованих дописів, активних і нових користувачів у тижневих розрізах
app_icon: WEBP, PNG, GIF або JPG. Замінює іконку програми за замовчуванням на мобільних пристроях на власну іконку. app_icon: WEBP, PNG, GIF або JPG. Замінює типову піктограму застосунку на мобільних пристроях на власну.
backups_retention_period: Користувачі мають можливість створювати архіви своїх дописів, щоб завантажити їх пізніше. Якщо встановлено додатне значення, ці архіви будуть автоматично видалені з вашого сховища через вказану кількість днів. backups_retention_period: Користувачі мають можливість створювати архіви своїх дописів, щоб завантажити їх пізніше. Якщо встановлено додатне значення, ці архіви будуть автоматично видалені з вашого сховища через вказану кількість днів.
bootstrap_timeline_accounts: Ці облікові записи будуть закріплені в топі пропозицій для нових користувачів. bootstrap_timeline_accounts: Ці облікові записи будуть закріплені в топі пропозицій для нових користувачів.
closed_registrations_message: Показується, коли реєстрація закрита closed_registrations_message: Показується, коли реєстрація закрита
content_cache_retention_period: Усі дописи з інших серверів (включно з коментарями та відповідями) будуть видалені через певну кількість днів, незважаючи на будь-яку локальну взаємодію користувачів з цими дописами. Сюди входять дописи, які локальний користувач позначив як закладки або вибране. Приватні згадки між користувачами з різних інстанцій також будуть втрачені і не підлягатимуть відновленню. Використання цього параметра призначено для екземплярів спеціального призначення і порушує багато очікувань користувачів, якщо його застосовано для загального використання. content_cache_retention_period: Усі дописи з інших серверів (включно з коментарями та відповідями) будуть видалені через певну кількість днів, незважаючи на будь-яку локальну взаємодію користувачів з цими дописами. Сюди входять дописи, які локальний користувач позначив як закладки або вибране. Приватні згадки між користувачами з різних інстанцій також будуть втрачені і не підлягатимуть відновленню. Використання цього параметра призначено для екземплярів спеціального призначення і порушує багато очікувань користувачів, якщо його застосовано для загального використання.
custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon. custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon.
favicon: WEBP, PNG, GIF або JPG. Замінює стандартну піктограму Mastodon на власну піктограму. favicon: WEBP, PNG, GIF або JPG. Замінює стандартну піктограму Mastodon на власну.
mascot: Змінює ілюстрацію в розширеному вебінтерфейсі. mascot: Змінює ілюстрацію в розширеному вебінтерфейсі.
media_cache_retention_period: Медіафайли з дописів віддалених користувачів кешуються на вашому сервері. Якщо встановлено додатне значення, медіа буде видалено через вказану кількість днів. Якщо медіа-дані будуть запитані після видалення, вони будуть завантажені повторно, якщо вихідний вміст все ще доступний. Через обмеження на частоту опитування карток попереднього перегляду посилань на сторонніх сайтах, рекомендується встановити це значення не менше 14 днів, інакше картки попереднього перегляду посилань не будуть оновлюватися на вимогу раніше цього часу. media_cache_retention_period: Медіафайли з дописів віддалених користувачів кешуються на вашому сервері. Якщо встановлено додатне значення, медіа буде видалено через вказану кількість днів. Якщо медіа-дані будуть запитані після видалення, вони будуть завантажені повторно, якщо вихідний вміст все ще доступний. Через обмеження на частоту опитування карток попереднього перегляду посилань на сторонніх сайтах, рекомендується встановити це значення не менше 14 днів, інакше картки попереднього перегляду посилань не будуть оновлюватися на вимогу раніше цього часу.
peers_api_enabled: Список доменів імен цього сервера з'явився у федівсесвіті. Сюди не входять дані чи ви пов'язані федерацією з цим сервером, а лише відомості, що вашому серверу відомо про нього. Його використовують служби, які збирають загальну статистику про федерації. peers_api_enabled: Список доменів імен цього сервера з'явився у федівсесвіті. Сюди не входять дані чи ви пов'язані федерацією з цим сервером, а лише відомості, що вашому серверу відомо про нього. Його використовують служби, які збирають загальну статистику про федерації.
@ -243,13 +243,13 @@ uk:
warn: Сховати за попередженням warn: Сховати за попередженням
form_admin_settings: form_admin_settings:
activity_api_enabled: Публікація агрегованої статистики про активність користувачів activity_api_enabled: Публікація агрегованої статистики про активність користувачів
app_icon: Значок застосунку app_icon: Піктограма застосунку
backups_retention_period: Період утримання архіву користувача backups_retention_period: Період утримання архіву користувача
bootstrap_timeline_accounts: Завжди рекомендувати новим користувачам ці облікові записи bootstrap_timeline_accounts: Завжди рекомендувати новим користувачам ці облікові записи
closed_registrations_message: Показуване повідомлення, якщо реєстрація недоступна closed_registrations_message: Показуване повідомлення, якщо реєстрація недоступна
content_cache_retention_period: Період збереження віддаленого вмісту content_cache_retention_period: Період збереження віддаленого вмісту
custom_css: Користувацький CSS custom_css: Користувацький CSS
favicon: Значок сайту favicon: Піктограма сайту
mascot: Користувацький символ (застарілий) mascot: Користувацький символ (застарілий)
media_cache_retention_period: Період збереження кешу медіа media_cache_retention_period: Період збереження кешу медіа
peers_api_enabled: Опублікувати список знайдених серверів у API peers_api_enabled: Опублікувати список знайдених серверів у API

View File

@ -19,7 +19,7 @@ sk:
link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date} link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date}
nothing_here: Nič tu nie je! nothing_here: Nič tu nie je!
pin_errors: pin_errors:
following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť following: Už musíš nasledovať toho človeka, ktorého si praješ zviditeľniť
posts: posts:
few: Príspevky few: Príspevky
many: Príspevkov many: Príspevkov
@ -837,7 +837,7 @@ sk:
description: description:
prefix_invited_by_user: "@%{name} ťa pozýva na tento Mastodon server!" prefix_invited_by_user: "@%{name} ťa pozýva na tento Mastodon server!"
prefix_sign_up: Zaregistruj sa na Mastodone už dnes! prefix_sign_up: Zaregistruj sa na Mastodone už dnes!
suffix: S pomocou účtu budeš môcť nasledovať ľudí, posielať príspevky, a vymieňať si správy s užívateľmi na hocijakom Mastodon serveri, ale aj na iných serveroch! suffix: S účtom budeš môcť nasledovať ľudí, posielať príspevky, a vymieňať si správy s užívateľmi z hocijakého Mastodon servera a viac!
dont_have_your_security_key: Nemáš svoj bezpečnostný kľúč? dont_have_your_security_key: Nemáš svoj bezpečnostný kľúč?
forgot_password: Zabudnuté heslo? forgot_password: Zabudnuté heslo?
invalid_reset_password_token: Token na obnovu hesla vypršal. Prosím vypítaj si nový. invalid_reset_password_token: Token na obnovu hesla vypršal. Prosím vypítaj si nový.
@ -1129,7 +1129,7 @@ sk:
title: Nový sledovateľ title: Nový sledovateľ
follow_request: follow_request:
action: Spravuj žiadosti o sledovanie action: Spravuj žiadosti o sledovanie
body: "%{name} žiada povolenie ťa následovať" body: "%{name} si žiada ťa nasledovať"
subject: "%{name} ťa žiadá o možnosť sledovania" subject: "%{name} ťa žiadá o možnosť sledovania"
title: Nová žiadosť o následovanie title: Nová žiadosť o následovanie
mention: mention:
@ -1408,7 +1408,7 @@ sk:
subject: Vitaj na Mastodone subject: Vitaj na Mastodone
title: Vitaj na palube, %{name}! title: Vitaj na palube, %{name}!
users: users:
follow_limit_reached: Nemôžeš následovať viac ako %{limit} ľudí follow_limit_reached: Nemôžeš nasledovať viac ako %{limit} ľudí
invalid_otp_token: Neplatný kód pre dvojfaktorovú autentikáciu invalid_otp_token: Neplatný kód pre dvojfaktorovú autentikáciu
otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email} otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email}
rate_limited: Príliš veľa pokusov o overenie, skús to znova neskôr. rate_limited: Príliš veľa pokusov o overenie, skús to znova neskôr.

View File

@ -885,7 +885,23 @@ tr:
action: Daha fazla bilgi için buraya göz atın action: Daha fazla bilgi için buraya göz atın
message_html: "<strong>Nesne depolamanız hatalı yapılandırılmış. Kullanıcılarınızın gizliliği tehlikede.</strong>" message_html: "<strong>Nesne depolamanız hatalı yapılandırılmış. Kullanıcılarınızın gizliliği tehlikede.</strong>"
tags: tags:
moderation:
not_trendable: Öne çıkarılamaz
not_usable: Kullanılamaz
pending_review: İnceleme bekliyor
review_requested: İnceleme istendi
reviewed: İncelendi
title: Durum
trendable: Öne çıkarılabilir
unreviewed: İncelenmemiş
usable: Kullanılabilir
name: Ad
newest: En yeni
oldest: En eski
reset: Sıfırla
review: Durumu gözden geçir review: Durumu gözden geçir
search: Ara
title: Etiketler
updated_msg: Etiket ayarları başarıyla güncellendi updated_msg: Etiket ayarları başarıyla güncellendi
title: Yönetim title: Yönetim
trends: trends:

View File

@ -292,7 +292,7 @@ uk:
update_custom_emoji_html: "%{name} оновлює емодзі %{target}" update_custom_emoji_html: "%{name} оновлює емодзі %{target}"
update_domain_block_html: "%{name} оновлює блокування домену для %{target}" update_domain_block_html: "%{name} оновлює блокування домену для %{target}"
update_ip_block_html: "%{name} змінює правило для IP %{target}" update_ip_block_html: "%{name} змінює правило для IP %{target}"
update_report_html: "%{name} оновлений звіт %{target}" update_report_html: "%{name} оновлює звіт %{target}"
update_status_html: "%{name} оновлює допис %{target}" update_status_html: "%{name} оновлює допис %{target}"
update_user_role_html: "%{name} змінює роль %{target}" update_user_role_html: "%{name} змінює роль %{target}"
deleted_account: видалений обліковий запис deleted_account: видалений обліковий запис

View File

@ -16,6 +16,8 @@ module Paperclip
private private
def cache_current_values def cache_current_values
@target.response.require_limit_not_exceeded!(@target.limit)
@original_filename = truncated_filename @original_filename = truncated_filename
@tempfile = copy_to_tempfile(@target) @tempfile = copy_to_tempfile(@target)
@content_type = ContentTypeDetector.new(@tempfile.path).detect @content_type = ContentTypeDetector.new(@tempfile.path).detect
@ -27,16 +29,15 @@ module Paperclip
source.response.body.each do |chunk| source.response.body.each do |chunk|
bytes_read += chunk.bytesize bytes_read += chunk.bytesize
raise Mastodon::LengthValidationError, "Body size exceeds limit of #{source.limit}" if bytes_read > source.limit
destination.write(chunk) destination.write(chunk)
chunk.clear chunk.clear
raise Mastodon::LengthValidationError if bytes_read > source.limit
end end
destination.rewind destination.rewind
destination destination
rescue Mastodon::LengthValidationError rescue
destination.close(true) destination.close(true)
raise raise
ensure ensure

View File

@ -1,7 +1,7 @@
{ {
"name": "@mastodon/mastodon", "name": "@mastodon/mastodon",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"packageManager": "yarn@4.3.1", "packageManager": "yarn@4.4.0",
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
@ -90,7 +90,7 @@
"path-complete-extname": "^1.0.0", "path-complete-extname": "^1.0.0",
"postcss": "^8.4.24", "postcss": "^8.4.24",
"postcss-loader": "^4.3.0", "postcss-loader": "^4.3.0",
"postcss-preset-env": "^9.5.2", "postcss-preset-env": "^10.0.0",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
"punycode": "^2.3.0", "punycode": "^2.3.0",
"react": "^18.2.0", "react": "^18.2.0",

View File

@ -79,6 +79,16 @@ RSpec.describe LinkDetailsExtractor do
}, },
}.to_json }.to_json
end end
let(:html) { <<~HTML }
<!doctype html>
<html>
<body>
<script type="application/ld+json">
#{ld_json}
</script>
</body>
</html>
HTML
shared_examples 'structured data' do shared_examples 'structured data' do
it 'extracts the expected values from structured data' do it 'extracts the expected values from structured data' do
@ -224,21 +234,27 @@ RSpec.describe LinkDetailsExtractor do
}, },
}.to_json }.to_json
end end
let(:html) { <<~HTML }
<!doctype html>
<html>
<body>
<script type="application/ld+json">
#{ld_json}
</script>
</body>
</html>
HTML
it 'joins author names' do it 'joins author names' do
expect(subject.author_name).to eq 'Author 1, Author 2' expect(subject.author_name).to eq 'Author 1, Author 2'
end end
end end
context 'with named graph' do
let(:ld_json) do
{
'@context' => 'https://schema.org',
'@graph' => [
'@type' => 'NewsArticle',
'headline' => "What's in a name",
],
}.to_json
end
it 'descends into @graph node' do
expect(subject.title).to eq "What's in a name"
end
end
end end
context 'when Open Graph protocol data is present' do context 'when Open Graph protocol data is present' do

View File

@ -0,0 +1,93 @@
# frozen_string_literal: true
require 'rails_helper'
describe Paperclip::ResponseWithLimitAdapter do
subject { described_class.new(response_with_limit) }
before { stub_request(:get, url).to_return(headers: headers, body: body) }
let(:response_with_limit) { ResponseWithLimit.new(response, 50.kilobytes) }
let(:response) { Request.new(:get, url).perform(&:itself) }
let(:url) { 'https://example.com/dir/foo.png' }
let(:headers) { nil }
let(:body) { attachment_fixture('600x400.jpeg').binmode.read }
it 'writes temporary file' do
expect(subject.tempfile.read).to eq body
expect(subject.size).to eq body.bytesize
end
context 'with Content-Disposition header' do
let(:headers) { { 'Content-Disposition' => 'attachment; filename="bar.png"' } }
it 'uses filename from header' do
expect(subject.original_filename).to eq 'bar.png'
end
it 'detects MIME type from content' do
expect(subject.content_type).to eq 'image/jpeg'
end
end
context 'without Content-Disposition header' do
it 'uses filename from path' do
expect(subject.original_filename).to eq 'foo.png'
end
it 'detects MIME type from content' do
expect(subject.content_type).to eq 'image/jpeg'
end
end
context 'without filename in path' do
let(:url) { 'https://example.com/' }
it 'falls back to "data"' do
expect(subject.original_filename).to eq 'data'
end
it 'detects MIME type from content' do
expect(subject.content_type).to eq 'image/jpeg'
end
end
context 'with very long filename' do
let(:url) { 'https://example.com/abcdefghijklmnopqrstuvwxyz.0123456789' }
it 'truncates the filename' do
expect(subject.original_filename).to eq 'abcdefghijklmnopqrst.0123'
end
end
context 'when response size exceeds limit' do
context 'with Content-Length header' do
let(:headers) { { 'Content-Length' => 5.megabytes } }
it 'raises without reading the body' do
allow(response).to receive(:body).and_call_original
expect { subject }.to raise_error(Mastodon::LengthValidationError, 'Content-Length 5242880 exceeds limit of 51200')
expect(response).to_not have_received(:body)
end
end
context 'without Content-Length header' do
let(:body) { SecureRandom.random_bytes(1.megabyte) }
it 'raises while reading the body' do
expect { subject }.to raise_error(Mastodon::LengthValidationError, 'Body size exceeds limit of 51200')
expect(response.content_length).to be_nil
end
end
end
context 'when response times out' do
it 'raises' do
allow(response.body.connection).to receive(:readpartial).and_raise(HTTP::TimeoutError)
expect { subject }.to raise_error(HTTP::TimeoutError)
end
end
end

View File

@ -100,7 +100,7 @@ describe Request do
describe "response's body_with_limit method" do describe "response's body_with_limit method" do
it 'rejects body more than 1 megabyte by default' do it 'rejects body more than 1 megabyte by default' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes)) stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes))
expect { subject.perform(&:body_with_limit) }.to raise_error Mastodon::LengthValidationError expect { subject.perform(&:body_with_limit) }.to raise_error(Mastodon::LengthValidationError, 'Body size exceeds limit of 1048576')
end end
it 'accepts body less than 1 megabyte by default' do it 'accepts body less than 1 megabyte by default' do
@ -110,17 +110,17 @@ describe Request do
it 'rejects body by given size' do it 'rejects body by given size' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.kilobytes)) stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.kilobytes))
expect { subject.perform { |response| response.body_with_limit(1.kilobyte) } }.to raise_error Mastodon::LengthValidationError expect { subject.perform { |response| response.body_with_limit(1.kilobyte) } }.to raise_error(Mastodon::LengthValidationError, 'Body size exceeds limit of 1024')
end end
it 'rejects too large chunked body' do it 'rejects too large chunked body' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes), headers: { 'Transfer-Encoding' => 'chunked' }) stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes), headers: { 'Transfer-Encoding' => 'chunked' })
expect { subject.perform(&:body_with_limit) }.to raise_error Mastodon::LengthValidationError expect { subject.perform(&:body_with_limit) }.to raise_error(Mastodon::LengthValidationError, 'Body size exceeds limit of 1048576')
end end
it 'rejects too large monolithic body' do it 'rejects too large monolithic body' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes), headers: { 'Content-Length' => 2.megabytes }) stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes), headers: { 'Content-Length' => 2.megabytes })
expect { subject.perform(&:body_with_limit) }.to raise_error Mastodon::LengthValidationError expect { subject.perform(&:body_with_limit) }.to raise_error(Mastodon::LengthValidationError, 'Content-Length 2097152 exceeds limit of 1048576')
end end
it 'truncates large monolithic body' do it 'truncates large monolithic body' do

View File

@ -160,6 +160,36 @@ RSpec.describe 'Notifications' do
end end
end end
context 'when requesting stripped-down accounts' do
let(:params) { { expand_accounts: 'partial_avatars' } }
let(:recent_account) { Fabricate(:account) }
before do
FavouriteService.new.call(recent_account, user.account.statuses.first)
end
it 'returns an account in "partial_accounts", with the expected keys', :aggregate_failures do
subject
expect(response).to have_http_status(200)
expect(body_as_json[:partial_accounts].size).to be > 0
expect(body_as_json[:partial_accounts][0].keys).to contain_exactly(:acct, :avatar, :avatar_static, :bot, :id, :locked, :url)
expect(body_as_json[:partial_accounts].pluck(:id)).to_not include(recent_account.id.to_s)
expect(body_as_json[:accounts].pluck(:id)).to include(recent_account.id.to_s)
end
end
context 'when passing an invalid value for "expand_accounts"' do
let(:params) { { expand_accounts: 'unknown_foobar' } }
it 'returns http bad request' do
subject
expect(response).to have_http_status(400)
end
end
def body_json_types def body_json_types
body_as_json[:notification_groups].pluck(:type) body_as_json[:notification_groups].pluck(:type)
end end

View File

@ -1,7 +1,7 @@
{ {
"name": "@mastodon/streaming", "name": "@mastodon/streaming",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"packageManager": "yarn@4.3.1", "packageManager": "yarn@4.4.0",
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },

1033
yarn.lock

File diff suppressed because it is too large Load Diff