Merge commit '8e00f7cc8fab9b447f80a27a972eef78186633ad' into glitch-soc/merge-upstream

This commit is contained in:
Claire
2026-03-27 18:15:50 +01:00
86 changed files with 1142 additions and 558 deletions

View File

@@ -13,13 +13,13 @@ class SeveredRelationshipsController < ApplicationController
def following def following
respond_to do |format| respond_to do |format|
format.csv { send_data following_data, filename: "following-#{@event.target_name}-#{@event.created_at.to_date.iso8601}.csv" } format.csv { send_data following_data, filename: }
end end
end end
def followers def followers
respond_to do |format| respond_to do |format|
format.csv { send_data followers_data, filename: "followers-#{@event.target_name}-#{@event.created_at.to_date.iso8601}.csv" } format.csv { send_data followers_data, filename: }
end end
end end
@@ -48,4 +48,8 @@ class SeveredRelationshipsController < ApplicationController
def acct(account) def acct(account)
account.local? ? account.local_username_and_domain : account.acct account.local? ? account.local_username_and_domain : account.acct
end end
def filename
"#{action_name}-#{@event.identifier}.csv"
end
end end

View File

@@ -75,6 +75,7 @@ interface AccountProps {
withMenu?: boolean; withMenu?: boolean;
withBorder?: boolean; withBorder?: boolean;
extraAccountInfo?: React.ReactNode; extraAccountInfo?: React.ReactNode;
className?: string;
children?: React.ReactNode; children?: React.ReactNode;
} }
@@ -88,6 +89,7 @@ export const Account: React.FC<AccountProps> = ({
withMenu = true, withMenu = true,
withBorder = true, withBorder = true,
extraAccountInfo, extraAccountInfo,
className,
children, children,
}) => { }) => {
const intl = useIntl(); const intl = useIntl();
@@ -290,7 +292,7 @@ export const Account: React.FC<AccountProps> = ({
return ( return (
<div <div
className={classNames('account', { className={classNames('account', className, {
'account--minimal': minimal, 'account--minimal': minimal,
'account--without-border': !withBorder, 'account--without-border': !withBorder,
})} })}

View File

@@ -6,6 +6,7 @@
background-color: var(--color-bg-brand-softest); background-color: var(--color-bg-brand-softest);
color: var(--color-text-primary); color: var(--color-text-primary);
border-radius: 12px; border-radius: 12px;
font-size: 15px;
} }
.icon { .icon {

View File

@@ -7,15 +7,11 @@ import ErrorIcon from '@/material-icons/400-24px/error.svg?react';
import InfoIcon from '@/material-icons/400-24px/info.svg?react'; import InfoIcon from '@/material-icons/400-24px/info.svg?react';
import WarningIcon from '@/material-icons/400-24px/warning.svg?react'; import WarningIcon from '@/material-icons/400-24px/warning.svg?react';
import type { FieldStatus } from '../form_fields/form_field_wrapper';
import { Icon } from '../icon'; import { Icon } from '../icon';
import classes from './styles.module.css'; import classes from './styles.module.css';
export interface FieldStatus {
variant: 'error' | 'warning' | 'info' | 'success';
message?: string;
}
const iconMap: Record<FieldStatus['variant'], React.FunctionComponent> = { const iconMap: Record<FieldStatus['variant'], React.FunctionComponent> = {
error: ErrorIcon, error: ErrorIcon,
warning: WarningIcon, warning: WarningIcon,

View File

@@ -1,9 +1,9 @@
import { useMemo } from 'react';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import classNames from 'classnames'; import classNames from 'classnames';
import { length } from 'stringz';
import { polymorphicForwardRef } from '@/types/polymorphic'; import { polymorphicForwardRef } from '@/types/polymorphic';
import classes from './styles.module.scss'; import classes from './styles.module.scss';
@@ -14,8 +14,6 @@ interface CharacterCounterProps {
recommended?: boolean; recommended?: boolean;
} }
const segmenter = new Intl.Segmenter();
export const CharacterCounter = polymorphicForwardRef< export const CharacterCounter = polymorphicForwardRef<
'span', 'span',
CharacterCounterProps CharacterCounterProps
@@ -31,10 +29,7 @@ export const CharacterCounter = polymorphicForwardRef<
}, },
ref, ref,
) => { ) => {
const currentLength = useMemo( const currentLength = length(currentString);
() => [...segmenter.segment(currentString)].length,
[currentString],
);
return ( return (
<Component <Component
{...props} {...props}

View File

@@ -13,6 +13,7 @@ export const StatusesCounter = (
count: pluralReady, count: pluralReady,
counter: <strong>{displayNumber}</strong>, counter: <strong>{displayNumber}</strong>,
}} }}
tagName='span'
/> />
); );
@@ -27,6 +28,7 @@ export const FollowingCounter = (
count: pluralReady, count: pluralReady,
counter: <strong>{displayNumber}</strong>, counter: <strong>{displayNumber}</strong>,
}} }}
tagName='span'
/> />
); );
@@ -41,6 +43,7 @@ export const FollowersCounter = (
count: pluralReady, count: pluralReady,
counter: <strong>{displayNumber}</strong>, counter: <strong>{displayNumber}</strong>,
}} }}
tagName='span'
/> />
); );
@@ -55,5 +58,6 @@ export const FollowersYouKnowCounter = (
count: pluralReady, count: pluralReady,
counter: <strong>{displayNumber}</strong>, counter: <strong>{displayNumber}</strong>,
}} }}
tagName='span'
/> />
); );

View File

@@ -121,6 +121,7 @@ export const EditedTimestamp: React.FC<{
/> />
), ),
}} }}
tagName='span'
/> />
</button> </button>
</Dropdown> </Dropdown>

View File

@@ -2,11 +2,9 @@ import type {
ChangeEvent, ChangeEvent,
ChangeEventHandler, ChangeEventHandler,
ComponentPropsWithoutRef, ComponentPropsWithoutRef,
Dispatch,
FC, FC,
ReactNode, ReactNode,
RefObject, RefObject,
SetStateAction,
} from 'react'; } from 'react';
import { useCallback, useId, useRef } from 'react'; import { useCallback, useId, useRef } from 'react';
@@ -25,7 +23,7 @@ import { TextInput } from './text_input_field';
export type EmojiInputProps = { export type EmojiInputProps = {
value?: string; value?: string;
onChange?: Dispatch<SetStateAction<string>>; onChange?: (newValue: string) => void;
counterMax?: number; counterMax?: number;
recommended?: boolean; recommended?: boolean;
} & Omit<CommonFieldWrapperProps, 'wrapperClassName'>; } & Omit<CommonFieldWrapperProps, 'wrapperClassName'>;
@@ -138,12 +136,15 @@ const EmojiFieldWrapper: FC<
const handlePickEmoji = useCallback( const handlePickEmoji = useCallback(
(emoji: string) => { (emoji: string) => {
onChange?.((prev) => { if (!value) {
const position = inputRef.current?.selectionStart ?? prev.length; onChange?.('');
return insertEmojiAtPosition(prev, emoji, position); return;
}); }
const position = inputRef.current?.selectionStart ?? value.length;
const newValue = insertEmojiAtPosition(value, emoji, position);
onChange?.(newValue);
}, },
[onChange, inputRef], [inputRef, value, onChange],
); );
const handleChange = useCallback( const handleChange = useCallback(

View File

@@ -4,10 +4,10 @@ import type { ReactNode, FC } from 'react';
import { createContext, useId } from 'react'; import { createContext, useId } from 'react';
import { A11yLiveRegion } from 'mastodon/components/a11y_live_region'; import { A11yLiveRegion } from 'mastodon/components/a11y_live_region';
import type { FieldStatus } from 'mastodon/components/callout_inline';
import { CalloutInline } from 'mastodon/components/callout_inline'; import { CalloutInline } from 'mastodon/components/callout_inline';
import classes from './fieldset.module.scss'; import classes from './fieldset.module.scss';
import type { FieldStatus } from './form_field_wrapper';
import { getFieldStatus } from './form_field_wrapper'; import { getFieldStatus } from './form_field_wrapper';
import formFieldWrapperClasses from './form_field_wrapper.module.scss'; import formFieldWrapperClasses from './form_field_wrapper.module.scss';

View File

@@ -8,7 +8,6 @@ import { FormattedMessage } from 'react-intl';
import classNames from 'classnames'; import classNames from 'classnames';
import { A11yLiveRegion } from 'mastodon/components/a11y_live_region'; import { A11yLiveRegion } from 'mastodon/components/a11y_live_region';
import type { FieldStatus } from 'mastodon/components/callout_inline';
import { CalloutInline } from 'mastodon/components/callout_inline'; import { CalloutInline } from 'mastodon/components/callout_inline';
import { FieldsetNameContext } from './fieldset'; import { FieldsetNameContext } from './fieldset';
@@ -20,11 +19,16 @@ export interface InputProps {
'aria-describedby'?: string; 'aria-describedby'?: string;
} }
export interface FieldStatus {
variant: 'error' | 'warning' | 'info' | 'success';
message?: string;
}
interface FieldWrapperProps { interface FieldWrapperProps {
label: ReactNode; label: ReactNode;
hint?: ReactNode; hint?: ReactNode;
required?: boolean; required?: boolean;
status?: FieldStatus['variant'] | FieldStatus; status?: FieldStatus['variant'] | FieldStatus | null;
inputId?: string; inputId?: string;
describedById?: string; describedById?: string;
inputPlacement?: 'inline-start' | 'inline-end'; inputPlacement?: 'inline-start' | 'inline-end';

View File

@@ -1,3 +1,4 @@
export type { FieldStatus } from './form_field_wrapper';
export { FormFieldWrapper } from './form_field_wrapper'; export { FormFieldWrapper } from './form_field_wrapper';
export { FormStack } from './form_stack'; export { FormStack } from './form_stack';
export { Fieldset } from './fieldset'; export { Fieldset } from './fieldset';

View File

@@ -0,0 +1,40 @@
import { NavLink } from 'react-router-dom';
import type { MastodonLocationDescriptor } from 'mastodon/components/router';
import classes from './styles.module.scss';
interface WrapperProps {
children: React.ReactNode;
}
export const NumberFields: React.FC<WrapperProps> = ({ children }) => {
return <ul className={classes.list}>{children}</ul>;
};
interface ItemProps {
label: React.ReactNode;
hint?: string;
link?: MastodonLocationDescriptor;
children: React.ReactNode;
}
export const NumberFieldsItem: React.FC<ItemProps> = ({
label,
hint,
link,
children,
}) => {
return (
<li className={classes.item} title={hint}>
{label}
{link ? (
<NavLink exact to={link}>
{children}
</NavLink>
) : (
<strong>{children}</strong>
)}
</li>
);
};

View File

@@ -0,0 +1,32 @@
.list {
display: flex;
flex-wrap: wrap;
margin: 8px 0;
padding: 0;
gap: 4px 20px;
font-size: 13px;
color: var(--color-text-secondary);
}
.item {
@container (width < 420px) {
flex: 1 1 0px;
}
a,
strong {
display: block;
font-weight: 600;
color: var(--color-text-primary);
font-size: 15px;
}
a {
padding: 0;
&:hover,
&:focus {
text-decoration: underline;
}
}
}

View File

@@ -26,6 +26,8 @@ export type LocationState = MastodonLocationState | null | undefined;
export type MastodonLocation = ReturnType<typeof useLocation<LocationState>>; export type MastodonLocation = ReturnType<typeof useLocation<LocationState>>;
export type MastodonLocationDescriptor = LocationDescriptor<LocationState>;
type HistoryPath = Path | LocationDescriptor<LocationState>; type HistoryPath = Path | LocationDescriptor<LocationState>;
export const browserHistory = createBrowserHistory<LocationState>(); export const browserHistory = createBrowserHistory<LocationState>();

View File

@@ -241,21 +241,23 @@ export const AccountEdit: FC = () => {
showDescription={!hasFields} showDescription={!hasFields}
buttons={ buttons={
<div className={classes.fieldButtons}> <div className={classes.fieldButtons}>
<Button {profile.fields.length > 1 && (
className={classes.editButton} <Button
onClick={handleCustomFieldReorder} className={classes.editButton}
disabled={profile.fields.length <= 1} onClick={handleCustomFieldReorder}
> >
<FormattedMessage <FormattedMessage
id='account_edit.custom_fields.reorder_button' id='account_edit.custom_fields.reorder_button'
defaultMessage='Reorder fields' defaultMessage='Reorder fields'
/>
</Button>
)}
{profile.fields.length < maxFieldCount && (
<EditButton
label={intl.formatMessage(messages.customFieldsAddLabel)}
onClick={handleCustomFieldAdd}
/> />
</Button> )}
<EditButton
label={intl.formatMessage(messages.customFieldsAddLabel)}
onClick={handleCustomFieldAdd}
disabled={profile.fields.length >= maxFieldCount}
/>
</div> </div>
} }
> >

View File

@@ -1,11 +1,5 @@
import { import { forwardRef, useCallback, useImperativeHandle, useState } from 'react';
forwardRef, import type { FC, FocusEventHandler } from 'react';
useCallback,
useImperativeHandle,
useMemo,
useState,
} from 'react';
import type { FC } from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
@@ -13,7 +7,7 @@ import type { Map as ImmutableMap } from 'immutable';
import { closeModal } from '@/mastodon/actions/modal'; import { closeModal } from '@/mastodon/actions/modal';
import { Button } from '@/mastodon/components/button'; import { Button } from '@/mastodon/components/button';
import { Callout } from '@/mastodon/components/callout'; import type { FieldStatus } from '@/mastodon/components/form_fields';
import { EmojiTextInputField } from '@/mastodon/components/form_fields'; import { EmojiTextInputField } from '@/mastodon/components/form_fields';
import { import {
removeField, removeField,
@@ -71,6 +65,26 @@ const messages = defineMessages({
id: 'account_edit.field_edit_modal.discard_confirm', id: 'account_edit.field_edit_modal.discard_confirm',
defaultMessage: 'Discard', defaultMessage: 'Discard',
}, },
errorBlank: {
id: 'form_error.blank',
defaultMessage: 'Field cannot be blank.',
},
warningLength: {
id: 'account_edit.field_edit_modal.length_warning',
defaultMessage:
'Recommended character limit exceeded. Mobile users might not see your field in full.',
},
warningUrlEmoji: {
id: 'account_edit.field_edit_modal.link_emoji_warning',
defaultMessage:
'We recommend against the use of custom emoji in combination with urls. Custom fields containing both will display as text only instead of as a link, in order to prevent user confusion.',
},
warningUrlProtocol: {
id: 'account_edit.field_edit_modal.url_warning',
defaultMessage:
'To add a link, please include {protocol} at the beginning.',
description: '{protocol} is https://',
},
}); });
// We have two different values- the hard limit set by the server, // We have two different values- the hard limit set by the server,
@@ -124,34 +138,86 @@ export const EditFieldModal = forwardRef<
const { nameLimit, valueLimit } = useAppSelector(selectFieldLimits); const { nameLimit, valueLimit } = useAppSelector(selectFieldLimits);
const isPending = useAppSelector((state) => state.profileEdit.isPending); const isPending = useAppSelector((state) => state.profileEdit.isPending);
const disabled = const [fieldStatuses, setFieldStatuses] = useState<{
!newLabel.trim() || label?: FieldStatus;
!newValue.trim() || value?: FieldStatus;
!isDirty || }>({});
!nameLimit ||
!valueLimit ||
newLabel.length > nameLimit ||
newValue.length > valueLimit;
const customEmojiCodes = useAppSelector(selectEmojiCodes); const customEmojiCodes = useAppSelector(selectEmojiCodes);
const hasLinkAndEmoji = useMemo(() => { const checkField = useCallback(
const text = `${newLabel} ${newValue}`; // Combine text, as we're searching it all. (value: string): FieldStatus | null => {
const hasLink = /https?:\/\//.test(text); if (!value.trim()) {
const hasEmoji = customEmojiCodes.some((code) => return {
text.includes(`:${code}:`), variant: 'error',
); message: intl.formatMessage(messages.errorBlank),
return hasLink && hasEmoji; };
}, [customEmojiCodes, newLabel, newValue]); }
const hasLinkWithoutProtocol = useMemo(
() => isUrlWithoutProtocol(newValue), if (value.length > RECOMMENDED_LIMIT) {
[newValue], return {
variant: 'warning',
message: intl.formatMessage(messages.warningLength, {
max: RECOMMENDED_LIMIT,
}),
};
}
const hasLink = /https?:\/\//.test(value);
const hasEmoji = customEmojiCodes.some((code) =>
value.includes(`:${code}:`),
);
if (hasLink && hasEmoji) {
return {
variant: 'warning',
message: intl.formatMessage(messages.warningUrlEmoji),
};
}
if (isUrlWithoutProtocol(value)) {
return {
variant: 'warning',
message: intl.formatMessage(messages.warningUrlProtocol, {
protocol: 'https://',
}),
};
}
return null;
},
[customEmojiCodes, intl],
);
const handleBlur: FocusEventHandler<HTMLInputElement> = useCallback(
(event) => {
const { name, value } = event.target;
const result = checkField(value);
if (name !== 'label' && name !== 'value') {
return;
}
setFieldStatuses((statuses) => ({
...statuses,
[name]: result ?? undefined,
}));
},
[checkField],
); );
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const handleSave = useCallback(() => { const handleSave = useCallback(() => {
if (disabled || isPending) { if (isPending) {
return; return;
} }
const labelStatus = checkField(newLabel);
const valueStatus = checkField(newValue);
if (labelStatus || valueStatus) {
setFieldStatuses({
label: labelStatus ?? undefined,
value: valueStatus ?? undefined,
});
return;
}
void dispatch( void dispatch(
updateField({ id: fieldKey, name: newLabel, value: newValue }), updateField({ id: fieldKey, name: newLabel, value: newValue }),
).then(() => { ).then(() => {
@@ -163,7 +229,7 @@ export const EditFieldModal = forwardRef<
}), }),
); );
}); });
}, [disabled, dispatch, fieldKey, isPending, newLabel, newValue]); }, [checkField, dispatch, fieldKey, isPending, newLabel, newValue]);
useImperativeHandle( useImperativeHandle(
ref, ref,
@@ -198,60 +264,33 @@ export const EditFieldModal = forwardRef<
confirm={intl.formatMessage(messages.save)} confirm={intl.formatMessage(messages.save)}
onConfirm={handleSave} onConfirm={handleSave}
updating={isPending} updating={isPending}
disabled={disabled}
className={classes.wrapper} className={classes.wrapper}
> >
<EmojiTextInputField <EmojiTextInputField
name='label'
value={newLabel} value={newLabel}
onChange={setNewLabel} onChange={setNewLabel}
onBlur={handleBlur}
label={intl.formatMessage(messages.editLabelField)} label={intl.formatMessage(messages.editLabelField)}
hint={intl.formatMessage(messages.editLabelHint)} hint={intl.formatMessage(messages.editLabelHint)}
status={fieldStatuses.label}
maxLength={nameLimit} maxLength={nameLimit}
counterMax={RECOMMENDED_LIMIT} counterMax={RECOMMENDED_LIMIT}
recommended recommended
/> />
<EmojiTextInputField <EmojiTextInputField
name='value'
value={newValue} value={newValue}
onChange={setNewValue} onChange={setNewValue}
onBlur={handleBlur}
label={intl.formatMessage(messages.editValueField)} label={intl.formatMessage(messages.editValueField)}
hint={intl.formatMessage(messages.editValueHint)} hint={intl.formatMessage(messages.editValueHint)}
status={fieldStatuses.value}
maxLength={valueLimit} maxLength={valueLimit}
counterMax={RECOMMENDED_LIMIT} counterMax={RECOMMENDED_LIMIT}
recommended recommended
/> />
{hasLinkAndEmoji && (
<Callout variant='warning'>
<FormattedMessage
id='account_edit.field_edit_modal.link_emoji_warning'
defaultMessage='We recommend against the use of custom emoji in combination with urls. Custom fields containing both will display as text only instead of as a link, in order to prevent user confusion.'
/>
</Callout>
)}
{(newLabel.length > RECOMMENDED_LIMIT ||
newValue.length > RECOMMENDED_LIMIT) && (
<Callout variant='warning'>
<FormattedMessage
id='account_edit.field_edit_modal.limit_warning'
defaultMessage='Recommended character limit exceeded. Mobile users might not see your field in full.'
/>
</Callout>
)}
{hasLinkWithoutProtocol && (
<Callout variant='warning'>
<FormattedMessage
id='account_edit.field_edit_modal.url_warning'
defaultMessage='To add a link, please include {protocol} at the beginning.'
description='{protocol} is https://'
values={{
protocol: <code>https://</code>,
}}
/>
</Callout>
)}
</ConfirmationModal> </ConfirmationModal>
); );
}); });

View File

@@ -13,7 +13,6 @@
> img { > img {
object-fit: cover; object-fit: cover;
object-position: top center;
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
@@ -26,7 +25,7 @@
.avatar { .avatar {
margin-top: -64px; margin-top: -64px;
margin-left: 18px; margin-left: 22px;
position: relative; position: relative;
width: 82px; width: 82px;
@@ -251,7 +250,7 @@
// Section component // Section component
.section { .section {
padding: 20px; padding: 24px;
border-bottom: 1px solid var(--color-border-primary); border-bottom: 1px solid var(--color-border-primary);
font-size: 15px; font-size: 15px;
} }

View File

@@ -37,15 +37,25 @@ const selectGalleryTimeline = createAppSelector(
(state) => state.statuses, (state) => state.statuses,
], ],
(accountId, timelines, accounts, statuses) => { (accountId, timelines, accounts, statuses) => {
let items = emptyList;
if (!accountId) { if (!accountId) {
return null; return {
items,
hasMore: false,
isLoading: false,
withReplies: false,
};
} }
const account = accounts.get(accountId); const account = accounts.get(accountId);
if (!account) { if (!account) {
return null; return {
items,
hasMore: false,
isLoading: false,
withReplies: false,
};
} }
let items = emptyList;
const { show_media, show_media_replies } = account; const { show_media, show_media_replies } = account;
// If the account disabled showing media, don't display anything. // If the account disabled showing media, don't display anything.
if (!show_media && redesignEnabled) { if (!show_media && redesignEnabled) {
@@ -53,13 +63,13 @@ const selectGalleryTimeline = createAppSelector(
items, items,
hasMore: false, hasMore: false,
isLoading: false, isLoading: false,
showingReplies: false, withReplies: false,
}; };
} }
const showingReplies = show_media_replies && redesignEnabled; const withReplies = show_media_replies && redesignEnabled;
const timeline = timelines.get( const timeline = timelines.get(
`account:${accountId}:media${showingReplies ? ':with_replies' : ''}`, `account:${accountId}:media${withReplies ? ':with_replies' : ''}`,
); );
const statusIds = timeline?.get('items'); const statusIds = timeline?.get('items');
@@ -77,8 +87,8 @@ const selectGalleryTimeline = createAppSelector(
return { return {
items, items,
hasMore: !!timeline?.get('hasMore'), hasMore: !!timeline?.get('hasMore'),
isLoading: !!timeline?.get('isLoading'), isLoading: timeline?.get('isLoading') ? true : false,
showingReplies, withReplies,
}; };
}, },
); );
@@ -89,11 +99,11 @@ export const AccountGallery: React.FC<{
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const accountId = useAccountId(); const accountId = useAccountId();
const { const {
isLoading = true, isLoading,
hasMore = false, items: attachments,
items: attachments = emptyList, hasMore,
showingReplies: withReplies = false, withReplies,
} = useAppSelector((state) => selectGalleryTimeline(state, accountId)) ?? {}; } = useAppSelector((state) => selectGalleryTimeline(state, accountId));
const { suspended, blockedBy, hidden } = useAccountVisibility(accountId); const { suspended, blockedBy, hidden } = useAccountVisibility(accountId);
@@ -215,7 +225,7 @@ export const AccountGallery: React.FC<{
alwaysPrepend alwaysPrepend
append={accountId && <RemoteHint accountId={accountId} />} append={accountId && <RemoteHint accountId={accountId} />}
scrollKey='account_gallery' scrollKey='account_gallery'
isLoading={isLoading} showLoading={isLoading}
hasMore={!forceEmptyState && hasMore} hasMore={!forceEmptyState && hasMore}
onLoadMore={handleLoadMore} onLoadMore={handleLoadMore}
emptyMessage={emptyMessage} emptyMessage={emptyMessage}

View File

@@ -69,7 +69,9 @@ export const FamiliarFollowers: React.FC<{ accountId: string }> = ({
<Avatar withLink key={account.id} account={account} size={28} /> <Avatar withLink key={account.id} account={account} size={28} />
))} ))}
</AvatarGroup> </AvatarGroup>
<FamiliarFollowersReadout familiarFollowers={familiarFollowers} /> <span>
<FamiliarFollowersReadout familiarFollowers={familiarFollowers} />
</span>
</div> </div>
); );
}; };

View File

