mirror of
https://github.com/glitch-soc/mastodon.git
synced 2024-11-23 08:34:13 -05:00
Merge commit 'c8b9e60ec123c458efff83eedcfd07f067ef05ae' into glitch-soc/merge-upstream
This commit is contained in:
commit
08adca0c63
@ -211,7 +211,7 @@ FROM build AS ffmpeg
|
||||
|
||||
# ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"]
|
||||
# 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"]
|
||||
ARG FFMPEG_URL=https://ffmpeg.org/releases
|
||||
|
||||
|
2
Gemfile
2
Gemfile
@ -16,7 +16,7 @@ gem 'pghero'
|
||||
|
||||
gem 'aws-sdk-s3', '~> 1.123', require: false
|
||||
gem 'blurhash', '~> 0.1'
|
||||
gem 'fog-core', '<= 2.4.0'
|
||||
gem 'fog-core', '<= 2.5.0'
|
||||
gem 'fog-openstack', '~> 1.0', require: false
|
||||
gem 'kt-paperclip', '~> 7.2'
|
||||
gem 'md-paperclip-azure', '~> 2.2', require: false
|
||||
|
22
Gemfile.lock
22
Gemfile.lock
@ -100,8 +100,8 @@ GEM
|
||||
attr_required (1.0.2)
|
||||
awrence (1.2.1)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.950.0)
|
||||
aws-sdk-core (3.201.0)
|
||||
aws-partitions (1.961.0)
|
||||
aws-sdk-core (3.201.3)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.8)
|
||||
@ -109,11 +109,11 @@ GEM
|
||||
aws-sdk-kms (1.88.0)
|
||||
aws-sdk-core (~> 3, >= 3.201.0)
|
||||
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-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.8.0)
|
||||
aws-sigv4 (1.9.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
azure-storage-blob (2.0.3)
|
||||
azure-storage-common (~> 2.0)
|
||||
@ -135,7 +135,7 @@ GEM
|
||||
binding_of_caller (1.0.1)
|
||||
debug_inspector (>= 1.2.0)
|
||||
blurhash (0.1.7)
|
||||
bootsnap (1.18.3)
|
||||
bootsnap (1.18.4)
|
||||
msgpack (~> 1.2)
|
||||
brakeman (6.1.2)
|
||||
racc
|
||||
@ -229,7 +229,7 @@ GEM
|
||||
erubi (1.13.0)
|
||||
et-orbi (1.2.11)
|
||||
tzinfo
|
||||
excon (0.110.0)
|
||||
excon (0.111.0)
|
||||
fabrication (2.31.0)
|
||||
faker (3.4.2)
|
||||
i18n (>= 1.8.11, < 2)
|
||||
@ -269,7 +269,7 @@ GEM
|
||||
flatware-rspec (2.3.2)
|
||||
flatware (= 2.3.2)
|
||||
rspec (>= 3.6)
|
||||
fog-core (2.4.0)
|
||||
fog-core (2.5.0)
|
||||
builder
|
||||
excon (~> 0.71)
|
||||
formatador (>= 0.2, < 2.0)
|
||||
@ -429,7 +429,7 @@ GEM
|
||||
memory_profiler (1.0.2)
|
||||
mime-types (3.5.2)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2024.0604)
|
||||
mime-types-data (3.2024.0702)
|
||||
mini_mime (1.1.5)
|
||||
mini_portile2 (2.8.7)
|
||||
minitest (5.24.1)
|
||||
@ -758,7 +758,7 @@ GEM
|
||||
rack (>= 1.1)
|
||||
rubocop (>= 1.33.0, < 2.0)
|
||||
rubocop-ast (>= 1.31.1, < 2.0)
|
||||
rubocop-rspec (3.0.3)
|
||||
rubocop-rspec (3.0.4)
|
||||
rubocop (~> 1.61)
|
||||
rubocop-rspec_rails (2.30.0)
|
||||
rubocop (~> 1.61)
|
||||
@ -796,7 +796,7 @@ GEM
|
||||
redis (>= 4.5.0, < 5)
|
||||
sidekiq-bulk (0.2.0)
|
||||
sidekiq
|
||||
sidekiq-scheduler (5.0.5)
|
||||
sidekiq-scheduler (5.0.6)
|
||||
rufus-scheduler (~> 3.2)
|
||||
sidekiq (>= 6, < 8)
|
||||
tilt (>= 1.4.0, < 3)
|
||||
@ -945,7 +945,7 @@ DEPENDENCIES
|
||||
fast_blank (~> 1.0)
|
||||
fastimage
|
||||
flatware-rspec
|
||||
fog-core (<= 2.4.0)
|
||||
fog-core (<= 2.5.0)
|
||||
fog-openstack (~> 1.0)
|
||||
fuubar (~> 2.5)
|
||||
haml-rails (~> 2.0)
|
||||
|
@ -16,10 +16,10 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||
@group_metadata = load_group_metadata
|
||||
@grouped_notifications = load_grouped_notifications
|
||||
@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
|
||||
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
|
||||
|
||||
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#index rendering') do |span|
|
||||
@ -27,14 +27,14 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||
|
||||
span.add_attributes(
|
||||
'app.notification_grouping.count' => @grouped_notifications.size,
|
||||
'app.notification_grouping.sample_account.count' => @sample_accounts.size,
|
||||
'app.notification_grouping.sample_account.unique_count' => @sample_accounts.pluck(:id).uniq.size,
|
||||
'app.notification_grouping.account.count' => @presenter.accounts.size,
|
||||
'app.notification_grouping.partial_account.count' => @presenter.partial_accounts.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
|
||||
render json: @presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata, expand_accounts: expand_accounts_param
|
||||
end
|
||||
end
|
||||
|
||||
@ -131,4 +131,15 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||
def pagination_params(core_params)
|
||||
params.slice(:limit, :types, :exclude_types, :include_filtered).permit(:limit, :include_filtered, types: [], exclude_types: []).merge(core_params)
|
||||
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
|
||||
|
@ -431,6 +431,42 @@ Rails.delegate(document, 'img.custom-emoji', 'mouseout', ({ target }) => {
|
||||
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
|
||||
// automatically filled them.
|
||||
Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {
|
||||
|
@ -106,7 +106,7 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
|
||||
</>
|
||||
);
|
||||
} 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') {
|
||||
buttons = <Button text={intl.formatMessage(messages.block)} onClick={handleBlock} />;
|
||||
} else if (!account.get('suspended') && !account.get('moved') || following) {
|
||||
|
@ -1,5 +1,7 @@
|
||||
import { useEffect, forwardRef } from 'react';
|
||||
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import classNames from 'classnames';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
@ -25,6 +27,11 @@ export const HoverCardAccount = forwardRef<
|
||||
accountId ? state.accounts.get(accountId) : undefined,
|
||||
);
|
||||
|
||||
const note = useAppSelector(
|
||||
(state) =>
|
||||
state.relationships.getIn([accountId, 'note']) as string | undefined,
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (accountId && !account) {
|
||||
dispatch(fetchAccount(accountId));
|
||||
@ -53,6 +60,17 @@ export const HoverCardAccount = forwardRef<
|
||||
className='hover-card__bio'
|
||||
/>
|
||||
<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 className='hover-card__number'>
|
||||
|
@ -151,7 +151,7 @@ class AccountNote extends ImmutablePureComponent {
|
||||
return (
|
||||
<div className='account__header__account-note'>
|
||||
<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>
|
||||
|
||||
<Textarea
|
||||
|
@ -44,7 +44,7 @@ const ColumnSettings = () => {
|
||||
settingPath={['minimizeFilteredBanner']}
|
||||
onChange={onChange}
|
||||
label={
|
||||
<FormattedMessage id='notification_requests.minimize_banner' defaultMessage='Minimize filtred notifications banner' />
|
||||
<FormattedMessage id='notification_requests.minimize_banner' defaultMessage='Minimize filtered notifications banner' />
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
|
@ -171,21 +171,28 @@
|
||||
"confirmations.block.confirm": "Заблакіраваць",
|
||||
"confirmations.delete.confirm": "Выдаліць",
|
||||
"confirmations.delete.message": "Вы ўпэўненыя, што хочаце выдаліць гэты допіс?",
|
||||
"confirmations.delete.title": "Выдаліць допіс?",
|
||||
"confirmations.delete_list.confirm": "Выдаліць",
|
||||
"confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты чарнавік?",
|
||||
"confirmations.delete_list.title": "Выдаліць спіс?",
|
||||
"confirmations.discard_edit_media.confirm": "Адмяніць",
|
||||
"confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
|
||||
"confirmations.edit.confirm": "Рэдагаваць",
|
||||
"confirmations.edit.message": "Калі вы зменіце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?",
|
||||
"confirmations.edit.title": "Замяніць допіс?",
|
||||
"confirmations.logout.confirm": "Выйсці",
|
||||
"confirmations.logout.message": "Вы ўпэўненыя, што хочаце выйсці?",
|
||||
"confirmations.logout.title": "Выйсці?",
|
||||
"confirmations.mute.confirm": "Ігнараваць",
|
||||
"confirmations.redraft.confirm": "Выдаліць і перапісаць",
|
||||
"confirmations.redraft.message": "Вы ўпэўнены, што хочаце выдаліць допіс і перапісаць яго? Упадабанні і пашырэнні згубяцца, а адказы да арыгінальнага допісу асірацеюць.",
|
||||
"confirmations.redraft.title": "Выдаліць і перапісаць допіс?",
|
||||
"confirmations.reply.confirm": "Адказаць",
|
||||
"confirmations.reply.message": "Калі вы адкажаце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?",
|
||||
"confirmations.reply.title": "Замяніць допіс?",
|
||||
"confirmations.unfollow.confirm": "Адпісацца",
|
||||
"confirmations.unfollow.message": "Вы ўпэўненыя, што хочаце адпісацца ад {name}?",
|
||||
"confirmations.unfollow.title": "Адпісацца ад карыстальніка?",
|
||||
"conversation.delete": "Выдаліць размову",
|
||||
"conversation.mark_as_read": "Адзначыць прачытаным",
|
||||
"conversation.open": "Прагледзець размову",
|
||||
@ -293,6 +300,7 @@
|
||||
"filter_modal.select_filter.subtitle": "Скарыстайцеся існуючай катэгорыяй або стварыце новую",
|
||||
"filter_modal.select_filter.title": "Фільтраваць гэты допіс",
|
||||
"filter_modal.title.status": "Фільтраваць допіс",
|
||||
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце",
|
||||
"filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні",
|
||||
"firehose.all": "Усе",
|
||||
"firehose.local": "Гэты сервер",
|
||||
@ -341,7 +349,7 @@
|
||||
"hashtag.follow": "Падпісацца на хэштэг",
|
||||
"hashtag.unfollow": "Адпісацца ад хэштэга",
|
||||
"hashtags.and_other": "…і яшчэ {count, plural, other {#}}",
|
||||
"home.column_settings.show_reblogs": "Паказаць пашырэнні",
|
||||
"home.column_settings.show_reblogs": "Паказваць пашырэнні",
|
||||
"home.column_settings.show_replies": "Паказваць адказы",
|
||||
"home.hide_announcements": "Схаваць аб'явы",
|
||||
"home.pending_critical_update.body": "Калі ласка, абнавіце свой сервер Mastodon як мага хутчэй!",
|
||||
@ -437,6 +445,8 @@
|
||||
"mute_modal.title": "Ігнараваць карыстальніка?",
|
||||
"mute_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
||||
"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.advanced_interface": "Адкрыць у пашыраным вэб-інтэрфейсе",
|
||||
"navigation_bar.blocks": "Заблакіраваныя карыстальнікі",
|
||||
@ -464,6 +474,10 @@
|
||||
"navigation_bar.security": "Бяспека",
|
||||
"not_signed_in_indicator.not_signed_in": "Вам трэба ўвайсці каб атрымаць доступ да гэтага рэсурсу.",
|
||||
"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.favourite": "Ваш допіс упадабаны {name}",
|
||||
"notification.follow": "{name} падпісаўся на вас",
|
||||
@ -479,6 +493,8 @@
|
||||
"notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.",
|
||||
"notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў прыпынены.",
|
||||
"notification.own_poll": "Ваша апытанне скончылася",
|
||||
"notification.poll": "Апытанне, дзе вы прынялі ўдзел, скончылася",
|
||||
"notification.private_mention": "{name} згадаў вас асабіста",
|
||||
"notification.reblog": "{name} пашырыў ваш допіс",
|
||||
"notification.relationships_severance_event": "Страціў сувязь з {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу {target}, што азначае, што вы больш не можаце атрымліваць ад іх абнаўлення ці ўзаемадзейнічаць з імі.",
|
||||
@ -489,13 +505,18 @@
|
||||
"notification.update": "Допіс {name} адрэдагаваны",
|
||||
"notification_requests.accept": "Прыняць",
|
||||
"notification_requests.dismiss": "Адхіліць",
|
||||
"notification_requests.maximize": "Разгарнуць",
|
||||
"notification_requests.minimize_banner": "Згарнуць банер адфільтраваных апавяшчэнняў",
|
||||
"notification_requests.notifications_from": "Апавяшчэнні ад {name}",
|
||||
"notification_requests.title": "Адфільтраваныя апавяшчэнні",
|
||||
"notifications.clear": "Ачысціць апавяшчэнні",
|
||||
"notifications.clear_confirmation": "Вы ўпэўнены, што жадаеце назаўсёды сцерці ўсё паведамленні?",
|
||||
"notifications.clear_title": "Ачысціць апавяшчэнні?",
|
||||
"notifications.column_settings.admin.report": "Новыя скаргі:",
|
||||
"notifications.column_settings.admin.sign_up": "Новыя ўваходы:",
|
||||
"notifications.column_settings.alert": "Апавяшчэнні на працоўным стале",
|
||||
"notifications.column_settings.beta.category": "Эксперыментальныя функцыі",
|
||||
"notifications.column_settings.beta.grouping": "Групаваць апавяшчэннi",
|
||||
"notifications.column_settings.favourite": "Упадабанае:",
|
||||
"notifications.column_settings.filter_bar.advanced": "Паказаць усе катэгорыі",
|
||||
"notifications.column_settings.filter_bar.category": "Панэль хуткай фільтрацыі",
|
||||
@ -659,9 +680,13 @@
|
||||
"report.unfollow_explanation": "Вы падпісаныя на гэты ўліковы запіс. Каб не бачыць допісы з яго ў вашай стужцы, адпішыцеся.",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} допіс прымацаваны} few {{count} допісы прымацаваны} many {{count} допісаў прымацавана} other {{count} допісу прымацавана}}",
|
||||
"report_notification.categories.legal": "Права",
|
||||
"report_notification.categories.legal_sentence": "нелегальнае змесціва",
|
||||
"report_notification.categories.other": "Іншае",
|
||||
"report_notification.categories.other_sentence": "іншае",
|
||||
"report_notification.categories.spam": "Спам",
|
||||
"report_notification.categories.spam_sentence": "спам",
|
||||
"report_notification.categories.violation": "Парушэнне правілаў",
|
||||
"report_notification.categories.violation_sentence": "парушэнне правілаў",
|
||||
"report_notification.open": "Адкрыць скаргу",
|
||||
"search.no_recent_searches": "Гісторыя пошуку пустая",
|
||||
"search.placeholder": "Пошук",
|
||||
@ -689,8 +714,11 @@
|
||||
"server_banner.about_active_users": "Людзі, якія карыстаюцца гэтым сервера на працягу апошніх 30 дзён (Штомесячна Актыўныя Карыстальнікі)",
|
||||
"server_banner.active_users": "актыўныя карыстальнікі",
|
||||
"server_banner.administered_by": "Адміністратар:",
|
||||
"server_banner.is_one_of_many": "{domain} - гэта адзін з многіх незалежных сервераў Mastodon, якія вы можаце выкарыстоўваць для ўдзелу ў fediverse.",
|
||||
"server_banner.server_stats": "Статыстыка сервера:",
|
||||
"sign_in_banner.create_account": "Стварыць уліковы запіс",
|
||||
"sign_in_banner.follow_anyone": "Сачыце за кім заўгодна ва ўсім fediverse і глядзіце ўсё ў храналагічным парадку. Ніякіх алгарытмаў, рэкламы або клікбэйту.",
|
||||
"sign_in_banner.mastodon_is": "Mastodon - лепшы спосаб быць у курсе ўсяго, што адбываецца.",
|
||||
"sign_in_banner.sign_in": "Увайсці",
|
||||
"sign_in_banner.sso_redirect": "Уваход ці рэгістрацыя",
|
||||
"status.admin_account": "Адкрыць інтэрфейс мадэратара для @{name}",
|
||||
@ -765,8 +793,8 @@
|
||||
"time_remaining.seconds": "{number, plural, one {засталася # секунда} few {засталося # секунды} many {засталося # секунд} other {засталося # секунды}}",
|
||||
"timeline_hint.remote_resource_not_displayed": "{resource} з іншых сервераў не адлюстроўваецца.",
|
||||
"timeline_hint.resources.followers": "Падпісчыкі",
|
||||
"timeline_hint.resources.follows": "Падпісаны на",
|
||||
"timeline_hint.resources.statuses": "Старэйшыя допісы",
|
||||
"timeline_hint.resources.follows": "Падпіскі",
|
||||
"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.trending_now": "Актуальнае",
|
||||
"ui.beforeunload": "Ваш чарнавік знішчыцца калі вы пакінеце Mastodon.",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} промени публикация",
|
||||
"notification_requests.accept": "Приемам",
|
||||
"notification_requests.dismiss": "Отхвърлям",
|
||||
"notification_requests.maximize": "Максимизиране",
|
||||
"notification_requests.minimize_banner": "Минимизиране на банера за филтрирани известия",
|
||||
"notification_requests.notifications_from": "Известия от {name}",
|
||||
"notification_requests.title": "Филтрирани известия",
|
||||
"notifications.clear": "Изчистване на известията",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} ha editat un tut",
|
||||
"notification_requests.accept": "Accepta",
|
||||
"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.title": "Notificacions filtrades",
|
||||
"notifications.clear": "Esborra les notificacions",
|
||||
|
@ -171,21 +171,28 @@
|
||||
"confirmations.block.confirm": "Blokovat",
|
||||
"confirmations.delete.confirm": "Smazat",
|
||||
"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.message": "Opravdu chcete tento seznam navždy smazat?",
|
||||
"confirmations.delete_list.title": "Smazat seznam?",
|
||||
"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.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.title": "Přepsat příspěvek?",
|
||||
"confirmations.logout.confirm": "Odhlásit se",
|
||||
"confirmations.logout.message": "Opravdu se chcete odhlásit?",
|
||||
"confirmations.logout.title": "Odhlásit se?",
|
||||
"confirmations.mute.confirm": "Skrýt",
|
||||
"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.title": "Smazat a přepracovat příspěvek na koncept?",
|
||||
"confirmations.reply.confirm": "Odpovědět",
|
||||
"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.message": "Opravdu chcete {name} přestat sledovat?",
|
||||
"confirmations.unfollow.title": "Přestat sledovat uživatele?",
|
||||
"conversation.delete": "Smazat konverzaci",
|
||||
"conversation.mark_as_read": "Označit jako přečtené",
|
||||
"conversation.open": "Zobrazit konverzaci",
|
||||
@ -479,6 +486,7 @@
|
||||
"notification.moderation_warning.action_silence": "Váš účet byl omezen.",
|
||||
"notification.moderation_warning.action_suspend": "Váš účet byl pozastaven.",
|
||||
"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.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.",
|
||||
@ -489,13 +497,17 @@
|
||||
"notification.update": "Uživatel {name} upravil příspěvek",
|
||||
"notification_requests.accept": "Přijmout",
|
||||
"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.title": "Vyfiltrovaná oznámení",
|
||||
"notifications.clear": "Vyčistit 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.sign_up": "Nové registrace:",
|
||||
"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.filter_bar.advanced": "Zobrazit všechny kategorie",
|
||||
"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_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_sentence": "nezákonný obsah",
|
||||
"report_notification.categories.other": "Ostatní",
|
||||
"report_notification.categories.other_sentence": "další",
|
||||
"report_notification.categories.spam": "Spam",
|
||||
"report_notification.categories.spam_sentence": "spam",
|
||||
"report_notification.categories.violation": "Porušení pravidla",
|
||||
"report_notification.categories.violation_sentence": "porušení pravidla",
|
||||
"report_notification.open": "Otevřít hlášení",
|
||||
"search.no_recent_searches": "Žádná nedávná vyhledávání",
|
||||
"search.placeholder": "Hledat",
|
||||
|
@ -3,7 +3,7 @@
|
||||
"about.contact": "Cysylltwch â:",
|
||||
"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.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.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.",
|
||||
@ -503,6 +503,7 @@
|
||||
"notification.update": "Golygodd {name} bostiad",
|
||||
"notification_requests.accept": "Derbyn",
|
||||
"notification_requests.dismiss": "Cau",
|
||||
"notification_requests.maximize": "Mwyhau",
|
||||
"notification_requests.notifications_from": "Hysbysiadau gan {name}",
|
||||
"notification_requests.title": "Hysbysiadau wedi'u hidlo",
|
||||
"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.active_users": "defnyddwyr gweithredol",
|
||||
"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:",
|
||||
"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.sso_redirect": "Mewngofnodi neu Gofrestru",
|
||||
"status.admin_account": "Agor rhyngwyneb cymedroli ar gyfer @{name}",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} redigerede et indlæg",
|
||||
"notification_requests.accept": "Acceptér",
|
||||
"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.title": "Filtrerede notifikationer",
|
||||
"notifications.clear": "Ryd notifikationer",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} bearbeitete einen Beitrag",
|
||||
"notification_requests.accept": "Akzeptieren",
|
||||
"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.title": "Gefilterte Benachrichtigungen",
|
||||
"notifications.clear": "Benachrichtigungen löschen",
|
||||
@ -687,7 +689,7 @@
|
||||
"report_notification.categories.violation_sentence": "Regelverletzung",
|
||||
"report_notification.open": "Meldung öffnen",
|
||||
"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.go_to_account": "Profil {x} aufrufen",
|
||||
"search.quick_action.go_to_hashtag": "Hashtag {x} aufrufen",
|
||||
|
@ -11,7 +11,7 @@
|
||||
"about.not_available": "This information has not been made available on this server.",
|
||||
"about.powered_by": "Decentralized social media powered by {mastodon}",
|
||||
"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.badges.bot": "Automated",
|
||||
"account.badges.group": "Group",
|
||||
@ -506,7 +506,7 @@
|
||||
"notification_requests.accept": "Accept",
|
||||
"notification_requests.dismiss": "Dismiss",
|
||||
"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.title": "Filtered notifications",
|
||||
"notifications.clear": "Clear notifications",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} editó un mensaje",
|
||||
"notification_requests.accept": "Aceptar",
|
||||
"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.title": "Notificaciones filtradas",
|
||||
"notifications.clear": "Limpiar notificaciones",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} editó una publicación",
|
||||
"notification_requests.accept": "Aceptar",
|
||||
"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.title": "Notificaciones filtradas",
|
||||
"notifications.clear": "Limpiar notificaciones",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} editó una publicación",
|
||||
"notification_requests.accept": "Aceptar",
|
||||
"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.title": "Notificaciones filtradas",
|
||||
"notifications.clear": "Limpiar notificaciones",
|
||||
|
@ -86,6 +86,10 @@
|
||||
"announcement.announcement": "اعلامیه",
|
||||
"attachments_list.unprocessed": "(پردازش نشده)",
|
||||
"audio.hide": "نهفتن صدا",
|
||||
"block_modal.show_less": "نمایش کمتر",
|
||||
"block_modal.show_more": "نمایش بیشتر",
|
||||
"block_modal.title": "انسداد کاربر؟",
|
||||
"block_modal.you_wont_see_mentions": "فرستههایی که از اون نام برده را نخواهید دید.",
|
||||
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
|
||||
"bundle_column_error.copy_stacktrace": "رونوشت از گزارش خطا",
|
||||
"bundle_column_error.error.body": "صفحهٔ درخواستی نتوانست پرداخت شود. ممکن است به خاطر اشکالی در کدمان یا مشکل سازگاری مرورگر باشد.",
|
||||
@ -160,21 +164,28 @@
|
||||
"confirmations.block.confirm": "انسداد",
|
||||
"confirmations.delete.confirm": "حذف",
|
||||
"confirmations.delete.message": "آیا مطمئنید که میخواهید این فرسته را حذف کنید؟",
|
||||
"confirmations.delete.title": "حذف فرسته؟",
|
||||
"confirmations.delete_list.confirm": "حذف",
|
||||
"confirmations.delete_list.message": "مطمئنید میخواهید این سیاهه را برای همیشه حذف کنید؟",
|
||||
"confirmations.delete_list.title": "حذف سیاهه؟",
|
||||
"confirmations.discard_edit_media.confirm": "دور انداختن",
|
||||
"confirmations.discard_edit_media.message": "تغییرات ذخیره نشدهای در توضیحات یا پیشنمایش رسانه دارید. همگی نادیده گرفته شوند؟",
|
||||
"confirmations.edit.confirm": "ویرایش",
|
||||
"confirmations.edit.message": "در صورت ویرایش، پیامی که در حال نوشتنش بودید از بین خواهد رفت. میخواهید ادامه دهید؟",
|
||||
"confirmations.edit.title": "رونویسی فرسته؟",
|
||||
"confirmations.logout.confirm": "خروج از حساب",
|
||||
"confirmations.logout.message": "مطمئنید میخواهید خارج شوید؟",
|
||||
"confirmations.logout.title": "خروج؟",
|
||||
"confirmations.mute.confirm": "خموش",
|
||||
"confirmations.redraft.confirm": "حذف و بازنویسی",
|
||||
"confirmations.redraft.message": "مطمئنید که میخواهید این فرسته را حذف کنید و از نو بنویسید؟ با این کار تقویتها و پسندهایش از دست رفته و پاسخها به آن بیمرجع میشود.",
|
||||
"confirmations.redraft.title": "حذف و پیشنویسی دوبارهٔ فرسته؟",
|
||||
"confirmations.reply.confirm": "پاسخ",
|
||||
"confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. میخواهید ادامه دهید؟",
|
||||
"confirmations.reply.title": "رونویسی فرسته؟",
|
||||
"confirmations.unfollow.confirm": "پینگرفتن",
|
||||
"confirmations.unfollow.message": "مطمئنید که میخواهید به پیگیری از {name} پایان دهید؟",
|
||||
"confirmations.unfollow.title": "ناپیگیری کاربر؟",
|
||||
"conversation.delete": "حذف گفتگو",
|
||||
"conversation.mark_as_read": "علامتگذاری به عنوان خوانده شده",
|
||||
"conversation.open": "دیدن گفتگو",
|
||||
@ -194,6 +205,10 @@
|
||||
"dismissable_banner.explore_statuses": "هماکنون این فرستهها از این کارساز و دیگر کارسازهای شبکهٔ نامتمرکز داغ شدهاند.",
|
||||
"dismissable_banner.explore_tags": "هماکنون این برچسبها بین افراد این کارساز و دیگر کارسازهای شبکهٔ نامتمرکز داغ شدهاند.",
|
||||
"dismissable_banner.public_timeline": "اینها جدیدترین فرستههای عمومی از افرادی روی وب اجتماعیند که اعضای {domain} پی میگیرندشان.",
|
||||
"domain_block_modal.block": "انسداد کارساز",
|
||||
"domain_block_modal.title": "انسداد دامنه؟",
|
||||
"domain_pill.server": "کارساز",
|
||||
"domain_pill.username": "نام کاربری",
|
||||
"embed.instructions": "جاسازی این فرسته روی پایگاهتان با رونوشت کردن کد زیر.",
|
||||
"embed.preview": "این گونه دیده خواهد شد:",
|
||||
"emoji_button.activity": "فعالیت",
|
||||
@ -388,6 +403,8 @@
|
||||
"loading_indicator.label": "در حال بارگذاری…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}",
|
||||
"moved_to_account_banner.text": "حسابتان {disabledAccount} اکنون از کار افتاده؛ چرا که به {movedToAccount} منتقل شدید.",
|
||||
"mute_modal.show_options": "نمایش گزینهها",
|
||||
"mute_modal.title": "خموشی کاربر؟",
|
||||
"navigation_bar.about": "درباره",
|
||||
"navigation_bar.advanced_interface": "بازکردن در رابط کاربری وب پیشرفته",
|
||||
"navigation_bar.blocks": "کاربران مسدود شده",
|
||||
@ -420,15 +437,21 @@
|
||||
"notification.follow": "{name} پیگیرتان شد",
|
||||
"notification.follow_request": "{name} درخواست پیگیریتان را داد",
|
||||
"notification.mention": "{name} به شما اشاره کرد",
|
||||
"notification.moderation-warning.learn_more": "بیشتر بدانید",
|
||||
"notification.own_poll": "نظرسنجیتان پایان یافت",
|
||||
"notification.reblog": "{name} فرستهتان را تقویت کرد",
|
||||
"notification.relationships_severance_event.learn_more": "بیشتر بدانید",
|
||||
"notification.status": "{name} چیزی فرستاد",
|
||||
"notification.update": "{name} فرستهای را ویرایش کرد",
|
||||
"notification_requests.accept": "پذیرش",
|
||||
"notification_requests.dismiss": "دورانداختن",
|
||||
"notification_requests.maximize": "بیشنه",
|
||||
"notifications.clear": "پاکسازی آگاهیها",
|
||||
"notifications.clear_confirmation": "مطمئنید میخواهید همهٔ آگاهیهایتان را برای همیشه پاک کنید؟",
|
||||
"notifications.column_settings.admin.report": "گزارشهای جدید:",
|
||||
"notifications.column_settings.admin.sign_up": "ثبت نامهای جدید:",
|
||||
"notifications.column_settings.alert": "آگاهیهای میزکار",
|
||||
"notifications.column_settings.beta.category": "ویژگیهای آزمایشی",
|
||||
"notifications.column_settings.favourite": "برگزیدهها:",
|
||||
"notifications.column_settings.follow": "پیگیرندگان جدید:",
|
||||
"notifications.column_settings.follow_request": "درخواستهای جدید پیگیری:",
|
||||
@ -583,8 +606,11 @@
|
||||
"report.unfollow_explanation": "شما این حساب را پیگرفتهاید، برای اینکه دیگر فرستههایش را در خوراک خانهتان نبینید؛ آن را پینگیرید.",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} فرسته} other {{count} فرسته}} پیوست شده",
|
||||
"report_notification.categories.legal": "قانونی",
|
||||
"report_notification.categories.legal_sentence": "محتوای غیرقانونی",
|
||||
"report_notification.categories.other": "دیگر",
|
||||
"report_notification.categories.other_sentence": "دیگر",
|
||||
"report_notification.categories.spam": "هرزنامه",
|
||||
"report_notification.categories.spam_sentence": "هرزنامه",
|
||||
"report_notification.categories.violation": "تخطّی از قانون",
|
||||
"report_notification.open": "گشودن گزارش",
|
||||
"search.no_recent_searches": "جستوجوی اخیری نیست",
|
||||
|
@ -3,7 +3,7 @@
|
||||
"about.contact": "Yhteydenotto:",
|
||||
"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.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.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.",
|
||||
@ -30,7 +30,7 @@
|
||||
"account.endorse": "Suosittele profiilissasi",
|
||||
"account.featured_tags.last_status_at": "Viimeisin julkaisu {date}",
|
||||
"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_back": "Seuraa takaisin",
|
||||
"account.followers": "Seuraajat",
|
||||
@ -143,7 +143,7 @@
|
||||
"community.column_settings.media_only": "Vain media",
|
||||
"community.column_settings.remote_only": "Vain etätilit",
|
||||
"compose.language.change": "Vaihda kieli",
|
||||
"compose.language.search": "Hae kieliä...",
|
||||
"compose.language.search": "Hae kieliä…",
|
||||
"compose.published.body": "Julkaisu lähetetty.",
|
||||
"compose.published.open": "Avaa",
|
||||
"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.username": "Käyttäjänimi",
|
||||
"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_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_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, 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_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.",
|
||||
@ -246,7 +246,7 @@
|
||||
"emoji_button.objects": "Esineet",
|
||||
"emoji_button.people": "Ihmiset",
|
||||
"emoji_button.recent": "Usein käytetyt",
|
||||
"emoji_button.search": "Hae...",
|
||||
"emoji_button.search": "Hae…",
|
||||
"emoji_button.search_results": "Hakutulokset",
|
||||
"emoji_button.symbols": "Symbolit",
|
||||
"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.report_issue": "Ilmoita ongelmasta",
|
||||
"explore.search_results": "Hakutulokset",
|
||||
"explore.suggested_follows": "Henkilöt",
|
||||
"explore.suggested_follows": "Käyttäjät",
|
||||
"explore.title": "Selaa",
|
||||
"explore.trending_links": "Uutiset",
|
||||
"explore.trending_statuses": "Julkaisut",
|
||||
@ -381,7 +381,7 @@
|
||||
"keyboard_shortcuts.compose": "Kohdista kirjoituskenttään",
|
||||
"keyboard_shortcuts.description": "Kuvaus",
|
||||
"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.favourite": "Lisää julkaisu suosikkeihin",
|
||||
"keyboard_shortcuts.favourites": "Avaa suosikkiluettelo",
|
||||
@ -401,13 +401,13 @@
|
||||
"keyboard_shortcuts.reply": "Vastaa julkaisuun",
|
||||
"keyboard_shortcuts.requests": "Avaa seurantapyyntöjen luettelo",
|
||||
"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.toggle_hidden": "Näytä/piilota sisältövaroituksella merkitty teksti",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Näytä/piilota media",
|
||||
"keyboard_shortcuts.toggle_hidden": "Näytä tai piilota sisältövaroituksella merkitty teksti",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Näytä tai piilota media",
|
||||
"keyboard_shortcuts.toot": "Luo uusi julkaisu",
|
||||
"keyboard_shortcuts.unfocus": "Poistu teksti-/hakukentästä",
|
||||
"keyboard_shortcuts.up": "Siirry listassa ylöspäin",
|
||||
"keyboard_shortcuts.unfocus": "Poistu kirjoitus- tai hakukentästä",
|
||||
"keyboard_shortcuts.up": "Siirry luettelossa taaksepäin",
|
||||
"lightbox.close": "Sulje",
|
||||
"lightbox.compress": "Tiivis kuvankatselunäkymä",
|
||||
"lightbox.expand": "Laajennettu kuvankatselunäkymä",
|
||||
@ -415,7 +415,7 @@
|
||||
"lightbox.previous": "Edellinen",
|
||||
"limited_account_hint.action": "Näytä profiili joka tapauksessa",
|
||||
"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.shares": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}",
|
||||
"lists.account.add": "Lisää listalle",
|
||||
@ -453,7 +453,7 @@
|
||||
"navigation_bar.bookmarks": "Kirjanmerkit",
|
||||
"navigation_bar.community_timeline": "Paikallinen aikajana",
|
||||
"navigation_bar.compose": "Luo uusi julkaisu",
|
||||
"navigation_bar.direct": "Yksityiset maininnat",
|
||||
"navigation_bar.direct": "Yksityismaininnat",
|
||||
"navigation_bar.discover": "Löydä uutta",
|
||||
"navigation_bar.domain_blocks": "Estetyt verkkotunnukset",
|
||||
"navigation_bar.explore": "Selaa",
|
||||
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} muokkasi julkaisua",
|
||||
"notification_requests.accept": "Hyväksy",
|
||||
"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.title": "Suodatetut 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.skip": "Haluatko hypätä suoraan eteenpäin ilman alkuunpääsyohjeistuksia?",
|
||||
"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.publish_status.body": "Tervehdi maailmaa sanoin, kuvin tai äänestyksin {emoji}",
|
||||
"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.mismatching": "Salasanan vahvistus ei täsmää",
|
||||
"picture_in_picture.restore": "Laita se takaisin",
|
||||
"poll.closed": "Suljettu",
|
||||
"poll.closed": "Päättynyt",
|
||||
"poll.refresh": "Päivitä",
|
||||
"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.vote": "Äänestä",
|
||||
"poll.voted": "Äänestit tätä vastausta",
|
||||
@ -608,7 +610,7 @@
|
||||
"poll_button.remove_poll": "Poista äänestys",
|
||||
"privacy.change": "Muuta julkaisun näkyvyyttä",
|
||||
"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.short": "Seuraajat",
|
||||
"privacy.public.long": "Kuka tahansa Mastodonissa ja sen ulkopuolella",
|
||||
@ -730,7 +732,7 @@
|
||||
"status.delete": "Poista",
|
||||
"status.detailed_status": "Yksityiskohtainen keskustelunäkymä",
|
||||
"status.direct": "Mainitse @{name} yksityisesti",
|
||||
"status.direct_indicator": "Yksityinen maininta",
|
||||
"status.direct_indicator": "Yksityismaininta",
|
||||
"status.edit": "Muokkaa",
|
||||
"status.edited": "Viimeksi muokattu {date}",
|
||||
"status.edited_x_times": "Muokattu {count, plural, one {{count} kerran} other {{count} kertaa}}",
|
||||
@ -781,7 +783,7 @@
|
||||
"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.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.notifications": "Ilmoitukset",
|
||||
"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.follows": "seuratut",
|
||||
"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",
|
||||
"ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
|
||||
"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.preparing_ocr": "Valmistellaan tekstintunnistusta…",
|
||||
"upload_modal.preview_label": "Esikatselu ({ratio})",
|
||||
"upload_progress.label": "Lähetetään...",
|
||||
"upload_progress.label": "Lähetetään…",
|
||||
"upload_progress.processing": "Käsitellään…",
|
||||
"username.taken": "Tämä käyttäjänimi on jo käytössä. Kokeile toista",
|
||||
"video.close": "Sulje video",
|
||||
|
@ -505,6 +505,7 @@
|
||||
"notification.update": "{name} rættaði ein post",
|
||||
"notification_requests.accept": "Góðtak",
|
||||
"notification_requests.dismiss": "Avvís",
|
||||
"notification_requests.maximize": "Mesta",
|
||||
"notification_requests.notifications_from": "Fráboðanir frá {name}",
|
||||
"notification_requests.title": "Sáldaðar fráboðanir",
|
||||
"notifications.clear": "Rudda fráboðanir",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} editou unha publicación",
|
||||
"notification_requests.accept": "Aceptar",
|
||||
"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.title": "Notificacións filtradas",
|
||||
"notifications.clear": "Limpar notificacións",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} ערכו הודעה",
|
||||
"notification_requests.accept": "לקבל",
|
||||
"notification_requests.dismiss": "לבטל",
|
||||
"notification_requests.maximize": "הגדלה למקסימום",
|
||||
"notification_requests.minimize_banner": "להקטין את כותרת ההודעות המפולטרות",
|
||||
"notification_requests.notifications_from": "התראות מ־ {name}",
|
||||
"notification_requests.title": "התראות מסוננות",
|
||||
"notifications.clear": "הסרת התראות",
|
||||
|
@ -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_single": "Szavazás megváltoztatása egyetlen választásosra",
|
||||
"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.reply": "Válasz",
|
||||
"compose_form.save_changes": "Frissítés",
|
||||
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} szerkesztett egy bejegyzést",
|
||||
"notification_requests.accept": "Elfogadá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.title": "Szűrt értesítések",
|
||||
"notifications.clear": "Értesítések törlése",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} breytti færslu",
|
||||
"notification_requests.accept": "Samþykkja",
|
||||
"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.title": "Síaðar tilkynningar",
|
||||
"notifications.clear": "Hreinsa tilkynningar",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} ha modificato un post",
|
||||
"notification_requests.accept": "Accetta",
|
||||
"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.title": "Notifiche filtrate",
|
||||
"notifications.clear": "Cancella le notifiche",
|
||||
|
@ -293,6 +293,7 @@
|
||||
"filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します",
|
||||
"filter_modal.select_filter.title": "この投稿をフィルターする",
|
||||
"filter_modal.title.status": "投稿をフィルターする",
|
||||
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {すべて完了しました} other {#人の通知がブロックされています}}",
|
||||
"filtered_notifications_banner.title": "保留中の通知",
|
||||
"firehose.all": "すべて",
|
||||
"firehose.local": "このサーバー",
|
||||
@ -489,6 +490,7 @@
|
||||
"notification.update": "{name}さんが投稿を編集しました",
|
||||
"notification_requests.accept": "受け入れる",
|
||||
"notification_requests.dismiss": "無視",
|
||||
"notification_requests.minimize_banner": "「保留中の通知」のバナーを最小化する",
|
||||
"notification_requests.notifications_from": "{name}からの通知",
|
||||
"notification_requests.title": "保留中の通知",
|
||||
"notifications.clear": "通知を消去",
|
||||
|
@ -804,7 +804,7 @@
|
||||
"upload_error.limit": "파일 업로드 제한에 도달했습니다.",
|
||||
"upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.",
|
||||
"upload_form.audio_description": "청각 장애인을 위한 설명",
|
||||
"upload_form.description": "시각장애인을 위한 설명",
|
||||
"upload_form.description": "시각장애인이나 저시력자를 위한 설명",
|
||||
"upload_form.edit": "수정",
|
||||
"upload_form.thumbnail": "썸네일 변경",
|
||||
"upload_form.video_description": "청각, 시각 장애인을 위한 설명",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} heeft een bericht bewerkt",
|
||||
"notification_requests.accept": "Accepteren",
|
||||
"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.title": "Gefilterde meldingen",
|
||||
"notifications.clear": "Meldingen verwijderen",
|
||||
|
@ -29,6 +29,9 @@
|
||||
"account.follows.empty": "ਇਹ ਵਰਤੋਂਕਾਰ ਹਾਲੇ ਕਿਸੇ ਨੂੰ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।",
|
||||
"account.go_to_profile": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਜਾਓ",
|
||||
"account.media": "ਮੀਡੀਆ",
|
||||
"account.mute": "{name} ਨੂੰ ਮੌਨ ਕਰੋ",
|
||||
"account.mute_notifications_short": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਮੌਨ ਕਰੋ",
|
||||
"account.mute_short": "ਮੌਨ ਕਰੋ",
|
||||
"account.muted": "ਮੌਨ ਕੀਤੀਆਂ",
|
||||
"account.mutual": "ਸਾਂਝੇ",
|
||||
"account.no_bio": "ਕੋਈ ਵਰਣਨ ਨਹੀਂ ਦਿੱਤਾ।",
|
||||
|
@ -504,6 +504,8 @@
|
||||
"notification.update": "{name} edytował(a) post",
|
||||
"notification_requests.accept": "Akceptuj",
|
||||
"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.title": "Powiadomienia filtrowane",
|
||||
"notifications.clear": "Wyczyść powiadomienia",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} editou uma publicação",
|
||||
"notification_requests.accept": "Aceitar",
|
||||
"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.title": "Notificações filtradas",
|
||||
"notifications.clear": "Limpar notificações",
|
||||
|
@ -129,6 +129,7 @@
|
||||
"compose.language.change": "Поміняти язык",
|
||||
"compose.language.search": "Глядати языкы...",
|
||||
"compose.published.body": "Пост опубликованый.",
|
||||
"compose.published.open": "Удкрыти",
|
||||
"compose.saved.body": "Пост усокоченый.",
|
||||
"compose_form.direct_message_warning_learn_more": "Читайте бульше",
|
||||
"compose_form.encryption_warning": "Публикації на Mastodon не шіфрувут ся. Не шырьте чутливу інформацію через Mastodon.",
|
||||
|
@ -215,6 +215,7 @@
|
||||
"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_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.their_server": "Ich digitálny domov, kde žijú všetky ich príspevky.",
|
||||
"domain_pill.username": "Používateľské meno",
|
||||
@ -449,12 +450,14 @@
|
||||
"navigation_bar.security": "Zabezpečenie",
|
||||
"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_statuses_other": "{name} nahlásil/a {target}",
|
||||
"notification.admin.sign_up": "Nová registráciu účtu {name}",
|
||||
"notification.favourite": "{name} hviezdičkuje váš príspevok",
|
||||
"notification.follow": "{name} vás sleduje",
|
||||
"notification.follow_request": "{name} vás žiada sledovať",
|
||||
"notification.mention": "{name} vás spomína",
|
||||
"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_silence": "Tvoj účet bol obmedzený.",
|
||||
"notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.",
|
||||
@ -471,6 +474,7 @@
|
||||
"notification_requests.title": "Filtrované oboznámenia",
|
||||
"notifications.clear": "Vyčistiť 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.sign_up": "Nové registrácie:",
|
||||
"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_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_sentence": "nelegálny obsah",
|
||||
"report_notification.categories.other": "Ostatné",
|
||||
"report_notification.categories.other_sentence": "ostatné",
|
||||
"report_notification.categories.spam": "Spam",
|
||||
"report_notification.categories.violation": "Porušenie pravidla",
|
||||
"report_notification.categories.violation_sentence": "porušenie pravidla",
|
||||
"report_notification.open": "Otvoriť hlásenie",
|
||||
"search.no_recent_searches": "Žiadne nedávne vyhľadávania",
|
||||
"search.placeholder": "Hľadať",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} përpunoi një postim",
|
||||
"notification_requests.accept": "Pranoje",
|
||||
"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.title": "Njoftime të filtruar",
|
||||
"notifications.clear": "Spastroji njoftimet",
|
||||
|
@ -300,6 +300,7 @@
|
||||
"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.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",
|
||||
"firehose.all": "Tümü",
|
||||
"firehose.local": "Bu sunucu",
|
||||
@ -504,6 +505,8 @@
|
||||
"notification.update": "{name} bir gönderiyi düzenledi",
|
||||
"notification_requests.accept": "Onayla",
|
||||
"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.title": "Filtrelenmiş bildirimler",
|
||||
"notifications.clear": "Bildirimleri temizle",
|
||||
|
@ -300,6 +300,7 @@
|
||||
"filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову",
|
||||
"filter_modal.select_filter.title": "Фільтрувати цей допис",
|
||||
"filter_modal.title.status": "Фільтрувати допис",
|
||||
"filtered_notifications_banner.pending_requests": "Від {count, plural, =0 {жодної особи} one {однієї особи} few {# осіб} many {# осіб} other {# особи}}, котрих ви можете знати",
|
||||
"filtered_notifications_banner.title": "Відфільтровані сповіщення",
|
||||
"firehose.all": "Всі",
|
||||
"firehose.local": "Цей сервер",
|
||||
@ -473,10 +474,10 @@
|
||||
"navigation_bar.security": "Безпека",
|
||||
"not_signed_in_indicator.not_signed_in": "Ви повинні увійти, щоб отримати доступ до цього ресурсу.",
|
||||
"notification.admin.report": "Скарга від {name} на {target}",
|
||||
"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_statuses": "{name} повідомив(ла) про {target} в категорії {category}",
|
||||
"notification.admin.report_statuses_other": "{name} повідомив(ла) про {target}",
|
||||
"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_statuses": "{name} повідомляє про {target} в категорії {category}",
|
||||
"notification.admin.report_statuses_other": "{name} повідомляє про {target}",
|
||||
"notification.admin.sign_up": "{name} приєдналися",
|
||||
"notification.favourite": "Ваш допис сподобався {name}",
|
||||
"notification.follow": "{name} підписалися на вас",
|
||||
@ -493,7 +494,7 @@
|
||||
"notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.",
|
||||
"notification.own_poll": "Ваше опитування завершилося",
|
||||
"notification.poll": "Опитування, в якому ви проголосували, завершено",
|
||||
"notification.private_mention": "{name} приватно згадав(ла) вас",
|
||||
"notification.private_mention": "{name} приватно згадує вас",
|
||||
"notification.reblog": "{name} поширює ваш допис",
|
||||
"notification.relationships_severance_event": "Втрачено з'єднання з {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.",
|
||||
@ -504,6 +505,8 @@
|
||||
"notification.update": "{name} змінює допис",
|
||||
"notification_requests.accept": "Прийняти",
|
||||
"notification_requests.dismiss": "Відхилити",
|
||||
"notification_requests.maximize": "Розгорнути",
|
||||
"notification_requests.minimize_banner": "Мінімізувати відфільтрований банер сповіщень",
|
||||
"notification_requests.notifications_from": "Сповіщення від {name}",
|
||||
"notification_requests.title": "Відфільтровані сповіщення",
|
||||
"notifications.clear": "Очистити сповіщення",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} đã sửa tút",
|
||||
"notification_requests.accept": "Chấp nhận",
|
||||
"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.title": "Thông báo đã lọc",
|
||||
"notifications.clear": "Xóa hết thông báo",
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"about.blocks": "受限服务器",
|
||||
"about.blocks": "被限制的服务器",
|
||||
"about.contact": "联系方式:",
|
||||
"about.disclaimer": "Mastodon 是自由的开源软件,商标由 Mastodon gGmbH 持有。",
|
||||
"about.domain_blocks.no_reason_available": "原因不可用",
|
||||
"about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。",
|
||||
"about.domain_blocks.silenced.explanation": "除非明确地搜索并关注对方,否则你不会看到来自此服务器的用户信息与内容。",
|
||||
"about.domain_blocks.silenced.title": "访问受限",
|
||||
"about.domain_blocks.suspended.explanation": "不处理、存储或交换来自本服务器的任何数据,不可能与本服务器上的用户进行任何交互或通信。",
|
||||
"about.domain_blocks.silenced.title": "已隐藏",
|
||||
"about.domain_blocks.suspended.explanation": "此服务器的数据将不会被处理、存储或者交换,本站也将无法和来自此服务器的用户互动或者交流。",
|
||||
"about.domain_blocks.suspended.title": "已封禁",
|
||||
"about.not_available": "此信息在当前服务器尚不可用。",
|
||||
"about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体",
|
||||
@ -81,7 +81,7 @@
|
||||
"admin.impact_report.instance_accounts": "将要删除的账户资料",
|
||||
"admin.impact_report.instance_followers": "本实例用户即将丢失的关注者",
|
||||
"admin.impact_report.instance_follows": "对方实例用户将会丢失的关注者",
|
||||
"admin.impact_report.title": "权重一览",
|
||||
"admin.impact_report.title": "影响摘要",
|
||||
"alert.rate_limited.message": "请在 {retry_time, time, medium} 后重试。",
|
||||
"alert.rate_limited.title": "频率受限",
|
||||
"alert.unexpected.message": "发生了意外错误。",
|
||||
@ -91,10 +91,10 @@
|
||||
"audio.hide": "隐藏音频",
|
||||
"block_modal.remote_users_caveat": "我们将要求服务器 {domain} 尊重您的决定。然而,我们无法保证对方一定遵从,因为某些服务器可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录的用户可见。",
|
||||
"block_modal.show_less": "隐藏",
|
||||
"block_modal.show_more": "展开",
|
||||
"block_modal.show_more": "显示更多",
|
||||
"block_modal.they_cant_mention": "他们不能提及或关注你。",
|
||||
"block_modal.they_cant_see_posts": "嘟文将被设置为互相不可见。",
|
||||
"block_modal.they_will_know": "他们将会获知他们被屏蔽。",
|
||||
"block_modal.they_cant_see_posts": "他们看不到你的嘟文,你也看不到他们的嘟文。",
|
||||
"block_modal.they_will_know": "他们将能看到他们被屏蔽。",
|
||||
"block_modal.title": "屏蔽该用户?",
|
||||
"block_modal.you_wont_see_mentions": "你将无法看到提及他们的嘟文。",
|
||||
"boost_modal.combo": "下次按住 {combo} 即可跳过此提示",
|
||||
@ -171,28 +171,28 @@
|
||||
"confirmations.block.confirm": "屏蔽",
|
||||
"confirmations.delete.confirm": "删除",
|
||||
"confirmations.delete.message": "你确定要删除这条嘟文吗?",
|
||||
"confirmations.delete.title": "删除嘟文?",
|
||||
"confirmations.delete.title": "确认删除嘟文?",
|
||||
"confirmations.delete_list.confirm": "删除",
|
||||
"confirmations.delete_list.message": "确定永久删除这个列表吗?",
|
||||
"confirmations.delete_list.title": "删除列表?",
|
||||
"confirmations.delete_list.title": "确认删除列表?",
|
||||
"confirmations.discard_edit_media.confirm": "丢弃",
|
||||
"confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍要丢弃吗?",
|
||||
"confirmations.edit.confirm": "编辑",
|
||||
"confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?",
|
||||
"confirmations.edit.title": "覆盖嘟文?",
|
||||
"confirmations.edit.title": "确认覆盖嘟文?",
|
||||
"confirmations.logout.confirm": "退出登录",
|
||||
"confirmations.logout.message": "确定要退出登录吗?",
|
||||
"confirmations.logout.title": "退出登录?",
|
||||
"confirmations.logout.title": "是否退出登录?",
|
||||
"confirmations.mute.confirm": "隐藏",
|
||||
"confirmations.redraft.confirm": "删除并重新编辑",
|
||||
"confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。",
|
||||
"confirmations.redraft.title": "删除并重新嘟文?",
|
||||
"confirmations.redraft.title": "是否删除并重新编辑嘟文?",
|
||||
"confirmations.reply.confirm": "回复",
|
||||
"confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?",
|
||||
"confirmations.reply.title": "覆盖嘟文?",
|
||||
"confirmations.reply.title": "确认覆盖嘟文?",
|
||||
"confirmations.unfollow.confirm": "取消关注",
|
||||
"confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
|
||||
"confirmations.unfollow.title": "取消关注用户?",
|
||||
"confirmations.unfollow.title": "是否取消关注用户?",
|
||||
"conversation.delete": "删除对话",
|
||||
"conversation.mark_as_read": "标记为已读",
|
||||
"conversation.open": "查看对话",
|
||||
@ -505,11 +505,13 @@
|
||||
"notification.update": "{name} 编辑了嘟文",
|
||||
"notification_requests.accept": "接受",
|
||||
"notification_requests.dismiss": "拒绝",
|
||||
"notification_requests.maximize": "最大化",
|
||||
"notification_requests.minimize_banner": "最小化被过滤通知的横幅",
|
||||
"notification_requests.notifications_from": "来自 {name} 的通知",
|
||||
"notification_requests.title": "通知(已过滤)",
|
||||
"notifications.clear": "清空通知列表",
|
||||
"notifications.clear_confirmation": "你确定要永久清空通知列表吗?",
|
||||
"notifications.clear_title": "清空通知?",
|
||||
"notifications.clear_title": "是否清空通知?",
|
||||
"notifications.column_settings.admin.report": "新举报:",
|
||||
"notifications.column_settings.admin.sign_up": "新注册:",
|
||||
"notifications.column_settings.alert": "桌面通知",
|
||||
|
@ -505,6 +505,8 @@
|
||||
"notification.update": "{name} 已編輯嘟文",
|
||||
"notification_requests.accept": "接受",
|
||||
"notification_requests.dismiss": "關閉",
|
||||
"notification_requests.maximize": "最大化",
|
||||
"notification_requests.minimize_banner": "最小化已過濾通知橫幅",
|
||||
"notification_requests.notifications_from": "來自 {name} 之通知",
|
||||
"notification_requests.title": "已過濾之通知",
|
||||
"notifications.clear": "清除通知",
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
|
||||
|
||||
import { blockAccountSuccess, muteAccountSuccess } from 'mastodon/actions/accounts';
|
||||
import {
|
||||
NOTIFICATION_REQUESTS_EXPAND_REQUEST,
|
||||
NOTIFICATION_REQUESTS_EXPAND_SUCCESS,
|
||||
@ -51,6 +52,14 @@ const removeRequest = (state, 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) => {
|
||||
switch(action.type) {
|
||||
case NOTIFICATION_REQUESTS_FETCH_SUCCESS:
|
||||
@ -74,6 +83,10 @@ export const notificationRequestsReducer = (state = initialState, action) => {
|
||||
case NOTIFICATION_REQUEST_ACCEPT_REQUEST:
|
||||
case NOTIFICATION_REQUEST_DISMISS_REQUEST:
|
||||
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:
|
||||
return state.set('current', initialState.get('current').set('isLoading', true));
|
||||
case NOTIFICATION_REQUEST_FETCH_SUCCESS:
|
||||
|
@ -1,9 +1,8 @@
|
||||
import type { GetThunkAPI } from '@reduxjs/toolkit';
|
||||
import { createAsyncThunk } from '@reduxjs/toolkit';
|
||||
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
|
||||
import type { BaseThunkAPI } from '@reduxjs/toolkit/dist/createAsyncThunk';
|
||||
|
||||
import type { AppDispatch, RootState } from './store';
|
||||
|
||||
export const useAppDispatch = useDispatch.withTypes<AppDispatch>();
|
||||
@ -25,29 +24,20 @@ export const createAppAsyncThunk = createAsyncThunk.withTypes<{
|
||||
rejectValue: AsyncThunkRejectValue;
|
||||
}>();
|
||||
|
||||
type AppThunkApi = Pick<
|
||||
BaseThunkAPI<
|
||||
RootState,
|
||||
unknown,
|
||||
AppDispatch,
|
||||
AsyncThunkRejectValue,
|
||||
AppMeta,
|
||||
AppMeta
|
||||
>,
|
||||
'getState' | 'dispatch'
|
||||
>;
|
||||
|
||||
interface AppThunkOptions {
|
||||
skipLoading?: boolean;
|
||||
}
|
||||
|
||||
const createBaseAsyncThunk = createAsyncThunk.withTypes<{
|
||||
interface AppThunkConfig {
|
||||
state: RootState;
|
||||
dispatch: AppDispatch;
|
||||
rejectValue: AsyncThunkRejectValue;
|
||||
fulfilledMeta: 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>(
|
||||
name: string,
|
||||
|
@ -3086,6 +3086,11 @@ $ui-header-logo-wordmark-width: 99px;
|
||||
.explore__search-header {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.explore__search-results {
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.icon-with-badge {
|
||||
@ -7354,7 +7359,7 @@ a.status-card {
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
|
||||
@media screen and (max-width: $no-gap-breakpoint) {
|
||||
@media screen and (max-width: $no-gap-breakpoint - 1px) {
|
||||
border-right: 0;
|
||||
border-left: 0;
|
||||
}
|
||||
@ -8076,16 +8081,17 @@ noscript {
|
||||
.verified {
|
||||
border: 1px solid rgba($valid-value-color, 0.5);
|
||||
margin-top: -1px;
|
||||
margin-inline: -1px;
|
||||
|
||||
&:first-child {
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
|
||||
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 {
|
||||
font-size: 15px;
|
||||
line-height: 22px;
|
||||
|
@ -101,7 +101,9 @@ class LinkDetailsExtractor
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
|
@ -234,13 +234,17 @@ class Request
|
||||
end
|
||||
|
||||
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)
|
||||
raise Mastodon::LengthValidationError if contents.bytesize > limit
|
||||
raise Mastodon::LengthValidationError, "Body size exceeds limit of #{limit}" if contents.bytesize > limit
|
||||
|
||||
contents
|
||||
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
|
||||
|
||||
if ::HTTP::Response.methods.include?(:body_with_limit) && !Rails.env.production?
|
||||
|
@ -1,10 +1,11 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class GroupedNotificationsPresenter < ActiveModelSerializers::Model
|
||||
def initialize(grouped_notifications)
|
||||
def initialize(grouped_notifications, options = {})
|
||||
super()
|
||||
|
||||
@grouped_notifications = grouped_notifications
|
||||
@options = options
|
||||
end
|
||||
|
||||
def notification_groups
|
||||
@ -16,6 +17,28 @@ class GroupedNotificationsPresenter < ActiveModelSerializers::Model
|
||||
end
|
||||
|
||||
def accounts
|
||||
@grouped_notifications.flat_map(&:sample_accounts).uniq(&:id)
|
||||
@accounts ||= begin
|
||||
if partial_avatars?
|
||||
@grouped_notifications.map { |group| group.sample_accounts.first }.uniq(&:id)
|
||||
else
|
||||
@grouped_notifications.flat_map(&:sample_accounts).uniq(&:id)
|
||||
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
|
||||
|
@ -1,7 +1,22 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
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 :partial_accounts, serializer: PartialAccountSerializer, if: :return_partial_accounts?
|
||||
has_many :statuses, serializer: REST::StatusSerializer
|
||||
has_many :notification_groups, serializer: REST::NotificationGroupSerializer
|
||||
|
||||
def return_partial_accounts?
|
||||
instance_options[:expand_accounts] == 'partial_avatars'
|
||||
end
|
||||
end
|
||||
|
@ -7,6 +7,7 @@ class AfterBlockService < BaseService
|
||||
|
||||
clear_home_feed!
|
||||
clear_list_feeds!
|
||||
clear_notification_requests!
|
||||
clear_notifications!
|
||||
clear_conversations!
|
||||
end
|
||||
@ -28,4 +29,8 @@ class AfterBlockService < BaseService
|
||||
def clear_notifications!
|
||||
Notification.where(account: @account).where(from_account: @target_account).in_batches.delete_all
|
||||
end
|
||||
|
||||
def clear_notification_requests!
|
||||
NotificationRequest.where(account: @account, from_account: @target_account).destroy_all
|
||||
end
|
||||
end
|
||||
|
@ -14,6 +14,7 @@
|
||||
wrapper: :with_label
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :min_status_age,
|
||||
disabled: !@policy.enabled?,
|
||||
collection: AccountStatusesCleanupPolicy::ALLOWED_MIN_STATUS_AGE.map(&:to_i),
|
||||
hint: false,
|
||||
include_blank: false,
|
||||
@ -28,11 +29,13 @@
|
||||
.fields-row
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :keep_pinned,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.keep_pinned_hint'),
|
||||
label: t('statuses_cleanup.keep_pinned'),
|
||||
wrapper: :with_label
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :keep_direct,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.keep_direct_hint'),
|
||||
label: t('statuses_cleanup.keep_direct'),
|
||||
wrapper: :with_label
|
||||
@ -40,11 +43,13 @@
|
||||
.fields-row
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :keep_self_fav,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.keep_self_fav_hint'),
|
||||
label: t('statuses_cleanup.keep_self_fav'),
|
||||
wrapper: :with_label
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :keep_self_bookmark,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.keep_self_bookmark_hint'),
|
||||
label: t('statuses_cleanup.keep_self_bookmark'),
|
||||
wrapper: :with_label
|
||||
@ -52,11 +57,13 @@
|
||||
.fields-row
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :keep_polls,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.keep_polls_hint'),
|
||||
label: t('statuses_cleanup.keep_polls'),
|
||||
wrapper: :with_label
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :keep_media,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.keep_media_hint'),
|
||||
label: t('statuses_cleanup.keep_media'),
|
||||
wrapper: :with_label
|
||||
@ -66,12 +73,14 @@
|
||||
.fields-row
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :min_favs,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.min_favs_hint'),
|
||||
input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_favs') },
|
||||
label: t('statuses_cleanup.min_favs'),
|
||||
wrapper: :with_label
|
||||
.fields-row__column.fields-row__column-6.fields-group
|
||||
= f.input :min_reblogs,
|
||||
disabled: !@policy.enabled?,
|
||||
hint: t('statuses_cleanup.min_reblogs_hint'),
|
||||
input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_reblogs') },
|
||||
label: t('statuses_cleanup.min_reblogs'),
|
||||
|
@ -232,6 +232,7 @@ be:
|
||||
update_custom_emoji: Абнавіць адвольныя эмодзі
|
||||
update_domain_block: Актуалізаваць блакіроўку дамена
|
||||
update_ip_block: Абнавіць IP правіла
|
||||
update_report: Абнавіць скаргу
|
||||
update_status: Абнавіць допіс
|
||||
update_user_role: Абнавіць ролю
|
||||
actions:
|
||||
@ -299,6 +300,7 @@ be:
|
||||
filter_by_action: Фільтраваць па дзеянню
|
||||
filter_by_user: Адфільтраваць па карыстальніку
|
||||
title: Аўдыт
|
||||
unavailable_instance: "(імя дамена недаступнае)"
|
||||
announcements:
|
||||
destroyed_msg: Аб'ява паспяхова выдалена!
|
||||
edit:
|
||||
@ -485,6 +487,9 @@ be:
|
||||
title: Рэкамендацыі падпісак
|
||||
unsuppress: Аднавіць рэкамендацыі падпісак
|
||||
instances:
|
||||
audit_log:
|
||||
title: Нядаўнія журналы аўдыту
|
||||
view_all: Праглядзець поўныя журналы аўдыту
|
||||
availability:
|
||||
description_html:
|
||||
few: Калі дастаўка на дамен не атрымоўваецца праз <strong>%{count} іншыя дні</strong>, далейшыя спробы дастаўкі не будуць зроблены, пакуль не будзе атрымана дастаўка <em>з</em> дамена.
|
||||
@ -661,6 +666,7 @@ be:
|
||||
report: 'Скарга #%{id}'
|
||||
reported_account: Уліковы запіс парушальніка
|
||||
reported_by: Адпраўнік скаргі
|
||||
reported_with_application: Паведамлена праз праграму
|
||||
resolved: Вырашана
|
||||
resolved_msg: Скарга была паспяхова вырашана!
|
||||
skip_to_actions: Прапусціць дзеянні
|
||||
@ -907,7 +913,23 @@ be:
|
||||
action: Для падрабязнасцей націсніце тут
|
||||
message_html: "<strong>Ваша сховішча не наладжана. Прыватнасць карыстальнікаў пад пагрозай.</strong>"
|
||||
tags:
|
||||
moderation:
|
||||
not_trendable: Не ў трэндзе
|
||||
not_usable: Непрыгодныя
|
||||
pending_review: Чакае праверкі
|
||||
review_requested: Патрабуюць прагледжвання
|
||||
reviewed: Прагледжаныя
|
||||
title: Стан
|
||||
trendable: У трэндзе
|
||||
unreviewed: Непрагледжаныя
|
||||
usable: Прыгодныя
|
||||
name: Назва
|
||||
newest: Спачатку новыя
|
||||
oldest: Спачатку старыя
|
||||
reset: Скінуць
|
||||
review: Стан праверкі
|
||||
search: Пошук
|
||||
title: Хэштэгі
|
||||
updated_msg: Налады хэштэгаў паспяхова змененыя
|
||||
title: Адміністрацыя
|
||||
trends:
|
||||
|
@ -232,6 +232,7 @@ cs:
|
||||
update_custom_emoji: Aktualizovat vlastní emoji
|
||||
update_domain_block: Změnit blokaci domény
|
||||
update_ip_block: Aktualizovat pravidlo IP
|
||||
update_report: Upravit hlášení
|
||||
update_status: Aktualizovat Příspěvek
|
||||
update_user_role: Aktualizovat roli
|
||||
actions:
|
||||
@ -486,6 +487,9 @@ cs:
|
||||
title: Doporučená sledování
|
||||
unsuppress: Obnovit doporučení sledování
|
||||
instances:
|
||||
audit_log:
|
||||
title: Nedávné protokoly auditu
|
||||
view_all: Zobrazit úplné protokoly auditu
|
||||
availability:
|
||||
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.
|
||||
@ -662,6 +666,7 @@ cs:
|
||||
report: 'Hlášení #%{id}'
|
||||
reported_account: Nahlášený účet
|
||||
reported_by: Nahlášeno uživatelem
|
||||
reported_with_application: Nahlášeno aplikací
|
||||
resolved: Vyřešeno
|
||||
resolved_msg: Hlášení úspěšně vyřešeno!
|
||||
skip_to_actions: Přeskočit k akcím
|
||||
@ -908,7 +913,23 @@ cs:
|
||||
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>"
|
||||
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í
|
||||
search: Hledat
|
||||
title: Hashtagy
|
||||
updated_msg: Nastavení hashtagů bylo úspěšně aktualizováno
|
||||
title: Administrace
|
||||
trends:
|
||||
|
@ -17,11 +17,11 @@ cy:
|
||||
zero: Dilynwyr
|
||||
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.
|
||||
last_active: y diweddaraf
|
||||
last_active: gweithgar ddiwethaf
|
||||
link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date}
|
||||
nothing_here: Does dim byd yma!
|
||||
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:
|
||||
few: Postiadau
|
||||
many: Postiadau
|
||||
@ -503,6 +503,9 @@ cy:
|
||||
title: Dilyn yr argymhellion
|
||||
unsuppress: Adfer argymhelliad dilyn
|
||||
instances:
|
||||
audit_log:
|
||||
title: Cofnodion Archwilio Diweddar
|
||||
view_all: Gweld y cofnodion archwilio llawn
|
||||
availability:
|
||||
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.
|
||||
@ -938,7 +941,23 @@ cy:
|
||||
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>"
|
||||
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
|
||||
search: Chwilio
|
||||
title: Hashnodau
|
||||
updated_msg: Gosodiadau hashnodau wedi'i diweddaru'n llwyddiannus
|
||||
title: Gweinyddiaeth
|
||||
trends:
|
||||
|
@ -642,6 +642,7 @@ da:
|
||||
report: 'Anmeldelse #%{id}'
|
||||
reported_account: Anmeldt konto
|
||||
reported_by: Anmeldt af
|
||||
reported_with_application: Rapporteret via applikation
|
||||
resolved: Løst
|
||||
resolved_msg: Anmeldelse løst!
|
||||
skip_to_actions: Overspring til foranstaltninger
|
||||
@ -887,8 +888,8 @@ da:
|
||||
moderation:
|
||||
not_trendable: Ikke trendegnet
|
||||
not_usable: Ikke brugbar
|
||||
pending_review: Afventer revision
|
||||
review_requested: Revision anmodet
|
||||
pending_review: Afventer gennemgang
|
||||
review_requested: Gennemgang ønsket
|
||||
reviewed: Revideret
|
||||
title: Status
|
||||
trendable: Trendegnet
|
||||
@ -898,7 +899,7 @@ da:
|
||||
newest: Seneste
|
||||
oldest: Ældste
|
||||
reset: Nulstil
|
||||
review: Revisionsstatus
|
||||
review: Gennmgangsstatus
|
||||
search: Søg
|
||||
title: Hashtags
|
||||
updated_msg: Hashtag-indstillinger opdateret
|
||||
@ -923,7 +924,7 @@ da:
|
||||
usage_comparison: Delt %{today} gange i dag, sammenlignet med %{yesterday} i går
|
||||
not_allowed_to_trend: Ikke tilladt at trende
|
||||
only_allowed: Kun tilladte
|
||||
pending_review: Afventer revision
|
||||
pending_review: Afventer gennemgang
|
||||
preview_card_providers:
|
||||
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.
|
||||
@ -1023,14 +1024,14 @@ da:
|
||||
body: Nye Mastodon-versioner er udgivet. Opgradering bør overvejes!
|
||||
subject: Nye Mastodon-versioner er tilgængelige til %{instance}!
|
||||
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:
|
||||
title: Populære links
|
||||
new_trending_statuses:
|
||||
title: Populære opslag
|
||||
new_trending_tags:
|
||||
title: Populære hashtags
|
||||
subject: Nye tendenser klar til revision på %{instance}
|
||||
subject: Nye tendenser klar til gennemgang på %{instance}
|
||||
aliases:
|
||||
add_new: Opret alias
|
||||
created_msg: Nyt alias oprettet. Du kan nu påbegynde flytningen fra den gamle konto.
|
||||
|
@ -1130,7 +1130,7 @@ de:
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
@ -83,6 +83,7 @@ be:
|
||||
access_denied: Уласнік рэсурсу або сэрвер аўтарызацыі адхіліў ваш запыт.
|
||||
credential_flow_not_configured: Resource Owner Password Credentials flow не прайшоў з-за таго, што ўласцівасць Doorkeeper.configure.resource_owner_from_credentials была не вызначана.
|
||||
invalid_client: Збой аўтэнтыфікацыі кліента з-за невядомага кліента, адсутнасці аўтэнтыфікацыі кліента або метаду аўтэнтыфікацыі, які не падтрымліваецца.
|
||||
invalid_code_challenge_method: Метад праверкі кода павінен быць S256, просты тэкст не падтрымліваецца.
|
||||
invalid_grant: Прадастаўлены дазвол на аўтарызацыю несапраўдны, пратэрмінованы, быў адкліканы, не адпавядае URI перанакіравання, які выкарыстоўваецца ў запыце аўтарызацыі або быў выдадзены іншаму кліенту.
|
||||
invalid_redirect_uri: Прадстаўлены URI перанакіравання не сапраўдны.
|
||||
invalid_request:
|
||||
|
@ -20,7 +20,7 @@ hu:
|
||||
applications:
|
||||
buttons:
|
||||
authorize: Hitelesítés
|
||||
cancel: Mégsem
|
||||
cancel: Mégse
|
||||
destroy: Törlés
|
||||
edit: Szerkesztés
|
||||
submit: Elküldés
|
||||
@ -51,20 +51,20 @@ hu:
|
||||
application_id: Ügyfélkulcs
|
||||
callback_urls: Visszahívási URL-ek
|
||||
scopes: Hatáskörök
|
||||
secret: Ügyfél titkos kulcs
|
||||
secret: Ügyféltitok
|
||||
title: 'Alkalmazás: %{name}'
|
||||
authorizations:
|
||||
buttons:
|
||||
authorize: Hitelesítés
|
||||
authorize: Engedélyezés
|
||||
deny: Tiltás
|
||||
error:
|
||||
title: Hiba történt
|
||||
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>"
|
||||
review_permissions: Jogosultságok áttekintése
|
||||
title: Hitelesítés szükséges
|
||||
title: Engedélyezés szükséges
|
||||
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:
|
||||
buttons:
|
||||
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.
|
||||
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_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_redirect_uri: Az átirányító URI nem valós.
|
||||
invalid_request:
|
||||
|
@ -17,7 +17,7 @@ fi:
|
||||
link_verified_on: Tämän linkin omistus on tarkastettu %{date}
|
||||
nothing_here: Täällä ei ole mitään!
|
||||
pin_errors:
|
||||
following: Sinun täytyy seurata henkilöä jota haluat tukea
|
||||
following: Sinun täytyy seurata käyttäjää, jota haluat tukea
|
||||
posts:
|
||||
one: Julkaisu
|
||||
other: viestiä
|
||||
@ -632,7 +632,7 @@ fi:
|
||||
create_and_resolve: Ratkaise ja lisää muistiinpano
|
||||
create_and_unresolve: Avaa uudelleen ja lisää muistiinpano
|
||||
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
|
||||
notes_description_html: Tarkastele ja jätä muistiinpanoja muille moderaattoreille ja itsellesi tulevaisuuteen
|
||||
processed_msg: Raportin nro %{id} käsittely onnistui
|
||||
@ -771,7 +771,7 @@ fi:
|
||||
public_timelines: Julkiset aikajanat
|
||||
publish_discovered_servers: Julkaise löydetyt palvelimet
|
||||
publish_statistics: Julkaise tilastot
|
||||
title: Löydettävyys
|
||||
title: Löytäminen
|
||||
trends: Trendit
|
||||
domain_blocks:
|
||||
all: Kaikille
|
||||
@ -838,7 +838,7 @@ fi:
|
||||
delete_statuses: "%{name} poisti käyttäjän %{target} julkaisut"
|
||||
disable: "%{name} jäädytti %{target} tilin"
|
||||
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"
|
||||
silence: "%{name} rajoitti käyttäjän %{target} tiliä"
|
||||
suspend: "%{name} jäädytti käyttäjän %{target} tilin"
|
||||
@ -918,8 +918,8 @@ fi:
|
||||
publishers:
|
||||
no_publisher_selected: Julkaisijoita ei muutettu, koska yhtään ei ollut valittuna
|
||||
shared_by_over_week:
|
||||
one: Jakanut yksi henkilö viimeisen viikon aikana
|
||||
other: Jakanut %{count} henkilöä viimeisen viikon aikana
|
||||
one: Jakanut yksi käyttäjä viimeisen viikon aikana
|
||||
other: Jakanut %{count} käyttäjää viimeisen viikon aikana
|
||||
title: Suositut linkit
|
||||
usage_comparison: Jaettu tänään %{today} kertaa verrattuna eilisen %{yesterday} kertaan
|
||||
not_allowed_to_trend: Ei saa trendata
|
||||
@ -951,7 +951,7 @@ fi:
|
||||
tag_servers_dimension: Suosituimmat palvelimet
|
||||
tag_servers_measure: eri palvelimet
|
||||
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
|
||||
no_tag_selected: Tunnisteita ei muutettu, koska yhtään ei ollut valittuna
|
||||
not_listable: Ei ehdoteta
|
||||
@ -964,8 +964,8 @@ fi:
|
||||
usable: Voi käyttää
|
||||
usage_comparison: Käytetty tänään %{today} kertaa, verrattuna elisen %{yesterday} kertaan
|
||||
used_by_over_week:
|
||||
one: Käyttänyt yksi henkilö viimeisen viikon aikana
|
||||
other: Käyttänyt %{count} henkilöä viimeisen viikon aikana
|
||||
one: Käyttänyt yksi käyttäjä viimeisen viikon aikana
|
||||
other: Käyttänyt %{count} käyttäjää viimeisen viikon aikana
|
||||
title: Trendit
|
||||
trending: Trendaus
|
||||
warning_presets:
|
||||
@ -1043,8 +1043,8 @@ fi:
|
||||
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.'
|
||||
animations_and_accessibility: Animaatiot ja saavutettavuus
|
||||
confirmation_dialogs: Vahvistusvalinnat
|
||||
discovery: Löydettävyys
|
||||
confirmation_dialogs: Vahvistusikkunat
|
||||
discovery: Löytäminen
|
||||
localization:
|
||||
body: Mastodonin ovat kääntäneet vapaaehtoiset.
|
||||
guide_link: https://crowdin.com/project/mastodon
|
||||
@ -1092,7 +1092,7 @@ fi:
|
||||
dont_have_your_security_key: Eikö sinulla ole suojausavainta?
|
||||
forgot_password: Unohditko salasanasi?
|
||||
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
|
||||
log_in_with: Kirjaudu käyttäen
|
||||
login: Kirjaudu sisään
|
||||
@ -1134,7 +1134,7 @@ fi:
|
||||
title: Kirjaudu palvelimelle %{domain}
|
||||
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}.
|
||||
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.
|
||||
status:
|
||||
account_status: Tilin tila
|
||||
@ -1224,7 +1224,7 @@ fi:
|
||||
invalid_domain: ei ole kelvollinen verkkotunnus
|
||||
edit_profile:
|
||||
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
|
||||
errors:
|
||||
'400': Lähettämäsi pyyntö oli virheellinen tai muotoiltu virheellisesti.
|
||||
@ -1249,7 +1249,7 @@ fi:
|
||||
date: Päiväys
|
||||
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.
|
||||
in_progress: Arkistoa kootaan...
|
||||
in_progress: Arkistoa kootaan…
|
||||
request: Pyydä arkisto
|
||||
size: Koko
|
||||
blocks: Estot
|
||||
@ -1262,8 +1262,8 @@ fi:
|
||||
featured_tags:
|
||||
add_new: Lisää uusi
|
||||
errors:
|
||||
limit: Olet nostanut esille jo enimmäismäärän aihetunnisteita
|
||||
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."
|
||||
limit: Suosittelet jo aihetunnisteiden enimmäismäärää
|
||||
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:
|
||||
contexts:
|
||||
account: Profiilit
|
||||
@ -1359,7 +1359,7 @@ fi:
|
||||
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.
|
||||
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
|
||||
states:
|
||||
finished: Valmis
|
||||
@ -1386,7 +1386,7 @@ fi:
|
||||
domain_blocking: Verkkotunnusten estoluettelo
|
||||
following: Seurattujen luettelo
|
||||
lists: Listat
|
||||
muting: Mykistettyjen luettelo
|
||||
muting: Mykistysluettelo
|
||||
upload: Lähetä
|
||||
invites:
|
||||
delete: Poista käytöstä
|
||||
@ -1480,7 +1480,7 @@ fi:
|
||||
title: Moderointi
|
||||
move_handler:
|
||||
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ä:'
|
||||
navigation:
|
||||
toggle_menu: Avaa/sulje valikko
|
||||
@ -1569,7 +1569,7 @@ fi:
|
||||
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?
|
||||
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
|
||||
privacy_policy:
|
||||
title: Tietosuojakäytäntö
|
||||
@ -1675,16 +1675,16 @@ fi:
|
||||
development: Kehitys
|
||||
edit_profile: Muokkaa profiilia
|
||||
export: Vie tietoja
|
||||
featured_tags: Esille nostetut aihetunnisteet
|
||||
featured_tags: Suositellut aihetunnisteet
|
||||
import: Tuo tietoja
|
||||
import_and_export: Tuonti ja vienti
|
||||
migrate: Tilin muutto toisaalle
|
||||
notifications: Sähköposti-ilmoitukset
|
||||
preferences: Ominaisuudet
|
||||
preferences: Asetukset
|
||||
profile: Julkinen profiili
|
||||
relationships: Seuratut ja seuraajat
|
||||
severed_relationships: Katkenneet seurantasuhteet
|
||||
statuses_cleanup: Autom. julkaisujen poisto
|
||||
severed_relationships: Katkenneet suhteet
|
||||
statuses_cleanup: Julkaisujen automaattipoisto
|
||||
strikes: Moderointivaroitukset
|
||||
two_factor_authentication: Kaksivaiheinen todennus
|
||||
webauthn_authentication: Suojausavaimet
|
||||
@ -1729,8 +1729,8 @@ fi:
|
||||
reblog: Tehostusta ei voi kiinnittää
|
||||
poll:
|
||||
total_people:
|
||||
one: "%{count} henkilö"
|
||||
other: "%{count} henkilöä"
|
||||
one: "%{count} käyttäjä"
|
||||
other: "%{count} käyttäjää"
|
||||
total_votes:
|
||||
one: "%{count} ääni"
|
||||
other: "%{count} ääntä"
|
||||
@ -1750,7 +1750,7 @@ fi:
|
||||
enabled: Poista vanhat julkaisut automaattisesti
|
||||
enabled_hint: Poistaa julkaisusi automaattisesti, kun ne saavuttavat valitun ikäkynnyksen, ellei jokin alla olevista poikkeuksista tule kyseeseen
|
||||
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_reblogs: Ohita tehostukset
|
||||
interaction_exceptions: Vuorovaikutuksiin perustuvat poikkeukset
|
||||
@ -1857,7 +1857,7 @@ fi:
|
||||
explanation:
|
||||
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.
|
||||
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.
|
||||
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ä.
|
||||
@ -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_title: Moderointi juuri kuten sen pitäisi olla
|
||||
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
|
||||
follows_subtitle: Seuraa tunnettuja tilejä
|
||||
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:
|
||||
one: "%{people} henkilö viimeisenä 2 päivänä"
|
||||
other: "%{people} henkilöä viimeisenä 2 päivänä"
|
||||
one: "%{people} käyttäjä 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_title: Suositut aihetunnisteet
|
||||
hashtags_view_more: Näytä lisää suosittuja aihetunnisteita
|
||||
@ -1921,9 +1921,9 @@ fi:
|
||||
subject: Tervetuloa Mastodoniin
|
||||
title: Tervetuloa mukaan, %{name}!
|
||||
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
|
||||
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}
|
||||
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ä.
|
||||
|
@ -882,6 +882,9 @@ ia:
|
||||
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>"
|
||||
tags:
|
||||
moderation:
|
||||
pending_review: Attende revision
|
||||
title: Stato
|
||||
name: Nomine
|
||||
review: Revide le stato
|
||||
search: Cercar
|
||||
|
@ -211,6 +211,7 @@ be:
|
||||
setting_default_privacy: Прыватнасць допісаў
|
||||
setting_default_sensitive: Заўсёды пазначаць кантэнт як далікатны
|
||||
setting_delete_modal: Паказваць акно пацвярджэння перад выдаленнем допісу
|
||||
setting_disable_hover_cards: Адключыць перадпрагляд профілю пры навядзенні
|
||||
setting_disable_swiping: Адключыць прагортванні
|
||||
setting_display_media: Адлюстраванне медыя
|
||||
setting_display_media_default: Перадвызначана
|
||||
@ -242,11 +243,13 @@ be:
|
||||
warn: Схаваць з папярэджаннем
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Апублікаваць зводную статыстыку аб актыўнасці карыстальнікаў API
|
||||
app_icon: Значок праграмы
|
||||
backups_retention_period: Працягласць захавання архіву карыстальніка
|
||||
bootstrap_timeline_accounts: Заўсёды раіць гэтыя ўліковыя запісы новым карыстальнікам
|
||||
closed_registrations_message: Уласнае паведамленне, калі рэгістрацыя немагчымая
|
||||
content_cache_retention_period: Перыяд захоўвання выдаленага змесціва
|
||||
custom_css: CSS карыстальніка
|
||||
favicon: Значок сайта
|
||||
mascot: Уласны маскот(спадчына)
|
||||
media_cache_retention_period: Працягласць захавання кэшу для медыя
|
||||
peers_api_enabled: Апублікаваць спіс знойдзеных сервераў у API
|
||||
@ -311,6 +314,7 @@ be:
|
||||
listable: Дазволіць паказ хэштэгу ў пошуку і ў каталозе профіляў
|
||||
name: Хэштэг
|
||||
trendable: Дазволіць паказ гэтага хэштэга ў трэндах
|
||||
usable: Дазволіць допісам выкарыстоўваць гэты хэштэг лакальна
|
||||
user:
|
||||
role: Роля
|
||||
time_zone: Часавы пояс
|
||||
|
@ -242,11 +242,13 @@ cs:
|
||||
warn: Skrýt s varováním
|
||||
form_admin_settings:
|
||||
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ů
|
||||
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
|
||||
content_cache_retention_period: Doba uchovávání vzdáleného obsahu
|
||||
custom_css: Vlastní CSS
|
||||
favicon: Favicon
|
||||
mascot: Vlastní maskot (zastaralé)
|
||||
media_cache_retention_period: Doba uchovávání mezipaměti médií
|
||||
peers_api_enabled: Zveřejnit seznam nalezených serverů v API
|
||||
|
@ -314,6 +314,7 @@ cy:
|
||||
listable: Caniatáu i'r hashnod hwn ymddangos mewn chwiliadau ac awgrymiadau
|
||||
name: Hashnod
|
||||
trendable: Caniatáu i'r hashnod hwn ymddangos o dan bynciau llosg
|
||||
usable: Caniatáu i bostiadau ddefnyddio'r hashnod hwn yn lleol
|
||||
user:
|
||||
role: Rôl
|
||||
time_zone: Cylchfa amser
|
||||
|
@ -314,7 +314,7 @@ es-MX:
|
||||
listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
|
||||
name: Etiqueta
|
||||
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:
|
||||
role: Rol
|
||||
time_zone: Zona horaria
|
||||
|
@ -314,7 +314,7 @@ es:
|
||||
listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
|
||||
name: Etiqueta
|
||||
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:
|
||||
role: Rol
|
||||
time_zone: Zona horaria
|
||||
|
@ -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.
|
||||
display_name: Koko nimesi tai lempinimesi.
|
||||
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.'
|
||||
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.
|
||||
@ -38,7 +38,7 @@ fi:
|
||||
appeal:
|
||||
text: Voit valittaa varoituksesta vain kerran
|
||||
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
|
||||
bot: Ilmaise muille, että tili suorittaa enimmäkseen automaattisia toimia eikä sitä valvota
|
||||
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
|
||||
inbox_url: Kopioi URL-osoite haluamasi välittäjän etusivulta
|
||||
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ä
|
||||
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ä.
|
||||
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_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_show_all: Näytä mediasisältö aina
|
||||
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.
|
||||
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
|
||||
site_contact_email: Miten ihmiset voivat tavoittaa sinut oikeus- tai tukikysymyksissä.
|
||||
site_contact_username: Miten ihmiset voivat tavoittaa sinut Mastodonissa.
|
||||
site_contact_email: Miten sinut voi tavoittaa oikeus- tai tukikysymyksissä.
|
||||
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_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_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
|
||||
theme: Teema, jonka uloskirjautuneet vierailijat ja uudet käyttäjät näkevät.
|
||||
thumbnail: Noin 2:1 kuva näkyy palvelimen tietojen ohessa.
|
||||
@ -121,7 +121,7 @@ fi:
|
||||
hint: Vapaaehtoinen. Anna yksityiskohtaisempia tietoja säännöstä
|
||||
text: Kuvaile sääntöä tai edellytystä palvelimesi käyttäjille. Suosi tiivistä, yksinkertaista ilmaisua
|
||||
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ä.
|
||||
settings:
|
||||
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
|
||||
highlighted: Tämä tekee roolista julkisesti näkyvän
|
||||
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
|
||||
webhook:
|
||||
events: Valitse lähetettävät tapahtumat
|
||||
@ -213,7 +213,7 @@ fi:
|
||||
setting_delete_modal: Kysy vahvistusta ennen julkaisun poistamista
|
||||
setting_disable_hover_cards: Poista käytöstä profiilin esikatselu osoitettaessa
|
||||
setting_disable_swiping: Poista pyyhkäisyeleet käytöstä
|
||||
setting_display_media: Median näyttäminen
|
||||
setting_display_media: Median näkyminen
|
||||
setting_display_media_default: Oletus
|
||||
setting_display_media_hide_all: Piilota kaikki
|
||||
setting_display_media_show_all: Näytä kaikki
|
||||
@ -224,7 +224,7 @@ fi:
|
||||
setting_theme: Sivuston teema
|
||||
setting_trends: Näytä päivän trendit
|
||||
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
|
||||
severity: Vakavuus
|
||||
sign_in_token_attempt: Turvakoodi
|
||||
@ -294,7 +294,7 @@ fi:
|
||||
follow: Joku seurasi sinua
|
||||
follow_request: Joku pyysi lupaa seurata sinua
|
||||
mention: Joku mainitsi sinut
|
||||
pending_account: Uusi tili tarvitsee tarkistuksen
|
||||
pending_account: Uusi tili tarvitsee tarkastuksen
|
||||
reblog: Joku tehosti julkaisuasi
|
||||
report: Uusi raportti lähetettiin
|
||||
software_updates:
|
||||
|
@ -15,7 +15,7 @@ sk:
|
||||
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
|
||||
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
|
||||
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é
|
||||
|
@ -314,6 +314,7 @@ tr:
|
||||
listable: Bu etiketin aramalarda ve profil dizininde görünmesine izin ver
|
||||
name: Etiket
|
||||
trendable: Bu etiketin gündem altında görünmesine izin ver
|
||||
usable: Gönderilerin yerelde bu etiketi kullanmasına izin ver
|
||||
user:
|
||||
role: Rol
|
||||
time_zone: Zaman dilimi
|
||||
|
@ -77,13 +77,13 @@ uk:
|
||||
warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Кількість локальних опублікованих дописів, активних і нових користувачів у тижневих розрізах
|
||||
app_icon: WEBP, PNG, GIF або JPG. Замінює іконку програми за замовчуванням на мобільних пристроях на власну іконку.
|
||||
app_icon: WEBP, PNG, GIF або JPG. Замінює типову піктограму застосунку на мобільних пристроях на власну.
|
||||
backups_retention_period: Користувачі мають можливість створювати архіви своїх дописів, щоб завантажити їх пізніше. Якщо встановлено додатне значення, ці архіви будуть автоматично видалені з вашого сховища через вказану кількість днів.
|
||||
bootstrap_timeline_accounts: Ці облікові записи будуть закріплені в топі пропозицій для нових користувачів.
|
||||
closed_registrations_message: Показується, коли реєстрація закрита
|
||||
content_cache_retention_period: Усі дописи з інших серверів (включно з коментарями та відповідями) будуть видалені через певну кількість днів, незважаючи на будь-яку локальну взаємодію користувачів з цими дописами. Сюди входять дописи, які локальний користувач позначив як закладки або вибране. Приватні згадки між користувачами з різних інстанцій також будуть втрачені і не підлягатимуть відновленню. Використання цього параметра призначено для екземплярів спеціального призначення і порушує багато очікувань користувачів, якщо його застосовано для загального використання.
|
||||
custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon.
|
||||
favicon: WEBP, PNG, GIF або JPG. Замінює стандартну піктограму Mastodon на власну піктограму.
|
||||
favicon: WEBP, PNG, GIF або JPG. Замінює стандартну піктограму Mastodon на власну.
|
||||
mascot: Змінює ілюстрацію в розширеному вебінтерфейсі.
|
||||
media_cache_retention_period: Медіафайли з дописів віддалених користувачів кешуються на вашому сервері. Якщо встановлено додатне значення, медіа буде видалено через вказану кількість днів. Якщо медіа-дані будуть запитані після видалення, вони будуть завантажені повторно, якщо вихідний вміст все ще доступний. Через обмеження на частоту опитування карток попереднього перегляду посилань на сторонніх сайтах, рекомендується встановити це значення не менше 14 днів, інакше картки попереднього перегляду посилань не будуть оновлюватися на вимогу раніше цього часу.
|
||||
peers_api_enabled: Список доменів імен цього сервера з'явився у федівсесвіті. Сюди не входять дані чи ви пов'язані федерацією з цим сервером, а лише відомості, що вашому серверу відомо про нього. Його використовують служби, які збирають загальну статистику про федерації.
|
||||
@ -243,13 +243,13 @@ uk:
|
||||
warn: Сховати за попередженням
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Публікація агрегованої статистики про активність користувачів
|
||||
app_icon: Значок застосунку
|
||||
app_icon: Піктограма застосунку
|
||||
backups_retention_period: Період утримання архіву користувача
|
||||
bootstrap_timeline_accounts: Завжди рекомендувати новим користувачам ці облікові записи
|
||||
closed_registrations_message: Показуване повідомлення, якщо реєстрація недоступна
|
||||
content_cache_retention_period: Період збереження віддаленого вмісту
|
||||
custom_css: Користувацький CSS
|
||||
favicon: Значок сайту
|
||||
favicon: Піктограма сайту
|
||||
mascot: Користувацький символ (застарілий)
|
||||
media_cache_retention_period: Період збереження кешу медіа
|
||||
peers_api_enabled: Опублікувати список знайдених серверів у API
|
||||
|
@ -19,7 +19,7 @@ sk:
|
||||
link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date}
|
||||
nothing_here: Nič tu nie je!
|
||||
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:
|
||||
few: Príspevky
|
||||
many: Príspevkov
|
||||
@ -837,7 +837,7 @@ sk:
|
||||
description:
|
||||
prefix_invited_by_user: "@%{name} ťa pozýva na tento Mastodon server!"
|
||||
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ľúč?
|
||||
forgot_password: Zabudnuté heslo?
|
||||
invalid_reset_password_token: Token na obnovu hesla vypršal. Prosím vypítaj si nový.
|
||||
@ -1129,7 +1129,7 @@ sk:
|
||||
title: Nový sledovateľ
|
||||
follow_request:
|
||||
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"
|
||||
title: Nová žiadosť o následovanie
|
||||
mention:
|
||||
@ -1408,7 +1408,7 @@ sk:
|
||||
subject: Vitaj na Mastodone
|
||||
title: Vitaj na palube, %{name}!
|
||||
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
|
||||
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.
|
||||
|
@ -885,7 +885,23 @@ tr:
|
||||
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>"
|
||||
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
|
||||
search: Ara
|
||||
title: Etiketler
|
||||
updated_msg: Etiket ayarları başarıyla güncellendi
|
||||
title: Yönetim
|
||||
trends:
|
||||
|
@ -292,7 +292,7 @@ uk:
|
||||
update_custom_emoji_html: "%{name} оновлює емодзі %{target}"
|
||||
update_domain_block_html: "%{name} оновлює блокування домену для %{target}"
|
||||
update_ip_block_html: "%{name} змінює правило для IP %{target}"
|
||||
update_report_html: "%{name} оновлений звіт %{target}"
|
||||
update_report_html: "%{name} оновлює звіт %{target}"
|
||||
update_status_html: "%{name} оновлює допис %{target}"
|
||||
update_user_role_html: "%{name} змінює роль %{target}"
|
||||
deleted_account: видалений обліковий запис
|
||||
|
@ -16,6 +16,8 @@ module Paperclip
|
||||
private
|
||||
|
||||
def cache_current_values
|
||||
@target.response.require_limit_not_exceeded!(@target.limit)
|
||||
|
||||
@original_filename = truncated_filename
|
||||
@tempfile = copy_to_tempfile(@target)
|
||||
@content_type = ContentTypeDetector.new(@tempfile.path).detect
|
||||
@ -27,16 +29,15 @@ module Paperclip
|
||||
|
||||
source.response.body.each do |chunk|
|
||||
bytes_read += chunk.bytesize
|
||||
raise Mastodon::LengthValidationError, "Body size exceeds limit of #{source.limit}" if bytes_read > source.limit
|
||||
|
||||
destination.write(chunk)
|
||||
chunk.clear
|
||||
|
||||
raise Mastodon::LengthValidationError if bytes_read > source.limit
|
||||
end
|
||||
|
||||
destination.rewind
|
||||
destination
|
||||
rescue Mastodon::LengthValidationError
|
||||
rescue
|
||||
destination.close(true)
|
||||
raise
|
||||
ensure
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@mastodon/mastodon",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"packageManager": "yarn@4.3.1",
|
||||
"packageManager": "yarn@4.4.0",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
@ -90,7 +90,7 @@
|
||||
"path-complete-extname": "^1.0.0",
|
||||
"postcss": "^8.4.24",
|
||||
"postcss-loader": "^4.3.0",
|
||||
"postcss-preset-env": "^9.5.2",
|
||||
"postcss-preset-env": "^10.0.0",
|
||||
"prop-types": "^15.8.1",
|
||||
"punycode": "^2.3.0",
|
||||
"react": "^18.2.0",
|
||||
|
@ -79,6 +79,16 @@ RSpec.describe LinkDetailsExtractor do
|
||||
},
|
||||
}.to_json
|
||||
end
|
||||
let(:html) { <<~HTML }
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<script type="application/ld+json">
|
||||
#{ld_json}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
HTML
|
||||
|
||||
shared_examples 'structured data' do
|
||||
it 'extracts the expected values from structured data' do
|
||||
@ -224,21 +234,27 @@ RSpec.describe LinkDetailsExtractor do
|
||||
},
|
||||
}.to_json
|
||||
end
|
||||
let(:html) { <<~HTML }
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<script type="application/ld+json">
|
||||
#{ld_json}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
HTML
|
||||
|
||||
it 'joins author names' do
|
||||
expect(subject.author_name).to eq 'Author 1, Author 2'
|
||||
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
|
||||
|
||||
context 'when Open Graph protocol data is present' do
|
||||
|
93
spec/lib/paperclip/response_with_limit_adapter_spec.rb
Normal file
93
spec/lib/paperclip/response_with_limit_adapter_spec.rb
Normal 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
|
@ -100,7 +100,7 @@ describe Request do
|
||||
describe "response's body_with_limit method" 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))
|
||||
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
|
||||
|
||||
it 'accepts body less than 1 megabyte by default' do
|
||||
@ -110,17 +110,17 @@ describe Request do
|
||||
|
||||
it 'rejects body by given size' do
|
||||
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
|
||||
|
||||
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' })
|
||||
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
|
||||
|
||||
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 })
|
||||
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
|
||||
|
||||
it 'truncates large monolithic body' do
|
||||
|
@ -160,6 +160,36 @@ RSpec.describe 'Notifications' do
|
||||
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
|
||||
body_as_json[:notification_groups].pluck(:type)
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@mastodon/streaming",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"packageManager": "yarn@4.3.1",
|
||||
"packageManager": "yarn@4.4.0",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user