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

Merge upstream changes up to a1ddaa9ee9
This commit is contained in:
Claire 2024-08-15 09:15:00 +02:00 committed by GitHub
commit d84453796b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
85 changed files with 957 additions and 496 deletions

View file

@ -87,6 +87,7 @@
}, },
{ {
// Update devDependencies every week, with one grouped PR // Update devDependencies every week, with one grouped PR
matchManagers: ['npm'],
matchDepTypes: 'devDependencies', matchDepTypes: 'devDependencies',
matchUpdateTypes: ['patch', 'minor'], matchUpdateTypes: ['patch', 'minor'],
groupName: 'devDependencies (non-major)', groupName: 'devDependencies (non-major)',
@ -95,8 +96,7 @@
{ {
// Group all eslint-related packages with `eslint` in the same PR // Group all eslint-related packages with `eslint` in the same PR
matchManagers: ['npm'], matchManagers: ['npm'],
matchPackageNames: ['eslint'], matchPackageNames: ['eslint', 'eslint-*', '@typescript-eslint/*'],
matchPackagePrefixes: ['eslint-', '@typescript-eslint/'],
matchUpdateTypes: ['patch', 'minor'], matchUpdateTypes: ['patch', 'minor'],
groupName: 'eslint (non-major)', groupName: 'eslint (non-major)',
}, },
@ -112,7 +112,8 @@
}, },
{ {
// Update @types/* packages every week, with one grouped PR // Update @types/* packages every week, with one grouped PR
matchPackagePrefixes: '@types/', matchManagers: ['npm'],
matchPackageNames: '@types/*',
matchUpdateTypes: ['patch', 'minor'], matchUpdateTypes: ['patch', 'minor'],
groupName: 'DefinitelyTyped types (non-major)', groupName: 'DefinitelyTyped types (non-major)',
extends: ['schedule:weekly'], extends: ['schedule:weekly'],
@ -129,23 +130,21 @@
{ {
// Group all RuboCop packages with `rubocop` in the same PR // Group all RuboCop packages with `rubocop` in the same PR
matchManagers: ['bundler'], matchManagers: ['bundler'],
matchPackageNames: ['rubocop'], matchPackageNames: ['rubocop', 'rubocop-*'],
matchPackagePrefixes: ['rubocop-'],
matchUpdateTypes: ['patch', 'minor'], matchUpdateTypes: ['patch', 'minor'],
groupName: 'RuboCop (non-major)', groupName: 'RuboCop (non-major)',
}, },
{ {
// Group all RSpec packages with `rspec` in the same PR // Group all RSpec packages with `rspec` in the same PR
matchManagers: ['bundler'], matchManagers: ['bundler'],
matchPackageNames: ['rspec'], matchPackageNames: ['rspec', 'rspec-*'],
matchPackagePrefixes: ['rspec-'],
matchUpdateTypes: ['patch', 'minor'], matchUpdateTypes: ['patch', 'minor'],
groupName: 'RSpec (non-major)', groupName: 'RSpec (non-major)',
}, },
{ {
// Group all opentelemetry-ruby packages in the same PR // Group all opentelemetry-ruby packages in the same PR
matchManagers: ['bundler'], matchManagers: ['bundler'],
matchPackagePrefixes: ['opentelemetry-'], matchPackageNames: ['opentelemetry-*'],
matchUpdateTypes: ['patch', 'minor'], matchUpdateTypes: ['patch', 'minor'],
groupName: 'opentelemetry-ruby (non-major)', groupName: 'opentelemetry-ruby (non-major)',
}, },

View file

@ -85,7 +85,7 @@ jobs:
tags: ${{ inputs.tags }} tags: ${{ inputs.tags }}
labels: ${{ inputs.labels }} labels: ${{ inputs.labels }}
- uses: docker/build-push-action@v5 - uses: docker/build-push-action@v6
with: with:
context: . context: .
file: ${{ inputs.file_to_build }} file: ${{ inputs.file_to_build }}

View file

@ -26,7 +26,7 @@ jobs:
# Download the translation files from Crowdin # Download the translation files from Crowdin
- name: crowdin action - name: crowdin action
uses: crowdin/github-action@v1 uses: crowdin/github-action@v2
with: with:
config: crowdin-glitch.yml config: crowdin-glitch.yml
upload_sources: false upload_sources: false

View file

@ -26,7 +26,7 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: crowdin action - name: crowdin action
uses: crowdin/github-action@v1 uses: crowdin/github-action@v2
with: with:
config: crowdin-glitch.yml config: crowdin-glitch.yml
upload_sources: true upload_sources: true

View file

@ -10,6 +10,7 @@ permissions:
jobs: jobs:
label-rebase-needed: label-rebase-needed:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.repository == 'mastodon/mastodon'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}

View file

@ -40,7 +40,6 @@ Style/FetchEnvVar:
- 'config/environments/production.rb' - 'config/environments/production.rb'
- 'config/initializers/2_limited_federation_mode.rb' - 'config/initializers/2_limited_federation_mode.rb'
- 'config/initializers/3_omniauth.rb' - 'config/initializers/3_omniauth.rb'
- 'config/initializers/blacklists.rb'
- 'config/initializers/cache_buster.rb' - 'config/initializers/cache_buster.rb'
- 'config/initializers/devise.rb' - 'config/initializers/devise.rb'
- 'config/initializers/paperclip.rb' - 'config/initializers/paperclip.rb'

View file

@ -191,7 +191,7 @@ FROM build AS libvips
# libvips version to compile, change with [--build-arg VIPS_VERSION="8.15.2"] # libvips version to compile, change with [--build-arg VIPS_VERSION="8.15.2"]
# renovate: datasource=github-releases depName=libvips packageName=libvips/libvips # renovate: datasource=github-releases depName=libvips packageName=libvips/libvips
ARG VIPS_VERSION=8.15.2 ARG VIPS_VERSION=8.15.3
# libvips download URL, change with [--build-arg VIPS_URL="https://github.com/libvips/libvips/releases/download"] # libvips download URL, change with [--build-arg VIPS_URL="https://github.com/libvips/libvips/releases/download"]
ARG VIPS_URL=https://github.com/libvips/libvips/releases/download ARG VIPS_URL=https://github.com/libvips/libvips/releases/download

View file

@ -168,7 +168,7 @@ GEM
climate_control (1.2.0) climate_control (1.2.0)
cocoon (1.2.15) cocoon (1.2.15)
color_diff (0.1) color_diff (0.1)
concurrent-ruby (1.3.3) concurrent-ruby (1.3.4)
connection_pool (2.4.1) connection_pool (2.4.1)
cose (1.3.0) cose (1.3.0)
cbor (~> 0.5.9) cbor (~> 0.5.9)
@ -460,8 +460,9 @@ GEM
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
sidekiq (>= 3.5) sidekiq (>= 3.5)
statsd-ruby (~> 1.4, >= 1.4.0) statsd-ruby (~> 1.4, >= 1.4.0)
oj (3.16.4) oj (3.16.5)
bigdecimal (>= 3.0) bigdecimal (>= 3.0)
ostruct (>= 0.2)
omniauth (2.1.2) omniauth (2.1.2)
hashie (>= 3.4.6) hashie (>= 3.4.6)
rack (>= 2.2.3) rack (>= 2.2.3)
@ -582,6 +583,7 @@ GEM
opentelemetry-semantic_conventions (1.10.1) opentelemetry-semantic_conventions (1.10.1)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
ostruct (0.6.0)
ox (2.14.18) ox (2.14.18)
parallel (1.25.1) parallel (1.25.1)
parser (3.3.4.0) parser (3.3.4.0)
@ -601,7 +603,7 @@ GEM
actionmailer (>= 3) actionmailer (>= 3)
net-smtp net-smtp
premailer (~> 1.7, >= 1.7.9) premailer (~> 1.7, >= 1.7.9)
propshaft (0.9.0) propshaft (0.9.1)
actionpack (>= 7.0.0) actionpack (>= 7.0.0)
activesupport (>= 7.0.0) activesupport (>= 7.0.0)
rack rack
@ -904,7 +906,7 @@ GEM
xorcist (1.1.3) xorcist (1.1.3)
xpath (3.2.0) xpath (3.2.0)
nokogiri (~> 1.8) nokogiri (~> 1.8)
zeitwerk (2.6.16) zeitwerk (2.6.17)
PLATFORMS PLATFORMS
ruby ruby

View file

@ -187,4 +187,15 @@ class Auth::SessionsController < Devise::SessionsController
def second_factor_attempts_key(user) def second_factor_attempts_key(user)
"2fa_auth_attempts:#{user.id}:#{Time.now.utc.hour}" "2fa_auth_attempts:#{user.id}:#{Time.now.utc.hour}"
end end
def respond_to_on_destroy
respond_to do |format|
format.json do
render json: {
redirect_to: after_sign_out_path_for(resource_name),
}, status: 200
end
format.all { super }
end
end
end end

View file

@ -47,7 +47,7 @@ function dispatchAssociatedRecords(
fetchedAccounts.push(notification.moderation_warning.target_account); fetchedAccounts.push(notification.moderation_warning.target_account);
} }
if ('status' in notification) { if ('status' in notification && notification.status) {
fetchedStatuses.push(notification.status); fetchedStatuses.push(notification.status);
} }
}); });
@ -119,7 +119,7 @@ export const processNewNotificationForGroups = createAppAsyncThunk(
if ( if (
(notification.type === 'mention' || notification.type === 'update') && (notification.type === 'mention' || notification.type === 'update') &&
notification.status.filtered notification.status?.filtered
) { ) {
const filters = notification.status.filtered.filter((result) => const filters = notification.status.filtered.filter((result) =>
result.filter.context.includes('notifications'), result.filter.context.includes('notifications'),

View file

@ -60,12 +60,12 @@ export interface BaseNotificationGroupJSON {
interface NotificationGroupWithStatusJSON extends BaseNotificationGroupJSON { interface NotificationGroupWithStatusJSON extends BaseNotificationGroupJSON {
type: NotificationWithStatusType; type: NotificationWithStatusType;
status_id: string; status_id: string | null;
} }
interface NotificationWithStatusJSON extends BaseNotificationJSON { interface NotificationWithStatusJSON extends BaseNotificationJSON {
type: NotificationWithStatusType; type: NotificationWithStatusType;
status: ApiStatusJSON; status: ApiStatusJSON | null;
} }
interface ReportNotificationGroupJSON extends BaseNotificationGroupJSON { interface ReportNotificationGroupJSON extends BaseNotificationGroupJSON {

View file

@ -1,12 +1,15 @@
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
interface Props { interface Props {
resource: JSX.Element; resource: JSX.Element;
url: string; url: string;
className?: string;
} }
export const TimelineHint: React.FC<Props> = ({ resource, url }) => ( export const TimelineHint: React.FC<Props> = ({ className, resource, url }) => (
<div className='timeline-hint'> <div className={classNames('timeline-hint', className)}>
<strong> <strong>
<FormattedMessage <FormattedMessage
id='timeline_hint.remote_resource_not_displayed' id='timeline_hint.remote_resource_not_displayed'

View file

@ -47,14 +47,18 @@ class ColumnSettings extends PureComponent {
return ( return (
<div className='column-settings'> <div className='column-settings'>
{alertsEnabled && browserSupport && browserPermission === 'denied' && (
<span className='warning-hint'><FormattedMessage id='notifications.permission_denied' defaultMessage='Desktop notifications are unavailable due to previously denied browser permissions request' /></span>
)}
<section> <section>
<ClearColumnButton onClick={onClear} /> <ClearColumnButton onClick={onClear} />
</section> </section>
{alertsEnabled && browserSupport && browserPermission === 'denied' && (
<section>
<span className='warning-hint'>
<FormattedMessage id='notifications.permission_denied' defaultMessage='Desktop notifications are unavailable due to previously denied browser permissions request' />
</span>
</section>
)}
{alertsEnabled && browserSupport && browserPermission === 'default' && ( {alertsEnabled && browserSupport && browserPermission === 'default' && (
<section> <section>
<span className='warning-hint'> <span className='warning-hint'>

View file

@ -37,7 +37,11 @@ export const NotificationMention: React.FC<{
unread: boolean; unread: boolean;
}> = ({ notification, unread }) => { }> = ({ notification, unread }) => {
const [isDirect, isReply] = useAppSelector((state) => { const [isDirect, isReply] = useAppSelector((state) => {
const status = state.statuses.get(notification.statusId) as Status; const status = state.statuses.get(notification.statusId) as
| Status
| undefined;
if (!status) return [false, false] as const;
return [ return [
status.get('visibility') === 'direct', status.get('visibility') === 'direct',

View file

@ -26,7 +26,7 @@ export const NotificationWithStatus: React.FC<{
icon: IconProp; icon: IconProp;
iconId: string; iconId: string;
accountIds: string[]; accountIds: string[];
statusId: string; statusId: string | undefined;
count: number; count: number;
labelRenderer: LabelRenderer; labelRenderer: LabelRenderer;
unread: boolean; unread: boolean;
@ -80,6 +80,8 @@ export const NotificationWithStatus: React.FC<{
[dispatch, statusId], [dispatch, statusId],
); );
if (!statusId) return null;
return ( return (
<HotKeys handlers={handlers}> <HotKeys handlers={handlers}>
<div <div

View file

@ -655,7 +655,7 @@ class Status extends ImmutablePureComponent {
const isIndexable = !status.getIn(['account', 'noindex']); const isIndexable = !status.getIn(['account', 'noindex']);
if (!isLocal) { if (!isLocal) {
remoteHint = <TimelineHint url={status.get('url')} resource={<FormattedMessage id='timeline_hint.resources.replies' defaultMessage='Some replies' />} />; remoteHint = <TimelineHint className={classNames(!!descendants && 'timeline-hint--with-descendants')} url={status.get('url')} resource={<FormattedMessage id='timeline_hint.resources.replies' defaultMessage='Some replies' />} />;
} }
const handlers = { const handlers = {

View file

@ -25,7 +25,7 @@ export const ConfirmLogOutModal: React.FC<BaseConfirmationModalProps> = ({
const intl = useIntl(); const intl = useIntl();
const onConfirm = useCallback(() => { const onConfirm = useCallback(() => {
logOut(); void logOut();
}, []); }, []);
return ( return (

View file

@ -21,7 +21,7 @@ interface BaseNotificationGroup
interface BaseNotificationWithStatus<Type extends NotificationWithStatusType> interface BaseNotificationWithStatus<Type extends NotificationWithStatusType>
extends BaseNotificationGroup { extends BaseNotificationGroup {
type: Type; type: Type;
statusId: string; statusId: string | undefined;
} }
interface BaseNotification<Type extends NotificationType> interface BaseNotification<Type extends NotificationType>
@ -126,7 +126,7 @@ export function createNotificationGroupFromJSON(
case 'update': { case 'update': {
const { status_id: statusId, ...groupWithoutStatus } = group; const { status_id: statusId, ...groupWithoutStatus } = group;
return { return {
statusId, statusId: statusId ?? undefined,
sampleAccountIds, sampleAccountIds,
...groupWithoutStatus, ...groupWithoutStatus,
}; };
@ -183,7 +183,7 @@ export function createNotificationGroupFromNotificationJSON(
case 'mention': case 'mention':
case 'poll': case 'poll':
case 'update': case 'update':
return { ...group, statusId: notification.status.id }; return { ...group, statusId: notification.status?.id };
case 'admin.report': case 'admin.report':
return { ...group, report: createReportFromJSON(notification.report) }; return { ...group, report: createReportFromJSON(notification.report) };
case 'severed_relationships': case 'severed_relationships':

View file

@ -718,7 +718,7 @@ body,
top: 15px; top: 15px;
.avatar { .avatar {
border-radius: 4px; border-radius: var(--avatar-border-radius);
width: 40px; width: 40px;
height: 40px; height: 40px;
} }
@ -769,7 +769,7 @@ body,
top: 15px; top: 15px;
.avatar { .avatar {
border-radius: 4px; border-radius: var(--avatar-border-radius);
width: 40px; width: 40px;
height: 40px; height: 40px;
} }
@ -893,6 +893,7 @@ a.name-tag,
.account { .account {
padding: 0; padding: 0;
border: none;
&__avatar-wrapper { &__avatar-wrapper {
margin-inline-start: 0; margin-inline-start: 0;
@ -1616,7 +1617,7 @@ a.sparkline {
position: absolute; position: absolute;
inset-inline-start: 15px; inset-inline-start: 15px;
top: 15px; top: 15px;
border-radius: 4px; border-radius: var(--avatar-border-radius);
width: 40px; width: 40px;
height: 40px; height: 40px;
} }

View file

@ -1990,6 +1990,7 @@ body > [data-popper-placement] {
.account { .account {
padding: 10px; // glitch: reduced padding padding: 10px; // glitch: reduced padding
border-bottom: 1px solid var(--background-border-color);
.account__display-name { .account__display-name {
flex: 1 1 auto; flex: 1 1 auto;
@ -2178,13 +2179,14 @@ body > [data-popper-placement] {
.account__avatar { .account__avatar {
display: block; display: block;
position: relative; position: relative;
border-radius: var(--avatar-border-radius);
img { img {
display: block; display: block;
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
border-radius: 4px; border-radius: var(--avatar-border-radius);
} }
&-inline { &-inline {
@ -3018,7 +3020,7 @@ $ui-header-logo-wordmark-width: 99px;
overflow: hidden; overflow: hidden;
} }
@media screen and (width >= 631px) { @media screen and (width > $mobile-breakpoint) {
.columns-area { .columns-area {
padding: 0; padding: 0;
} }
@ -4453,6 +4455,10 @@ a.status-card {
} }
} }
.timeline-hint--with-descendants {
border-top: 1px solid var(--background-border-color);
}
.regeneration-indicator { .regeneration-indicator {
text-align: center; text-align: center;
font-size: 16px; font-size: 16px;
@ -4742,10 +4748,19 @@ a.status-card {
opacity: 1; opacity: 1;
z-index: 1; z-index: 1;
position: relative; position: relative;
border-left: 1px solid var(--background-border-color);
border-right: 1px solid var(--background-border-color);
border-bottom: 1px solid var(--background-border-color);
@media screen and (max-width: $no-gap-breakpoint) {
border-left: 0;
border-right: 0;
}
&.collapsed { &.collapsed {
max-height: 0; max-height: 0;
opacity: 0.5; opacity: 0.5;
border-bottom: 0;
} }
&.animating { &.animating {
@ -4772,13 +4787,7 @@ a.status-card {
} }
.column-header__collapsible-inner { .column-header__collapsible-inner {
border: 1px solid var(--background-border-color);
border-top: 0; border-top: 0;
@media screen and (max-width: $no-gap-breakpoint) {
border-left: 0;
border-right: 0;
}
} }
.column-header__setting-btn { .column-header__setting-btn {
@ -6197,7 +6206,7 @@ a.status-card {
user-select: text; user-select: text;
display: flex; display: flex;
@media screen and (width <= 630px) { @media screen and (width <= $mobile-breakpoint) {
margin-top: auto; margin-top: auto;
} }
} }
@ -6556,7 +6565,7 @@ a.status-card {
border-radius: 0 0 16px 16px; border-radius: 0 0 16px 16px;
border-top: 0; border-top: 0;
@media screen and (max-width: $no-gap-breakpoint) { @media screen and (max-width: $mobile-breakpoint) {
border-radius: 0; border-radius: 0;
border-bottom: 0; border-bottom: 0;
padding-bottom: 32px; padding-bottom: 32px;
@ -8522,7 +8531,7 @@ noscript {
.account__avatar { .account__avatar {
background: var(--background-color); background: var(--background-color);
border: 1px solid var(--background-border-color); border: 1px solid var(--background-border-color);
border-radius: 4px; border-radius: var(--avatar-border-radius);
} }
} }
} }
@ -9649,8 +9658,9 @@ noscript {
backdrop-filter: var(--background-filter); backdrop-filter: var(--background-filter);
border: 1px solid var(--modal-border-color); border: 1px solid var(--modal-border-color);
padding: 24px; padding: 24px;
box-sizing: border-box;
@media screen and (max-width: $no-gap-breakpoint) { @media screen and (max-width: $mobile-breakpoint) {
border-radius: 16px 16px 0 0; border-radius: 16px 16px 0 0;
border-bottom: 0; border-bottom: 0;
padding-bottom: 32px; padding-bottom: 32px;

View file

@ -81,7 +81,7 @@
height: 100%; height: 100%;
display: block; display: block;
margin: 0; margin: 0;
border-radius: 4px; border-radius: var(--avatar-border-radius);
} }
} }

View file

@ -313,7 +313,7 @@ code {
margin-bottom: 10px; margin-bottom: 10px;
max-width: 100%; max-width: 100%;
height: auto; height: auto;
border-radius: 4px; border-radius: var(--avatar-border-radius);
background: url('images/void.png'); background: url('images/void.png');
&[src$='missing.png'] { &[src$='missing.png'] {

View file

@ -54,40 +54,21 @@ table {
} }
html { html {
scrollbar-color: lighten($ui-base-color, 4%) rgba($base-overlay-background, 0.1); scrollbar-color: var(--background-border-color);
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 12px; width: 4px;
height: 12px; height: 4px;
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
background: lighten($ui-base-color, 4%); background-color: $ui-highlight-color;
border: 0px none $base-border-color; opacity: .25;
border-radius: 50px;
}
::-webkit-scrollbar-thumb:hover {
background: lighten($ui-base-color, 6%);
}
::-webkit-scrollbar-thumb:active {
background: lighten($ui-base-color, 4%);
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
border: 0px none $base-border-color; background-color: var(--background-border-color);
border-radius: 0;
background: rgba($base-overlay-background, 0.1);
}
::-webkit-scrollbar-track:hover {
background: $ui-base-color;
}
::-webkit-scrollbar-track:active {
background: $ui-base-color;
} }
::-webkit-scrollbar-corner { ::-webkit-scrollbar-corner {

View file

@ -88,6 +88,7 @@ $media-modal-media-max-width: 100%;
$media-modal-media-max-height: 80%; $media-modal-media-max-height: 80%;
$no-gap-breakpoint: 1175px; $no-gap-breakpoint: 1175px;
$mobile-breakpoint: 630px;
$font-sans-serif: 'mastodon-font-sans-serif' !default; $font-sans-serif: 'mastodon-font-sans-serif' !default;
$font-display: 'mastodon-font-display' !default; $font-display: 'mastodon-font-display' !default;
@ -114,4 +115,5 @@ $dismiss-overlay-width: 4rem;
--surface-background-color: #{darken($ui-base-color, 4%)}; --surface-background-color: #{darken($ui-base-color, 4%)};
--surface-variant-background-color: #{$ui-base-color}; --surface-variant-background-color: #{$ui-base-color};
--surface-variant-active-background-color: #{lighten($ui-base-color, 4%)}; --surface-variant-active-background-color: #{lighten($ui-base-color, 4%)};
--avatar-border-radius: 8px;
} }

View file

@ -1,38 +1,20 @@
import { signOutLink } from 'flavours/glitch/utils/backend_links'; import api from 'flavours/glitch/api';
export const logOut = () => { export async function logOut() {
const form = document.createElement('form'); try {
const response = await api(false).delete<{ redirect_to?: string }>(
const methodInput = document.createElement('input'); '/auth/sign_out',
methodInput.setAttribute('name', '_method'); { headers: { Accept: 'application/json' }, withCredentials: true },
methodInput.setAttribute('value', 'delete');
methodInput.setAttribute('type', 'hidden');
form.appendChild(methodInput);
const csrfToken = document.querySelector<HTMLMetaElement>(
'meta[name=csrf-token]',
); );
const csrfParam = document.querySelector<HTMLMetaElement>( if (response.status === 200 && response.data.redirect_to)
'meta[name=csrf-param]', window.location.href = response.data.redirect_to;
else
console.error(
'Failed to log out, got an unexpected non-redirect response from the server',
response,
); );
} catch (error) {
if (csrfParam && csrfToken) { console.error('Failed to log out, response was an error', error);
const csrfInput = document.createElement('input');
csrfInput.setAttribute('name', csrfParam.content);
csrfInput.setAttribute('value', csrfToken.content);
csrfInput.setAttribute('type', 'hidden');
form.appendChild(csrfInput);
} }
}
const submitButton = document.createElement('input');
submitButton.setAttribute('type', 'submit');
form.appendChild(submitButton);
form.method = 'post';
form.action = signOutLink;
form.style.display = 'none';
document.body.appendChild(form);
submitButton.click();
};

View file

@ -47,7 +47,7 @@ function dispatchAssociatedRecords(
fetchedAccounts.push(notification.moderation_warning.target_account); fetchedAccounts.push(notification.moderation_warning.target_account);
} }
if ('status' in notification) { if ('status' in notification && notification.status) {
fetchedStatuses.push(notification.status); fetchedStatuses.push(notification.status);
} }
}); });
@ -119,7 +119,7 @@ export const processNewNotificationForGroups = createAppAsyncThunk(
if ( if (
(notification.type === 'mention' || notification.type === 'update') && (notification.type === 'mention' || notification.type === 'update') &&
notification.status.filtered notification.status?.filtered
) { ) {
const filters = notification.status.filtered.filter((result) => const filters = notification.status.filtered.filter((result) =>
result.filter.context.includes('notifications'), result.filter.context.includes('notifications'),

View file

@ -60,12 +60,12 @@ export interface BaseNotificationGroupJSON {
interface NotificationGroupWithStatusJSON extends BaseNotificationGroupJSON { interface NotificationGroupWithStatusJSON extends BaseNotificationGroupJSON {
type: NotificationWithStatusType; type: NotificationWithStatusType;
status_id: string; status_id: string | null;
} }
interface NotificationWithStatusJSON extends BaseNotificationJSON { interface NotificationWithStatusJSON extends BaseNotificationJSON {
type: NotificationWithStatusType; type: NotificationWithStatusType;
status: ApiStatusJSON; status: ApiStatusJSON | null;
} }
interface ReportNotificationGroupJSON extends BaseNotificationGroupJSON { interface ReportNotificationGroupJSON extends BaseNotificationGroupJSON {

View file

@ -1,12 +1,15 @@
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
interface Props { interface Props {
resource: JSX.Element; resource: JSX.Element;
url: string; url: string;
className?: string;
} }
export const TimelineHint: React.FC<Props> = ({ resource, url }) => ( export const TimelineHint: React.FC<Props> = ({ className, resource, url }) => (
<div className='timeline-hint'> <div className={classNames('timeline-hint', className)}>
<strong> <strong>
<FormattedMessage <FormattedMessage
id='timeline_hint.remote_resource_not_displayed' id='timeline_hint.remote_resource_not_displayed'

View file

@ -45,14 +45,18 @@ class ColumnSettings extends PureComponent {
return ( return (
<div className='column-settings'> <div className='column-settings'>
{alertsEnabled && browserSupport && browserPermission === 'denied' && (
<span className='warning-hint'><FormattedMessage id='notifications.permission_denied' defaultMessage='Desktop notifications are unavailable due to previously denied browser permissions request' /></span>
)}
<section> <section>
<ClearColumnButton onClick={onClear} /> <ClearColumnButton onClick={onClear} />
</section> </section>
{alertsEnabled && browserSupport && browserPermission === 'denied' && (
<section>
<span className='warning-hint'>
<FormattedMessage id='notifications.permission_denied' defaultMessage='Desktop notifications are unavailable due to previously denied browser permissions request' />
</span>
</section>
)}
{alertsEnabled && browserSupport && browserPermission === 'default' && ( {alertsEnabled && browserSupport && browserPermission === 'default' && (
<section> <section>
<span className='warning-hint'> <span className='warning-hint'>

View file

@ -37,7 +37,11 @@ export const NotificationMention: React.FC<{
unread: boolean; unread: boolean;
}> = ({ notification, unread }) => { }> = ({ notification, unread }) => {
const [isDirect, isReply] = useAppSelector((state) => { const [isDirect, isReply] = useAppSelector((state) => {
const status = state.statuses.get(notification.statusId) as Status; const status = state.statuses.get(notification.statusId) as
| Status
| undefined;
if (!status) return [false, false] as const;
return [ return [
status.get('visibility') === 'direct', status.get('visibility') === 'direct',

View file

@ -23,7 +23,7 @@ export const NotificationWithStatus: React.FC<{
icon: IconProp; icon: IconProp;
iconId: string; iconId: string;
accountIds: string[]; accountIds: string[];
statusId: string; statusId: string | undefined;
count: number; count: number;
labelRenderer: LabelRenderer; labelRenderer: LabelRenderer;
unread: boolean; unread: boolean;
@ -76,6 +76,8 @@ export const NotificationWithStatus: React.FC<{
[dispatch, statusId], [dispatch, statusId],
); );
if (!statusId) return null;
return ( return (
<HotKeys handlers={handlers}> <HotKeys handlers={handlers}>
<div <div

View file

@ -629,7 +629,7 @@ class Status extends ImmutablePureComponent {
const isIndexable = !status.getIn(['account', 'noindex']); const isIndexable = !status.getIn(['account', 'noindex']);
if (!isLocal) { if (!isLocal) {
remoteHint = <TimelineHint url={status.get('url')} resource={<FormattedMessage id='timeline_hint.resources.replies' defaultMessage='Some replies' />} />; remoteHint = <TimelineHint className={classNames(!!descendants && 'timeline-hint--with-descendants')} url={status.get('url')} resource={<FormattedMessage id='timeline_hint.resources.replies' defaultMessage='Some replies' />} />;
} }
const handlers = { const handlers = {

View file

@ -25,7 +25,7 @@ export const ConfirmLogOutModal: React.FC<BaseConfirmationModalProps> = ({
const intl = useIntl(); const intl = useIntl();
const onConfirm = useCallback(() => { const onConfirm = useCallback(() => {
logOut(); void logOut();
}, []); }, []);
return ( return (

View file

@ -482,6 +482,8 @@
"notification.favourite": "{name} направи любима публикацията ви", "notification.favourite": "{name} направи любима публикацията ви",
"notification.follow": "{name} ви последва", "notification.follow": "{name} ви последва",
"notification.follow_request": "{name} поиска да ви последва", "notification.follow_request": "{name} поиска да ви последва",
"notification.label.mention": "Споменаване",
"notification.mention": "Споменаване",
"notification.moderation-warning.learn_more": "Научете повече", "notification.moderation-warning.learn_more": "Научете повече",
"notification.moderation_warning": "Получихте предупреждение за модериране", "notification.moderation_warning": "Получихте предупреждение за модериране",
"notification.moderation_warning.action_delete_statuses": "Някои от публикациите ви са премахнати.", "notification.moderation_warning.action_delete_statuses": "Някои от публикациите ви са премахнати.",
@ -503,12 +505,15 @@
"notification.update": "{name} промени публикация", "notification.update": "{name} промени публикация",
"notification_requests.accept": "Приемам", "notification_requests.accept": "Приемам",
"notification_requests.dismiss": "Отхвърлям", "notification_requests.dismiss": "Отхвърлям",
"notification_requests.enter_selection_mode": "Изберете",
"notification_requests.exit_selection_mode": "Отказ",
"notification_requests.explainer_for_limited_account": "Известията от този акаунт са прецедени, защото акаунтът е ограничен от модератор.", "notification_requests.explainer_for_limited_account": "Известията от този акаунт са прецедени, защото акаунтът е ограничен от модератор.",
"notification_requests.explainer_for_limited_remote_account": "Известията от този акаунт са прецедени, защото акаунтът или сървърът му е ограничен от модератор.", "notification_requests.explainer_for_limited_remote_account": "Известията от този акаунт са прецедени, защото акаунтът или сървърът му е ограничен от модератор.",
"notification_requests.maximize": "Максимизиране", "notification_requests.maximize": "Максимизиране",
"notification_requests.minimize_banner": "Минимизиране на банера за филтрирани известия", "notification_requests.minimize_banner": "Минимизиране на банера за филтрирани известия",
"notification_requests.notifications_from": "Известия от {name}", "notification_requests.notifications_from": "Известия от {name}",
"notification_requests.title": "Филтрирани известия", "notification_requests.title": "Филтрирани известия",
"notification_requests.view": "Преглед на известията",
"notifications.clear": "Изчистване на известията", "notifications.clear": "Изчистване на известията",
"notifications.clear_confirmation": "Наистина ли искате да изчистите завинаги всичките си известия?", "notifications.clear_confirmation": "Наистина ли искате да изчистите завинаги всичките си известия?",
"notifications.clear_title": "Изчиствате ли известията?", "notifications.clear_title": "Изчиствате ли известията?",
@ -545,6 +550,9 @@
"notifications.permission_denied": "Известията на работния плот не са налични поради предварително отказана заявка за разрешение в браузъра", "notifications.permission_denied": "Известията на работния плот не са налични поради предварително отказана заявка за разрешение в браузъра",
"notifications.permission_denied_alert": "Известията на работния плот не могат да се включат, тъй като разрешението на браузъра е отказвано преди", "notifications.permission_denied_alert": "Известията на работния плот не могат да се включат, тъй като разрешението на браузъра е отказвано преди",
"notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.", "notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.",
"notifications.policy.accept": "Приемам",
"notifications.policy.accept_hint": "Показване в известия",
"notifications.policy.filter": "Филтър",
"notifications.policy.filter_limited_accounts_hint": "Ограничено от модераторите на сървъра", "notifications.policy.filter_limited_accounts_hint": "Ограничено от модераторите на сървъра",
"notifications.policy.filter_limited_accounts_title": "Модерирани акаунти", "notifications.policy.filter_limited_accounts_title": "Модерирани акаунти",
"notifications.policy.filter_new_accounts.hint": "Сътворено през {days, plural, one {последния ден} other {последните # дена}}", "notifications.policy.filter_new_accounts.hint": "Сътворено през {days, plural, one {последния ден} other {последните # дена}}",

View file

@ -11,6 +11,7 @@
"about.not_available": "Nid yw'r wybodaeth hon ar gael ar y gweinydd hwn.", "about.not_available": "Nid yw'r wybodaeth hon ar gael ar y gweinydd hwn.",
"about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}", "about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}",
"about.rules": "Rheolau'r gweinydd", "about.rules": "Rheolau'r gweinydd",
"account.account_note_header": "Nodyn personol",
"account.add_or_remove_from_list": "Ychwanegu neu Ddileu o'r rhestrau", "account.add_or_remove_from_list": "Ychwanegu neu Ddileu o'r rhestrau",
"account.badges.bot": "Bot", "account.badges.bot": "Bot",
"account.badges.group": "Grŵp", "account.badges.group": "Grŵp",
@ -299,6 +300,7 @@
"filter_modal.select_filter.subtitle": "Defnyddiwch gategori sy'n bodoli eisoes neu crëu un newydd", "filter_modal.select_filter.subtitle": "Defnyddiwch gategori sy'n bodoli eisoes neu crëu un newydd",
"filter_modal.select_filter.title": "Hidlo'r postiad hwn", "filter_modal.select_filter.title": "Hidlo'r postiad hwn",
"filter_modal.title.status": "Hidlo postiad", "filter_modal.title.status": "Hidlo postiad",
"filtered_notifications_banner.pending_requests": "Gan {count, plural, =0 {no one} one {un person} two {# berson} few {# pherson} other {# person}} efallai eich bod yn eu hadnabod",
"filtered_notifications_banner.title": "Hysbysiadau wedi'u hidlo", "filtered_notifications_banner.title": "Hysbysiadau wedi'u hidlo",
"firehose.all": "Popeth", "firehose.all": "Popeth",
"firehose.local": "Gweinydd hwn", "firehose.local": "Gweinydd hwn",
@ -354,6 +356,17 @@
"home.pending_critical_update.link": "Gweld y diweddariadau", "home.pending_critical_update.link": "Gweld y diweddariadau",
"home.pending_critical_update.title": "Mae diweddariad diogelwch hanfodol ar gael!", "home.pending_critical_update.title": "Mae diweddariad diogelwch hanfodol ar gael!",
"home.show_announcements": "Dangos cyhoeddiadau", "home.show_announcements": "Dangos cyhoeddiadau",
"ignore_notifications_modal.disclaimer": "Ni all Mastodon hysbysu defnyddwyr eich bod wedi anwybyddu eu hysbysiadau. Ni fydd anwybyddu hysbysiadau yn atal y negeseuon eu hunain rhag cael eu hanfon.",
"ignore_notifications_modal.filter_instead": "Hidlo yn lle hynny",
"ignore_notifications_modal.filter_to_act_users": "Byddwch yn dal i allu derbyn, gwrthod neu adrodd ar ddefnyddwyr",
"ignore_notifications_modal.filter_to_avoid_confusion": "Mae hidlo yn helpu i osgoi dryswch posibl",
"ignore_notifications_modal.filter_to_review_separately": "Gallwch adolygu hysbysiadau wedi'u hidlo ar wahân",
"ignore_notifications_modal.ignore": "Anwybyddu hysbysiadau",
"ignore_notifications_modal.limited_accounts_title": "Anwybyddu hysbysiadau o gyfrifon wedi'u cymedroli?",
"ignore_notifications_modal.new_accounts_title": "Anwybyddu hysbysiadau o gyfrifon newydd?",
"ignore_notifications_modal.not_followers_title": "Anwybyddu hysbysiadau gan bobl nad ydynt yn eich dilyn?",
"ignore_notifications_modal.not_following_title": "Anwybyddu hysbysiadau gan bobl nad ydych yn eu dilyn?",
"ignore_notifications_modal.private_mentions_title": "Anwybyddu hysbysiadau o Grybwylliadau Preifat digymell?",
"interaction_modal.description.favourite": "Gyda chyfrif ar Mastodon, gallwch chi hoffi'r postiad hwn er mwyn roi gwybod i'r awdur eich bod chi'n ei werthfawrogi ac yn ei gadw ar gyfer nes ymlaen.", "interaction_modal.description.favourite": "Gyda chyfrif ar Mastodon, gallwch chi hoffi'r postiad hwn er mwyn roi gwybod i'r awdur eich bod chi'n ei werthfawrogi ac yn ei gadw ar gyfer nes ymlaen.",
"interaction_modal.description.follow": "Gyda chyfrif ar Mastodon, gallwch ddilyn {name} i dderbyn eu postiadau yn eich llif cartref.", "interaction_modal.description.follow": "Gyda chyfrif ar Mastodon, gallwch ddilyn {name} i dderbyn eu postiadau yn eich llif cartref.",
"interaction_modal.description.reblog": "Gyda chyfrif ar Mastodon, gallwch hybu'r postiad hwn i'w rannu â'ch dilynwyr.", "interaction_modal.description.reblog": "Gyda chyfrif ar Mastodon, gallwch hybu'r postiad hwn i'w rannu â'ch dilynwyr.",
@ -472,6 +485,7 @@
"navigation_bar.security": "Diogelwch", "navigation_bar.security": "Diogelwch",
"not_signed_in_indicator.not_signed_in": "Rhaid i chi fewngofnodi i weld yr adnodd hwn.", "not_signed_in_indicator.not_signed_in": "Rhaid i chi fewngofnodi i weld yr adnodd hwn.",
"notification.admin.report": "Adroddwyd ar {name} {target}", "notification.admin.report": "Adroddwyd ar {name} {target}",
"notification.admin.report_account": "{name} reported {count, plural, one {un post} other {# postsiadau}} from {target} for {category}",
"notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un post} two {# bost} few {# phost} other {# post}} gan {target}", "notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un post} two {# bost} few {# phost} other {# post}} gan {target}",
"notification.admin.report_statuses": "Adroddodd {name} {target} ar gyfer {category}", "notification.admin.report_statuses": "Adroddodd {name} {target} ar gyfer {category}",
"notification.admin.report_statuses_other": "Adroddodd {name} {target}", "notification.admin.report_statuses_other": "Adroddodd {name} {target}",
@ -479,6 +493,11 @@
"notification.favourite": "Hoffodd {name} eich postiad", "notification.favourite": "Hoffodd {name} eich postiad",
"notification.follow": "Dilynodd {name} chi", "notification.follow": "Dilynodd {name} chi",
"notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn", "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn",
"notification.label.mention": "Crybwyll",
"notification.label.private_mention": "Crybwyll preifat",
"notification.label.private_reply": "Ateb preifat",
"notification.label.reply": "Ateb",
"notification.mention": "Crybwyll",
"notification.moderation-warning.learn_more": "Dysgu mwy", "notification.moderation-warning.learn_more": "Dysgu mwy",
"notification.moderation_warning": "Rydych wedi derbyn rhybudd gan gymedrolwr", "notification.moderation_warning": "Rydych wedi derbyn rhybudd gan gymedrolwr",
"notification.moderation_warning.action_delete_statuses": "Mae rhai o'ch postiadau wedi'u dileu.", "notification.moderation_warning.action_delete_statuses": "Mae rhai o'ch postiadau wedi'u dileu.",
@ -499,10 +518,26 @@
"notification.status": "{name} newydd ei bostio", "notification.status": "{name} newydd ei bostio",
"notification.update": "Golygodd {name} bostiad", "notification.update": "Golygodd {name} bostiad",
"notification_requests.accept": "Derbyn", "notification_requests.accept": "Derbyn",
"notification_requests.accept_all": "Derbyn y cyfan",
"notification_requests.accept_multiple": "{count, plural, one {Derbyn # cais} other {Derbyn # cais}}",
"notification_requests.confirm_accept_all.button": "Derbyn y cyfan",
"notification_requests.confirm_accept_all.message": "Rydych ar fin derbyn {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. A ydych yn siŵr eich bod am fwrw ymlaen?",
"notification_requests.confirm_accept_all.title": "Derbyn ceisiadau hysbysu?",
"notification_requests.confirm_dismiss_all.button": "Diystyru pob un",
"notification_requests.confirm_dismiss_all.message": "Rydych ar fin diystyru {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. Ni fyddwch yn gallu cyrchu {count, plural, one {it} other {them}} yn hawdd eto. A ydych yn siŵr eich bod am fwrw ymlaen?",
"notification_requests.confirm_dismiss_all.title": "Diystyru ceisiadau hysbysu?",
"notification_requests.dismiss": "Cau", "notification_requests.dismiss": "Cau",
"notification_requests.dismiss_all": "Diystyru pob un",
"notification_requests.dismiss_multiple": "{count, plural, one {Diystyru # cais} other {Diystyru # cais}}",
"notification_requests.enter_selection_mode": "Dewis",
"notification_requests.exit_selection_mode": "Canslo",
"notification_requests.explainer_for_limited_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif wedi'i gyfyngu gan gymedrolwr.",
"notification_requests.explainer_for_limited_remote_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif neu ei weinydd wedi'i gyfyngu gan gymedrolwr.",
"notification_requests.maximize": "Mwyhau", "notification_requests.maximize": "Mwyhau",
"notification_requests.minimize_banner": "Lleihau baner hysbysiadau wedi'u hidlo",
"notification_requests.notifications_from": "Hysbysiadau gan {name}", "notification_requests.notifications_from": "Hysbysiadau gan {name}",
"notification_requests.title": "Hysbysiadau wedi'u hidlo", "notification_requests.title": "Hysbysiadau wedi'u hidlo",
"notification_requests.view": "Gweld hysbysiadau",
"notifications.clear": "Clirio hysbysiadau", "notifications.clear": "Clirio hysbysiadau",
"notifications.clear_confirmation": "Ydych chi'n siŵr eich bod am glirio'ch holl hysbysiadau am byth?", "notifications.clear_confirmation": "Ydych chi'n siŵr eich bod am glirio'ch holl hysbysiadau am byth?",
"notifications.clear_title": "Clirio hysbysiadau?", "notifications.clear_title": "Clirio hysbysiadau?",
@ -539,6 +574,14 @@
"notifications.permission_denied": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd cais am ganiatâd porwr a wrthodwyd yn flaenorol", "notifications.permission_denied": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd cais am ganiatâd porwr a wrthodwyd yn flaenorol",
"notifications.permission_denied_alert": "Nid oes modd galluogi hysbysiadau bwrdd gwaith, gan fod caniatâd porwr wedi'i wrthod o'r blaen", "notifications.permission_denied_alert": "Nid oes modd galluogi hysbysiadau bwrdd gwaith, gan fod caniatâd porwr wedi'i wrthod o'r blaen",
"notifications.permission_required": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd na roddwyd y caniatâd gofynnol.", "notifications.permission_required": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd na roddwyd y caniatâd gofynnol.",
"notifications.policy.accept": "Derbyn",
"notifications.policy.accept_hint": "Dangos mewn hysbysiadau",
"notifications.policy.drop": "Anwybyddu",
"notifications.policy.drop_hint": "Anfon i'r gwagle, byth i'w gweld eto",
"notifications.policy.filter": "Hidlo",
"notifications.policy.filter_hint": "Anfon i flwch derbyn hysbysiadau wedi'u hidlo",
"notifications.policy.filter_limited_accounts_hint": "Cyfyngedig gan gymedrolwyr gweinydd",
"notifications.policy.filter_limited_accounts_title": "Cyfrifon wedi'u cymedroli",
"notifications.policy.filter_new_accounts.hint": "Crëwyd o fewn {days, lluosog, un {yr un diwrnod} arall {y # diwrnod}} diwethaf", "notifications.policy.filter_new_accounts.hint": "Crëwyd o fewn {days, lluosog, un {yr un diwrnod} arall {y # diwrnod}} diwethaf",
"notifications.policy.filter_new_accounts_title": "Cyfrifon newydd", "notifications.policy.filter_new_accounts_title": "Cyfrifon newydd",
"notifications.policy.filter_not_followers_hint": "Gan gynnwys pobl sydd wedi bod yn eich dilyn am llai {days, plural, un {nag un diwrnod} arall {na # diwrnod}}", "notifications.policy.filter_not_followers_hint": "Gan gynnwys pobl sydd wedi bod yn eich dilyn am llai {days, plural, un {nag un diwrnod} arall {na # diwrnod}}",
@ -547,19 +590,20 @@
"notifications.policy.filter_not_following_title": "Pobl nad ydych yn eu dilyn", "notifications.policy.filter_not_following_title": "Pobl nad ydych yn eu dilyn",
"notifications.policy.filter_private_mentions_hint": "Wedi'i hidlo oni bai ei fod mewn ymateb i'ch crybwylliad eich hun neu os ydych yn dilyn yr anfonwr", "notifications.policy.filter_private_mentions_hint": "Wedi'i hidlo oni bai ei fod mewn ymateb i'ch crybwylliad eich hun neu os ydych yn dilyn yr anfonwr",
"notifications.policy.filter_private_mentions_title": "Crybwylliadau preifat digymell", "notifications.policy.filter_private_mentions_title": "Crybwylliadau preifat digymell",
"notifications.policy.title": "Rheoli hysbysiadau gan…",
"notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith", "notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith",
"notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogwch hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithiadau sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddan nhw wedi'u galluogi.", "notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogwch hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithiadau sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddan nhw wedi'u galluogi.",
"notifications_permission_banner.title": "Peidiwch â cholli dim", "notifications_permission_banner.title": "Peidiwch â cholli dim",
"onboarding.action.back": "Ewch â fi yn ôl", "onboarding.action.back": "Ewch â fi nôl",
"onboarding.actions.back": "Ewch â fi yn ôl", "onboarding.actions.back": "Ewch â fi nôl",
"onboarding.actions.go_to_explore": "Gweld beth yw'r tuedd", "onboarding.actions.go_to_explore": "Gweld beth sy'n trendio",
"onboarding.actions.go_to_home": "Ewch i'ch ffrwd gartref", "onboarding.actions.go_to_home": "Ewch i'ch ffrwd gartref",
"onboarding.compose.template": "Helo, #Mastodon!", "onboarding.compose.template": "Helo, #Mastodon!",
"onboarding.follows.empty": "Yn anffodus, nid oes modd dangos unrhyw ganlyniadau ar hyn o bryd. Gallwch geisio defnyddio chwilio neu bori'r dudalen archwilio i ddod o hyd i bobl i'w dilyn, neu ceisio eto yn nes ymlaen.", "onboarding.follows.empty": "Yn anffodus, nid oes modd dangos unrhyw ganlyniadau ar hyn o bryd. Gallwch geisio defnyddio chwilio neu bori'r dudalen archwilio i ddod o hyd i bobl i'w dilyn, neu ceisio eto yn nes ymlaen.",
"onboarding.follows.lead": "Rydych chi'n curadu eich ffrwd gartref eich hun. Po fwyaf o bobl y byddwch chi'n eu dilyn, y mwyaf egnïol a diddorol fydd hi. Gall y proffiliau hyn fod yn fan cychwyn da - gallwch chi bob amser eu dad-ddilyn yn nes ymlaen:", "onboarding.follows.lead": "Rydych chi'n curadu eich ffrwd gartref eich hun. Po fwyaf o bobl y byddwch chi'n eu dilyn, y mwyaf egnïol a diddorol fydd hi. Gall y proffiliau hyn fod yn fan cychwyn da - gallwch chi bob amser eu dad-ddilyn yn nes ymlaen:",
"onboarding.follows.title": "Yn boblogaidd ar Mastodon", "onboarding.follows.title": "Yn boblogaidd ar Mastodon",
"onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod", "onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod",
"onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a thueddiadau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.", "onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a threndiau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.",
"onboarding.profile.display_name": "Enw dangos", "onboarding.profile.display_name": "Enw dangos",
"onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwyl…", "onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwyl…",
"onboarding.profile.lead": "Gallwch chi bob amser gwblhau hyn yn ddiweddarach yn y gosodiadau, lle mae hyd yn oed mwy o ddewisiadau cyfaddasu ar gael.", "onboarding.profile.lead": "Gallwch chi bob amser gwblhau hyn yn ddiweddarach yn y gosodiadau, lle mae hyd yn oed mwy o ddewisiadau cyfaddasu ar gael.",
@ -787,6 +831,7 @@
"timeline_hint.remote_resource_not_displayed": "Nid yw {resource} o weinyddion eraill yn cael ei ddangos.", "timeline_hint.remote_resource_not_displayed": "Nid yw {resource} o weinyddion eraill yn cael ei ddangos.",
"timeline_hint.resources.followers": "Dilynwyr", "timeline_hint.resources.followers": "Dilynwyr",
"timeline_hint.resources.follows": "Yn dilyn", "timeline_hint.resources.follows": "Yn dilyn",
"timeline_hint.resources.replies": "Rhai atebion",
"timeline_hint.resources.statuses": "Postiadau hŷn", "timeline_hint.resources.statuses": "Postiadau hŷn",
"trends.counter_by_accounts": "{count, plural, zero {neb} one {{counter} person} two {{counter} berson} few {{counter} pherson} other {{counter} o bobl}} yn y {days, plural, one {diwrnod diwethaf} two {ddeuddydd diwethaf} other {{days} diwrnod diwethaf}}", "trends.counter_by_accounts": "{count, plural, zero {neb} one {{counter} person} two {{counter} berson} few {{counter} pherson} other {{counter} o bobl}} yn y {days, plural, one {diwrnod diwethaf} two {ddeuddydd diwethaf} other {{days} diwrnod diwethaf}}",
"trends.trending_now": "Yn trendio nawr", "trends.trending_now": "Yn trendio nawr",

View file

@ -11,6 +11,7 @@
"about.not_available": "Zerbitzari honek ez du informazio hau eskuragarri jarri.", "about.not_available": "Zerbitzari honek ez du informazio hau eskuragarri jarri.",
"about.powered_by": "{mastodon} erabiltzen duen sare sozial deszentralizatua", "about.powered_by": "{mastodon} erabiltzen duen sare sozial deszentralizatua",
"about.rules": "Zerbitzariaren arauak", "about.rules": "Zerbitzariaren arauak",
"account.account_note_header": "Ohar pertsonala",
"account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik", "account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik",
"account.badges.bot": "Bot-a", "account.badges.bot": "Bot-a",
"account.badges.group": "Taldea", "account.badges.group": "Taldea",
@ -34,7 +35,9 @@
"account.follow_back": "Jarraitu bueltan", "account.follow_back": "Jarraitu bueltan",
"account.followers": "Jarraitzaileak", "account.followers": "Jarraitzaileak",
"account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.", "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
"account.followers_counter": "{count, plural, one {{counter} jarraitzaile} other {{counter} jarraitzaile}}",
"account.following": "Jarraitzen", "account.following": "Jarraitzen",
"account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}",
"account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
"account.go_to_profile": "Joan profilera", "account.go_to_profile": "Joan profilera",
"account.hide_reblogs": "Ezkutatu @{name} erabiltzailearen bultzadak", "account.hide_reblogs": "Ezkutatu @{name} erabiltzailearen bultzadak",
@ -60,6 +63,7 @@
"account.requested_follow": "{name}-(e)k zu jarraitzeko eskaera egin du", "account.requested_follow": "{name}-(e)k zu jarraitzeko eskaera egin du",
"account.share": "Partekatu @{name} erabiltzailearen profila", "account.share": "Partekatu @{name} erabiltzailearen profila",
"account.show_reblogs": "Erakutsi @{name} erabiltzailearen bultzadak", "account.show_reblogs": "Erakutsi @{name} erabiltzailearen bultzadak",
"account.statuses_counter": "{count, plural, one {{counter} bidalketa} other {{counter} bidalketa}}",
"account.unblock": "Desblokeatu @{name}", "account.unblock": "Desblokeatu @{name}",
"account.unblock_domain": "Berriz erakutsi {domain}", "account.unblock_domain": "Berriz erakutsi {domain}",
"account.unblock_short": "Desblokeatu", "account.unblock_short": "Desblokeatu",
@ -175,6 +179,7 @@
"confirmations.discard_edit_media.message": "Multimediaren deskribapen edo aurrebistan gorde gabeko aldaketak daude, baztertu nahi dituzu?", "confirmations.discard_edit_media.message": "Multimediaren deskribapen edo aurrebistan gorde gabeko aldaketak daude, baztertu nahi dituzu?",
"confirmations.edit.confirm": "Editatu", "confirmations.edit.confirm": "Editatu",
"confirmations.edit.message": "Orain editatzen baduzu, une honetan idazten ari zaren mezua gainidatziko da. Ziur jarraitu nahi duzula?", "confirmations.edit.message": "Orain editatzen baduzu, une honetan idazten ari zaren mezua gainidatziko da. Ziur jarraitu nahi duzula?",
"confirmations.edit.title": "Gainidatzi bidalketa?",
"confirmations.logout.confirm": "Amaitu saioa", "confirmations.logout.confirm": "Amaitu saioa",
"confirmations.logout.message": "Ziur saioa amaitu nahi duzula?", "confirmations.logout.message": "Ziur saioa amaitu nahi duzula?",
"confirmations.logout.title": "Itxi saioa?", "confirmations.logout.title": "Itxi saioa?",
@ -184,8 +189,10 @@
"confirmations.redraft.title": "Ezabatu eta berridatzi bidalketa?", "confirmations.redraft.title": "Ezabatu eta berridatzi bidalketa?",
"confirmations.reply.confirm": "Erantzun", "confirmations.reply.confirm": "Erantzun",
"confirmations.reply.message": "Orain erantzuteak idazten ari zaren mezua gainidatziko du. Ziur jarraitu nahi duzula?", "confirmations.reply.message": "Orain erantzuteak idazten ari zaren mezua gainidatziko du. Ziur jarraitu nahi duzula?",
"confirmations.reply.title": "Gainidatzi bidalketa?",
"confirmations.unfollow.confirm": "Utzi jarraitzeari", "confirmations.unfollow.confirm": "Utzi jarraitzeari",
"confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?", "confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
"confirmations.unfollow.title": "Erabiltzailea jarraitzeari utzi?",
"conversation.delete": "Ezabatu elkarrizketa", "conversation.delete": "Ezabatu elkarrizketa",
"conversation.mark_as_read": "Markatu irakurrita bezala", "conversation.mark_as_read": "Markatu irakurrita bezala",
"conversation.open": "Ikusi elkarrizketa", "conversation.open": "Ikusi elkarrizketa",
@ -348,6 +355,12 @@
"home.pending_critical_update.link": "Ikusi eguneraketak", "home.pending_critical_update.link": "Ikusi eguneraketak",
"home.pending_critical_update.title": "Segurtasun eguneraketa kritikoa eskuragarri!", "home.pending_critical_update.title": "Segurtasun eguneraketa kritikoa eskuragarri!",
"home.show_announcements": "Erakutsi iragarpenak", "home.show_announcements": "Erakutsi iragarpenak",
"ignore_notifications_modal.filter_instead": "Iragazi ez ikusiarena egin beharrean",
"ignore_notifications_modal.ignore": "Ezikusi jakinarazpenak",
"ignore_notifications_modal.limited_accounts_title": "Moderatutako kontuen jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.new_accounts_title": "Kontu berrien jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.not_followers_title": "Jarraitzen ez zaituzten pertsonen jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.not_following_title": "Jarraitzen ez dituzun pertsonen jakinarazpenei ez ikusiarena egin?",
"interaction_modal.description.favourite": "Mastodon kontu batekin bidalketa hau gogoko egin dezakezu, egileari eskertzeko eta gerorako gordetzeko.", "interaction_modal.description.favourite": "Mastodon kontu batekin bidalketa hau gogoko egin dezakezu, egileari eskertzeko eta gerorako gordetzeko.",
"interaction_modal.description.follow": "Mastodon kontu batekin {name} jarraitu dezakezu bere bidalketak zure hasierako denbora lerroan jasotzeko.", "interaction_modal.description.follow": "Mastodon kontu batekin {name} jarraitu dezakezu bere bidalketak zure hasierako denbora lerroan jasotzeko.",
"interaction_modal.description.reblog": "Mastodon kontu batekin bidalketa hau bultzatu dezakezu, zure jarraitzaileekin partekatzeko.", "interaction_modal.description.reblog": "Mastodon kontu batekin bidalketa hau bultzatu dezakezu, zure jarraitzaileekin partekatzeko.",
@ -466,6 +479,11 @@
"notification.favourite": "{name}(e)k zure bidalketa gogoko du", "notification.favourite": "{name}(e)k zure bidalketa gogoko du",
"notification.follow": "{name}(e)k jarraitzen dizu", "notification.follow": "{name}(e)k jarraitzen dizu",
"notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du", "notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
"notification.label.mention": "Aipamena",
"notification.label.private_mention": "Aipamen pribatua",
"notification.label.private_reply": "Erantzun pribatua",
"notification.label.reply": "Erantzuna",
"notification.mention": "Aipamena",
"notification.moderation-warning.learn_more": "Informazio gehiago", "notification.moderation-warning.learn_more": "Informazio gehiago",
"notification.moderation_warning": "Moderazio-abisu bat jaso duzu", "notification.moderation_warning": "Moderazio-abisu bat jaso duzu",
"notification.moderation_warning.action_delete_statuses": "Argitalpen batzuk kendu dira.", "notification.moderation_warning.action_delete_statuses": "Argitalpen batzuk kendu dira.",
@ -476,6 +494,7 @@
"notification.moderation_warning.action_silence": "Kontua murriztu egin da.", "notification.moderation_warning.action_silence": "Kontua murriztu egin da.",
"notification.moderation_warning.action_suspend": "Kontua itxi da.", "notification.moderation_warning.action_suspend": "Kontua itxi da.",
"notification.own_poll": "Zure inkesta amaitu da", "notification.own_poll": "Zure inkesta amaitu da",
"notification.poll": "Zuk erantzun duzun inkesta bat bukatu da",
"notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari", "notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari",
"notification.relationships_severance_event": "{name} erabiltzailearekin galdutako konexioak", "notification.relationships_severance_event": "{name} erabiltzailearekin galdutako konexioak",
"notification.relationships_severance_event.account_suspension": "{from} zerbitzariko administratzaile batek {target} bertan behera utzi du, hau da, ezin izango dituzu jaso hango eguneratzerik edo hangoekin elkarreragin.", "notification.relationships_severance_event.account_suspension": "{from} zerbitzariko administratzaile batek {target} bertan behera utzi du, hau da, ezin izango dituzu jaso hango eguneratzerik edo hangoekin elkarreragin.",
@ -483,9 +502,19 @@
"notification.status": "{name} erabiltzaileak bidalketa egin berri du", "notification.status": "{name} erabiltzaileak bidalketa egin berri du",
"notification.update": "{name} erabiltzaileak bidalketa bat editatu du", "notification.update": "{name} erabiltzaileak bidalketa bat editatu du",
"notification_requests.accept": "Onartu", "notification_requests.accept": "Onartu",
"notification_requests.accept_all": "Onartu dena",
"notification_requests.confirm_accept_all.button": "Onartu dena",
"notification_requests.confirm_accept_all.title": "Onartu jakinarazpen-eskaerak?",
"notification_requests.confirm_dismiss_all.button": "Baztertu guztiak",
"notification_requests.confirm_dismiss_all.title": "Baztertu jakinarazpen-eskaerak?",
"notification_requests.dismiss": "Baztertu", "notification_requests.dismiss": "Baztertu",
"notification_requests.dismiss_all": "Baztertu guztiak",
"notification_requests.enter_selection_mode": "Hautatu",
"notification_requests.exit_selection_mode": "Utzi",
"notification_requests.maximize": "Maximizatu",
"notification_requests.notifications_from": "{name} erabiltzailearen jakinarazpenak", "notification_requests.notifications_from": "{name} erabiltzailearen jakinarazpenak",
"notification_requests.title": "Iragazitako jakinarazpenak", "notification_requests.title": "Iragazitako jakinarazpenak",
"notification_requests.view": "Ikusi jakinarazpenak",
"notifications.clear": "Garbitu jakinarazpenak", "notifications.clear": "Garbitu jakinarazpenak",
"notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?", "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?",
"notifications.clear_title": "Garbitu jakinarazpenak?", "notifications.clear_title": "Garbitu jakinarazpenak?",
@ -522,6 +551,14 @@
"notifications.permission_denied": "Mahaigaineko jakinarazpenak ez daude erabilgarri, nabigatzaileari baimen eskaera ukatu zitzaiolako", "notifications.permission_denied": "Mahaigaineko jakinarazpenak ez daude erabilgarri, nabigatzaileari baimen eskaera ukatu zitzaiolako",
"notifications.permission_denied_alert": "Mahaigaineko jakinarazpenak ezin dira gaitu, nabigatzaileari baimena ukatu zitzaiolako", "notifications.permission_denied_alert": "Mahaigaineko jakinarazpenak ezin dira gaitu, nabigatzaileari baimena ukatu zitzaiolako",
"notifications.permission_required": "Mahaigaineko jakinarazpenak ez daude erabilgarri, horretarako behar den baimena ez delako eman.", "notifications.permission_required": "Mahaigaineko jakinarazpenak ez daude erabilgarri, horretarako behar den baimena ez delako eman.",
"notifications.policy.accept": "Onartu",
"notifications.policy.accept_hint": "Erakutsi jakinarazpenetan",
"notifications.policy.drop": "Ezikusi",
"notifications.policy.drop_hint": "Hutsera bidali, ez erakutsi inoiz gehiago",
"notifications.policy.filter": "Iragazi",
"notifications.policy.filter_hint": "Bidali filtratutako jakinarazpenen sarrerako ontzira",
"notifications.policy.filter_limited_accounts_hint": "Zerbitzariaren moderatzaileek mugatuta",
"notifications.policy.filter_limited_accounts_title": "Moderatutako kontuak",
"notifications.policy.filter_new_accounts.hint": "Azken {days, plural, one {egunean} other {# egunetan}} sortua", "notifications.policy.filter_new_accounts.hint": "Azken {days, plural, one {egunean} other {# egunetan}} sortua",
"notifications.policy.filter_new_accounts_title": "Kontu berriak", "notifications.policy.filter_new_accounts_title": "Kontu berriak",
"notifications.policy.filter_not_followers_hint": "{days, plural, one {Egun batez} other {# egunez}} baino gutxiago jarraitu zaituen jendea barne", "notifications.policy.filter_not_followers_hint": "{days, plural, one {Egun batez} other {# egunez}} baino gutxiago jarraitu zaituen jendea barne",
@ -530,6 +567,7 @@
"notifications.policy.filter_not_following_title": "Jarraitzen ez duzun jendea", "notifications.policy.filter_not_following_title": "Jarraitzen ez duzun jendea",
"notifications.policy.filter_private_mentions_hint": "Iragazita, baldin eta zure aipamenaren erantzuna bada edo bidaltzailea jarraitzen baduzu", "notifications.policy.filter_private_mentions_hint": "Iragazita, baldin eta zure aipamenaren erantzuna bada edo bidaltzailea jarraitzen baduzu",
"notifications.policy.filter_private_mentions_title": "Eskatu gabeko aipamen pribatuak", "notifications.policy.filter_private_mentions_title": "Eskatu gabeko aipamen pribatuak",
"notifications.policy.title": "Kudeatu honen jakinarazpaenak…",
"notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak", "notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak",
"notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.", "notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.",
"notifications_permission_banner.title": "Ez galdu ezer inoiz", "notifications_permission_banner.title": "Ez galdu ezer inoiz",
@ -656,6 +694,7 @@
"report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.", "report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.",
"report_notification.attached_statuses": "{count, plural, one {Bidalketa {count}} other {{count} bidalketa}} erantsita", "report_notification.attached_statuses": "{count, plural, one {Bidalketa {count}} other {{count} bidalketa}} erantsita",
"report_notification.categories.legal": "Legala", "report_notification.categories.legal": "Legala",
"report_notification.categories.legal_sentence": "eduki ilegala",
"report_notification.categories.other": "Bestelakoak", "report_notification.categories.other": "Bestelakoak",
"report_notification.categories.other_sentence": "bestelakoak", "report_notification.categories.other_sentence": "bestelakoak",
"report_notification.categories.spam": "Spam", "report_notification.categories.spam": "Spam",
@ -691,6 +730,7 @@
"server_banner.administered_by": "Administratzailea(k):", "server_banner.administered_by": "Administratzailea(k):",
"server_banner.server_stats": "Zerbitzariaren estatistikak:", "server_banner.server_stats": "Zerbitzariaren estatistikak:",
"sign_in_banner.create_account": "Sortu kontua", "sign_in_banner.create_account": "Sortu kontua",
"sign_in_banner.mastodon_is": "Mastodon gertatzen ari denari buruz egunean egoteko modurik onena da.",
"sign_in_banner.sign_in": "Hasi saioa", "sign_in_banner.sign_in": "Hasi saioa",
"sign_in_banner.sso_redirect": "Hasi saioa edo izena eman", "sign_in_banner.sso_redirect": "Hasi saioa edo izena eman",
"status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea", "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea",
@ -766,6 +806,7 @@
"timeline_hint.remote_resource_not_displayed": "Beste zerbitzarietako {resource} ez da bistaratzen.", "timeline_hint.remote_resource_not_displayed": "Beste zerbitzarietako {resource} ez da bistaratzen.",
"timeline_hint.resources.followers": "Jarraitzaileak", "timeline_hint.resources.followers": "Jarraitzaileak",
"timeline_hint.resources.follows": "Jarraitzen", "timeline_hint.resources.follows": "Jarraitzen",
"timeline_hint.resources.replies": "Erantzun batzuk",
"timeline_hint.resources.statuses": "Bidalketa zaharragoak", "timeline_hint.resources.statuses": "Bidalketa zaharragoak",
"trends.counter_by_accounts": "{count, plural, one {Pertsona {counter}} other {{counter} pertsona}} azken {days, plural, one {egunean} other {{days} egunetan}}", "trends.counter_by_accounts": "{count, plural, one {Pertsona {counter}} other {{counter} pertsona}} azken {days, plural, one {egunean} other {{days} egunetan}}",
"trends.trending_now": "Joera orain", "trends.trending_now": "Joera orain",

View file

@ -358,7 +358,7 @@
"home.show_announcements": "Vís kunngerðir", "home.show_announcements": "Vís kunngerðir",
"ignore_notifications_modal.disclaimer": "Mastodon kann ikki upplýsa brúkarar um, at tú hevur latið sum um, at tú ikki hevur sæð teirra fráboðanir. At lata sum um, at tú ikki sær fráboðanir, forðar ikki, at boðini sjálv verða send.", "ignore_notifications_modal.disclaimer": "Mastodon kann ikki upplýsa brúkarar um, at tú hevur latið sum um, at tú ikki hevur sæð teirra fráboðanir. At lata sum um, at tú ikki sær fráboðanir, forðar ikki, at boðini sjálv verða send.",
"ignore_notifications_modal.filter_instead": "Filtrera ístaðin", "ignore_notifications_modal.filter_instead": "Filtrera ístaðin",
"ignore_notifications_modal.filter_to_act_users": "Tú kann framvegis góðtaka, avvísa og melda brúkarar", "ignore_notifications_modal.filter_to_act_users": "Tú kanst framvegis góðtaka, avvísa og melda brúkarar",
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrering ger tað lættari at sleppa undan møguligum misskiljingum", "ignore_notifications_modal.filter_to_avoid_confusion": "Filtrering ger tað lættari at sleppa undan møguligum misskiljingum",
"ignore_notifications_modal.filter_to_review_separately": "Tú kanst kanna filtreraðar fráboðanir fyri seg", "ignore_notifications_modal.filter_to_review_separately": "Tú kanst kanna filtreraðar fráboðanir fyri seg",
"ignore_notifications_modal.ignore": "Lat sum um tú ikki sær fráboðanir", "ignore_notifications_modal.ignore": "Lat sum um tú ikki sær fráboðanir",

View file

@ -11,6 +11,7 @@
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.", "about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}", "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
"about.rules": "Règles du serveur", "about.rules": "Règles du serveur",
"account.account_note_header": "Note personnelle",
"account.add_or_remove_from_list": "Ajouter ou enlever de listes", "account.add_or_remove_from_list": "Ajouter ou enlever de listes",
"account.badges.bot": "Bot", "account.badges.bot": "Bot",
"account.badges.group": "Groupe", "account.badges.group": "Groupe",

View file

@ -11,6 +11,7 @@
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.", "about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}", "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
"about.rules": "Règles du serveur", "about.rules": "Règles du serveur",
"account.account_note_header": "Note personnelle",
"account.add_or_remove_from_list": "Ajouter ou retirer des listes", "account.add_or_remove_from_list": "Ajouter ou retirer des listes",
"account.badges.bot": "Bot", "account.badges.bot": "Bot",
"account.badges.group": "Groupe", "account.badges.group": "Groupe",

View file

@ -284,15 +284,15 @@
"explore.trending_links": "חדשות", "explore.trending_links": "חדשות",
"explore.trending_statuses": "הודעות", "explore.trending_statuses": "הודעות",
"explore.trending_tags": "תגיות", "explore.trending_tags": "תגיות",
"filter_modal.added.context_mismatch_explanation": "קטגוריית הסנן הזאת לא חלה על ההקשר שממנו הגעת אל ההודעה הזו. אם תרצה/י שההודעה תסונן גם בהקשר זה, תצטרך/י לערוך את הסנן.", "filter_modal.added.context_mismatch_explanation": "קטגוריית המסנן הזאת לא חלה על ההקשר שממנו הגעת אל ההודעה הזו. אם תרצה/י שההודעה תסונן גם בהקשר זה, תצטרך/י לערוך את הסנן.",
"filter_modal.added.context_mismatch_title": "אין התאמה להקשר!", "filter_modal.added.context_mismatch_title": "אין התאמה להקשר!",
"filter_modal.added.expired_explanation": "פג תוקפה של קטגוריית הסינון הזו, יש צורך לשנות את תאריך התפוגה כדי שהסינון יוחל.", "filter_modal.added.expired_explanation": "פג תוקפה של קטגוריית הסינון הזו, יש צורך לשנות את תאריך התפוגה כדי שהסינון יוחל.",
"filter_modal.added.expired_title": "פג תוקף הפילטר!", "filter_modal.added.expired_title": "פג תוקף המסנן!",
"filter_modal.added.review_and_configure": "לסקירה והתאמה מתקדמת של קטגוריית הסינון הזו, לכו ל{settings_link}.", "filter_modal.added.review_and_configure": "לסקירה והתאמה מתקדמת של קטגוריית הסינון הזו, לכו ל{settings_link}.",
"filter_modal.added.review_and_configure_title": "אפשרויות סינון", "filter_modal.added.review_and_configure_title": "אפשרויות סינון",
"filter_modal.added.settings_link": "דף הגדרות", "filter_modal.added.settings_link": "דף הגדרות",
"filter_modal.added.short_explanation": "ההודעה הזו הוספה לקטגוריית הסינון הזו: {title}.", "filter_modal.added.short_explanation": "ההודעה הזו הוספה לקטגוריית הסינון הזו: {title}.",
"filter_modal.added.title": פילטר הוסף!", "filter_modal.added.title": מסנן הוסף!",
"filter_modal.select_filter.context_mismatch": "לא חל בהקשר זה", "filter_modal.select_filter.context_mismatch": "לא חל בהקשר זה",
"filter_modal.select_filter.expired": "פג התוקף", "filter_modal.select_filter.expired": "פג התוקף",
"filter_modal.select_filter.prompt_new": "קטגוריה חדשה {name}", "filter_modal.select_filter.prompt_new": "קטגוריה חדשה {name}",
@ -356,8 +356,16 @@
"home.pending_critical_update.link": "צפיה בעדכונים", "home.pending_critical_update.link": "צפיה בעדכונים",
"home.pending_critical_update.title": "יצא עדכון אבטחה חשוב!", "home.pending_critical_update.title": "יצא עדכון אבטחה חשוב!",
"home.show_announcements": "הצג הכרזות", "home.show_announcements": "הצג הכרזות",
"ignore_notifications_modal.filter_instead": "לסנן במקום",
"ignore_notifications_modal.filter_to_act_users": "עדיין ביכולתך לקבל, לדחות ולדווח על משתמשים אחרים", "ignore_notifications_modal.filter_to_act_users": "עדיין ביכולתך לקבל, לדחות ולדווח על משתמשים אחרים",
"ignore_notifications_modal.filter_to_avoid_confusion": "סינון מסייע למניעת בלבולים אפשריים",
"ignore_notifications_modal.filter_to_review_separately": "ניתן לסקור התראות מפולטרות בנפרד", "ignore_notifications_modal.filter_to_review_separately": "ניתן לסקור התראות מפולטרות בנפרד",
"ignore_notifications_modal.ignore": "להתעלם מהתראות",
"ignore_notifications_modal.limited_accounts_title": "להתעלם מהתראות מחשבונות תחת פיקוח?",
"ignore_notifications_modal.new_accounts_title": "להתעלם מהתראות מחשבונות חדשים?",
"ignore_notifications_modal.not_followers_title": "להתעלם מהתראות מא.נשים שאינם עוקביך?",
"ignore_notifications_modal.not_following_title": "להתעלם מהתראות מא.נשים שאינם נעקביך?",
"ignore_notifications_modal.private_mentions_title": "להתעלם מהתראות מאיזכורים פרטיים?",
"interaction_modal.description.favourite": "עם חשבון מסטודון, ניתן לחבב את ההודעה כדי לומר למחבר/ת שהערכת את תוכנו או כדי לשמור אותו לקריאה בעתיד.", "interaction_modal.description.favourite": "עם חשבון מסטודון, ניתן לחבב את ההודעה כדי לומר למחבר/ת שהערכת את תוכנו או כדי לשמור אותו לקריאה בעתיד.",
"interaction_modal.description.follow": "עם חשבון מסטודון, ניתן לעקוב אחרי {name} כדי לקבל את הפוסטים שלו/ה בפיד הבית.", "interaction_modal.description.follow": "עם חשבון מסטודון, ניתן לעקוב אחרי {name} כדי לקבל את הפוסטים שלו/ה בפיד הבית.",
"interaction_modal.description.reblog": "עם חשבון מסטודון, ניתן להדהד את החצרוץ ולשתף עם עוקבים.", "interaction_modal.description.reblog": "עם חשבון מסטודון, ניתן להדהד את החצרוץ ולשתף עם עוקבים.",
@ -509,13 +517,26 @@
"notification.status": "{name} הרגע פרסמו", "notification.status": "{name} הרגע פרסמו",
"notification.update": "{name} ערכו הודעה", "notification.update": "{name} ערכו הודעה",
"notification_requests.accept": "לקבל", "notification_requests.accept": "לקבל",
"notification_requests.accept_all": "לקבל את כל הבקשות",
"notification_requests.accept_multiple": "{count, plural,one {לאשר קבלת בקשה}other {לאשר קבלת # בקשות}}",
"notification_requests.confirm_accept_all.button": "לקבל את כל הבקשות",
"notification_requests.confirm_accept_all.message": "אתם עומדים לאשר {count, plural,one {בקשת התראה אחת}other {# בקשות התראה}}. להמשיך?",
"notification_requests.confirm_accept_all.title": "לקבל בקשות התראה?",
"notification_requests.confirm_dismiss_all.button": "דחיית כל הבקשות",
"notification_requests.confirm_dismiss_all.message": "אתם עומדים לדחות {count, plural,one {בקשת התראה}other {# בקשות התראה}}. לא תוכלו למצוא {count, plural,one {אותה}other {אותן}} בקלות אחר כך. להמשיך?",
"notification_requests.confirm_dismiss_all.title": "לדחות בקשות התראה?",
"notification_requests.dismiss": "לבטל", "notification_requests.dismiss": "לבטל",
"notification_requests.dismiss_all": "דחיית כל הבקשות",
"notification_requests.dismiss_multiple": "{count, plural,one {לדחות בקשה}other {לדחות # בקשות}} לקבלת התראה",
"notification_requests.enter_selection_mode": "בחירה",
"notification_requests.exit_selection_mode": "ביטול",
"notification_requests.explainer_for_limited_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה הוגבל על ידי מנהלי הדיונים.", "notification_requests.explainer_for_limited_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה הוגבל על ידי מנהלי הדיונים.",
"notification_requests.explainer_for_limited_remote_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה או השרת שלו הוגבלו על ידי מנהלי הדיונים.", "notification_requests.explainer_for_limited_remote_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה או השרת שלו הוגבלו על ידי מנהלי הדיונים.",
"notification_requests.maximize": "הגדלה למקסימום", "notification_requests.maximize": "הגדלה למקסימום",
"notification_requests.minimize_banner": "להקטין את כותרת ההודעות המפולטרות", "notification_requests.minimize_banner": "להקטין את כותרת ההודעות המסוננות",
"notification_requests.notifications_from": "התראות מ־ {name}", "notification_requests.notifications_from": "התראות מ־ {name}",
"notification_requests.title": "התראות מסוננות", "notification_requests.title": "התראות מסוננות",
"notification_requests.view": "הצגת ההתראות",
"notifications.clear": "הסרת התראות", "notifications.clear": "הסרת התראות",
"notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ", "notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ",
"notifications.clear_title": "לנקות התראות?", "notifications.clear_title": "לנקות התראות?",
@ -552,6 +573,12 @@
"notifications.permission_denied": "לא ניתן להציג התראות מסך כיוון כיוון שהרשאות דפדפן נשללו בעבר", "notifications.permission_denied": "לא ניתן להציג התראות מסך כיוון כיוון שהרשאות דפדפן נשללו בעבר",
"notifications.permission_denied_alert": "לא ניתן לאפשר נוטיפיקציות מסך שכן הדפדפן סורב הרשאה בעבר", "notifications.permission_denied_alert": "לא ניתן לאפשר נוטיפיקציות מסך שכן הדפדפן סורב הרשאה בעבר",
"notifications.permission_required": "לא ניתן לאפשר נוטיפיקציות מסך כיוון שהרשאה דרושה לא ניתנה.", "notifications.permission_required": "לא ניתן לאפשר נוטיפיקציות מסך כיוון שהרשאה דרושה לא ניתנה.",
"notifications.policy.accept": "אישור",
"notifications.policy.accept_hint": "הצגה בהתראות",
"notifications.policy.drop": "להתעלם",
"notifications.policy.drop_hint": "שליחה אל מצולות הנשיה, ולא יוודעו אודותיה לעולם",
"notifications.policy.filter": "מסנן",
"notifications.policy.filter_hint": "שליחה לתיבה נכנסת מסוננת",
"notifications.policy.filter_limited_accounts_hint": "הוגבל על ידי מנהלי הדיונים", "notifications.policy.filter_limited_accounts_hint": "הוגבל על ידי מנהלי הדיונים",
"notifications.policy.filter_limited_accounts_title": "חשבון מוגבל", "notifications.policy.filter_limited_accounts_title": "חשבון מוגבל",
"notifications.policy.filter_new_accounts.hint": "נוצר {days, plural,one {ביום האחרון} two {ביומיים האחרונים} other {ב־# הימים האחרונים}}", "notifications.policy.filter_new_accounts.hint": "נוצר {days, plural,one {ביום האחרון} two {ביומיים האחרונים} other {ב־# הימים האחרונים}}",
@ -562,6 +589,7 @@
"notifications.policy.filter_not_following_title": "משתמשים שאינך עוקב(ת) אחריהםן", "notifications.policy.filter_not_following_title": "משתמשים שאינך עוקב(ת) אחריהםן",
"notifications.policy.filter_private_mentions_hint": "מסונן אלא אם זו תשובה למינשון שלך או אם אתם עוקבים אחרי העונה", "notifications.policy.filter_private_mentions_hint": "מסונן אלא אם זו תשובה למינשון שלך או אם אתם עוקבים אחרי העונה",
"notifications.policy.filter_private_mentions_title": "מינשונים בפרטי שלא הוזמנו", "notifications.policy.filter_private_mentions_title": "מינשונים בפרטי שלא הוזמנו",
"notifications.policy.title": "ניהול התראות מ…",
"notifications_permission_banner.enable": "לאפשר נוטיפיקציות מסך", "notifications_permission_banner.enable": "לאפשר נוטיפיקציות מסך",
"notifications_permission_banner.how_to_control": "כדי לקבל התראות גם כאשר מסטודון סגור יש לאפשר התראות מסך. ניתן לשלוט בדיוק איזה סוג של אינטראקציות יביא להתראות מסך דרך כפתור ה- {icon} מרגע שהן מאופשרות.", "notifications_permission_banner.how_to_control": "כדי לקבל התראות גם כאשר מסטודון סגור יש לאפשר התראות מסך. ניתן לשלוט בדיוק איזה סוג של אינטראקציות יביא להתראות מסך דרך כפתור ה- {icon} מרגע שהן מאופשרות.",
"notifications_permission_banner.title": "לעולם אל תחמיץ דבר", "notifications_permission_banner.title": "לעולם אל תחמיץ דבר",
@ -802,6 +830,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.", "timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.",
"timeline_hint.resources.followers": "עוקבים", "timeline_hint.resources.followers": "עוקבים",
"timeline_hint.resources.follows": "נעקבים", "timeline_hint.resources.follows": "נעקבים",
"timeline_hint.resources.replies": "מספר תשובות",
"timeline_hint.resources.statuses": "הודעות ישנות יותר", "timeline_hint.resources.statuses": "הודעות ישנות יותר",
"trends.counter_by_accounts": "{count, plural, one {אדם אחד} other {{count} א.נשים}} {days, plural, one {מאז אתמול} two {ביומיים האחרונים} other {במשך {days} הימים האחרונים}}", "trends.counter_by_accounts": "{count, plural, one {אדם אחד} other {{count} א.נשים}} {days, plural, one {מאז אתמול} two {ביומיים האחרונים} other {במשך {days} הימים האחרונים}}",
"trends.trending_now": "נושאים חמים", "trends.trending_now": "נושאים חמים",

View file

@ -358,7 +358,7 @@
"home.show_announcements": "Közlemények megjelenítése", "home.show_announcements": "Közlemények megjelenítése",
"ignore_notifications_modal.disclaimer": "A Mastodon nem tudja értesíteni azokat a felhasználókat, akiknek figyelmen kívül hagytad az értesítéseit. Az értesítések figyelmen kívül hagyása nem állítja meg az üzenetek elküldését.", "ignore_notifications_modal.disclaimer": "A Mastodon nem tudja értesíteni azokat a felhasználókat, akiknek figyelmen kívül hagytad az értesítéseit. Az értesítések figyelmen kívül hagyása nem állítja meg az üzenetek elküldését.",
"ignore_notifications_modal.filter_instead": "Inkább szűrés", "ignore_notifications_modal.filter_instead": "Inkább szűrés",
"ignore_notifications_modal.filter_to_act_users": "Továbbra is el tudja fogadni, el tudja utasítani vagy jelenteni tudja a felhasználókat", "ignore_notifications_modal.filter_to_act_users": "Továbbra is el tudod fogadni, el tudod utasítani vagy tudod jelenteni a felhasználókat",
"ignore_notifications_modal.filter_to_avoid_confusion": "A szűrés segít elkerülni a lehetséges félreértéseket", "ignore_notifications_modal.filter_to_avoid_confusion": "A szűrés segít elkerülni a lehetséges félreértéseket",
"ignore_notifications_modal.filter_to_review_separately": "A szűrt értesítések külön tekinthetők át", "ignore_notifications_modal.filter_to_review_separately": "A szűrt értesítések külön tekinthetők át",
"ignore_notifications_modal.ignore": "Értesítések figyelmen kívül hagyása", "ignore_notifications_modal.ignore": "Értesítések figyelmen kívül hagyása",

View file

@ -358,7 +358,9 @@
"home.show_announcements": "Mostra annunci", "home.show_announcements": "Mostra annunci",
"ignore_notifications_modal.disclaimer": "Mastodon non può informare gli utenti che hai ignorato le loro notifiche. Ignorare le notifiche non impedirà l'invio dei messaggi stessi.", "ignore_notifications_modal.disclaimer": "Mastodon non può informare gli utenti che hai ignorato le loro notifiche. Ignorare le notifiche non impedirà l'invio dei messaggi stessi.",
"ignore_notifications_modal.filter_instead": "Filtra invece", "ignore_notifications_modal.filter_instead": "Filtra invece",
"ignore_notifications_modal.filter_to_act_users": "Potrai comunque accettare, rifiutare o segnalare gli utenti",
"ignore_notifications_modal.filter_to_avoid_confusion": "Il filtraggio aiuta a evitare potenziali confusioni", "ignore_notifications_modal.filter_to_avoid_confusion": "Il filtraggio aiuta a evitare potenziali confusioni",
"ignore_notifications_modal.filter_to_review_separately": "Puoi rivedere le notifiche filtrate separatamente",
"ignore_notifications_modal.ignore": "Ignora le notifiche", "ignore_notifications_modal.ignore": "Ignora le notifiche",
"ignore_notifications_modal.limited_accounts_title": "Ignorare le notifiche dagli account moderati?", "ignore_notifications_modal.limited_accounts_title": "Ignorare le notifiche dagli account moderati?",
"ignore_notifications_modal.new_accounts_title": "Ignorare le notifiche dai nuovi account?", "ignore_notifications_modal.new_accounts_title": "Ignorare le notifiche dai nuovi account?",
@ -575,6 +577,8 @@
"notifications.policy.accept": "Accetta", "notifications.policy.accept": "Accetta",
"notifications.policy.accept_hint": "Mostra nelle notifiche", "notifications.policy.accept_hint": "Mostra nelle notifiche",
"notifications.policy.drop": "Ignora", "notifications.policy.drop": "Ignora",
"notifications.policy.drop_hint": "Scarta definitivamente, per non essere mai più visto",
"notifications.policy.filter": "Filtrare",
"notifications.policy.filter_hint": "Invia alla casella in arrivo delle notifiche filtrate", "notifications.policy.filter_hint": "Invia alla casella in arrivo delle notifiche filtrate",
"notifications.policy.filter_limited_accounts_hint": "Limitato dai moderatori del server", "notifications.policy.filter_limited_accounts_hint": "Limitato dai moderatori del server",
"notifications.policy.filter_limited_accounts_title": "Account moderati", "notifications.policy.filter_limited_accounts_title": "Account moderati",

View file

@ -486,7 +486,7 @@
"privacy.private.short": "Imeḍfaren", "privacy.private.short": "Imeḍfaren",
"privacy.public.long": "Kra n win yellan deg Masṭudun neɣ berra-s", "privacy.public.long": "Kra n win yellan deg Masṭudun neɣ berra-s",
"privacy.public.short": "Azayez", "privacy.public.short": "Azayez",
"privacy.unlisted.long": "Kra kan n ilguritmen", "privacy.unlisted.long": "Kra kan yiwarzimen",
"privacy_policy.last_updated": "Aleqqem aneggaru {date}", "privacy_policy.last_updated": "Aleqqem aneggaru {date}",
"privacy_policy.title": "Tasertit tabaḍnit", "privacy_policy.title": "Tasertit tabaḍnit",
"recommended": "Yettuwelleh", "recommended": "Yettuwelleh",
@ -629,6 +629,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} seg yiqeddacen-nniḍen ur d-ttwaskanent ara.", "timeline_hint.remote_resource_not_displayed": "{resource} seg yiqeddacen-nniḍen ur d-ttwaskanent ara.",
"timeline_hint.resources.followers": "Imeḍfaṛen", "timeline_hint.resources.followers": "Imeḍfaṛen",
"timeline_hint.resources.follows": "T·Yeṭafaṛ", "timeline_hint.resources.follows": "T·Yeṭafaṛ",
"timeline_hint.resources.replies": "Kra tririyin",
"timeline_hint.resources.statuses": "Tisuffaɣ tiqdimin", "timeline_hint.resources.statuses": "Tisuffaɣ tiqdimin",
"trends.counter_by_accounts": "{count, plural, one {{counter} wemdan} other {{counter} medden}} deg {days, plural, one {ass} other {{days} wussan}} iɛeddan", "trends.counter_by_accounts": "{count, plural, one {{counter} wemdan} other {{counter} medden}} deg {days, plural, one {ass} other {{days} wussan}} iɛeddan",
"trends.trending_now": "Ayen mucaɛen tura", "trends.trending_now": "Ayen mucaɛen tura",

View file

@ -503,6 +503,8 @@
"notification.update": "{name} 님이 게시물을 수정했습니다", "notification.update": "{name} 님이 게시물을 수정했습니다",
"notification_requests.accept": "수락", "notification_requests.accept": "수락",
"notification_requests.dismiss": "지우기", "notification_requests.dismiss": "지우기",
"notification_requests.enter_selection_mode": "선택",
"notification_requests.exit_selection_mode": "취소",
"notification_requests.maximize": "최대화", "notification_requests.maximize": "최대화",
"notification_requests.minimize_banner": "걸러진 알림 배너 최소화", "notification_requests.minimize_banner": "걸러진 알림 배너 최소화",
"notification_requests.notifications_from": "{name} 님으로부터의 알림", "notification_requests.notifications_from": "{name} 님으로부터의 알림",
@ -543,6 +545,9 @@
"notifications.permission_denied": "권한이 거부되었기 때문에 데스크탑 알림을 활성화할 수 없음", "notifications.permission_denied": "권한이 거부되었기 때문에 데스크탑 알림을 활성화할 수 없음",
"notifications.permission_denied_alert": "이전에 브라우저 권한이 거부되었기 때문에, 데스크탑 알림이 활성화 될 수 없습니다.", "notifications.permission_denied_alert": "이전에 브라우저 권한이 거부되었기 때문에, 데스크탑 알림이 활성화 될 수 없습니다.",
"notifications.permission_required": "필요한 권한이 승인되지 않아 데스크탑 알림을 사용할 수 없습니다.", "notifications.permission_required": "필요한 권한이 승인되지 않아 데스크탑 알림을 사용할 수 없습니다.",
"notifications.policy.accept": "허용",
"notifications.policy.drop": "무시",
"notifications.policy.filter": "필터",
"notifications.policy.filter_limited_accounts_hint": "서버 중재자에 의해 제한됨", "notifications.policy.filter_limited_accounts_hint": "서버 중재자에 의해 제한됨",
"notifications.policy.filter_limited_accounts_title": "중재된 계정", "notifications.policy.filter_limited_accounts_title": "중재된 계정",
"notifications.policy.filter_new_accounts.hint": "{days, plural, one {하루} other {#일}} 안에 만들어진", "notifications.policy.filter_new_accounts.hint": "{days, plural, one {하루} other {#일}} 안에 만들어진",
@ -793,6 +798,7 @@
"timeline_hint.remote_resource_not_displayed": "다른 서버의 {resource} 표시는 할 수 없습니다.", "timeline_hint.remote_resource_not_displayed": "다른 서버의 {resource} 표시는 할 수 없습니다.",
"timeline_hint.resources.followers": "팔로워", "timeline_hint.resources.followers": "팔로워",
"timeline_hint.resources.follows": "팔로우", "timeline_hint.resources.follows": "팔로우",
"timeline_hint.resources.replies": "몇몇 답글",
"timeline_hint.resources.statuses": "이전 게시물", "timeline_hint.resources.statuses": "이전 게시물",
"trends.counter_by_accounts": "이전 {days}일 동안 {counter} 명의 사용자", "trends.counter_by_accounts": "이전 {days}일 동안 {counter} 명의 사용자",
"trends.trending_now": "지금 유행 중", "trends.trending_now": "지금 유행 중",

View file

@ -40,7 +40,7 @@
"compose_form.direct_message_warning_learn_more": "Discere plura", "compose_form.direct_message_warning_learn_more": "Discere plura",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer": "Tua ratio non est {clausa}. Quisquis te sequi potest ut visum accipiat nuntios tuos tantum pro sectatoribus.", "compose_form.lock_disclaimer": "Tua ratio non est {locked}. Quisquis te sequi potest ut visum accipiat nuntios tuos tantum pro sectatoribus.",
"compose_form.lock_disclaimer.lock": "clausum", "compose_form.lock_disclaimer.lock": "clausum",
"compose_form.placeholder": "What is on your mind?", "compose_form.placeholder": "What is on your mind?",
"compose_form.publish_form": "Barrire", "compose_form.publish_form": "Barrire",
@ -128,6 +128,7 @@
"lightbox.next": "Secundum", "lightbox.next": "Secundum",
"lists.account.add": "Adde ad tabellās", "lists.account.add": "Adde ad tabellās",
"lists.new.create": "Addere tabella", "lists.new.create": "Addere tabella",
"lists.subheading": "Tuae tabulae",
"load_pending": "{count, plural, one {# novum item} other {# nova itema}}", "load_pending": "{count, plural, one {# novum item} other {# nova itema}}",
"media_gallery.toggle_visible": "{number, plural, one {Cēla imaginem} other {Cēla imagines}}", "media_gallery.toggle_visible": "{number, plural, one {Cēla imaginem} other {Cēla imagines}}",
"moved_to_account_banner.text": "Tua ratione {disabledAccount} interdum reposita est, quod ad {movedToAccount} migrāvisti.", "moved_to_account_banner.text": "Tua ratione {disabledAccount} interdum reposita est, quod ad {movedToAccount} migrāvisti.",
@ -146,7 +147,7 @@
"notification.moderation_warning.action_sensitive": "Tua nuntia hinc sensibiliter notabuntur.", "notification.moderation_warning.action_sensitive": "Tua nuntia hinc sensibiliter notabuntur.",
"notification.moderation_warning.action_silence": "Ratio tua est limitata.", "notification.moderation_warning.action_silence": "Ratio tua est limitata.",
"notification.moderation_warning.action_suspend": "Ratio tua suspensus est.", "notification.moderation_warning.action_suspend": "Ratio tua suspensus est.",
"notification.own_poll": "Suffragium tuum terminatum est.", "notification.own_poll": "Suffragium tuum terminatum est",
"notification.reblog": "{name} tuum nuntium amplificavit.", "notification.reblog": "{name} tuum nuntium amplificavit.",
"notification.relationships_severance_event.account_suspension": "Admin ab {from} {target} suspendit, quod significat nōn iam posse tē novitātēs ab eīs accipere aut cum eīs interagere.", "notification.relationships_severance_event.account_suspension": "Admin ab {from} {target} suspendit, quod significat nōn iam posse tē novitātēs ab eīs accipere aut cum eīs interagere.",
"notification.relationships_severance_event.domain_block": "Admin ab {from} {target} obsēcāvit, includēns {followersCount} ex tuīs sectātōribus et {followingCount, plural, one {# ratione} other {# rationibus}} quās sequeris.", "notification.relationships_severance_event.domain_block": "Admin ab {from} {target} obsēcāvit, includēns {followersCount} ex tuīs sectātōribus et {followingCount, plural, one {# ratione} other {# rationibus}} quās sequeris.",
@ -161,7 +162,7 @@
"onboarding.actions.go_to_home": "Go to your home feed", "onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.follows.lead": "Tua domus feed est principalis via Mastodon experīrī. Quō plūrēs persōnas sequeris, eō actīvior et interessantior erit. Ad tē incipiendum, ecce quaedam suāsiones:", "onboarding.follows.lead": "Tua domus feed est principalis via Mastodon experīrī. Quō plūrēs persōnas sequeris, eō actīvior et interessantior erit. Ad tē incipiendum, ecce quaedam suāsiones:",
"onboarding.follows.title": "Popular on Mastodon", "onboarding.follows.title": "Popular on Mastodon",
"onboarding.profile.display_name_hint": "Tuum nomen completum aut tuum nomen ludens...", "onboarding.profile.display_name_hint": "Tuum nomen completum aut tuum nomen ludens",
"onboarding.start.lead": "Nunc pars es Mastodonis, singularis, socialis medii platformae decentralis ubi—non algorismus—tuam ipsius experientiam curas. Incipiāmus in nova hac socialis regione:", "onboarding.start.lead": "Nunc pars es Mastodonis, singularis, socialis medii platformae decentralis ubi—non algorismus—tuam ipsius experientiam curas. Incipiāmus in nova hac socialis regione:",
"onboarding.start.skip": "Want to skip right ahead?", "onboarding.start.skip": "Want to skip right ahead?",
"onboarding.start.title": "Perfecisti eam!", "onboarding.start.title": "Perfecisti eam!",

View file

@ -358,7 +358,9 @@
"home.show_announcements": "Rodyti skelbimus", "home.show_announcements": "Rodyti skelbimus",
"ignore_notifications_modal.disclaimer": "„Mastodon“ negali informuoti naudotojų, kad ignoravai jų pranešimus. Ignoravus pranešimus, pačių pranešimų siuntimas nebus sustabdytas.", "ignore_notifications_modal.disclaimer": "„Mastodon“ negali informuoti naudotojų, kad ignoravai jų pranešimus. Ignoravus pranešimus, pačių pranešimų siuntimas nebus sustabdytas.",
"ignore_notifications_modal.filter_instead": "Filtruoti vietoj to", "ignore_notifications_modal.filter_instead": "Filtruoti vietoj to",
"ignore_notifications_modal.filter_to_act_users": "Vis dar galėsi priimti, atmesti arba pranešti naudotojus.",
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtravimas padeda išvengti galimos painiavos.", "ignore_notifications_modal.filter_to_avoid_confusion": "Filtravimas padeda išvengti galimos painiavos.",
"ignore_notifications_modal.filter_to_review_separately": "Filtruotus pranešimus gali peržiūrėti atskirai.",
"ignore_notifications_modal.ignore": "Ignoruoti pranešimus", "ignore_notifications_modal.ignore": "Ignoruoti pranešimus",
"ignore_notifications_modal.limited_accounts_title": "Ignoruoti pranešimus iš prižiūrėmų paskyrų?", "ignore_notifications_modal.limited_accounts_title": "Ignoruoti pranešimus iš prižiūrėmų paskyrų?",
"ignore_notifications_modal.new_accounts_title": "Ignoruoti pranešimus iš naujų paskyrų?", "ignore_notifications_modal.new_accounts_title": "Ignoruoti pranešimus iš naujų paskyrų?",
@ -514,13 +516,26 @@
"notification.status": "{name} ką tik paskelbė", "notification.status": "{name} ką tik paskelbė",
"notification.update": "{name} redagavo įrašą", "notification.update": "{name} redagavo įrašą",
"notification_requests.accept": "Priimti", "notification_requests.accept": "Priimti",
"notification_requests.accept_all": "Priimti visus",
"notification_requests.accept_multiple": "{count, plural, one {Priimti # prašymą} few {Priimti # prašymus} many {Priimti # prašymo} other {Priimti # prašymų}}",
"notification_requests.confirm_accept_all.button": "Priimti visus",
"notification_requests.confirm_accept_all.message": "Ketini priimti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Ar tikrai nori tęsti?",
"notification_requests.confirm_accept_all.title": "Priimti pranešimų prašymus?",
"notification_requests.confirm_dismiss_all.button": "Atmesti visus",
"notification_requests.confirm_dismiss_all.message": "Ketini atmesti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Daugiau negalėsi lengvai pasiekti {count, plural, one {jo} few {jų} many {juos} other {jų}}. Ar tikrai nori tęsti?",
"notification_requests.confirm_dismiss_all.title": "Atmesti pranešimų prašymus?",
"notification_requests.dismiss": "Atmesti", "notification_requests.dismiss": "Atmesti",
"notification_requests.dismiss_all": "Atmesti visus",
"notification_requests.dismiss_multiple": "{count, plural, one {Atmesti # prašymą} few {Atmesti # prašymus} many {Atmesti # prašymo} other {Atmesti # prašymų}}",
"notification_requests.enter_selection_mode": "Pasirinkti",
"notification_requests.exit_selection_mode": "Atšaukti",
"notification_requests.explainer_for_limited_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą.", "notification_requests.explainer_for_limited_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą.",
"notification_requests.explainer_for_limited_remote_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą arba serverį.", "notification_requests.explainer_for_limited_remote_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą arba serverį.",
"notification_requests.maximize": "Padidinti", "notification_requests.maximize": "Padidinti",
"notification_requests.minimize_banner": "Mažinti filtruotų pranešimų reklamjuostę", "notification_requests.minimize_banner": "Mažinti filtruotų pranešimų reklamjuostę",
"notification_requests.notifications_from": "Pranešimai iš {name}", "notification_requests.notifications_from": "Pranešimai iš {name}",
"notification_requests.title": "Filtruojami pranešimai", "notification_requests.title": "Filtruojami pranešimai",
"notification_requests.view": "Peržiūrėti pranešimus",
"notifications.clear": "Išvalyti pranešimus", "notifications.clear": "Išvalyti pranešimus",
"notifications.clear_confirmation": "Ar tikrai nori visam laikui išvalyti visus pranešimus?", "notifications.clear_confirmation": "Ar tikrai nori visam laikui išvalyti visus pranešimus?",
"notifications.clear_title": "Valyti pranešimus?", "notifications.clear_title": "Valyti pranešimus?",
@ -810,6 +825,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} iš kitų serverių nerodomi.", "timeline_hint.remote_resource_not_displayed": "{resource} iš kitų serverių nerodomi.",
"timeline_hint.resources.followers": "Sekėjai", "timeline_hint.resources.followers": "Sekėjai",
"timeline_hint.resources.follows": "Seka", "timeline_hint.resources.follows": "Seka",
"timeline_hint.resources.replies": "Kai kurie atsakymai",
"timeline_hint.resources.statuses": "Senesni įrašai", "timeline_hint.resources.statuses": "Senesni įrašai",
"trends.counter_by_accounts": "{count, plural, one {{counter} žmogus} few {{counter} žmonės} many {{counter} žmogus} other {{counter} žmonių}} per {days, plural, one {dieną} few {{days} dienas} many {{days} dienas} other {{days} dienų}}", "trends.counter_by_accounts": "{count, plural, one {{counter} žmogus} few {{counter} žmonės} many {{counter} žmogus} other {{counter} žmonių}} per {days, plural, one {dieną} few {{days} dienas} many {{days} dienas} other {{days} dienų}}",
"trends.trending_now": "Tendencinga dabar", "trends.trending_now": "Tendencinga dabar",

View file

@ -358,7 +358,9 @@
"home.show_announcements": "Vis kunngjeringar", "home.show_announcements": "Vis kunngjeringar",
"ignore_notifications_modal.disclaimer": "Mastodon kan ikkje informera brukarane at du overser varsla deira. Å oversjå varsel vil ikkje hindra at meldingane blir sende.", "ignore_notifications_modal.disclaimer": "Mastodon kan ikkje informera brukarane at du overser varsla deira. Å oversjå varsel vil ikkje hindra at meldingane blir sende.",
"ignore_notifications_modal.filter_instead": "Filtrer i staden", "ignore_notifications_modal.filter_instead": "Filtrer i staden",
"ignore_notifications_modal.filter_to_act_users": "Du kan framleis godta, avvisa eller rapportera brukarar",
"ignore_notifications_modal.filter_to_avoid_confusion": "Å filtrera hjelper til å unngå mogleg forvirring", "ignore_notifications_modal.filter_to_avoid_confusion": "Å filtrera hjelper til å unngå mogleg forvirring",
"ignore_notifications_modal.filter_to_review_separately": "Du kan gå gjennom filtrerte varslingar for seg",
"ignore_notifications_modal.ignore": "Oversjå varsel", "ignore_notifications_modal.ignore": "Oversjå varsel",
"ignore_notifications_modal.limited_accounts_title": "Oversjå varsel frå modererte kontoar?", "ignore_notifications_modal.limited_accounts_title": "Oversjå varsel frå modererte kontoar?",
"ignore_notifications_modal.new_accounts_title": "Oversjå varsel frå nye kontoar?", "ignore_notifications_modal.new_accounts_title": "Oversjå varsel frå nye kontoar?",

View file

@ -21,7 +21,7 @@ interface BaseNotificationGroup
interface BaseNotificationWithStatus<Type extends NotificationWithStatusType> interface BaseNotificationWithStatus<Type extends NotificationWithStatusType>
extends BaseNotificationGroup { extends BaseNotificationGroup {
type: Type; type: Type;
statusId: string; statusId: string | undefined;
} }
interface BaseNotification<Type extends NotificationType> interface BaseNotification<Type extends NotificationType>
@ -126,7 +126,7 @@ export function createNotificationGroupFromJSON(
case 'update': { case 'update': {
const { status_id: statusId, ...groupWithoutStatus } = group; const { status_id: statusId, ...groupWithoutStatus } = group;
return { return {
statusId, statusId: statusId ?? undefined,
sampleAccountIds, sampleAccountIds,
...groupWithoutStatus, ...groupWithoutStatus,
}; };
@ -183,7 +183,7 @@ export function createNotificationGroupFromNotificationJSON(
case 'mention': case 'mention':
case 'poll': case 'poll':
case 'update': case 'update':
return { ...group, statusId: notification.status.id }; return { ...group, statusId: notification.status?.id };
case 'admin.report': case 'admin.report':
return { ...group, report: createReportFromJSON(notification.report) }; return { ...group, report: createReportFromJSON(notification.report) };
case 'severed_relationships': case 'severed_relationships':

View file

@ -1,36 +1,20 @@
export const logOut = () => { import api from 'mastodon/api';
const form = document.createElement('form');
const methodInput = document.createElement('input'); export async function logOut() {
methodInput.setAttribute('name', '_method'); try {
methodInput.setAttribute('value', 'delete'); const response = await api(false).delete<{ redirect_to?: string }>(
methodInput.setAttribute('type', 'hidden'); '/auth/sign_out',
form.appendChild(methodInput); { headers: { Accept: 'application/json' }, withCredentials: true },
const csrfToken = document.querySelector<HTMLMetaElement>(
'meta[name=csrf-token]',
); );
const csrfParam = document.querySelector<HTMLMetaElement>( if (response.status === 200 && response.data.redirect_to)
'meta[name=csrf-param]', window.location.href = response.data.redirect_to;
else
console.error(
'Failed to log out, got an unexpected non-redirect response from the server',
response,
); );
} catch (error) {
if (csrfParam && csrfToken) { console.error('Failed to log out, response was an error', error);
const csrfInput = document.createElement('input');
csrfInput.setAttribute('name', csrfParam.content);
csrfInput.setAttribute('value', csrfToken.content);
csrfInput.setAttribute('type', 'hidden');
form.appendChild(csrfInput);
} }
}
const submitButton = document.createElement('input');
submitButton.setAttribute('type', 'submit');
form.appendChild(submitButton);
form.method = 'post';
form.action = '/auth/sign_out';
form.style.display = 'none';
document.body.appendChild(form);
submitButton.click();
};

View file

@ -713,7 +713,7 @@ body,
top: 15px; top: 15px;
.avatar { .avatar {
border-radius: 4px; border-radius: var(--avatar-border-radius);
width: 40px; width: 40px;
height: 40px; height: 40px;
} }
@ -764,7 +764,7 @@ body,
top: 15px; top: 15px;
.avatar { .avatar {
border-radius: 4px; border-radius: var(--avatar-border-radius);
width: 40px; width: 40px;
height: 40px; height: 40px;
} }
@ -888,6 +888,7 @@ a.name-tag,
.account { .account {
padding: 0; padding: 0;
border: none;
&__avatar-wrapper { &__avatar-wrapper {
margin-inline-start: 0; margin-inline-start: 0;
@ -1611,7 +1612,7 @@ a.sparkline {
position: absolute; position: absolute;
inset-inline-start: 15px; inset-inline-start: 15px;
top: 15px; top: 15px;
border-radius: 4px; border-radius: var(--avatar-border-radius);
width: 40px; width: 40px;
height: 40px; height: 40px;
} }

View file

@ -1808,6 +1808,7 @@ body > [data-popper-placement] {
.account { .account {
padding: 16px; padding: 16px;
border-bottom: 1px solid var(--background-border-color);
.account__display-name { .account__display-name {
flex: 1 1 auto; flex: 1 1 auto;
@ -1996,13 +1997,14 @@ body > [data-popper-placement] {
.account__avatar { .account__avatar {
display: block; display: block;
position: relative; position: relative;
border-radius: var(--avatar-border-radius);
img { img {
display: block; display: block;
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
border-radius: 4px; border-radius: var(--avatar-border-radius);
} }
&-inline { &-inline {
@ -2836,7 +2838,7 @@ $ui-header-logo-wordmark-width: 99px;
overflow: hidden; overflow: hidden;
} }
@media screen and (width >= 631px) { @media screen and (width > $mobile-breakpoint) {
.columns-area { .columns-area {
padding: 0; padding: 0;
} }
@ -4248,6 +4250,10 @@ a.status-card {
} }
} }
.timeline-hint--with-descendants {
border-top: 1px solid var(--background-border-color);
}
.regeneration-indicator { .regeneration-indicator {
text-align: center; text-align: center;
font-size: 16px; font-size: 16px;
@ -4498,10 +4504,19 @@ a.status-card {
opacity: 1; opacity: 1;
z-index: 1; z-index: 1;
position: relative; position: relative;
border-left: 1px solid var(--background-border-color);
border-right: 1px solid var(--background-border-color);
border-bottom: 1px solid var(--background-border-color);
@media screen and (max-width: $no-gap-breakpoint) {
border-left: 0;
border-right: 0;
}
&.collapsed { &.collapsed {
max-height: 0; max-height: 0;
opacity: 0.5; opacity: 0.5;
border-bottom: 0;
} }
&.animating { &.animating {
@ -4518,13 +4533,7 @@ a.status-card {
} }
.column-header__collapsible-inner { .column-header__collapsible-inner {
border: 1px solid var(--background-border-color);
border-top: 0; border-top: 0;
@media screen and (max-width: $no-gap-breakpoint) {
border-left: 0;
border-right: 0;
}
} }
.column-header__setting-btn { .column-header__setting-btn {
@ -5731,7 +5740,7 @@ a.status-card {
user-select: text; user-select: text;
display: flex; display: flex;
@media screen and (width <= 630px) { @media screen and (width <= $mobile-breakpoint) {
margin-top: auto; margin-top: auto;
} }
} }
@ -6090,7 +6099,7 @@ a.status-card {
border-radius: 0 0 16px 16px; border-radius: 0 0 16px 16px;
border-top: 0; border-top: 0;
@media screen and (max-width: $no-gap-breakpoint) { @media screen and (max-width: $mobile-breakpoint) {
border-radius: 0; border-radius: 0;
border-bottom: 0; border-bottom: 0;
padding-bottom: 32px; padding-bottom: 32px;
@ -7971,7 +7980,7 @@ noscript {
.account__avatar { .account__avatar {
background: var(--background-color); background: var(--background-color);
border: 1px solid var(--background-border-color); border: 1px solid var(--background-border-color);
border-radius: 4px; border-radius: var(--avatar-border-radius);
} }
} }
} }
@ -9092,8 +9101,9 @@ noscript {
backdrop-filter: var(--background-filter); backdrop-filter: var(--background-filter);
border: 1px solid var(--modal-border-color); border: 1px solid var(--modal-border-color);
padding: 24px; padding: 24px;
box-sizing: border-box;
@media screen and (max-width: $no-gap-breakpoint) { @media screen and (max-width: $mobile-breakpoint) {
border-radius: 16px 16px 0 0; border-radius: 16px 16px 0 0;
border-bottom: 0; border-bottom: 0;
padding-bottom: 32px; padding-bottom: 32px;

View file

@ -81,7 +81,7 @@
height: 100%; height: 100%;
display: block; display: block;
margin: 0; margin: 0;
border-radius: 4px; border-radius: var(--avatar-border-radius);
} }
} }

View file

@ -312,7 +312,7 @@ code {
margin-bottom: 10px; margin-bottom: 10px;
max-width: 100%; max-width: 100%;
height: auto; height: auto;
border-radius: 4px; border-radius: var(--avatar-border-radius);
background: url('images/void.png'); background: url('images/void.png');
&[src$='missing.png'] { &[src$='missing.png'] {

View file

@ -54,40 +54,21 @@ table {
} }
html { html {
scrollbar-color: lighten($ui-base-color, 4%) rgba($base-overlay-background, 0.1); scrollbar-color: var(--background-border-color);
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 12px; width: 4px;
height: 12px; height: 4px;
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
background: lighten($ui-base-color, 4%); background-color: $ui-highlight-color;
border: 0px none $base-border-color; opacity: .25;
border-radius: 50px;
}
::-webkit-scrollbar-thumb:hover {
background: lighten($ui-base-color, 6%);
}
::-webkit-scrollbar-thumb:active {
background: lighten($ui-base-color, 4%);
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
border: 0px none $base-border-color; background-color: var(--background-border-color);
border-radius: 0;
background: rgba($base-overlay-background, 0.1);
}
::-webkit-scrollbar-track:hover {
background: $ui-base-color;
}
::-webkit-scrollbar-track:active {
background: $ui-base-color;
} }
::-webkit-scrollbar-corner { ::-webkit-scrollbar-corner {

View file

@ -88,6 +88,7 @@ $media-modal-media-max-width: 100%;
$media-modal-media-max-height: 80%; $media-modal-media-max-height: 80%;
$no-gap-breakpoint: 1175px; $no-gap-breakpoint: 1175px;
$mobile-breakpoint: 630px;
$font-sans-serif: 'mastodon-font-sans-serif' !default; $font-sans-serif: 'mastodon-font-sans-serif' !default;
$font-display: 'mastodon-font-display' !default; $font-display: 'mastodon-font-display' !default;
@ -108,4 +109,5 @@ $font-monospace: 'mastodon-font-monospace' !default;
--surface-background-color: #{darken($ui-base-color, 4%)}; --surface-background-color: #{darken($ui-base-color, 4%)};
--surface-variant-background-color: #{$ui-base-color}; --surface-variant-background-color: #{$ui-base-color};
--surface-variant-active-background-color: #{lighten($ui-base-color, 4%)}; --surface-variant-active-background-color: #{lighten($ui-base-color, 4%)};
--avatar-border-radius: 8px;
} }

View file

@ -422,7 +422,7 @@ class MediaAttachment < ApplicationRecord
attachment = public_send(attachment_name) attachment = public_send(attachment_name)
styles = DEFAULT_STYLES | attachment.styles.keys styles = DEFAULT_STYLES | attachment.styles.keys
styles.map { |style| attachment.path(style) } styles.map { |style| attachment.path(style) }
end end.compact
rescue => e rescue => e
# We really don't want any error here preventing media deletion # We really don't want any error here preventing media deletion
Rails.logger.warn "Error #{e.class} busting cache: #{e.message}" Rails.logger.warn "Error #{e.class} busting cache: #{e.message}"

View file

@ -100,7 +100,7 @@ class User < ApplicationRecord
validates :email, presence: true, email_address: true validates :email, presence: true, email_address: true
validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? } validates_with UserEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? }
validates_with EmailMxValidator, if: :validate_email_dns? validates_with EmailMxValidator, if: :validate_email_dns?
validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create

View file

@ -3,6 +3,7 @@
class AcceptNotificationRequestService < BaseService class AcceptNotificationRequestService < BaseService
def call(request) def call(request)
NotificationPermission.create!(account: request.account, from_account: request.from_account) NotificationPermission.create!(account: request.account, from_account: request.from_account)
UnfilterNotificationsWorker.perform_async(request.id) UnfilterNotificationsWorker.perform_async(request.account_id, request.from_account_id)
request.destroy!
end end
end end

View file

@ -5,6 +5,7 @@ class NotifyService < BaseService
MAXIMUM_GROUP_SPAN_HOURS = 12 MAXIMUM_GROUP_SPAN_HOURS = 12
# TODO: the severed_relationships type probably warrants email notifications
NON_EMAIL_TYPES = %i( NON_EMAIL_TYPES = %i(
admin.report admin.report
admin.sign_up admin.sign_up
@ -12,7 +13,6 @@ class NotifyService < BaseService
poll poll
status status
moderation_warning moderation_warning
# TODO: this probably warrants an email notification
severed_relationships severed_relationships
).freeze ).freeze

View file

@ -15,7 +15,7 @@ class EmailMxValidator < ActiveModel::Validator
if resolved_ips.empty? if resolved_ips.empty?
user.errors.add(:email, :unreachable) user.errors.add(:email, :unreachable)
elsif on_blacklist?(resolved_domains, user.sign_up_ip) elsif email_domain_blocked?(resolved_domains, user.sign_up_ip)
user.errors.add(:email, :blocked) user.errors.add(:email, :blocked)
end end
end end
@ -34,9 +34,9 @@ class EmailMxValidator < ActiveModel::Validator
end end
def on_allowlist?(domain) def on_allowlist?(domain)
return false if Rails.configuration.x.email_domains_whitelist.blank? return false if Rails.configuration.x.email_domains_allowlist.blank?
Rails.configuration.x.email_domains_whitelist.include?(domain) Rails.configuration.x.email_domains_allowlist.include?(domain)
end end
def resolve_mx(domain) def resolve_mx(domain)
@ -58,7 +58,7 @@ class EmailMxValidator < ActiveModel::Validator
[ips, records] [ips, records]
end end
def on_blacklist?(domains, attempt_ip) def email_domain_blocked?(domains, attempt_ip)
EmailDomainBlock.block?(domains, attempt_ip: attempt_ip) EmailDomainBlock.block?(domains, attempt_ip: attempt_ip)
end end
end end

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
class BlacklistedEmailValidator < ActiveModel::Validator class UserEmailValidator < ActiveModel::Validator
def validate(user) def validate(user)
return if user.valid_invitation? || user.email.blank? return if user.valid_invitation? || user.email.blank?
@ -23,18 +23,18 @@ class BlacklistedEmailValidator < ActiveModel::Validator
end end
def not_allowed_through_configuration?(email) def not_allowed_through_configuration?(email)
return false if Rails.configuration.x.email_domains_whitelist.blank? return false if Rails.configuration.x.email_domains_allowlist.blank?
domains = Rails.configuration.x.email_domains_whitelist.gsub('.', '\.') domains = Rails.configuration.x.email_domains_allowlist.gsub('.', '\.')
regexp = Regexp.new("@(.+\\.)?(#{domains})$", true) regexp = Regexp.new("@(.+\\.)?(#{domains})$", true)
email !~ regexp email !~ regexp
end end
def disallowed_through_configuration?(email) def disallowed_through_configuration?(email)
return false if Rails.configuration.x.email_domains_blacklist.blank? return false if Rails.configuration.x.email_domains_denylist.blank?
domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.') domains = Rails.configuration.x.email_domains_denylist.gsub('.', '\.')
regexp = Regexp.new("@(.+\\.)?(#{domains})", true) regexp = Regexp.new("@(.+\\.)?(#{domains})", true)
regexp.match?(email) regexp.match?(email)

View file

@ -11,7 +11,7 @@ class Scheduler::AutoCloseRegistrationsScheduler
OPEN_REGISTRATIONS_MODERATOR_THRESHOLD = 1.week + UserTrackingConcern::SIGN_IN_UPDATE_FREQUENCY OPEN_REGISTRATIONS_MODERATOR_THRESHOLD = 1.week + UserTrackingConcern::SIGN_IN_UPDATE_FREQUENCY
def perform def perform
return if Rails.configuration.x.email_domains_whitelist.present? || ENV['DISABLE_AUTOMATIC_SWITCHING_TO_APPROVED_REGISTRATIONS'] == 'true' return if Rails.configuration.x.email_domains_allowlist.present? || ENV['DISABLE_AUTOMATIC_SWITCHING_TO_APPROVED_REGISTRATIONS'] == 'true'
return unless Setting.registrations_mode == 'open' return unless Setting.registrations_mode == 'open'
switch_to_approval_mode! unless active_moderators? switch_to_approval_mode! unless active_moderators?

View file

@ -3,8 +3,19 @@
class UnfilterNotificationsWorker class UnfilterNotificationsWorker
include Sidekiq::Worker include Sidekiq::Worker
def perform(notification_request_id) # Earlier versions of the feature passed a `notification_request` ID
@notification_request = NotificationRequest.find(notification_request_id) # If `to_account_id` is passed, the first argument is an account ID
# TODO for after 4.3.0: drop the single-argument case
def perform(notification_request_or_account_id, from_account_id = nil)
if from_account_id.present?
@notification_request = nil
@from_account = Account.find(from_account_id)
@recipient = Account.find(notification_request_or_account_id)
else
@notification_request = NotificationRequest.find(notification_request_or_account_id)
@from_account = @notification_request.from_account
@recipient = @notification_request.account
end
push_to_conversations! push_to_conversations!
unfilter_notifications! unfilter_notifications!
@ -16,7 +27,7 @@ class UnfilterNotificationsWorker
private private
def push_to_conversations! def push_to_conversations!
notifications_with_private_mentions.find_each { |notification| AccountConversation.add_status(@notification_request.account, notification.target_status) } notifications_with_private_mentions.reorder(nil).find_each(order: :desc) { |notification| AccountConversation.add_status(@recipient, notification.target_status) }
end end
def unfilter_notifications! def unfilter_notifications!
@ -24,11 +35,11 @@ class UnfilterNotificationsWorker
end end
def remove_request! def remove_request!
@notification_request.destroy! @notification_request&.destroy!
end end
def filtered_notifications def filtered_notifications
Notification.where(account: @notification_request.account, from_account: @notification_request.from_account, filtered: true) Notification.where(account: @recipient, from_account: @from_account, filtered: true)
end end
def notifications_with_private_mentions def notifications_with_private_mentions

View file

@ -1,6 +0,0 @@
# frozen_string_literal: true
Rails.application.configure do
config.x.email_domains_blacklist = (ENV['EMAIL_DOMAIN_DENYLIST'] || ENV['EMAIL_DOMAIN_BLACKLIST']) || ''
config.x.email_domains_whitelist = (ENV['EMAIL_DOMAIN_ALLOWLIST'] || ENV['EMAIL_DOMAIN_WHITELIST']) || ''
end

View file

@ -147,7 +147,7 @@ Doorkeeper.configure do
force_ssl_in_redirect_uri false force_ssl_in_redirect_uri false
# Specify what redirect URI's you want to block during Application creation. # Specify what redirect URI's you want to block during Application creation.
# Any redirect URI is whitelisted by default. # Any redirect URI is allowed by default.
# #
# You can use this option in order to forbid URI's with 'javascript' scheme # You can use this option in order to forbid URI's with 'javascript' scheme
# for example. # for example.

View file

@ -0,0 +1,6 @@
# frozen_string_literal: true
Rails.application.configure do
config.x.email_domains_denylist = ENV.fetch('EMAIL_DOMAIN_DENYLIST', nil) || ENV.fetch('EMAIL_DOMAIN_BLACKLIST', '')
config.x.email_domains_allowlist = ENV.fetch('EMAIL_DOMAIN_ALLOWLIST', nil) || ENV.fetch('EMAIL_DOMAIN_WHITELIST', '')
end

View file

@ -21,7 +21,7 @@ cy:
link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date} link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date}
nothing_here: Does dim byd yma! nothing_here: Does dim byd yma!
pin_errors: pin_errors:
following: Rhaid i chi fod yn dilyn y person rydych am ei gymeradwyo, yn barod. following: Rhaid i chi fod yn dilyn y person rydych am ei gymeradwyo, yn barod
posts: posts:
few: Postiadau few: Postiadau
many: Postiadau many: Postiadau
@ -39,6 +39,7 @@ cy:
created_msg: Crëwyd nodyn cymedroli'n llwyddiannus! created_msg: Crëwyd nodyn cymedroli'n llwyddiannus!
destroyed_msg: Dinistriwyd nodyn cymedroli yn llwyddiannus! destroyed_msg: Dinistriwyd nodyn cymedroli yn llwyddiannus!
accounts: accounts:
add_email_domain_block: Rhwystro parth e-bost
approve: Cymeradwyo approve: Cymeradwyo
approved_msg: Wedi llwyddo i gymeradwyo cais cofrestru %{username} approved_msg: Wedi llwyddo i gymeradwyo cais cofrestru %{username}
are_you_sure: Ydych chi'n siŵr? are_you_sure: Ydych chi'n siŵr?
@ -65,6 +66,7 @@ cy:
demote: Diraddio demote: Diraddio
destroyed_msg: Mae data %{username} bellach mewn ciw i gael ei ddileu yn fuan destroyed_msg: Mae data %{username} bellach mewn ciw i gael ei ddileu yn fuan
disable: Rhewi disable: Rhewi
disable_sign_in_token_auth: Analluogi dilysu tocyn e-bost
disable_two_factor_authentication: Diffodd 2FA disable_two_factor_authentication: Diffodd 2FA
disabled: Wedi rhewi disabled: Wedi rhewi
display_name: Enw sgrin display_name: Enw sgrin
@ -73,6 +75,7 @@ cy:
email: E-bost email: E-bost
email_status: Statws e-bost email_status: Statws e-bost
enable: Dadrewi enable: Dadrewi
enable_sign_in_token_auth: Galluogi dilysu tocyn e-bost
enabled: Wedi ei alluogi enabled: Wedi ei alluogi
enabled_msg: Wedi dadrewi cyfrif %{username} yn llwyddiannus enabled_msg: Wedi dadrewi cyfrif %{username} yn llwyddiannus
followers: Dilynwyr followers: Dilynwyr
@ -141,6 +144,7 @@ cy:
resubscribe: Ail danysgrifio resubscribe: Ail danysgrifio
role: Rôl role: Rôl
search: Chwilio search: Chwilio
search_same_email_domain: Defnyddwyr eraill gyda'r un parth e-bost
search_same_ip: Defnyddwyr eraill gyda'r un IP search_same_ip: Defnyddwyr eraill gyda'r un IP
security: Diogelwch security: Diogelwch
security_measures: security_measures:
@ -181,21 +185,26 @@ cy:
approve_appeal: Cymeradwyo'r Apêl approve_appeal: Cymeradwyo'r Apêl
approve_user: Cymeradwyo Defnyddiwr approve_user: Cymeradwyo Defnyddiwr
assigned_to_self_report: Neilltuo Adroddiad assigned_to_self_report: Neilltuo Adroddiad
change_email_user: Newid E-bost ar gyfer Defnyddiwr
change_role_user: Newid Rôl y Defnyddiwr change_role_user: Newid Rôl y Defnyddiwr
confirm_user: Cadarnhau Defnyddiwr confirm_user: Cadarnhau Defnyddiwr
create_account_warning: Creu Rhybydd create_account_warning: Creu Rhybydd
create_announcement: Creu Cyhoeddiad create_announcement: Creu Cyhoeddiad
create_canonical_email_block: Creu Rhwystr E-bost
create_custom_emoji: Creu Emoji Addasedig create_custom_emoji: Creu Emoji Addasedig
create_domain_allow: Creu Caniatáu Parth create_domain_allow: Creu Caniatáu Parth
create_domain_block: Creu Gwaharddiad Parth create_domain_block: Creu Gwaharddiad Parth
create_email_domain_block: Creu Rhwystr Parth E-bost
create_ip_block: Creu rheol IP create_ip_block: Creu rheol IP
create_unavailable_domain: Creu Parth Ddim ar Gael create_unavailable_domain: Creu Parth Ddim ar Gael
create_user_role: Creu Rôl create_user_role: Creu Rôl
demote_user: Diraddio Defnyddiwr demote_user: Diraddio Defnyddiwr
destroy_announcement: Dileu Cyhoeddiad destroy_announcement: Dileu Cyhoeddiad
destroy_canonical_email_block: Dileu Rhwystr E-bost
destroy_custom_emoji: Dileu Emoji Addasedig destroy_custom_emoji: Dileu Emoji Addasedig
destroy_domain_allow: Dileu Caniatáu Parth destroy_domain_allow: Dileu Caniatáu Parth
destroy_domain_block: Dileu Gwaharddiad Parth destroy_domain_block: Dileu Gwaharddiad Parth
destroy_email_domain_block: Dileu Rhwystr Parth E-bost
destroy_instance: Clirio Parth destroy_instance: Clirio Parth
destroy_ip_block: Dileu rheol IP destroy_ip_block: Dileu rheol IP
destroy_status: Dileu Postiad destroy_status: Dileu Postiad
@ -203,8 +212,10 @@ cy:
destroy_user_role: Dileu Rôl destroy_user_role: Dileu Rôl
disable_2fa_user: Diffodd 2FA disable_2fa_user: Diffodd 2FA
disable_custom_emoji: Analluogi Emoji Addasedig disable_custom_emoji: Analluogi Emoji Addasedig
disable_sign_in_token_auth_user: Analluogi Dilysu Tocyn E-bost Defnyddiwr
disable_user: Analluogi Defnyddiwr disable_user: Analluogi Defnyddiwr
enable_custom_emoji: Galluogi Emoji Addasedig enable_custom_emoji: Galluogi Emoji Addasedig
enable_sign_in_token_auth_user: Galluogi Dilysu Tocyn E-bost Defnyddiwr
enable_user: Galluogi Defnyddiwr enable_user: Galluogi Defnyddiwr
memorialize_account: Cofadeilio Cyfrif memorialize_account: Cofadeilio Cyfrif
promote_user: Dyrchafu Defnyddiwr promote_user: Dyrchafu Defnyddiwr
@ -234,20 +245,26 @@ cy:
approve_appeal_html: Mae %{name} wedi cymeradwyo penderfyniad cymedroli gan %{target} approve_appeal_html: Mae %{name} wedi cymeradwyo penderfyniad cymedroli gan %{target}
approve_user_html: Mae %{name} wedi cymeradwyo cofrestru gan %{target} approve_user_html: Mae %{name} wedi cymeradwyo cofrestru gan %{target}
assigned_to_self_report_html: Mae %{name} wedi neilltuo adroddiad %{target} iddyn nhw eu hunain assigned_to_self_report_html: Mae %{name} wedi neilltuo adroddiad %{target} iddyn nhw eu hunain
change_email_user_html: Mae %{name} wedi newid cyfeiriad e-bost defnyddiwr %{target}
change_role_user_html: Mae %{name} wedi newid rôl %{target} change_role_user_html: Mae %{name} wedi newid rôl %{target}
confirm_user_html: Mae %{name} wedi cadarnhau cyfeiriad e-bost defnyddiwr %{target}
create_account_warning_html: Mae %{name} wedi anfon rhybudd at %{target} create_account_warning_html: Mae %{name} wedi anfon rhybudd at %{target}
create_announcement_html: Mae %{name} wedi creu cyhoeddiad newydd %{target} create_announcement_html: Mae %{name} wedi creu cyhoeddiad newydd %{target}
create_canonical_email_block_html: Mae %{name} wedi'i rwystro e-bost gyda'r hash %{target}
create_custom_emoji_html: Mae %{name} wedi llwytho emoji newydd %{target} create_custom_emoji_html: Mae %{name} wedi llwytho emoji newydd %{target}
create_domain_allow_html: Mae %{name} wedi caniatáu ffedereiddio â pharth %{target} create_domain_allow_html: Mae %{name} wedi caniatáu ffedereiddio â pharth %{target}
create_domain_block_html: Mae %{name} wedi rhwystro parth %{target} create_domain_block_html: Mae %{name} wedi rhwystro parth %{target}
create_email_domain_block_html: Mae %{name} wedi rhwystro parth e-bost %{target}
create_ip_block_html: Mae %{name} wedi creu rheol ar gyfer IP %{target} create_ip_block_html: Mae %{name} wedi creu rheol ar gyfer IP %{target}
create_unavailable_domain_html: Mae %{name} wedi stopio danfon i barth %{target} create_unavailable_domain_html: Mae %{name} wedi stopio danfon i barth %{target}
create_user_role_html: Mae %{name} wedi creu rôl %{target} create_user_role_html: Mae %{name} wedi creu rôl %{target}
demote_user_html: Mae %{name} wedi israddio defnyddiwr %{target} demote_user_html: Mae %{name} wedi israddio defnyddiwr %{target}
destroy_announcement_html: Mae %{name} wedi dileu cyhoeddiad %{target} destroy_announcement_html: Mae %{name} wedi dileu cyhoeddiad %{target}
destroy_canonical_email_block_html: Mae %{name} wedi dad-rwystro parth e-bost %{target}
destroy_custom_emoji_html: Mae %{name} wedi dileu emoji %{target} destroy_custom_emoji_html: Mae %{name} wedi dileu emoji %{target}
destroy_domain_allow_html: Mae %{name} wedi gwrthod ffederasiwn gyda pharth %{target} destroy_domain_allow_html: Mae %{name} wedi gwrthod ffederasiwn gyda pharth %{target}
destroy_domain_block_html: Mae %{name} wedi dad rwystro parth %{target} destroy_domain_block_html: Mae %{name} wedi dad rwystro parth %{target}
destroy_email_domain_block_html: Mae %{name} wedi dad-rwystro parth e-bost %{target}
destroy_instance_html: Mae %{name} wedi dileu parth %{target} destroy_instance_html: Mae %{name} wedi dileu parth %{target}
destroy_ip_block_html: Mae %{name} dileu rheol ar gyfer IP %{target} destroy_ip_block_html: Mae %{name} dileu rheol ar gyfer IP %{target}
destroy_status_html: Mae %{name} wedi tynnu postiad gan %{target} destroy_status_html: Mae %{name} wedi tynnu postiad gan %{target}
@ -255,8 +272,10 @@ cy:
destroy_user_role_html: Mae %{name} wedi dileu rôl %{target} destroy_user_role_html: Mae %{name} wedi dileu rôl %{target}
disable_2fa_user_html: Mae %{name} wedi analluogi gofyniad dau ffactor ar gyfer defnyddiwr %{target} disable_2fa_user_html: Mae %{name} wedi analluogi gofyniad dau ffactor ar gyfer defnyddiwr %{target}
disable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target} disable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target}
disable_sign_in_token_auth_user_html: Mae %{name} wedi analluogi dilysiad tocyn e-bost %{target}
disable_user_html: Mae %{name} wedi analluogi mewngofnodi defnyddiwr %{target} disable_user_html: Mae %{name} wedi analluogi mewngofnodi defnyddiwr %{target}
enable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target} enable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target}
enable_sign_in_token_auth_user_html: Mae %{name} wedi galluogi dilysiad tocyn e-bost %{target}
enable_user_html: Mae %{name} wedi galluogi mewngofnodi defnyddiwr %{target} enable_user_html: Mae %{name} wedi galluogi mewngofnodi defnyddiwr %{target}
memorialize_account_html: Newidiodd %{name} gyfrif %{target} i dudalen memoriam memorialize_account_html: Newidiodd %{name} gyfrif %{target} i dudalen memoriam
promote_user_html: Mae %{name} wedi hyrwyddo defnyddiwr %{target} promote_user_html: Mae %{name} wedi hyrwyddo defnyddiwr %{target}
@ -264,6 +283,7 @@ cy:
reject_user_html: Mae %{name} wedi gwrthod cofrestriad gan %{target} reject_user_html: Mae %{name} wedi gwrthod cofrestriad gan %{target}
remove_avatar_user_html: Mae %{name} wedi tynnu afatar %{target} remove_avatar_user_html: Mae %{name} wedi tynnu afatar %{target}
reopen_report_html: Mae %{name} wedi ailagor adroddiad %{target} reopen_report_html: Mae %{name} wedi ailagor adroddiad %{target}
resend_user_html: Mae %{name} wedi ail anfon e-bost cadarnhau i%{target}
reset_password_user_html: Mae %{name} wedi ailosod cyfrinair defnyddiwr %{target} reset_password_user_html: Mae %{name} wedi ailosod cyfrinair defnyddiwr %{target}
resolve_report_html: Mae %{name} wedi datrys adroddiad %{target} resolve_report_html: Mae %{name} wedi datrys adroddiad %{target}
sensitive_account_html: Mae %{name} wedi marcio cyfrwng %{target} fel un sensitif sensitive_account_html: Mae %{name} wedi marcio cyfrwng %{target} fel un sensitif
@ -444,6 +464,7 @@ cy:
other: "%{count} ymgais i gofrestru dros yr wythnos ddiwethaf" other: "%{count} ymgais i gofrestru dros yr wythnos ddiwethaf"
two: "%{count} ymgais i gofrestru dros yr wythnos ddiwethaf" two: "%{count} ymgais i gofrestru dros yr wythnos ddiwethaf"
zero: "%{count} o ymgeisiadau i gofrestru dros yr wythnos ddiwethaf" zero: "%{count} o ymgeisiadau i gofrestru dros yr wythnos ddiwethaf"
created_msg: Parth e-bost wedi'i rwystro'n llwyddiannus
delete: Dileu delete: Dileu
dns: dns:
types: types:
@ -452,8 +473,12 @@ cy:
new: new:
create: Ychwanegu parth create: Ychwanegu parth
resolve: Datrys parth resolve: Datrys parth
title: Rhwystro parth e-bost newydd
no_email_domain_block_selected: Ni newidiwyd unrhyw rwystro parth e-bost gan na ddewiswyd yr un ohonyn nhw
not_permitted: Dim caniatâd not_permitted: Dim caniatâd
resolved_dns_records_hint_html: Mae'r enw parth yn cyd-fynd â'r parthau MX canlynol, sy'n gyfrifol yn y pen draw am dderbyn e-bost. Bydd rhwystro parth MX yn rhwystro cofrestriadau o unrhyw gyfeiriad e-bost sy'n defnyddio'r un parth MX, hyd yn oed os yw'r enw parth gweladwy yn wahanol. <strong>Byddwch yn ofalus i beidio â rhwystro'r prif ddarparwyr e-bost.</strong>
resolved_through_html: Wedi'i ddatrys trwy %{domain} resolved_through_html: Wedi'i ddatrys trwy %{domain}
title: Parthau e-bost wedi'u rhwystro
export_domain_allows: export_domain_allows:
new: new:
title: Mewnforio parth yn caniatáu title: Mewnforio parth yn caniatáu
@ -623,6 +648,7 @@ cy:
resolve_description_html: Ni fydd unrhyw gamau yn cael eu cymryd yn erbyn y cyfrif a adroddwyd, ni chofnodwyd rhybudd, a bydd yr adroddiad yn cael ei gau. resolve_description_html: Ni fydd unrhyw gamau yn cael eu cymryd yn erbyn y cyfrif a adroddwyd, ni chofnodwyd rhybudd, a bydd yr adroddiad yn cael ei gau.
silence_description_html: Bydd y cyfrif yn weladwy i'r rhai sydd eisoes yn ei ddilyn neu'n edrych arno â llaw, gan gyfyngu'n ddifrifol ar ei gyrhaeddiad. Mae modd ei ddychwelyd bob amser. Yn cau pob adroddiad yn erbyn y cyfrif hwn. silence_description_html: Bydd y cyfrif yn weladwy i'r rhai sydd eisoes yn ei ddilyn neu'n edrych arno â llaw, gan gyfyngu'n ddifrifol ar ei gyrhaeddiad. Mae modd ei ddychwelyd bob amser. Yn cau pob adroddiad yn erbyn y cyfrif hwn.
suspend_description_html: Bydd y cyfrif a'i holl gynnwys yn anhygyrch ac yn cael ei ddileu yn y pen draw, a bydd rhyngweithio ag ef yn amhosibl. Yn gildroadwy o fewn 30 diwrnod. Yn cau pob adroddiad yn erbyn y cyfrif hwn. suspend_description_html: Bydd y cyfrif a'i holl gynnwys yn anhygyrch ac yn cael ei ddileu yn y pen draw, a bydd rhyngweithio ag ef yn amhosibl. Yn gildroadwy o fewn 30 diwrnod. Yn cau pob adroddiad yn erbyn y cyfrif hwn.
actions_description_html: Penderfynwch pa gamau i'w cymryd i delio gyda'r adroddiad hwn. Os cymerwch gamau cosbi yn erbyn y cyfrif a adroddwyd, bydd hysbysiad e-bost yn cael ei anfon atyn nhw, ac eithrio pan fydd y categori <strong>Sbam</strong> yn cael ei ddewis.
actions_description_remote_html: Penderfynwch pa gamau i'w cymryd i ddatrys yr adroddiad hwn. Bydd hyn ond yn effeithio ar sut <strong>mae'ch</strong> gweinydd yn cyfathrebu â'r cyfrif hwn o bell ac yn trin ei gynnwys. actions_description_remote_html: Penderfynwch pa gamau i'w cymryd i ddatrys yr adroddiad hwn. Bydd hyn ond yn effeithio ar sut <strong>mae'ch</strong> gweinydd yn cyfathrebu â'r cyfrif hwn o bell ac yn trin ei gynnwys.
add_to_report: Ychwanegu rhagor i adroddiad add_to_report: Ychwanegu rhagor i adroddiad
already_suspended_badges: already_suspended_badges:
@ -687,6 +713,7 @@ cy:
delete_data_html: Dileu proffil a chynnwys <strong>@%{acct}</strong> 30 diwrnod o nawr oni bai ei b/fod heb ei h/atal yn y cyfamser delete_data_html: Dileu proffil a chynnwys <strong>@%{acct}</strong> 30 diwrnod o nawr oni bai ei b/fod heb ei h/atal yn y cyfamser
preview_preamble_html: 'Bydd <strong>@%{acct}</strong> yn derbyn rhybudd gyda''r cynnwys canlynol:' preview_preamble_html: 'Bydd <strong>@%{acct}</strong> yn derbyn rhybudd gyda''r cynnwys canlynol:'
record_strike_html: Recordio rhybudd yn erbyn <strong>@%{acct}</strong> i'ch helpu i ddwysáu ar achosion o dorri rheolau yn y dyfodol o'r cyfrif hwn record_strike_html: Recordio rhybudd yn erbyn <strong>@%{acct}</strong> i'ch helpu i ddwysáu ar achosion o dorri rheolau yn y dyfodol o'r cyfrif hwn
send_email_html: Anfon e-bost rhybuddio <strong>at @%{acct}</strong>
warning_placeholder: Rhesymeg ychwanegol dewisol ar gyfer y cam cymedroli. warning_placeholder: Rhesymeg ychwanegol dewisol ar gyfer y cam cymedroli.
target_origin: Tarddiad y cyfrif a adroddwyd target_origin: Tarddiad y cyfrif a adroddwyd
title: Adroddiadau title: Adroddiadau
@ -734,6 +761,7 @@ cy:
manage_appeals: Rheoli Apeliadau manage_appeals: Rheoli Apeliadau
manage_appeals_description: Yn caniatáu i ddefnyddwyr adolygu apeliadau yn erbyn camau cymedroli manage_appeals_description: Yn caniatáu i ddefnyddwyr adolygu apeliadau yn erbyn camau cymedroli
manage_blocks: Rheoli Blociau manage_blocks: Rheoli Blociau
manage_blocks_description: Yn caniatáu i ddefnyddwyr rwystro darparwyr e-bost a chyfeiriadau IP
manage_custom_emojis: Rheoli Emojis Cyfaddas manage_custom_emojis: Rheoli Emojis Cyfaddas
manage_custom_emojis_description: Yn caniatáu i ddefnyddwyr reoli emojis cyfaddas ar y gweinydd manage_custom_emojis_description: Yn caniatáu i ddefnyddwyr reoli emojis cyfaddas ar y gweinydd
manage_federation: Rheoli Ffederasiwn manage_federation: Rheoli Ffederasiwn
@ -751,6 +779,7 @@ cy:
manage_taxonomies: Rheoli Tacsonomeg manage_taxonomies: Rheoli Tacsonomeg
manage_taxonomies_description: Yn caniatáu i ddefnyddwyr adolygu cynnwys sy'n trendio a diweddaru gosodiadau hashnodau manage_taxonomies_description: Yn caniatáu i ddefnyddwyr adolygu cynnwys sy'n trendio a diweddaru gosodiadau hashnodau
manage_user_access: Rheoli Mynediad Defnyddwyr manage_user_access: Rheoli Mynediad Defnyddwyr
manage_user_access_description: Yn caniatáu i ddefnyddwyr analluogi dilysiad dau ffactor defnyddwyr eraill, newid eu cyfeiriad e-bost, ac ailosod eu cyfrinair
manage_users: Rheoli Defnyddwyr manage_users: Rheoli Defnyddwyr
manage_users_description: Yn caniatáu i ddefnyddwyr weld manylion defnyddwyr eraill a chyflawni camau cymedroli yn eu herbyn manage_users_description: Yn caniatáu i ddefnyddwyr weld manylion defnyddwyr eraill a chyflawni camau cymedroli yn eu herbyn
manage_webhooks: Rheoli Bachau Gwe manage_webhooks: Rheoli Bachau Gwe
@ -825,6 +854,7 @@ cy:
destroyed_msg: Llwytho i fyny i'r wefan wedi'i dileu yn llwyddiannus! destroyed_msg: Llwytho i fyny i'r wefan wedi'i dileu yn llwyddiannus!
software_updates: software_updates:
critical_update: Hanfodol - diweddarwch yn fuan critical_update: Hanfodol - diweddarwch yn fuan
description: Argymhellir cadw'ch gosodiad Mastodon yn gyfredol i elwa o'r atgyweiriadau a'r nodweddion diweddaraf. Hefyd, weithiau mae'n hanfodol diweddaru Mastodon mewn modd amserol er mwyn osgoi materion diogelwch. Am y rhesymau hyn, mae Mastodon yn gwirio am ddiweddariadau bob 30 munud, a bydd yn eich hysbysu yn unol â'ch dewisiadau hysbysu e-bost.
documentation_link: Dysgu rhagor documentation_link: Dysgu rhagor
release_notes: Nodiadau ryddhau release_notes: Nodiadau ryddhau
title: Diweddariadau ar gael title: Diweddariadau ar gael
@ -912,13 +942,13 @@ cy:
message_html: "<strong>Mae eich storfa gwrthrychau wedi'i cham ffurfweddu. Mae preifatrwydd eich defnyddwyr mewn perygl.</strong>" message_html: "<strong>Mae eich storfa gwrthrychau wedi'i cham ffurfweddu. Mae preifatrwydd eich defnyddwyr mewn perygl.</strong>"
tags: tags:
moderation: moderation:
not_trendable: Ddim yn dueddol not_trendable: Ddim yn trendio
not_usable: Ddim yn ddefnyddiadwy not_usable: Ddim yn ddefnyddiadwy
pending_review: O dan ystyriaeth pending_review: O dan ystyriaeth
review_requested: Gofynnwyd am adolygiad review_requested: Gofynnwyd am adolygiad
reviewed: Adolygwyd reviewed: Adolygwyd
title: Statws title: Statws
trendable: Tueddadwy trendable: Trendadwy
unreviewed: Heb ei adolygu unreviewed: Heb ei adolygu
usable: Defnyddiadwy usable: Defnyddiadwy
name: Enw name: Enw
@ -933,10 +963,16 @@ cy:
trends: trends:
allow: Caniatáu allow: Caniatáu
approved: Cymeradwywyd approved: Cymeradwywyd
confirm_allow: Ydych chi'n siŵr eich bod am ganiatáu'r tagiau a ddewiswyd?
confirm_disallow: Ydych chi'n siŵr eich bod am wrthod y tagiau hyn?
disallow: Gwrthod disallow: Gwrthod
links: links:
allow: Caniatáu dolen allow: Caniatáu dolen
allow_provider: Caniatáu cyhoeddwr allow_provider: Caniatáu cyhoeddwr
confirm_allow: Ydych chi'n siŵr eich bod am ganiatáu'r dolenni hyn?
confirm_allow_provider: Ydych chi'n siŵr eich bod am ganiatáu'r darparwyr hyn?
confirm_disallow: Ydych chi'n siŵr eich bod am wrthod y dolenni hyn?
confirm_disallow_provider: A ydych yn siŵr eich bod am wrthod y darparwyr hyn?
description_html: Mae'r rhain yn ddolenni sy'n cael eu rhannu llawer ar hyn o bryd gan gyfrifon y mae eich gweinydd yn gweld postiadau ohonyn nhw. Gall helpu eich defnyddwyr i ddarganfod beth sy'n digwydd yn y byd. Ni chaiff unrhyw ddolenni eu dangos yn gyhoeddus nes i chi gymeradwyo'r cyhoeddwr. Gallwch hefyd ganiatáu neu wrthod dolenni unigol. description_html: Mae'r rhain yn ddolenni sy'n cael eu rhannu llawer ar hyn o bryd gan gyfrifon y mae eich gweinydd yn gweld postiadau ohonyn nhw. Gall helpu eich defnyddwyr i ddarganfod beth sy'n digwydd yn y byd. Ni chaiff unrhyw ddolenni eu dangos yn gyhoeddus nes i chi gymeradwyo'r cyhoeddwr. Gallwch hefyd ganiatáu neu wrthod dolenni unigol.
disallow: Gwrthod dolen disallow: Gwrthod dolen
disallow_provider: Gwrthod y cyhoeddwr disallow_provider: Gwrthod y cyhoeddwr
@ -952,18 +988,22 @@ cy:
zero: Wedi'i rannu gan %{count} o bobl dros yr wythnos ddiwethaf zero: Wedi'i rannu gan %{count} o bobl dros yr wythnos ddiwethaf
title: Dolenni sy'n trendio title: Dolenni sy'n trendio
usage_comparison: Wedi'i rannu %{today} gwaith heddiw, o'i gymharu â %{yesterday} ddoe usage_comparison: Wedi'i rannu %{today} gwaith heddiw, o'i gymharu â %{yesterday} ddoe
not_allowed_to_trend: Dim caniatâd i dueddu not_allowed_to_trend: Dim caniatâd i trendio
only_allowed: Derbyniwyd yn unig only_allowed: Derbyniwyd yn unig
pending_review: Yn aros am adolygiad pending_review: Yn aros am adolygiad
preview_card_providers: preview_card_providers:
allowed: Gall dolenni gan y cyhoeddwr hwn greu tuedd allowed: Gall dolenni gan y cyhoeddwr hwn greu trend
description_html: Mae'r rhain yn barthau lle mae dolenni'n cael eu rhannu'n aml ar eich gweinydd. Ni fydd dolenni'n trendio'n gyhoeddus oni bai bod parth y ddolen yn cael ei gymeradwyo. Mae eich cymeradwyaeth (neu eich gwrthodiad) yn ymestyn i is-barthau. description_html: Mae'r rhain yn barthau lle mae dolenni'n cael eu rhannu'n aml ar eich gweinydd. Ni fydd dolenni'n trendio'n gyhoeddus oni bai bod parth y ddolen yn cael ei gymeradwyo. Mae eich cymeradwyaeth (neu eich gwrthodiad) yn ymestyn i is-barthau.
rejected: Ni fydd dolenni gan y cyhoeddwr hwn yn creu tuedd rejected: Ni fydd dolenni gan y cyhoeddwr hwn yn creu trend
title: Cyhoeddwyr title: Cyhoeddwyr
rejected: Gwrthodwyd rejected: Gwrthodwyd
statuses: statuses:
allow: Caniatáu postiad allow: Caniatáu postiad
allow_account: Caniatáu awdur allow_account: Caniatáu awdur
confirm_allow: Ydych chi'n siŵr eich bod am ganiatáu'r statws hyn?
confirm_allow_account: Ydych chi'n siŵr eich bod am ganiatáu'r cyfrifon hyn?
confirm_disallow: A ydych yn siŵr eich bod am wrthod y statws hyn?
confirm_disallow_account: A ydych yn siŵr eich bod am wrthod y cyfrifon hyn?
description_html: Mae'r rhain yn bostiadau y mae eich gweinydd yn gwybod amdanyn nhw sy'n cael eu rhannu a'u ffafrio llawer ar hyn o bryd. Gall helpu eich defnyddwyr newydd a'ch defnyddwyr sy'n dychwelyd i ddod o hyd i fwy o bobl i'w dilyn. Ni chaiff unrhyw bostiadau eu dangos yn gyhoeddus nes i chi gymeradwyo'r awdur, ac mae'r awdur yn caniatáu i'w cyfrif gael ei awgrymu i eraill. Gallwch hefyd ganiatáu neu wrthod postiadau unigol. description_html: Mae'r rhain yn bostiadau y mae eich gweinydd yn gwybod amdanyn nhw sy'n cael eu rhannu a'u ffafrio llawer ar hyn o bryd. Gall helpu eich defnyddwyr newydd a'ch defnyddwyr sy'n dychwelyd i ddod o hyd i fwy o bobl i'w dilyn. Ni chaiff unrhyw bostiadau eu dangos yn gyhoeddus nes i chi gymeradwyo'r awdur, ac mae'r awdur yn caniatáu i'w cyfrif gael ei awgrymu i eraill. Gallwch hefyd ganiatáu neu wrthod postiadau unigol.
disallow: Gwrthod postiad disallow: Gwrthod postiad
disallow_account: Gwrthod awdur disallow_account: Gwrthod awdur
@ -1004,6 +1044,7 @@ cy:
other: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf other: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf
two: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf two: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf
zero: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf zero: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf
title: Argymhellion a Threndiau
trending: Trendio trending: Trendio
warning_presets: warning_presets:
add_new: Ychwanegu newydd add_new: Ychwanegu newydd
@ -1092,7 +1133,9 @@ cy:
guide_link_text: Gall pawb gyfrannu. guide_link_text: Gall pawb gyfrannu.
sensitive_content: Cynnwys sensitif sensitive_content: Cynnwys sensitif
application_mailer: application_mailer:
notification_preferences: Newid dewisiadau e-bost
salutation: "%{name}," salutation: "%{name},"
settings: 'Newid dewisiadau e-bost: %{link}'
unsubscribe: Dad-danysgrifio unsubscribe: Dad-danysgrifio
view: 'Gweld:' view: 'Gweld:'
view_profile: Gweld proffil view_profile: Gweld proffil
@ -1112,6 +1155,7 @@ cy:
hint_html: Un peth arall! Mae angen i ni gadarnhau eich bod yn ddynol (mae hyn er mwyn i ni allu cadw'r sbam allan!). Datryswch y CAPTCHA isod a chliciwch "Parhau". hint_html: Un peth arall! Mae angen i ni gadarnhau eich bod yn ddynol (mae hyn er mwyn i ni allu cadw'r sbam allan!). Datryswch y CAPTCHA isod a chliciwch "Parhau".
title: Gwiriad diogelwch title: Gwiriad diogelwch
confirmations: confirmations:
awaiting_review: Mae eich cyfeiriad e-bost wedi'i gadarnhau! Mae aelod o staff %{domain} bellach yn adolygu'ch cofrestriad. Byddwch yn derbyn e-bost os ydyn nhw'n cymeradwyo eich cyfrif!
awaiting_review_title: Mae eich cofrestriad yn cael ei adolygu awaiting_review_title: Mae eich cofrestriad yn cael ei adolygu
clicking_this_link: clicio ar y ddolen hon clicking_this_link: clicio ar y ddolen hon
login_link: mewngofnodi login_link: mewngofnodi
@ -1119,6 +1163,7 @@ cy:
redirect_to_app_html: Dylech fod wedi cael eich ailgyfeirio i ap <strong>%{app_name}</strong>. Os na ddigwyddodd hynny, rhowch gynnig ar %{clicking_this_link} neu ewch eich hun i'r ap. redirect_to_app_html: Dylech fod wedi cael eich ailgyfeirio i ap <strong>%{app_name}</strong>. Os na ddigwyddodd hynny, rhowch gynnig ar %{clicking_this_link} neu ewch eich hun i'r ap.
registration_complete: Mae eich cofrestriad ar %{domain} bellach wedi'i gwblhau! registration_complete: Mae eich cofrestriad ar %{domain} bellach wedi'i gwblhau!
welcome_title: Croeso, %{name}! welcome_title: Croeso, %{name}!
wrong_email_hint: Os nad yw'r cyfeiriad e-bost hwnnw'n gywir, gallwch ei newid yng ngosodiadau'r cyfrif.
delete_account: Dileu cyfrif delete_account: Dileu cyfrif
delete_account_html: Os hoffech chi ddileu eich cyfrif, mae modd <a href="%{path}">parhau yma</a>. Bydd gofyn i chi gadarnhau. delete_account_html: Os hoffech chi ddileu eich cyfrif, mae modd <a href="%{path}">parhau yma</a>. Bydd gofyn i chi gadarnhau.
description: description:
@ -1139,6 +1184,7 @@ cy:
or_log_in_with: Neu mewngofnodwch gyda or_log_in_with: Neu mewngofnodwch gyda
privacy_policy_agreement_html: Rwyf wedi darllen ac yn cytuno i'r <a href="%{privacy_policy_path}" target="_blank">polisi preifatrwydd</a> privacy_policy_agreement_html: Rwyf wedi darllen ac yn cytuno i'r <a href="%{privacy_policy_path}" target="_blank">polisi preifatrwydd</a>
progress: progress:
confirm: Cadarnhau'r e-bost
details: Eich manylion details: Eich manylion
review: Ein hadolygiad review: Ein hadolygiad
rules: Derbyn rheolau rules: Derbyn rheolau
@ -1160,8 +1206,10 @@ cy:
security: Diogelwch security: Diogelwch
set_new_password: Gosod cyfrinair newydd set_new_password: Gosod cyfrinair newydd
setup: setup:
email_below_hint_html: Gwiriwch eich ffolder sbam, neu gofynnwch am un arall. Gallwch gywiro eich cyfeiriad e-bost os yw'n anghywir.
email_settings_hint_html: Cliciwch ar y ddolen a anfonwyd atoch i wirio %{email}. Byddwn yn aros yma amdanoch. email_settings_hint_html: Cliciwch ar y ddolen a anfonwyd atoch i wirio %{email}. Byddwn yn aros yma amdanoch.
link_not_received: Heb gael dolen? link_not_received: Heb gael dolen?
new_confirmation_instructions_sent: Byddwch yn derbyn e-bost newydd gyda'r ddolen gadarnhau ymhen ychydig funudau!
title: Gwiriwch eich blwch derbyn title: Gwiriwch eich blwch derbyn
sign_in: sign_in:
preamble_html: Mewngofnodwch gyda'ch manylion <strong>%{domain}</strong>. Os yw eich cyfrif yn cael ei gynnal ar weinydd gwahanol, ni fydd modd i chi fewngofnodi yma. preamble_html: Mewngofnodwch gyda'ch manylion <strong>%{domain}</strong>. Os yw eich cyfrif yn cael ei gynnal ar weinydd gwahanol, ni fydd modd i chi fewngofnodi yma.
@ -1172,7 +1220,9 @@ cy:
title: Gadewch i ni eich gosod ar %{domain}. title: Gadewch i ni eich gosod ar %{domain}.
status: status:
account_status: Statws cyfrif account_status: Statws cyfrif
confirming: Wrthi'n aros i gadarnhad e-bost gael ei gwblhau.
functional: Mae eich cyfrif nawr yn weithredol. functional: Mae eich cyfrif nawr yn weithredol.
pending: Mae eich cais yn aros i gael ei adolygu gan ein staff. Gall hyn gymryd peth amser. Byddwch yn derbyn e-bost os caiff eich cais ei gymeradwyo.
redirecting_to: Mae eich cyfrif yn anweithredol oherwydd ei fod ar hyn o bryd yn ailgyfeirio i %{acct}. redirecting_to: Mae eich cyfrif yn anweithredol oherwydd ei fod ar hyn o bryd yn ailgyfeirio i %{acct}.
self_destruct: Gab fod parth %{domain} yn cau, dim ond mynediad cyfyngedig fyddwch yn ei gael i'ch cyfrif. self_destruct: Gab fod parth %{domain} yn cau, dim ond mynediad cyfyngedig fyddwch yn ei gael i'ch cyfrif.
view_strikes: Gweld rybuddion y gorffennol yn erbyn eich cyfrif view_strikes: Gweld rybuddion y gorffennol yn erbyn eich cyfrif
@ -1215,6 +1265,9 @@ cy:
before: 'Cyn bwrw ymlaen, darllenwch y nodiadau hyn yn ofalus:' before: 'Cyn bwrw ymlaen, darllenwch y nodiadau hyn yn ofalus:'
caches: Efallai bydd cynnwys sydd wedi'i storio dros dro gan weinyddion eraill yn parhau caches: Efallai bydd cynnwys sydd wedi'i storio dros dro gan weinyddion eraill yn parhau
data_removal: Bydd eich postiadau a data arall yn cael eu dileu'n barhaol data_removal: Bydd eich postiadau a data arall yn cael eu dileu'n barhaol
email_change_html: Gallwch <a href="%{path}">newid eich cyfeiriad e-bost</a> heb ddileu eich cyfrif
email_contact_html: Os nad yw byth wedi cyrraedd, gallwch anfon e-bost at <a href="mailto:%{email}">%{email}</a> am help
email_reconfirmation_html: Os nad ydych yn derbyn yr e-bost cadarnhau, gallwch <a href="%{path}">ofyn amdano eto</a>
irreversible: Fyddwch chi ddim yn gallu adfer nac ail-greu eich cyfrif irreversible: Fyddwch chi ddim yn gallu adfer nac ail-greu eich cyfrif
more_details_html: Am fwy o fanylion, darllenwch y <a href="%{terms_path}">polisi preifatrwydd</a>. more_details_html: Am fwy o fanylion, darllenwch y <a href="%{terms_path}">polisi preifatrwydd</a>.
username_available: Bydd eich enw defnyddiwr ar gael eto username_available: Bydd eich enw defnyddiwr ar gael eto
@ -1479,6 +1532,7 @@ cy:
authentication_methods: authentication_methods:
otp: ap dilysu dau ffactor otp: ap dilysu dau ffactor
password: cyfrinair password: cyfrinair
sign_in_token: cod diogelwch e-bost
webauthn: allweddi diogelwch webauthn: allweddi diogelwch
description_html: Os ydych yn gweld gweithgaredd nad ydych yn ei adnabod, ystyriwch newid eich cyfrinair a galluogi dilysu dau ffactor. description_html: Os ydych yn gweld gweithgaredd nad ydych yn ei adnabod, ystyriwch newid eich cyfrinair a galluogi dilysu dau ffactor.
empty: Dim hanes dilysu ar gael empty: Dim hanes dilysu ar gael
@ -1489,6 +1543,16 @@ cy:
unsubscribe: unsubscribe:
action: Iawn, dad-danysgrifio action: Iawn, dad-danysgrifio
complete: Dad-danysgrifiwyd complete: Dad-danysgrifiwyd
confirmation_html: Ydych chi'n siŵr eich bod am ddad-danysgrifio rhag derbyn %{type} Mastodon ar %{domain} i'ch e-bost yn %{email}? Gallwch ail-danysgrifio o'ch <a href="%{settings_path}">gosodiadau hysbysu e-bost</a> rhywbryd eto .
emails:
notification_emails:
favourite: e-bost hysbysu hoffi
follow: e-byst hysbysu dilyn
follow_request: e-byst ceisiadau dilyn
mention: e-byst hysbysu crybwylliadau
reblog: e-byst hysbysiadau hybu
resubscribe_html: Os ydych wedi dad-danysgrifio trwy gamgymeriad, gallwch ail-danysgrifio drwy'ch <a href="%{settings_path}">gosodiadau hysbysu e-bost</a> .
success_html: Ni fyddwch bellach yn derbyn %{type} ar gyfer Mastodon ar %{domain} i'ch e-bost am %{email}.
title: Dad-danysgrifio title: Dad-danysgrifio
media_attachments: media_attachments:
validations: validations:
@ -1569,6 +1633,8 @@ cy:
update: update:
subject: Golygodd %{name} bostiad subject: Golygodd %{name} bostiad
notifications: notifications:
administration_emails: E-byst hysbysiadau gweinyddol
email_events: Digwyddiadau ar gyfer hysbysiadau e-bost
email_events_hint: 'Dewiswch ddigwyddiadau yr ydych am dderbyn hysbysiadau ar eu cyfer:' email_events_hint: 'Dewiswch ddigwyddiadau yr ydych am dderbyn hysbysiadau ar eu cyfer:'
number: number:
human: human:
@ -1727,6 +1793,7 @@ cy:
import: Mewnforio import: Mewnforio
import_and_export: Mewnforio ac allforio import_and_export: Mewnforio ac allforio
migrate: Mudo cyfrif migrate: Mudo cyfrif
notifications: Hysbysiadau e-bost
preferences: Dewisiadau preferences: Dewisiadau
profile: Proffil cyhoeddus profile: Proffil cyhoeddus
relationships: Yn dilyn a dilynwyr relationships: Yn dilyn a dilynwyr
@ -1983,9 +2050,9 @@ cy:
other: "%{people} o bobl yn y 2 ddiwrnod diwethaf" other: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
two: "%{people} o bobl yn y 2 ddiwrnod diwethaf" two: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
zero: "%{people} o bobl yn y 2 ddiwrnod diwethaf" zero: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
hashtags_subtitle: Gweld beth sy'n tueddu dros y 2 ddiwrnod diwethaf hashtags_subtitle: Gweld beth sy'n trendio dros y 2 ddiwrnod diwethaf
hashtags_title: Hashnodau tuedd hashtags_title: Hashnodau trendio
hashtags_view_more: Gweld mwy o hashnodau tuedd hashtags_view_more: Gweld mwy o hashnodau trendio
post_action: Creu post_action: Creu
post_step: Dywedwch helo wrth y byd gyda thestun, lluniau, fideos neu arolygon barn. post_step: Dywedwch helo wrth y byd gyda thestun, lluniau, fideos neu arolygon barn.
post_title: Creu'ch postiad cyntaf post_title: Creu'ch postiad cyntaf
@ -2001,6 +2068,7 @@ cy:
invalid_otp_token: Côd dau-ffactor annilys invalid_otp_token: Côd dau-ffactor annilys
otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email} otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email}
rate_limited: Gormod o geisiadau dilysu, ceisiwch eto yn nes ymlaen. rate_limited: Gormod o geisiadau dilysu, ceisiwch eto yn nes ymlaen.
seamless_external_login: Rydych chi wedi mewngofnodi trwy wasanaeth allanol, felly nid yw gosodiadau cyfrinair ac e-bost ar gael.
signed_in_as: 'Wedi mewngofnodi fel:' signed_in_as: 'Wedi mewngofnodi fel:'
verification: verification:
extra_instructions_html: <strong>Awgrym:</strong> Gall y ddolen ar eich gwefan fod yn anweledig. Y rhan bwysig yw <code>rel="me"</code> sy'n atal dynwarediad ar wefannau gyda chynnwys sy'n cael ei gynyrchu gan ddefnyddwyr. Gallwch hyd yn oed ddefnyddio tag <code>link</code> ym mhennyn y dudalen yn lle <code>a</code>, ond rhaid i'r HTML fod yn hygyrch heb weithredu JavaScript. extra_instructions_html: <strong>Awgrym:</strong> Gall y ddolen ar eich gwefan fod yn anweledig. Y rhan bwysig yw <code>rel="me"</code> sy'n atal dynwarediad ar wefannau gyda chynnwys sy'n cael ei gynyrchu gan ddefnyddwyr. Gallwch hyd yn oed ddefnyddio tag <code>link</code> ym mhennyn y dudalen yn lle <code>a</code>, ond rhaid i'r HTML fod yn hygyrch heb weithredu JavaScript.

View file

@ -686,7 +686,7 @@ da:
moderation: Moderering moderation: Moderering
special: Speciel special: Speciel
delete: Slet delete: Slet
description_html: Med <strong>brugerroller</strong>kan man tilpasse sine brugeres adgang til Mastodon-funktioner og -områder. description_html: Med <strong>brugerroller</strong> kan man tilpasse sine brugeres adgang til Mastodon-funktioner og -områder.
edit: Redigér rolle for '%{name} edit: Redigér rolle for '%{name}
everyone: Standardtilladelser everyone: Standardtilladelser
everyone_full_description_html: Dette er <strong>basisrollen</strong> med indvirkning på <strong>alle brugere</strong>, selv dem uden rolletildeling. Alle øvrige rolletilladelser nedarves herfra. everyone_full_description_html: Dette er <strong>basisrollen</strong> med indvirkning på <strong>alle brugere</strong>, selv dem uden rolletildeling. Alle øvrige rolletilladelser nedarves herfra.

View file

@ -31,6 +31,7 @@ fo:
created_msg: Umsjónarviðmerking stovnað! created_msg: Umsjónarviðmerking stovnað!
destroyed_msg: Umsjónarviðmerking strikað! destroyed_msg: Umsjónarviðmerking strikað!
accounts: accounts:
add_email_domain_block: Forða t-post økisnavni
approve: Vátta approve: Vátta
approved_msg: Góðkent tilmeldingarumbøn hjá %{username} approved_msg: Góðkent tilmeldingarumbøn hjá %{username}
are_you_sure: Ert tú vís/ur? are_you_sure: Ert tú vís/ur?
@ -129,6 +130,7 @@ fo:
resubscribe: Tegna teg umaftur resubscribe: Tegna teg umaftur
role: Leiklutur role: Leiklutur
search: Leita search: Leita
search_same_email_domain: Aðrir brúkarar við sama t-post-økisnavni
search_same_ip: Aðrir brúkarar við somu IP search_same_ip: Aðrir brúkarar við somu IP
security: Trygd security: Trygd
security_measures: security_measures:
@ -169,21 +171,26 @@ fo:
approve_appeal: Góðkenn kæru approve_appeal: Góðkenn kæru
approve_user: Góðkenn brúkara approve_user: Góðkenn brúkara
assigned_to_self_report: Tilluta melding assigned_to_self_report: Tilluta melding
change_email_user: Broyt t-post hjá brúkara
change_role_user: Broyt leiklut hjá brúkara change_role_user: Broyt leiklut hjá brúkara
confirm_user: Vátta brúkara confirm_user: Vátta brúkara
create_account_warning: Stovna ávaring create_account_warning: Stovna ávaring
create_announcement: Stovna kunngerð create_announcement: Stovna kunngerð
create_canonical_email_block: Stovna t-post-blokk
create_custom_emoji: Stovna serligt kenslutekn create_custom_emoji: Stovna serligt kenslutekn
create_domain_allow: Stovna navnaøkjaloyvi create_domain_allow: Stovna navnaøkjaloyvi
create_domain_block: Stovna navnaøkjablokering create_domain_block: Stovna navnaøkjablokering
create_email_domain_block: Stovna t-post-økisnavnablokk
create_ip_block: Stovna IP reglu create_ip_block: Stovna IP reglu
create_unavailable_domain: Stovna navnaøki, sum ikki er tøkt create_unavailable_domain: Stovna navnaøki, sum ikki er tøkt
create_user_role: Stovna leiklut create_user_role: Stovna leiklut
demote_user: Lækka brúkara í tign demote_user: Lækka brúkara í tign
destroy_announcement: Strika kunngerð destroy_announcement: Strika kunngerð
destroy_canonical_email_block: Strika t-postablokk
destroy_custom_emoji: Strika serligt kenslutekn destroy_custom_emoji: Strika serligt kenslutekn
destroy_domain_allow: Strika navnaøkjaloyvi destroy_domain_allow: Strika navnaøkjaloyvi
destroy_domain_block: Strika navnaøkjablokering destroy_domain_block: Strika navnaøkjablokering
destroy_email_domain_block: Strika t-posta-økisnavnablokk
destroy_instance: Reinsa navnaøki destroy_instance: Reinsa navnaøki
destroy_ip_block: Strika IP reglu destroy_ip_block: Strika IP reglu
destroy_status: Strika post destroy_status: Strika post
@ -222,7 +229,9 @@ fo:
approve_appeal_html: "%{name} góðkendi umsjónaráheitan frá %{target}" approve_appeal_html: "%{name} góðkendi umsjónaráheitan frá %{target}"
approve_user_html: "%{name} góðtók umsókn frá %{target}" approve_user_html: "%{name} góðtók umsókn frá %{target}"
assigned_to_self_report_html: "%{name} tillutaði frágreiðing %{target} til sín sjálvs" assigned_to_self_report_html: "%{name} tillutaði frágreiðing %{target} til sín sjálvs"
change_email_user_html: "%{name} broytti t-postin hjá brúkara %{target}"
change_role_user_html: "%{name} broytti leiklutin hjá %{target}" change_role_user_html: "%{name} broytti leiklutin hjá %{target}"
confirm_user_html: "%{name} váttaði t-post hjá brúkara %{target}"
create_account_warning_html: "%{name} sendi eina ávaring til %{target}" create_account_warning_html: "%{name} sendi eina ávaring til %{target}"
create_announcement_html: "%{name} stovnaði eina fráboðan %{target}" create_announcement_html: "%{name} stovnaði eina fráboðan %{target}"
create_custom_emoji_html: "%{name} legði upp nýtt kenslutekn %{target}" create_custom_emoji_html: "%{name} legði upp nýtt kenslutekn %{target}"

View file

@ -35,6 +35,7 @@ he:
created_msg: הודעת מנחה נוצרה בהצלחה! created_msg: הודעת מנחה נוצרה בהצלחה!
destroyed_msg: הודעת מנחה נמחקה בהצלחה! destroyed_msg: הודעת מנחה נמחקה בהצלחה!
accounts: accounts:
add_email_domain_block: חסימת מתחם דוא"ל
approve: אשר approve: אשר
approved_msg: בקשת %{username} להירשם אושרה בהצלחה approved_msg: בקשת %{username} להירשם אושרה בהצלחה
are_you_sure: בטוח? are_you_sure: בטוח?
@ -905,10 +906,16 @@ he:
trends: trends:
allow: לאפשר allow: לאפשר
approved: אישור approved: אישור
confirm_allow: 'וידוא: האם לאשר את התגיות שנבחרו?'
confirm_disallow: 'וידוא: האם לאסור את התגיות שנבחרו?'
disallow: לא לאשר disallow: לא לאשר
links: links:
allow: אישור קישורית allow: אישור קישורית
allow_provider: אישור מפרסם allow_provider: אישור מפרסם
confirm_allow: 'וידוא: האם לאשר את הקישורים שנבחרו?'
confirm_allow_provider: 'וידוא: האם לאשר את הספקים שנבחרו?'
confirm_disallow: 'וידוא: האם לאסור את הקישורים שנבחרו?'
confirm_disallow_provider: 'וידוא: האם לאסור את הספקים שנבחרו?'
description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה הודעות מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות. description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה הודעות מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות.
disallow: לא לאשר קישורית disallow: לא לאשר קישורית
disallow_provider: לא לאשר מפרסם disallow_provider: לא לאשר מפרסם
@ -934,6 +941,10 @@ he:
statuses: statuses:
allow: הרשאת הודעה allow: הרשאת הודעה
allow_account: הרשאת מחבר/ת allow_account: הרשאת מחבר/ת
confirm_allow: 'וידוא: האם לאשר את הסטטוסים שנבחרו?'
confirm_allow_account: 'וידוא: האם לאשר את החשבונות שנבחרו?'
confirm_disallow: 'וידוא: האם לאסור את הסטטוסים שנבחרו?'
confirm_disallow_account: 'וידוא: האם לאסור את החשבונות שנבחרו?'
description_html: אלו הן הודעות שהשרת שלך מכיר וזוכות להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. ההודעות לא מוצגות עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות הודעות ספציפיות. description_html: אלו הן הודעות שהשרת שלך מכיר וזוכות להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. ההודעות לא מוצגות עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות הודעות ספציפיות.
disallow: לדחות הודעה disallow: לדחות הודעה
disallow_account: לא לאשר מחבר/ת disallow_account: לא לאשר מחבר/ת
@ -1301,7 +1312,7 @@ he:
statuses: statuses:
back_to_filter: חזרה לפילטר back_to_filter: חזרה לפילטר
batch: batch:
remove: הסרה מפילטר remove: הסרה ממסנן
index: index:
hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב. hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב.
title: הודעות שסוננו title: הודעות שסוננו

View file

@ -907,16 +907,16 @@ it:
trends: trends:
allow: Consenti allow: Consenti
approved: Approvato approved: Approvato
confirm_allow: Si è sicuri di voler consentire i tag selezionati? confirm_allow: Sei sicuro di voler consentire i tag selezionati?
confirm_disallow: Si è sicuri di non voler consentire i tag selezionati? confirm_disallow: Sei sicuro di non voler consentire i tag selezionati?
disallow: Non consentire disallow: Non consentire
links: links:
allow: Consenti link allow: Consenti link
allow_provider: Consenti editore allow_provider: Consenti editore
confirm_allow: Si è sicuri di voler consentire i link selezionati? confirm_allow: Sei sicuro di voler consentire i link selezionati?
confirm_allow_provider: Si è sicuri di voler consentire i provider selezionati? confirm_allow_provider: Sei sicuro di voler consentire i provider selezionati?
confirm_disallow: Si è sicuri di non voler consentire i link selezionati? confirm_disallow: Sei sicuro di non voler consentire i link selezionati?
confirm_disallow_provider: Si è sicuri di non voler consentire i provider selezionati? confirm_disallow_provider: Sei sicuro di non voler consentire i provider selezionati?
description_html: Questi sono collegamenti che attualmente vengono molto condivisi dagli account di cui il server vede i post. Può aiutare i tuoi utenti a scoprire cosa sta succedendo nel mondo. Nessun link viene visualizzato pubblicamente finché non si approva chi lo pubblica. È anche possibile permettere o rifiutare i singoli collegamenti. description_html: Questi sono collegamenti che attualmente vengono molto condivisi dagli account di cui il server vede i post. Può aiutare i tuoi utenti a scoprire cosa sta succedendo nel mondo. Nessun link viene visualizzato pubblicamente finché non si approva chi lo pubblica. È anche possibile permettere o rifiutare i singoli collegamenti.
disallow: Non consentire link disallow: Non consentire link
disallow_provider: Non consentire editore disallow_provider: Non consentire editore
@ -940,10 +940,10 @@ it:
statuses: statuses:
allow: Consenti post allow: Consenti post
allow_account: Consenti autore allow_account: Consenti autore
confirm_allow: Si è sicuri di voler consentire gli stati selezionati? confirm_allow: Sei sicuro di voler consentire gli stati selezionati?
confirm_allow_account: Si è sicuri di voler consentire gli account selezionati? confirm_allow_account: Sei sicuro di voler consentire gli account selezionati?
confirm_disallow: Si è sicuri di non voler consentire gli stati selezionati? confirm_disallow: Sei sicuro di non voler consentire gli stati selezionati?
confirm_disallow_account: Si è sicuri di non voler consentire gli account selezionati? confirm_disallow_account: Sei sicuro di non voler consentire gli account selezionati?
description_html: Questi sono post noti al tuo server che sono attualmente molto condivisi e preferiti. Può aiutare i tuoi utenti (nuovi e non) a trovare più persone da seguire. Nessun post viene visualizzato pubblicamente fino a quando si approva l'autore, e l'autore permette che il suo account sia suggerito ad altri. È anche possibile permettere o rifiutare singoli post. description_html: Questi sono post noti al tuo server che sono attualmente molto condivisi e preferiti. Può aiutare i tuoi utenti (nuovi e non) a trovare più persone da seguire. Nessun post viene visualizzato pubblicamente fino a quando si approva l'autore, e l'autore permette che il suo account sia suggerito ad altri. È anche possibile permettere o rifiutare singoli post.
disallow: Non consentire post disallow: Non consentire post
disallow_account: Non consentire autore disallow_account: Non consentire autore
@ -976,7 +976,7 @@ it:
used_by_over_week: used_by_over_week:
one: Usato da una persona nell'ultima settimana one: Usato da una persona nell'ultima settimana
other: Usato da %{count} persone nell'ultima settimana other: Usato da %{count} persone nell'ultima settimana
title: Raccomandazioni e Tendenze title: Raccomandazioni & Tendenze
trending: Di tendenza trending: Di tendenza
warning_presets: warning_presets:
add_new: Aggiungi nuovo add_new: Aggiungi nuovo

View file

@ -414,8 +414,10 @@ ko:
new: new:
create: 도메인 추가하기 create: 도메인 추가하기
resolve: 도메인 검사 resolve: 도메인 검사
title: 새 이메일 도메인 차단
not_permitted: 허용하지 않음 not_permitted: 허용하지 않음
resolved_through_html: "%{domain}을 통해 리졸빙됨" resolved_through_html: "%{domain}을 통해 리졸빙됨"
title: 차단된 이메일 도메인
export_domain_allows: export_domain_allows:
new: new:
title: 도메인 허용 목록 불러오기 title: 도메인 허용 목록 불러오기
@ -1004,7 +1006,9 @@ ko:
guide_link_text: 누구나 기여할 수 있습니다. guide_link_text: 누구나 기여할 수 있습니다.
sensitive_content: 민감한 내용 sensitive_content: 민감한 내용
application_mailer: application_mailer:
notification_preferences: 이메일 설정 변경
salutation: "%{name} 님," salutation: "%{name} 님,"
settings: '이메일 설정 변경: %{link}'
unsubscribe: 구독 해제 unsubscribe: 구독 해제
view: '보기:' view: '보기:'
view_profile: 프로필 보기 view_profile: 프로필 보기
@ -1024,6 +1028,7 @@ ko:
hint_html: 하나만 더! 당신이 사람인지 확인이 필요합니다 (스팸 계정을 거르기 위해서 필요한 과정입니다). 아래에 있는 CAPTCHA를 풀고 "계속"을 누르세요 hint_html: 하나만 더! 당신이 사람인지 확인이 필요합니다 (스팸 계정을 거르기 위해서 필요한 과정입니다). 아래에 있는 CAPTCHA를 풀고 "계속"을 누르세요
title: 보안 체크 title: 보안 체크
confirmations: confirmations:
awaiting_review: 이메일 주소가 확인되었습니다! 이제 %{domain} 스태프가 가입을 검토할 것입니다. 계정이 승인되면 이메일을 받게 됩니다!
awaiting_review_title: 가입 신청을 검토 중입니다 awaiting_review_title: 가입 신청을 검토 중입니다
clicking_this_link: 이 링크를 클릭 clicking_this_link: 이 링크를 클릭
login_link: 로그인 login_link: 로그인
@ -1051,6 +1056,7 @@ ko:
or_log_in_with: 다른 방법으로 로그인 하려면 or_log_in_with: 다른 방법으로 로그인 하려면
privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">개인정보처리방침</a>을 읽고 동의합니다 privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">개인정보처리방침</a>을 읽고 동의합니다
progress: progress:
confirm: 이메일 확인
details: 세부사항 details: 세부사항
review: 심사 결과 review: 심사 결과
rules: 규정을 수락합니다. rules: 규정을 수락합니다.
@ -1072,6 +1078,7 @@ ko:
security: 보안 security: 보안
set_new_password: 새 암호 설정 set_new_password: 새 암호 설정
setup: setup:
email_below_hint_html: 스팸 폴더를 체크해보거나, 새로 요청할 수 있습니다. 이메일을 잘못 입력한 경우 수정할 수 있습니다.
email_settings_hint_html: "%{email}을 인증하기 위해 우리가 보낸 링크를 누르세요. 여기서 기다리겠습니다." email_settings_hint_html: "%{email}을 인증하기 위해 우리가 보낸 링크를 누르세요. 여기서 기다리겠습니다."
link_not_received: 링크를 못 받으셨나요? link_not_received: 링크를 못 받으셨나요?
title: 수신함 확인하기 title: 수신함 확인하기
@ -1351,6 +1358,7 @@ ko:
authentication_methods: authentication_methods:
otp: 2단계 인증 앱 otp: 2단계 인증 앱
password: 암호 password: 암호
sign_in_token: 이메일 보안 코드
webauthn: 보안 키 webauthn: 보안 키
description_html: 확인되지 않은 활동이 보인다면, 암호를 바꾸거나 2단계 인증을 활성화 하는 것을 고려해 보세요. description_html: 확인되지 않은 활동이 보인다면, 암호를 바꾸거나 2단계 인증을 활성화 하는 것을 고려해 보세요.
empty: 인증 이력이 존재하지 않습니다 empty: 인증 이력이 존재하지 않습니다

View file

@ -669,6 +669,7 @@ lt:
title: Tendencingos saitažodžiai title: Tendencingos saitažodžiai
trendable: Gali pasirodyti tendencijose trendable: Gali pasirodyti tendencijose
trending_rank: 'Tendencinga #%{rank}' trending_rank: 'Tendencinga #%{rank}'
title: Rekomendacijos ir tendencijos
trending: Tendencinga trending: Tendencinga
warning_presets: warning_presets:
add_new: Pridėti naują add_new: Pridėti naują
@ -887,7 +888,7 @@ lt:
errors: errors:
too_large: Failas per didelis. too_large: Failas per didelis.
modes: modes:
merge: Sulieti merge: Sujungti
merge_long: Išsaugoti esančius įrašus ir pridėti naujus merge_long: Išsaugoti esančius įrašus ir pridėti naujus
overwrite: Perrašyti overwrite: Perrašyti
overwrite_long: Pakeisti senus įrašus naujais overwrite_long: Pakeisti senus įrašus naujais
@ -931,6 +932,9 @@ lt:
description_html: Jei pastebėjei neatpažįstamą veiklą, apsvarstyk galimybę pakeisti slaptažodį ir įjungti dvigubą tapatybės nustatymą. description_html: Jei pastebėjei neatpažįstamą veiklą, apsvarstyk galimybę pakeisti slaptažodį ir įjungti dvigubą tapatybės nustatymą.
empty: Tapatybės nustatymas istorijos nėra empty: Tapatybės nustatymas istorijos nėra
title: Tapatybės nustatymo istorija title: Tapatybės nustatymo istorija
mail_subscriptions:
unsubscribe:
success_html: Daugiau negausi %{type} „Mastodon“ domene %{domain} į savo el. paštą %{email}.
media_attachments: media_attachments:
validations: validations:
images_and_video: Negalima pridėti video prie statuso, kuris jau turi nuotrauką images_and_video: Negalima pridėti video prie statuso, kuris jau turi nuotrauką
@ -964,6 +968,8 @@ lt:
subject: "%{name} pakėlė tavo įrašą" subject: "%{name} pakėlė tavo įrašą"
title: Naujas pakėlimas title: Naujas pakėlimas
notifications: notifications:
administration_emails: Administratoriaus el. laiško pranešimai
email_events: Įvykiai, skirti el. laiško pranešimams
email_events_hint: 'Pasirink įvykius, apie kuriuos nori gauti pranešimus:' email_events_hint: 'Pasirink įvykius, apie kuriuos nori gauti pranešimus:'
number: number:
human: human:
@ -1061,6 +1067,7 @@ lt:
featured_tags: Rodomi saitažodžiai featured_tags: Rodomi saitažodžiai
import: Importuoti import: Importuoti
migrate: Paskyros migracija migrate: Paskyros migracija
notifications: El. laiško pranešimai
preferences: Nuostatos preferences: Nuostatos
profile: Viešas profilis profile: Viešas profilis
relationships: Sekimai ir sekėjai relationships: Sekimai ir sekėjai
@ -1205,6 +1212,7 @@ lt:
invalid_otp_token: Netinkamas dviejų veiksnių kodas invalid_otp_token: Netinkamas dviejų veiksnių kodas
otp_lost_help_html: Jei praradai prieigą prie abiejų, gali susisiek su %{email} otp_lost_help_html: Jei praradai prieigą prie abiejų, gali susisiek su %{email}
rate_limited: Per daug tapatybės nustatymo bandymų. Bandyk dar kartą vėliau. rate_limited: Per daug tapatybės nustatymo bandymų. Bandyk dar kartą vėliau.
seamless_external_login: Esi prisijungęs (-usi) per išorinę paslaugą, todėl slaptažodžio ir el. pašto nustatymai nepasiekiami.
signed_in_as: 'Prisijungta kaip:' signed_in_as: 'Prisijungta kaip:'
verification: verification:
extra_instructions_html: <strong>Patarimas:</strong> nuoroda tavo svetainėje gali būti nematoma. Svarbi dalis tai, kad <code>rel="me"</code> neleidžia apsimesti interneto svetainėse, kuriose yra naudotojų sukurto turinio. Vietoj to gali naudoti net <code>nuorodą</code> puslapio antraštėje esančią žymę <code>a</code>, tačiau HTML turi būti pasiekiamas nevykdant JavaScript. extra_instructions_html: <strong>Patarimas:</strong> nuoroda tavo svetainėje gali būti nematoma. Svarbi dalis tai, kad <code>rel="me"</code> neleidžia apsimesti interneto svetainėse, kuriose yra naudotojų sukurto turinio. Vietoj to gali naudoti net <code>nuorodą</code> puslapio antraštėje esančią žymę <code>a</code>, tačiau HTML turi būti pasiekiamas nevykdant JavaScript.

View file

@ -1448,6 +1448,7 @@ nn:
mention: e-postar om omtaler mention: e-postar om omtaler
reblog: e-postar om framhevingar reblog: e-postar om framhevingar
resubscribe_html: Om du har avslutta abonnementet ved ein feil, kan du abonnera på nytt i <a href="%{settings_path}">innstillingar for e-postvarsling</a>. resubscribe_html: Om du har avslutta abonnementet ved ein feil, kan du abonnera på nytt i <a href="%{settings_path}">innstillingar for e-postvarsling</a>.
success_html: Du vil ikkje lenger få %{type} frå Mastodon på %{domain} til e-posten på %{email}.
title: Meld av title: Meld av
media_attachments: media_attachments:
validations: validations:
@ -1528,6 +1529,8 @@ nn:
update: update:
subject: "%{name} redigerte et innlegg" subject: "%{name} redigerte et innlegg"
notifications: notifications:
administration_emails: Epostvarsel for administrator
email_events: Hendingar for epostvarsel
email_events_hint: 'Velg hendelser som du vil motta varslinger for:' email_events_hint: 'Velg hendelser som du vil motta varslinger for:'
number: number:
human: human:
@ -1686,6 +1689,7 @@ nn:
import: Hent inn import: Hent inn
import_and_export: Importer og eksporter import_and_export: Importer og eksporter
migrate: Kontoflytting migrate: Kontoflytting
notifications: Epostvarsel
preferences: Innstillingar preferences: Innstillingar
profile: Profil profile: Profil
relationships: Fylgjar og fylgjarar relationships: Fylgjar og fylgjarar
@ -1932,6 +1936,7 @@ nn:
invalid_otp_token: Ugyldig tostegskode invalid_otp_token: Ugyldig tostegskode
otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email} otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email}
rate_limited: For mange autentiseringsforsøk, prøv igjen seinare. rate_limited: For mange autentiseringsforsøk, prøv igjen seinare.
seamless_external_login: Du er logga inn gjennom ei ekstern tenest, så passord- og epostinnstillingar er ikkje tilgjengelege.
signed_in_as: 'Logga inn som:' signed_in_as: 'Logga inn som:'
verification: verification:
extra_instructions_html: <strong>Tips:</strong> Linken på nettsida di kan vera usynleg. Den viktige delen er <code>rel="me"</code>, som på nettstader med brukargenerert innhald vil hindra at andre kan låst som dei er deg. Du kan til og med bruka <code>link</code> i staden for <code>a</code> i toppteksten til sida, men HTML-koden må vera tilgjengeleg utan å måtte køyra JavaScript. extra_instructions_html: <strong>Tips:</strong> Linken på nettsida di kan vera usynleg. Den viktige delen er <code>rel="me"</code>, som på nettstader med brukargenerert innhald vil hindra at andre kan låst som dei er deg. Du kan til og med bruka <code>link</code> i staden for <code>a</code> i toppteksten til sida, men HTML-koden må vera tilgjengeleg utan å måtte køyra JavaScript.

View file

@ -73,8 +73,8 @@ he:
filters: filters:
action: בחרו איזו פעולה לבצע כאשר הודעה מתאימה למסנן action: בחרו איזו פעולה לבצע כאשר הודעה מתאימה למסנן
actions: actions:
hide: הסתר את התוכן המסונן, כאילו לא היה קיים hide: הסתרת התוכן המסונן, כאילו לא היה קיים
warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן warn: הסתרת התוכן המסונן מאחורי אזהרה עם כותרת המסנן
form_admin_settings: form_admin_settings:
activity_api_enabled: מספר ההודעות שפורסמו מקומית, משתמשים פעילים, והרשמות חדשות בדליים שבועיים activity_api_enabled: מספר ההודעות שפורסמו מקומית, משתמשים פעילים, והרשמות חדשות בדליים שבועיים
app_icon: WEBP, PNG, GIF או JPG. גובר על אייקון ברירת המחדל ביישומון על מכשירים ניידים ומחליף אותו באייקון נבחר. app_icon: WEBP, PNG, GIF או JPG. גובר על אייקון ברירת המחדל ביישומון על מכשירים ניידים ומחליף אותו באייקון נבחר.

View file

@ -31,6 +31,7 @@ tr:
created_msg: Denetim notu başarıyla oluşturuldu! created_msg: Denetim notu başarıyla oluşturuldu!
destroyed_msg: Denetim notu başarıyla yok edildi! destroyed_msg: Denetim notu başarıyla yok edildi!
accounts: accounts:
add_email_domain_block: E-posta alan adını engelle
approve: Onayla approve: Onayla
approved_msg: "%{username} adlı kullanıcının kayıt başvurusu başarıyla onaylandı" approved_msg: "%{username} adlı kullanıcının kayıt başvurusu başarıyla onaylandı"
are_you_sure: Emin misin? are_you_sure: Emin misin?
@ -57,6 +58,7 @@ tr:
demote: Düşür demote: Düşür
destroyed_msg: "%{username} adlı kullanıcının verilerinin silinmesi sıraya alındı" destroyed_msg: "%{username} adlı kullanıcının verilerinin silinmesi sıraya alındı"
disable: Dondur disable: Dondur
disable_sign_in_token_auth: E-posta token doğrulamayı devre dışı bırak
disable_two_factor_authentication: 2 aşamalı doğrulamayı kapat disable_two_factor_authentication: 2 aşamalı doğrulamayı kapat
disabled: Kapalı disabled: Kapalı
display_name: Görünen isim display_name: Görünen isim
@ -65,6 +67,7 @@ tr:
email: E-posta email: E-posta
email_status: E-posta durumu email_status: E-posta durumu
enable: Etkinleştir enable: Etkinleştir
enable_sign_in_token_auth: E-posta token doğrulamayı etkinleştir
enabled: Etkin enabled: Etkin
enabled_msg: "%{username} hesabı başarıyla çözüldü" enabled_msg: "%{username} hesabı başarıyla çözüldü"
followers: Takipçi followers: Takipçi
@ -129,6 +132,7 @@ tr:
resubscribe: Yeniden abone ol resubscribe: Yeniden abone ol
role: Rol role: Rol
search: Ara search: Ara
search_same_email_domain: Aynı e-posta alan adına sahip diğer kullanıcılar
search_same_ip: Aynı IP adresine sahip diğer kullanıcılar search_same_ip: Aynı IP adresine sahip diğer kullanıcılar
security: Güvenlik security: Güvenlik
security_measures: security_measures:
@ -169,21 +173,26 @@ tr:
approve_appeal: İtirazı Onayla approve_appeal: İtirazı Onayla
approve_user: Kullanıcıyı Onayla approve_user: Kullanıcıyı Onayla
assigned_to_self_report: Raporu Ata assigned_to_self_report: Raporu Ata
change_email_user: Kullanıcı E-postasını Değiştir
change_role_user: Kullanıcının Rolünü Değiştir change_role_user: Kullanıcının Rolünü Değiştir
confirm_user: Kullanıcıyı Onayla confirm_user: Kullanıcıyı Onayla
create_account_warning: Uyarı Oluştur create_account_warning: Uyarı Oluştur
create_announcement: Duyuru Oluştur create_announcement: Duyuru Oluştur
create_canonical_email_block: E-posta Engeli Oluştur
create_custom_emoji: Özel İfade Oluştur create_custom_emoji: Özel İfade Oluştur
create_domain_allow: İzin Verilen Alan Adı Oluştur create_domain_allow: İzin Verilen Alan Adı Oluştur
create_domain_block: Engellenen Alan Adı Oluştur create_domain_block: Engellenen Alan Adı Oluştur
create_email_domain_block: E-Posta Alan Adı Engeli Oluştur
create_ip_block: IP kuralı oluştur create_ip_block: IP kuralı oluştur
create_unavailable_domain: Mevcut Olmayan Alan Adı Oluştur create_unavailable_domain: Mevcut Olmayan Alan Adı Oluştur
create_user_role: Rol Oluştur create_user_role: Rol Oluştur
demote_user: Kullanıcıyı Düşür demote_user: Kullanıcıyı Düşür
destroy_announcement: Duyuru Sil destroy_announcement: Duyuru Sil
destroy_canonical_email_block: E-Posta Engelini Sil
destroy_custom_emoji: Özel İfadeyi Sil destroy_custom_emoji: Özel İfadeyi Sil
destroy_domain_allow: İzin Verilen Alan Adını Sil destroy_domain_allow: İzin Verilen Alan Adını Sil
destroy_domain_block: Engellenen Alan Adını Sil destroy_domain_block: Engellenen Alan Adını Sil
destroy_email_domain_block: E-posta Alan Adı Engelini Sil
destroy_instance: Alan adını temizle destroy_instance: Alan adını temizle
destroy_ip_block: IP kuralını sil destroy_ip_block: IP kuralını sil
destroy_status: Durumu Sil destroy_status: Durumu Sil
@ -191,8 +200,10 @@ tr:
destroy_user_role: Rolü Kaldır destroy_user_role: Rolü Kaldır
disable_2fa_user: 2AD Kapat disable_2fa_user: 2AD Kapat
disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak
disable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı Devre Dışı Bırak
disable_user: Kullanıcıyı Devre Dışı Bırak disable_user: Kullanıcıyı Devre Dışı Bırak
enable_custom_emoji: Özel İfadeyi Etkinleştir enable_custom_emoji: Özel İfadeyi Etkinleştir
enable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı Etkinleştir
enable_user: Kullanıcıyı Etkinleştir enable_user: Kullanıcıyı Etkinleştir
memorialize_account: Hesabı Anıtlaştır memorialize_account: Hesabı Anıtlaştır
promote_user: Kullanıcıyı Yükselt promote_user: Kullanıcıyı Yükselt
@ -222,20 +233,26 @@ tr:
approve_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını kabul etti" approve_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını kabul etti"
approve_user_html: "%{name}, %{target} konumundan kaydı onayladı" approve_user_html: "%{name}, %{target} konumundan kaydı onayladı"
assigned_to_self_report_html: "%{name} kendilerine %{target} adlı raporu verdi" assigned_to_self_report_html: "%{name} kendilerine %{target} adlı raporu verdi"
change_email_user_html: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi"
change_role_user_html: "%{name}, %{target} kişisinin rolünü değiştirdi" change_role_user_html: "%{name}, %{target} kişisinin rolünü değiştirdi"
confirm_user_html: "%{name} %{target} kullanıcısının e-posta adresini onayladı"
create_account_warning_html: "%{name} %{target} 'a bir uyarı gönderdi" create_account_warning_html: "%{name} %{target} 'a bir uyarı gönderdi"
create_announcement_html: "%{name}, yeni %{target} duyurusunu oluşturdu" create_announcement_html: "%{name}, yeni %{target} duyurusunu oluşturdu"
create_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelledi"
create_custom_emoji_html: "%{name} yeni %{target} ifadesini yükledi" create_custom_emoji_html: "%{name} yeni %{target} ifadesini yükledi"
create_domain_allow_html: "%{name}, %{target} alan adıyla birliğe izin verdi" create_domain_allow_html: "%{name}, %{target} alan adıyla birliğe izin verdi"
create_domain_block_html: "%{name}, %{target} alan adını engelledi" create_domain_block_html: "%{name}, %{target} alan adını engelledi"
create_email_domain_block_html: "%{name}, %{target} e-posta alan adını engelledi"
create_ip_block_html: "%{name}, %{target} IP adresi için kural oluşturdu" create_ip_block_html: "%{name}, %{target} IP adresi için kural oluşturdu"
create_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı durdurdu" create_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı durdurdu"
create_user_role_html: "%{name}, %{target} rolünü oluşturdu" create_user_role_html: "%{name}, %{target} rolünü oluşturdu"
demote_user_html: "%{name}, %{target} kullanıcısını düşürdü" demote_user_html: "%{name}, %{target} kullanıcısını düşürdü"
destroy_announcement_html: "%{name}, %{target} duyurusunu sildi" destroy_announcement_html: "%{name}, %{target} duyurusunu sildi"
destroy_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelini kaldırdı"
destroy_custom_emoji_html: "%{name}, %{target} ifadesini sildi" destroy_custom_emoji_html: "%{name}, %{target} ifadesini sildi"
destroy_domain_allow_html: "%{name}, %{target} alan adıyla birlik iznini kaldırdı" destroy_domain_allow_html: "%{name}, %{target} alan adıyla birlik iznini kaldırdı"
destroy_domain_block_html: "%{name}, %{target} alan adı engelini kaldırdı" destroy_domain_block_html: "%{name}, %{target} alan adı engelini kaldırdı"
destroy_email_domain_block_html: "%{name}, %{target} e-posta alan adı engelini kaldırdı"
destroy_instance_html: "%{name}, %{target} alan adını temizledi" destroy_instance_html: "%{name}, %{target} alan adını temizledi"
destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi" destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi"
destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı" destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı"
@ -243,8 +260,10 @@ tr:
destroy_user_role_html: "%{name}, %{target} rolünü sildi" destroy_user_role_html: "%{name}, %{target} rolünü sildi"
disable_2fa_user_html: "%{name}, %{target} kullanıcısının iki aşamalı doğrulama gereksinimini kapattı" disable_2fa_user_html: "%{name}, %{target} kullanıcısının iki aşamalı doğrulama gereksinimini kapattı"
disable_custom_emoji_html: "%{name}, %{target} emojisini devre dışı bıraktı" disable_custom_emoji_html: "%{name}, %{target} emojisini devre dışı bıraktı"
disable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı devre dışı bıraktı"
disable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı devre dışı bıraktı" disable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı devre dışı bıraktı"
enable_custom_emoji_html: "%{name}, %{target} emojisini etkinleştirdi" enable_custom_emoji_html: "%{name}, %{target} emojisini etkinleştirdi"
enable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı etkinleştirdi"
enable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı etkinleştirdi" enable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı etkinleştirdi"
memorialize_account_html: "%{name}, %{target} kullanıcısının hesabını bir anıt sayfaya dönüştürdü" memorialize_account_html: "%{name}, %{target} kullanıcısının hesabını bir anıt sayfaya dönüştürdü"
promote_user_html: "%{name}, %{target} kullanıcısını yükseltti" promote_user_html: "%{name}, %{target} kullanıcısını yükseltti"
@ -252,6 +271,7 @@ tr:
reject_user_html: "%{name}, %{target} konumundan kaydı reddetti" reject_user_html: "%{name}, %{target} konumundan kaydı reddetti"
remove_avatar_user_html: "%{name}, %{target} kullanıcısının avatarını kaldırdı" remove_avatar_user_html: "%{name}, %{target} kullanıcısının avatarını kaldırdı"
reopen_report_html: "%{name}, %{target} şikayetini yeniden açtı" reopen_report_html: "%{name}, %{target} şikayetini yeniden açtı"
resend_user_html: "%{name}, %{target} için doğrulama e-postasını tekrar gönderdi"
reset_password_user_html: "%{name}, %{target} kullanıcısının parolasını sıfırladı" reset_password_user_html: "%{name}, %{target} kullanıcısının parolasını sıfırladı"
resolve_report_html: "%{name}, %{target} şikayetini çözdü" resolve_report_html: "%{name}, %{target} şikayetini çözdü"
sensitive_account_html: "%{name}, %{target} kullanıcısının medyasını hassas olarak işaretledi" sensitive_account_html: "%{name}, %{target} kullanıcısının medyasını hassas olarak işaretledi"
@ -412,6 +432,7 @@ tr:
attempts_over_week: attempts_over_week:
one: Son haftada %{count} deneme one: Son haftada %{count} deneme
other: Son haftada %{count} kayıt denemesi other: Son haftada %{count} kayıt denemesi
created_msg: E-posta alan adı kara listeye başarıyla eklendi
delete: Sil delete: Sil
dns: dns:
types: types:
@ -420,8 +441,12 @@ tr:
new: new:
create: Alan adı ekle create: Alan adı ekle
resolve: Alan adı çözümleme resolve: Alan adı çözümleme
title: Yeni e-posta kara liste girişi
no_email_domain_block_selected: Seçim yapılmadığından hiç bir e-posta alan adı engeli değiştirilmedi
not_permitted: İzin verilmedi not_permitted: İzin verilmedi
resolved_dns_records_hint_html: Alan adı aşağıdaki MX alan adlarına çözümleniyor, ancak hiç biri nihayetinde e-posta kabulünden sorum değil. Bir MX alan adını engellemek, görünen alan adı farklı osa bile aynı MX alan adını kullanan e-posta adreslerinden gelen kayıtları engelleyecektir. <strong>Başlıca e-posta sağlayıcıları engellememek için dikkatli olun.</strong>
resolved_through_html: "%{domain} aracılığıyla çözümlendi" resolved_through_html: "%{domain} aracılığıyla çözümlendi"
title: Engelli e-posta alan adları
export_domain_allows: export_domain_allows:
new: new:
title: Alan adı engellerini içe aktar title: Alan adı engellerini içe aktar
@ -575,6 +600,7 @@ tr:
resolve_description_html: Bildirilen hesap için bir şey yapılmayacak, eylem kaydedilmeyecek ve bildirim kapatılacak. resolve_description_html: Bildirilen hesap için bir şey yapılmayacak, eylem kaydedilmeyecek ve bildirim kapatılacak.
silence_description_html: Bu hesap sadece halihazırda takip edenler ve elle bakanlarca görünecek, böylece erişimi ciddi bir şekilde kısıtlanacak. Her zaman geri alınabilir. Bu hesaba yönelik tüm bildirimleri kapatır. silence_description_html: Bu hesap sadece halihazırda takip edenler ve elle bakanlarca görünecek, böylece erişimi ciddi bir şekilde kısıtlanacak. Her zaman geri alınabilir. Bu hesaba yönelik tüm bildirimleri kapatır.
suspend_description_html: Bu hesap ve tüm içeriği erişilmez olacak ve nihayetinde silinecek ve bu hesapla etkileşim mümkün olmayacaktır. 30 gün içinde geri alınabilir. Bu hesaba yönelik tüm bildiriimleri kapatır. suspend_description_html: Bu hesap ve tüm içeriği erişilmez olacak ve nihayetinde silinecek ve bu hesapla etkileşim mümkün olmayacaktır. 30 gün içinde geri alınabilir. Bu hesaba yönelik tüm bildiriimleri kapatır.
actions_description_html: Bu bildirimi çözmek için ne yapılması gerektiğine karar verin. Bildirilen hesap için ceza işlemi yaparsanız, <strong>İstenmeyen</strong> kategorisi seçilmemişse, onlara bir e-posta duyurusu gönderilecektir.
actions_description_remote_html: Bu bildirimi çözmek için hangi eylemi yapmak istediğinize karar verin. Bu yalnızca <strong>sizin</strong> sunucunuzun bu uzak hesapla nasıl etkileşeğini ve içeriğiyle ne yapacağını etkiler. actions_description_remote_html: Bu bildirimi çözmek için hangi eylemi yapmak istediğinize karar verin. Bu yalnızca <strong>sizin</strong> sunucunuzun bu uzak hesapla nasıl etkileşeğini ve içeriğiyle ne yapacağını etkiler.
add_to_report: Bildirime daha fazlasını ekle add_to_report: Bildirime daha fazlasını ekle
already_suspended_badges: already_suspended_badges:
@ -639,6 +665,7 @@ tr:
delete_data_html: İlgili sürede askıdan alınması kaldırılmazsa <strong>@%{acct}</strong> hesabının profilini ve içeriğini şu andan itibaren 30 gün içinde sil delete_data_html: İlgili sürede askıdan alınması kaldırılmazsa <strong>@%{acct}</strong> hesabının profilini ve içeriğini şu andan itibaren 30 gün içinde sil
preview_preamble_html: "<strong>@%{acct}</strong> aşağıdaki içerikle bir uyarı alacaktır:" preview_preamble_html: "<strong>@%{acct}</strong> aşağıdaki içerikle bir uyarı alacaktır:"
record_strike_html: "<strong>@%{acct}</strong> hesabına karşı bir eylem kaydet, böylece bu hesabın gelecekteki ihlallerini üst makama taşımanıza yardımcı olacaktır" record_strike_html: "<strong>@%{acct}</strong> hesabına karşı bir eylem kaydet, böylece bu hesabın gelecekteki ihlallerini üst makama taşımanıza yardımcı olacaktır"
send_email_html: "<strong>@%{acct}</strong> adlı kullanıcıya uyarı e-maili gönder"
warning_placeholder: İsteğe bağlı ek nedenden denetim eylemi. warning_placeholder: İsteğe bağlı ek nedenden denetim eylemi.
target_origin: Şikayet edilen hesabın kökeni target_origin: Şikayet edilen hesabın kökeni
title: Şikayetler title: Şikayetler
@ -678,6 +705,7 @@ tr:
manage_appeals: İtirazları Yönetme manage_appeals: İtirazları Yönetme
manage_appeals_description: Kullanıcıların denetleme eylemlerine itirazları gözden geçirmesine izin verir manage_appeals_description: Kullanıcıların denetleme eylemlerine itirazları gözden geçirmesine izin verir
manage_blocks: Engelleri Yönetme manage_blocks: Engelleri Yönetme
manage_blocks_description: Kullanıcıların e-posta sağlayıcıları ve IP adreslerini engellemesine izin verir
manage_custom_emojis: Özel İfadeleri Yönetme manage_custom_emojis: Özel İfadeleri Yönetme
manage_custom_emojis_description: Kullanıcıların sunucudaki özel ifadeleri yönetmesine izin verir manage_custom_emojis_description: Kullanıcıların sunucudaki özel ifadeleri yönetmesine izin verir
manage_federation: Birleştirme Yönetme manage_federation: Birleştirme Yönetme
@ -695,6 +723,7 @@ tr:
manage_taxonomies: Kategorileri Yönetme manage_taxonomies: Kategorileri Yönetme
manage_taxonomies_description: Kullanıcıların öne çıkan içeriği incelemesine ve etiket ayarlarını güncellemesine izin verir manage_taxonomies_description: Kullanıcıların öne çıkan içeriği incelemesine ve etiket ayarlarını güncellemesine izin verir
manage_user_access: Kullanıcı Erişimini Yönetme manage_user_access: Kullanıcı Erişimini Yönetme
manage_user_access_description: Kullanıcıların, diğer kullanıcıların iki aşamalı yetkilendirme, e-posta adreslerini değiştirme ve parolalarını sıfırlama eylemlerini etkisizleştirmesine izin verir
manage_users: Kullanıcıları Yönetme manage_users: Kullanıcıları Yönetme
manage_users_description: Kullanıcıların, diğer kullanıcıların ayrıntılarını görüntülemesine ve onlara karşı denetim eylemleri gerçekleştirmesine izin verir manage_users_description: Kullanıcıların, diğer kullanıcıların ayrıntılarını görüntülemesine ve onlara karşı denetim eylemleri gerçekleştirmesine izin verir
manage_webhooks: Webhookları Yönetme manage_webhooks: Webhookları Yönetme
@ -769,6 +798,7 @@ tr:
destroyed_msg: Site yüklemesi başarıyla silindi! destroyed_msg: Site yüklemesi başarıyla silindi!
software_updates: software_updates:
critical_update: Kritik — lütfen hemen güncelleyin critical_update: Kritik — lütfen hemen güncelleyin
description: Son düzeltme ve özelliklerden yararlanmak için Mastodon kurulumunu güncel tutmanızı öneriyoruz. Üstelik güvenlik sorunlarından kaçınmak için Mastodon'u zamanında güncellemek kritiktir. Bu nedenlerle Mastodon her 30 dakikada bir güncellemeleri denetler ve e-posta bildirim seçeneğinize göre size haber verir.
documentation_link: Daha fazlası documentation_link: Daha fazlası
release_notes: Sürüm notları release_notes: Sürüm notları
title: Mevcut güncellemeler title: Mevcut güncellemeler
@ -1031,7 +1061,9 @@ tr:
guide_link_text: Herkes katkıda bulunabilir. guide_link_text: Herkes katkıda bulunabilir.
sensitive_content: Hassas içerik sensitive_content: Hassas içerik
application_mailer: application_mailer:
notification_preferences: E-posta tercihlerini değiştir
salutation: "%{name}," salutation: "%{name},"
settings: 'E-posta tercihlerini değiştir: %{link}'
unsubscribe: Abonelikten çık unsubscribe: Abonelikten çık
view: 'Görüntüle:' view: 'Görüntüle:'
view_profile: Profili görüntüle view_profile: Profili görüntüle
@ -1051,6 +1083,7 @@ tr:
hint_html: Sadece bir şey daha! Sizin bir insan olduğunuzu doğrulamamız gerekiyor (bu, spam'i dışarıda tutabilmemiz içindir!). Aşağıdaki CAPTCHA'yı çözün ve "Devam Et" düğmesini tıklayın. hint_html: Sadece bir şey daha! Sizin bir insan olduğunuzu doğrulamamız gerekiyor (bu, spam'i dışarıda tutabilmemiz içindir!). Aşağıdaki CAPTCHA'yı çözün ve "Devam Et" düğmesini tıklayın.
title: Güvenlik denetimi title: Güvenlik denetimi
confirmations: confirmations:
awaiting_review: E-posta adresiniz doğrulandı! %{domain} çalışanları şimdi kaydınızı inceliyorlar. Hesabınızı onayladıklarında bir e-posta alacaksınız!
awaiting_review_title: Kaydınız inceleniyor awaiting_review_title: Kaydınız inceleniyor
clicking_this_link: bu bağlantıyı tıklamayı clicking_this_link: bu bağlantıyı tıklamayı
login_link: oturum aç login_link: oturum aç
@ -1058,6 +1091,7 @@ tr:
redirect_to_app_html: "<strong>%{app_name}</strong> uygulamasına yönlendirileceksiniz. Eğer yönlendirme olmazsa, %{clicking_this_link} veya uygulamaya geri dönmeyi deneyin." redirect_to_app_html: "<strong>%{app_name}</strong> uygulamasına yönlendirileceksiniz. Eğer yönlendirme olmazsa, %{clicking_this_link} veya uygulamaya geri dönmeyi deneyin."
registration_complete: "%{domain} sunucusunda kaydınız şimdi tamamlandı!" registration_complete: "%{domain} sunucusunda kaydınız şimdi tamamlandı!"
welcome_title: Hoşgeldin %{name}! welcome_title: Hoşgeldin %{name}!
wrong_email_hint: Eğer bu e-posta adresi doğru değilse, hesap ayarlarında değiştirebilirsiniz.
delete_account: Hesabı sil delete_account: Hesabı sil
delete_account_html: Hesabını silmek istersen, <a href="%{path}">buradan devam edebilirsin</a>. Onay istenir. delete_account_html: Hesabını silmek istersen, <a href="%{path}">buradan devam edebilirsin</a>. Onay istenir.
description: description:
@ -1078,6 +1112,7 @@ tr:
or_log_in_with: 'Veya şununla oturum açın:' or_log_in_with: 'Veya şununla oturum açın:'
privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">Gizlilik politikasını</a> okudum ve kabul ettim privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">Gizlilik politikasını</a> okudum ve kabul ettim
progress: progress:
confirm: E-postanızı onaylayın
details: Ayrıntılarınız details: Ayrıntılarınız
review: İncelememiz review: İncelememiz
rules: Kabul kuralları rules: Kabul kuralları
@ -1099,8 +1134,10 @@ tr:
security: Güvenlik security: Güvenlik
set_new_password: Yeni parola belirle set_new_password: Yeni parola belirle
setup: setup:
email_below_hint_html: İstenmeyenler dizininize bakın veya başka bir onay bağlantısı isteyin. Eğer yanlışsa e-posta adresinizi de düzeltebilirsiniz.
email_settings_hint_html: "%{email} adresinizi doğrulamak için size gönderdiğimiz bağlantıya tıklayın. Biz burada bekliyoruz." email_settings_hint_html: "%{email} adresinizi doğrulamak için size gönderdiğimiz bağlantıya tıklayın. Biz burada bekliyoruz."
link_not_received: Bağlantı gelmedi mi? link_not_received: Bağlantı gelmedi mi?
new_confirmation_instructions_sent: Birkaç dakika içerisinde onaylama bağlantısını içeren yeni bir e-posta alacaksınız!
title: Gelen kutunuzu kontrol edin title: Gelen kutunuzu kontrol edin
sign_in: sign_in:
preamble_html: "<strong>%{domain}</strong> kimlik bilgilerinizi kullanarak giriş yapın. Eğer hesabınız başka bir sunucuda barındırılıyorsa, burada giriş yapamazsınız." preamble_html: "<strong>%{domain}</strong> kimlik bilgilerinizi kullanarak giriş yapın. Eğer hesabınız başka bir sunucuda barındırılıyorsa, burada giriş yapamazsınız."
@ -1111,7 +1148,9 @@ tr:
title: "%{domain} için kurulumunuzu yapalım." title: "%{domain} için kurulumunuzu yapalım."
status: status:
account_status: Hesap durumu account_status: Hesap durumu
confirming: E-posta onaylamanın tamamlanması bekleniyor.
functional: Hesabınız tamamen kullanıma hazır. functional: Hesabınız tamamen kullanıma hazır.
pending: Başvurunuz personelimiz tarafından gözden geçirilmeyi beklemektedir. Bu biraz zaman alabilir. Başvurunuz onaylanırsa bir e-posta alacaksınız.
redirecting_to: Hesabınız aktif değil çünkü şu anda %{acct} adresine yönlendirilmektedir. redirecting_to: Hesabınız aktif değil çünkü şu anda %{acct} adresine yönlendirilmektedir.
self_destruct: "%{domain} kapandığı için, hesabınıza sadece kısıtlı erişiminiz olacak." self_destruct: "%{domain} kapandığı için, hesabınıza sadece kısıtlı erişiminiz olacak."
view_strikes: Hesabınıza yönelik eski eylemleri görüntüleyin view_strikes: Hesabınıza yönelik eski eylemleri görüntüleyin
@ -1154,6 +1193,9 @@ tr:
before: 'Devam etmeden önce, lütfen bu notları dikkatlice okuyun:' before: 'Devam etmeden önce, lütfen bu notları dikkatlice okuyun:'
caches: Diğer sunucular tarafından ön belleğe alınan içerik kalabilir caches: Diğer sunucular tarafından ön belleğe alınan içerik kalabilir
data_removal: Gönderileriniz ve diğer verileriniz kalıcı olarak silinecektir data_removal: Gönderileriniz ve diğer verileriniz kalıcı olarak silinecektir
email_change_html: Hesabınızı silmeden <a href="%{path}">e-posta adresinizi değiştirebilirsiniz</a>
email_contact_html: Eğer hala ulaşmazsa, yardım almak için <a href="mailto:%{email}">%{email}</a> adresine e-posta gönderebilirsiniz
email_reconfirmation_html: Eğer onaylama e-postası ulaşmıyorsa, <a href="%{path}">tekrar talep edebilirsiniz</a>
irreversible: Hesabınızı geri yükleyemeyecek ya da yeniden etkinleştiremeyeceksiniz irreversible: Hesabınızı geri yükleyemeyecek ya da yeniden etkinleştiremeyeceksiniz
more_details_html: Daha fazla ayrıntı için, <a href="%{terms_path}">gizlilik politikası</a>na göz atın. more_details_html: Daha fazla ayrıntı için, <a href="%{terms_path}">gizlilik politikası</a>na göz atın.
username_available: Kullanıcı adınız tekrar kullanılabilir olacaktır username_available: Kullanıcı adınız tekrar kullanılabilir olacaktır
@ -1386,6 +1428,7 @@ tr:
authentication_methods: authentication_methods:
otp: iki aşamalı kimlik doğrulama uygulaması otp: iki aşamalı kimlik doğrulama uygulaması
password: parola password: parola
sign_in_token: e-posta güvenlik kodu
webauthn: güvenlik anahtarları webauthn: güvenlik anahtarları
description_html: Eğer tanımadığınız bir faaliyet görüyorsanız, parolanızı değiştirmeyi ve iki aşamalı kimlik doğrulamayı etkinleştirmeyi düşünün. description_html: Eğer tanımadığınız bir faaliyet görüyorsanız, parolanızı değiştirmeyi ve iki aşamalı kimlik doğrulamayı etkinleştirmeyi düşünün.
empty: Kimlik doğrulama geçmişi yok empty: Kimlik doğrulama geçmişi yok
@ -1396,6 +1439,16 @@ tr:
unsubscribe: unsubscribe:
action: Evet, abonelikten çık action: Evet, abonelikten çık
complete: Abonelikten çık complete: Abonelikten çık
confirmation_html: '%{domain} üzerindeki Mastodon için %{type} almayı durdurarak %{email} adresinize aboneliğinizi iptal etmek istediğinizden emin misiniz? <a href="%{settings_path}">e-posta bildirim ayarlarınızdan</a> her zaman yeniden abone olabilirsiniz.'
emails:
notification_emails:
favourite: favori bildirim e-postaları
follow: takip bildirim e-postaları
follow_request: takip isteği bildirim e-postaları
mention: bahsetme bildirim e-postaları
reblog: öne çıkanlar bildirim e-postaları
resubscribe_html: Abonelikten yanlışlıkla çıktıysanız, <a href="%{settings_path}">e-posta bildirim ayarlarınızdan</a> yeniden abone olabilirsiniz.
success_html: Artık %{email} adresindeki e-postanıza %{domain} üzerindeki Mastodon için %{type} almayacaksınız.
title: Abonelikten çık title: Abonelikten çık
media_attachments: media_attachments:
validations: validations:
@ -1476,6 +1529,8 @@ tr:
update: update:
subject: "%{name} bir gönderiyi düzenledi" subject: "%{name} bir gönderiyi düzenledi"
notifications: notifications:
administration_emails: Yönetici e-posta bildirimleri
email_events: E-posta bildirimi etkinlikleri
email_events_hint: 'Bildirim almak istediğiniz olayları seçin:' email_events_hint: 'Bildirim almak istediğiniz olayları seçin:'
number: number:
human: human:
@ -1634,6 +1689,7 @@ tr:
import: İçe aktar import: İçe aktar
import_and_export: İçe ve dışa aktar import_and_export: İçe ve dışa aktar
migrate: Hesap taşıma migrate: Hesap taşıma
notifications: E-posta bildirimleri
preferences: Tercihler preferences: Tercihler
profile: Profil profile: Profil
relationships: Takip edilenler ve takipçiler relationships: Takip edilenler ve takipçiler
@ -1880,6 +1936,7 @@ tr:
invalid_otp_token: Geçersiz iki adımlı doğrulama kodu invalid_otp_token: Geçersiz iki adımlı doğrulama kodu
otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz
rate_limited: Çok fazla kimlik doğrulama denemesi. Daha sonra tekrar deneyin. rate_limited: Çok fazla kimlik doğrulama denemesi. Daha sonra tekrar deneyin.
seamless_external_login: Harici bir servis aracılığıyla oturum açtınız, bu nedenle parola ve e-posta ayarları mevcut değildir.
signed_in_as: 'Oturum açtı:' signed_in_as: 'Oturum açtı:'
verification: verification:
extra_instructions_html: <strong>İpucu:</strong> Web sitenizdeki bağlantı görünmez olabilir. Önemli olan, kullanıcı tarafından oluşturulan içeriğe sahip web sitelerinde kimliğe bürünmeyi önleyen <code>rel="me"</code>'dir. Sayfa başlığında <code>a</code> yerine bir <code>bağlantı</code> etiketi de kullanabilirsiniz, ancak HTML'ye JavaScript çalıştırılmadan erişilebilir olmalıdır. extra_instructions_html: <strong>İpucu:</strong> Web sitenizdeki bağlantı görünmez olabilir. Önemli olan, kullanıcı tarafından oluşturulan içeriğe sahip web sitelerinde kimliğe bürünmeyi önleyen <code>rel="me"</code>'dir. Sayfa başlığında <code>a</code> yerine bir <code>bağlantı</code> etiketi de kullanabilirsiniz, ancak HTML'ye JavaScript çalıştırılmadan erişilebilir olmalıdır.

View file

@ -302,12 +302,10 @@ RSpec.describe MediaAttachment, :attachment_processing do
it 'queues CacheBusterWorker jobs' do it 'queues CacheBusterWorker jobs' do
original_path = media.file.path(:original) original_path = media.file.path(:original)
small_path = media.file.path(:small) small_path = media.file.path(:small)
thumbnail_path = media.thumbnail.path(:original)
expect { media.destroy } expect { media.destroy }
.to enqueue_sidekiq_job(CacheBusterWorker).with(original_path) .to enqueue_sidekiq_job(CacheBusterWorker).with(original_path)
.and enqueue_sidekiq_job(CacheBusterWorker).with(small_path) .and enqueue_sidekiq_job(CacheBusterWorker).with(small_path)
.and enqueue_sidekiq_job(CacheBusterWorker).with(thumbnail_path)
end end
end end

View file

@ -182,30 +182,30 @@ RSpec.describe User do
end end
end end
describe 'blacklist' do describe 'email domains denylist integration' do
around do |example| around do |example|
old_blacklist = Rails.configuration.x.email_blacklist original = Rails.configuration.x.email_domains_denylist
Rails.configuration.x.email_domains_blacklist = 'mvrht.com' Rails.configuration.x.email_domains_denylist = 'mvrht.com'
example.run example.run
Rails.configuration.x.email_domains_blacklist = old_blacklist Rails.configuration.x.email_domains_denylist = original
end end
it 'allows a non-blacklisted user to be created' do it 'allows a user with an email domain that is not on the denylist to be created' do
user = described_class.new(email: 'foo@example.com', account: account, password: password, agreement: true) user = described_class.new(email: 'foo@example.com', account: account, password: password, agreement: true)
expect(user).to be_valid expect(user).to be_valid
end end
it 'does not allow a blacklisted user to be created' do it 'does not allow a user with an email domain on the deylist to be created' do
user = described_class.new(email: 'foo@mvrht.com', account: account, password: password, agreement: true) user = described_class.new(email: 'foo@mvrht.com', account: account, password: password, agreement: true)
expect(user).to_not be_valid expect(user).to_not be_valid
end end
it 'does not allow a subdomain blacklisted user to be created' do it 'does not allow a user with an email where the subdomain is on the denylist to be created' do
user = described_class.new(email: 'foo@mvrht.com.topdomain.tld', account: account, password: password, agreement: true) user = described_class.new(email: 'foo@mvrht.com.topdomain.tld', account: account, password: password, agreement: true)
expect(user).to_not be_valid expect(user).to_not be_valid
@ -374,43 +374,43 @@ RSpec.describe User do
end end
end end
describe 'whitelist' do describe 'allowlist integration' do
around do |example| around do |example|
old_whitelist = Rails.configuration.x.email_domains_whitelist original = Rails.configuration.x.email_domains_allowlist
Rails.configuration.x.email_domains_whitelist = 'mastodon.space' Rails.configuration.x.email_domains_allowlist = 'mastodon.space'
example.run example.run
Rails.configuration.x.email_domains_whitelist = old_whitelist Rails.configuration.x.email_domains_allowlist = original
end end
it 'does not allow a user to be created unless they are whitelisted' do it 'does not allow a user to be created when their email is not on the allowlist' do
user = described_class.new(email: 'foo@example.com', account: account, password: password, agreement: true) user = described_class.new(email: 'foo@example.com', account: account, password: password, agreement: true)
expect(user).to_not be_valid expect(user).to_not be_valid
end end
it 'allows a user to be created if they are whitelisted' do it 'allows a user to be created when their email is on the allowlist' do
user = described_class.new(email: 'foo@mastodon.space', account: account, password: password, agreement: true) user = described_class.new(email: 'foo@mastodon.space', account: account, password: password, agreement: true)
expect(user).to be_valid expect(user).to be_valid
end end
it 'does not allow a user with a whitelisted top domain as subdomain in their email address to be created' do it 'does not allow a user with an email subdomain included on the top level domain allowlist to be created' do
user = described_class.new(email: 'foo@mastodon.space.userdomain.com', account: account, password: password, agreement: true) user = described_class.new(email: 'foo@mastodon.space.userdomain.com', account: account, password: password, agreement: true)
expect(user).to_not be_valid expect(user).to_not be_valid
end end
context 'with a blacklisted subdomain' do context 'with a subdomain on the denylist' do
around do |example| around do |example|
old_blacklist = Rails.configuration.x.email_blacklist original = Rails.configuration.x.email_domains_denylist
example.run example.run
Rails.configuration.x.email_domains_blacklist = old_blacklist Rails.configuration.x.email_domains_denylist = original
end end
it 'does not allow a user to be created with a specific blacklisted subdomain even if the top domain is whitelisted' do it 'does not allow a user to be created with an email subdomain on the denylist even if the top domain is on the allowlist' do
Rails.configuration.x.email_domains_blacklist = 'blacklisted.mastodon.space' Rails.configuration.x.email_domains_denylist = 'denylisted.mastodon.space'
user = described_class.new(email: 'foo@blacklisted.mastodon.space', account: account, password: password) user = described_class.new(email: 'foo@denylisted.mastodon.space', account: account, password: password)
expect(user).to_not be_valid expect(user).to_not be_valid
end end
end end

View file

@ -0,0 +1,30 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Log Out' do
include RoutingHelper
describe 'DELETE /auth/sign_out' do
let(:user) { Fabricate(:user) }
before do
sign_in user
end
it 'Logs out the user and redirect' do
delete '/auth/sign_out'
expect(response).to redirect_to('/auth/sign_in')
end
it 'Logs out the user and return a page to redirect to with a JSON request' do
delete '/auth/sign_out', headers: { 'HTTP_ACCEPT' => 'application/json' }
expect(response).to have_http_status(200)
expect(response.media_type).to eq 'application/json'
expect(body_as_json[:redirect_to]).to eq '/auth/sign_in'
end
end
end

View file

@ -0,0 +1,19 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe AcceptNotificationRequestService do
subject { described_class.new }
let(:notification_request) { Fabricate(:notification_request) }
describe '#call' do
it 'destroys the notification request, creates a permission, and queues a worker' do
expect { subject.call(notification_request) }
.to change { NotificationRequest.exists?(notification_request.id) }.to(false)
.and change { NotificationPermission.exists?(account_id: notification_request.account_id, from_account_id: notification_request.from_account_id) }.to(true)
expect(UnfilterNotificationsWorker).to have_enqueued_sidekiq_job(notification_request.account_id, notification_request.from_account_id)
end
end
end

View file

@ -0,0 +1,43 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Log out' do
include ProfileStories
before do
as_a_logged_in_user
end
describe 'Logging out from the preferences' do
it 'logs the user out' do
visit settings_path
within '.sidebar' do
click_on 'Logout'
end
expect(page).to have_title(I18n.t('auth.login'))
expect(page).to have_current_path('/auth/sign_in')
end
end
describe 'Logging out from the JS app', :js, :streaming do
it 'logs the user out' do
visit root_path
within '.navigation-bar' do
click_on 'Menu'
end
within '.dropdown-menu' do
click_on 'Logout'
end
click_on 'Log out'
expect(page).to have_title(I18n.t('auth.login'))
expect(page).to have_current_path('/auth/sign_in')
end
end
end

View file

@ -9,10 +9,10 @@ describe EmailMxValidator do
context 'with an e-mail domain that is explicitly allowed' do context 'with an e-mail domain that is explicitly allowed' do
around do |block| around do |block|
tmp = Rails.configuration.x.email_domains_whitelist tmp = Rails.configuration.x.email_domains_allowlist
Rails.configuration.x.email_domains_whitelist = 'example.com' Rails.configuration.x.email_domains_allowlist = 'example.com'
block.call block.call
Rails.configuration.x.email_domains_whitelist = tmp Rails.configuration.x.email_domains_allowlist = tmp
end end
it 'does not add errors if there are no DNS records' do it 'does not add errors if there are no DNS records' do
@ -69,7 +69,7 @@ describe EmailMxValidator do
expect(user.errors).to have_received(:add) expect(user.errors).to have_received(:add)
end end
it 'adds an error if the MX record is blacklisted' do it 'adds an error if the MX record has an email domain block' do
EmailDomainBlock.create!(domain: 'mail.example.com') EmailDomainBlock.create!(domain: 'mail.example.com')
configure_resolver( configure_resolver(

View file

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe BlacklistedEmailValidator do RSpec.describe UserEmailValidator do
describe '#validate' do describe '#validate' do
subject { described_class.new.validate(user) } subject { described_class.new.validate(user) }

View file

@ -0,0 +1,46 @@
# frozen_string_literal: true
require 'rails_helper'
describe UnfilterNotificationsWorker do
let(:recipient) { Fabricate(:account) }
let(:sender) { Fabricate(:account) }
before do
# Populate multiple kinds of filtered notifications
private_message = Fabricate(:status, account: sender, visibility: :direct)
mention = Fabricate(:mention, account: recipient, status: private_message)
Fabricate(:notification, filtered: true, from_account: sender, account: recipient, type: :mention, activity: mention)
follow_request = sender.request_follow!(recipient)
Fabricate(:notification, filtered: true, from_account: sender, account: recipient, type: :follow_request, activity: follow_request)
end
shared_examples 'shared behavior' do
it 'unfilters notifications and adds private messages to conversations' do
expect { subject }
.to change { recipient.notifications.where(from_account_id: sender.id).pluck(:filtered) }.from([true, true]).to([false, false])
.and change { recipient.conversations.exists?(last_status_id: sender.statuses.first.id) }.to(true)
end
end
describe '#perform' do
context 'with single argument (prerelease behavior)' do
subject { described_class.new.perform(notification_request.id) }
let(:notification_request) { Fabricate(:notification_request, from_account: sender, account: recipient) }
it_behaves_like 'shared behavior'
it 'destroys the notification request' do
expect { subject }
.to change { NotificationRequest.exists?(notification_request.id) }.to(false)
end
end
context 'with two arguments' do
subject { described_class.new.perform(recipient.id, sender.id) }
it_behaves_like 'shared behavior'
end
end
end

402
yarn.lock
View file

@ -1579,10 +1579,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/color-helpers@npm:^4.2.1": "@csstools/color-helpers@npm:^5.0.1":
version: 4.2.1 version: 5.0.1
resolution: "@csstools/color-helpers@npm:4.2.1" resolution: "@csstools/color-helpers@npm:5.0.1"
checksum: 10c0/72e11b186ad0f6019a9b4b3752e620fa798c2a40cf47e8cad565dff46e572c9342eb8cf804542d7886344a1e540555d77f20119ace6b2d8a45b6e5ef8a41685c checksum: 10c0/77fa3b7236eaa3f36dea24708ac0d5e53168903624ac5aed54615752a0730cd20773fda50e742ce868012eca8c000cc39688e05869e79f34714230ab6968d1e6
languageName: node languageName: node
linkType: hard linkType: hard
@ -1596,16 +1596,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/css-color-parser@npm:^3.0.0": "@csstools/css-color-parser@npm:^3.0.1":
version: 3.0.0 version: 3.0.1
resolution: "@csstools/css-color-parser@npm:3.0.0" resolution: "@csstools/css-color-parser@npm:3.0.1"
dependencies: dependencies:
"@csstools/color-helpers": "npm:^4.2.1" "@csstools/color-helpers": "npm:^5.0.1"
"@csstools/css-calc": "npm:^2.0.0" "@csstools/css-calc": "npm:^2.0.0"
peerDependencies: peerDependencies:
"@csstools/css-parser-algorithms": ^3.0.0 "@csstools/css-parser-algorithms": ^3.0.0
"@csstools/css-tokenizer": ^3.0.0 "@csstools/css-tokenizer": ^3.0.0
checksum: 10c0/9b56ba3b56691d2133f1d9b881131bfd9745024a79f825284109adac05578e15ae3eed0e99c98db162932d69770fc970b5b005996c32cdf7167af3418da263c3 checksum: 10c0/8890a621f916cbbf49e749d4e85e934ce55c9f9c339abcc5f4a64bc165605a6e8dd3cad9d3bbc994d2419a3b38981dca84b93ae50aa91d492fb5f0f4c9d95969
languageName: node languageName: node
linkType: hard linkType: hard
@ -1673,33 +1673,33 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-color-function@npm:^4.0.0": "@csstools/postcss-color-function@npm:^4.0.1":
version: 4.0.0 version: 4.0.1
resolution: "@csstools/postcss-color-function@npm:4.0.0" resolution: "@csstools/postcss-color-function@npm:4.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/ff0c0c44f5d17bc5e7ea287eff9c10ca334a84d086998a6b243a209f1795d32ba872357935f4176e5206b88dc8d2a204f452c13bc940540b7122e9e807511ac6 checksum: 10c0/f0d3dd0677d381df54987d13ea63a59e911816d98a22eda7a5e55ca2908f52afc42fbffb73a8d25a18632b936dc38f6ada9f3e2dd7911cf775ce3718657420f4
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-color-mix-function@npm:^3.0.0": "@csstools/postcss-color-mix-function@npm:^3.0.1":
version: 3.0.0 version: 3.0.1
resolution: "@csstools/postcss-color-mix-function@npm:3.0.0" resolution: "@csstools/postcss-color-mix-function@npm:3.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/120e96581834b2363df1fb653959dc243d93c01bcd70bf2e34418c20cd418a75f8b4e2e81da6955345619dcbb246e7d023f395521522bacb455583c15f61c677 checksum: 10c0/ff76400d132c42d70f58b0908ab602b550b43720320288eb4ca1f185e7340c6f232b2a789ac94be255fc7bedc3c6125314d564297d23606fb2c91a1e2d79c40b
languageName: node languageName: node
linkType: hard linkType: hard
@ -1742,46 +1742,46 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-gamut-mapping@npm:^2.0.0": "@csstools/postcss-gamut-mapping@npm:^2.0.1":
version: 2.0.0 version: 2.0.1
resolution: "@csstools/postcss-gamut-mapping@npm:2.0.0" resolution: "@csstools/postcss-gamut-mapping@npm:2.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/be1d7f4c96f3bbcb69ed4ccc2ff406a884ae7129e6542ab6800782fbfe4e077159352409961f2da8054ec9fabbf6ed211288f1004c96632a1f6b10bef332d880 checksum: 10c0/3415c420463dd481a3ddf5b104f15661492d9aa3613c109f9b7354b2664965a92036045e157945348cf2c06e075b89a0c0c4f49c8a00d41c827c5b61de297cd0
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-gradients-interpolation-method@npm:^5.0.0": "@csstools/postcss-gradients-interpolation-method@npm:^5.0.1":
version: 5.0.0 version: 5.0.1
resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.0" resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/04e29fd877a499b9570665aea5b23cd70635b538dd903b9f9706ddd85a2d9c93445aea4b6b7dbcf8986ab58b45bb502ec5060044d945096d0af2eb6cebadb88e checksum: 10c0/a1c5d6bf308ff9e1972cb39030859cd135246f8f697e5d1278ddd8ed27ce53eb76b3e628acc64145290006f45140d0a4a65e5df71f131d3e6447f0e5d3301088
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-hwb-function@npm:^4.0.0": "@csstools/postcss-hwb-function@npm:^4.0.1":
version: 4.0.0 version: 4.0.1
resolution: "@csstools/postcss-hwb-function@npm:4.0.0" resolution: "@csstools/postcss-hwb-function@npm:4.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/1aff69ca364417ac2b7ef1c737f88567f441bfd54d93d7b635e0ad605c61edcc2282bc0e2df73c83d1c6a24487e0acec34a4585d27d5f6027402aaea71696190 checksum: 10c0/3247c3ab75d3cdb0ca80f7bb63d944ce933694ee9d7ee68aea11e727e883e0d35936b4a29e28700bda5eea2be26917a6c95c22a6b244e945cc558669f88b8a6e
languageName: node languageName: node
linkType: hard linkType: hard
@ -1819,9 +1819,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-light-dark-function@npm:^2.0.0": "@csstools/postcss-light-dark-function@npm:^2.0.1":
version: 2.0.0 version: 2.0.1
resolution: "@csstools/postcss-light-dark-function@npm:2.0.0" resolution: "@csstools/postcss-light-dark-function@npm:2.0.1"
dependencies: dependencies:
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
@ -1829,7 +1829,7 @@ __metadata:
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/d0eb1e04854c4ae425c6aff51ce9d0db90e9457aea3307d3ed916f500d2b5a3314a25d3487ea893e7b006a34c0d155462566d6066c8c54baec33eb104891c6db checksum: 10c0/4caf23781daa72f036a830b7fc2c07cde1122afd7bc7c6a291992b5264ea92c1fb22ec2ed684c5ce50e6e848f6d0ea39ef34a5679ea37a546b8db6eb555e3f80
languageName: node languageName: node
linkType: hard linkType: hard
@ -1933,18 +1933,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-oklab-function@npm:^4.0.0": "@csstools/postcss-oklab-function@npm:^4.0.1":
version: 4.0.0 version: 4.0.1
resolution: "@csstools/postcss-oklab-function@npm:4.0.0" resolution: "@csstools/postcss-oklab-function@npm:4.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/9e228049645e6a6baa77d6e7e35b3862f3e2e4836fbf2de43fa246d91f0efa36e7f18eae3f2b224c61e72628aaf14d4bff86c555fb06378d5e05e71dca92f9ec checksum: 10c0/b4450fb792c505936e1f9290e8df5420e98ccba78fa1badc9261ff99bebff8cc3b1f050e518728de791acadba08b5e8c213d97b479f551b72b4f8a5793625998
languageName: node languageName: node
linkType: hard linkType: hard
@ -1959,18 +1959,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-relative-color-syntax@npm:^3.0.0": "@csstools/postcss-relative-color-syntax@npm:^3.0.1":
version: 3.0.0 version: 3.0.1
resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.0" resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/d7ae180d746bd9778d8b9f74f8d644f4c6a98b29659423d4ee2b48f461e90a3e30b44dcf44a181ade083b6c6d1b0346b7b3e62fe67fdeaba59a13f050a19c7d1 checksum: 10c0/95a0001549b0fcae6add7db6264d16183734a9dd94e54e9b606b0dcefbd96540d8917707eef2525a5024e4078ef039acfa05c2c1b309fe444a7fc1f1c05d6594
languageName: node languageName: node
linkType: hard linkType: hard
@ -1998,15 +1998,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-text-decoration-shorthand@npm:^4.0.0": "@csstools/postcss-text-decoration-shorthand@npm:^4.0.1":
version: 4.0.0 version: 4.0.1
resolution: "@csstools/postcss-text-decoration-shorthand@npm:4.0.0" resolution: "@csstools/postcss-text-decoration-shorthand@npm:4.0.1"
dependencies: dependencies:
"@csstools/color-helpers": "npm:^4.2.1" "@csstools/color-helpers": "npm:^5.0.1"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/dedc98134648d5306e795e4176b2c39a578a237669562e7d934d0b0ac7411d37bab4065c8b0adfc075b57250daba62f045b86c79286b5f9be55502acef0d88c6 checksum: 10c0/81950e248d6019c0066353895e0fa2a5c684b754c9af349218cb919534f5ebf79e5e9c7a10b3af1e9c56de2f246968de3b87a00d8c4102e5f88e0f05c04f9889
languageName: node languageName: node
linkType: hard linkType: hard
@ -4132,8 +4132,8 @@ __metadata:
linkType: hard linkType: hard
"@types/webpack@npm:^4.41.33": "@types/webpack@npm:^4.41.33":
version: 4.41.38 version: 4.41.39
resolution: "@types/webpack@npm:4.41.38" resolution: "@types/webpack@npm:4.41.39"
dependencies: dependencies:
"@types/node": "npm:*" "@types/node": "npm:*"
"@types/tapable": "npm:^1" "@types/tapable": "npm:^1"
@ -4141,7 +4141,7 @@ __metadata:
"@types/webpack-sources": "npm:*" "@types/webpack-sources": "npm:*"
anymatch: "npm:^3.0.0" anymatch: "npm:^3.0.0"
source-map: "npm:^0.6.0" source-map: "npm:^0.6.0"
checksum: 10c0/5a0a7465d45a0e7701a8c863e88c6cba7660b37e4aeab851c71baf505dbab2e178be1cac82488c2e7d0ea11fb703ceddb53476daec3ec9a004e2fc1554233483 checksum: 10c0/740420d092abb80b70263b02609bde209801b060d8e6f3a399a129945cb09182c2ce63dc816908bfbcdb123b35dc4c4fb51367aac2b5974537694cac2631db21
languageName: node languageName: node
linkType: hard linkType: hard
@ -5198,13 +5198,13 @@ __metadata:
linkType: hard linkType: hard
"axios@npm:^1.4.0": "axios@npm:^1.4.0":
version: 1.7.3 version: 1.7.4
resolution: "axios@npm:1.7.3" resolution: "axios@npm:1.7.4"
dependencies: dependencies:
follow-redirects: "npm:^1.15.6" follow-redirects: "npm:^1.15.6"
form-data: "npm:^4.0.0" form-data: "npm:^4.0.0"
proxy-from-env: "npm:^1.1.0" proxy-from-env: "npm:^1.1.0"
checksum: 10c0/a18cbe559203efa05fb1fec2d1898e23bf6329bd2575784ee32aa11b5bbe1d54b9f472c49a261294125519cf62aa4fe5ef6e647bb7482eafc15bffe15ab314ce checksum: 10c0/5ea1a93140ca1d49db25ef8e1bd8cfc59da6f9220159a944168860ad15a2743ea21c5df2967795acb15cbe81362f5b157fdebbea39d53117ca27658bab9f7f17
languageName: node languageName: node
linkType: hard linkType: hard
@ -5701,17 +5701,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1": "browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3":
version: 4.23.1 version: 4.23.3
resolution: "browserslist@npm:4.23.1" resolution: "browserslist@npm:4.23.3"
dependencies: dependencies:
caniuse-lite: "npm:^1.0.30001629" caniuse-lite: "npm:^1.0.30001646"
electron-to-chromium: "npm:^1.4.796" electron-to-chromium: "npm:^1.5.4"
node-releases: "npm:^2.0.14" node-releases: "npm:^2.0.18"
update-browserslist-db: "npm:^1.0.16" update-browserslist-db: "npm:^1.1.0"
bin: bin:
browserslist: cli.js browserslist: cli.js
checksum: 10c0/eb47c7ab9d60db25ce2faca70efeb278faa7282a2f62b7f2fa2f92e5f5251cf65144244566c86559419ff4f6d78f59ea50e39911321ad91f3b27788901f1f5e9 checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642
languageName: node languageName: node
linkType: hard linkType: hard
@ -5913,10 +5913,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001629": "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001646":
version: 1.0.30001636 version: 1.0.30001651
resolution: "caniuse-lite@npm:1.0.30001636" resolution: "caniuse-lite@npm:1.0.30001651"
checksum: 10c0/e5f965b4da7bae1531fd9f93477d015729ff9e3fa12670ead39a9e6cdc4c43e62c272d47857c5cc332e7b02d697cb3f2f965a1030870ac7476da60c2fc81ee94 checksum: 10c0/7821278952a6dbd17358e5d08083d258f092e2a530f5bc1840657cb140fbbc5ec44293bc888258c44a18a9570cde149ed05819ac8320b9710cf22f699891e6ad
languageName: node languageName: node
linkType: hard linkType: hard
@ -6781,43 +6781,43 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cssnano-preset-default@npm:^7.0.4": "cssnano-preset-default@npm:^7.0.5":
version: 7.0.4 version: 7.0.5
resolution: "cssnano-preset-default@npm:7.0.4" resolution: "cssnano-preset-default@npm:7.0.5"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
css-declaration-sorter: "npm:^7.2.0" css-declaration-sorter: "npm:^7.2.0"
cssnano-utils: "npm:^5.0.0" cssnano-utils: "npm:^5.0.0"
postcss-calc: "npm:^10.0.0" postcss-calc: "npm:^10.0.1"
postcss-colormin: "npm:^7.0.1" postcss-colormin: "npm:^7.0.2"
postcss-convert-values: "npm:^7.0.2" postcss-convert-values: "npm:^7.0.3"
postcss-discard-comments: "npm:^7.0.1" postcss-discard-comments: "npm:^7.0.2"
postcss-discard-duplicates: "npm:^7.0.0" postcss-discard-duplicates: "npm:^7.0.1"
postcss-discard-empty: "npm:^7.0.0" postcss-discard-empty: "npm:^7.0.0"
postcss-discard-overridden: "npm:^7.0.0" postcss-discard-overridden: "npm:^7.0.0"
postcss-merge-longhand: "npm:^7.0.2" postcss-merge-longhand: "npm:^7.0.3"
postcss-merge-rules: "npm:^7.0.2" postcss-merge-rules: "npm:^7.0.3"
postcss-minify-font-values: "npm:^7.0.0" postcss-minify-font-values: "npm:^7.0.0"
postcss-minify-gradients: "npm:^7.0.0" postcss-minify-gradients: "npm:^7.0.0"
postcss-minify-params: "npm:^7.0.1" postcss-minify-params: "npm:^7.0.2"
postcss-minify-selectors: "npm:^7.0.2" postcss-minify-selectors: "npm:^7.0.3"
postcss-normalize-charset: "npm:^7.0.0" postcss-normalize-charset: "npm:^7.0.0"
postcss-normalize-display-values: "npm:^7.0.0" postcss-normalize-display-values: "npm:^7.0.0"
postcss-normalize-positions: "npm:^7.0.0" postcss-normalize-positions: "npm:^7.0.0"
postcss-normalize-repeat-style: "npm:^7.0.0" postcss-normalize-repeat-style: "npm:^7.0.0"
postcss-normalize-string: "npm:^7.0.0" postcss-normalize-string: "npm:^7.0.0"
postcss-normalize-timing-functions: "npm:^7.0.0" postcss-normalize-timing-functions: "npm:^7.0.0"
postcss-normalize-unicode: "npm:^7.0.1" postcss-normalize-unicode: "npm:^7.0.2"
postcss-normalize-url: "npm:^7.0.0" postcss-normalize-url: "npm:^7.0.0"
postcss-normalize-whitespace: "npm:^7.0.0" postcss-normalize-whitespace: "npm:^7.0.0"
postcss-ordered-values: "npm:^7.0.1" postcss-ordered-values: "npm:^7.0.1"
postcss-reduce-initial: "npm:^7.0.1" postcss-reduce-initial: "npm:^7.0.2"
postcss-reduce-transforms: "npm:^7.0.0" postcss-reduce-transforms: "npm:^7.0.0"
postcss-svgo: "npm:^7.0.1" postcss-svgo: "npm:^7.0.1"
postcss-unique-selectors: "npm:^7.0.1" postcss-unique-selectors: "npm:^7.0.2"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/0083821e778bdf7b8aa9589408a01a717be730f73584e7b81756a6fcf87af05b8f17342025e666572a8d573cc30783f2d817b0f7ad63670398bc3135b017ccad checksum: 10c0/ffa7c6fa16c6ad98b7732fc563de74d492e6ad6d243a9f00431c0cbdbc576bcd49226d2695d881465d32dea0a2916add40ac10e7560dd7b5de9fd0fa25ee081b
languageName: node languageName: node
linkType: hard linkType: hard
@ -6831,14 +6831,14 @@ __metadata:
linkType: hard linkType: hard
"cssnano@npm:^7.0.0": "cssnano@npm:^7.0.0":
version: 7.0.4 version: 7.0.5
resolution: "cssnano@npm:7.0.4" resolution: "cssnano@npm:7.0.5"
dependencies: dependencies:
cssnano-preset-default: "npm:^7.0.4" cssnano-preset-default: "npm:^7.0.5"
lilconfig: "npm:^3.1.2" lilconfig: "npm:^3.1.2"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/3939a0b37b11cb4bae92f7916517c7ba21257551f92517b49a640d5df32e855fb7e73321f4be44d2c2de578309c05d711cdcb1976e95607b1b7f92bd4cbd1350 checksum: 10c0/cb43ed964787dca33efb44d8f4fea8a49c495db44d1d12940493f0dd5d63db78e01c5b140fe42b480b332733602a25f4c85186d00977eb3070b29f7422761985
languageName: node languageName: node
linkType: hard linkType: hard
@ -7479,10 +7479,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"electron-to-chromium@npm:^1.4.796": "electron-to-chromium@npm:^1.5.4":
version: 1.4.806 version: 1.5.7
resolution: "electron-to-chromium@npm:1.4.806" resolution: "electron-to-chromium@npm:1.5.7"
checksum: 10c0/44f925ba64bb623d0482cd2f14fcfb27017cec1f11ee642e0d49cb128cd714ba5e074c2cd8756dfc18010aa66d3c64039cdea891905f7c17160a8963db574fab checksum: 10c0/be4460bbe3d2186a16d53a03da67fde6fd06ad41943553ce517a45d52e03424732a982f75528e8a2d5fb042d6afde64186aa482caec0fb925daa5a74cf5ef060
languageName: node languageName: node
linkType: hard linkType: hard
@ -12402,10 +12402,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-releases@npm:^2.0.14": "node-releases@npm:^2.0.18":
version: 2.0.14 version: 2.0.18
resolution: "node-releases@npm:2.0.14" resolution: "node-releases@npm:2.0.18"
checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27
languageName: node languageName: node
linkType: hard linkType: hard
@ -13347,15 +13347,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-calc@npm:^10.0.0": "postcss-calc@npm:^10.0.1":
version: 10.0.0 version: 10.0.1
resolution: "postcss-calc@npm:10.0.0" resolution: "postcss-calc@npm:10.0.1"
dependencies: dependencies:
postcss-selector-parser: "npm:^6.0.16" postcss-selector-parser: "npm:^6.1.1"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4.38 postcss: ^8.4.38
checksum: 10c0/d4d529f2f71b49f17441eed74a7564ccd2779c72ed8648d4bb2530261a27c0ca01fe6a07260e7bf57e55f46dd68dea07e52fd1a6b538db7bc13015124be258a5 checksum: 10c0/5e38cc6f082f87e82067497b41684410784223ecd3701bf52242ea9f2f467f1fad6b5a561f8aa3be307d89435b4060f58aeb27c4064003586daf653cc4d91fef
languageName: node languageName: node
linkType: hard linkType: hard
@ -13370,18 +13370,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-color-functional-notation@npm:^7.0.0": "postcss-color-functional-notation@npm:^7.0.1":
version: 7.0.0 version: 7.0.1
resolution: "postcss-color-functional-notation@npm:7.0.0" resolution: "postcss-color-functional-notation@npm:7.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/6afe7b681a16783a27fa9600db348f995dfdbc9c945f6cdcec94ee2419e09cfd1c6e533264b830207f130e19ae18ff689ad9b48bced338f27f898eaecd61f844 checksum: 10c0/0cdfae4d85cb34425c8363b699b5da6f0c8cc43e7ce3b7fdd1fd39429ee81a4af75f973cd5c8293b1072688064da17a0a633827f23667e8cc0ff16217f0004eb
languageName: node languageName: node
linkType: hard linkType: hard
@ -13409,29 +13409,29 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-colormin@npm:^7.0.1": "postcss-colormin@npm:^7.0.2":
version: 7.0.1 version: 7.0.2
resolution: "postcss-colormin@npm:7.0.1" resolution: "postcss-colormin@npm:7.0.2"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
caniuse-api: "npm:^3.0.0" caniuse-api: "npm:^3.0.0"
colord: "npm:^2.9.3" colord: "npm:^2.9.3"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/e01e9e129ce39320cf10bb09ee2a3ab5b44b77805d3f7827eea07297644838b85c33b78996eeae0a1aba327ffd72a6ab1d24949ebc831523e310e916d5500371 checksum: 10c0/76d09fb7e0218698e622a7c2cfc9087985f48f3a7e44f2655d5eefac4ae9c04198ae9d408dc7ace15d3aa5bde80e7031e462b0cb9b5bd50cfa76bbb1503c755b
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-convert-values@npm:^7.0.2": "postcss-convert-values@npm:^7.0.3":
version: 7.0.2 version: 7.0.3
resolution: "postcss-convert-values@npm:7.0.2" resolution: "postcss-convert-values@npm:7.0.3"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/beb59faf6aae97e6d3c233c5e6ed06cc60d65c49eec576036e3d0da1a831a1e827e3d41f5e81d016440b4f0bdf1406268ae069c4d5b38a6667b310c3da079d22 checksum: 10c0/dbb6278bd8d8b11e448933d823426c883bff3f6abeaa23c7530cc4668b9da6f714e073840f280273f8a14022c3a99eb461ec732f7539e062b32f5281e1be6526
languageName: node languageName: node
linkType: hard linkType: hard
@ -13489,23 +13489,23 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-discard-comments@npm:^7.0.1": "postcss-discard-comments@npm:^7.0.2":
version: 7.0.1 version: 7.0.2
resolution: "postcss-discard-comments@npm:7.0.1" resolution: "postcss-discard-comments@npm:7.0.2"
dependencies: dependencies:
postcss-selector-parser: "npm:^6.1.0" postcss-selector-parser: "npm:^6.1.1"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/64de3fced7e0e49dfea6aede8a5ca495b81dcd01c3c47734a5fbc86a3cb2b1ae39e1958e34e9bea64ecabd5fb4d8c287ec1d6189cf175c2434c6b6582da79948 checksum: 10c0/c01632e643b6ec1f61ad59efe06a9e8dfc7fcedeb1551ae48fc33fa801353f6222e31954286cd97171c694f34c2b4c7f7a2213fd0f913e37c34d0353258ed234
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-discard-duplicates@npm:^7.0.0": "postcss-discard-duplicates@npm:^7.0.1":
version: 7.0.0 version: 7.0.1
resolution: "postcss-discard-duplicates@npm:7.0.0" resolution: "postcss-discard-duplicates@npm:7.0.1"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/37d568dc18d47b8b9f0fd6d5115b1faf96c2bf429fc4586508a773533479e18627d6260cad6a3ca7d3bfc2f220fd9448410aee40e07f2ec6c6f96bbe3595dbc8 checksum: 10c0/5cc2cac249f68004864865ea2ec38b7d5e28184f33e904e531ff57b533aacb73ec49e4a7d83219184001b8d167e5bcabc1673248134468d7ebaa0bfb9ff78f0a
languageName: node languageName: node
linkType: hard linkType: hard
@ -13592,18 +13592,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-lab-function@npm:^7.0.0": "postcss-lab-function@npm:^7.0.1":
version: 7.0.0 version: 7.0.1
resolution: "postcss-lab-function@npm:7.0.0" resolution: "postcss-lab-function@npm:7.0.1"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^3.0.0" "@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0" "@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0" "@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0" "@csstools/utilities": "npm:^2.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/f3647bcdd8d6140631b97276ecf51f40df2c7564610262a20c608c37c8ab79bf6e02888419dc657afc4720a7378e3ad19f4fdf811a69363424160d548ac68daf checksum: 10c0/8a6f3f465911c5c608650e3ebec01097d274109eea0fceb925f1ca52213c67a6496570ff2ba9af0a6c2153e208ef1d10cc43ad81f38405f5d39639680f7150a9
languageName: node languageName: node
linkType: hard linkType: hard
@ -13641,29 +13641,29 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-merge-longhand@npm:^7.0.2": "postcss-merge-longhand@npm:^7.0.3":
version: 7.0.2 version: 7.0.3
resolution: "postcss-merge-longhand@npm:7.0.2" resolution: "postcss-merge-longhand@npm:7.0.3"
dependencies: dependencies:
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
stylehacks: "npm:^7.0.2" stylehacks: "npm:^7.0.3"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/71d22418e5850e134bfcf2038acb1c91eeb48d9b6f9e4c0252fee757e11dc4ae351097a855c327fbc38dc7658fa6edc7cc7f458c08bb4044b82c6005dc565fcb checksum: 10c0/b968c3d16f3edc6075b20219a1165c089dc454a6a42951dcdfc94adb932fb96ef7bcd465c6cd21b0e5b55ac08921355ddbbbc7cdcf87a345e4bef8b3cdd2e7e9
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-merge-rules@npm:^7.0.2": "postcss-merge-rules@npm:^7.0.3":
version: 7.0.2 version: 7.0.3
resolution: "postcss-merge-rules@npm:7.0.2" resolution: "postcss-merge-rules@npm:7.0.3"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
caniuse-api: "npm:^3.0.0" caniuse-api: "npm:^3.0.0"
cssnano-utils: "npm:^5.0.0" cssnano-utils: "npm:^5.0.0"
postcss-selector-parser: "npm:^6.1.0" postcss-selector-parser: "npm:^6.1.1"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/fbad20382ca45f1b3b5ff704c075f899cc9ba8418ae6effbdeb9e7c1f9b5c24996d1941ad36cd0936d60cbf127a72f235b2cbb0c44d9239a8a61042406d95b4a checksum: 10c0/3cd20484ab6d15c62eded408248d5eeaba52a573935943f933865680e070a0e75b3a7447802c575bc86e1fae667cf51d9d5766537835d9b8c090337b5adf928e
languageName: node languageName: node
linkType: hard linkType: hard
@ -13691,28 +13691,28 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-minify-params@npm:^7.0.1": "postcss-minify-params@npm:^7.0.2":
version: 7.0.1 version: 7.0.2
resolution: "postcss-minify-params@npm:7.0.1" resolution: "postcss-minify-params@npm:7.0.2"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
cssnano-utils: "npm:^5.0.0" cssnano-utils: "npm:^5.0.0"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/84e1c4de5af47178c1f48e10ce16341560f32bb2becf5ec9b014103f6c706174bc70885e2e13ced4de9b4f1959fb970193261cbd4751c8b87d5159e859e8c5ec checksum: 10c0/0e041f70554bae9d4a66c8ab2f2f3ed8bf73862c9d5ff9972ac7f1a596badd1544f093fa2362dd33e96c038af9e10287cdbfec9f480c49bffdcbaca9fdcb1e4e
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-minify-selectors@npm:^7.0.2": "postcss-minify-selectors@npm:^7.0.3":
version: 7.0.2 version: 7.0.3
resolution: "postcss-minify-selectors@npm:7.0.2" resolution: "postcss-minify-selectors@npm:7.0.3"
dependencies: dependencies:
cssesc: "npm:^3.0.0" cssesc: "npm:^3.0.0"
postcss-selector-parser: "npm:^6.1.0" postcss-selector-parser: "npm:^6.1.1"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/87e0c21a0135b6c61b58d62c4c1e0cbd3cfb516ff8105db714c6a33a5edc477846ae220399d368e4ef6518529c711aa2dee9ff49e9befd93e83d5c939f3084a1 checksum: 10c0/5211f63a1672f646a1bab57bd8eac0816d42adacb5e286ad5e6e342a795bb0d086bd6044a1b338311ca28f33f2c1833165ee611eaa671287379821ba3c5d68ad
languageName: node languageName: node
linkType: hard linkType: hard
@ -13837,15 +13837,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-normalize-unicode@npm:^7.0.1": "postcss-normalize-unicode@npm:^7.0.2":
version: 7.0.1 version: 7.0.2
resolution: "postcss-normalize-unicode@npm:7.0.1" resolution: "postcss-normalize-unicode@npm:7.0.2"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/fcabac738765f608cb211ac01a19f9a7d784f99d223ef6f31352f37b9bcf008e0ca7849414c9e77116be8660d78b01dba6fc4a87cee7c9a977d3c2741d6a222d checksum: 10c0/0df1aac932cc2340715178fd024e0f6d872ea5a4bee1bc8357317a75a7b2c904d885f754cc162af001aa2a9ded7c54fac7cbcd701e21e995c1ace92dc08f2b9d
languageName: node languageName: node
linkType: hard linkType: hard
@ -13924,22 +13924,22 @@ __metadata:
linkType: hard linkType: hard
"postcss-preset-env@npm:^10.0.0": "postcss-preset-env@npm:^10.0.0":
version: 10.0.0 version: 10.0.1
resolution: "postcss-preset-env@npm:10.0.0" resolution: "postcss-preset-env@npm:10.0.1"
dependencies: dependencies:
"@csstools/postcss-cascade-layers": "npm:^5.0.0" "@csstools/postcss-cascade-layers": "npm:^5.0.0"
"@csstools/postcss-color-function": "npm:^4.0.0" "@csstools/postcss-color-function": "npm:^4.0.1"
"@csstools/postcss-color-mix-function": "npm:^3.0.0" "@csstools/postcss-color-mix-function": "npm:^3.0.1"
"@csstools/postcss-content-alt-text": "npm:^2.0.0" "@csstools/postcss-content-alt-text": "npm:^2.0.0"
"@csstools/postcss-exponential-functions": "npm:^2.0.0" "@csstools/postcss-exponential-functions": "npm:^2.0.0"
"@csstools/postcss-font-format-keywords": "npm:^4.0.0" "@csstools/postcss-font-format-keywords": "npm:^4.0.0"
"@csstools/postcss-gamut-mapping": "npm:^2.0.0" "@csstools/postcss-gamut-mapping": "npm:^2.0.1"
"@csstools/postcss-gradients-interpolation-method": "npm:^5.0.0" "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.1"
"@csstools/postcss-hwb-function": "npm:^4.0.0" "@csstools/postcss-hwb-function": "npm:^4.0.1"
"@csstools/postcss-ic-unit": "npm:^4.0.0" "@csstools/postcss-ic-unit": "npm:^4.0.0"
"@csstools/postcss-initial": "npm:^2.0.0" "@csstools/postcss-initial": "npm:^2.0.0"
"@csstools/postcss-is-pseudo-class": "npm:^5.0.0" "@csstools/postcss-is-pseudo-class": "npm:^5.0.0"
"@csstools/postcss-light-dark-function": "npm:^2.0.0" "@csstools/postcss-light-dark-function": "npm:^2.0.1"
"@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0"
"@csstools/postcss-logical-overflow": "npm:^2.0.0" "@csstools/postcss-logical-overflow": "npm:^2.0.0"
"@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0"
@ -13949,12 +13949,12 @@ __metadata:
"@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.0" "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.0"
"@csstools/postcss-nested-calc": "npm:^4.0.0" "@csstools/postcss-nested-calc": "npm:^4.0.0"
"@csstools/postcss-normalize-display-values": "npm:^4.0.0" "@csstools/postcss-normalize-display-values": "npm:^4.0.0"
"@csstools/postcss-oklab-function": "npm:^4.0.0" "@csstools/postcss-oklab-function": "npm:^4.0.1"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/postcss-relative-color-syntax": "npm:^3.0.0" "@csstools/postcss-relative-color-syntax": "npm:^3.0.1"
"@csstools/postcss-scope-pseudo-class": "npm:^4.0.0" "@csstools/postcss-scope-pseudo-class": "npm:^4.0.0"
"@csstools/postcss-stepped-value-functions": "npm:^4.0.0" "@csstools/postcss-stepped-value-functions": "npm:^4.0.0"
"@csstools/postcss-text-decoration-shorthand": "npm:^4.0.0" "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1"
"@csstools/postcss-trigonometric-functions": "npm:^4.0.0" "@csstools/postcss-trigonometric-functions": "npm:^4.0.0"
"@csstools/postcss-unset-value": "npm:^4.0.0" "@csstools/postcss-unset-value": "npm:^4.0.0"
autoprefixer: "npm:^10.4.19" autoprefixer: "npm:^10.4.19"
@ -13965,7 +13965,7 @@ __metadata:
cssdb: "npm:^8.1.0" cssdb: "npm:^8.1.0"
postcss-attribute-case-insensitive: "npm:^7.0.0" postcss-attribute-case-insensitive: "npm:^7.0.0"
postcss-clamp: "npm:^4.1.0" postcss-clamp: "npm:^4.1.0"
postcss-color-functional-notation: "npm:^7.0.0" postcss-color-functional-notation: "npm:^7.0.1"
postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-hex-alpha: "npm:^10.0.0"
postcss-color-rebeccapurple: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0"
postcss-custom-media: "npm:^11.0.0" postcss-custom-media: "npm:^11.0.0"
@ -13978,7 +13978,7 @@ __metadata:
postcss-font-variant: "npm:^5.0.0" postcss-font-variant: "npm:^5.0.0"
postcss-gap-properties: "npm:^6.0.0" postcss-gap-properties: "npm:^6.0.0"
postcss-image-set-function: "npm:^7.0.0" postcss-image-set-function: "npm:^7.0.0"
postcss-lab-function: "npm:^7.0.0" postcss-lab-function: "npm:^7.0.1"
postcss-logical: "npm:^8.0.0" postcss-logical: "npm:^8.0.0"
postcss-nesting: "npm:^13.0.0" postcss-nesting: "npm:^13.0.0"
postcss-opacity-percentage: "npm:^2.0.0" postcss-opacity-percentage: "npm:^2.0.0"
@ -13990,7 +13990,7 @@ __metadata:
postcss-selector-not: "npm:^8.0.0" postcss-selector-not: "npm:^8.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/0b61c44233ee7fd17e32912ce028edc19998f30183f1ff2186523c4f9eac4a2a36513af31670e13ceb05f2146c4549a0b870ba0de0e3a08e77a9d57d8de72654 checksum: 10c0/5849915d040413f68ab71b3489daaa5b6687b4d4710da47a0d1420df0890858f0b53c9ec6755d872dbe38a2695ab12584be654456e3d6ce311b88927209c02b2
languageName: node languageName: node
linkType: hard linkType: hard
@ -14005,15 +14005,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-reduce-initial@npm:^7.0.1": "postcss-reduce-initial@npm:^7.0.2":
version: 7.0.1 version: 7.0.2
resolution: "postcss-reduce-initial@npm:7.0.1" resolution: "postcss-reduce-initial@npm:7.0.2"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
caniuse-api: "npm:^3.0.0" caniuse-api: "npm:^3.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/3e7c6c1d0cc4ace38f44971f02d0dd98131af678cf114aa05cfa0c066420019d5329c221ef8507644b8a79d0e76534303f747c97860ac777fe17f57110edefe1 checksum: 10c0/1e6fafaf5fac52b351c8de156ed62e4e1f48da7eb07f9ce90da54b45dca61da9af1e954b8a343271cb3e4ec99e0c5f18d7f9f96da0ca144511fca04498fac78c
languageName: node languageName: node
linkType: hard linkType: hard
@ -14073,7 +14073,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.16, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.0, postcss-selector-parser@npm:^6.1.1": "postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.0, postcss-selector-parser@npm:^6.1.1":
version: 6.1.1 version: 6.1.1
resolution: "postcss-selector-parser@npm:6.1.1" resolution: "postcss-selector-parser@npm:6.1.1"
dependencies: dependencies:
@ -14095,14 +14095,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-unique-selectors@npm:^7.0.1": "postcss-unique-selectors@npm:^7.0.2":
version: 7.0.1 version: 7.0.2
resolution: "postcss-unique-selectors@npm:7.0.1" resolution: "postcss-unique-selectors@npm:7.0.2"
dependencies: dependencies:
postcss-selector-parser: "npm:^6.1.0" postcss-selector-parser: "npm:^6.1.1"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/6352d71ce2f65265f545831c2ce3686bd71961d08a2247c545d717d93d23b1eb08bb986efc11194d31970eea4cb42207b9aa9a3f4666d75492a6cbf1493cf466 checksum: 10c0/cc54c57cd1c5a6e3e166ec63cc036d9e2df80b05e508d9ce754ca4193bf8c1bfcc16b3c6f0d81b8352a3282201d249b90bb87abacfcfb9065c9e3705ea5d110e
languageName: node languageName: node
linkType: hard linkType: hard
@ -14114,13 +14114,13 @@ __metadata:
linkType: hard linkType: hard
"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.40": "postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.40":
version: 8.4.40 version: 8.4.41
resolution: "postcss@npm:8.4.40" resolution: "postcss@npm:8.4.41"
dependencies: dependencies:
nanoid: "npm:^3.3.7" nanoid: "npm:^3.3.7"
picocolors: "npm:^1.0.1" picocolors: "npm:^1.0.1"
source-map-js: "npm:^1.2.0" source-map-js: "npm:^1.2.0"
checksum: 10c0/65ed67573e5443beaeb582282ff27a6be7c7fe3b4d9fa15761157616f2b97510cb1c335023c26220b005909f007337026d6e3ff092f25010b484ad484e80ea7f checksum: 10c0/c1828fc59e7ec1a3bf52b3a42f615dba53c67960ed82a81df6441b485fe43c20aba7f4e7c55425762fd99c594ecabbaaba8cf5b30fd79dfec5b52a9f63a2d690
languageName: node languageName: node
linkType: hard linkType: hard
@ -16627,15 +16627,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"stylehacks@npm:^7.0.2": "stylehacks@npm:^7.0.3":
version: 7.0.2 version: 7.0.3
resolution: "stylehacks@npm:7.0.2" resolution: "stylehacks@npm:7.0.3"
dependencies: dependencies:
browserslist: "npm:^4.23.1" browserslist: "npm:^4.23.3"
postcss-selector-parser: "npm:^6.1.0" postcss-selector-parser: "npm:^6.1.1"
peerDependencies: peerDependencies:
postcss: ^8.4.31 postcss: ^8.4.31
checksum: 10c0/552299e869ac430e1076c025ace6c80bdfd5b672632435625eb1bd45ff5611aad7f3ee810e72edc04dc0fc3761e08dec40d27b72c50b95690eea2de43238b8d8 checksum: 10c0/5030334b06ef705b5700444dab120b540b09159e935e75b60f25bd56db1d85f0d11755f0b0f64ce3f12c5a72ff1b6f57fea49c26d18eb0de2334d6a143b94f8d
languageName: node languageName: node
linkType: hard linkType: hard
@ -17576,9 +17576,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"update-browserslist-db@npm:^1.0.16": "update-browserslist-db@npm:^1.1.0":
version: 1.0.16 version: 1.1.0
resolution: "update-browserslist-db@npm:1.0.16" resolution: "update-browserslist-db@npm:1.1.0"
dependencies: dependencies:
escalade: "npm:^3.1.2" escalade: "npm:^3.1.2"
picocolors: "npm:^1.0.1" picocolors: "npm:^1.0.1"
@ -17586,7 +17586,7 @@ __metadata:
browserslist: ">= 4.21.0" browserslist: ">= 4.21.0"
bin: bin:
update-browserslist-db: cli.js update-browserslist-db: cli.js
checksum: 10c0/5995399fc202adbb51567e4810e146cdf7af630a92cc969365a099150cb00597e425cc14987ca7080b09a4d0cfd2a3de53fbe72eebff171aed7f9bb81f9bf405 checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9
languageName: node languageName: node
linkType: hard linkType: hard
@ -18293,9 +18293,9 @@ __metadata:
linkType: hard linkType: hard
"wicg-inert@npm:^3.1.2": "wicg-inert@npm:^3.1.2":
version: 3.1.2 version: 3.1.3
resolution: "wicg-inert@npm:3.1.2" resolution: "wicg-inert@npm:3.1.3"
checksum: 10c0/5b20eaedcb30f1093fb6afd0480a059e40814da56c6052469c6fe95dd2d288b89c55ed1bdbfae4db70fd5ec8148dda8dd3b671a27a26870c8f77626b13cedd1b checksum: 10c0/160b981584e40d3a568af16a93b70dca847d9fce6d6704b40c60a9a1435f77406cc1abc56aa1bb5a63669c6cb819f09d51d7f27c16f3829cb86052e3fd27f2b0
languageName: node languageName: node
linkType: hard linkType: hard