@@ -3,7 +3,6 @@ import type { FC } from 'react';
import { FormattedMessage, useIntl } from 'react-intl'; import { FormattedMessage, useIntl } from 'react-intl';
import classNames from 'classnames';
import { NavLink } from 'react-router-dom'; import { NavLink } from 'react-router-dom';
import { import {
@@ -12,13 +11,15 @@ import {
StatusesCounter, StatusesCounter,
} from '@/mastodon/components/counters'; } from '@/mastodon/components/counters';
import { FormattedDateWrapper } from '@/mastodon/components/formatted_date'; import { FormattedDateWrapper } from '@/mastodon/components/formatted_date';
import {
NumberFields,
NumberFieldsItem,
} from '@/mastodon/components/number_fields';
import { ShortNumber } from '@/mastodon/components/short_number'; import { ShortNumber } from '@/mastodon/components/short_number';
import { useAccount } from '@/mastodon/hooks/useAccount'; import { useAccount } from '@/mastodon/hooks/useAccount';
import { isRedesignEnabled } from '../common'; import { isRedesignEnabled } from '../common';
import classes from './redesign.module.scss';
const LegacyNumberFields: FC<{ accountId: string }> = ({ accountId }) => { const LegacyNumberFields: FC<{ accountId: string }> = ({ accountId }) => {
const intl = useIntl(); const intl = useIntl();
const account = useAccount(accountId); const account = useAccount(accountId);
@@ -77,56 +78,51 @@ const RedesignNumberFields: FC<{ accountId: string }> = ({ accountId }) => {
} }
return ( return (
<ul <NumberFields>
className={classNames( <NumberFieldsItem
'account__header__extra__links', label={<FormattedMessage id='account.posts' defaultMessage='Posts' />}
classes.fieldNumbersWrapper, hint={intl.formatNumber(account.statuses_count)}
)} >
> <ShortNumber value={account.statuses_count} />
<li> </NumberFieldsItem>
<FormattedMessage id='account.posts' defaultMessage='Posts' />
<strong>
<ShortNumber value={account.statuses_count} />
</strong>
</li>
<li> <NumberFieldsItem
<FormattedMessage id='account.followers' defaultMessage='Followers' /> label={
<NavLink <FormattedMessage id='account.followers' defaultMessage='Followers' />
exact }
to={`/@${account.acct}/followers`} hint={intl.formatNumber(account.followers_count)}
title={intl.formatNumber(account.followers_count)} link={`/@${account.acct}/followers`}
> >
<ShortNumber value={account.followers_count} /> <ShortNumber value={account.followers_count} />
</NavLink> </NumberFieldsItem>
</li>
<li> <NumberFieldsItem
<FormattedMessage id='account.following' defaultMessage='Following' /> label={
<NavLink <FormattedMessage id='account.following' defaultMessage='Following' />
exact }
to={`/@${account.acct}/following`} hint={intl.formatNumber(account.following_count)}
title={intl.formatNumber(account.following_count)} link={`/@${account.acct}/following`}
> >
<ShortNumber value={account.following_count} /> <ShortNumber value={account.following_count} />
</NavLink> </NumberFieldsItem>
</li>
<li> <NumberFieldsItem
<FormattedMessage id='account.joined_short' defaultMessage='Joined' /> label={
<strong> <FormattedMessage id='account.joined_short' defaultMessage='Joined' />
{createdThisYear ? ( }
<FormattedDateWrapper hint={intl.formatDate(account.created_at)}
value={account.created_at} >
month='short' {createdThisYear ? (
day='2-digit' <FormattedDateWrapper
/> value={account.created_at}
) : ( month='short'
<FormattedDateWrapper value={account.created_at} year='numeric' /> day='2-digit'
)} />
</strong> ) : (
</li> <FormattedDateWrapper value={account.created_at} year='numeric' />
</ul> )}
</NumberFieldsItem>
</NumberFields>
); );
}; };

View File

@@ -312,37 +312,6 @@ svg.badgeIcon {
} }
} }
.fieldNumbersWrapper {
display: flex;
font-size: 13px;
padding: 0;
margin: 8px 0;
gap: 20px;
li {
@container (width < 420px) {
flex: 1 1 0px;
}
}
a,
strong {
display: block;
font-weight: 600;
color: var(--color-text-primary);
font-size: 15px;
}
a {
padding: 0;
&:hover,
&:focus {
text-decoration: underline;
}
}
}
.modalCloseButton { .modalCloseButton {
padding: 8px; padding: 8px;
border-radius: 50%; border-radius: 50%;

View File

@@ -38,6 +38,7 @@ export function usePinnedStatusIds({
userId: accountId, userId: accountId,
tagged, tagged,
pinned: true, pinned: true,
replies: true,
}); });
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();

View File

@@ -2,6 +2,8 @@ import { useCallback, useRef, useState } from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { Callout } from '@/mastodon/components/callout';
import { FollowButton } from '@/mastodon/components/follow_button';
import { openModal } from 'mastodon/actions/modal'; import { openModal } from 'mastodon/actions/modal';
import type { import type {
ApiCollectionJSON, ApiCollectionJSON,
@@ -27,10 +29,6 @@ const messages = defineMessages({
id: 'collections.accounts.empty_title', id: 'collections.accounts.empty_title',
defaultMessage: 'This collection is empty', defaultMessage: 'This collection is empty',
}, },
accounts: {
id: 'collections.detail.accounts_heading',
defaultMessage: 'Accounts',
},
}); });
const SimpleAuthorName: React.FC<{ id: string }> = ({ id }) => { const SimpleAuthorName: React.FC<{ id: string }> = ({ id }) => {
@@ -41,8 +39,9 @@ const SimpleAuthorName: React.FC<{ id: string }> = ({ id }) => {
const AccountItem: React.FC<{ const AccountItem: React.FC<{
accountId: string | undefined; accountId: string | undefined;
collectionOwnerId: string; collectionOwnerId: string;
withBio?: boolean;
withBorder?: boolean; withBorder?: boolean;
}> = ({ accountId, withBorder = true, collectionOwnerId }) => { }> = ({ accountId, withBio = true, withBorder = true, collectionOwnerId }) => {
const relationship = useRelationship(accountId); const relationship = useRelationship(accountId);
if (!accountId) { if (!accountId) {
@@ -59,12 +58,17 @@ const AccountItem: React.FC<{
(relationship.following || relationship.requested)); (relationship.following || relationship.requested));
return ( return (
<Account <div className={classes.accountItemWrapper} data-with-border={withBorder}>
minimal={withoutButton} <Account
withMenu={false} minimal
withBorder={withBorder} id={accountId}
id={accountId} withBio={withBio}
/> withBorder={false}
withMenu={false}
className={classes.accountItem}
/>
{!withoutButton && <FollowButton accountId={accountId} />}
</div>
); );
}; };
@@ -131,19 +135,27 @@ const SensitiveScreen: React.FC<{
} }
return ( return (
<div className={classes.sensitiveWarning}> <Callout
variant='warning'
title={
<FormattedMessage
id='collections.detail.sensitive_content'
defaultMessage='Sensitive content'
/>
}
primaryLabel={
<FormattedMessage
id='content_warning.show_short'
defaultMessage='Show'
/>
}
onPrimary={showAnyway}
>
<FormattedMessage <FormattedMessage
id='collections.detail.sensitive_note' id='collections.detail.sensitive_note'
defaultMessage='This collection contains accounts and content that may be sensitive to some users.' defaultMessage='The description and accounts may not be suitable for all viewers.'
tagName='p'
/> />
<Button onClick={showAnyway}> </Callout>
<FormattedMessage
id='content_warning.show'
defaultMessage='Show anyway'
/>
</Button>
</div>
); );
}; };
@@ -192,13 +204,14 @@ export const CollectionAccountsList: React.FC<{
<ItemList <ItemList
isLoading={isLoading} isLoading={isLoading}
emptyMessage={intl.formatMessage(messages.empty)} emptyMessage={intl.formatMessage(messages.empty)}
className={classes.itemList}
> >
{collection && currentUserInCollection ? ( {collection && currentUserInCollection ? (
<> <>
<h3 className={classes.columnSubheading}> <h3 className={classes.columnSubheading}>
<FormattedMessage <FormattedMessage
id='collections.detail.author_added_you' id='collections.detail.you_were_added_to_this_collection'
defaultMessage='{author} added you to this collection' defaultMessage='You were added to this collection'
values={{ values={{
author: <SimpleAuthorName id={collection.account_id} />, author: <SimpleAuthorName id={collection.account_id} />,
}} }}
@@ -208,9 +221,11 @@ export const CollectionAccountsList: React.FC<{
key={currentUserInCollection.account_id} key={currentUserInCollection.account_id}
aria-posinset={1} aria-posinset={1}
aria-setsize={items.length} aria-setsize={items.length}
className={classes.youWereAddedWrapper}
> >
<AccountItem <AccountItem
withBorder={false} withBorder={false}
withBio={false}
accountId={currentUserInCollection.account_id} accountId={currentUserInCollection.account_id}
collectionOwnerId={collection.account_id} collectionOwnerId={collection.account_id}
/> />
@@ -225,18 +240,30 @@ export const CollectionAccountsList: React.FC<{
ref={listHeadingRef} ref={listHeadingRef}
> >
<FormattedMessage <FormattedMessage
id='collections.detail.other_accounts_in_collection' id='collections.detail.other_accounts_count'
defaultMessage='Others in this collection:' defaultMessage='{count, plural, one {# other account} other {# other accounts}}'
values={{ count: collection.item_count - 1 }}
/> />
</h3> </h3>
</> </>
) : ( ) : (
<h3 <h3
className='column-subheading sr-only' className={classes.columnSubheading}
tabIndex={-1} tabIndex={-1}
ref={listHeadingRef} ref={listHeadingRef}
> >
{intl.formatMessage(messages.accounts)} {collection ? (
<FormattedMessage
id='collections.account_count'
defaultMessage='{count, plural, one {# account} other {# accounts}}'
values={{ count: collection.item_count }}
/>
) : (
<FormattedMessage
id='collections.detail.accounts_heading'
defaultMessage='Accounts'
/>
)}
</h3> </h3>
)} )}
{collection && ( {collection && (

View File

@@ -43,7 +43,7 @@
width: 18px; width: 18px;
height: 18px; height: 18px;
border-radius: 8px; border-radius: 8px;
color: var(--color-text-primary); fill: var(--color-text-primary);
background: var(--color-bg-warning-softest); background: var(--color-bg-warning-softest);
} }

View File

@@ -4,24 +4,19 @@ import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { Helmet } from 'react-helmet'; import { Helmet } from 'react-helmet';
import { useHistory, useLocation, useParams } from 'react-router'; import { useHistory, useLocation, useParams } from 'react-router';
import { Link } from 'react-router-dom';
import { openModal } from '@/mastodon/actions/modal'; import { openModal } from '@/mastodon/actions/modal';
import { RelativeTimestamp } from '@/mastodon/components/relative_timestamp'; import { useAccountHandle } from '@/mastodon/components/display_name/default';
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
import ShareIcon from '@/material-icons/400-24px/share.svg?react'; import ShareIcon from '@/material-icons/400-24px/share.svg?react';
import type { ApiCollectionJSON } from 'mastodon/api_types/collections'; import type { ApiCollectionJSON } from 'mastodon/api_types/collections';
import { Avatar } from 'mastodon/components/avatar';
import { Column } from 'mastodon/components/column'; import { Column } from 'mastodon/components/column';
import { ColumnHeader } from 'mastodon/components/column_header'; import { ColumnHeader } from 'mastodon/components/column_header';
import {
DisplayName,
LinkedDisplayName,
} from 'mastodon/components/display_name';
import { IconButton } from 'mastodon/components/icon_button'; import { IconButton } from 'mastodon/components/icon_button';
import { Scrollable } from 'mastodon/components/scrollable_list/components'; import { Scrollable } from 'mastodon/components/scrollable_list/components';
import { Tag } from 'mastodon/components/tags/tag';
import { useAccount } from 'mastodon/hooks/useAccount'; import { useAccount } from 'mastodon/hooks/useAccount';
import { me } from 'mastodon/initial_state'; import { domain } from 'mastodon/initial_state';
import { fetchCollection } from 'mastodon/reducers/slices/collections'; import { fetchCollection } from 'mastodon/reducers/slices/collections';
import { useAppDispatch, useAppSelector } from 'mastodon/store'; import { useAppDispatch, useAppSelector } from 'mastodon/store';
@@ -40,88 +35,29 @@ const messages = defineMessages({
}, },
}); });
const CollectionMetaData: React.FC<{ export const AuthorNote: React.FC<{ id: string }> = ({ id }) => {
collection: ApiCollectionJSON;
extended?: boolean;
}> = ({ collection, extended }) => {
return (
<ul className={classes.metaList}>
<FormattedMessage
id='collections.account_count'
defaultMessage='{count, plural, one {# account} other {# accounts}}'
values={{ count: collection.item_count }}
tagName='li'
/>
{extended && (
<>
{collection.discoverable ? (
<FormattedMessage
id='collections.visibility_public'
defaultMessage='Public'
tagName='li'
/>
) : (
<FormattedMessage
id='collections.visibility_unlisted'
defaultMessage='Unlisted'
tagName='li'
/>
)}
{collection.sensitive && (
<FormattedMessage
id='collections.sensitive'
defaultMessage='Sensitive'
tagName='li'
/>
)}
</>
)}
<FormattedMessage
id='collections.last_updated_at'
defaultMessage='Last updated: {date}'
values={{
date: <RelativeTimestamp timestamp={collection.updated_at} long />,
}}
tagName='li'
/>
</ul>
);
};
export const AuthorNote: React.FC<{ id: string; previewMode?: boolean }> = ({
id,
// When previewMode is enabled, your own display name
// will not be replaced with "you"
previewMode = false,
}) => {
const account = useAccount(id); const account = useAccount(id);
const authorHandle = useAccountHandle(account, domain);
if (!account) {
return null;
}
const author = ( const author = (
<span className={classes.displayNameWithAvatar}> <Link to={`/@${account.acct}`} data-hover-card-account={account.id}>
<Avatar size={18} account={account} /> {authorHandle}
{previewMode ? ( </Link>
<DisplayName account={account} variant='simple' />
) : (
<LinkedDisplayName displayProps={{ account, variant: 'simple' }} />
)}
</span>
); );
const displayAsYou = id === me && !previewMode;
return ( return (
<p className={previewMode ? classes.previewAuthorNote : classes.authorNote}> <p className={classes.authorNote}>
{displayAsYou ? ( <FormattedMessage
<FormattedMessage id='collections.by_account'
id='collections.detail.curated_by_you' defaultMessage='by {account_handle}'
defaultMessage='Curated by you' values={{
/> account_handle: author,
) : ( }}
<FormattedMessage />
id='collections.detail.curated_by_author'
defaultMessage='Curated by {author}'
values={{ author }}
/>
)}
</p> </p>
); );
}; };
@@ -156,14 +92,12 @@ const CollectionHeader: React.FC<{ collection: ApiCollectionJSON }> = ({
}, [history, handleShare, isNewCollection, location.pathname]); }, [history, handleShare, isNewCollection, location.pathname]);
return ( return (
<div className={classes.header}> <header className={classes.header}>
<div className={classes.titleWithMenu}> <div className={classes.titleWithMenu}>
<div className={classes.titleWrapper}> <div className={classes.titleWrapper}>
{tag && ( {tag && <span className={classes.tag}>#{tag.name}</span>}
// TODO: Make non-interactive tag component
<Tag name={tag.name} className={classes.tag} />
)}
<h2 className={classes.name}>{name}</h2> <h2 className={classes.name}>{name}</h2>
<AuthorNote id={account_id} />
</div> </div>
<div className={classes.headerButtonWrapper}> <div className={classes.headerButtonWrapper}>
<IconButton <IconButton
@@ -181,12 +115,7 @@ const CollectionHeader: React.FC<{ collection: ApiCollectionJSON }> = ({
</div> </div>
</div> </div>
{description && <p className={classes.description}>{description}</p>} {description && <p className={classes.description}>{description}</p>}
<AuthorNote id={collection.account_id} /> </header>
<CollectionMetaData
extended={account_id === me}
collection={collection}
/>
</div>
); );
}; };

View File

@@ -97,7 +97,7 @@ export const CollectionShareModal: React.FC<{
<div className={classes.preview}> <div className={classes.preview}>
<div> <div>
<h2 className={classes.previewHeading}>{collection.name}</h2> <h2 className={classes.previewHeading}>{collection.name}</h2>
<AuthorNote previewMode id={collection.account_id} /> <AuthorNote id={collection.account_id} />
</div> </div>
<AvatarGroup> <AvatarGroup>
{collection.items.slice(0, 5).map(({ account_id }) => { {collection.items.slice(0, 5).map(({ account_id }) => {

View File

@@ -1,6 +1,5 @@
.header { .header {
padding: 16px; padding: 24px;
border-bottom: 1px solid var(--color-border-primary);
} }
.titleWithMenu { .titleWithMenu {
@@ -11,23 +10,46 @@
.titleWrapper { .titleWrapper {
flex-grow: 1; flex-grow: 1;
display: flex;
flex-direction: column;
align-items: start;
gap: 4px;
min-width: 0; min-width: 0;
} }
.tag { .tag {
margin-bottom: 4px; display: inline-block;
margin-inline-start: -8px; padding: 4px;
font-size: 13px;
font-weight: 500;
color: var(--color-text-secondary);
background: var(--color-bg-secondary);
} }
.name { .name {
font-size: 28px; font-size: 22px;
font-weight: 500;
line-height: 1.2; line-height: 1.2;
overflow-wrap: anywhere; overflow-wrap: anywhere;
} }
.authorNote {
font-size: 13px;
color: var(--color-text-secondary);
a {
color: inherit;
text-decoration-color: rgb(from var(--color-text-secondary) r g b / 50%);
&:hover {
text-decoration: none;
}
}
}
.description { .description {
font-size: 15px; font-size: 15px;
margin-top: 8px; margin-top: 12px;
} }
.headerButtonWrapper { .headerButtonWrapper {
@@ -39,79 +61,41 @@
box-sizing: content-box; box-sizing: content-box;
padding: 5px; padding: 5px;
border-radius: 4px; border-radius: 4px;
border: 1px solid var(--color-border-primary);
} }
.authorNote { .itemList {
margin-top: 8px; padding-inline: 24px;
font-size: 13px;
color: var(--color-text-secondary);
}
.previewAuthorNote {
font-size: 13px;
}
.metaList {
--gap: 0.75ch;
display: flex;
flex-wrap: wrap;
margin-top: 16px;
gap: var(--gap);
font-size: 15px;
& > li:not(:last-child)::after {
content: '·';
margin-inline-start: var(--gap);
}
} }
.columnSubheading { .columnSubheading {
background: var(--color-bg-secondary); padding-bottom: 12px;
padding: 15px 20px;
font-size: 15px; font-size: 15px;
font-weight: 500; font-weight: 500;
&:focus-visible {
outline: var(--outline-focus-default);
outline-offset: -2px;
}
} }
.displayNameWithAvatar { .accountItemWrapper {
display: inline-flex;
gap: 4px;
align-items: baseline;
a {
color: inherit;
text-decoration: underline;
&:hover,
&:focus {
text-decoration: none;
}
}
> :global(.account__avatar) {
align-self: center;
}
}
.sensitiveWarning {
display: flex; display: flex;
flex-direction: column; align-items: start;
align-items: center; padding-block: 16px;
max-width: 460px;
margin: auto; &[data-with-border='true'] {
padding: 60px 30px; border-bottom: 1px solid var(--color-border-primary);
gap: 20px; }
text-align: center; }
text-wrap: balance;
font-size: 15px; .accountItem {
line-height: 1.5; --account-name-size: 15px;
cursor: default; --account-handle-color: var(--color-text-secondary);
--account-handle-size: 13px;
--account-bio-color: var(--color-text-primary);
--account-bio-size: 13px;
--account-outer-spacing: 0;
flex-grow: 1;
}
.youWereAddedWrapper {
padding-bottom: 16px;
} }
.revokeControlWrapper { .revokeControlWrapper {
@@ -119,9 +103,7 @@
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
margin-top: -10px; margin-bottom: 8px;
padding-bottom: 16px;
padding-inline: calc(26px + var(--avatar-width)) 16px;
:global(.button) { :global(.button) {
min-width: 30%; min-width: 30%;

View File

@@ -69,6 +69,7 @@ class Bundle extends PureComponent {
this.setState({ mod: mod.default }); this.setState({ mod: mod.default });
}) })
.catch((error) => { .catch((error) => {
console.error('Bundle fetching error:', error);
this.setState({ mod: null }); this.setState({ mod: null });
}); });
}; };

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural,one {# уліковы запіс} few {# уліковыя запісы} other {# уліковых запісаў}}", "collections.account_count": "{count, plural,one {# уліковы запіс} few {# уліковыя запісы} other {# уліковых запісаў}}",
"collections.accounts.empty_description": "Дадайце да {count} уліковых запісаў, на якія Вы падпісаныя", "collections.accounts.empty_description": "Дадайце да {count} уліковых запісаў, на якія Вы падпісаныя",
"collections.accounts.empty_title": "Гэтая калекцыя пустая", "collections.accounts.empty_title": "Гэтая калекцыя пустая",
"collections.by_account": "ад {account_handle}",
"collections.collection_description": "Апісанне", "collections.collection_description": "Апісанне",
"collections.collection_language": "Мова", "collections.collection_language": "Мова",
"collections.collection_language_none": "Няма", "collections.collection_language_none": "Няма",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# konto} other {# konti}}", "collections.account_count": "{count, plural, one {# konto} other {# konti}}",
"collections.accounts.empty_description": "Tilføj op til {count} konti, du følger", "collections.accounts.empty_description": "Tilføj op til {count} konti, du følger",
"collections.accounts.empty_title": "Denne samling er tom", "collections.accounts.empty_title": "Denne samling er tom",
"collections.by_account": "af {account_handle}",
"collections.collection_description": "Beskrivelse", "collections.collection_description": "Beskrivelse",
"collections.collection_language": "Sprog", "collections.collection_language": "Sprog",
"collections.collection_language_none": "Intet", "collections.collection_language_none": "Intet",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# Konto} other {# Konten}}", "collections.account_count": "{count, plural, one {# Konto} other {# Konten}}",
"collections.accounts.empty_description": "Füge bis zu {count} Konten, denen du folgst, hinzu", "collections.accounts.empty_description": "Füge bis zu {count} Konten, denen du folgst, hinzu",
"collections.accounts.empty_title": "Diese Sammlung ist leer", "collections.accounts.empty_title": "Diese Sammlung ist leer",
"collections.by_account": "von {account_handle}",
"collections.collection_description": "Beschreibung", "collections.collection_description": "Beschreibung",
"collections.collection_language": "Sprache", "collections.collection_language": "Sprache",
"collections.collection_language_none": "Nicht festgelegt", "collections.collection_language_none": "Nicht festgelegt",
@@ -687,7 +688,7 @@
"followers.hide_other_followers": "Dieses Profil möchte die weiteren Follower geheim halten", "followers.hide_other_followers": "Dieses Profil möchte die weiteren Follower geheim halten",
"followers.title": "Folgt {name}", "followers.title": "Folgt {name}",
"following.hide_other_following": "Dieses Profil möchte die gefolgten Profile geheim halten", "following.hide_other_following": "Dieses Profil möchte die gefolgten Profile geheim halten",
"following.title": "Gefolgt von {name}", "following.title": "Von {name} gefolgt",
"footer.about": "Über", "footer.about": "Über",
"footer.about_mastodon": "Über Mastodon", "footer.about_mastodon": "Über Mastodon",
"footer.about_server": "Über {domain}", "footer.about_server": "Über {domain}",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# λογαριασμός} other {# λογαριασμοί}}", "collections.account_count": "{count, plural, one {# λογαριασμός} other {# λογαριασμοί}}",
"collections.accounts.empty_description": "Προσθέστε μέχρι και {count} λογαριασμούς που ακολουθείτε", "collections.accounts.empty_description": "Προσθέστε μέχρι και {count} λογαριασμούς που ακολουθείτε",
"collections.accounts.empty_title": "Αυτή η συλλογή είναι κενή", "collections.accounts.empty_title": "Αυτή η συλλογή είναι κενή",
"collections.by_account": "από {account_handle}",
"collections.collection_description": "Περιγραφή", "collections.collection_description": "Περιγραφή",
"collections.collection_language": "Γλώσσα", "collections.collection_language": "Γλώσσα",
"collections.collection_language_none": "Καμία", "collections.collection_language_none": "Καμία",

View File

@@ -173,7 +173,7 @@
"account_edit.field_edit_modal.discard_confirm": "Discard", "account_edit.field_edit_modal.discard_confirm": "Discard",
"account_edit.field_edit_modal.discard_message": "You have unsaved changes. Are you sure you want to discard them?", "account_edit.field_edit_modal.discard_message": "You have unsaved changes. Are you sure you want to discard them?",
"account_edit.field_edit_modal.edit_title": "Edit custom field", "account_edit.field_edit_modal.edit_title": "Edit custom field",
"account_edit.field_edit_modal.limit_warning": "Recommended character limit exceeded. Mobile users might not see your field in full.", "account_edit.field_edit_modal.length_warning": "Recommended character limit exceeded. Mobile users might not see your field in full.",
"account_edit.field_edit_modal.link_emoji_warning": "We recommend against the use of custom emoji in combination with urls. Custom fields containing both will display as text only instead of as a link, in order to prevent user confusion.", "account_edit.field_edit_modal.link_emoji_warning": "We recommend against the use of custom emoji in combination with urls. Custom fields containing both will display as text only instead of as a link, in order to prevent user confusion.",
"account_edit.field_edit_modal.name_hint": "E.g. “Personal website”", "account_edit.field_edit_modal.name_hint": "E.g. “Personal website”",
"account_edit.field_edit_modal.name_label": "Label", "account_edit.field_edit_modal.name_label": "Label",
@@ -378,14 +378,13 @@
"collections.description_length_hint": "100 characters limit", "collections.description_length_hint": "100 characters limit",
"collections.detail.accept_inclusion": "Okay", "collections.detail.accept_inclusion": "Okay",
"collections.detail.accounts_heading": "Accounts", "collections.detail.accounts_heading": "Accounts",
"collections.detail.author_added_you": "{author} added you to this collection",
"collections.detail.curated_by_author": "Curated by {author}",
"collections.detail.curated_by_you": "Curated by you",
"collections.detail.loading": "Loading collection…", "collections.detail.loading": "Loading collection…",
"collections.detail.other_accounts_in_collection": "Others in this collection:", "collections.detail.other_accounts_count": "{count, plural, one {# other account} other {# other accounts}}",
"collections.detail.revoke_inclusion": "Remove me", "collections.detail.revoke_inclusion": "Remove me",
"collections.detail.sensitive_content": "Sensitive content",
"collections.detail.sensitive_note": "This collection contains accounts and content that may be sensitive to some users.", "collections.detail.sensitive_note": "This collection contains accounts and content that may be sensitive to some users.",
"collections.detail.share": "Share this collection", "collections.detail.share": "Share this collection",
"collections.detail.you_were_added_to_this_collection": "You were added to this collection",
"collections.edit_details": "Edit details", "collections.edit_details": "Edit details",
"collections.error_loading_collections": "There was an error when trying to load your collections.", "collections.error_loading_collections": "There was an error when trying to load your collections.",
"collections.hints.accounts_counter": "{count} / {max} accounts", "collections.hints.accounts_counter": "{count} / {max} accounts",
@@ -541,6 +540,7 @@
"content_warning.hide": "Hide post", "content_warning.hide": "Hide post",
"content_warning.show": "Show anyway", "content_warning.show": "Show anyway",
"content_warning.show_more": "Show more", "content_warning.show_more": "Show more",
"content_warning.show_short": "Show",
"conversation.delete": "Delete conversation", "conversation.delete": "Delete conversation",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation", "conversation.open": "View conversation",
@@ -700,6 +700,7 @@
"footer.source_code": "View source code", "footer.source_code": "View source code",
"footer.status": "Status", "footer.status": "Status",
"footer.terms_of_service": "Terms of service", "footer.terms_of_service": "Terms of service",
"form_error.blank": "Field cannot be blank.",
"form_field.optional": "(optional)", "form_field.optional": "(optional)",
"generic.saved": "Saved", "generic.saved": "Saved",
"getting_started.heading": "Getting started", "getting_started.heading": "Getting started",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# hora} other {# horas}}", "collections.account_count": "{count, plural, one {# hora} other {# horas}}",
"collections.accounts.empty_description": "Agregá hasta {count} cuentas que seguís", "collections.accounts.empty_description": "Agregá hasta {count} cuentas que seguís",
"collections.accounts.empty_title": "Esta colección está vacía", "collections.accounts.empty_title": "Esta colección está vacía",
"collections.by_account": "por {account_handle}",
"collections.collection_description": "Descripción", "collections.collection_description": "Descripción",
"collections.collection_language": "Idioma", "collections.collection_language": "Idioma",
"collections.collection_language_none": "Ninguno", "collections.collection_language_none": "Ninguno",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural,one {# cuenta} other {# cuentas}}", "collections.account_count": "{count, plural,one {# cuenta} other {# cuentas}}",
"collections.accounts.empty_description": "Añade hasta {count} cuentas que sigues", "collections.accounts.empty_description": "Añade hasta {count} cuentas que sigues",
"collections.accounts.empty_title": "Esta colección está vacía", "collections.accounts.empty_title": "Esta colección está vacía",
"collections.by_account": "de {account_handle}",
"collections.collection_description": "Descripción", "collections.collection_description": "Descripción",
"collections.collection_language": "Idioma", "collections.collection_language": "Idioma",
"collections.collection_language_none": "Ninguno", "collections.collection_language_none": "Ninguno",

View File

@@ -171,7 +171,7 @@
"account_edit.field_delete_modal.title": "¿Borrar campo personalizado?", "account_edit.field_delete_modal.title": "¿Borrar campo personalizado?",
"account_edit.field_edit_modal.add_title": "Añadir campo personalizado", "account_edit.field_edit_modal.add_title": "Añadir campo personalizado",
"account_edit.field_edit_modal.discard_confirm": "Descartar", "account_edit.field_edit_modal.discard_confirm": "Descartar",
"account_edit.field_edit_modal.discard_message": "Tiene cambios no guardados. ¿Seguro que quieres descartarlos?", "account_edit.field_edit_modal.discard_message": "Tienes cambios no guardados. ¿Seguro que quieres descartarlos?",
"account_edit.field_edit_modal.edit_title": "Editar campo personalizado", "account_edit.field_edit_modal.edit_title": "Editar campo personalizado",
"account_edit.field_edit_modal.limit_warning": "Se ha superado el límite recomendado de caracteres. Es posible que los usuarios móviles no vean el campo completo.", "account_edit.field_edit_modal.limit_warning": "Se ha superado el límite recomendado de caracteres. Es posible que los usuarios móviles no vean el campo completo.",
"account_edit.field_edit_modal.link_emoji_warning": "Recomendamos no usar emojis personalizados combinados con enlaces. Los campos personalizados que contengan ambos solo se mostrarán como texto en vez de un enlace, para evitar confusiones.", "account_edit.field_edit_modal.link_emoji_warning": "Recomendamos no usar emojis personalizados combinados con enlaces. Los campos personalizados que contengan ambos solo se mostrarán como texto en vez de un enlace, para evitar confusiones.",
@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# cuenta} other {# cuentas}}", "collections.account_count": "{count, plural, one {# cuenta} other {# cuentas}}",
"collections.accounts.empty_description": "Añade hasta {count} cuentas que sigas", "collections.accounts.empty_description": "Añade hasta {count} cuentas que sigas",
"collections.accounts.empty_title": "Esta colección está vacía", "collections.accounts.empty_title": "Esta colección está vacía",
"collections.by_account": "de {account_handle}",
"collections.collection_description": "Descripción", "collections.collection_description": "Descripción",
"collections.collection_language": "Idioma", "collections.collection_language": "Idioma",
"collections.collection_language_none": "Ninguno", "collections.collection_language_none": "Ninguno",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# conta} other {# contas}}", "collections.account_count": "{count, plural, one {# conta} other {# contas}}",
"collections.accounts.empty_description": "Engade ata {count} contas que segues", "collections.accounts.empty_description": "Engade ata {count} contas que segues",
"collections.accounts.empty_title": "A colección está baleira", "collections.accounts.empty_title": "A colección está baleira",
"collections.by_account": "de {account_handle}",
"collections.collection_description": "Descrición", "collections.collection_description": "Descrición",
"collections.collection_language": "Idioma", "collections.collection_language": "Idioma",
"collections.collection_language_none": "Ningún", "collections.collection_language_none": "Ningún",

View File

@@ -141,6 +141,7 @@
"account.unmute": "הפסקת השתקת @{name}", "account.unmute": "הפסקת השתקת @{name}",
"account.unmute_notifications_short": "הפעלת הודעות", "account.unmute_notifications_short": "הפעלת הודעות",
"account.unmute_short": "ביטול השתקה", "account.unmute_short": "ביטול השתקה",
"account_edit.bio.add_label": "הוסיפו ביוגרפיה",
"account_edit.bio.edit_label": "עריכת ביוגרפיה", "account_edit.bio.edit_label": "עריכת ביוגרפיה",
"account_edit.bio.placeholder": "הוסיפו הצגה קצרה כדי לעזור לאחרים לזהות אותך.", "account_edit.bio.placeholder": "הוסיפו הצגה קצרה כדי לעזור לאחרים לזהות אותך.",
"account_edit.bio.title": "ביוגרפיה", "account_edit.bio.title": "ביוגרפיה",

View File

@@ -141,6 +141,7 @@
"account.unmute": "@{name} némításának feloldása", "account.unmute": "@{name} némításának feloldása",
"account.unmute_notifications_short": "Értesítések némításának feloldása", "account.unmute_notifications_short": "Értesítések némításának feloldása",
"account.unmute_short": "Némitás feloldása", "account.unmute_short": "Némitás feloldása",
"account_edit.bio.add_label": "Bemutatkozás hozzáadása",
"account_edit.bio.edit_label": "Bemutatkozás szerkesztése", "account_edit.bio.edit_label": "Bemutatkozás szerkesztése",
"account_edit.bio.placeholder": "Adj meg egy rövid bemutatkozást, hogy mások könnyebben megtaláljanak.", "account_edit.bio.placeholder": "Adj meg egy rövid bemutatkozást, hogy mások könnyebben megtaláljanak.",
"account_edit.bio.title": "Bemutatkozás", "account_edit.bio.title": "Bemutatkozás",
@@ -358,6 +359,7 @@
"collections.account_count": "{count, plural, one {# fiók} other {# fiók}}", "collections.account_count": "{count, plural, one {# fiók} other {# fiók}}",
"collections.accounts.empty_description": "Adj hozzá legfeljebb {count} követett fiókot", "collections.accounts.empty_description": "Adj hozzá legfeljebb {count} követett fiókot",
"collections.accounts.empty_title": "Ez a gyűjtemény üres", "collections.accounts.empty_title": "Ez a gyűjtemény üres",
"collections.by_account": "szerző: {account_handle}",
"collections.collection_description": "Leírás", "collections.collection_description": "Leírás",
"collections.collection_language": "Nyelv", "collections.collection_language": "Nyelv",
"collections.collection_language_none": "Egyik sem", "collections.collection_language_none": "Egyik sem",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# aðgangur} other {# aðgangar}}", "collections.account_count": "{count, plural, one {# aðgangur} other {# aðgangar}}",
"collections.accounts.empty_description": "Bættu við allt að {count} aðgöngum sem þú fylgist með", "collections.accounts.empty_description": "Bættu við allt að {count} aðgöngum sem þú fylgist með",
"collections.accounts.empty_title": "Þetta safn er tómt", "collections.accounts.empty_title": "Þetta safn er tómt",
"collections.by_account": "frá {account_handle}",
"collections.collection_description": "Lýsing", "collections.collection_description": "Lýsing",
"collections.collection_language": "Tungumál", "collections.collection_language": "Tungumál",
"collections.collection_language_none": "Ekkert", "collections.collection_language_none": "Ekkert",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, one {# account} other {# account}}", "collections.account_count": "{count, plural, one {# account} other {# account}}",
"collections.accounts.empty_description": "Aggiungi fino a {count} account che segui", "collections.accounts.empty_description": "Aggiungi fino a {count} account che segui",
"collections.accounts.empty_title": "Questa collezione è vuota", "collections.accounts.empty_title": "Questa collezione è vuota",
"collections.by_account": "di {account_handle}",
"collections.collection_description": "Descrizione", "collections.collection_description": "Descrizione",
"collections.collection_language": "Lingua", "collections.collection_language": "Lingua",
"collections.collection_language_none": "Nessuna", "collections.collection_language_none": "Nessuna",

View File

@@ -73,7 +73,7 @@
"account.go_to_profile": "Ga naar profiel", "account.go_to_profile": "Ga naar profiel",
"account.hide_reblogs": "Boosts van @{name} verbergen", "account.hide_reblogs": "Boosts van @{name} verbergen",
"account.in_memoriam": "In memoriam.", "account.in_memoriam": "In memoriam.",
"account.joined_short": "Geregistreerd op", "account.joined_short": "Geregistreerd",
"account.languages": "Getoonde talen wijzigen", "account.languages": "Getoonde talen wijzigen",
"account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}",
"account.locked_info": "De privacystatus van dit account is ingesteld op vergrendeld. De eigenaar beoordeelt handmatig wie diegene kan volgen.", "account.locked_info": "De privacystatus van dit account is ingesteld op vergrendeld. De eigenaar beoordeelt handmatig wie diegene kan volgen.",
@@ -141,6 +141,7 @@
"account.unmute": "@{name} niet langer negeren", "account.unmute": "@{name} niet langer negeren",
"account.unmute_notifications_short": "Meldingen niet langer negeren", "account.unmute_notifications_short": "Meldingen niet langer negeren",
"account.unmute_short": "Niet langer negeren", "account.unmute_short": "Niet langer negeren",
"account_edit.bio.add_label": "Biografie toevoegen",
"account_edit.bio.edit_label": "Biografie bewerken", "account_edit.bio.edit_label": "Biografie bewerken",
"account_edit.bio.placeholder": "Vertel iets over jezelf, zodat anderen inzicht krijgen in wat voor persoon je bent.", "account_edit.bio.placeholder": "Vertel iets over jezelf, zodat anderen inzicht krijgen in wat voor persoon je bent.",
"account_edit.bio.title": "Biografie", "account_edit.bio.title": "Biografie",
@@ -170,9 +171,9 @@
"account_edit.field_delete_modal.title": "Aangepast veld verwijderen?", "account_edit.field_delete_modal.title": "Aangepast veld verwijderen?",
"account_edit.field_edit_modal.add_title": "Aangepast veld toevoegen", "account_edit.field_edit_modal.add_title": "Aangepast veld toevoegen",
"account_edit.field_edit_modal.discard_confirm": "Weggooien", "account_edit.field_edit_modal.discard_confirm": "Weggooien",
"account_edit.field_edit_modal.discard_message": "U heeft niet-opgeslagen wijzigingen. Weet u zeker dat u ze wilt weggooien?", "account_edit.field_edit_modal.discard_message": "Je hebt niet-opgeslagen wijzigingen. Weet je zeker dat je ze wilt weggooien?",
"account_edit.field_edit_modal.edit_title": "Aangepast veld bewerken", "account_edit.field_edit_modal.edit_title": "Aangepast veld bewerken",
"account_edit.field_edit_modal.limit_warning": "Aanbevolen tekenlimiet overschreden. Mobiele gebruikers zien mogelijk uw veld niet volledig.", "account_edit.field_edit_modal.limit_warning": "Aanbevolen tekenlimiet overschreden. Mobiele gebruikers zien mogelijk je veld niet volledig.",
"account_edit.field_edit_modal.link_emoji_warning": "We raden aan om geen lokale emoji in combinatie met URL's te gebruiken. Aangepaste velden die beide bevatten worden alleen als tekst weergegeven, in plaats van als een link. Dit om verwarring voor de gebruiker te voorkomen.", "account_edit.field_edit_modal.link_emoji_warning": "We raden aan om geen lokale emoji in combinatie met URL's te gebruiken. Aangepaste velden die beide bevatten worden alleen als tekst weergegeven, in plaats van als een link. Dit om verwarring voor de gebruiker te voorkomen.",
"account_edit.field_edit_modal.name_hint": "Bijv. \"Persoonlijke website\"", "account_edit.field_edit_modal.name_hint": "Bijv. \"Persoonlijke website\"",
"account_edit.field_edit_modal.name_label": "Label", "account_edit.field_edit_modal.name_label": "Label",
@@ -358,6 +359,7 @@
"collections.account_count": "{count, plural, one {# account} other {# accounts}}", "collections.account_count": "{count, plural, one {# account} other {# accounts}}",
"collections.accounts.empty_description": "Tot {count} accounts die je volgt toevoegen", "collections.accounts.empty_description": "Tot {count} accounts die je volgt toevoegen",
"collections.accounts.empty_title": "Deze verzameling is leeg", "collections.accounts.empty_title": "Deze verzameling is leeg",
"collections.by_account": "door {account_handle}",
"collections.collection_description": "Omschrijving", "collections.collection_description": "Omschrijving",
"collections.collection_language": "Taal", "collections.collection_language": "Taal",
"collections.collection_language_none": "Geen", "collections.collection_language_none": "Geen",
@@ -638,7 +640,7 @@
"featured_carousel.header": "{count, plural, one {Vastgezet bericht} other {Vastgezette berichten}}", "featured_carousel.header": "{count, plural, one {Vastgezet bericht} other {Vastgezette berichten}}",
"featured_carousel.slide": "Bericht {current, number} van {max, number}", "featured_carousel.slide": "Bericht {current, number} van {max, number}",
"featured_tags.more_items": "+{count}", "featured_tags.more_items": "+{count}",
"featured_tags.suggestions": "De laatste tijd heb over {items} gepost. Deze toevoegen als uitgelichte hashtags?", "featured_tags.suggestions": "Je hebt de afgelopen periode over {items} bericht. Deze toevoegen als uitgelichte hashtags?",
"featured_tags.suggestions.add": "Toevoegen", "featured_tags.suggestions.add": "Toevoegen",
"featured_tags.suggestions.added": "Je kunt je uitgelichte hashtags beheren onder <link>Profiel bewerken > Uitgelichte hashtags</link>.", "featured_tags.suggestions.added": "Je kunt je uitgelichte hashtags beheren onder <link>Profiel bewerken > Uitgelichte hashtags</link>.",
"featured_tags.suggestions.dismiss": "Nee, bedankt", "featured_tags.suggestions.dismiss": "Nee, bedankt",

View File

@@ -141,6 +141,7 @@
"account.unmute": "Dessilenciar @{name}", "account.unmute": "Dessilenciar @{name}",
"account.unmute_notifications_short": "Ativar som de notificações", "account.unmute_notifications_short": "Ativar som de notificações",
"account.unmute_short": "Desativar silêncio", "account.unmute_short": "Desativar silêncio",
"account_edit.bio.add_label": "Adicionar biografia",
"account_edit.bio.edit_label": "Editar Biografia", "account_edit.bio.edit_label": "Editar Biografia",
"account_edit.bio.placeholder": "Insira uma breve introdução para ajudar os outros a lhe identificar.", "account_edit.bio.placeholder": "Insira uma breve introdução para ajudar os outros a lhe identificar.",
"account_edit.bio.title": "Bio", "account_edit.bio.title": "Bio",
@@ -194,6 +195,15 @@
"account_edit.image_alt_modal.text_hint": "Texto alternativo ajuda leitores de tela a entender seu conteúdo.", "account_edit.image_alt_modal.text_hint": "Texto alternativo ajuda leitores de tela a entender seu conteúdo.",
"account_edit.image_alt_modal.text_label": "Texto alternativo", "account_edit.image_alt_modal.text_label": "Texto alternativo",
"account_edit.image_delete_modal.confirm": "Tem certeza de que deseja excluir esta imagem? Esta ação não pode ser desfeita.", "account_edit.image_delete_modal.confirm": "Tem certeza de que deseja excluir esta imagem? Esta ação não pode ser desfeita.",
"account_edit.image_delete_modal.delete_button": "Deletar",
"account_edit.image_delete_modal.title": "Deletar imagem?",
"account_edit.image_edit.add_button": "Adicionar imagem",
"account_edit.image_edit.alt_add_button": "Adicionar texto alternativo",
"account_edit.image_edit.alt_edit_button": "Editar texto alternativo",
"account_edit.image_edit.remove_button": "Remover imagem",
"account_edit.image_edit.replace_button": "Substituir imagem",
"account_edit.item_list.delete": "Deletar {name}",
"account_edit.item_list.edit": "Editar {name}",
"account_edit.name_modal.add_title": "Inserir nome de exibição", "account_edit.name_modal.add_title": "Inserir nome de exibição",
"account_edit.name_modal.edit_title": "Editar nome de exibição", "account_edit.name_modal.edit_title": "Editar nome de exibição",
"account_edit.profile_tab.button_label": "Personalizar", "account_edit.profile_tab.button_label": "Personalizar",
@@ -208,17 +218,33 @@
"account_edit.profile_tab.subtitle": "Personalizar as abas em seu perfil e o que elas exibem.", "account_edit.profile_tab.subtitle": "Personalizar as abas em seu perfil e o que elas exibem.",
"account_edit.profile_tab.title": "Configurações da aba de perfil", "account_edit.profile_tab.title": "Configurações da aba de perfil",
"account_edit.save": "Salvar", "account_edit.save": "Salvar",
"account_edit.upload_modal.back": "Voltar",
"account_edit.upload_modal.done": "Concluído",
"account_edit.upload_modal.next": "Próximo",
"account_edit.upload_modal.step_crop.zoom": "Aproximar",
"account_edit.upload_modal.step_upload.button": "Procurar arquivos",
"account_edit.upload_modal.step_upload.dragging": "Solte para enviar",
"account_edit.upload_modal.step_upload.header": "Escolha uma imagem",
"account_edit.upload_modal.step_upload.hint": "WEBP, formatos GIF ou JPG, até {limit}MB.{br} imagem será redimensionada para {width}x{height}px.",
"account_edit.upload_modal.title_add.avatar": "Adicionar foto de perfil",
"account_edit.upload_modal.title_add.header": "Adicionar foto de capa",
"account_edit.upload_modal.title_replace.avatar": "Substituir foto de perfil",
"account_edit.upload_modal.title_replace.header": "Substituir foto de capa",
"account_edit.verified_modal.details": "Dê credibilidade ao seu perfil do Mastodon, verificando links para sites pessoais. Veja como funciona:", "account_edit.verified_modal.details": "Dê credibilidade ao seu perfil do Mastodon, verificando links para sites pessoais. Veja como funciona:",
"account_edit.verified_modal.invisible_link.details": "Adicione o link para seu HTML do site. A parte importante é rel=\"eu\" onde previne falsificação de identidade em sites com conteúdo gerado por usuários. Você pode até mesmo usar um link tag no HTML da página ao invés de {tag}, mas o HTML deve ser acessível sem a execução do JavaScript.",
"account_edit.verified_modal.invisible_link.summary": "Como posso tornar o link invisível?", "account_edit.verified_modal.invisible_link.summary": "Como posso tornar o link invisível?",
"account_edit.verified_modal.step1.header": "Copie o código HTML abaixo e cole no cabeçalho do seu site", "account_edit.verified_modal.step1.header": "Copie o código HTML abaixo e cole no cabeçalho do seu site",
"account_edit.verified_modal.step2.details": "Se já adicionou seu site como um campo personalizado, deverá excluí-lo e adicioná-lo novamente para acionar a verificação.", "account_edit.verified_modal.step2.details": "Se já adicionou seu site como um campo personalizado, deverá excluí-lo e adicioná-lo novamente para acionar a verificação.",
"account_edit.verified_modal.step2.header": "Adicione seu site como um campo personalizado", "account_edit.verified_modal.step2.header": "Adicione seu site como um campo personalizado",
"account_edit.verified_modal.title": "Como adicionar um link verificado", "account_edit.verified_modal.title": "Como adicionar um link verificado",
"account_edit_tags.add_tag": "Adicionar #{tagName}", "account_edit_tags.add_tag": "Adicionar #{tagName}",
"account_edit_tags.column_title": "Editar Tags",
"account_edit_tags.help_text": "Hashtags em destaque ajudam os usuários a descobrir e interagir com seu perfil. Elas aparecem como filtros na visualização de Atividade da sua página de Perfil.", "account_edit_tags.help_text": "Hashtags em destaque ajudam os usuários a descobrir e interagir com seu perfil. Elas aparecem como filtros na visualização de Atividade da sua página de Perfil.",
"account_edit_tags.max_tags_reached": "Você atingiu o número máximo de hashtags em destaque.",
"account_edit_tags.search_placeholder": "Insira uma hashtag…", "account_edit_tags.search_placeholder": "Insira uma hashtag…",
"account_edit_tags.suggestions": "Sugestões:", "account_edit_tags.suggestions": "Sugestões:",
"account_edit_tags.tag_status_count": "{count, plural, one {# publicação} other {# publicações}}", "account_edit_tags.tag_status_count": "{count, plural, one {# publicação} other {# publicações}}",
"account_list.total": "{total, plural,one {#conta}other {#contas}}",
"account_note.placeholder": "Nota pessoal sobre este perfil aqui", "account_note.placeholder": "Nota pessoal sobre este perfil aqui",
"admin.dashboard.daily_retention": "Taxa de retenção de usuários por dia, após a inscrição", "admin.dashboard.daily_retention": "Taxa de retenção de usuários por dia, após a inscrição",
"admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição", "admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição",
@@ -333,7 +359,10 @@
"collections.account_count": "{count, plural, one {# conta} other {# conta}}", "collections.account_count": "{count, plural, one {# conta} other {# conta}}",
"collections.accounts.empty_description": "Adicionar até {count} contas que você segue", "collections.accounts.empty_description": "Adicionar até {count} contas que você segue",
"collections.accounts.empty_title": "Esta coleção está vazia", "collections.accounts.empty_title": "Esta coleção está vazia",
"collections.by_account": "por {account_handle}",
"collections.collection_description": "Descrição", "collections.collection_description": "Descrição",
"collections.collection_language": "Língua",
"collections.collection_language_none": "Nenhum",
"collections.collection_name": "Nome", "collections.collection_name": "Nome",
"collections.collection_topic": "Tópico", "collections.collection_topic": "Tópico",
"collections.confirm_account_removal": "Tem certeza que deseja remover esta conta da sua coleção?", "collections.confirm_account_removal": "Tem certeza que deseja remover esta conta da sua coleção?",
@@ -377,6 +406,7 @@
"collections.search_accounts_max_reached": "Você acrescentou o numero máximo de contas", "collections.search_accounts_max_reached": "Você acrescentou o numero máximo de contas",
"collections.sensitive": "Sensível", "collections.sensitive": "Sensível",
"collections.topic_hint": "Adicione uma hashtag que ajude os outros a entender o tópico principal desta coleção.", "collections.topic_hint": "Adicione uma hashtag que ajude os outros a entender o tópico principal desta coleção.",
"collections.topic_special_chars_hint": "Caracteres especiais serão removidos ao salvar",
"collections.view_collection": "Ver coleção", "collections.view_collection": "Ver coleção",
"collections.view_other_collections_by_user": "Ver outras coleções deste usuário", "collections.view_other_collections_by_user": "Ver outras coleções deste usuário",
"collections.visibility_public": "Público", "collections.visibility_public": "Público",
@@ -610,6 +640,10 @@
"featured_carousel.header": "{count, plural, one {Publicação fixada} other {Publicações fixadas}}", "featured_carousel.header": "{count, plural, one {Publicação fixada} other {Publicações fixadas}}",
"featured_carousel.slide": "Publicação {current, number} de {max, number}", "featured_carousel.slide": "Publicação {current, number} de {max, number}",
"featured_tags.more_items": "+{count}", "featured_tags.more_items": "+{count}",
"featured_tags.suggestions": "Anteriormente você postou sobre {items}. Adicionar estas como hashtags em destaque?",
"featured_tags.suggestions.add": "Adicionar",
"featured_tags.suggestions.added": "Gerencie suas hashtags a qualquer momento sob <link>Editar Perfil > Hashtags em destaque</link>.",
"featured_tags.suggestions.dismiss": "Não, obrigado",
"filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.", "filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.",
"filter_modal.added.context_mismatch_title": "Incompatibilidade de contexto!", "filter_modal.added.context_mismatch_title": "Incompatibilidade de contexto!",
"filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, você precisará alterar a data de expiração para aplicar.", "filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, você precisará alterar a data de expiração para aplicar.",
@@ -652,7 +686,9 @@
"follow_suggestions.who_to_follow": "Quem seguir", "follow_suggestions.who_to_follow": "Quem seguir",
"followed_tags": "Hashtags seguidas", "followed_tags": "Hashtags seguidas",
"followers.hide_other_followers": "Este usuário escolheu não deixar visíveis seus seguidores", "followers.hide_other_followers": "Este usuário escolheu não deixar visíveis seus seguidores",
"followers.title": "Seguinte {name}",
"following.hide_other_following": "Este usuário escolheu não deixar visíveis aqueles a quem segue", "following.hide_other_following": "Este usuário escolheu não deixar visíveis aqueles a quem segue",
"following.title": "Seguido por {name}",
"footer.about": "Sobre", "footer.about": "Sobre",
"footer.about_mastodon": "Sobre o mastodon", "footer.about_mastodon": "Sobre o mastodon",
"footer.about_server": "Sobre {domain}", "footer.about_server": "Sobre {domain}",
@@ -969,12 +1005,14 @@
"notifications_permission_banner.title": "Nunca perca nada", "notifications_permission_banner.title": "Nunca perca nada",
"onboarding.follows.back": "Voltar", "onboarding.follows.back": "Voltar",
"onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados agora. Você pode tentar usar a busca ou navegar na página de exploração para encontrar pessoas para seguir, ou tentar novamente mais tarde.", "onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados agora. Você pode tentar usar a busca ou navegar na página de exploração para encontrar pessoas para seguir, ou tentar novamente mais tarde.",
"onboarding.follows.next": "Próximo: Configure seu perfil",
"onboarding.follows.search": "Buscar", "onboarding.follows.search": "Buscar",
"onboarding.follows.title": "Comece seguindo pessoas", "onboarding.follows.title": "Comece seguindo pessoas",
"onboarding.profile.discoverable": "Tornar meu perfil descobrível", "onboarding.profile.discoverable": "Tornar meu perfil descobrível",
"onboarding.profile.discoverable_hint": "Quando você aceita a capacidade de descoberta no Mastodon, suas postagens podem aparecer nos resultados de busca e nas tendências, e seu perfil pode ser sugerido a pessoas com interesses similares aos seus.", "onboarding.profile.discoverable_hint": "Quando você aceita a capacidade de descoberta no Mastodon, suas postagens podem aparecer nos resultados de busca e nas tendências, e seu perfil pode ser sugerido a pessoas com interesses similares aos seus.",
"onboarding.profile.display_name": "Nome de exibição", "onboarding.profile.display_name": "Nome de exibição",
"onboarding.profile.display_name_hint": "Seu nome completo ou apelido…", "onboarding.profile.display_name_hint": "Seu nome completo ou apelido…",
"onboarding.profile.finish": "Finalizar",
"onboarding.profile.note": "Biografia", "onboarding.profile.note": "Biografia",
"onboarding.profile.note_hint": "Você pode @mencionar outras pessoas ou usar #hashtags…", "onboarding.profile.note_hint": "Você pode @mencionar outras pessoas ou usar #hashtags…",
"onboarding.profile.title": "Configuração do perfil", "onboarding.profile.title": "Configuração do perfil",
@@ -1123,6 +1161,7 @@
"sign_in_banner.mastodon_is": "O Mastodon é a melhor maneira de acompanhar o que está acontecendo.", "sign_in_banner.mastodon_is": "O Mastodon é a melhor maneira de acompanhar o que está acontecendo.",
"sign_in_banner.sign_in": "Entrar", "sign_in_banner.sign_in": "Entrar",
"sign_in_banner.sso_redirect": "Entrar ou Registrar-se", "sign_in_banner.sso_redirect": "Entrar ou Registrar-se",
"skip_links.hotkey": "<span>Tecla de atalho</span>{hotkey}",
"skip_links.skip_to_content": "Conteúdo principal", "skip_links.skip_to_content": "Conteúdo principal",
"skip_links.skip_to_navigation": "Navegação principal", "skip_links.skip_to_navigation": "Navegação principal",
"status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_account": "Abrir interface de moderação para @{name}",

View File

@@ -354,6 +354,7 @@
"collection.share_template_own": "Shihni koleksionin tim të ri: {link}", "collection.share_template_own": "Shihni koleksionin tim të ri: {link}",
"collections.account_count": "{count, plural, one {# llogari} other {# llogari}}", "collections.account_count": "{count, plural, one {# llogari} other {# llogari}}",
"collections.accounts.empty_title": "Ky koleksion është i zbrazët", "collections.accounts.empty_title": "Ky koleksion është i zbrazët",
"collections.by_account": "nga {account_handle}",
"collections.collection_description": "Përshkrim", "collections.collection_description": "Përshkrim",
"collections.collection_language": "Gjuhë", "collections.collection_language": "Gjuhë",
"collections.collection_language_none": "Asnjë", "collections.collection_language_none": "Asnjë",

View File

@@ -8,10 +8,14 @@
"about.domain_blocks.silenced.title": "Ograničen", "about.domain_blocks.silenced.title": "Ograničen",
"about.domain_blocks.suspended.explanation": "Podaci sa ovog servera neće se obrađivati, čuvati niti razmenjivati, što će onemogućiti bilo kakvu interakciju ili komunikaciju sa korisnicima sa ovog servera.", "about.domain_blocks.suspended.explanation": "Podaci sa ovog servera neće se obrađivati, čuvati niti razmenjivati, što će onemogućiti bilo kakvu interakciju ili komunikaciju sa korisnicima sa ovog servera.",
"about.domain_blocks.suspended.title": "Suspendovan", "about.domain_blocks.suspended.title": "Suspendovan",
"about.language_label": "Jezik",
"about.not_available": "Ove informacije nisu dostupne na ovom serveru.", "about.not_available": "Ove informacije nisu dostupne na ovom serveru.",
"about.powered_by": "Decentralizovana društvena mreža koju pokreće {mastodon}", "about.powered_by": "Decentralizovana društvena mreža koju pokreće {mastodon}",
"about.rules": "Pravila servera", "about.rules": "Pravila servera",
"account.activity": "Aktivnosti",
"account.add_or_remove_from_list": "Dodaj ili ukloni sa lista", "account.add_or_remove_from_list": "Dodaj ili ukloni sa lista",
"account.badges.admin": "Admin",
"account.badges.blocked": "Blokiran",
"account.badges.bot": "Automatizovano", "account.badges.bot": "Automatizovano",
"account.badges.group": "Grupa", "account.badges.group": "Grupa",
"account.block": "Blokiraj @{name}", "account.block": "Blokiraj @{name}",
@@ -23,18 +27,31 @@
"account.direct": "Privatno pomeni @{name}", "account.direct": "Privatno pomeni @{name}",
"account.disable_notifications": "Zaustavi obaveštavanje za objave korisnika @{name}", "account.disable_notifications": "Zaustavi obaveštavanje za objave korisnika @{name}",
"account.edit_profile": "Uredi profil", "account.edit_profile": "Uredi profil",
"account.edit_profile_short": "Uredi",
"account.enable_notifications": "Obavesti me kada @{name} objavi", "account.enable_notifications": "Obavesti me kada @{name} objavi",
"account.endorse": "Istakni na profilu", "account.endorse": "Istakni na profilu",
"account.featured.accounts": "Profili",
"account.featured_tags.last_status_at": "Poslednja objava {date}", "account.featured_tags.last_status_at": "Poslednja objava {date}",
"account.featured_tags.last_status_never": "Nema objava", "account.featured_tags.last_status_never": "Nema objava",
"account.filters.all": "Sve aktivnosti",
"account.filters.posts_only": "Objave",
"account.filters.posts_replies": "Objave i odgovori",
"account.filters.replies_toggle": "Prikaži odgovore",
"account.follow": "Prati", "account.follow": "Prati",
"account.follow_back": "Uzvrati praćenje", "account.follow_back": "Uzvrati praćenje",
"account.follow_back_short": "Uzvrati praćenje",
"account.follow_request": "Zahtevaj praćenje",
"account.follow_request_cancel": "Poništi zahtev",
"account.follow_request_cancel_short": "Poništi",
"account.follow_request_short": "Zahtevaj",
"account.followers": "Pratioci", "account.followers": "Pratioci",
"account.followers.empty": "Još uvek niko ne prati ovog korisnika.", "account.followers.empty": "Još uvek niko ne prati ovog korisnika.",
"account.followers_counter": "{count, plural, one {{counter} pratilac} few {{counter} pratioca} other {{counter} pratilaca}}", "account.followers_counter": "{count, plural, one {{counter} pratilac} few {{counter} pratioca} other {{counter} pratilaca}}",
"account.followers_you_know_counter": "{counter} koje ti poznaješ",
"account.following": "Prati", "account.following": "Prati",
"account.following_counter": "{count, plural, one {{counter} prati} few {{counter} prati} other {{counter} prati}}", "account.following_counter": "{count, plural, one {{counter} prati} few {{counter} prati} other {{counter} prati}}",
"account.follows.empty": "Ovaj korisnik još uvek nikog ne prati.", "account.follows.empty": "Ovaj korisnik još uvek nikog ne prati.",
"account.follows_you": "Prati te",
"account.go_to_profile": "Idi na profil", "account.go_to_profile": "Idi na profil",
"account.hide_reblogs": "Sakrij podržavanja @{name}", "account.hide_reblogs": "Sakrij podržavanja @{name}",
"account.in_memoriam": "U znak sećanja na.", "account.in_memoriam": "U znak sećanja na.",
@@ -44,6 +61,12 @@
"account.locked_info": "Status privatnosti ovog naloga je podešen na „zaključano”. Vlasnik ručno pregleda ko ga može pratiti.", "account.locked_info": "Status privatnosti ovog naloga je podešen na „zaključano”. Vlasnik ručno pregleda ko ga može pratiti.",
"account.media": "Multimedija", "account.media": "Multimedija",
"account.mention": "Pomeni korisnika @{name}", "account.mention": "Pomeni korisnika @{name}",
"account.menu.add_to_list": "Dodaj u listu",
"account.menu.block": "Blokiraj nalog",
"account.menu.block_domain": "Blokiraj {domain}",
"account.menu.copy": "Kopiraj link",
"account.menu.remove_follower": "Ukloni pratioca",
"account.menu.report": "Prijavi nalog",
"account.moved_to": "Korisnik {name} je naznačio da je njegov novi nalog sada:", "account.moved_to": "Korisnik {name} je naznačio da je njegov novi nalog sada:",
"account.mute": "Ignoriši korisnika @{name}", "account.mute": "Ignoriši korisnika @{name}",
"account.mute_notifications_short": "Isključi obaveštenja", "account.mute_notifications_short": "Isključi obaveštenja",

View File

@@ -272,6 +272,7 @@
"closed_registrations_modal.preamble": "Mastodon är decentraliserat så oavsett var du skapar ditt konto kommer du att kunna följa och interagera med någon på denna server. Du kan också köra din egen server!", "closed_registrations_modal.preamble": "Mastodon är decentraliserat så oavsett var du skapar ditt konto kommer du att kunna följa och interagera med någon på denna server. Du kan också köra din egen server!",
"closed_registrations_modal.title": "Registrera sig på Mastodon", "closed_registrations_modal.title": "Registrera sig på Mastodon",
"collections.accounts.empty_description": "Lägg till upp till {count} konton som du följer", "collections.accounts.empty_description": "Lägg till upp till {count} konton som du följer",
"collections.by_account": "av {account_handle}",
"collections.collection_language": "Språk", "collections.collection_language": "Språk",
"collections.collection_language_none": "Inga", "collections.collection_language_none": "Inga",
"collections.create_a_collection_hint": "Skapa en samling för att rekommendera eller dela dina favoritkonton med andra.", "collections.create_a_collection_hint": "Skapa en samling för att rekommendera eller dela dina favoritkonton med andra.",

View File

@@ -79,8 +79,8 @@
"account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.",
"account.media": "Phương tiện", "account.media": "Phương tiện",
"account.mention": "Nhắc đến @{name}", "account.mention": "Nhắc đến @{name}",
"account.menu.add_to_list": "Thêm vào danh sách", "account.menu.add_to_list": "Thêm vào danh sách",
"account.menu.block": "Chặn người này", "account.menu.block": "Chặn tài khoản",
"account.menu.block_domain": "Chặn {domain}", "account.menu.block_domain": "Chặn {domain}",
"account.menu.copied": "Đã sao chép liên kết tài khoản vào clipboard", "account.menu.copied": "Đã sao chép liên kết tài khoản vào clipboard",
"account.menu.copy": "Sao chép liên kết", "account.menu.copy": "Sao chép liên kết",
@@ -143,7 +143,7 @@
"account.unmute_short": "Bỏ phớt lờ", "account.unmute_short": "Bỏ phớt lờ",
"account_edit.bio.add_label": "Thêm giới thiệu", "account_edit.bio.add_label": "Thêm giới thiệu",
"account_edit.bio.edit_label": "Sửa giới thiệu", "account_edit.bio.edit_label": "Sửa giới thiệu",
"account_edit.bio.placeholder": "Thêm một dòng giới thiệu để giúp mọi người nhận ra bạn.", "account_edit.bio.placeholder": "Giúp mọi người nhận ra bạn là ai.",
"account_edit.bio.title": "Giới thiệu", "account_edit.bio.title": "Giới thiệu",
"account_edit.bio_modal.add_title": "Thêm giới thiệu", "account_edit.bio_modal.add_title": "Thêm giới thiệu",
"account_edit.bio_modal.edit_title": "Sửa giới thiệu", "account_edit.bio_modal.edit_title": "Sửa giới thiệu",
@@ -159,7 +159,7 @@
"account_edit.custom_fields.verified_hint": "Làm thế nào để thêm liên kết xác minh?", "account_edit.custom_fields.verified_hint": "Làm thế nào để thêm liên kết xác minh?",
"account_edit.display_name.add_label": "Thêm tên gọi", "account_edit.display_name.add_label": "Thêm tên gọi",
"account_edit.display_name.edit_label": "Sửa tên gọi", "account_edit.display_name.edit_label": "Sửa tên gọi",
"account_edit.display_name.placeholder": "Tên gọi là tên hiển thị trên hồ sơ của bạn, cũng như bảng tin.", "account_edit.display_name.placeholder": "Tên gọi là tên hiển thị trên hồ sơ của bạn bảng tin.",
"account_edit.display_name.title": "Tên gọi", "account_edit.display_name.title": "Tên gọi",
"account_edit.featured_hashtags.edit_label": "Thêm hashtag", "account_edit.featured_hashtags.edit_label": "Thêm hashtag",
"account_edit.featured_hashtags.placeholder": "Giúp mọi người nhận diện và truy cập nhanh những chủ đề mà bạn thích.", "account_edit.featured_hashtags.placeholder": "Giúp mọi người nhận diện và truy cập nhanh những chủ đề mà bạn thích.",
@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, other {# tài khoản}}", "collections.account_count": "{count, plural, other {# tài khoản}}",
"collections.accounts.empty_description": "Thêm tối đa {count} tài khoản mà bạn theo dõi", "collections.accounts.empty_description": "Thêm tối đa {count} tài khoản mà bạn theo dõi",
"collections.accounts.empty_title": "Gói khởi đầu này trống", "collections.accounts.empty_title": "Gói khởi đầu này trống",
"collections.by_account": "bởi {account_handle}",
"collections.collection_description": "Mô tả", "collections.collection_description": "Mô tả",
"collections.collection_language": "Ngôn ngữ", "collections.collection_language": "Ngôn ngữ",
"collections.collection_language_none": "Không", "collections.collection_language_none": "Không",
@@ -460,7 +461,7 @@
"compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm", "compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm",
"compose_form.encryption_warning": "Các tút trên Mastodon không được mã hóa đầu cuối. Không chia sẻ bất kỳ thông tin nhạy cảm nào qua Mastodon.", "compose_form.encryption_warning": "Các tút trên Mastodon không được mã hóa đầu cuối. Không chia sẻ bất kỳ thông tin nhạy cảm nào qua Mastodon.",
"compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai. Chỉ những tút công khai mới có thể được tìm kiếm thông qua hashtag.", "compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai. Chỉ những tút công khai mới có thể được tìm kiếm thông qua hashtag.",
"compose_form.lock_disclaimer": "Tài khoản của bạn không {locked}. Bất cứ ai cũng có thể theo dõi và xem tút chỉ dành cho người theo dõi bạn.", "compose_form.lock_disclaimer": "Tài khoản của bạn không {locked}. Bất kỳ ai cũng có thể theo dõi và xem tút chỉ dành cho người theo dõi bạn.",
"compose_form.lock_disclaimer.lock": "khóa", "compose_form.lock_disclaimer.lock": "khóa",
"compose_form.placeholder": "Bạn đang nghĩ gì?", "compose_form.placeholder": "Bạn đang nghĩ gì?",
"compose_form.poll.duration": "Hết hạn sau", "compose_form.poll.duration": "Hết hạn sau",
@@ -604,7 +605,7 @@
"empty_column.account_suspended": "Tài khoản vô hiệu hóa", "empty_column.account_suspended": "Tài khoản vô hiệu hóa",
"empty_column.account_timeline": "Chưa có tút nào!", "empty_column.account_timeline": "Chưa có tút nào!",
"empty_column.account_unavailable": "Tài khoản bị đình chỉ", "empty_column.account_unavailable": "Tài khoản bị đình chỉ",
"empty_column.blocks": "Bạn chưa chặn bất cứ ai.", "empty_column.blocks": "Bạn chưa chặn ai.",
"empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.", "empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.",
"empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!", "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!",
"empty_column.direct": "Bạn chưa có tin nhắn riêng nào. Khi bạn gửi hoặc nhận một tin nhắn riêng, nó sẽ xuất hiện ở đây.", "empty_column.direct": "Bạn chưa có tin nhắn riêng nào. Khi bạn gửi hoặc nhận một tin nhắn riêng, nó sẽ xuất hiện ở đây.",
@@ -641,7 +642,7 @@
"featured_tags.more_items": "+{count}", "featured_tags.more_items": "+{count}",
"featured_tags.suggestions": "Gần đây bạn đã đăng về {items}. Thêm cái này vào hashtag thường dùng?", "featured_tags.suggestions": "Gần đây bạn đã đăng về {items}. Thêm cái này vào hashtag thường dùng?",
"featured_tags.suggestions.add": "Thêm", "featured_tags.suggestions.add": "Thêm",
"featured_tags.suggestions.added": "Quản lý hashtag bạn thường dùng vào bất cứ lúc nào tại <link>Sửa hồ sơ > Hashtag thường dùng</link>.", "featured_tags.suggestions.added": "Quản lý hashtag bạn thường dùng vào bất kỳ lúc nào tại <link>Sửa hồ sơ > Hashtag thường dùng</link>.",
"featured_tags.suggestions.dismiss": "Không, cảm ơn", "featured_tags.suggestions.dismiss": "Không, cảm ơn",
"filter_modal.added.context_mismatch_explanation": "Danh mục bộ lọc này không áp dụng cho ngữ cảnh mà bạn đã truy cập tút này. Nếu bạn muốn tút cũng được lọc trong ngữ cảnh này, bạn sẽ phải chỉnh sửa bộ lọc.", "filter_modal.added.context_mismatch_explanation": "Danh mục bộ lọc này không áp dụng cho ngữ cảnh mà bạn đã truy cập tút này. Nếu bạn muốn tút cũng được lọc trong ngữ cảnh này, bạn sẽ phải chỉnh sửa bộ lọc.",
"filter_modal.added.context_mismatch_title": "Bối cảnh không phù hợp!", "filter_modal.added.context_mismatch_title": "Bối cảnh không phù hợp!",
@@ -1035,13 +1036,13 @@
"privacy.direct.short": "Nhắn riêng", "privacy.direct.short": "Nhắn riêng",
"privacy.private.long": "Chỉ người theo dõi", "privacy.private.long": "Chỉ người theo dõi",
"privacy.private.short": "Người theo dõi", "privacy.private.short": "Người theo dõi",
"privacy.public.long": "Bất cứ ai", "privacy.public.long": "Bất kỳ ai",
"privacy.public.short": "Công khai", "privacy.public.short": "Công khai",
"privacy.quote.anyone": "{visibility}, cho phép trích dẫn", "privacy.quote.anyone": "{visibility}, cho phép trích dẫn",
"privacy.quote.disabled": "{visibility}, tắt trích dẫn", "privacy.quote.disabled": "{visibility}, tắt trích dẫn",
"privacy.quote.limited": "{visibility}, hạn chế trích dẫn", "privacy.quote.limited": "{visibility}, hạn chế trích dẫn",
"privacy.unlisted.additional": "Công khai, nhưng tút sẽ không hiện trong bảng tin, hashtag, khám phá hoặc tìm kiếm Mastodon, kể cả trong cài đặt tài khoản bạn chọn cho phép.", "privacy.unlisted.additional": "Công khai, nhưng tút sẽ không hiện trong bảng tin, hashtag, khám phá hoặc tìm kiếm Mastodon, kể cả trong cài đặt tài khoản bạn chọn cho phép.",
"privacy.unlisted.long": "Ẩn khỏi kết quả tìm kiếm, xu hướng và ng thời gian công khai của Mastodon", "privacy.unlisted.long": "Ẩn khỏi kết quả tìm kiếm, xu hướng và bảng tin công khai",
"privacy.unlisted.short": "Hạn chế", "privacy.unlisted.short": "Hạn chế",
"privacy_policy.last_updated": "Cập nhật lần cuối {date}", "privacy_policy.last_updated": "Cập nhật lần cuối {date}",
"privacy_policy.title": "Chính sách bảo mật", "privacy_policy.title": "Chính sách bảo mật",
@@ -1321,6 +1322,6 @@
"visibility_modal.quote_followers": "Chỉ người theo dõi", "visibility_modal.quote_followers": "Chỉ người theo dõi",
"visibility_modal.quote_label": "Ai có thể trích dẫn", "visibility_modal.quote_label": "Ai có thể trích dẫn",
"visibility_modal.quote_nobody": "Chỉ tôi", "visibility_modal.quote_nobody": "Chỉ tôi",
"visibility_modal.quote_public": "Bất cứ ai", "visibility_modal.quote_public": "Bất kỳ ai",
"visibility_modal.save": "Lưu" "visibility_modal.save": "Lưu"
} }

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, other {# 个账号}}", "collections.account_count": "{count, plural, other {# 个账号}}",
"collections.accounts.empty_description": "添加你关注的账号,最多 {count} 个", "collections.accounts.empty_description": "添加你关注的账号,最多 {count} 个",
"collections.accounts.empty_title": "收藏列表为空", "collections.accounts.empty_title": "收藏列表为空",
"collections.by_account": "由 {account_handle}",
"collections.collection_description": "说明", "collections.collection_description": "说明",
"collections.collection_language": "语言", "collections.collection_language": "语言",
"collections.collection_language_none": "无", "collections.collection_language_none": "无",

View File

@@ -359,6 +359,7 @@
"collections.account_count": "{count, plural, other {# 個帳號}}", "collections.account_count": "{count, plural, other {# 個帳號}}",
"collections.accounts.empty_description": "加入最多 {count} 個您跟隨之帳號", "collections.accounts.empty_description": "加入最多 {count} 個您跟隨之帳號",
"collections.accounts.empty_title": "此收藏名單是空的", "collections.accounts.empty_title": "此收藏名單是空的",
"collections.by_account": "來自 {account_handle}",
"collections.collection_description": "說明", "collections.collection_description": "說明",
"collections.collection_language": "語言", "collections.collection_language": "語言",
"collections.collection_language_none": "無", "collections.collection_language_none": "無",

View File

@@ -2011,7 +2011,15 @@ body > [data-popper-placement] {
} }
.account { .account {
padding: 16px; --account-outer-spacing: 16px;
--account-name-color: var(--color-text-primary);
--account-name-size: 14px;
--account-handle-color: var(--color-text-secondary);
--account-handle-size: 14px;
--account-bio-color: var(--color-text-secondary);
--account-bio-size: 14px;
padding: var(--account-outer-spacing);
// Using :where keeps specificity low, allowing for existing // Using :where keeps specificity low, allowing for existing
// .account overrides to still apply // .account overrides to still apply
@@ -2024,10 +2032,10 @@ body > [data-popper-placement] {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
color: var(--color-text-secondary); color: var(--account-handle-color);
overflow: hidden; overflow: hidden;
text-decoration: none; text-decoration: none;
font-size: 14px; font-size: var(--account-handle-size);
.display-name { .display-name {
margin-bottom: 4px; margin-bottom: 4px;
@@ -2035,7 +2043,8 @@ body > [data-popper-placement] {
.display-name strong { .display-name strong {
display: inline; display: inline;
color: var(--color-text-primary); font-size: var(--account-name-size);
color: var(--account-name-color);
} }
} }
@@ -2173,7 +2182,7 @@ body > [data-popper-placement] {
} }
&__note { &__note {
font-size: 14px; font-size: var(--account-bio-size);
font-weight: 400; font-weight: 400;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -2182,7 +2191,7 @@ body > [data-popper-placement] {
-webkit-line-clamp: 1; -webkit-line-clamp: 1;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
margin-top: 10px; margin-top: 10px;
color: var(--color-text-secondary); color: var(--account-bio-color);
&--missing { &--missing {
color: var(--color-text-tertiary); color: var(--color-text-tertiary);
@@ -10400,9 +10409,13 @@ noscript {
padding: 0 4px; padding: 0 4px;
&:hover, &:hover,
&:focus,
&:active { &:active {
background: var(--color-bg-brand-softest); background: rgb(from var(--color-text-inverted) r g b / 10%);
}
&:focus-visible {
outline: 2px solid var(--color-text-brand-on-inverted);
outline-offset: 2px;
} }
} }

View File

@@ -18,9 +18,9 @@
--color-text-brand-on-inverted: var(--color-indigo-600); // legacy --color-text-brand-on-inverted: var(--color-indigo-600); // legacy
--color-text-error: var(--color-red-300); --color-text-error: var(--color-red-300);
--color-text-on-error-base: var(--color-white); --color-text-on-error-base: var(--color-white);
--color-text-warning: var(--color-yellow-400); // legacy --color-text-warning: var(--color-yellow-400);
--color-text-on-warning-base: var(--color-white); --color-text-on-warning-base: var(--color-white);
--color-text-success: var(--color-green-400); // legacy --color-text-success: var(--color-green-400);
--color-text-on-success-base: var(--color-white); --color-text-on-success-base: var(--color-white);
--color-text-disabled: var(--color-grey-600); // legacy --color-text-disabled: var(--color-grey-600); // legacy
--color-text-on-disabled: var(--color-grey-400); // legacy --color-text-on-disabled: var(--color-grey-400); // legacy

View File

@@ -18,9 +18,9 @@
--color-text-brand-on-inverted: var(--color-indigo-400); // legacy --color-text-brand-on-inverted: var(--color-indigo-400); // legacy
--color-text-error: var(--color-red-800); --color-text-error: var(--color-red-800);
--color-text-on-error-base: var(--color-white); --color-text-on-error-base: var(--color-white);
--color-text-warning: var(--color-yellow-600); // legacy --color-text-warning: var(--color-yellow-700);
--color-text-on-warning-base: var(--color-white); --color-text-on-warning-base: var(--color-white);
--color-text-success: var(--color-green-600); // legacy --color-text-success: var(--color-green-700);
--color-text-on-success-base: var(--color-white); --color-text-on-success-base: var(--color-white);
--color-text-disabled: var(--color-grey-300); // legacy --color-text-disabled: var(--color-grey-300); // legacy
--color-text-on-disabled: var(--color-grey-200); // legacy --color-text-on-disabled: var(--color-grey-200); // legacy

View File

@@ -32,6 +32,10 @@ class AccountRelationshipSeveranceEvent < ApplicationRecord
before_create :set_relationships_count! before_create :set_relationships_count!
def identifier
"#{target_name}-#{created_at.to_date.iso8601}"
end
private private
def set_relationships_count! def set_relationships_count!

View File

@@ -792,6 +792,7 @@ be:
categories: categories:
administration: Адміністрацыя administration: Адміністрацыя
devops: DevOps devops: DevOps
email: Эл. пошта
invites: Запрашэнні invites: Запрашэнні
moderation: Мадэрацыя moderation: Мадэрацыя
special: Спецыяльны special: Спецыяльны
@@ -822,6 +823,8 @@ be:
manage_blocks_description: Дазваляе блакіраваць пэўных пастаўшчыкоў паслуг электроннай пошты і IP адрасы manage_blocks_description: Дазваляе блакіраваць пэўных пастаўшчыкоў паслуг электроннай пошты і IP адрасы
manage_custom_emojis: Кіраванне адвольнымі эмодзі manage_custom_emojis: Кіраванне адвольнымі эмодзі
manage_custom_emojis_description: Дазваляе кіраваць адвольнымі эмодзі на серверы manage_custom_emojis_description: Дазваляе кіраваць адвольнымі эмодзі на серверы
manage_email_subscriptions: Наладзіць падпіскі па электроннай пошце
manage_email_subscriptions_description: Дазвольце карыстальнікам падпісвацца на карыстальнікаў з гэтым дазволам праз электронную пошту
manage_federation: Кіраваць федэрацыяй manage_federation: Кіраваць федэрацыяй
manage_federation_description: Дазваляе карыстальнікам блакіраваць або дазваляць аб'яднанне з іншымі даменамі і кантраляваць магчымасць дастаўкі manage_federation_description: Дазваляе карыстальнікам блакіраваць або дазваляць аб'яднанне з іншымі даменамі і кантраляваць магчымасць дастаўкі
manage_invites: Кіраванне запрашэннямі manage_invites: Кіраванне запрашэннямі
@@ -1460,6 +1463,47 @@ be:
basic_information: Асноўная інфармацыя basic_information: Асноўная інфармацыя
hint_html: "<strong>Наладзьце тое, што людзі будуць бачыць у вашым профілі і побач з вашымі паведамленнямі.</strong> Іншыя людзі з большай верагоднасцю будуць сачыць і ўзаемадзейнічаць з вамі, калі ў вас ёсць запоўнены профіль і фота профілю." hint_html: "<strong>Наладзьце тое, што людзі будуць бачыць у вашым профілі і побач з вашымі паведамленнямі.</strong> Іншыя людзі з большай верагоднасцю будуць сачыць і ўзаемадзейнічаць з вамі, калі ў вас ёсць запоўнены профіль і фота профілю."
other: Іншае other: Іншае
redesign_body: Рэдагаванне профілю цяпер даступнае наўпрост са старонкі профілю.
redesign_button: Перайсці туды
redesign_title: Адбыліся змены ў рэдагаванні профілю
email_subscription_mailer:
confirmation:
action: Пацвердзіць адрас электроннай пошты
instructions_to_confirm: Пацвердзіце, што хочаце атрымліваць электронныя лісты ад %{name} (@%{acct}), калі ён (яна) робіць новыя допісы.
instructions_to_ignore: Калі Вы няўпэўненыя ў тым, чаму Вы атрымалі гэты ліст, можаце выдаліць яго. Вы не будзеце падпісаныя, калі не клікніце па спасылцы вышэй.
subject: Пацвердзіце свой адрас электроннай пошты
title: Атрымліваць абнаўленні па электроннай пошце ад %{name}?
notification:
create_account: Стварыць уліковы запіс Mastodon
footer:
privacy_html: Электронныя лісты адпраўляюцца з %{domain}, сервера Mastodon. Каб зразумець, як гэты сервер апрацоўвае Вашыя асабістыя даныя, звярніцеся да <a href="%{privacy_policy_path}">Палітыкі прыватнасці</a>.
reason_for_email_html: Вы атрымалі гэты ліст, таму што пагадзіліся на абнаўленні праз электронную пошту ад %{name}. Не хочаце атрымліваць гэтыя лісты? <a href="%{unsubscribe_path}">Адпішыцеся</a>
interact_with_this_post:
few: Узаемадзейнічайце з гэтымі допісамі і знайдзіце іншыя, падобныя да іх.
many: Узаемадзейнічайце з гэтымі допісамі і знайдзіце іншыя, падобныя да іх.
one: Узаемадзейнічайце з гэтым допісам і знайдзіце іншыя, падобныя да яго.
other: Узаемадзейнічайце з гэтымі допісамі і знайдзіце іншыя, падобныя да іх.
subject:
few: Новыя допісы ад %{name}
many: Новыя допісы ад %{name}
one: 'Новы допіс: "%{excerpt}"'
other: Новыя допісы ад %{name}
title:
few: Новыя допісы ад %{name}
many: Новыя допісы ад %{name}
one: 'Новы допіс: "%{excerpt}"'
other: Новыя допісы ад %{name}
email_subscriptions:
active: Актыўная
confirmations:
show:
changed_your_mind: Перадумалі?
success_html: Вы цяпер пачняце атрымліваць электронныя лісты, калі %{name} будзе рабіць новыя допісы. Дадайце %{sender} у свае кантакты, каб гэтыя допісы не траплялі ў папку са спамам.
title: Вы падпісаліся праз эл. пошту
unsubscribe: Адпісацца
inactive: Неактыўная
status: Стан
subscribers: Падпісчыкі па эл.пошце
emoji_styles: emoji_styles:
auto: Аўтаматычны auto: Аўтаматычны
native: Мясцовы native: Мясцовы
@@ -1871,6 +1915,8 @@ be:
posting_defaults: Публікаваць па змаўчанні posting_defaults: Публікаваць па змаўчанні
public_timelines: Публічныя стужкі public_timelines: Публічныя стужкі
privacy: privacy:
email_subscriptions: Дасылаць допісы праз электронную пошту
email_subscriptions_hint_html: Дадайце форму падпіскі праз электронную пошту, якую будуць бачыць карыстальнікі, што не ўвайшлі. Калі наведвальнік увядзе свой адрас электроннай пошты і дасць згоду, Mastodon будзе дасылаць яму электронныя лісты аб абнаўленнях у Вашых публічных допісах.
hint_html: "<strong>Наладзьце тое, якім чынам ваш профіль і вашы паведамленні могуць быць знойдзеныя.</strong> Розныя функцыі ў Mastodon могуць дапамагчы вам ахапіць шырэйшую аўдыторыю. Удзяліце час гэтым наладам, каб пераканацца, што яны падыходзяць вам." hint_html: "<strong>Наладзьце тое, якім чынам ваш профіль і вашы паведамленні могуць быць знойдзеныя.</strong> Розныя функцыі ў Mastodon могуць дапамагчы вам ахапіць шырэйшую аўдыторыю. Удзяліце час гэтым наладам, каб пераканацца, што яны падыходзяць вам."
privacy: Прыватнасць privacy: Прыватнасць
privacy_hint_html: Кантралюйце, колькі інфармацыі вы хочаце раскрыць для карысці іншых. Людзі адкрываюць для сябе цікавыя профілі і класныя праграмы, праглядаючы допісы іншых людзей і даведваючыся, з якіх праграм яны пішуць, але, магчыма, вы аддаеце перавагу трымаць гэта ў таямніцы. privacy_hint_html: Кантралюйце, колькі інфармацыі вы хочаце раскрыць для карысці іншых. Людзі адкрываюць для сябе цікавыя профілі і класныя праграмы, праглядаючы допісы іншых людзей і даведваючыся, з якіх праграм яны пішуць, але, магчыма, вы аддаеце перавагу трымаць гэта ў таямніцы.
@@ -2142,6 +2188,28 @@ be:
resume_app_authorization: Працягнуць аўтарызацыю resume_app_authorization: Працягнуць аўтарызацыю
role_requirement: "%{domain} патрабуе, каб Вы ўключылі двухфактарную аўтэнтыфікацыю для таго, каб Вы маглі карыстацца Mastodon." role_requirement: "%{domain} патрабуе, каб Вы ўключылі двухфактарную аўтэнтыфікацыю для таго, каб Вы маглі карыстацца Mastodon."
webauthn: Ключы бяспекі webauthn: Ключы бяспекі
unsubscriptions:
create:
action: Перайсці на хатнюю старонку сервера
email_subscription:
confirmation_html: Вы больш не атрымаеце электронныя лісты ад %{name}.
title: Вы адпісаліся
user:
confirmation_html: Вы больш не атрымаеце %{type} з Mastodon на %{domain}.
notification_emails:
favourite: апавяшчэнні на пошту пра ўпадабанні
follow: апавяшчэнні на пошту пра падпіскі
follow_request: апавяшчэнні на пошту пра запыты на падпіску
mention: апавяшчэнні на пошту пра згадванні
reblog: апавяшчэнні на пошту пра пашырэнні
show:
action: Адпісацца
email_subscription:
confirmation_html: Вы перастанеце атрымліваць электронныя лісты, калі гэты ўліковы запіс будзе рабіць новыя допісы.
title: Адпісацца ад %{name}?
user:
confirmation_html: Вы перастанеце атрымліваць %{type} з Mastodon на %{domain}.
title: Адпісацца ад %{type}?
user_mailer: user_mailer:
announcement_published: announcement_published:
description: 'Аб''ява ад адміністратараў %{domain}:' description: 'Аб''ява ад адміністратараў %{domain}:'

View File

@@ -1421,6 +1421,9 @@ da:
basic_information: Oplysninger basic_information: Oplysninger
hint_html: "<strong>Tilpas, hvad folk ser på din offentlige profil og ved siden af dine indlæg.</strong> Andre personer er mere tilbøjelige til at følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede." hint_html: "<strong>Tilpas, hvad folk ser på din offentlige profil og ved siden af dine indlæg.</strong> Andre personer er mere tilbøjelige til at følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede."
other: Andre other: Andre
redesign_body: Profilredigering kan nu tilgås direkte fra profilsiden.
redesign_button: Gå dertil
redesign_title: Der er en ny måde at redigere sin profil på
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Bekræft e-mailadresse action: Bekræft e-mailadresse

View File

@@ -1420,6 +1420,9 @@ de:
basic_information: Allgemeine Informationen basic_information: Allgemeine Informationen
hint_html: "<strong>Bestimme, was andere auf deinem öffentlichen Profil und neben deinen Beiträgen sehen können.</strong> Wenn du ein Profilbild festlegst und dein Profil vervollständigst, werden andere eher mit dir interagieren und dir folgen." hint_html: "<strong>Bestimme, was andere auf deinem öffentlichen Profil und neben deinen Beiträgen sehen können.</strong> Wenn du ein Profilbild festlegst und dein Profil vervollständigst, werden andere eher mit dir interagieren und dir folgen."
other: Andere other: Andere
redesign_body: Das Profil kann jetzt direkt über die Profilseite angepasst werden.
redesign_button: Loslegen
redesign_title: Es gibt eine brandneue Möglichkeit, das Profil zu bearbeiten
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: E-Mail-Adresse bestätigen action: E-Mail-Adresse bestätigen

View File

@@ -1421,6 +1421,9 @@ el:
basic_information: Βασικές πληροφορίες basic_information: Βασικές πληροφορίες
hint_html: "<strong>Προσάρμοσε τί βλέπουν άτομα στο δημόσιο προφίλ σου και δίπλα στις αναρτήσεις σου.</strong> Είναι πιο πιθανό άλλα άτομα να σε ακολουθήσουν πίσω και να αλληλεπιδράσουν μαζί σου αν έχεις ολοκληρωμένο προφίλ και εικόνα προφίλ." hint_html: "<strong>Προσάρμοσε τί βλέπουν άτομα στο δημόσιο προφίλ σου και δίπλα στις αναρτήσεις σου.</strong> Είναι πιο πιθανό άλλα άτομα να σε ακολουθήσουν πίσω και να αλληλεπιδράσουν μαζί σου αν έχεις ολοκληρωμένο προφίλ και εικόνα προφίλ."
other: Άλλο other: Άλλο
redesign_body: Η επεξεργασία προφίλ μπορεί τώρα να προσεγγιστεί απευθείας από τη σελίδα του προφίλ.
redesign_button: Πηγαίνετε εκεί
redesign_title: Υπάρχει μια νέα εμπειρία επεξεργασίας προφίλ
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Επιβεβαιώστε τη διεύθυνση email action: Επιβεβαιώστε τη διεύθυνση email

View File

@@ -1421,6 +1421,9 @@ es-AR:
basic_information: Información básica basic_information: Información básica
hint_html: "<strong>Personalizá lo que la gente ve en tu perfil público y junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen con vos cuando tengas un perfil completo y una foto de perfil." hint_html: "<strong>Personalizá lo que la gente ve en tu perfil público y junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen con vos cuando tengas un perfil completo y una foto de perfil."
other: Otros other: Otros
redesign_body: Ahora podés acceder a la edición del perfil desde la propia página de perfil.
redesign_button: Ir allí
redesign_title: Hay una nueva experiencia de edición de perfil
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Confirmar dirección de correo electrónico action: Confirmar dirección de correo electrónico

View File

@@ -1421,6 +1421,9 @@ es-MX:
basic_information: Información básica basic_information: Información básica
hint_html: "<strong>Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen contigo cuando completes tu perfil y agregues una foto." hint_html: "<strong>Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen contigo cuando completes tu perfil y agregues una foto."
other: Otro other: Otro
redesign_body: Ahora puede acceder a la edición del perfil desde la propia página del perfil.
redesign_button: Llévame allí
redesign_title: Hay una nueva experiencia de edición de perfil
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Confirmar dirección de correo electrónico action: Confirmar dirección de correo electrónico

View File

@@ -1421,6 +1421,9 @@ es:
basic_information: Información básica basic_information: Información básica
hint_html: "<strong>Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen contigo cuando completas tu perfil y foto." hint_html: "<strong>Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen contigo cuando completas tu perfil y foto."
other: Otros other: Otros
redesign_body: Ahora puedes acceder a la edición del perfil desde la propia página de perfil.
redesign_button: Llévame allí
redesign_title: Hay una nueva experiencia de edición de perfil
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Confirmar dirección de correo electrónico action: Confirmar dirección de correo electrónico

View File

@@ -807,6 +807,7 @@ ga:
categories: categories:
administration: Riar administration: Riar
devops: DevOps devops: DevOps
email: Ríomhphost
invites: Cuirí invites: Cuirí
moderation: Measarthacht moderation: Measarthacht
special: Speisialta special: Speisialta
@@ -838,6 +839,8 @@ ga:
manage_blocks_description: Ligeann sé d'úsáideoirí bac a chur ar sholáthraithe ríomhphoist agus seoltaí IP manage_blocks_description: Ligeann sé d'úsáideoirí bac a chur ar sholáthraithe ríomhphoist agus seoltaí IP
manage_custom_emojis: Bainistigh Emojis Saincheaptha manage_custom_emojis: Bainistigh Emojis Saincheaptha
manage_custom_emojis_description: Ligeann sé d'úsáideoirí emojis saincheaptha a bhainistiú ar an bhfreastalaí manage_custom_emojis_description: Ligeann sé d'úsáideoirí emojis saincheaptha a bhainistiú ar an bhfreastalaí
manage_email_subscriptions: Bainistigh Síntiúis Ríomhphoist
manage_email_subscriptions_description: Ceadaigh dúsáideoirí liostáil le húsáideoirí leis an gcead seo trí ríomhphost
manage_federation: Cónaidhm a bhainistiú manage_federation: Cónaidhm a bhainistiú
manage_federation_description: Ligeann sé dúsáideoirí cónaidhm a bhlocáil nó a cheadú le fearainn eile, agus inseachadacht a rialú manage_federation_description: Ligeann sé dúsáideoirí cónaidhm a bhlocáil nó a cheadú le fearainn eile, agus inseachadacht a rialú
manage_invites: Bainistigh Cuirí manage_invites: Bainistigh Cuirí
@@ -1483,6 +1486,50 @@ ga:
basic_information: Eolas bunúsach basic_information: Eolas bunúsach
hint_html: "<strong>Saincheap a bhfeiceann daoine ar do phróifíl phoiblí agus in aice le do phostálacha.</strong> Is dóichí go leanfaidh daoine eile ar ais tú agus go n-idirghníomhóidh siad leat nuair a bhíonn próifíl líonta agus pictiúr próifíle agat." hint_html: "<strong>Saincheap a bhfeiceann daoine ar do phróifíl phoiblí agus in aice le do phostálacha.</strong> Is dóichí go leanfaidh daoine eile ar ais tú agus go n-idirghníomhóidh siad leat nuair a bhíonn próifíl líonta agus pictiúr próifíle agat."
other: Eile other: Eile
redesign_body: Is féidir rochtain a fháil ar eagarthóireacht próifíle go díreach ón leathanach próifíle anois.
redesign_button: Téigh ann
redesign_title: Tá taithí nua eagarthóireachta próifíle ann
email_subscription_mailer:
confirmation:
action: Deimhnigh an seoladh ríomhphoist
instructions_to_confirm: Deimhnigh gur mhaith leat ríomhphoist a fháil ó %{name} (@%{acct}) nuair a fhoilsíonn siad poist nua.
instructions_to_ignore: Mura bhfuil tú cinnte cén fáth ar fuair tú an ríomhphost seo, is féidir leat é a scriosadh. Ní bheidh tú síntiúsáilte mura gcliceálann tú ar an nasc thuas.
subject: Deimhnigh do sheoladh ríomhphoist
title: Nuashonruithe ríomhphoist a fháil ó %{name}?
notification:
create_account: Cruthaigh cuntas Mastodon
footer:
privacy_html: Seoltar ríomhphoist ó %{domain}, freastalaí atá faoi thiomáint ag Mastodon. Chun tuiscint a fháil ar an gcaoi a bpróiseálann an freastalaí seo do shonraí pearsanta, féach ar an <a href="%{privacy_policy_path}">Polasaí Príobháideachais</a>.
reason_for_email_html: Tá an ríomhphost seo á fháil agat mar gur roghnaigh tú nuashonruithe ríomhphoist a fháil ó %{name}. Nach mian leat na ríomhphoist seo a fháil? <a href="%{unsubscribe_path}">Díliostáil</a>
interact_with_this_post:
few: Idirghníomhaigh leis na poist seo agus faigh amach tuilleadh.
many: Idirghníomhaigh leis na poist seo agus faigh amach tuilleadh.
one: Idirghníomhaigh leis an bpost seo agus faigh amach níos mó cosúil leis.
other: Idirghníomhaigh leis na poist seo agus faigh amach tuilleadh.
two: Idirghníomhaigh leis na poist seo agus faigh amach tuilleadh.
subject:
few: Poist nua ó %{name}
many: Poist nua ó %{name}
one: 'Post nua: "%{excerpt}"'
other: Poist nua ó %{name}
two: Poist nua ó %{name}
title:
few: Poist nua ó %{name}
many: Poist nua ó %{name}
one: 'Post nua: "%{excerpt}"'
other: Poist nua ó %{name}
two: Poist nua ó %{name}
email_subscriptions:
active: Gníomhach
confirmations:
show:
changed_your_mind: Ar athraigh tú dintinn?
success_html: Tosóidh tú ag fáil ríomhphoist anois nuair a fhoilseoidh %{name} poist nua. Cuir %{sender} le do theagmhálaithe ionas nach gcríochnóidh na poist seo i do fhillteán Turscair.
title: Tá tú cláraithe
unsubscribe: Díliostáil
inactive: Neamhghníomhach
status: Stádas
subscribers: Síntiúsóirí
emoji_styles: emoji_styles:
auto: Uath auto: Uath
native: Dúchasach native: Dúchasach
@@ -1914,6 +1961,8 @@ ga:
posting_defaults: Réamhshocruithe á bpostáil posting_defaults: Réamhshocruithe á bpostáil
public_timelines: Amlínte poiblí public_timelines: Amlínte poiblí
privacy: privacy:
email_subscriptions: Seol poist trí ríomhphost
email_subscriptions_hint_html: Cuir foirm chlárúcháin ríomhphoist le do phróifíl a thaispeánfar dúsáideoirí atá logáilte amach. Nuair a chuireann cuairteoirí a seoladh ríomhphoist isteach agus a roghnaíonn siad isteach, seolfaidh Mastodon nuashonruithe ríomhphoist chugat le haghaidh do phoist phoiblí.
hint_html: "<strong>Saincheap conas is mian leat do phróifíl agus do phostálacha a fháil.</strong> Is féidir le gnéithe éagsúla i Mastodon cabhrú leat teacht ar lucht féachana níos leithne nuair atá tú cumasaithe. Tóg nóiméad chun athbhreithniú a dhéanamh ar na socruithe seo chun a chinntiú go n-oireann siad do do chás úsáide." hint_html: "<strong>Saincheap conas is mian leat do phróifíl agus do phostálacha a fháil.</strong> Is féidir le gnéithe éagsúla i Mastodon cabhrú leat teacht ar lucht féachana níos leithne nuair atá tú cumasaithe. Tóg nóiméad chun athbhreithniú a dhéanamh ar na socruithe seo chun a chinntiú go n-oireann siad do do chás úsáide."
privacy: Príobháideacht privacy: Príobháideacht
privacy_hint_html: Rialú ar an méid is mian leat a nochtadh ar mhaithe le daoine eile. Aimsíonn daoine próifílí suimiúla agus aipeanna fionnuara trí na haipeanna seo a leanas a bhrabhsáil agus a fheiceáil cé na haipeanna a bpostálann siad, ach bfhéidir gurbh fhearr leat é a choinneáil faoi cheilt. privacy_hint_html: Rialú ar an méid is mian leat a nochtadh ar mhaithe le daoine eile. Aimsíonn daoine próifílí suimiúla agus aipeanna fionnuara trí na haipeanna seo a leanas a bhrabhsáil agus a fheiceáil cé na haipeanna a bpostálann siad, ach bfhéidir gurbh fhearr leat é a choinneáil faoi cheilt.
@@ -2189,6 +2238,28 @@ ga:
resume_app_authorization: Údarú iarratais atosú resume_app_authorization: Údarú iarratais atosú
role_requirement: Éilíonn %{domain} ort Fíordheimhniú Dhá Fhachtóir a shocrú sula bhféadfaidh tú Mastodon a úsáid. role_requirement: Éilíonn %{domain} ort Fíordheimhniú Dhá Fhachtóir a shocrú sula bhféadfaidh tú Mastodon a úsáid.
webauthn: Eochracha slándála webauthn: Eochracha slándála
unsubscriptions:
create:
action: Téigh go dtí leathanach baile an fhreastalaí
email_subscription:
confirmation_html: Ní bhfaighidh tú ríomhphoist ó %{name} a thuilleadh.
title: Tá tú díliostáilte
user:
confirmation_html: Ní bhfaighidh tú %{type} ó Mastodon ar %{domain} a thuilleadh.
notification_emails:
favourite: ríomhphoist fógra is fearr leat
follow: lean ríomhphoist fógra
follow_request: ríomhphoist iarratais leantach
mention: ríomhphoist fógraí tráchta
reblog: ríomhphoist fógraí a threisiú
show:
action: Díliostáil
email_subscription:
confirmation_html: Ní bheidh ríomhphoist á bhfáil agat a thuilleadh nuair a fhoilseoidh an cuntas seo poist nua.
title: Díliostáil ó %{name}?
user:
confirmation_html: Scoirfidh tú de %{type} a fháil ó Mastodon ar %{domain}.
title: Díliostáil ó %{type}?
user_mailer: user_mailer:
announcement_published: announcement_published:
description: 'Tá riarthóirí %{domain} ag déanamh fógra:' description: 'Tá riarthóirí %{domain} ag déanamh fógra:'

View File

@@ -791,6 +791,8 @@ gl:
manage_blocks_description: Permite que as usuarias bloqueen provedoras de correo e enderezos IP manage_blocks_description: Permite que as usuarias bloqueen provedoras de correo e enderezos IP
manage_custom_emojis: Xestionar Emojis personalizados manage_custom_emojis: Xestionar Emojis personalizados
manage_custom_emojis_description: Permite xestionar os emojis personalizados do servidor manage_custom_emojis_description: Permite xestionar os emojis personalizados do servidor
manage_email_subscriptions: Xestionar subscripcións por correo
manage_email_subscriptions_description: Permitir que as usuarias se subscriban por correo a outras usuarias con este permiso
manage_federation: Xestionar a federación manage_federation: Xestionar a federación
manage_federation_description: Permite bloquear ou permitir a federación con outros dominios, e controlar as entregas manage_federation_description: Permite bloquear ou permitir a federación con outros dominios, e controlar as entregas
manage_invites: Xestionar Convites manage_invites: Xestionar Convites
@@ -1419,6 +1421,41 @@ gl:
basic_information: Información básica basic_information: Información básica
hint_html: "<strong>Personaliza o que van ver no teu perfil público e ao lado das túas publicacións.</strong> As outras persoas estarán máis animadas a seguirte e interactuar contigo se engades algún dato sobre ti así como unha imaxe de perfil." hint_html: "<strong>Personaliza o que van ver no teu perfil público e ao lado das túas publicacións.</strong> As outras persoas estarán máis animadas a seguirte e interactuar contigo se engades algún dato sobre ti así como unha imaxe de perfil."
other: Outros other: Outros
redesign_body: Agora podes acceder á edición do perfil directamente desde a páxina do perfil.
redesign_button: Ir á edición
redesign_title: Hai novidades no xeito en que podes editar o perfil
email_subscription_mailer:
confirmation:
action: Confirmar enderezo de correo
instructions_to_confirm: Confirma que queres recibir correos de %{name} (@%{acct}) cando publique novas publicacións.
instructions_to_ignore: Se non sabes por que recibiches este correo, podes eliminalo. Non te vas subscribir se non premes na ligazón de arriba.
subject: Confirma o teu enderezo de correo
title: Queres obter actualizacións de %{name} por correo?
notification:
create_account: Crear unha conta Mastodon
footer:
privacy_html: Os correos envíanse desde %{domain}, un servidor de Mastodon. Para comprender como este servidor procesa os teus datos persoais le a <a href="%{privacy_policy_path}">Directiva de Privacidade</a>.
reason_for_email_html: Recibes este correo porque te subscribiches para recibir actualizacións por correo de %{name}. Non queres recibir estes correos? <a href="%{unsubscribe_path}">Retira a subscrición</a>
interact_with_this_post:
one: Interactúa con esta publicación e descubre máis coma ela.
other: Interactúa con estas publicacións e descubre máis coma elas.
subject:
one: 'Nova publicación: «%{excerpt}»'
other: Novas publicacións desde %{name}
title:
one: 'Nova publicación: «%{excerpt}»'
other: Novas publicacións desde %{name}
email_subscriptions:
active: Activa
confirmations:
show:
changed_your_mind: Cambiaches de idea?
success_html: Vas comezar a recibir correos cando %{name} publique novas publicacións. Engade %{sender} á túa libreta de enderezos para que os correos non vaian directamente ao cartafol de Spam.
title: Subscribícheste
unsubscribe: Anular subscrición
inactive: Inactiva
status: Estado
subscribers: Subscritoras
emoji_styles: emoji_styles:
auto: Auto auto: Auto
native: Nativo native: Nativo
@@ -1790,6 +1827,8 @@ gl:
posting_defaults: Valores por defecto posting_defaults: Valores por defecto
public_timelines: Cronoloxías públicas public_timelines: Cronoloxías públicas
privacy: privacy:
email_subscriptions: Enviar publicacións por coreo
email_subscriptions_hint_html: Engade un formulario de subscrición por correo para mostrar ás usuarias sen sesión iniciada. Ao escribir o seu enderezo de correo e así indicalo, Mastodon vaille enviar actualizacións por correo das túas publicacións públicas.
hint_html: "<strong>Personaliza o xeito no que queres que se atope o teu perfil e publicacións.</strong> Mastodon ten variedade de ferramentas para axudarche a acadar unha audiencia maior. Dedica un minuto a revisalas e confirma que se axustan ao teu caso persoal." hint_html: "<strong>Personaliza o xeito no que queres que se atope o teu perfil e publicacións.</strong> Mastodon ten variedade de ferramentas para axudarche a acadar unha audiencia maior. Dedica un minuto a revisalas e confirma que se axustan ao teu caso persoal."
privacy: Privacidade privacy: Privacidade
privacy_hint_html: Controla canto queres mostrar ás demais persoas. As usuarias descubren perfís interesantes e apps estupendas mirando a quen seguen outras persoas e vendo as apps desde as que publican, pero ti poderías querer non mostralas. privacy_hint_html: Controla canto queres mostrar ás demais persoas. As usuarias descubren perfís interesantes e apps estupendas mirando a quen seguen outras persoas e vendo as apps desde as que publican, pero ti poderías querer non mostralas.
@@ -2053,6 +2092,28 @@ gl:
resume_app_authorization: Retomar autorización da aplicación resume_app_authorization: Retomar autorización da aplicación
role_requirement: "%{domain} require que configures un Segundo Factor de Autenticación para poder usar Mastodon" role_requirement: "%{domain} require que configures un Segundo Factor de Autenticación para poder usar Mastodon"
webauthn: Chaves de seguridade webauthn: Chaves de seguridade
unsubscriptions:
create:
action: Ir á páxina de inicio do servidor
email_subscription:
confirmation_html: Xa non vas seguir recibindo correos desde %{name}.
title: Retiraches a subscrición
user:
confirmation_html: Non vas recibir %{type} de Mastodon en %{domain}.
notification_emails:
favourite: correos de notificación de favorecementos
follow: correos de notificación de seguimentos
follow_request: correos de solicitudes de seguimento
mention: correos de notificación de mencións
reblog: correos de notificación de promocións
show:
action: Anular subscrición
email_subscription:
confirmation_html: Vas deixar de recibir correos cando esta conta publique novas publicacións.
title: Dar de baixa a subscrición a %{name}?
user:
confirmation_html: Vas deixar de recibir %{type} de Mastodon en %{domain}.
title: Dar de baixa a subscrición a %{type}?
user_mailer: user_mailer:
announcement_published: announcement_published:
description: A administración de %{domain} publicou un anuncio description: A administración de %{domain} publicou un anuncio

View File

@@ -762,6 +762,7 @@ hu:
categories: categories:
administration: Adminisztráció administration: Adminisztráció
devops: DevOps devops: DevOps
email: E-mail-cím
invites: Meghívások invites: Meghívások
moderation: Moderáció moderation: Moderáció
special: Speciális special: Speciális
@@ -790,6 +791,8 @@ hu:
manage_blocks_description: Lehetővé teszi, hogy a felhasználók e-mail-szolgáltatókat és IP-címeket tiltsanak le manage_blocks_description: Lehetővé teszi, hogy a felhasználók e-mail-szolgáltatókat és IP-címeket tiltsanak le
manage_custom_emojis: Egyedi emodzsik kezelése manage_custom_emojis: Egyedi emodzsik kezelése
manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyéni emodzsiait kezelje manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyéni emodzsiait kezelje
manage_email_subscriptions: E-mail-feliratkozások kezelése
manage_email_subscriptions_description: Engedélyezés, hogy a felhasználók e-maillel feliratkozzanak az ilyen jogosultságú felhasználókra
manage_federation: Föderáció kezelése manage_federation: Föderáció kezelése
manage_federation_description: Lehetővé teszi a felhasználó számára, hogy más domainnekkel való föderációt engedélyezzen vagy letiltson, illetve szabályozza a kézbesítést manage_federation_description: Lehetővé teszi a felhasználó számára, hogy más domainnekkel való föderációt engedélyezzen vagy letiltson, illetve szabályozza a kézbesítést
manage_invites: Meghívások kezelése manage_invites: Meghívások kezelése
@@ -1418,6 +1421,30 @@ hu:
basic_information: Általános információk basic_information: Általános információk
hint_html: "<strong>Tedd egyedivé, mi látnak mások a profilodon és a bejegyzéseid mellett.</strong> Mások nagyobb eséllyel követnek vissza és lépnek veled kapcsolatba, ha van kitöltött profilod és profilképed." hint_html: "<strong>Tedd egyedivé, mi látnak mások a profilodon és a bejegyzéseid mellett.</strong> Mások nagyobb eséllyel követnek vissza és lépnek veled kapcsolatba, ha van kitöltött profilod és profilképed."
other: Egyéb other: Egyéb
redesign_body: A profil szerkesztése most már közvetlenül elérhető a profiloldalon.
redesign_button: Ugrás oda
redesign_title: Az új profilszerkesztési élmény
email_subscription_mailer:
confirmation:
action: E-mail-cím megerősítése
subject: E-mail-cím megerősítése
notification:
subject:
one: 'Új bejegyzés: „%{excerpt}”'
other: 'Új bejegyzések tőle: %{name}'
title:
one: 'Új bejegyzés: „%{excerpt}”'
other: 'Új bejegyzések tőle: %{name}'
email_subscriptions:
active: Aktív
confirmations:
show:
changed_your_mind: Meggondoltad magad?
title: Feliratkoztál
unsubscribe: Leiratkozás
inactive: Inaktív
status: Állapot
subscribers: Feliratkozók
emoji_styles: emoji_styles:
auto: Automatikus auto: Automatikus
native: Natív native: Natív
@@ -1789,6 +1816,7 @@ hu:
posting_defaults: Bejegyzések alapértelmezései posting_defaults: Bejegyzések alapértelmezései
public_timelines: Nyilvános idővonalak public_timelines: Nyilvános idővonalak
privacy: privacy:
email_subscriptions: Bejegyzések küldése e-mailben
hint_html: "<strong>Testreszabható a profil és a bejegyzések megjelenése.</strong> A Mastodon számos funkciója segíthet szélesebb közönség elérésében, ha engedélyezve van. Szánj egy percet a beállítások áttekintésére, hogy megbizonyosodj arról, hogy ezek megfelelnek a te felhasználási esetednek." hint_html: "<strong>Testreszabható a profil és a bejegyzések megjelenése.</strong> A Mastodon számos funkciója segíthet szélesebb közönség elérésében, ha engedélyezve van. Szánj egy percet a beállítások áttekintésére, hogy megbizonyosodj arról, hogy ezek megfelelnek a te felhasználási esetednek."
privacy: Adatvédelem privacy: Adatvédelem
privacy_hint_html: Szabályozd, hogy mások számára miket szeretnél nyilvánosságra hozni. Az emberek érdekes profilokat és nagyszerű alkalmazásokat fedezhetnek fel, amikor böngésznek mások követései között és látják, hogy mely alkalmazásokból tesznek közzé bejegyzéseket, de az is lehet, hogy inkább elrejtenéd ezeket az infókat. privacy_hint_html: Szabályozd, hogy mások számára miket szeretnél nyilvánosságra hozni. Az emberek érdekes profilokat és nagyszerű alkalmazásokat fedezhetnek fel, amikor böngésznek mások követései között és látják, hogy mely alkalmazásokból tesznek közzé bejegyzéseket, de az is lehet, hogy inkább elrejtenéd ezeket az infókat.
@@ -2052,6 +2080,14 @@ hu:
resume_app_authorization: Alkalmazás jogosultság-ellenőrzésének folytatása resume_app_authorization: Alkalmazás jogosultság-ellenőrzésének folytatása
role_requirement: A(z) %{domain} megköveteli a kétlépcsős hitelesítés beállítása a Mastodon használata előtt. role_requirement: A(z) %{domain} megköveteli a kétlépcsős hitelesítés beállítása a Mastodon használata előtt.
webauthn: Biztonsági kulcsok webauthn: Biztonsági kulcsok
unsubscriptions:
create:
action: Ugrás a kiszolgáló kezdőlapjára
email_subscription:
confirmation_html: 'Már nem fogsz leveleket kapni róla: %{name}.'
title: Leiratkoztál
show:
action: Leiratkozás
user_mailer: user_mailer:
announcement_published: announcement_published:
description: 'A(z) %{domain} adminisztrátorai a következő bejelentést teszik:' description: 'A(z) %{domain} adminisztrátorai a következő bejelentést teszik:'

View File

@@ -1425,14 +1425,21 @@ is:
basic_information: Grunnupplýsingar basic_information: Grunnupplýsingar
hint_html: "<strong>Sérsníddu hvað fólk sér á opinbera notandasniðinu þínu og næst færslunum þínum.</strong> Annað fólk er líklegra til að fylgjast með þér og eiga í samskiptum við þig ef þú fyllir út notandasniðið og setur auðkennismynd." hint_html: "<strong>Sérsníddu hvað fólk sér á opinbera notandasniðinu þínu og næst færslunum þínum.</strong> Annað fólk er líklegra til að fylgjast með þér og eiga í samskiptum við þig ef þú fyllir út notandasniðið og setur auðkennismynd."
other: Annað other: Annað
redesign_body: Núna er hægt að breyta notandasíðunni sinni beint á þeirri síðu.
redesign_button: Fara þangað
redesign_title: Núna er ný aðferð við að breyta notandasíðunni sinni
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Staðfestu tölvupóstfangið action: Staðfestu tölvupóstfangið
instructions_to_confirm: Staðfestu að þú viljir fá tölvupósta frá %{name} (@%{acct}) þegar viðkomandi birtir nýjar færslur. instructions_to_confirm: Staðfestu að þú viljir fá tölvupósta frá %{name} (@%{acct}) þegar viðkomandi birtir nýjar færslur.
instructions_to_ignore: Ef þú ert ekki viss af hverju þú fékkst þennan tölvupóst, þá geturðu eytt honum. Þú verður ekki áskrifandi nema ef þú smellir á tengilinn hér fyrir ofan.
subject: Staðfestu tölvupóstfangið þitt subject: Staðfestu tölvupóstfangið þitt
title: Fá tilkynningar í tölvupósti frá %{name}? title: Fá tilkynningar í tölvupósti frá %{name}?
notification: notification:
create_account: Búa til nýjan Mastodon-aðgang create_account: Búa til nýjan Mastodon-aðgang
footer:
privacy_html: Tölvupóstar eru sendir frá %{domain}, netþjóni sem keyrir Mastodon. Til að sjá hvernig þessi netþjónn vinnur með persónuleg gögn þín, Þá ættirðu að skoða <a href="%{privacy_policy_path}">Meðferð persónuupplýsinga</a>.
reason_for_email_html: Þú færð þennan tölvupóst vegna þess að þú skráðir þig til að fá pósta með færslum frá %{name}. Viltu ekki fá þessar póstsendingar? <a href="%{unsubscribe_path}">Hættu í áskrift</a>
interact_with_this_post: interact_with_this_post:
one: Eigðu í samskiptum við þessa færslu og finndu fleiri í sama dúr. one: Eigðu í samskiptum við þessa færslu og finndu fleiri í sama dúr.
other: Eigðu í samskiptum við þessar færslur og finndu fleiri í sama dúr. other: Eigðu í samskiptum við þessar færslur og finndu fleiri í sama dúr.
@@ -1447,6 +1454,7 @@ is:
confirmations: confirmations:
show: show:
changed_your_mind: Skiptirðu um skoðun? changed_your_mind: Skiptirðu um skoðun?
success_html: Þú munt núna fara að fá tölvupósta þegar %{name} birtir nýjar færslur. Bættu %{sender} í tengiliðina þína svo þessir póstar lendi ekki í ruslpóstmöppunni þinni.
title: Þú hefur skráð þig title: Þú hefur skráð þig
unsubscribe: Hætta í áskrift unsubscribe: Hætta í áskrift
inactive: Óvirkur inactive: Óvirkur
@@ -1465,7 +1473,7 @@ is:
'422': '422':
content: Öryggisprófun mistókst. Ertu að loka á vefkökur/fótspor? content: Öryggisprófun mistókst. Ertu að loka á vefkökur/fótspor?
title: Öryggisprófun mistókst title: Öryggisprófun mistókst
'429': Í hægagangi '429': Of margar beiðnir
'500': '500':
content: Því miður, en eitthvað fór úrskeiðis á okkar enda. content: Því miður, en eitthvað fór úrskeiðis á okkar enda.
title: Þessi síða er ekki rétt title: Þessi síða er ekki rétt
@@ -1824,6 +1832,7 @@ is:
public_timelines: Opinberar tímalínur public_timelines: Opinberar tímalínur
privacy: privacy:
email_subscriptions: Senda færslur með tölvupósti email_subscriptions: Senda færslur með tölvupósti
email_subscriptions_hint_html: Bættu áskriftarformi fyrir tölvupóst á notandasíðuna þína sem birtist fyrir notendur sem ekki eru skráðir inn. Þegar gestir setja inn tölvupóstfangið sitt og skrá sig í áskrift, mun Mastodon senda út tilkynningar um opinberar færslur þínar.
hint_html: "<strong>Sérsníddu hvernig þú vilt að finna megi notandasnið þitt og færslur.</strong> Ýmsir eiginleikar í Mastodon geta hjálpað þér að ná til breiðari áheyrendahóps, séu þeir virkjaðir. Taktu þér tíma til að yfirfara þessar stillingar svo að þær henti þér." hint_html: "<strong>Sérsníddu hvernig þú vilt að finna megi notandasnið þitt og færslur.</strong> Ýmsir eiginleikar í Mastodon geta hjálpað þér að ná til breiðari áheyrendahóps, séu þeir virkjaðir. Taktu þér tíma til að yfirfara þessar stillingar svo að þær henti þér."
privacy: Gagnaleynd privacy: Gagnaleynd
privacy_hint_html: Stýrðu því hve miklar upplýsingar þú birtir sem gætu gagnast öðrum. Fólk uppgötvar áhugaverða notendur og sniðug forrit með því að skoða hvað annað fólk fylgist með og hvaða forrit það notar til að birta færslur, en hinsvegar er þér frjálst að halda þessu leyndu. privacy_hint_html: Stýrðu því hve miklar upplýsingar þú birtir sem gætu gagnast öðrum. Fólk uppgötvar áhugaverða notendur og sniðug forrit með því að skoða hvað annað fólk fylgist með og hvaða forrit það notar til að birta færslur, en hinsvegar er þér frjálst að halda þessu leyndu.

View File

@@ -791,6 +791,8 @@ it:
manage_blocks_description: Consente agli utenti di bloccare i provider di posta elettronica e gli indirizzi IP manage_blocks_description: Consente agli utenti di bloccare i provider di posta elettronica e gli indirizzi IP
manage_custom_emojis: Gestisci emoji personalizzate manage_custom_emojis: Gestisci emoji personalizzate
manage_custom_emojis_description: Consente agli utenti di gestire emoji personalizzate sul server manage_custom_emojis_description: Consente agli utenti di gestire emoji personalizzate sul server
manage_email_subscriptions: Gestisci le iscrizioni via email
manage_email_subscriptions_description: Consenti agli utenti di iscriversi tramite email agli utenti, con questa autorizzazione
manage_federation: Gestisci Federazione manage_federation: Gestisci Federazione
manage_federation_description: Consente agli utenti di bloccare o consentire la federazione con altri domini e controllare la consegnabilità manage_federation_description: Consente agli utenti di bloccare o consentire la federazione con altri domini e controllare la consegnabilità
manage_invites: Gestisci Inviti manage_invites: Gestisci Inviti
@@ -1419,6 +1421,21 @@ it:
basic_information: Informazioni di base basic_information: Informazioni di base
hint_html: "<strong>Personalizza ciò che le persone vedono sul tuo profilo pubblico e accanto ai tuoi post.</strong> È più probabile che altre persone ti seguano e interagiscano con te quando hai un profilo compilato e un'immagine del profilo." hint_html: "<strong>Personalizza ciò che le persone vedono sul tuo profilo pubblico e accanto ai tuoi post.</strong> È più probabile che altre persone ti seguano e interagiscano con te quando hai un profilo compilato e un'immagine del profilo."
other: Altro other: Altro
redesign_body: Ora è possibile modificare il profilo direttamente dalla pagina del profilo stesso.
redesign_button: Vai lì
redesign_title: È disponibile una nuova esperienza di modifica del profilo
email_subscription_mailer:
confirmation:
action: Conferma l'indirizzo email
instructions_to_confirm: Conferma di voler ricevere email da %{name} (@%{acct}) quando pubblicano nuovi post.
instructions_to_ignore: Se non sai perché hai ricevuto questa email, puoi cancellarla. L'iscrizione non sarà confermata se non clicchi sul link qui sopra.
subject: Conferma il tuo indirizzo email
title: Ricevere aggiornamenti via email da %{name}?
notification:
create_account: Crea un account Mastodon
footer:
privacy_html: Le email vengono inviate da %{domain}, un server gestito da Mastodon. Per comprendere come questo server elabora i tuoi dati personali, consulta l'<a href="%{privacy_policy_path}">Informativa sulla privacy</a>.
reason_for_email_html: Ricevi questa email perché hai scelto di ottenere aggiornamenti via email da %{name}. Non vuoi più ricevere queste email? <a href="%{unsubscribe_path}">Disiscriviti</a>
emoji_styles: emoji_styles:
auto: Automatico auto: Automatico
native: Nativo native: Nativo

View File

@@ -762,6 +762,7 @@ nl:
categories: categories:
administration: Beheer administration: Beheer
devops: DevOps devops: DevOps
email: E-mail
invites: Uitnodigingen invites: Uitnodigingen
moderation: Moderatie moderation: Moderatie
special: Speciaal special: Speciaal
@@ -790,6 +791,8 @@ nl:
manage_blocks_description: Staat gebruikers toe om e-mailproviders en IP-adressen te blokkeren manage_blocks_description: Staat gebruikers toe om e-mailproviders en IP-adressen te blokkeren
manage_custom_emojis: Lokale emoji's beheren manage_custom_emojis: Lokale emoji's beheren
manage_custom_emojis_description: Staat gebruikers toe om lokale emoji's op de server te beheren manage_custom_emojis_description: Staat gebruikers toe om lokale emoji's op de server te beheren
manage_email_subscriptions: E-mailabonnementen beheren
manage_email_subscriptions_description: Sta gebruikers toe om zich per e-mail te abonneren op gebruikers met deze rechten
manage_federation: Federatie beheren manage_federation: Federatie beheren
manage_federation_description: Staat gebruikers toe om federatie met andere domeinen te blokkeren of toe te staan en om de bezorging te bepalen manage_federation_description: Staat gebruikers toe om federatie met andere domeinen te blokkeren of toe te staan en om de bezorging te bepalen
manage_invites: Uitnodigingen beheren manage_invites: Uitnodigingen beheren
@@ -1418,6 +1421,34 @@ nl:
basic_information: Algemene informatie basic_information: Algemene informatie
hint_html: "<strong>Wat mensen op jouw openbare profiel en naast je berichten zien aanpassen.</strong> Andere mensen gaan je waarschijnlijk eerder volgen en hebben vaker interactie met je, wanneer je profiel is ingevuld en je een profielfoto hebt." hint_html: "<strong>Wat mensen op jouw openbare profiel en naast je berichten zien aanpassen.</strong> Andere mensen gaan je waarschijnlijk eerder volgen en hebben vaker interactie met je, wanneer je profiel is ingevuld en je een profielfoto hebt."
other: Overige other: Overige
redesign_body: Het bewerken van je profiel is nu toegankelijk vanaf de profielpagina.
redesign_button: Ga erheen
redesign_title: Er is een nieuwe profielbewerkingservaring
email_subscription_mailer:
confirmation:
action: E-mailadres bevestigen
instructions_to_confirm: Bevestig dat je e-mails van %{name} (@%{acct}) wilt ontvangen wanneer deze gebruiker nieuwe berichten publiceert.
instructions_to_ignore: Wanneer je niet zeker weet waarom je deze e-mail hebt ontvangen, kun je deze verwijderen. Je bent niet geabonneerd wanneer je niet op de bovenstaande link klikt.
subject: Je e-mailadres bevestigen
title: E-mailupdates van %{name} ontvangen?
notification:
create_account: Een Mastodon-account registreren
subject:
one: 'Nieuw bericht: "%{excerpt}"'
other: Nieuwe berichten van %{name}
title:
one: 'Nieuw bericht: "%{excerpt}"'
other: Nieuwe berichten van %{name}
email_subscriptions:
active: Actief
confirmations:
show:
changed_your_mind: Van mening veranderd?
title: Je bent ingeschreven
unsubscribe: Uitschrijven
inactive: Inactief
status: Status
subscribers: Abonnees
emoji_styles: emoji_styles:
auto: Auto auto: Auto
native: Systeemeigen native: Systeemeigen
@@ -1789,6 +1820,7 @@ nl:
posting_defaults: Jouw nieuwe berichten posting_defaults: Jouw nieuwe berichten
public_timelines: Openbare tijdlijnen public_timelines: Openbare tijdlijnen
privacy: privacy:
email_subscriptions: Berichten per e-mail verzenden
hint_html: "<strong>Hoe wil je dat jouw profiel en berichten kunnen worden gevonden?</strong> Een verscheidenheid aan functies in Mastodon kunnen je helpen om een groter publiek te bereiken als ze zijn ingeschakeld. Neem rustig de tijd om deze instellingen te bekijken, om er zo zeker van te zijn dat ze aan jouw wensen voldoen." hint_html: "<strong>Hoe wil je dat jouw profiel en berichten kunnen worden gevonden?</strong> Een verscheidenheid aan functies in Mastodon kunnen je helpen om een groter publiek te bereiken als ze zijn ingeschakeld. Neem rustig de tijd om deze instellingen te bekijken, om er zo zeker van te zijn dat ze aan jouw wensen voldoen."
privacy: Privacy privacy: Privacy
privacy_hint_html: Hoeveel informatie wil je aan andere gebruikers kwijt? Mensen ontdekken interessante accounts en coole apps door te bekijken welke accounts jij volgt en door te bekijken welke app jij gebruikt voor het plaatsen van berichten. Het kan achter zo zijn dat je dit liever verborgen houdt. privacy_hint_html: Hoeveel informatie wil je aan andere gebruikers kwijt? Mensen ontdekken interessante accounts en coole apps door te bekijken welke accounts jij volgt en door te bekijken welke app jij gebruikt voor het plaatsen van berichten. Het kan achter zo zijn dat je dit liever verborgen houdt.
@@ -2052,6 +2084,17 @@ nl:
resume_app_authorization: Applicatie-machtiging hervatten resume_app_authorization: Applicatie-machtiging hervatten
role_requirement: "%{domain} vereist dat je Tweestapsverificatie instelt voordat je Mastodon kunt gebruiken." role_requirement: "%{domain} vereist dat je Tweestapsverificatie instelt voordat je Mastodon kunt gebruiken."
webauthn: Beveiligingssleutels webauthn: Beveiligingssleutels
unsubscriptions:
create:
title: Je bent uitgeschreven
notification_emails:
favourite: e-mailmeldingen favorieten
follow: e-mailmeldingen volgers
follow_request: e-mailmeldingen volgverzoeken
mention: e-mailmeldingen vermeldingen
reblog: e-mailmeldingen boosts
show:
action: Uitschrijven
user_mailer: user_mailer:
announcement_published: announcement_published:
description: 'De beheerders van %{domain} doen een mededeling:' description: 'De beheerders van %{domain} doen een mededeling:'

View File

@@ -791,7 +791,7 @@ pt-BR:
manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP
manage_custom_emojis: Gerenciar Emojis Personalizados manage_custom_emojis: Gerenciar Emojis Personalizados
manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor
manage_email_subscriptions: Gerenciar assinaturas do correio eletrônico manage_email_subscriptions: Gerenciar assinaturas do e-mail
manage_email_subscriptions_description: Permitir que usuários se inscrevam com essa permissão por e-mail manage_email_subscriptions_description: Permitir que usuários se inscrevam com essa permissão por e-mail
manage_federation: Gerenciar Federação manage_federation: Gerenciar Federação
manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade
@@ -1421,6 +1421,9 @@ pt-BR:
basic_information: Informações básicas basic_information: Informações básicas
hint_html: "<strong>Personalize o que as pessoas veem no seu perfil público e ao lado de suas publicações.</strong> É mais provável que outras pessoas o sigam de volta e interajam com você quando você tiver um perfil preenchido e uma foto de perfil." hint_html: "<strong>Personalize o que as pessoas veem no seu perfil público e ao lado de suas publicações.</strong> É mais provável que outras pessoas o sigam de volta e interajam com você quando você tiver um perfil preenchido e uma foto de perfil."
other: Outro other: Outro
redesign_body: A edição de perfil pode ser acessada diretamente a partir da página de perfil.
redesign_button: Ir para lá
redesign_title: Há uma nova experiência de edição de perfil
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Confirmar endereço de e-mail action: Confirmar endereço de e-mail
@@ -2101,6 +2104,17 @@ pt-BR:
notification_emails: notification_emails:
favourite: e-mails de notificações de favoritos favourite: e-mails de notificações de favoritos
follow: receber e-mails de notificação follow: receber e-mails de notificação
follow_request: seguir e-mails solicitados
mention: e-mails de notificação
reblog: otimizar e-mails de notificação
show:
action: Cancelar inscrição
email_subscription:
confirmation_html: Você deixará de receber e-mails quando esta conta publicar novas postagens.
title: Cancelar inscrição de %{name}?
user:
confirmation_html: Você deixará de receber %{type} do Mastodon no %{domain}.
title: Cancelar inscrição de %{type}?
user_mailer: user_mailer:
announcement_published: announcement_published:
description: 'Os administradores do %{domain} estão fazendo um anúncio:' description: 'Os administradores do %{domain} estão fazendo um anúncio:'

View File

@@ -134,6 +134,7 @@ be:
otp: 'Увядзіце код двухфактарнай аўтэнтыфікацыі з вашага тэлефона або адзін з кодаў аднаўлення:' otp: 'Увядзіце код двухфактарнай аўтэнтыфікацыі з вашага тэлефона або адзін з кодаў аднаўлення:'
webauthn: Калі гэта USB прылада, устаўце яе і, калі неабходна, націсніце на яе. webauthn: Калі гэта USB прылада, устаўце яе і, калі неабходна, націсніце на яе.
settings: settings:
email_subscriptions: Адключэнне захавае бягучых падпісчыкаў, але спыніць адпраўку электронных лістоў.
indexable: Старонка вашага профілю можа з'явіцца ў выніках пошуку ў Google, Bing і іншых. indexable: Старонка вашага профілю можа з'явіцца ў выніках пошуку ў Google, Bing і іншых.
show_application: Вы ў любым выпадку зможаце ўбачыць, якая праграма апублікавала ваш допіс. show_application: Вы ў любым выпадку зможаце ўбачыць, якая праграма апублікавала ваш допіс.
tag: tag:
@@ -358,6 +359,7 @@ be:
hint: Дадатковая інфармацыя hint: Дадатковая інфармацыя
text: Правіла text: Правіла
settings: settings:
email_subscriptions: Уключыць падпіскі праз электронную пошту
indexable: Індэксаваць профіль у пошукавых сістэмах indexable: Індэксаваць профіль у пошукавых сістэмах
show_application: Паказваць з якой праграмы было адпраўлена паведамленне show_application: Паказваць з якой праграмы было адпраўлена паведамленне
tag: tag:

View File

@@ -134,6 +134,7 @@ ga:
otp: 'Cuir isteach an cód dhá fhachtóir ginte ag d''aip ghutháin nó úsáid ceann de do chóid athshlánaithe:' otp: 'Cuir isteach an cód dhá fhachtóir ginte ag d''aip ghutháin nó úsáid ceann de do chóid athshlánaithe:'
webauthn: Más eochair USB atá ann déan cinnte é a chur isteach agus, más gá, tapáil í. webauthn: Más eochair USB atá ann déan cinnte é a chur isteach agus, más gá, tapáil í.
settings: settings:
email_subscriptions: Coinnítear síntiúsóirí reatha ach cuirtear stop le ríomhphoist a sheoladh má dhíchumasaítear iad.
indexable: Seans go mbeidh do leathanach próifíle le feiceáil i dtorthaí cuardaigh ar Google, Bing agus eile. indexable: Seans go mbeidh do leathanach próifíle le feiceáil i dtorthaí cuardaigh ar Google, Bing agus eile.
show_application: Beidh tú in ann a fheiceáil i gcónaí cén aip a dfhoilsigh do phostáil beag beann ar. show_application: Beidh tú in ann a fheiceáil i gcónaí cén aip a dfhoilsigh do phostáil beag beann ar.
tag: tag:
@@ -359,6 +360,7 @@ ga:
hint: Eolas breise hint: Eolas breise
text: Riail text: Riail
settings: settings:
email_subscriptions: Cumasaigh clárúcháin ríomhphoist
indexable: Cuir leathanach próifíle san innill chuardaigh indexable: Cuir leathanach próifíle san innill chuardaigh
show_application: Taispeáin cén aip ónar sheol tú postáil show_application: Taispeáin cén aip ónar sheol tú postáil
tag: tag:

View File

@@ -134,6 +134,7 @@ gl:
otp: 'Escribe o código do segundo factor creado pola aplicación do teu móbil ou usa un dos códigos de recuperación:' otp: 'Escribe o código do segundo factor creado pola aplicación do teu móbil ou usa un dos códigos de recuperación:'
webauthn: Se é unha chave USB asegúrate de que está conectada e preme o botón. webauthn: Se é unha chave USB asegúrate de que está conectada e preme o botón.
settings: settings:
email_subscriptions: A desactivación mantén as subscricións actuais pero deixa de enviar correos.
indexable: A túa páxina de perfil podería aparecer nos resultados de busca de Google, Bing e outros. indexable: A túa páxina de perfil podería aparecer nos resultados de busca de Google, Bing e outros.
show_application: Independentemente, ti sempre poderás ver a app coa que publicaches a túa publicación. show_application: Independentemente, ti sempre poderás ver a app coa que publicaches a túa publicación.
tag: tag:
@@ -356,6 +357,7 @@ gl:
hint: Información adicional hint: Información adicional
text: Regra text: Regra
settings: settings:
email_subscriptions: Activar crear contas por correo
indexable: Incluír páxina de perfil nos motores de busca indexable: Incluír páxina de perfil nos motores de busca
show_application: Mostrar a app coa que enviaches unha publicación show_application: Mostrar a app coa que enviaches unha publicación
tag: tag:

View File

@@ -356,6 +356,7 @@ nl:
hint: Aanvullende informatie hint: Aanvullende informatie
text: Regel text: Regel
settings: settings:
email_subscriptions: Berichten per e-mail inschakelen
indexable: Zoekmachines jouw profielpagina laten vinden indexable: Zoekmachines jouw profielpagina laten vinden
show_application: App tonen die je voor het plaatsen van berichten gebruikt show_application: App tonen die je voor het plaatsen van berichten gebruikt
tag: tag:

View File

@@ -134,6 +134,7 @@ pt-BR:
otp: 'Digite o código de dois fatores gerado pelo aplicativo no seu celular ou use um dos códigos de recuperação:' otp: 'Digite o código de dois fatores gerado pelo aplicativo no seu celular ou use um dos códigos de recuperação:'
webauthn: Se for uma chave USB tenha certeza de inseri-la e, se necessário, tocar nela. webauthn: Se for uma chave USB tenha certeza de inseri-la e, se necessário, tocar nela.
settings: settings:
email_subscriptions: A desativação mantém assinantes existentes, mas para de enviar e-mails.
indexable: Sua página de perfil pode aparecer nos resultados de busca no Google, Bing e outros. indexable: Sua página de perfil pode aparecer nos resultados de busca no Google, Bing e outros.
show_application: Você sempre conseguirá ver qual aplicativo realizou sua publicação independentemente disso. show_application: Você sempre conseguirá ver qual aplicativo realizou sua publicação independentemente disso.
tag: tag:
@@ -356,6 +357,7 @@ pt-BR:
hint: Informações adicionais hint: Informações adicionais
text: Regra text: Regra
settings: settings:
email_subscriptions: Habilitar cadastro por e-mails
indexable: Incluir página de perfil nos motores de busca indexable: Incluir página de perfil nos motores de busca
show_application: Exibir a partir de qual aplicativo você publicou show_application: Exibir a partir de qual aplicativo você publicou
tag: tag:

View File

@@ -134,6 +134,7 @@ tr:
otp: 'Telefonunuzdaki two-factor kodunuzu giriniz veya kurtarma kodlarınızdan birini giriniz:' otp: 'Telefonunuzdaki two-factor kodunuzu giriniz veya kurtarma kodlarınızdan birini giriniz:'
webauthn: Bir USB anahtarıysa, taktığınızdan ve gerekirse üzerine tıkladığınızdan emin olun. webauthn: Bir USB anahtarıysa, taktığınızdan ve gerekirse üzerine tıkladığınızdan emin olun.
settings: settings:
email_subscriptions: Devre dışı bırakma işlemi mevcut aboneleri korur ancak e-posta gönderimini durdurur.
indexable: Profil sayfanız Google, Bing ve diğerlerindeki arama sonuçlarında görüntülenebilir. indexable: Profil sayfanız Google, Bing ve diğerlerindeki arama sonuçlarında görüntülenebilir.
show_application: Ne olursa olsun gönderinizi yayınlayan uygulamayı her zaman görebileceksiniz. show_application: Ne olursa olsun gönderinizi yayınlayan uygulamayı her zaman görebileceksiniz.
tag: tag:
@@ -356,6 +357,7 @@ tr:
hint: Ek bilgi hint: Ek bilgi
text: Kural text: Kural
settings: settings:
email_subscriptions: E-posta aboneliklerini etkinleştir
indexable: Arama motorları profil sayfasını içersin indexable: Arama motorları profil sayfasını içersin
show_application: Gönderiyi hangi uygulamadan gönderdiğiniz görüntülensin show_application: Gönderiyi hangi uygulamadan gönderdiğiniz görüntülensin
tag: tag:

View File

@@ -6,7 +6,7 @@ vi:
attribution_domains: Bảo vệ khỏi những sự gán ghép sai. attribution_domains: Bảo vệ khỏi những sự gán ghép sai.
discoverable: Mọi người có thể được đề xuất hồ sơ và tút công khai của bạn. discoverable: Mọi người có thể được đề xuất hồ sơ và tút công khai của bạn.
display_name: Tên đầy đủ hoặc biệt danh đều được. display_name: Tên đầy đủ hoặc biệt danh đều được.
fields: Blog của bạn, nghề nghiệp, tuổi hoặc bất cứ gì. fields: Blog của bạn, nghề nghiệp, tuổi hoặc bất kỳ.
indexable: Mọi người có thể tìm kiếm và tương tác với những tút công khai của bạn trên Mastodon. indexable: Mọi người có thể tìm kiếm và tương tác với những tút công khai của bạn trên Mastodon.
note: 'Bạn có thể @aiđó hoặc #hashtags.' note: 'Bạn có thể @aiđó hoặc #hashtags.'
show_collections: Mọi người sẽ biết bạn theo dõi ai và ai theo dõi bạn. show_collections: Mọi người sẽ biết bạn theo dõi ai và ai theo dõi bạn.
@@ -54,18 +54,18 @@ vi:
password: Tối thiểu 8 ký tự password: Tối thiểu 8 ký tự
phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút
scopes: Ứng dụng sẽ được phép truy cập những API nào. Nếu bạn chọn quyền cấp cao nhất, không cần chọn quyền nhỏ. scopes: Ứng dụng sẽ được phép truy cập những API nào. Nếu bạn chọn quyền cấp cao nhất, không cần chọn quyền nhỏ.
setting_advanced_layout: Hiển thị Mastodon dưới dạng bố cục nhiều cột, cho phép bạn xem ng thời gian, thông báo và cột thứ ba mà bạn chọn. Không nên dùng cho màn hình nhỏ. setting_advanced_layout: Cho phép bạn xem bảng tin, thông báo và một cột thứ ba mà bạn chọn. Không nên dùng nếu màn hình nhỏ.
setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì sẽ không hiện những lượt đăng lại khác trên bảng tin setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì sẽ không hiện những lượt đăng lại khác trên bảng tin
setting_always_send_emails: Bình thường thì sẽ không gửi khi bạn đang dùng Mastodon setting_always_send_emails: Bình thường thì sẽ không gửi khi bạn đang dùng Mastodon
setting_boost_modal: Nếu được bật, trước khi đăng lại sẽ mở hộp thoại xác nhận - trong đó bạn có thể thay đổi mức độ hiển thị tút của mình. setting_boost_modal: Nếu bật, trước khi đăng lại sẽ mở hộp thoại xác nhận - trong đó bạn có thể thay đổi mức độ hiển thị tút của mình.
setting_default_quote_policy_private: Không thể trích dẫn tút chỉ dành cho người theo dõi trên Mastodon. setting_default_quote_policy_private: Không thể trích dẫn tút chỉ dành cho người theo dõi trên Mastodon.
setting_default_quote_policy_unlisted: Khi ai đó trích dẫn bạn, tút của họ cũng sẽ bị ẩn khỏi bảng tin công khai. setting_default_quote_policy_unlisted: Khi ai đó trích dẫn bạn, tút của họ cũng sẽ bị ẩn khỏi bảng tin công khai.
setting_default_sensitive: Bắt buộc nhấn vào mới có thể xem setting_default_sensitive: Bắt buộc nhấn vào mới có thể xem
setting_display_media_default: Click để xem setting_display_media_default: Click để xem
setting_display_media_hide_all: Luôn ẩn setting_display_media_hide_all: Luôn ẩn
setting_display_media_show_all: Luôn hiện setting_display_media_show_all: Luôn hiện
setting_emoji_style: Cách hiển thị Emoji. "Tự động" sẽ dùng biểu tượng cảm xúc nguyên bản, nhưng đối với các trình duyệt cũ sẽ chuyển thành Twemoji. setting_emoji_style: '"Tự động" sẽ dùng biểu tượng cảm xúc nguyên bản, nhưng đối với các trình duyệt cũ sẽ chuyển thành Twemoji.'
setting_quick_boosting_html: Nếu bật, nhấn biểu tượng %{boost_icon} Đăng lại sẽ lập tức đăng lại thay vì mở menu xổ xuống đăng lại/trích dẫn. Chuyển vị trí hành động trích dẫn sang menu %{options_icon} (Tùy chọn). setting_quick_boosting_html: Nếu bật, nhấn biểu tượng %{boost_icon} Đăng lại sẽ đăng lại lập tức, thay vì mở menu xổ xuống đăng lại/trích dẫn. Chuyển vị trí hành động trích dẫn sang menu %{options_icon} (Tùy chọn).
setting_system_scrollbars_ui: Chỉ áp dụng trình duyệt Chrome và Safari bản desktop setting_system_scrollbars_ui: Chỉ áp dụng trình duyệt Chrome và Safari bản desktop
setting_use_blurhash: Phủ lớp màu làm nhòe đi hình ảnh nhạy cảm setting_use_blurhash: Phủ lớp màu làm nhòe đi hình ảnh nhạy cảm
setting_use_pending_items: Dồn lại toàn bộ tút mới và chỉ hiển thị khi nhấn vào setting_use_pending_items: Dồn lại toàn bộ tút mới và chỉ hiển thị khi nhấn vào
@@ -236,10 +236,10 @@ vi:
otp_attempt: Mã xác thực 2 bước otp_attempt: Mã xác thực 2 bước
password: Mật khẩu password: Mật khẩu
phrase: Từ khóa hoặc cụm từ phrase: Từ khóa hoặc cụm từ
setting_advanced_layout: Bố cục nhiều cột setting_advanced_layout: Dùng bố cục nhiều cột
setting_aggregate_reblogs: Không hiện lượt đăng lại trùng lặp setting_aggregate_reblogs: Không hiện lượt đăng lại trùng lặp
setting_always_send_emails: Luôn gửi email thông báo setting_always_send_emails: Luôn gửi email thông báo
setting_auto_play_gif: Tự động phát ảnh GIF setting_auto_play_gif: Phát ảnh GIF tự động
setting_boost_modal: Kiểm soát khả năng đăng lại setting_boost_modal: Kiểm soát khả năng đăng lại
setting_color_scheme: Bảng màu setting_color_scheme: Bảng màu
setting_contrast: Độ tương phản setting_contrast: Độ tương phản
@@ -248,17 +248,17 @@ vi:
setting_default_quote_policy: Ai có thể trích dẫn setting_default_quote_policy: Ai có thể trích dẫn
setting_default_sensitive: Đánh dấu media nhạy cảm setting_default_sensitive: Đánh dấu media nhạy cảm
setting_delete_modal: Cảnh báo tôi trước khi xóa một tút setting_delete_modal: Cảnh báo tôi trước khi xóa một tút
setting_disable_hover_cards: Không popup hồ sơ setting_disable_hover_cards: Không hiện popup xem trước hồ sơ
setting_disable_swiping: Không thao tác vuốt setting_disable_swiping: Không dùng thao tác vuốt
setting_display_media: Media nhạy cảm setting_display_media: Media nhạy cảm
setting_display_media_default: Mặc định setting_display_media_default: Mặc định
setting_display_media_hide_all: Ẩn toàn bộ setting_display_media_hide_all: Ẩn toàn bộ
setting_display_media_show_all: Hiện toàn bộ setting_display_media_show_all: Hiện toàn bộ
setting_emoji_style: Phong cách Emoji setting_emoji_style: Phong cách Emoji
setting_expand_spoilers: Luôn mở rộng tút chứa nội dung ẩn setting_expand_spoilers: Luôn mở rộng nội dung ẩn
setting_hide_network: Ẩn quan hệ của bạn setting_hide_network: Ẩn quan hệ của bạn
setting_missing_alt_text_modal: Cảnh báo tôi trước khi đăng media mà không có alt text setting_missing_alt_text_modal: Cảnh báo tôi trước khi đăng media mà không có alt text
setting_quick_boosting: Bật đăng lại nhanh setting_quick_boosting: Đăng lại nhanh
setting_reduce_motion: Giảm chuyển động ảnh GIF setting_reduce_motion: Giảm chuyển động ảnh GIF
setting_system_font_ui: Phông chữ mặc định hệ thống setting_system_font_ui: Phông chữ mặc định hệ thống
setting_system_scrollbars_ui: Thanh cuộn mặc định hệ thống setting_system_scrollbars_ui: Thanh cuộn mặc định hệ thống
@@ -266,7 +266,7 @@ vi:
setting_trends: Hiện xu hướng trong ngày setting_trends: Hiện xu hướng trong ngày
setting_unfollow_modal: Hỏi trước khi bỏ theo dõi ai đó setting_unfollow_modal: Hỏi trước khi bỏ theo dõi ai đó
setting_use_blurhash: Làm mờ media bị ẩn setting_use_blurhash: Làm mờ media bị ẩn
setting_use_pending_items: Không tự động làm mới bảng tin setting_use_pending_items: Chế độ chậm
severity: Mức độ nghiêm trọng severity: Mức độ nghiêm trọng
sign_in_token_attempt: Mã an toàn sign_in_token_attempt: Mã an toàn
title: Tựa đề title: Tựa đề

View File

@@ -356,7 +356,7 @@ zh-CN:
hint: 补充信息 hint: 补充信息
text: 规则 text: 规则
settings: settings:
email_subscriptions: 启用邮件订阅 email_subscriptions: 启用邮件订阅注册
indexable: 允许搜索引擎索引个人资料 indexable: 允许搜索引擎索引个人资料
show_application: 显示你发嘟使用的应用 show_application: 显示你发嘟使用的应用
tag: tag:

View File

@@ -1410,6 +1410,9 @@ sq:
basic_information: Hollësi elementare basic_information: Hollësi elementare
hint_html: "<strong>Përshtatni çshohin njerëzit në profilin tuaj publik dhe në krah të postimeve tuaja.</strong> Personat e tjerë ka më shumë gjasa tju ndjekin dhe ndërveprojnë me ju, kur keni të plotësuar profilin dhe një foto profili." hint_html: "<strong>Përshtatni çshohin njerëzit në profilin tuaj publik dhe në krah të postimeve tuaja.</strong> Personat e tjerë ka më shumë gjasa tju ndjekin dhe ndërveprojnë me ju, kur keni të plotësuar profilin dhe një foto profili."
other: Tjetër other: Tjetër
redesign_body: Përpunimi i profilit tanimë mund të kryhet drejt e nga faqja e profilit.
redesign_button: Kalo atje
redesign_title: Ka një rrugë të re përpunimi profili
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Ripohoni adresë email action: Ripohoni adresë email

View File

@@ -762,6 +762,7 @@ tr:
categories: categories:
administration: Yönetim administration: Yönetim
devops: DevOps devops: DevOps
email: E-posta
invites: Davetler invites: Davetler
moderation: Denetim moderation: Denetim
special: Özel special: Özel
@@ -790,6 +791,8 @@ tr:
manage_blocks_description: Kullanıcıların e-posta sağlayıcıları ve IP adreslerini engellemesine izin verir 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_email_subscriptions: E-posta Aboneliklerini Yönet
manage_email_subscriptions_description: Kullanıcılara bu izne sahip diğer kullanıcıları e-posta yoluyla takip etme olanağı verin
manage_federation: Birleştirme Yönetme manage_federation: Birleştirme Yönetme
manage_federation_description: Kullanıcıların diğer alan adlarıyla birleştirmeye izin vermesi veya engellemesine ve teslim edilebilirliği denetlemesine izin verir manage_federation_description: Kullanıcıların diğer alan adlarıyla birleştirmeye izin vermesi veya engellemesine ve teslim edilebilirliği denetlemesine izin verir
manage_invites: Davetleri Yönetme manage_invites: Davetleri Yönetme
@@ -1418,6 +1421,41 @@ tr:
basic_information: Temel bilgiler basic_information: Temel bilgiler
hint_html: "<strong>İnsanlara herkese açık profilinizde ve gönderilerinizin yanında ne göstermek istediğinizi düzenleyin.</strong> Dolu bir profile ve bir profil resmine sahip olduğunuzda diğer insanlar daha yüksek ihtimalle sizi takip etmek ve sizinle etkileşime geçmek isteyeceklerdir." hint_html: "<strong>İnsanlara herkese açık profilinizde ve gönderilerinizin yanında ne göstermek istediğinizi düzenleyin.</strong> Dolu bir profile ve bir profil resmine sahip olduğunuzda diğer insanlar daha yüksek ihtimalle sizi takip etmek ve sizinle etkileşime geçmek isteyeceklerdir."
other: Diğer other: Diğer
redesign_body: Profil düzenlemeye şimdi doğrudan profil sayfasından da erişilebilir.
redesign_button: Git
redesign_title: Yeni bir profile düzenleme deneyimi var
email_subscription_mailer:
confirmation:
action: E-posta adresini onayla
instructions_to_confirm: "%{name} (@%{acct}) yeni bir gönderi yayınladığında e-posta almak istediğinizi onaylayın."
instructions_to_ignore: Bu e-postayı neden aldığınızdan emin değilseniz silebilirsiniz. Yukarıdaki bağlantıya tıklamazsanız aboneliğiniz başlamayacaktır.
subject: E-posta adresinizi onaylayın
title: "%{name} kişisinden e-posta güncellemeleri alınsın mı?"
notification:
create_account: Bir Mastodon hesabı oluşturun
footer:
privacy_html: E-postalar Mastodon destekli %{domain} sunucusundan gönderilmektedir. Bu sunucunun kişisel verilerinizi nasıl işlediğini öğrenmek için <a href="%{privacy_policy_path}">Gizlilik Politikası</a> sayfasına bakabilirsiniz.
reason_for_email_html: Bu e-postayı, %{name}'den e-posta güncellemelerini almayı seçtiğiniz için alıyorsunuz. Bu e-postaları almak istemiyor musunuz? <a href="%{unsubscribe_path}">Aboneliği iptal edebilirsiniz</a>
interact_with_this_post:
one: Bu gönderiyle etkileşim kurun ve benzer içerikleri keşfedin.
other: Bu gönderilerle etkileşim kurun ve benzer içerikleri keşfedin.
subject:
one: 'Yeni gönderi: "%{excerpt}"'
other: "%{name} kişisinden yeni gönderiler"
title:
one: 'Yeni gönderi: "%{excerpt}"'
other: "%{name} kişisinden yeni gönderiler"
email_subscriptions:
active: Etkin
confirmations:
show:
changed_your_mind: Fikrinizi mi değiştirdiniz?
success_html: "%{name} yeni bir yazı yayınladığında artık e-posta almaya başlayacaksınız. Bu yazılar spam klasörüne düşmesin diye %{sender}'ı kişi listenize ekleyin."
title: Abone oldunuz
unsubscribe: Abonelikten çık
inactive: Etkin değil
status: Durum
subscribers: Aboneler
emoji_styles: emoji_styles:
auto: Otomatik auto: Otomatik
native: Yerel native: Yerel
@@ -1789,6 +1827,8 @@ tr:
posting_defaults: Gönderi varsayılanları posting_defaults: Gönderi varsayılanları
public_timelines: Genel zaman çizelgeleri public_timelines: Genel zaman çizelgeleri
privacy: privacy:
email_subscriptions: Gönderileri e-posta ile gönder
email_subscriptions_hint_html: Profilinize oturumu kapatmış kullanıcılara gösterilecek bir e-posta kayıt formu ekleyin. Ziyaretçiler e-posta adreslerini girip abonelik isteğinde bulunduklarında, Mastodon kamuya açık gönderilerinizle ilgili güncellemeleri e-posta yoluyla gönderecektir.
hint_html: "<strong>Profilinizin ve gönderilerinizin nasıl bulunmasını istediğinizi yapılandırın.</strong> Mastodon'daki çeşitli özellik etkinleştirildiklerinde çok daha geniş bir izleyici kitlesine ulaşmanıza yardımcı olabilir. Durumunuza uyup uymadığını anlamak için bu ayarlara bir göz atın." hint_html: "<strong>Profilinizin ve gönderilerinizin nasıl bulunmasını istediğinizi yapılandırın.</strong> Mastodon'daki çeşitli özellik etkinleştirildiklerinde çok daha geniş bir izleyici kitlesine ulaşmanıza yardımcı olabilir. Durumunuza uyup uymadığını anlamak için bu ayarlara bir göz atın."
privacy: Gizlilik privacy: Gizlilik
privacy_hint_html: Başkalarına ne kadar bilgi göstermek istediğinizi denetleyin. İnsanlar ilginç profilleri ve havalı uygulamaları diğer kişilerin takiplerine ve gönderileri paylaştıkları uygulamalara bakarak keşfederler, ama belki de gizli tutmak isteyebilirsiniz. privacy_hint_html: Başkalarına ne kadar bilgi göstermek istediğinizi denetleyin. İnsanlar ilginç profilleri ve havalı uygulamaları diğer kişilerin takiplerine ve gönderileri paylaştıkları uygulamalara bakarak keşfederler, ama belki de gizli tutmak isteyebilirsiniz.
@@ -2052,6 +2092,28 @@ tr:
resume_app_authorization: Uygulama yetkilendirmeyi sürdür resume_app_authorization: Uygulama yetkilendirmeyi sürdür
role_requirement: "%{domain} Mastodon'u kullanabilmeniz için İki Aşamalı Kimlik Doğrulama'yı ayarlamanızı gerektirir." role_requirement: "%{domain} Mastodon'u kullanabilmeniz için İki Aşamalı Kimlik Doğrulama'yı ayarlamanızı gerektirir."
webauthn: Güvenlik anahtarları webauthn: Güvenlik anahtarları
unsubscriptions:
create:
action: Sunucu anasayfasına git
email_subscription:
confirmation_html: "%{name} kişisinden artık e-posta almayacaksınız."
title: Abonelikten ayrıldınız
user:
confirmation_html: Artık %{domain} adresindeki Mastodon'dan %{type} almayacaksınız.
notification_emails:
favourite: öne çıkanlar 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ı
show:
action: Abonelikten çık
email_subscription:
confirmation_html: Bu hesap yeni gönderiler yayınladığında e-posta almayacaksınız.
title: "%{name} kişisinin aboneliğinden ayrıl?"
user:
confirmation_html: "%{domain} adresindeki Mastodon'dan artık %{type} almayacaksınız."
title: "%{type} aboneliğinden çıkılsın mı?"
user_mailer: user_mailer:
announcement_published: announcement_published:
description: "%{domain} yöneticileri bir duyuru yapıyorlar:" description: "%{domain} yöneticileri bir duyuru yapıyorlar:"

View File

@@ -592,7 +592,7 @@ vi:
created_msg: Thêm lưu ý kiểm duyệt máy chủ thành công! created_msg: Thêm lưu ý kiểm duyệt máy chủ thành công!
description_html: Xem và để lại lưu ý cho các kiểm duyệt viên khác description_html: Xem và để lại lưu ý cho các kiểm duyệt viên khác
destroyed_msg: Xóa lưu ý kiểm duyệt máy chủ thành công! destroyed_msg: Xóa lưu ý kiểm duyệt máy chủ thành công!
placeholder: Thông tin về máy chủ này, hành động trước đây, hoặc bất cứ lưu ý giúp bạn kiểm duyệt máy chủ này trong tương lai. placeholder: Thông tin về máy chủ này, hành động trước đây, hoặc mọi lưu ý giúp bạn kiểm duyệt máy chủ này trong tương lai.
title: Lưu ý kiểm duyệt title: Lưu ý kiểm duyệt
private_comment: Bình luận riêng private_comment: Bình luận riêng
public_comment: Bình luận công khai public_comment: Bình luận công khai
@@ -877,7 +877,7 @@ vi:
modes: modes:
approved: Yêu cầu phê duyệt để đăng ký approved: Yêu cầu phê duyệt để đăng ký
none: Không ai có thể đăng ký none: Không ai có thể đăng ký
open: Bất cứ ai cũng có thể đăng ký open: Bất kỳ ai cũng có thể đăng ký
warning_hint: Chúng tôi khuyên bạn nên sử dụng "Duyệt đăng ký thủ công" trừ khi bạn tin tưởng đội ngũ kiểm duyệt của mình có thể xử lý kịp thời các đăng ký spam và độc hại. warning_hint: Chúng tôi khuyên bạn nên sử dụng "Duyệt đăng ký thủ công" trừ khi bạn tin tưởng đội ngũ kiểm duyệt của mình có thể xử lý kịp thời các đăng ký spam và độc hại.
security: security:
authorized_fetch: Yêu cầu xác thực từ các máy chủ liên hợp authorized_fetch: Yêu cầu xác thực từ các máy chủ liên hợp
@@ -1200,9 +1200,9 @@ vi:
hint_html: Nếu bạn muốn chuyển từ máy chủ khác sang máy chủ này, bắt buộc bạn phải tạo tên người dùng mới thì mới có thể tiến hành chuyển được người theo dõi. Hành động này <strong>không ảnh hưởng gì và có thể đảo ngược</strong>. <strong>Việc di chuyển tài khoản được bắt đầu từ tài khoản cũ</strong>. hint_html: Nếu bạn muốn chuyển từ máy chủ khác sang máy chủ này, bắt buộc bạn phải tạo tên người dùng mới thì mới có thể tiến hành chuyển được người theo dõi. Hành động này <strong>không ảnh hưởng gì và có thể đảo ngược</strong>. <strong>Việc di chuyển tài khoản được bắt đầu từ tài khoản cũ</strong>.
remove: Bỏ liên kết bí danh remove: Bỏ liên kết bí danh
appearance: appearance:
advanced_settings: Cài đặt nâng cao advanced_settings: Nâng cao
animations_and_accessibility: Hiệu ứng animations_and_accessibility: Hiệu ứng
boosting_preferences: Thiết lập đăng lại boosting_preferences: Đăng lại
boosting_preferences_info_html: "<strong>Mẹo:</strong> Bất kể cài đặt, <kbd>Shift</kbd> + <kbd>Click</kbd> trên biểu tượng %{icon} Đăng lại sẽ lập tức đăng lại." boosting_preferences_info_html: "<strong>Mẹo:</strong> Bất kể cài đặt, <kbd>Shift</kbd> + <kbd>Click</kbd> trên biểu tượng %{icon} Đăng lại sẽ lập tức đăng lại."
discovery: Khám phá discovery: Khám phá
localization: localization:
@@ -1223,7 +1223,7 @@ vi:
logout: Đăng xuất logout: Đăng xuất
regenerate_token: Tạo lại mã truy cập regenerate_token: Tạo lại mã truy cập
token_regenerated: Mã truy cập được tạo lại thành công token_regenerated: Mã truy cập được tạo lại thành công
warning: Hãy rất cẩn thận với dữ liệu này. Không bao giờ chia sẻ nó với bất cứ ai! warning: Hãy rất cẩn thận với dữ liệu này. Không bao giờ chia sẻ nó với bất kỳ ai!
your_token: Mã truy cập của bạn your_token: Mã truy cập của bạn
auth: auth:
apply_for_account: Xin đăng ký apply_for_account: Xin đăng ký
@@ -1400,6 +1400,9 @@ vi:
basic_information: Thông tin cơ bản basic_information: Thông tin cơ bản
hint_html: Mọi người sẽ muốn theo dõi và tương tác với bạn hơn nếu bạn có ảnh đại diện và hồ sơ hoàn chỉnh. hint_html: Mọi người sẽ muốn theo dõi và tương tác với bạn hơn nếu bạn có ảnh đại diện và hồ sơ hoàn chỉnh.
other: Khác other: Khác
redesign_body: Giờ đây, hồ sơ đã có thể chỉnh sửa trực tiếp từ trang hồ sơ.
redesign_button: Tới đó
redesign_title: Đây là trải nghiệm sửa hồ sơ mới
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: Xác nhận địa chỉ email action: Xác nhận địa chỉ email
@@ -1459,12 +1462,12 @@ vi:
in_progress: Đang tổng hợp dữ liệu của bạn... in_progress: Đang tổng hợp dữ liệu của bạn...
request: Tải về dữ liệu của bạn request: Tải về dữ liệu của bạn
size: Dung lượng size: Dung lượng
blocks: Người chặn blocks: Tài khoản đã chặn
bookmarks: Tút đã lưu bookmarks: Tút đã lưu
csv: CSV csv: CSV
domain_blocks: Máy chủ chặn domain_blocks: Máy chủ đã chặn
lists: Danh sách lists: Danh sách
mutes: Tài khoản bị phớt lờ mutes: Tài khoản đã phớt lờ
storage: Tập tin storage: Tập tin
featured_tags: featured_tags:
add_new: Thêm mới add_new: Thêm mới
@@ -1529,7 +1532,7 @@ vi:
other: Chọn tất cả%{count} mục trùng hợp với tìm kiếm của bạn. other: Chọn tất cả%{count} mục trùng hợp với tìm kiếm của bạn.
today: hôm nay today: hôm nay
validation_errors: validation_errors:
other: Đã %{count} lỗi xảy ra! Xem chi tiết bên dưới other: Đã xảy ra %{count} lỗi! Xem chi tiết bên dưới
imports: imports:
errors: errors:
empty: File CSV trống empty: File CSV trống
@@ -1953,7 +1956,7 @@ vi:
quote_policies: quote_policies:
followers: Chỉ người theo dõi followers: Chỉ người theo dõi
nobody: Chỉ tôi nobody: Chỉ tôi
public: Bất cứ ai public: Bất kỳ ai
quote_post_author: Trích dẫn từ tút của @%{acct} quote_post_author: Trích dẫn từ tút của @%{acct}
title: '%{name}: "%{quote}"' title: '%{name}: "%{quote}"'
visibilities: visibilities:
@@ -1962,7 +1965,7 @@ vi:
public: Công khai public: Công khai
public_long: Bất kỳ ai trong và ngoài Mastodon public_long: Bất kỳ ai trong và ngoài Mastodon
unlisted: Hạn chế unlisted: Hạn chế
unlisted_long: Ẩn khỏi kết quả tìm kiếm, xu hướng và ng thời gian công khai của Mastodon unlisted_long: Ẩn khỏi kết quả tìm kiếm, xu hướng và bảng tin công khai
statuses_cleanup: statuses_cleanup:
enabled: Tự động xóa những tút cũ enabled: Tự động xóa những tút cũ
enabled_hint: Trừ những ngoại lệ bên dưới enabled_hint: Trừ những ngoại lệ bên dưới

View File

@@ -1400,6 +1400,9 @@ zh-CN:
basic_information: 基本信息 basic_information: 基本信息
hint_html: "<strong>自定义公开资料和嘟文旁边显示的内容。</strong>当你填写完整的个人资料并设置了头像时,其他人更有可能关注你并与你互动。" hint_html: "<strong>自定义公开资料和嘟文旁边显示的内容。</strong>当你填写完整的个人资料并设置了头像时,其他人更有可能关注你并与你互动。"
other: 其他 other: 其他
redesign_body: 现在可以直接在个人资料页面编辑个人资料。
redesign_button: 前往
redesign_title: 全新个人资料编辑体验现已到来
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: 确认电子邮件地址 action: 确认电子邮件地址
@@ -1411,9 +1414,9 @@ zh-CN:
create_account: 创建 Mastodon 账号 create_account: 创建 Mastodon 账号
footer: footer:
privacy_html: 电子邮件发送自 %{domain},由 Mastodon 驱动的社区实例。要了解本站如何处理你的个人信息,请参见<a href="%{privacy_policy_path}">隐私政策</a>。 privacy_html: 电子邮件发送自 %{domain},由 Mastodon 驱动的社区实例。要了解本站如何处理你的个人信息,请参见<a href="%{privacy_policy_path}">隐私政策</a>。
reason_for_email_html: 你收到此邮件是因为你先前订阅了来自 %{name} 的嘟文邮件通知。不想收到这些电子邮件?可以<a href="%{unsubscribe_path}">取消订阅</a> reason_for_email_html: 你收到此邮件是因为你先前订阅了来自 %{name} 的嘟文邮件通知。不想收到这些电子邮件?可以<a href="%{unsubscribe_path}">取消订阅</a>
interact_with_this_post: interact_with_this_post:
other: 和嘟文互动,探索更多相关内容 other: 和嘟文互动,发现更多类似嘟文
subject: subject:
other: 来自 %{name} 的新嘟文 other: 来自 %{name} 的新嘟文
title: title:
@@ -1781,7 +1784,7 @@ zh-CN:
public_timelines: 公共时间线 public_timelines: 公共时间线
privacy: privacy:
email_subscriptions: 通过电子邮件发送嘟文 email_subscriptions: 通过电子邮件发送嘟文
email_subscriptions_hint_html: 在你的个人资料中添加电子邮件订阅表单,此表单会显示给未登录的用户。当访客输入电子邮件地址并主动加入Mastodon 将在你更新公开嘟文时为这些访客发送电子邮件通知。 email_subscriptions_hint_html: 在你的个人资料中添加电子邮件订阅表单,此表单会显示给未登录的用户。当访客输入电子邮件地址并选择订阅Mastodon 将在你更新公开嘟文时为这些访客发送电子邮件通知。
hint_html: "<strong>自定义你希望如何找到你的个人资料和嘟文。</strong>启用Mastodon中的各种功能可以帮助你扩大受众范围。请花点时间查看这些设置确保它们适合你的使用情况。" hint_html: "<strong>自定义你希望如何找到你的个人资料和嘟文。</strong>启用Mastodon中的各种功能可以帮助你扩大受众范围。请花点时间查看这些设置确保它们适合你的使用情况。"
privacy: 隐私 privacy: 隐私
privacy_hint_html: 控制你愿意向他人透露多少信息。通过浏览他人的关注列表和查看他们发嘟所用的应用,人们可以发现有趣的用户和酷炫的应用,但你可能更喜欢将其隐藏起来。 privacy_hint_html: 控制你愿意向他人透露多少信息。通过浏览他人的关注列表和查看他们发嘟所用的应用,人们可以发现有趣的用户和酷炫的应用,但你可能更喜欢将其隐藏起来。

View File

@@ -1402,6 +1402,9 @@ zh-TW:
basic_information: 基本資訊 basic_information: 基本資訊
hint_html: "<strong>自訂人們能於您個人檔案及嘟文旁所見之內容。</strong>當您完成填寫個人檔案及設定大頭貼後,其他人們比較願意跟隨您並與您互動。" hint_html: "<strong>自訂人們能於您個人檔案及嘟文旁所見之內容。</strong>當您完成填寫個人檔案及設定大頭貼後,其他人們比較願意跟隨您並與您互動。"
other: 其他 other: 其他
redesign_body: 個人檔案編輯功能現在能自個人檔案頁面直接存取。
redesign_button: 前往
redesign_title: 全新個人檔案編輯體驗
email_subscription_mailer: email_subscription_mailer:
confirmation: confirmation:
action: 確認電子郵件地址 action: 確認電子郵件地址

View File

@@ -200,7 +200,7 @@ Rails.application.routes.draw do
resources :emojis, only: [:show] resources :emojis, only: [:show]
resources :invites, only: [:index, :create, :destroy] resources :invites, only: [:index, :create, :destroy]
resources :filters, except: [:show] do resources :filters, except: [:show] do
resources :statuses, only: [:index], controller: 'filters/statuses' do resources :statuses, only: [:index], module: :filters do
collection do collection do
post :batch post :batch
end end
@@ -219,7 +219,9 @@ Rails.application.routes.draw do
resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update] resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update]
get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy, format: false get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy, format: false
get '/backups/:id/download', to: 'backups#download', as: :download_backup, format: false resources :backups, only: [] do
member { get :download, format: false }
end
resource :authorize_interaction, only: [:show] resource :authorize_interaction, only: [:show]
resource :share, only: [:show] resource :share, only: [:show]

View File

@@ -93,7 +93,7 @@ namespace :admin do
post :stop_delivery post :stop_delivery
end end
resources :moderation_notes, controller: 'instances/moderation_notes', only: [:create, :destroy] resources :moderation_notes, module: :instances, only: [:create, :destroy]
end end
resources :rules, only: [:index, :new, :create, :edit, :update, :destroy] do resources :rules, only: [:index, :new, :create, :edit, :update, :destroy] do
@@ -109,13 +109,13 @@ namespace :admin do
post :disable post :disable
end end
resource :secret, only: [], controller: 'webhooks/secrets' do resource :secret, only: [], module: :webhooks do
post :rotate post :rotate
end end
end end
resources :reports, only: [:index, :show] do resources :reports, only: [:index, :show] do
resources :actions, only: [:create], controller: 'reports/actions' do resources :actions, only: [:create], module: :reports do
collection do collection do
post :preview post :preview
end end

View File

@@ -260,7 +260,7 @@ namespace :api, format: false do
end end
namespace :featured_tags do namespace :featured_tags do
get :suggestions, to: 'suggestions#index' resources :suggestions, only: :index
end end
resources :featured_tags, only: [:index, :create, :destroy] resources :featured_tags, only: [:index, :create, :destroy]

View File

@@ -9,7 +9,7 @@ namespace :settings do
namespace :preferences do namespace :preferences do
resource :appearance, only: [:show, :update], controller: :appearance resource :appearance, only: [:show, :update], controller: :appearance
resource :posting_defaults, only: [:show, :update], controller: :posting_defaults resource :posting_defaults, only: [:show, :update]
resource :notifications, only: [:show, :update] resource :notifications, only: [:show, :update]
resource :other, only: [:show, :update], controller: :other resource :other, only: [:show, :update], controller: :other
end end

View File

@@ -0,0 +1,20 @@
# frozen_string_literal: true
RSpec.describe AccountRelationshipSeveranceEvent do
describe 'Associations' do
it { is_expected.to belong_to(:account) }
it { is_expected.to belong_to(:relationship_severance_event) }
it { is_expected.to have_many(:severed_relationships).through(:relationship_severance_event) }
end
describe '#identifier' do
subject { account_relationship_severance_event.identifier }
let(:account_relationship_severance_event) { Fabricate.build :account_relationship_severance_event, relationship_severance_event:, created_at: DateTime.new(2026, 3, 15, 1, 2, 3) }
let(:relationship_severance_event) { Fabricate.build :relationship_severance_event, target_name: 'host.example' }
context 'with a hostname target and timestamp' do
it { is_expected.to eq('host.example-2026-03-15') }
end
end
end

178
yarn.lock
View File

@@ -1063,7 +1063,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.29.0": "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.29.2":
version: 7.29.2 version: 7.29.2
resolution: "@babel/preset-env@npm:7.29.2" resolution: "@babel/preset-env@npm:7.29.2"
dependencies: dependencies:
@@ -3727,109 +3727,109 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-android-arm64@npm:1.0.0-rc.11": "@rolldown/binding-android-arm64@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.11" resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.12"
conditions: os=android & cpu=arm64 conditions: os=android & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.11": "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.11" resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.12"
conditions: os=darwin & cpu=arm64 conditions: os=darwin & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-darwin-x64@npm:1.0.0-rc.11": "@rolldown/binding-darwin-x64@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.11" resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.12"
conditions: os=darwin & cpu=x64 conditions: os=darwin & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.11": "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.11" resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.12"
conditions: os=freebsd & cpu=x64 conditions: os=freebsd & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.11": "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.11" resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.12"
conditions: os=linux & cpu=arm conditions: os=linux & cpu=arm
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.11": "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.11" resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.12"
conditions: os=linux & cpu=arm64 & libc=glibc conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.11": "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.11" resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.12"
conditions: os=linux & cpu=arm64 & libc=musl conditions: os=linux & cpu=arm64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.11": "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.11" resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.12"
conditions: os=linux & cpu=ppc64 & libc=glibc conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.11": "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.11" resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.12"
conditions: os=linux & cpu=s390x & libc=glibc conditions: os=linux & cpu=s390x & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.11": "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.11" resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.12"
conditions: os=linux & cpu=x64 & libc=glibc conditions: os=linux & cpu=x64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.11": "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.11" resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.12"
conditions: os=linux & cpu=x64 & libc=musl conditions: os=linux & cpu=x64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.11": "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.11" resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.12"
conditions: os=openharmony & cpu=arm64 conditions: os=openharmony & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.11": "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.11" resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.12"
dependencies: dependencies:
"@napi-rs/wasm-runtime": "npm:^1.1.1" "@napi-rs/wasm-runtime": "npm:^1.1.1"
conditions: cpu=wasm32 conditions: cpu=wasm32
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.11": "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.11" resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.12"
conditions: os=win32 & cpu=arm64 conditions: os=win32 & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.11": "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.11" resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.12"
conditions: os=win32 & cpu=x64 conditions: os=win32 & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
@@ -3856,10 +3856,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@rolldown/pluginutils@npm:1.0.0-rc.11": "@rolldown/pluginutils@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "@rolldown/pluginutils@npm:1.0.0-rc.11" resolution: "@rolldown/pluginutils@npm:1.0.0-rc.12"
checksum: 10c0/ed20f15c0d78bb3e82f1cb1924ed4b489c026e76cc28ed861609101c75790effa1e2e0fed37ee1b22ceec83aee8ab59098a0d5d3d1b62baa1b44753f88a5e4c6 checksum: 10c0/f785d1180ea4876bf6a6a67135822808d1c07f902409524ff1088779f7d5318f6e603d281fb107a5145c1ca54b7cabebd359629ec474ebbc2812f2cf53db4023
languageName: node languageName: node
linkType: hard linkType: hard
@@ -5189,25 +5189,25 @@ __metadata:
linkType: hard linkType: hard
"@vitejs/plugin-legacy@npm:^8.0.0": "@vitejs/plugin-legacy@npm:^8.0.0":
version: 8.0.0 version: 8.0.1
resolution: "@vitejs/plugin-legacy@npm:8.0.0" resolution: "@vitejs/plugin-legacy@npm:8.0.1"
dependencies: dependencies:
"@babel/core": "npm:^7.29.0" "@babel/core": "npm:^7.29.0"
"@babel/plugin-transform-dynamic-import": "npm:^7.27.1" "@babel/plugin-transform-dynamic-import": "npm:^7.27.1"
"@babel/plugin-transform-modules-systemjs": "npm:^7.29.0" "@babel/plugin-transform-modules-systemjs": "npm:^7.29.0"
"@babel/preset-env": "npm:^7.29.0" "@babel/preset-env": "npm:^7.29.2"
babel-plugin-polyfill-corejs3: "npm:^0.14.1" babel-plugin-polyfill-corejs3: "npm:^0.14.2"
babel-plugin-polyfill-regenerator: "npm:^0.6.7" babel-plugin-polyfill-regenerator: "npm:^0.6.8"
browserslist: "npm:^4.28.1" browserslist: "npm:^4.28.1"
browserslist-to-esbuild: "npm:^2.1.1" browserslist-to-esbuild: "npm:^2.1.1"
core-js: "npm:^3.48.0" core-js: "npm:^3.49.0"
magic-string: "npm:^0.30.21" magic-string: "npm:^0.30.21"
regenerator-runtime: "npm:^0.14.1" regenerator-runtime: "npm:^0.14.1"
systemjs: "npm:^6.15.1" systemjs: "npm:^6.15.1"
peerDependencies: peerDependencies:
terser: ^5.16.0 terser: ^5.16.0
vite: ^8.0.0 vite: ^8.0.0
checksum: 10c0/5b88d81ac1eb82aa607d9809f3df1354ee065095f5941b63b51d9aea2a73ba9cee8d08d7af944971b651dedf12fea931fec99baf9673fde54e2331abc8d709c9 checksum: 10c0/7c148ccabc154cf781d9e281d1cd17b2a640335fb16b226c0dd4e80982f672b867f719e20bfe734d0541398a9791464146a06f04827f6db2e4e19d2b2986515f
languageName: node languageName: node
linkType: hard linkType: hard
@@ -5852,7 +5852,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"babel-plugin-polyfill-corejs3@npm:^0.14.0, babel-plugin-polyfill-corejs3@npm:^0.14.1": "babel-plugin-polyfill-corejs3@npm:^0.14.0, babel-plugin-polyfill-corejs3@npm:^0.14.2":
version: 0.14.2 version: 0.14.2
resolution: "babel-plugin-polyfill-corejs3@npm:0.14.2" resolution: "babel-plugin-polyfill-corejs3@npm:0.14.2"
dependencies: dependencies:
@@ -5864,7 +5864,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"babel-plugin-polyfill-regenerator@npm:^0.6.6, babel-plugin-polyfill-regenerator@npm:^0.6.7": "babel-plugin-polyfill-regenerator@npm:^0.6.6, babel-plugin-polyfill-regenerator@npm:^0.6.8":
version: 0.6.8 version: 0.6.8
resolution: "babel-plugin-polyfill-regenerator@npm:0.6.8" resolution: "babel-plugin-polyfill-regenerator@npm:0.6.8"
dependencies: dependencies:
@@ -6448,7 +6448,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"core-js@npm:^3.30.2, core-js@npm:^3.48.0": "core-js@npm:^3.30.2, core-js@npm:^3.49.0":
version: 3.49.0 version: 3.49.0
resolution: "core-js@npm:3.49.0" resolution: "core-js@npm:3.49.0"
checksum: 10c0/2e42edb47eda38fd5368380131623c8aa5d4a6b42164125b17744bdc08fa5ebbbdd06b4b4aa6ca3663470a560b0f2fba48e18f142dfe264b0039df85bc625694 checksum: 10c0/2e42edb47eda38fd5368380131623c8aa5d4a6b42164125b17744bdc08fa5ebbbdd06b4b4aa6ca3663470a560b0f2fba48e18f142dfe264b0039df85bc625694
@@ -11106,10 +11106,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"picomatch@npm:2 || 3 || 4, picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": "picomatch@npm:2 || 3 || 4, picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4":
version: 4.0.3 version: 4.0.4
resolution: "picomatch@npm:4.0.3" resolution: "picomatch@npm:4.0.4"
checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0
languageName: node languageName: node
linkType: hard linkType: hard
@@ -12656,27 +12656,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"rolldown@npm:1.0.0-rc.11": "rolldown@npm:1.0.0-rc.12":
version: 1.0.0-rc.11 version: 1.0.0-rc.12
resolution: "rolldown@npm:1.0.0-rc.11" resolution: "rolldown@npm:1.0.0-rc.12"
dependencies: dependencies:
"@oxc-project/types": "npm:=0.122.0" "@oxc-project/types": "npm:=0.122.0"
"@rolldown/binding-android-arm64": "npm:1.0.0-rc.11" "@rolldown/binding-android-arm64": "npm:1.0.0-rc.12"
"@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.11" "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.12"
"@rolldown/binding-darwin-x64": "npm:1.0.0-rc.11" "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.12"
"@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.11" "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.12"
"@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.11" "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.12"
"@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.11" "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.12"
"@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.11" "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.12"
"@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.11" "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.12"
"@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.11" "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.12"
"@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.11" "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.12"
"@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.11" "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.12"
"@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.11" "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.12"
"@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.11" "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.12"
"@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.11" "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.12"
"@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.11" "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.12"
"@rolldown/pluginutils": "npm:1.0.0-rc.11" "@rolldown/pluginutils": "npm:1.0.0-rc.12"
dependenciesMeta: dependenciesMeta:
"@rolldown/binding-android-arm64": "@rolldown/binding-android-arm64":
optional: true optional: true
@@ -12710,7 +12710,7 @@ __metadata:
optional: true optional: true
bin: bin:
rolldown: bin/cli.mjs rolldown: bin/cli.mjs
checksum: 10c0/f92457aa26dac614bbaa92079d05c6a4819054468b46b2f46f68bae4bf42dc2c840a4d89be4ffa2a5821a63cd46157fa167a93e1f0b6671f89c16e3da8e2dbf3 checksum: 10c0/0c4e5e3cdcdddce282cb2d84e1c98d6ad8d4e452d5c1402e498b35ec1060026e552dd783efc9f4ba876d7c0863b5973edc79b6a546f565e9832dc1077ec18c2c
languageName: node languageName: node
linkType: hard linkType: hard
@@ -14749,14 +14749,14 @@ __metadata:
linkType: hard linkType: hard
"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0-0, vite@npm:^8.0.0": "vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0-0, vite@npm:^8.0.0":
version: 8.0.2 version: 8.0.3
resolution: "vite@npm:8.0.2" resolution: "vite@npm:8.0.3"
dependencies: dependencies:
fsevents: "npm:~2.3.3" fsevents: "npm:~2.3.3"
lightningcss: "npm:^1.32.0" lightningcss: "npm:^1.32.0"
picomatch: "npm:^4.0.3" picomatch: "npm:^4.0.4"
postcss: "npm:^8.5.8" postcss: "npm:^8.5.8"
rolldown: "npm:1.0.0-rc.11" rolldown: "npm:1.0.0-rc.12"
tinyglobby: "npm:^0.2.15" tinyglobby: "npm:^0.2.15"
peerDependencies: peerDependencies:
"@types/node": ^20.19.0 || >=22.12.0 "@types/node": ^20.19.0 || >=22.12.0
@@ -14801,7 +14801,7 @@ __metadata:
optional: true optional: true
bin: bin:
vite: bin/vite.js vite: bin/vite.js
checksum: 10c0/b271a3c3f8100bab45ee16583cb046aa028f943205b56065b09d3f1851ed8e7068fc6a76e9dc01beca805e8bb1e53f229c4c1c623be87ef1acb00fc002a29cf6 checksum: 10c0/bed9520358080393a02fe22565b3309b4b3b8f916afe4c97577528f3efb05c1bf4b29f7b552179bc5b3938629e50fbd316231727457411dbc96648fa5c9d14bf
languageName: node languageName: node
linkType: hard linkType: hard