Merge commit '66fdd3ae65e13349fbc0b2818d4b91a389075553' into glitch-soc/main
This commit is contained in:
commit
b9014ec220
14
Gemfile.lock
14
Gemfile.lock
@ -89,7 +89,7 @@ GEM
|
|||||||
securerandom (>= 0.3)
|
securerandom (>= 0.3)
|
||||||
tzinfo (~> 2.0, >= 2.0.5)
|
tzinfo (~> 2.0, >= 2.0.5)
|
||||||
uri (>= 0.13.1)
|
uri (>= 0.13.1)
|
||||||
addressable (2.8.9)
|
addressable (2.9.0)
|
||||||
public_suffix (>= 2.0.2, < 8.0)
|
public_suffix (>= 2.0.2, < 8.0)
|
||||||
aes_key_wrap (1.1.0)
|
aes_key_wrap (1.1.0)
|
||||||
android_key_attestation (0.3.0)
|
android_key_attestation (0.3.0)
|
||||||
@ -816,12 +816,12 @@ GEM
|
|||||||
securerandom (0.4.1)
|
securerandom (0.4.1)
|
||||||
shoulda-matchers (7.0.1)
|
shoulda-matchers (7.0.1)
|
||||||
activesupport (>= 7.1)
|
activesupport (>= 7.1)
|
||||||
sidekiq (8.0.10)
|
sidekiq (8.1.2)
|
||||||
connection_pool (>= 2.5.0)
|
connection_pool (>= 3.0.0)
|
||||||
json (>= 2.9.0)
|
json (>= 2.16.0)
|
||||||
logger (>= 1.6.2)
|
logger (>= 1.7.0)
|
||||||
rack (>= 3.1.0)
|
rack (>= 3.2.0)
|
||||||
redis-client (>= 0.23.2)
|
redis-client (>= 0.26.0)
|
||||||
sidekiq-bulk (0.2.0)
|
sidekiq-bulk (0.2.0)
|
||||||
sidekiq
|
sidekiq
|
||||||
sidekiq-scheduler (6.0.1)
|
sidekiq-scheduler (6.0.1)
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
import type { AccountWarningAction } from 'mastodon/models/notification_group';
|
import type { AccountWarningAction } from 'mastodon/models/notification_group';
|
||||||
|
|
||||||
import type { ApiAccountJSON } from './accounts';
|
import type { ApiAccountJSON } from './accounts';
|
||||||
|
import type { ApiCollectionJSON } from './collections';
|
||||||
import type { ApiReportJSON } from './reports';
|
import type { ApiReportJSON } from './reports';
|
||||||
import type { ApiStatusJSON } from './statuses';
|
import type { ApiStatusJSON } from './statuses';
|
||||||
|
|
||||||
@ -22,6 +23,8 @@ export const allNotificationTypes: NotificationType[] = [
|
|||||||
'moderation_warning',
|
'moderation_warning',
|
||||||
'severed_relationships',
|
'severed_relationships',
|
||||||
'annual_report',
|
'annual_report',
|
||||||
|
'added_to_collection',
|
||||||
|
'collection_update',
|
||||||
];
|
];
|
||||||
|
|
||||||
export type NotificationWithStatusType =
|
export type NotificationWithStatusType =
|
||||||
@ -42,7 +45,9 @@ export type NotificationType =
|
|||||||
| 'severed_relationships'
|
| 'severed_relationships'
|
||||||
| 'admin.sign_up'
|
| 'admin.sign_up'
|
||||||
| 'admin.report'
|
| 'admin.report'
|
||||||
| 'annual_report';
|
| 'annual_report'
|
||||||
|
| 'added_to_collection'
|
||||||
|
| 'collection_update';
|
||||||
|
|
||||||
export interface BaseNotificationJSON {
|
export interface BaseNotificationJSON {
|
||||||
id: string;
|
id: string;
|
||||||
@ -83,6 +88,26 @@ interface ReportNotificationJSON extends BaseNotificationJSON {
|
|||||||
report: ApiReportJSON;
|
report: ApiReportJSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface AddedToCollectionNotificationGroupJSON extends BaseNotificationGroupJSON {
|
||||||
|
type: 'added_to_collection';
|
||||||
|
collection: ApiCollectionJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface AddedToCollectionNotificationJSON extends BaseNotificationJSON {
|
||||||
|
type: 'added_to_collection';
|
||||||
|
collection: ApiCollectionJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CollectionUpdateNotificationGroupJSON extends BaseNotificationGroupJSON {
|
||||||
|
type: 'collection_update';
|
||||||
|
collection: ApiCollectionJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CollectionUpdateNotificationJSON extends BaseNotificationJSON {
|
||||||
|
type: 'collection_update';
|
||||||
|
collection: ApiCollectionJSON;
|
||||||
|
}
|
||||||
|
|
||||||
type SimpleNotificationTypes = 'follow' | 'follow_request' | 'admin.sign_up';
|
type SimpleNotificationTypes = 'follow' | 'follow_request' | 'admin.sign_up';
|
||||||
interface SimpleNotificationGroupJSON extends BaseNotificationGroupJSON {
|
interface SimpleNotificationGroupJSON extends BaseNotificationGroupJSON {
|
||||||
type: SimpleNotificationTypes;
|
type: SimpleNotificationTypes;
|
||||||
@ -146,7 +171,9 @@ export type ApiNotificationJSON =
|
|||||||
| ReportNotificationJSON
|
| ReportNotificationJSON
|
||||||
| AccountRelationshipSeveranceNotificationJSON
|
| AccountRelationshipSeveranceNotificationJSON
|
||||||
| NotificationWithStatusJSON
|
| NotificationWithStatusJSON
|
||||||
| ModerationWarningNotificationJSON;
|
| ModerationWarningNotificationJSON
|
||||||
|
| AddedToCollectionNotificationJSON
|
||||||
|
| CollectionUpdateNotificationJSON;
|
||||||
|
|
||||||
export type ApiNotificationGroupJSON =
|
export type ApiNotificationGroupJSON =
|
||||||
| SimpleNotificationGroupJSON
|
| SimpleNotificationGroupJSON
|
||||||
@ -154,7 +181,9 @@ export type ApiNotificationGroupJSON =
|
|||||||
| AccountRelationshipSeveranceNotificationGroupJSON
|
| AccountRelationshipSeveranceNotificationGroupJSON
|
||||||
| NotificationGroupWithStatusJSON
|
| NotificationGroupWithStatusJSON
|
||||||
| ModerationWarningNotificationGroupJSON
|
| ModerationWarningNotificationGroupJSON
|
||||||
| AnnualReportNotificationGroupJSON;
|
| AnnualReportNotificationGroupJSON
|
||||||
|
| AddedToCollectionNotificationGroupJSON
|
||||||
|
| CollectionUpdateNotificationGroupJSON;
|
||||||
|
|
||||||
export interface ApiNotificationGroupsResultJSON {
|
export interface ApiNotificationGroupsResultJSON {
|
||||||
accounts: ApiAccountJSON[];
|
accounts: ApiAccountJSON[];
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import { openModal } from 'mastodon/actions/modal';
|
|||||||
import { initMuteModal } from 'mastodon/actions/mutes';
|
import { initMuteModal } from 'mastodon/actions/mutes';
|
||||||
import { apiFollowAccount } from 'mastodon/api/accounts';
|
import { apiFollowAccount } from 'mastodon/api/accounts';
|
||||||
import { Avatar } from 'mastodon/components/avatar';
|
import { Avatar } from 'mastodon/components/avatar';
|
||||||
|
import { VerifiedBadge } from 'mastodon/components/badge';
|
||||||
import { Button } from 'mastodon/components/button';
|
import { Button } from 'mastodon/components/button';
|
||||||
import { FollowersCounter } from 'mastodon/components/counters';
|
import { FollowersCounter } from 'mastodon/components/counters';
|
||||||
import { DisplayName } from 'mastodon/components/display_name';
|
import { DisplayName } from 'mastodon/components/display_name';
|
||||||
@ -29,7 +30,6 @@ import { FollowButton } from 'mastodon/components/follow_button';
|
|||||||
import { RelativeTimestamp } from 'mastodon/components/relative_timestamp';
|
import { RelativeTimestamp } from 'mastodon/components/relative_timestamp';
|
||||||
import { ShortNumber } from 'mastodon/components/short_number';
|
import { ShortNumber } from 'mastodon/components/short_number';
|
||||||
import { Skeleton } from 'mastodon/components/skeleton';
|
import { Skeleton } from 'mastodon/components/skeleton';
|
||||||
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
|
||||||
import { useIdentity } from 'mastodon/identity_context';
|
import { useIdentity } from 'mastodon/identity_context';
|
||||||
import { me } from 'mastodon/initial_state';
|
import { me } from 'mastodon/initial_state';
|
||||||
import type { MenuItem } from 'mastodon/models/dropdown_menu';
|
import type { MenuItem } from 'mastodon/models/dropdown_menu';
|
||||||
|
|||||||
@ -0,0 +1,45 @@
|
|||||||
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
||||||
|
|
||||||
|
import { accountFactoryState } from '@/testing/factories';
|
||||||
|
|
||||||
|
import { AccountListItem } from './index';
|
||||||
|
|
||||||
|
const meta = {
|
||||||
|
title: 'Components/AccountListItem',
|
||||||
|
component: AccountListItem,
|
||||||
|
args: {
|
||||||
|
accountId: '1',
|
||||||
|
withBorder: false,
|
||||||
|
},
|
||||||
|
parameters: {
|
||||||
|
state: {
|
||||||
|
accounts: {
|
||||||
|
'1': accountFactoryState(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} satisfies Meta<typeof AccountListItem>;
|
||||||
|
|
||||||
|
export default meta;
|
||||||
|
|
||||||
|
type Story = StoryObj<typeof meta>;
|
||||||
|
|
||||||
|
export const Default: Story = {};
|
||||||
|
|
||||||
|
export const WithCustomStats: Story = {
|
||||||
|
args: {
|
||||||
|
stats: ['posts', 'last-active'],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const WithBorder: Story = {
|
||||||
|
args: {
|
||||||
|
withBorder: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const WithoutButton: Story = {
|
||||||
|
args: {
|
||||||
|
renderButton: () => null,
|
||||||
|
},
|
||||||
|
};
|
||||||
184
app/javascript/mastodon/components/account_list_item/index.tsx
Normal file
184
app/javascript/mastodon/components/account_list_item/index.tsx
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
|
import classNames from 'classnames';
|
||||||
|
|
||||||
|
import { Account } from 'mastodon/components/account';
|
||||||
|
import { VerifiedBadge } from 'mastodon/components/badge';
|
||||||
|
import { useAccount } from 'mastodon/hooks/useAccount';
|
||||||
|
import { useRelationship } from 'mastodon/hooks/useRelationship';
|
||||||
|
import type { Relationship } from 'mastodon/models/relationship';
|
||||||
|
|
||||||
|
import { EmojiHTML } from '../emoji/html';
|
||||||
|
import { FamiliarFollowers } from '../familiar_followers';
|
||||||
|
import { FollowButton } from '../follow_button';
|
||||||
|
import { FormattedDateWrapper } from '../formatted_date';
|
||||||
|
import { NumberFields, NumberFieldsItem } from '../number_fields';
|
||||||
|
import { RelativeTimestamp } from '../relative_timestamp';
|
||||||
|
import { ShortNumber } from '../short_number';
|
||||||
|
|
||||||
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
|
export interface RenderButtonOptions {
|
||||||
|
accountId: string | undefined;
|
||||||
|
relationship: Relationship | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
type Stat = 'followers' | 'following' | 'posts' | 'joined' | 'last-active';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
accountId: string | undefined;
|
||||||
|
stats?: Stat[];
|
||||||
|
renderButton?: (options: RenderButtonOptions) => React.ReactNode;
|
||||||
|
withBorder?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
const DEFAULT_STATS: Stat[] = ['followers', 'following', 'joined'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extended account list item with bio, verified link badge,
|
||||||
|
* and familiar follower widget.
|
||||||
|
*
|
||||||
|
* The displayed account stats can be customised using the `stats` prop,
|
||||||
|
* and button rendering can be customised via the `renderButton` prop.
|
||||||
|
*/
|
||||||
|
export const AccountListItem: React.FC<Props> = ({
|
||||||
|
accountId,
|
||||||
|
stats = DEFAULT_STATS,
|
||||||
|
withBorder = true,
|
||||||
|
renderButton = defaultRenderButton,
|
||||||
|
}) => {
|
||||||
|
const intl = useIntl();
|
||||||
|
const account = useAccount(accountId);
|
||||||
|
const relationship = useRelationship(accountId);
|
||||||
|
|
||||||
|
const createdThisYear = useMemo(
|
||||||
|
() => account?.created_at.includes(new Date().getFullYear().toString()),
|
||||||
|
[account?.created_at],
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!accountId || !account) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const firstVerifiedField = account.fields.find((item) => !!item.verified_at);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className={classes.wrapper} data-with-border={withBorder}>
|
||||||
|
<div className={classes.header}>
|
||||||
|
<Account
|
||||||
|
id={accountId}
|
||||||
|
minimal
|
||||||
|
size={40}
|
||||||
|
withMenu={false}
|
||||||
|
withBorder={false}
|
||||||
|
className={classes.account}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{renderButton({ accountId, relationship })}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<NumberFields>
|
||||||
|
{stats.includes('followers') && (
|
||||||
|
<NumberFieldsItem
|
||||||
|
label={
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.followers'
|
||||||
|
defaultMessage='Followers'
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
hint={intl.formatNumber(account.followers_count)}
|
||||||
|
>
|
||||||
|
<ShortNumber value={account.followers_count} />
|
||||||
|
</NumberFieldsItem>
|
||||||
|
)}
|
||||||
|
{stats.includes('following') && (
|
||||||
|
<NumberFieldsItem
|
||||||
|
label={
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.following'
|
||||||
|
defaultMessage='Following'
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
hint={intl.formatNumber(account.following_count)}
|
||||||
|
link={`/@${account.acct}/following`}
|
||||||
|
>
|
||||||
|
<ShortNumber value={account.following_count} />
|
||||||
|
</NumberFieldsItem>
|
||||||
|
)}
|
||||||
|
{stats.includes('posts') && (
|
||||||
|
<NumberFieldsItem
|
||||||
|
label={
|
||||||
|
<FormattedMessage id='account.posts' defaultMessage='Posts' />
|
||||||
|
}
|
||||||
|
hint={intl.formatNumber(account.statuses_count)}
|
||||||
|
>
|
||||||
|
<ShortNumber value={account.statuses_count} />
|
||||||
|
</NumberFieldsItem>
|
||||||
|
)}
|
||||||
|
{stats.includes('joined') && (
|
||||||
|
<NumberFieldsItem
|
||||||
|
label={
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.joined_short'
|
||||||
|
defaultMessage='Joined'
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
hint={intl.formatDate(account.created_at)}
|
||||||
|
>
|
||||||
|
{createdThisYear ? (
|
||||||
|
<FormattedDateWrapper
|
||||||
|
value={account.created_at}
|
||||||
|
month='short'
|
||||||
|
day='2-digit'
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<FormattedDateWrapper value={account.created_at} year='numeric' />
|
||||||
|
)}
|
||||||
|
</NumberFieldsItem>
|
||||||
|
)}
|
||||||
|
{stats.includes('last-active') && (
|
||||||
|
<NumberFieldsItem
|
||||||
|
label={
|
||||||
|
<FormattedMessage
|
||||||
|
id='account.last_active'
|
||||||
|
defaultMessage='Last active'
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<RelativeTimestamp
|
||||||
|
long
|
||||||
|
timestamp={account.last_status_at}
|
||||||
|
noFuture
|
||||||
|
/>
|
||||||
|
</NumberFieldsItem>
|
||||||
|
)}
|
||||||
|
{firstVerifiedField && (
|
||||||
|
<VerifiedBadge
|
||||||
|
link={firstVerifiedField.value}
|
||||||
|
className={classes.verifiedBadge}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</NumberFields>
|
||||||
|
<FamiliarFollowers accountId={accountId} />
|
||||||
|
{account.note.length > 0 && (
|
||||||
|
<EmojiHTML
|
||||||
|
className={classNames(classes.bio, 'translate')}
|
||||||
|
htmlString={account.note_emojified}
|
||||||
|
extraEmojis={account.emojis}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const defaultRenderButton = ({ accountId }: RenderButtonOptions) => (
|
||||||
|
<AccountListItemFollowButton accountId={accountId} />
|
||||||
|
);
|
||||||
|
|
||||||
|
export const AccountListItemFollowButton: React.FC<{
|
||||||
|
accountId: string | undefined;
|
||||||
|
}> = ({ accountId }) => (
|
||||||
|
<FollowButton compact labelLength='short' accountId={accountId} />
|
||||||
|
);
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
.wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: start;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px;
|
||||||
|
|
||||||
|
&[data-with-border='true'] {
|
||||||
|
border-bottom: 1px solid var(--color-border-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(.account__note) {
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
line-clamp: 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
align-items: start;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account {
|
||||||
|
--account-name-size: 15px;
|
||||||
|
--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;
|
||||||
|
margin-inline-end: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.verifiedBadge {
|
||||||
|
align-self: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bio {
|
||||||
|
:any-link {
|
||||||
|
color: var(--color-text-status-links);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -35,6 +35,12 @@ export const Domain: Story = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const Verified: Story = {
|
||||||
|
render() {
|
||||||
|
return <badges.VerifiedBadge link='example.com' />;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
export const CustomIcon: Story = {
|
export const CustomIcon: Story = {
|
||||||
args: {
|
args: {
|
||||||
...Default.args,
|
...Default.args,
|
||||||
|
|||||||
@ -5,18 +5,22 @@ import { FormattedMessage, useIntl } from 'react-intl';
|
|||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
|
|
||||||
import AdminIcon from '@/images/icons/icon_admin.svg?react';
|
import AdminIcon from '@/images/icons/icon_admin.svg?react';
|
||||||
|
import IconVerified from '@/images/icons/icon_verified.svg?react';
|
||||||
|
import type { OnAttributeHandler } from '@/mastodon/utils/html';
|
||||||
import BlockIcon from '@/material-icons/400-24px/block.svg?react';
|
import BlockIcon from '@/material-icons/400-24px/block.svg?react';
|
||||||
import GroupsIcon from '@/material-icons/400-24px/group.svg?react';
|
import GroupsIcon from '@/material-icons/400-24px/group.svg?react';
|
||||||
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
||||||
import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react';
|
import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react';
|
||||||
import VolumeOffIcon from '@/material-icons/400-24px/volume_off.svg?react';
|
import VolumeOffIcon from '@/material-icons/400-24px/volume_off.svg?react';
|
||||||
|
|
||||||
|
import { EmojiHTML } from '../emoji/html';
|
||||||
|
import { Icon } from '../icon';
|
||||||
|
|
||||||
import classes from './styles.module.scss';
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
interface BadgeProps {
|
interface BadgeProps extends React.ComponentPropsWithoutRef<'div'> {
|
||||||
label: ReactNode;
|
label: ReactNode;
|
||||||
icon?: ReactNode;
|
icon?: ReactNode;
|
||||||
className?: string;
|
|
||||||
domain?: ReactNode;
|
domain?: ReactNode;
|
||||||
roleId?: string;
|
roleId?: string;
|
||||||
variant?:
|
variant?:
|
||||||
@ -35,9 +39,16 @@ export const Badge: FC<BadgeProps> = ({
|
|||||||
className,
|
className,
|
||||||
domain,
|
domain,
|
||||||
roleId,
|
roleId,
|
||||||
|
...otherProps
|
||||||
}) => (
|
}) => (
|
||||||
<div
|
<div
|
||||||
className={classNames(classes.badge, classes[variant], className)}
|
{...otherProps}
|
||||||
|
className={classNames(
|
||||||
|
classes.badge,
|
||||||
|
!icon && classes.badgeWithoutIcon,
|
||||||
|
classes[variant],
|
||||||
|
className,
|
||||||
|
)}
|
||||||
data-account-role-id={roleId}
|
data-account-role-id={roleId}
|
||||||
>
|
>
|
||||||
{icon}
|
{icon}
|
||||||
@ -134,3 +145,31 @@ export const BlockedBadge: FC<Partial<BadgeProps>> = ({ label, ...props }) => (
|
|||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const onAttribute: OnAttributeHandler = (name, value, tagName) => {
|
||||||
|
if (name === 'rel' && tagName === 'a') {
|
||||||
|
if (value === 'me') {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return [
|
||||||
|
name,
|
||||||
|
value
|
||||||
|
.split(' ')
|
||||||
|
.filter((x) => x !== 'me')
|
||||||
|
.join(' '),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const VerifiedBadge: React.FC<{ link: string; className?: string }> = ({
|
||||||
|
link,
|
||||||
|
className,
|
||||||
|
}) => (
|
||||||
|
<Badge
|
||||||
|
variant='success'
|
||||||
|
icon={<Icon id='verified' icon={IconVerified} noFill />}
|
||||||
|
label={<EmojiHTML as='span' htmlString={link} onAttribute={onAttribute} />}
|
||||||
|
className={className}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|||||||
@ -2,18 +2,28 @@
|
|||||||
color: var(--color-text-primary);
|
color: var(--color-text-primary);
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
|
max-width: 100%;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
padding-inline-end: 8px;
|
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
border-radius: 6px;
|
border-radius: 8px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
|
||||||
> svg {
|
> svg {
|
||||||
width: auto;
|
width: auto;
|
||||||
height: 15px;
|
height: 17px;
|
||||||
fill: currentColor;
|
fill: currentColor;
|
||||||
opacity: 0.85;
|
opacity: 0.85;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.badgeWithoutIcon) {
|
||||||
|
padding-inline-end: 8px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.domain {
|
.domain {
|
||||||
@ -41,7 +51,6 @@
|
|||||||
|
|
||||||
.success {
|
.success {
|
||||||
background-color: var(--color-bg-success-softest);
|
background-color: var(--color-bg-success-softest);
|
||||||
color: var(--color-text-success);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.warning {
|
.warning {
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
import classNames from 'classnames';
|
||||||
|
|
||||||
import { Avatar } from '@/mastodon/components/avatar';
|
import { Avatar } from '@/mastodon/components/avatar';
|
||||||
import { AvatarGroup } from '@/mastodon/components/avatar_group';
|
import { AvatarGroup } from '@/mastodon/components/avatar_group';
|
||||||
import { LinkedDisplayName } from '@/mastodon/components/display_name';
|
import { LinkedDisplayName } from '@/mastodon/components/display_name';
|
||||||
import type { Account } from '@/mastodon/models/account';
|
import type { Account } from '@/mastodon/models/account';
|
||||||
|
|
||||||
import { useFetchFamiliarFollowers } from '../hooks/familiar_followers';
|
import classes from './styles.module.scss';
|
||||||
|
import { useFetchFamiliarFollowers } from './use_fetch_familiar_followers';
|
||||||
|
|
||||||
const FamiliarFollowersReadout: React.FC<{ familiarFollowers: Account[] }> = ({
|
const FamiliarFollowersReadout: React.FC<{ familiarFollowers: Account[] }> = ({
|
||||||
familiarFollowers,
|
familiarFollowers,
|
||||||
@ -51,9 +54,10 @@ const FamiliarFollowersReadout: React.FC<{ familiarFollowers: Account[] }> = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const FamiliarFollowers: React.FC<{ accountId: string }> = ({
|
export const FamiliarFollowers: React.FC<{
|
||||||
accountId,
|
accountId: string;
|
||||||
}) => {
|
className?: string;
|
||||||
|
}> = ({ accountId, className }) => {
|
||||||
const { familiarFollowers, isLoading } = useFetchFamiliarFollowers({
|
const { familiarFollowers, isLoading } = useFetchFamiliarFollowers({
|
||||||
accountId,
|
accountId,
|
||||||
});
|
});
|
||||||
@ -63,10 +67,10 @@ export const FamiliarFollowers: React.FC<{ accountId: string }> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='account__header__familiar-followers'>
|
<div className={classNames(classes.wrapper, className)}>
|
||||||
<AvatarGroup compact>
|
<AvatarGroup compact avatarHeight={24}>
|
||||||
{familiarFollowers.slice(0, 3).map((account) => (
|
{familiarFollowers.slice(0, 3).map((account) => (
|
||||||
<Avatar withLink key={account.id} account={account} size={28} />
|
<Avatar withLink key={account.id} account={account} size={24} />
|
||||||
))}
|
))}
|
||||||
</AvatarGroup>
|
</AvatarGroup>
|
||||||
<span>
|
<span>
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
.wrapper {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
a:any-link {
|
||||||
|
font-weight: 500;
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--color-text-primary);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,6 +5,7 @@ import { FormattedMessage } from 'react-intl';
|
|||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { useFetchFamiliarFollowers } from '@/mastodon/components/familiar_followers/use_fetch_familiar_followers';
|
||||||
import { fetchAccount } from 'mastodon/actions/accounts';
|
import { fetchAccount } from 'mastodon/actions/accounts';
|
||||||
import { AccountBio } from 'mastodon/components/account_bio';
|
import { AccountBio } from 'mastodon/components/account_bio';
|
||||||
import { AccountFields } from 'mastodon/components/account_fields';
|
import { AccountFields } from 'mastodon/components/account_fields';
|
||||||
@ -18,7 +19,6 @@ import { DisplayName } from 'mastodon/components/display_name';
|
|||||||
import { FollowButton } from 'mastodon/components/follow_button';
|
import { FollowButton } from 'mastodon/components/follow_button';
|
||||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
||||||
import { ShortNumber } from 'mastodon/components/short_number';
|
import { ShortNumber } from 'mastodon/components/short_number';
|
||||||
import { useFetchFamiliarFollowers } from 'mastodon/features/account_timeline/hooks/familiar_followers';
|
|
||||||
import { domain } from 'mastodon/initial_state';
|
import { domain } from 'mastodon/initial_state';
|
||||||
import { getAccountHidden } from 'mastodon/selectors/accounts';
|
import { getAccountHidden } from 'mastodon/selectors/accounts';
|
||||||
import { useAppSelector, useAppDispatch } from 'mastodon/store';
|
import { useAppSelector, useAppDispatch } from 'mastodon/store';
|
||||||
|
|||||||
@ -1,22 +1,21 @@
|
|||||||
|
import classNames from 'classnames';
|
||||||
import { NavLink } from 'react-router-dom';
|
import { NavLink } from 'react-router-dom';
|
||||||
|
|
||||||
import type { MastodonLocationDescriptor } from 'mastodon/components/router';
|
import type { MastodonLocationDescriptor } from 'mastodon/components/router';
|
||||||
|
|
||||||
import classes from './styles.module.scss';
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
interface WrapperProps {
|
export const NumberFields: React.FC<React.ComponentPropsWithoutRef<'ul'>> = ({
|
||||||
children: React.ReactNode;
|
children,
|
||||||
}
|
className,
|
||||||
|
}) => {
|
||||||
export const NumberFields: React.FC<WrapperProps> = ({ children }) => {
|
return <ul className={classNames(classes.list, className)}>{children}</ul>;
|
||||||
return <ul className={classes.list}>{children}</ul>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
interface ItemProps {
|
interface ItemProps extends React.ComponentPropsWithoutRef<'li'> {
|
||||||
label: React.ReactNode;
|
label: React.ReactNode;
|
||||||
hint?: string;
|
hint?: string;
|
||||||
link?: MastodonLocationDescriptor;
|
link?: MastodonLocationDescriptor;
|
||||||
children: React.ReactNode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const NumberFieldsItem: React.FC<ItemProps> = ({
|
export const NumberFieldsItem: React.FC<ItemProps> = ({
|
||||||
@ -24,9 +23,10 @@ export const NumberFieldsItem: React.FC<ItemProps> = ({
|
|||||||
hint,
|
hint,
|
||||||
link,
|
link,
|
||||||
children,
|
children,
|
||||||
|
className,
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
<li className={classes.item} title={hint}>
|
<li className={classNames(classes.item, className)} title={hint}>
|
||||||
{label}
|
{label}
|
||||||
{link ? (
|
{link ? (
|
||||||
<NavLink exact to={link}>
|
<NavLink exact to={link}>
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
.list {
|
.list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin: 8px 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
gap: 4px 20px;
|
gap: 4px 24px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
color: var(--color-text-secondary);
|
color: var(--color-text-secondary);
|
||||||
}
|
}
|
||||||
@ -19,6 +19,7 @@
|
|||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: var(--color-text-primary);
|
color: var(--color-text-primary);
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
|||||||
@ -1,32 +0,0 @@
|
|||||||
import { EmojiHTML } from '@/mastodon/components/emoji/html';
|
|
||||||
import CheckIcon from '@/material-icons/400-24px/check.svg?react';
|
|
||||||
|
|
||||||
import type { OnAttributeHandler } from '../utils/html';
|
|
||||||
|
|
||||||
import { Icon } from './icon';
|
|
||||||
|
|
||||||
const onAttribute: OnAttributeHandler = (name, value, tagName) => {
|
|
||||||
if (name === 'rel' && tagName === 'a') {
|
|
||||||
if (value === 'me') {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return [
|
|
||||||
name,
|
|
||||||
value
|
|
||||||
.split(' ')
|
|
||||||
.filter((x) => x !== 'me')
|
|
||||||
.join(' '),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
return undefined;
|
|
||||||
};
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
link: string;
|
|
||||||
}
|
|
||||||
export const VerifiedBadge: React.FC<Props> = ({ link }) => (
|
|
||||||
<span className='verified-badge'>
|
|
||||||
<Icon id='check' icon={CheckIcon} className='verified-badge__mark' />
|
|
||||||
<EmojiHTML as='span' htmlString={link} onAttribute={onAttribute} />
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
@ -19,17 +19,17 @@ import type { Account } from '@/mastodon/models/account';
|
|||||||
import { getAccountHidden } from '@/mastodon/selectors/accounts';
|
import { getAccountHidden } from '@/mastodon/selectors/accounts';
|
||||||
import { useAppSelector, useAppDispatch } from '@/mastodon/store';
|
import { useAppSelector, useAppDispatch } from '@/mastodon/store';
|
||||||
|
|
||||||
|
import { FamiliarFollowers } from '../../../components/familiar_followers';
|
||||||
|
|
||||||
import { AccountName } from './account_name';
|
import { AccountName } from './account_name';
|
||||||
import { AccountSubscriptionForm } from './account_subscription_form';
|
import { AccountSubscriptionForm } from './account_subscription_form';
|
||||||
import { AccountBadges } from './badges';
|
|
||||||
import { AccountButtons } from './buttons';
|
import { AccountButtons } from './buttons';
|
||||||
import { FamiliarFollowers } from './familiar_followers';
|
|
||||||
import { AccountHeaderFields } from './fields';
|
import { AccountHeaderFields } from './fields';
|
||||||
import { MemorialNote } from './memorial_note';
|
import { MemorialNote } from './memorial_note';
|
||||||
import { MovedNote } from './moved_note';
|
import { MovedNote } from './moved_note';
|
||||||
import { AccountNote as AccountNoteRedesign } from './note';
|
import { AccountNote } from './note';
|
||||||
import { AccountNumberFields } from './number_fields';
|
import { AccountNumberFields } from './number_fields';
|
||||||
import redesignClasses from './redesign.module.scss';
|
import classes from './styles.module.scss';
|
||||||
import { AccountTabs } from './tabs';
|
import { AccountTabs } from './tabs';
|
||||||
|
|
||||||
const titleFromAccount = (account: Account) => {
|
const titleFromAccount = (account: Account) => {
|
||||||
@ -111,12 +111,7 @@ export const AccountHeader: React.FC<{
|
|||||||
<FollowRequestNoteContainer account={account} />
|
<FollowRequestNoteContainer account={account} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<div
|
<div className={classNames('account__header__image', classes.header)}>
|
||||||
className={classNames(
|
|
||||||
'account__header__image',
|
|
||||||
redesignClasses.header,
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
{!suspendedOrHidden && (
|
{!suspendedOrHidden && (
|
||||||
<img
|
<img
|
||||||
src={autoPlayGif ? account.header : account.header_static}
|
src={autoPlayGif ? account.header : account.header_static}
|
||||||
@ -126,16 +121,11 @@ export const AccountHeader: React.FC<{
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div className={classNames('account__header__bar', classes.barWrapper)}>
|
||||||
className={classNames(
|
|
||||||
'account__header__bar',
|
|
||||||
redesignClasses.barWrapper,
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<div
|
<div
|
||||||
className={classNames(
|
className={classNames(
|
||||||
'account__header__tabs',
|
'account__header__tabs',
|
||||||
redesignClasses.avatarWrapper,
|
classes.avatarWrapper,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
@ -156,31 +146,32 @@ export const AccountHeader: React.FC<{
|
|||||||
<div
|
<div
|
||||||
className={classNames(
|
className={classNames(
|
||||||
'account__header__tabs__name',
|
'account__header__tabs__name',
|
||||||
redesignClasses.displayNameWrapper,
|
classes.displayNameWrapper,
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<AccountName accountId={accountId} />
|
<AccountName accountId={accountId} />
|
||||||
<AccountButtons
|
<AccountButtons
|
||||||
accountId={accountId}
|
accountId={accountId}
|
||||||
className={redesignClasses.buttonsDesktop}
|
className={classes.buttonsDesktop}
|
||||||
noShare={!isMe || 'share' in navigator}
|
noShare={!isMe || 'share' in navigator}
|
||||||
forceMenu={'share' in navigator}
|
forceMenu={'share' in navigator}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<AccountBadges accountId={accountId} />
|
|
||||||
|
|
||||||
<AccountNumberFields accountId={accountId} />
|
<AccountNumberFields accountId={accountId} />
|
||||||
|
|
||||||
{!isMe && !suspendedOrHidden && (
|
{!isMe && !suspendedOrHidden && (
|
||||||
<FamiliarFollowers accountId={accountId} />
|
<FamiliarFollowers
|
||||||
|
accountId={accountId}
|
||||||
|
className={classes.familiarFollowers}
|
||||||
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{!suspendedOrHidden && (
|
{!suspendedOrHidden && (
|
||||||
<div className='account__header__extra'>
|
<div className='account__header__extra'>
|
||||||
<div className='account__header__bio'>
|
<div className='account__header__bio'>
|
||||||
{me && account.id !== me && (
|
{me && account.id !== me && (
|
||||||
<AccountNoteRedesign accountId={accountId} />
|
<AccountNote accountId={accountId} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<AccountBio
|
<AccountBio
|
||||||
@ -188,7 +179,7 @@ export const AccountHeader: React.FC<{
|
|||||||
accountId={accountId}
|
accountId={accountId}
|
||||||
className={classNames(
|
className={classNames(
|
||||||
'account__header__content',
|
'account__header__content',
|
||||||
redesignClasses.bio,
|
classes.bio,
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@ -203,8 +194,8 @@ export const AccountHeader: React.FC<{
|
|||||||
|
|
||||||
<AccountButtons
|
<AccountButtons
|
||||||
className={classNames(
|
className={classNames(
|
||||||
redesignClasses.buttonsMobile,
|
classes.buttonsMobile,
|
||||||
!isIntersecting && redesignClasses.buttonsMobileIsStuck,
|
!isIntersecting && classes.buttonsMobileIsStuck,
|
||||||
)}
|
)}
|
||||||
accountId={accountId}
|
accountId={accountId}
|
||||||
noShare
|
noShare
|
||||||
|
|||||||
@ -21,7 +21,8 @@ import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
|
|||||||
import HelpIcon from '@/material-icons/400-24px/help.svg?react';
|
import HelpIcon from '@/material-icons/400-24px/help.svg?react';
|
||||||
import DomainIcon from '@/material-icons/400-24px/language.svg?react';
|
import DomainIcon from '@/material-icons/400-24px/language.svg?react';
|
||||||
|
|
||||||
import classes from './redesign.module.scss';
|
import { AccountBadges } from './badges';
|
||||||
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
lockedInfo: {
|
lockedInfo: {
|
||||||
@ -77,6 +78,8 @@ export const AccountName: FC<{ accountId: string }> = ({ accountId }) => {
|
|||||||
domain={domain}
|
domain={domain}
|
||||||
isSelf={account.id === me}
|
isSelf={account.id === me}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<AccountBadges accountId={accountId} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { useState, useCallback, useId } from 'react';
|
|||||||
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
||||||
import type { IntlShape } from 'react-intl';
|
import type { IntlShape } from 'react-intl';
|
||||||
|
|
||||||
|
import classNames from 'classnames';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
import { AxiosError } from 'axios';
|
import { AxiosError } from 'axios';
|
||||||
@ -18,7 +19,7 @@ import type { FieldStatus } from 'mastodon/components/form_fields';
|
|||||||
import { TextInputField } from 'mastodon/components/form_fields/text_input_field';
|
import { TextInputField } from 'mastodon/components/form_fields/text_input_field';
|
||||||
import { useAppSelector } from 'mastodon/store';
|
import { useAppSelector } from 'mastodon/store';
|
||||||
|
|
||||||
import classes from './redesign.module.scss';
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
emailInvalid: {
|
emailInvalid: {
|
||||||
@ -127,7 +128,9 @@ export const AccountSubscriptionForm: React.FC<{ accountId: string }> = ({
|
|||||||
|
|
||||||
if (submitted) {
|
if (submitted) {
|
||||||
return (
|
return (
|
||||||
<div className={classes.bannerBaseCentered}>
|
<div
|
||||||
|
className={classNames(classes.bannerBase, classes.bannerBaseCentered)}
|
||||||
|
>
|
||||||
<div className={classes.bannerTextAndActions}>
|
<div className={classes.bannerTextAndActions}>
|
||||||
<h2>
|
<h2>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
|
|||||||
@ -16,6 +16,8 @@ import { useAccount } from '@/mastodon/hooks/useAccount';
|
|||||||
import type { AccountRole } from '@/mastodon/models/account';
|
import type { AccountRole } from '@/mastodon/models/account';
|
||||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||||
|
|
||||||
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
export const AccountBadges: FC<{ accountId: string }> = ({ accountId }) => {
|
export const AccountBadges: FC<{ accountId: string }> = ({ accountId }) => {
|
||||||
const account = useAccount(accountId);
|
const account = useAccount(accountId);
|
||||||
const localDomain = useAppSelector(
|
const localDomain = useAppSelector(
|
||||||
@ -101,7 +103,7 @@ export const AccountBadges: FC<{ accountId: string }> = ({ accountId }) => {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return <div className={'account__header__badges'}>{badges}</div>;
|
return <div className={classes.badges}>{badges}</div>;
|
||||||
};
|
};
|
||||||
|
|
||||||
function isAdminBadge(role: AccountRole) {
|
function isAdminBadge(role: AccountRole) {
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import { cleanExtraEmojis } from '../../emoji/normalize';
|
|||||||
import type { AccountField } from '../common';
|
import type { AccountField } from '../common';
|
||||||
import { useFieldHtml } from '../hooks/useFieldHtml';
|
import { useFieldHtml } from '../hooks/useFieldHtml';
|
||||||
|
|
||||||
import classes from './redesign.module.scss';
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
const verifyMessage = defineMessage({
|
const verifyMessage = defineMessage({
|
||||||
id: 'account.link_verified_on',
|
id: 'account.link_verified_on',
|
||||||
@ -285,11 +285,14 @@ function useColumnWrap() {
|
|||||||
if (!item) {
|
if (!item) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { ele, span } = item;
|
const { ele, span } = item;
|
||||||
|
|
||||||
if (i < row.length - 1) {
|
if (i < row.length - 1) {
|
||||||
ele.dataset.cols = span.toString();
|
ele.dataset.cols = span.toString();
|
||||||
remainingRowSpan -= span;
|
remainingRowSpan -= span;
|
||||||
} else if (
|
} else if (
|
||||||
|
row.length > 1 &&
|
||||||
row.length === halfColSpan &&
|
row.length === halfColSpan &&
|
||||||
span === 1 &&
|
span === 1 &&
|
||||||
remainingRowSpan > 1
|
remainingRowSpan > 1
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import type { FC } from 'react';
|
|||||||
import { defineMessages, useIntl } from 'react-intl';
|
import { defineMessages, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
blockAccount,
|
|
||||||
followAccount,
|
followAccount,
|
||||||
pinAccount,
|
pinAccount,
|
||||||
unblockAccount,
|
unblockAccount,
|
||||||
@ -13,6 +12,7 @@ import {
|
|||||||
} from '@/mastodon/actions/accounts';
|
} from '@/mastodon/actions/accounts';
|
||||||
import { removeAccountFromFollowers } from '@/mastodon/actions/accounts_typed';
|
import { removeAccountFromFollowers } from '@/mastodon/actions/accounts_typed';
|
||||||
import { showAlert } from '@/mastodon/actions/alerts';
|
import { showAlert } from '@/mastodon/actions/alerts';
|
||||||
|
import { initBlockModal } from '@/mastodon/actions/blocks';
|
||||||
import { directCompose, mentionCompose } from '@/mastodon/actions/compose';
|
import { directCompose, mentionCompose } from '@/mastodon/actions/compose';
|
||||||
import {
|
import {
|
||||||
initDomainBlockModal,
|
initDomainBlockModal,
|
||||||
@ -40,7 +40,7 @@ import PersonRemoveIcon from '@/material-icons/400-24px/person_remove.svg?react'
|
|||||||
import ReportIcon from '@/material-icons/400-24px/report.svg?react';
|
import ReportIcon from '@/material-icons/400-24px/report.svg?react';
|
||||||
import ShareIcon from '@/material-icons/400-24px/share.svg?react';
|
import ShareIcon from '@/material-icons/400-24px/share.svg?react';
|
||||||
|
|
||||||
import classes from './redesign.module.scss';
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
export const AccountMenu: FC<{ accountId: string }> = ({ accountId }) => {
|
export const AccountMenu: FC<{ accountId: string }> = ({ accountId }) => {
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
@ -61,7 +61,7 @@ export const AccountMenu: FC<{ accountId: string }> = ({ accountId }) => {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return redesignMenuItems({
|
return getMenuItems({
|
||||||
account,
|
account,
|
||||||
signedIn: !isMe && signedIn,
|
signedIn: !isMe && signedIn,
|
||||||
permissions,
|
permissions,
|
||||||
@ -223,7 +223,7 @@ const redesignMessages = defineMessages({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
function redesignMenuItems({
|
function getMenuItems({
|
||||||
account,
|
account,
|
||||||
signedIn,
|
signedIn,
|
||||||
permissions,
|
permissions,
|
||||||
@ -435,7 +435,7 @@ function redesignMenuItems({
|
|||||||
if (relationship?.blocking) {
|
if (relationship?.blocking) {
|
||||||
dispatch(unblockAccount(account.id));
|
dispatch(unblockAccount(account.id));
|
||||||
} else {
|
} else {
|
||||||
dispatch(blockAccount(account.id));
|
dispatch(initBlockModal(account));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dangerous: true,
|
dangerous: true,
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import { IconButton } from '@/mastodon/components/icon_button';
|
|||||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||||
import EditIcon from '@/material-icons/400-24px/edit_square.svg?react';
|
import EditIcon from '@/material-icons/400-24px/edit_square.svg?react';
|
||||||
|
|
||||||
import classes from './redesign.module.scss';
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
title: {
|
title: {
|
||||||
|
|||||||
@ -28,14 +28,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
display: flex;
|
|
||||||
gap: 2px;
|
|
||||||
align-items: baseline;
|
|
||||||
|
|
||||||
> h1 {
|
> h1 {
|
||||||
|
display: inline;
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
line-height: normal;
|
line-height: normal;
|
||||||
white-space: initial;
|
white-space: initial;
|
||||||
|
margin-inline-end: 4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,6 +41,10 @@
|
|||||||
color: var(--color-text-secondary);
|
color: var(--color-text-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.badges {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
.handleHelpButton {
|
.handleHelpButton {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 2px;
|
gap: 2px;
|
||||||
@ -191,6 +193,10 @@ $button-fallback-breakpoint: $button-breakpoint + 55px;
|
|||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.familiarFollowers {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.note {
|
.note {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
@ -406,6 +412,15 @@ $button-fallback-breakpoint: $button-breakpoint + 55px;
|
|||||||
margin: 16px 0;
|
margin: 16px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bannerBaseCentered {
|
||||||
|
min-height: 146px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.bannerTextAndActions {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.bannerTextAndActions {
|
.bannerTextAndActions {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -426,16 +441,6 @@ $button-fallback-breakpoint: $button-breakpoint + 55px;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bannerBaseCentered {
|
|
||||||
composes: bannerBase;
|
|
||||||
min-height: 146px;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.bannerTextAndActions {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bannerInputButton {
|
.bannerInputButton {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
@ -10,7 +10,7 @@ import { useAccountId } from '@/mastodon/hooks/useAccountId';
|
|||||||
|
|
||||||
import { areCollectionsEnabled } from '../../collections/utils';
|
import { areCollectionsEnabled } from '../../collections/utils';
|
||||||
|
|
||||||
import classes from './redesign.module.scss';
|
import classes from './styles.module.scss';
|
||||||
|
|
||||||
const isActive: Required<NavLinkProps>['isActive'] = (match, location) =>
|
const isActive: Required<NavLinkProps>['isActive'] = (match, location) =>
|
||||||
match?.url === location.pathname ||
|
match?.url === location.pathname ||
|
||||||
|
|||||||
@ -3,22 +3,17 @@ import { useCallback, useRef, useState } from 'react';
|
|||||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
import type { ApiCollectionJSON } from 'mastodon/api_types/collections';
|
import type { ApiCollectionJSON } from 'mastodon/api_types/collections';
|
||||||
import { Account } from 'mastodon/components/account';
|
import type { RenderButtonOptions } from 'mastodon/components/account_list_item';
|
||||||
|
import {
|
||||||
|
AccountListItem,
|
||||||
|
AccountListItemFollowButton,
|
||||||
|
} from 'mastodon/components/account_list_item';
|
||||||
import { Button } from 'mastodon/components/button';
|
import { Button } from 'mastodon/components/button';
|
||||||
import { Callout } from 'mastodon/components/callout';
|
import { Callout } from 'mastodon/components/callout';
|
||||||
import { FollowButton } from 'mastodon/components/follow_button';
|
|
||||||
import {
|
|
||||||
NumberFields,
|
|
||||||
NumberFieldsItem,
|
|
||||||
} from 'mastodon/components/number_fields';
|
|
||||||
import { RelativeTimestamp } from 'mastodon/components/relative_timestamp';
|
|
||||||
import {
|
import {
|
||||||
Article,
|
Article,
|
||||||
ItemList,
|
ItemList,
|
||||||
} from 'mastodon/components/scrollable_list/components';
|
} from 'mastodon/components/scrollable_list/components';
|
||||||
import { ShortNumber } from 'mastodon/components/short_number';
|
|
||||||
import { useAccount } from 'mastodon/hooks/useAccount';
|
|
||||||
import { useRelationship } from 'mastodon/hooks/useRelationship';
|
|
||||||
import { me } from 'mastodon/initial_state';
|
import { me } from 'mastodon/initial_state';
|
||||||
|
|
||||||
import { useConfirmRevoke } from './revoke_collection_inclusion_modal';
|
import { useConfirmRevoke } from './revoke_collection_inclusion_modal';
|
||||||
@ -31,99 +26,6 @@ const messages = defineMessages({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const AccountItem: React.FC<{
|
|
||||||
accountId: string | undefined;
|
|
||||||
collectionOwnerId: string;
|
|
||||||
onRevoke: () => void;
|
|
||||||
withBio?: boolean;
|
|
||||||
withBorder?: boolean;
|
|
||||||
}> = ({
|
|
||||||
accountId,
|
|
||||||
collectionOwnerId,
|
|
||||||
onRevoke,
|
|
||||||
withBio = true,
|
|
||||||
withBorder = true,
|
|
||||||
}) => {
|
|
||||||
const intl = useIntl();
|
|
||||||
const account = useAccount(accountId);
|
|
||||||
const relationship = useRelationship(accountId);
|
|
||||||
|
|
||||||
if (!accountId || !account) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// When viewing your own collection, only show the Follow button
|
|
||||||
// for accounts you're not following (anymore).
|
|
||||||
// Otherwise, always show the follow button in its various states.
|
|
||||||
const isOwnAccount = accountId === me;
|
|
||||||
const withoutButton =
|
|
||||||
isOwnAccount ||
|
|
||||||
!relationship ||
|
|
||||||
(collectionOwnerId === me &&
|
|
||||||
(relationship.following || relationship.requested));
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className={classes.accountItemWrapper} data-with-border={withBorder}>
|
|
||||||
<Account
|
|
||||||
minimal
|
|
||||||
id={accountId}
|
|
||||||
withBio={withBio}
|
|
||||||
withBorder={false}
|
|
||||||
withMenu={false}
|
|
||||||
className={classes.accountItem}
|
|
||||||
extraAccountInfo={
|
|
||||||
<NumberFields>
|
|
||||||
<NumberFieldsItem
|
|
||||||
label={
|
|
||||||
<FormattedMessage
|
|
||||||
id='account.followers'
|
|
||||||
defaultMessage='Followers'
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
hint={intl.formatNumber(account.followers_count)}
|
|
||||||
>
|
|
||||||
<ShortNumber value={account.followers_count} />
|
|
||||||
</NumberFieldsItem>
|
|
||||||
|
|
||||||
<NumberFieldsItem
|
|
||||||
label={
|
|
||||||
<FormattedMessage id='account.posts' defaultMessage='Posts' />
|
|
||||||
}
|
|
||||||
hint={intl.formatNumber(account.statuses_count)}
|
|
||||||
>
|
|
||||||
<ShortNumber value={account.statuses_count} />
|
|
||||||
</NumberFieldsItem>
|
|
||||||
|
|
||||||
<NumberFieldsItem
|
|
||||||
label={
|
|
||||||
<FormattedMessage
|
|
||||||
id='account.last_active'
|
|
||||||
defaultMessage='Last active'
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<RelativeTimestamp
|
|
||||||
long
|
|
||||||
timestamp={account.last_status_at}
|
|
||||||
noFuture
|
|
||||||
/>
|
|
||||||
</NumberFieldsItem>
|
|
||||||
</NumberFields>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
{!withoutButton && <FollowButton compact accountId={accountId} />}
|
|
||||||
{isOwnAccount && (
|
|
||||||
<Button secondary compact onClick={onRevoke}>
|
|
||||||
<FormattedMessage
|
|
||||||
id='collections.detail.revoke_inclusion'
|
|
||||||
defaultMessage='Remove me'
|
|
||||||
/>
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const SensitiveScreen: React.FC<{
|
const SensitiveScreen: React.FC<{
|
||||||
sensitive: boolean | undefined;
|
sensitive: boolean | undefined;
|
||||||
focusTargetRef: React.RefObject<HTMLHeadingElement>;
|
focusTargetRef: React.RefObject<HTMLHeadingElement>;
|
||||||
@ -158,6 +60,7 @@ const SensitiveScreen: React.FC<{
|
|||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
onPrimary={showAnyway}
|
onPrimary={showAnyway}
|
||||||
|
className={classes.sensitiveScreen}
|
||||||
>
|
>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='collections.detail.sensitive_note'
|
id='collections.detail.sensitive_note'
|
||||||
@ -176,14 +79,37 @@ export const CollectionAccountsList: React.FC<{
|
|||||||
const listHeadingRef = useRef<HTMLHeadingElement>(null);
|
const listHeadingRef = useRef<HTMLHeadingElement>(null);
|
||||||
|
|
||||||
const isOwnCollection = collection?.account_id === me;
|
const isOwnCollection = collection?.account_id === me;
|
||||||
const { items = [] } = collection ?? {};
|
const { items = [], account_id: collectionOwnerId } = collection ?? {};
|
||||||
|
|
||||||
|
const renderAccountItemButton = useCallback(
|
||||||
|
({ relationship, accountId }: RenderButtonOptions) => {
|
||||||
|
// When viewing your own collection, only show the Follow button
|
||||||
|
// for accounts you're not following anymore.
|
||||||
|
const withoutButton =
|
||||||
|
!relationship ||
|
||||||
|
(collectionOwnerId === me &&
|
||||||
|
(relationship.following || relationship.requested));
|
||||||
|
|
||||||
|
if (withoutButton) return null;
|
||||||
|
|
||||||
|
if (accountId === me) {
|
||||||
|
return (
|
||||||
|
<Button secondary compact onClick={confirmRevoke}>
|
||||||
|
<FormattedMessage
|
||||||
|
id='collections.detail.revoke_inclusion'
|
||||||
|
defaultMessage='Remove me'
|
||||||
|
/>
|
||||||
|
</Button>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return <AccountListItemFollowButton accountId={accountId} />;
|
||||||
|
},
|
||||||
|
[collectionOwnerId, confirmRevoke],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ItemList
|
<>
|
||||||
isLoading={isLoading}
|
|
||||||
emptyMessage={intl.formatMessage(messages.empty)}
|
|
||||||
className={classes.itemList}
|
|
||||||
>
|
|
||||||
<h3
|
<h3
|
||||||
className={classes.columnSubheading}
|
className={classes.columnSubheading}
|
||||||
tabIndex={-1}
|
tabIndex={-1}
|
||||||
@ -207,22 +133,27 @@ export const CollectionAccountsList: React.FC<{
|
|||||||
sensitive={!isOwnCollection && collection.sensitive}
|
sensitive={!isOwnCollection && collection.sensitive}
|
||||||
focusTargetRef={listHeadingRef}
|
focusTargetRef={listHeadingRef}
|
||||||
>
|
>
|
||||||
{items.map(({ account_id }, index) => (
|
<ItemList
|
||||||
<Article
|
isLoading={isLoading}
|
||||||
key={account_id}
|
emptyMessage={intl.formatMessage(messages.empty)}
|
||||||
aria-posinset={index + 1}
|
>
|
||||||
aria-setsize={items.length}
|
{items.map(({ account_id }, index) => (
|
||||||
>
|
<Article
|
||||||
<AccountItem
|
key={account_id}
|
||||||
withBorder={index !== items.length - 1}
|
aria-posinset={index + 1}
|
||||||
accountId={account_id}
|
aria-setsize={items.length}
|
||||||
collectionOwnerId={collection.account_id}
|
>
|
||||||
onRevoke={confirmRevoke}
|
<AccountListItem
|
||||||
/>
|
accountId={account_id}
|
||||||
</Article>
|
withBorder={index !== items.length - 1}
|
||||||
))}
|
stats={['followers', 'last-active']}
|
||||||
|
renderButton={renderAccountItemButton}
|
||||||
|
/>
|
||||||
|
</Article>
|
||||||
|
))}
|
||||||
|
</ItemList>
|
||||||
</SensitiveScreen>
|
</SensitiveScreen>
|
||||||
)}
|
)}
|
||||||
</ItemList>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -11,6 +11,7 @@ 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 { Badge } from 'mastodon/components/badge';
|
||||||
import { Callout } from 'mastodon/components/callout';
|
import { Callout } from 'mastodon/components/callout';
|
||||||
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';
|
||||||
@ -138,7 +139,7 @@ const CollectionHeader: React.FC<{ collection: ApiCollectionJSON }> = ({
|
|||||||
<header className={classes.header}>
|
<header className={classes.header}>
|
||||||
<div className={classes.titleWithMenu}>
|
<div className={classes.titleWithMenu}>
|
||||||
<div className={classes.titleWrapper}>
|
<div className={classes.titleWrapper}>
|
||||||
{tag && <span className={classes.tag}>#{tag.name}</span>}
|
{tag && <Badge label={`#${tag.name}`} icon={null} />}
|
||||||
<h2 className={classes.name}>{name}</h2>
|
<h2 className={classes.name}>{name}</h2>
|
||||||
<AuthorNote id={account_id} />
|
<AuthorNote id={account_id} />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
padding: 24px;
|
padding: 16px;
|
||||||
|
padding-bottom: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.titleWithMenu {
|
.titleWithMenu {
|
||||||
@ -20,15 +21,6 @@
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tag {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 4px;
|
|
||||||
font-size: 13px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
background: var(--color-bg-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@ -71,45 +63,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.itemList {
|
.sensitiveScreen {
|
||||||
padding-inline: 24px;
|
margin: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.columnSubheading {
|
.columnSubheading {
|
||||||
padding-bottom: 12px;
|
padding-inline: 16px;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.accountItemWrapper {
|
|
||||||
display: flex;
|
|
||||||
align-items: start;
|
|
||||||
padding-block: 16px;
|
|
||||||
|
|
||||||
&[data-with-border='true'] {
|
|
||||||
border-bottom: 1px solid var(--color-border-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
:global(.account__note) {
|
|
||||||
display: -webkit-box;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
line-clamp: 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hide 'No description provided' message added by `Account` component
|
|
||||||
:global(.account__note--missing) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.accountItem {
|
|
||||||
--account-name-size: 15px;
|
|
||||||
--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;
|
|
||||||
}
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import type { FC, ReactNode } from 'react';
|
import type { FC, ReactNode } from 'react';
|
||||||
|
|
||||||
import { Account } from '@/mastodon/components/account';
|
import { AccountListItem } from '@/mastodon/components/account_list_item';
|
||||||
import { Column } from '@/mastodon/components/column';
|
import { Column } from '@/mastodon/components/column';
|
||||||
import { ColumnBackButton } from '@/mastodon/components/column_back_button';
|
import { ColumnBackButton } from '@/mastodon/components/column_back_button';
|
||||||
import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
|
import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
|
||||||
@ -53,12 +53,12 @@ export const AccountList: FC<AccountListProps> = ({
|
|||||||
}
|
}
|
||||||
const children =
|
const children =
|
||||||
list?.items.map((followerId) => (
|
list?.items.map((followerId) => (
|
||||||
<Account key={followerId} id={followerId} />
|
<AccountListItem key={followerId} accountId={followerId} />
|
||||||
)) ?? [];
|
)) ?? [];
|
||||||
|
|
||||||
if (prependAccountId) {
|
if (prependAccountId) {
|
||||||
children.unshift(
|
children.unshift(
|
||||||
<Account key={prependAccountId} id={prependAccountId} minimal />,
|
<AccountListItem key={prependAccountId} accountId={prependAccountId} />,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return children;
|
return children;
|
||||||
|
|||||||
@ -16,12 +16,12 @@ import {
|
|||||||
} from 'mastodon/actions/suggestions';
|
} from 'mastodon/actions/suggestions';
|
||||||
import type { ApiSuggestionSourceJSON } from 'mastodon/api_types/suggestions';
|
import type { ApiSuggestionSourceJSON } from 'mastodon/api_types/suggestions';
|
||||||
import { Avatar } from 'mastodon/components/avatar';
|
import { Avatar } from 'mastodon/components/avatar';
|
||||||
|
import { Badge, VerifiedBadge } from 'mastodon/components/badge';
|
||||||
import { DisplayName } from 'mastodon/components/display_name';
|
import { DisplayName } from 'mastodon/components/display_name';
|
||||||
import { FollowButton } from 'mastodon/components/follow_button';
|
import { FollowButton } from 'mastodon/components/follow_button';
|
||||||
import { Icon } from 'mastodon/components/icon';
|
import { Icon } from 'mastodon/components/icon';
|
||||||
import { IconButton } from 'mastodon/components/icon_button';
|
import { IconButton } from 'mastodon/components/icon_button';
|
||||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
||||||
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
|
||||||
import { domain } from 'mastodon/initial_state';
|
import { domain } from 'mastodon/initial_state';
|
||||||
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
||||||
|
|
||||||
@ -110,13 +110,12 @@ const Source: React.FC<{ id: ApiSuggestionSourceJSON }> = ({ id }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<Badge
|
||||||
className='inline-follow-suggestions__body__scrollable__card__text-stack__source'
|
className='inline-follow-suggestions__body__scrollable__card__text-stack__source'
|
||||||
title={hint}
|
title={hint}
|
||||||
>
|
label={label}
|
||||||
<Icon id='' icon={InfoIcon} />
|
icon={<InfoIcon />}
|
||||||
<span>{label}</span>
|
/>
|
||||||
</div>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import {
|
|||||||
apiRemoveAccountFromList,
|
apiRemoveAccountFromList,
|
||||||
} from 'mastodon/api/lists';
|
} from 'mastodon/api/lists';
|
||||||
import { Avatar } from 'mastodon/components/avatar';
|
import { Avatar } from 'mastodon/components/avatar';
|
||||||
|
import { VerifiedBadge } from 'mastodon/components/badge';
|
||||||
import { Button } from 'mastodon/components/button';
|
import { Button } from 'mastodon/components/button';
|
||||||
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';
|
||||||
@ -27,7 +28,6 @@ import { FollowersCounter } from 'mastodon/components/counters';
|
|||||||
import { DisplayName } from 'mastodon/components/display_name';
|
import { DisplayName } from 'mastodon/components/display_name';
|
||||||
import ScrollableList from 'mastodon/components/scrollable_list';
|
import ScrollableList from 'mastodon/components/scrollable_list';
|
||||||
import { ShortNumber } from 'mastodon/components/short_number';
|
import { ShortNumber } from 'mastodon/components/short_number';
|
||||||
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
|
||||||
import { useSearchAccounts } from 'mastodon/hooks/useSearchAccounts';
|
import { useSearchAccounts } from 'mastodon/hooks/useSearchAccounts';
|
||||||
import { me } from 'mastodon/initial_state';
|
import { me } from 'mastodon/initial_state';
|
||||||
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Ігнаруецца",
|
"account.muted": "Ігнаруецца",
|
||||||
"account.muting": "Ігнараванне",
|
"account.muting": "Ігнараванне",
|
||||||
"account.mutual": "Вы падпісаныя адно на аднаго",
|
"account.mutual": "Вы падпісаныя адно на аднаго",
|
||||||
|
"account.name.copy": "Скапір. ідэнтыфікатар",
|
||||||
"account.name.help.domain": "{domain} — сервер, які ўтрымлівае профіль і допісы гэтага карыстальніка.",
|
"account.name.help.domain": "{domain} — сервер, які ўтрымлівае профіль і допісы гэтага карыстальніка.",
|
||||||
"account.name.help.domain_self": "{domain} — Ваш сервер, які ўтрымлівае Ваш профіль і допісы.",
|
"account.name.help.domain_self": "{domain} — Ваш сервер, які ўтрымлівае Ваш профіль і допісы.",
|
||||||
"account.name.help.footer": "Гэтак жа, як Вы можаце адпраўляць электронныя лісты людзям праз розныя кліенты электроннай пошты, Вы таксама можаце ўзаемадзейнічаць з людзьмі з іншых сервераў Mastodon, а таксама з усімі, хто карыстаецца іншымі сацыяльнымі сеткамі, якія працуюць па тых жа правілах, што і Mastodon (пратакол ActivityPub).",
|
"account.name.help.footer": "Гэтак жа, як Вы можаце адпраўляць электронныя лісты людзям праз розныя кліенты электроннай пошты, Вы таксама можаце ўзаемадзейнічаць з людзьмі з іншых сервераў Mastodon, а таксама з усімі, хто карыстаецца іншымі сацыяльнымі сеткамі, якія працуюць па тых жа правілах, што і Mastodon (пратакол ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Не ігнараваць @{name}",
|
"account.unmute": "Не ігнараваць @{name}",
|
||||||
"account.unmute_notifications_short": "Апавяшчаць",
|
"account.unmute_notifications_short": "Апавяшчаць",
|
||||||
"account.unmute_short": "Не ігнараваць",
|
"account.unmute_short": "Не ігнараваць",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Пакажыце іншым, што гэты ўліковы запіс у асноўным выконвае аўтаматычныя дзеянні і можа не кантралявацца",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Аўтаматызаваны ўліковы запіс",
|
||||||
|
"account_edit.advanced_settings.title": "Дадатковыя налады",
|
||||||
"account_edit.bio.add_label": "Апісаць сябе",
|
"account_edit.bio.add_label": "Апісаць сябе",
|
||||||
"account_edit.bio.edit_label": "Змяніць апісанне",
|
"account_edit.bio.edit_label": "Змяніць апісанне",
|
||||||
"account_edit.bio.placeholder": "Коратка апішыце сябе, каб дапамагчы іншым пазнаць Вас.",
|
"account_edit.bio.placeholder": "Коратка апішыце сябе, каб дапамагчы іншым пазнаць Вас.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Ваш лічбавы дом, дзе захоўваюцца ўсе вашыя допісы. Не падабаецца гэты сервер? Змяніце сервер у любы час з захаваннем сваіх падпісчыкаў.",
|
"domain_pill.your_server": "Ваш лічбавы дом, дзе захоўваюцца ўсе вашыя допісы. Не падабаецца гэты сервер? Змяніце сервер у любы час з захаваннем сваіх падпісчыкаў.",
|
||||||
"domain_pill.your_username": "Ваш унікальны ідэнтыфікатар на гэтым серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
"domain_pill.your_username": "Ваш унікальны ідэнтыфікатар на гэтым серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
||||||
"dropdown.empty": "Выбраць варыянт",
|
"dropdown.empty": "Выбраць варыянт",
|
||||||
"email_subscriptions.email": "Адрас электроннай пошты",
|
"email_subscriptions.email": "Эл. пошта",
|
||||||
"email_subscriptions.form.action": "Падпісацца",
|
"email_subscriptions.form.action": "Падпісацца",
|
||||||
"email_subscriptions.form.disclaimer": "Вы можаце адпісацца ў любы момант. Каб даведацца болей, звярніцеся да <a>Палітыкі прыватнасці</a>.",
|
"email_subscriptions.form.bottom": "Атрымлівайце допісы ў сваю паштовую скрыню без стварэння ўліковага запісу Mastodon. Пры жаданні зможаце адпісацца ў любы момант. Падрабязней у <a>Палітыцы прыватнасці</a>.",
|
||||||
"email_subscriptions.form.lead": "Атрымліваць допісы па электроннай пошце без стварэння ўліковага запісу Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Зарэгістравацца на абнаўленні па электроннай пошце ад {name}",
|
"email_subscriptions.form.title": "Зарэгістравацца на абнаўленні па электроннай пошце ад {name}",
|
||||||
"email_subscriptions.submitted.lead": "Праверце сваю паштовую скрыню, каб знайсці там ліст і скончыць рэгістрацыю на абнаўленні па электроннай пошце.",
|
"email_subscriptions.submitted.lead": "Праверце сваю паштовую скрыню, каб знайсці там ліст і скончыць рэгістрацыю на абнаўленні па электроннай пошце.",
|
||||||
"email_subscriptions.submitted.title": "Яшчэ адзін крок",
|
"email_subscriptions.submitted.title": "Яшчэ адзін крок",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Skjult",
|
"account.muted": "Skjult",
|
||||||
"account.muting": "Skjuler",
|
"account.muting": "Skjuler",
|
||||||
"account.mutual": "I følger hinanden",
|
"account.mutual": "I følger hinanden",
|
||||||
|
"account.name.copy": "Kopiér handle",
|
||||||
"account.name.help.domain": "{domain} er den server, der er vært for brugerens profil og indlæg.",
|
"account.name.help.domain": "{domain} er den server, der er vært for brugerens profil og indlæg.",
|
||||||
"account.name.help.domain_self": "{domain} er din server, der er vært for din profil og indlæg.",
|
"account.name.help.domain_self": "{domain} er din server, der er vært for din profil og indlæg.",
|
||||||
"account.name.help.footer": "Ligesom du kan sende e-mails til personer, der bruger forskellige e-mail-klienter, kan du interagere med personer på andre Mastodon-servere – og med alle på andre sociale apps, der bruger de samme regler som Mastodon (ActivityPub-protokollen).",
|
"account.name.help.footer": "Ligesom du kan sende e-mails til personer, der bruger forskellige e-mail-klienter, kan du interagere med personer på andre Mastodon-servere – og med alle på andre sociale apps, der bruger de samme regler som Mastodon (ActivityPub-protokollen).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Vis @{name} igen",
|
"account.unmute": "Vis @{name} igen",
|
||||||
"account.unmute_notifications_short": "Vis notifikationer igen",
|
"account.unmute_notifications_short": "Vis notifikationer igen",
|
||||||
"account.unmute_short": "Vis igen",
|
"account.unmute_short": "Vis igen",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Signalér til andre, at kontoen hovedsageligt udfører automatiserede handlinger og muligvis ikke monitoreres",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Automatiseret konto",
|
||||||
|
"account_edit.advanced_settings.title": "Avancerede indstillinger",
|
||||||
"account_edit.bio.add_label": "Tilføj bio",
|
"account_edit.bio.add_label": "Tilføj bio",
|
||||||
"account_edit.bio.edit_label": "Rediger bio",
|
"account_edit.bio.edit_label": "Rediger bio",
|
||||||
"account_edit.bio.placeholder": "Tilføj en kort introduktion, så andre kan få et indtryk af, hvem du er.",
|
"account_edit.bio.placeholder": "Tilføj en kort introduktion, så andre kan få et indtryk af, hvem du er.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Dit digitale hjem, hvor alle dine indlæg lever. Synes ikke om den her server? Du kan til enhver tid rykke over på en anden server og beholde dine følgere.",
|
"domain_pill.your_server": "Dit digitale hjem, hvor alle dine indlæg lever. Synes ikke om den her server? Du kan til enhver tid rykke over på en anden server og beholde dine følgere.",
|
||||||
"domain_pill.your_username": "Din unikke identifikator på denne server. Det er muligt at finde brugere med samme brugernavn på forskellige servere.",
|
"domain_pill.your_username": "Din unikke identifikator på denne server. Det er muligt at finde brugere med samme brugernavn på forskellige servere.",
|
||||||
"dropdown.empty": "Vælg en indstilling",
|
"dropdown.empty": "Vælg en indstilling",
|
||||||
"email_subscriptions.email": "E-mailadresse",
|
"email_subscriptions.email": "E-mail",
|
||||||
"email_subscriptions.form.action": "Abonnér",
|
"email_subscriptions.form.action": "Abonnér",
|
||||||
"email_subscriptions.form.disclaimer": "Du kan til enhver tid afmelde dig. For yderligere oplysninger henvises til <a>privatlivspolitikken</a>.",
|
"email_subscriptions.form.bottom": "Få indlæg sendt direkte til din indbakke uden at oprette en Mastodon-konto. Du kan til enhver tid afmelde dig. For mere information henvises til <a>privatlivspolitikken</a>.",
|
||||||
"email_subscriptions.form.lead": "Få indlæg i din indbakke uden at oprette en Mastodon-konto.",
|
|
||||||
"email_subscriptions.form.title": "Tilmeld dig e-mailopdateringer fra {name}",
|
"email_subscriptions.form.title": "Tilmeld dig e-mailopdateringer fra {name}",
|
||||||
"email_subscriptions.submitted.lead": "Kig i din indbakke efter en e-mail, hvor du kan afslutte tilmeldingen til e-mailopdateringer.",
|
"email_subscriptions.submitted.lead": "Kig i din indbakke efter en e-mail, hvor du kan afslutte tilmeldingen til e-mailopdateringer.",
|
||||||
"email_subscriptions.submitted.title": "Et trin mere",
|
"email_subscriptions.submitted.title": "Et trin mere",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Stummgeschaltet",
|
"account.muted": "Stummgeschaltet",
|
||||||
"account.muting": "Stummgeschaltet",
|
"account.muting": "Stummgeschaltet",
|
||||||
"account.mutual": "Ihr folgt einander",
|
"account.mutual": "Ihr folgt einander",
|
||||||
|
"account.name.copy": "Adresse kopieren",
|
||||||
"account.name.help.domain": "{domain} ist der Server, auf dem das Profil registriert ist und die Beiträge verwaltet werden.",
|
"account.name.help.domain": "{domain} ist der Server, auf dem das Profil registriert ist und die Beiträge verwaltet werden.",
|
||||||
"account.name.help.domain_self": "{domain} ist der Server, auf dem du registriert bist und deine Beiträge verwaltet werden.",
|
"account.name.help.domain_self": "{domain} ist der Server, auf dem du registriert bist und deine Beiträge verwaltet werden.",
|
||||||
"account.name.help.footer": "So wie du E-Mails an andere trotz unterschiedlicher E-Mail-Provider senden kannst, so kannst du auch mit anderen Profilen auf unterschiedlichen Mastodon-Servern interagieren. Wenn andere soziale Apps die gleichen Kommunikationsregeln (das ActivityPub-Protokoll) wie Mastodon verwenden, dann funktioniert die Kommunikation auch dort.",
|
"account.name.help.footer": "So wie du E-Mails an andere trotz unterschiedlicher E-Mail-Provider senden kannst, so kannst du auch mit anderen Profilen auf unterschiedlichen Mastodon-Servern interagieren. Wenn andere soziale Apps die gleichen Kommunikationsregeln (das ActivityPub-Protokoll) wie Mastodon verwenden, dann funktioniert die Kommunikation auch dort.",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Stummschaltung von @{name} aufheben",
|
"account.unmute": "Stummschaltung von @{name} aufheben",
|
||||||
"account.unmute_notifications_short": "Stummschaltung der Benachrichtigungen aufheben",
|
"account.unmute_notifications_short": "Stummschaltung der Benachrichtigungen aufheben",
|
||||||
"account.unmute_short": "Stummschaltung aufheben",
|
"account.unmute_short": "Stummschaltung aufheben",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Signalisiert, dass dieses Konto hauptsächlich automatisierte Aktionen durchführt und möglicherweise nicht persönlich betreut wird",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Automatisiertes Konto",
|
||||||
|
"account_edit.advanced_settings.title": "Erweiterte Einstellungen",
|
||||||
"account_edit.bio.add_label": "Biografie hinzufügen",
|
"account_edit.bio.add_label": "Biografie hinzufügen",
|
||||||
"account_edit.bio.edit_label": "Biografie bearbeiten",
|
"account_edit.bio.edit_label": "Biografie bearbeiten",
|
||||||
"account_edit.bio.placeholder": "Gib anderen einen Einblick über dich, damit sie wissen, wer du bist.",
|
"account_edit.bio.placeholder": "Gib anderen einen Einblick über dich, damit sie wissen, wer du bist.",
|
||||||
@ -579,8 +583,7 @@
|
|||||||
"dropdown.empty": "Option auswählen",
|
"dropdown.empty": "Option auswählen",
|
||||||
"email_subscriptions.email": "E-Mail-Adresse",
|
"email_subscriptions.email": "E-Mail-Adresse",
|
||||||
"email_subscriptions.form.action": "Abonnieren",
|
"email_subscriptions.form.action": "Abonnieren",
|
||||||
"email_subscriptions.form.disclaimer": "Du kannst die Benachrichtigungen jederzeit abbestellen. In der <a>Datenschutzerklärung</a> erfährst du mehr dazu.",
|
"email_subscriptions.form.bottom": "Lass dir Beiträge in dein Postfach senden, ohne ein Mastodon-Konto zu erstellen. Du kannst die E-Mails jederzeit abbestellen. Weitere Details findest du in der <a>Datenschutzerklärung</a>.",
|
||||||
"email_subscriptions.form.lead": "Lass dir Beiträge in dein Postfach senden, ohne ein Mastodon-Konto zu erstellen.",
|
|
||||||
"email_subscriptions.form.title": "Erhalte eine E-Mail bei Neuigkeiten von {name}",
|
"email_subscriptions.form.title": "Erhalte eine E-Mail bei Neuigkeiten von {name}",
|
||||||
"email_subscriptions.submitted.lead": "Überprüfe dein Postfach, um die Benachrichtigungen per E-Mail zu aktivieren.",
|
"email_subscriptions.submitted.lead": "Überprüfe dein Postfach, um die Benachrichtigungen per E-Mail zu aktivieren.",
|
||||||
"email_subscriptions.submitted.title": "Ein weiterer Schritt",
|
"email_subscriptions.submitted.title": "Ein weiterer Schritt",
|
||||||
|
|||||||
@ -74,7 +74,7 @@
|
|||||||
"account.languages": "Αλλαγή εγγεγραμμένων γλωσσών",
|
"account.languages": "Αλλαγή εγγεγραμμένων γλωσσών",
|
||||||
"account.last_active": "Τελευταία ενεργός",
|
"account.last_active": "Τελευταία ενεργός",
|
||||||
"account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέγχθηκε στις {date}",
|
"account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέγχθηκε στις {date}",
|
||||||
"account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού έχει ρυθμιστεί σε κλειδωμένη. Ο ιδιοκτήτης αξιολογεί χειροκίνητα ποιος μπορεί να τον ακολουθήσει.",
|
"account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού έχει ρυθμιστεί σε κλειδωμένη. Ο ιδιοκτήτης ελέγχει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.",
|
||||||
"account.media": "Πολυμέσα",
|
"account.media": "Πολυμέσα",
|
||||||
"account.mention": "Επισήμανση @{name}",
|
"account.mention": "Επισήμανση @{name}",
|
||||||
"account.menu.add_to_list": "Προσθήκη στη λίστα…",
|
"account.menu.add_to_list": "Προσθήκη στη λίστα…",
|
||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Σε σίγαση",
|
"account.muted": "Σε σίγαση",
|
||||||
"account.muting": "Σίγαση",
|
"account.muting": "Σίγαση",
|
||||||
"account.mutual": "Ακολουθείτε ο ένας τον άλλο",
|
"account.mutual": "Ακολουθείτε ο ένας τον άλλο",
|
||||||
|
"account.name.copy": "Αντιγραφή πλήρους ονόματος χρήστη",
|
||||||
"account.name.help.domain": "Το {domain} είναι ο διακομιστής που φιλοξενεί το προφίλ και τις αναρτήσεις του χρήστη.",
|
"account.name.help.domain": "Το {domain} είναι ο διακομιστής που φιλοξενεί το προφίλ και τις αναρτήσεις του χρήστη.",
|
||||||
"account.name.help.domain_self": "Το {domain} είναι ο διακομιστής σας που φιλοξενεί το προφίλ και τις αναρτήσεις σας.",
|
"account.name.help.domain_self": "Το {domain} είναι ο διακομιστής σας που φιλοξενεί το προφίλ και τις αναρτήσεις σας.",
|
||||||
"account.name.help.footer": "Ακριβώς όπως μπορείτε να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου σε άτομα χρησιμοποιώντας διαφορετικούς παρόχους email, μπορείτε να αλληλεπιδράσετε με άτομα σε άλλους διακομιστές Mastodon – και με οποιονδήποτε σε άλλες κοινωνικές εφαρμογές που τροφοδοτούνται από το ίδιο σύνολο κανόνων όπως χρησιμοποιεί το Mastodon (το πρωτόκολλο ActivityPub).",
|
"account.name.help.footer": "Ακριβώς όπως μπορείτε να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου σε άτομα χρησιμοποιώντας διαφορετικούς παρόχους email, μπορείτε να αλληλεπιδράσετε με άτομα σε άλλους διακομιστές Mastodon – και με οποιονδήποτε σε άλλες κοινωνικές εφαρμογές που τροφοδοτούνται από το ίδιο σύνολο κανόνων όπως χρησιμοποιεί το Mastodon (το πρωτόκολλο ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Άρση σίγασης @{name}",
|
"account.unmute": "Άρση σίγασης @{name}",
|
||||||
"account.unmute_notifications_short": "Σίγαση ειδοποιήσεων",
|
"account.unmute_notifications_short": "Σίγαση ειδοποιήσεων",
|
||||||
"account.unmute_short": "Κατάργηση σίγασης",
|
"account.unmute_short": "Κατάργηση σίγασης",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Υποδεικνύει σε άλλους χρήστες ότι ο λογαριασμός αυτός εκτελεί κυρίως αυτοματοποιημένες ενέργειες και ίσως να μην παρακολουθείται",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Αυτοματοποιημένος λογαριασμός",
|
||||||
|
"account_edit.advanced_settings.title": "Προχωρημένες ρυθμίσεις",
|
||||||
"account_edit.bio.add_label": "Προσθήκη βιογραφικού",
|
"account_edit.bio.add_label": "Προσθήκη βιογραφικού",
|
||||||
"account_edit.bio.edit_label": "Επεξεργασία βιογραφικού",
|
"account_edit.bio.edit_label": "Επεξεργασία βιογραφικού",
|
||||||
"account_edit.bio.placeholder": "Προσθέστε μια σύντομη εισαγωγή για να βοηθήσετε άλλους να σας αναγνωρίσουν.",
|
"account_edit.bio.placeholder": "Προσθέστε μια σύντομη εισαγωγή για να βοηθήσετε άλλους να σας αναγνωρίσουν.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Το ψηφιακό σου σπίτι, όπου ζουν όλες σου οι αναρτήσεις. Δε σ' αρέσει αυτός; Μετακινήσου σε διακομιστές ανά πάσα στιγμή και πάρε και τους ακόλουθούς σου μαζί.",
|
"domain_pill.your_server": "Το ψηφιακό σου σπίτι, όπου ζουν όλες σου οι αναρτήσεις. Δε σ' αρέσει αυτός; Μετακινήσου σε διακομιστές ανά πάσα στιγμή και πάρε και τους ακόλουθούς σου μαζί.",
|
||||||
"domain_pill.your_username": "Το μοναδικό σου αναγνωριστικό σε τούτο τον διακομιστή. Είναι πιθανό να βρεις χρήστες με το ίδιο όνομα χρήστη σε διαφορετικούς διακομιστές.",
|
"domain_pill.your_username": "Το μοναδικό σου αναγνωριστικό σε τούτο τον διακομιστή. Είναι πιθανό να βρεις χρήστες με το ίδιο όνομα χρήστη σε διαφορετικούς διακομιστές.",
|
||||||
"dropdown.empty": "Διαλέξτε μια επιλογή",
|
"dropdown.empty": "Διαλέξτε μια επιλογή",
|
||||||
"email_subscriptions.email": "Διεύθυνση email",
|
"email_subscriptions.email": "Email",
|
||||||
"email_subscriptions.form.action": "Εγγραφή",
|
"email_subscriptions.form.action": "Εγγραφή",
|
||||||
"email_subscriptions.form.disclaimer": "Μπορείτε να απεγγραφείτε οποιαδήποτε στιγμή. Για περισσότερες πληροφορίες, ανατρέξτε στην <a>Πολιτική Απορρήτου</a>.",
|
"email_subscriptions.form.bottom": "Λάβετε αναρτήσεις στα εισερχόμενά σας χωρίς να χρειαστεί να δημιουργήσετε λογαριασμό Mastodon. Κάντε απεγγραφή οποιαδήποτε στιγμή. Για περισσότερες πληροφορίες, ανατρέξτε στην <a>Πολιτική Απορρήτου</a>.",
|
||||||
"email_subscriptions.form.lead": "Λάβετε αναρτήσεις στα εισερχόμενά σας χωρίς να δημιουργήσετε λογαριασμό Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Εγγραφείτε για ενημερώσεις μέσω email από {name}",
|
"email_subscriptions.form.title": "Εγγραφείτε για ενημερώσεις μέσω email από {name}",
|
||||||
"email_subscriptions.submitted.lead": "Ελέγξτε τα εισερχόμενά σας για να ολοκληρωθεί η εγγραφή για ενημερώσεις μέσω email.",
|
"email_subscriptions.submitted.lead": "Ελέγξτε τα εισερχόμενά σας για να ολοκληρωθεί η εγγραφή για ενημερώσεις μέσω email.",
|
||||||
"email_subscriptions.submitted.title": "Ένα βήμα ακόμα",
|
"email_subscriptions.submitted.title": "Ένα βήμα ακόμα",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Silenciado",
|
"account.muted": "Silenciado",
|
||||||
"account.muting": "Silenciada",
|
"account.muting": "Silenciada",
|
||||||
"account.mutual": "Se siguen mutuamente",
|
"account.mutual": "Se siguen mutuamente",
|
||||||
|
"account.name.copy": "Copiar alias",
|
||||||
"account.name.help.domain": "«{domain}» es el servidor que hospeda el perfil y los mensajes del usuario.",
|
"account.name.help.domain": "«{domain}» es el servidor que hospeda el perfil y los mensajes del usuario.",
|
||||||
"account.name.help.domain_self": "«{domain}» es tu servidor que hospeda tu perfil y tus mensajes.",
|
"account.name.help.domain_self": "«{domain}» es tu servidor que hospeda tu perfil y tus mensajes.",
|
||||||
"account.name.help.footer": "Así como podés enviar correos electrónicos a personas usando diferentes clientes de email, del mismo modo podés interactuar con cuentas en otros servidores de Mastodon; y con cuentas en otras aplicaciones sociales que funcionen bajo las mismas normas que Mastodon (esto es, el protocolo ActivityPub).",
|
"account.name.help.footer": "Así como podés enviar correos electrónicos a personas usando diferentes clientes de email, del mismo modo podés interactuar con cuentas en otros servidores de Mastodon; y con cuentas en otras aplicaciones sociales que funcionen bajo las mismas normas que Mastodon (esto es, el protocolo ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Dejar de silenciar a @{name}",
|
"account.unmute": "Dejar de silenciar a @{name}",
|
||||||
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
||||||
"account.unmute_short": "Dejar de silenciar",
|
"account.unmute_short": "Dejar de silenciar",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Señala a otras cuentas que esta cuenta principalmente realiza acciones automatizadas y podría no estar monitoreada",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Cuenta automatizada",
|
||||||
|
"account_edit.advanced_settings.title": "Configuración avanzada",
|
||||||
"account_edit.bio.add_label": "Agregar biografía",
|
"account_edit.bio.add_label": "Agregar biografía",
|
||||||
"account_edit.bio.edit_label": "Editar biografía",
|
"account_edit.bio.edit_label": "Editar biografía",
|
||||||
"account_edit.bio.placeholder": "Agregá una breve introducción para ayudar a otras personas a identificarte.",
|
"account_edit.bio.placeholder": "Agregá una breve introducción para ayudar a otras personas a identificarte.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Tu hogar digital, donde residen todos tus mensajes. ¿No te gusta este sitio? Mudate a otro servidor en cualquier momento y llevate a tus seguidores.",
|
"domain_pill.your_server": "Tu hogar digital, donde residen todos tus mensajes. ¿No te gusta este sitio? Mudate a otro servidor en cualquier momento y llevate a tus seguidores.",
|
||||||
"domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar cuentas con el mismo nombre de usuario en diferentes servidores.",
|
"domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar cuentas con el mismo nombre de usuario en diferentes servidores.",
|
||||||
"dropdown.empty": "Seleccioná una opción",
|
"dropdown.empty": "Seleccioná una opción",
|
||||||
"email_subscriptions.email": "Dirección de correo electrónico",
|
"email_subscriptions.email": "Correo electrónico",
|
||||||
"email_subscriptions.form.action": "Suscribite",
|
"email_subscriptions.form.action": "Suscribite",
|
||||||
"email_subscriptions.form.disclaimer": "Podés desuscribirte en cualquier momento. Para más información, consultá la <a>Política de privacidad</a>.",
|
"email_subscriptions.form.bottom": "Obtené publicaciones en tu bandeja de entrada sin crear una cuenta de Mastodon. Desuscribite en cualquier momento. Para más información, consultá la <a>Política de privacidad</a>.",
|
||||||
"email_subscriptions.form.lead": "Obtené mensajes en tu bandeja de entrada sin crear una cuenta de Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Suscribite para recibir actualizaciones por correo electrónico de {name}",
|
"email_subscriptions.form.title": "Suscribite para recibir actualizaciones por correo electrónico de {name}",
|
||||||
"email_subscriptions.submitted.lead": "Revisá tu bandeja de entrada para confirmar tu suscripción, así podés recibir actualizaciones por correo electrónico.",
|
"email_subscriptions.submitted.lead": "Revisá tu bandeja de entrada para confirmar tu suscripción, así podés recibir actualizaciones por correo electrónico.",
|
||||||
"email_subscriptions.submitted.title": "Un paso más",
|
"email_subscriptions.submitted.title": "Un paso más",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Silenciado",
|
"account.muted": "Silenciado",
|
||||||
"account.muting": "Silenciando",
|
"account.muting": "Silenciando",
|
||||||
"account.mutual": "Se siguen el uno al otro",
|
"account.mutual": "Se siguen el uno al otro",
|
||||||
|
"account.name.copy": "Copiar identificador",
|
||||||
"account.name.help.domain": "{domain} es el servidor que aloja el perfil y las publicaciones del usuario.",
|
"account.name.help.domain": "{domain} es el servidor que aloja el perfil y las publicaciones del usuario.",
|
||||||
"account.name.help.domain_self": "{domain} es el servidor que aloja tu perfil y tus publicaciones.",
|
"account.name.help.domain_self": "{domain} es el servidor que aloja tu perfil y tus publicaciones.",
|
||||||
"account.name.help.footer": "Al igual que puedes enviar correos electrónicos a personas que utilizan diferentes clientes de correo electrónico, puedes interactuar con personas en otros servidores Mastodon, y con cualquier persona en otras aplicaciones sociales que funcionen con el mismo conjunto de reglas que utiliza Mastodon (el protocolo ActivityPub).",
|
"account.name.help.footer": "Al igual que puedes enviar correos electrónicos a personas que utilizan diferentes clientes de correo electrónico, puedes interactuar con personas en otros servidores Mastodon, y con cualquier persona en otras aplicaciones sociales que funcionen con el mismo conjunto de reglas que utiliza Mastodon (el protocolo ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Dejar de silenciar a @{name}",
|
"account.unmute": "Dejar de silenciar a @{name}",
|
||||||
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
||||||
"account.unmute_short": "Dejar de silenciar",
|
"account.unmute_short": "Dejar de silenciar",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Indica a los demás que la cuenta realiza principalmente acciones automatizadas y que es posible que no esté supervisada",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Cuenta automatizada",
|
||||||
|
"account_edit.advanced_settings.title": "Configuración avanzada",
|
||||||
"account_edit.bio.add_label": "Añadir biografía",
|
"account_edit.bio.add_label": "Añadir biografía",
|
||||||
"account_edit.bio.edit_label": "Editar biografía",
|
"account_edit.bio.edit_label": "Editar biografía",
|
||||||
"account_edit.bio.placeholder": "Añade una breve introducción para ayudar a los demás a identificarte.",
|
"account_edit.bio.placeholder": "Añade una breve introducción para ayudar a los demás a identificarte.",
|
||||||
@ -436,7 +440,7 @@
|
|||||||
"column_header.moveLeft_settings": "Mover columna a la izquierda",
|
"column_header.moveLeft_settings": "Mover columna a la izquierda",
|
||||||
"column_header.moveRight_settings": "Mover columna a la derecha",
|
"column_header.moveRight_settings": "Mover columna a la derecha",
|
||||||
"column_header.pin": "Fijar",
|
"column_header.pin": "Fijar",
|
||||||
"column_header.show_settings": "Mostrar ajustes",
|
"column_header.show_settings": "Mostrar configuración",
|
||||||
"column_header.unpin": "Dejar de fijar",
|
"column_header.unpin": "Dejar de fijar",
|
||||||
"column_search.cancel": "Cancelar",
|
"column_search.cancel": "Cancelar",
|
||||||
"combobox.close_results": "Cerrar resultados",
|
"combobox.close_results": "Cerrar resultados",
|
||||||
@ -549,7 +553,7 @@
|
|||||||
"directory.local": "Sólo de {domain}",
|
"directory.local": "Sólo de {domain}",
|
||||||
"directory.new_arrivals": "Recién llegados",
|
"directory.new_arrivals": "Recién llegados",
|
||||||
"directory.recently_active": "Recientemente activo",
|
"directory.recently_active": "Recientemente activo",
|
||||||
"disabled_account_banner.account_settings": "Ajustes de la cuenta",
|
"disabled_account_banner.account_settings": "Configuración de la cuenta",
|
||||||
"disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.",
|
"disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.",
|
||||||
"dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de las personas cuyas cuentas están alojadas en {domain}.",
|
"dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de las personas cuyas cuentas están alojadas en {domain}.",
|
||||||
"dismissable_banner.dismiss": "Descartar",
|
"dismissable_banner.dismiss": "Descartar",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Tu hogar digital, donde residen todas tus publicaciones. ¿No te gusta este sitio? Muévete a otro servidor en cualquier momento y llévate a tus seguidores.",
|
"domain_pill.your_server": "Tu hogar digital, donde residen todas tus publicaciones. ¿No te gusta este sitio? Muévete a otro servidor en cualquier momento y llévate a tus seguidores.",
|
||||||
"domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar usuarios con el mismo nombre de usuario en diferentes servidores.",
|
"domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar usuarios con el mismo nombre de usuario en diferentes servidores.",
|
||||||
"dropdown.empty": "Elige una opción",
|
"dropdown.empty": "Elige una opción",
|
||||||
"email_subscriptions.email": "Dirección de correo electrónico",
|
"email_subscriptions.email": "Correo electrónico",
|
||||||
"email_subscriptions.form.action": "Suscribirse",
|
"email_subscriptions.form.action": "Suscribirse",
|
||||||
"email_subscriptions.form.disclaimer": "Puedes darte de baja en cualquier momento. Para obtener más información, consulta la <a>Política de privacidad</a>.",
|
"email_subscriptions.form.bottom": "Recibe publicaciones en tu bandeja de entrada sin necesidad de crear una cuenta de Mastodon. Puedes darte de baja en cualquier momento. Para obtener más información, consulta la <a>Política de privacidad</a>.",
|
||||||
"email_subscriptions.form.lead": "Recibe publicaciones en tu bandeja de entrada sin necesidad de crear una cuenta de Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Suscríbete para recibir actualizaciones por correo electrónico de {name}",
|
"email_subscriptions.form.title": "Suscríbete para recibir actualizaciones por correo electrónico de {name}",
|
||||||
"email_subscriptions.submitted.lead": "Revisa tu bandeja de entrada para encontrar el correo electrónico que te permitirá completar tu suscripción a las actualizaciones por correo electrónico.",
|
"email_subscriptions.submitted.lead": "Revisa tu bandeja de entrada para encontrar el correo electrónico que te permitirá completar tu suscripción a las actualizaciones por correo electrónico.",
|
||||||
"email_subscriptions.submitted.title": "Un paso más",
|
"email_subscriptions.submitted.title": "Un paso más",
|
||||||
@ -660,8 +663,8 @@
|
|||||||
"filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado; deberás cambiar la fecha de caducidad para que se aplique.",
|
"filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado; deberás cambiar la fecha de caducidad para que se aplique.",
|
||||||
"filter_modal.added.expired_title": "¡Filtro expirado!",
|
"filter_modal.added.expired_title": "¡Filtro expirado!",
|
||||||
"filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.",
|
"filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.",
|
||||||
"filter_modal.added.review_and_configure_title": "Ajustes de filtro",
|
"filter_modal.added.review_and_configure_title": "Configuración de filtros",
|
||||||
"filter_modal.added.settings_link": "página de ajustes",
|
"filter_modal.added.settings_link": "página de configuración",
|
||||||
"filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.",
|
"filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.",
|
||||||
"filter_modal.added.title": "¡Filtro añadido!",
|
"filter_modal.added.title": "¡Filtro añadido!",
|
||||||
"filter_modal.select_filter.context_mismatch": "no se aplica a este contexto",
|
"filter_modal.select_filter.context_mismatch": "no se aplica a este contexto",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Silenciado",
|
"account.muted": "Silenciado",
|
||||||
"account.muting": "Silenciando",
|
"account.muting": "Silenciando",
|
||||||
"account.mutual": "Os seguís mutuamente",
|
"account.mutual": "Os seguís mutuamente",
|
||||||
|
"account.name.copy": "Copiar alias",
|
||||||
"account.name.help.domain": "{domain} es el servidor que alberga el perfil y las publicaciones del usuario.",
|
"account.name.help.domain": "{domain} es el servidor que alberga el perfil y las publicaciones del usuario.",
|
||||||
"account.name.help.domain_self": "{domain} es tu servidor que aloja tu perfil y publicaciones.",
|
"account.name.help.domain_self": "{domain} es tu servidor que aloja tu perfil y publicaciones.",
|
||||||
"account.name.help.footer": "Al igual que puedes enviar correos electrónicos a personas usando diferentes clientes de correo electrónico, puedes interactuar con personas en otros servidores de Mastodon – y con personas en otras aplicaciones sociales que hablen el mismo idioma que Mastodon (el protocolo ActivityPub).",
|
"account.name.help.footer": "Al igual que puedes enviar correos electrónicos a personas usando diferentes clientes de correo electrónico, puedes interactuar con personas en otros servidores de Mastodon – y con personas en otras aplicaciones sociales que hablen el mismo idioma que Mastodon (el protocolo ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Dejar de silenciar a @{name}",
|
"account.unmute": "Dejar de silenciar a @{name}",
|
||||||
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
||||||
"account.unmute_short": "Dejar de silenciar",
|
"account.unmute_short": "Dejar de silenciar",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Señalar a los demás que la cuenta realiza principalmente acciones automáticas y podría no estar monitorizada",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Cuenta automatizada",
|
||||||
|
"account_edit.advanced_settings.title": "Ajustes avanzados",
|
||||||
"account_edit.bio.add_label": "Añadir biografía",
|
"account_edit.bio.add_label": "Añadir biografía",
|
||||||
"account_edit.bio.edit_label": "Editar biografía",
|
"account_edit.bio.edit_label": "Editar biografía",
|
||||||
"account_edit.bio.placeholder": "Añade una breve introducción para ayudar a los demás a identificarte.",
|
"account_edit.bio.placeholder": "Añade una breve introducción para ayudar a los demás a identificarte.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Tu hogar digital, donde residen todas tus publicaciones. ¿No te gusta este sitio? Muévete a otro servidor en cualquier momento y llévate a tus seguidores.",
|
"domain_pill.your_server": "Tu hogar digital, donde residen todas tus publicaciones. ¿No te gusta este sitio? Muévete a otro servidor en cualquier momento y llévate a tus seguidores.",
|
||||||
"domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar usuarios con el mismo nombre de usuario en diferentes servidores.",
|
"domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar usuarios con el mismo nombre de usuario en diferentes servidores.",
|
||||||
"dropdown.empty": "Selecciona una opción",
|
"dropdown.empty": "Selecciona una opción",
|
||||||
"email_subscriptions.email": "Dirección de correo electrónico",
|
"email_subscriptions.email": "Correo electrónico",
|
||||||
"email_subscriptions.form.action": "Suscribirse",
|
"email_subscriptions.form.action": "Suscribirse",
|
||||||
"email_subscriptions.form.disclaimer": "Puedes darte de baja en cualquier momento. Para obtener más información, consulta la <a>Política de Privacidad</a>.",
|
"email_subscriptions.form.bottom": "Recibe publicaciones en tu bandeja de entrada sin crear una cuenta de Mastodon. Puedes darte de baja en cualquier momento. Para obtener más información, consulta la <a>Política de Privacidad</a>.",
|
||||||
"email_subscriptions.form.lead": "Obtén mensajes en tu bandeja de entrada sin crear una cuenta de Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Suscríbete para recibir actualizaciones por correo electrónico de {name}",
|
"email_subscriptions.form.title": "Suscríbete para recibir actualizaciones por correo electrónico de {name}",
|
||||||
"email_subscriptions.submitted.lead": "Revisa tu bandeja de entrada para terminar de suscribirte y recibir actualizaciones por correo electrónico.",
|
"email_subscriptions.submitted.lead": "Revisa tu bandeja de entrada para terminar de suscribirte y recibir actualizaciones por correo electrónico.",
|
||||||
"email_subscriptions.submitted.title": "Un paso más",
|
"email_subscriptions.submitted.title": "Un paso más",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Summutatud",
|
"account.muted": "Summutatud",
|
||||||
"account.muting": "Summutatud konto",
|
"account.muting": "Summutatud konto",
|
||||||
"account.mutual": "Te jälgite teineteist",
|
"account.mutual": "Te jälgite teineteist",
|
||||||
|
"account.name.copy": "Kopeeri kasutajatunnus",
|
||||||
"account.name.help.domain": "{domain} on server, kus antud konto koos profiiliga asub ning kust postitused saavad alguse.",
|
"account.name.help.domain": "{domain} on server, kus antud konto koos profiiliga asub ning kust postitused saavad alguse.",
|
||||||
"account.name.help.domain_self": "{domain} on server, kus sinu konto koos profiiliga asub ning kust sinu postitused saavad alguse.",
|
"account.name.help.domain_self": "{domain} on server, kus sinu konto koos profiiliga asub ning kust sinu postitused saavad alguse.",
|
||||||
"account.name.help.footer": "Nii nagu võid saata teiste e-posti serverite kasutajatele e-kirju, saad ka suhelda teiste Mastodoni serverite kasutajatega - ja tegelikult ka muude sotsiaalvõrkude kasutajatega, kus on kasutusel sama lahendus, nagu Mastodon pruugib (ActivityPubi protokoll).",
|
"account.name.help.footer": "Nii nagu võid saata teiste e-posti serverite kasutajatele e-kirju, saad ka suhelda teiste Mastodoni serverite kasutajatega - ja tegelikult ka muude sotsiaalvõrkude kasutajatega, kus on kasutusel sama lahendus, nagu Mastodon pruugib (ActivityPubi protokoll).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Lõpeta {name} kasutaja summutamine",
|
"account.unmute": "Lõpeta {name} kasutaja summutamine",
|
||||||
"account.unmute_notifications_short": "Lõpeta teavituste summutamine",
|
"account.unmute_notifications_short": "Lõpeta teavituste summutamine",
|
||||||
"account.unmute_short": "Lõpeta summutamine",
|
"account.unmute_short": "Lõpeta summutamine",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Teavita teisi, et sel kontol tehakse peamiselt automatiseeritud toiminguid ja seda ei pruugita jälgida",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Automatiseeritud konto",
|
||||||
|
"account_edit.advanced_settings.title": "Täpsemad seaded",
|
||||||
"account_edit.bio.add_label": "Lisa elulugu",
|
"account_edit.bio.add_label": "Lisa elulugu",
|
||||||
"account_edit.bio.edit_label": "Muuda elulugu",
|
"account_edit.bio.edit_label": "Muuda elulugu",
|
||||||
"account_edit.bio.placeholder": "Lisa lühike tutvustus, et aidata teistel sinust pilti luua.",
|
"account_edit.bio.placeholder": "Lisa lühike tutvustus, et aidata teistel sinust pilti luua.",
|
||||||
@ -158,9 +162,9 @@
|
|||||||
"account_edit.display_name.edit_label": "Muuda kuvatavat nime",
|
"account_edit.display_name.edit_label": "Muuda kuvatavat nime",
|
||||||
"account_edit.display_name.placeholder": "Kuvatav nimi määrab, kuidas sinu nimi on näha sinu profiilis ja ajajoontel.",
|
"account_edit.display_name.placeholder": "Kuvatav nimi määrab, kuidas sinu nimi on näha sinu profiilis ja ajajoontel.",
|
||||||
"account_edit.display_name.title": "Kuvatav nimi",
|
"account_edit.display_name.title": "Kuvatav nimi",
|
||||||
"account_edit.featured_hashtags.edit_label": "Lisa silte",
|
"account_edit.featured_hashtags.edit_label": "Lisa teemaviiteid",
|
||||||
"account_edit.featured_hashtags.placeholder": "Aita teistel leida su lemmikteemasid ja neile kiiresti juurde pääseda.",
|
"account_edit.featured_hashtags.placeholder": "Aita teistel leida su lemmikteemasid ja neile kiiresti juurde pääseda.",
|
||||||
"account_edit.featured_hashtags.title": "Esiletõstetud sildid",
|
"account_edit.featured_hashtags.title": "Esiletõstetud teemaviited",
|
||||||
"account_edit.field_actions.delete": "Kustuta väli",
|
"account_edit.field_actions.delete": "Kustuta väli",
|
||||||
"account_edit.field_actions.edit": "Muuda välja",
|
"account_edit.field_actions.edit": "Muuda välja",
|
||||||
"account_edit.field_delete_modal.confirm": "Kas oled kindel, et soovid selle kohandatud välja kustutada? Seda toimingut ei saa tagasi võtta.",
|
"account_edit.field_delete_modal.confirm": "Kas oled kindel, et soovid selle kohandatud välja kustutada? Seda toimingut ei saa tagasi võtta.",
|
||||||
@ -206,9 +210,42 @@
|
|||||||
"account_edit.profile_tab.button_label": "Kohanda",
|
"account_edit.profile_tab.button_label": "Kohanda",
|
||||||
"account_edit.profile_tab.hint.description": "Need seaded määravad, mida kasutajad näevad {server} ametlikes rakendustes, kuid ei pruugi kehtida teiste serverite kasutajate ja kolmandate osapoolte rakenduste puhul.",
|
"account_edit.profile_tab.hint.description": "Need seaded määravad, mida kasutajad näevad {server} ametlikes rakendustes, kuid ei pruugi kehtida teiste serverite kasutajate ja kolmandate osapoolte rakenduste puhul.",
|
||||||
"account_edit.profile_tab.hint.title": "Näitamine siiski erinev",
|
"account_edit.profile_tab.hint.title": "Näitamine siiski erinev",
|
||||||
"account_edit_tags.max_tags_reached": "Oled jõudnud esiletõstetud siltide maksimumarvuni.",
|
"account_edit.profile_tab.show_featured.description": "\"Esile tõstetud\" on valikuline taab, kus saad näidata teisi kontosid.",
|
||||||
"account_edit_tags.search_placeholder": "Sisesta silt…",
|
"account_edit.profile_tab.show_featured.title": "Näita esiletõstetute taabi",
|
||||||
|
"account_edit.profile_tab.show_media.description": "\"Meedia\" on valikuline taab, mis näitab sinu piltide või videotega postitusi.",
|
||||||
|
"account_edit.profile_tab.show_media.title": "Näita meedia taabi",
|
||||||
|
"account_edit.profile_tab.show_media_replies.description": "Sisse lülitatuna näitab meedia taab mõlemat, nii sinu postitusi kui su vastuseid teiste postitustele.",
|
||||||
|
"account_edit.profile_tab.show_media_replies.title": "Kaasa meedia taabile ka vastused",
|
||||||
|
"account_edit.profile_tab.subtitle": "Kohanda oma profiili vahekaarte ja nende sisu.",
|
||||||
|
"account_edit.profile_tab.title": "Profiili taabide seaded",
|
||||||
|
"account_edit.save": "Salvesta",
|
||||||
|
"account_edit.upload_modal.back": "Tagasi",
|
||||||
|
"account_edit.upload_modal.done": "Valmis",
|
||||||
|
"account_edit.upload_modal.next": "Edasi",
|
||||||
|
"account_edit.upload_modal.step_crop.zoom": "Suum",
|
||||||
|
"account_edit.upload_modal.step_upload.button": "Sirvi faile",
|
||||||
|
"account_edit.upload_modal.step_upload.dragging": "Üleslaadimiseks kukuta",
|
||||||
|
"account_edit.upload_modal.step_upload.header": "Vali pilt",
|
||||||
|
"account_edit.upload_modal.step_upload.hint": "WEBP-, PNG-, GIF- või JPG-vormingus, maksimaalselt {limit} MB.{br}Pilt skaleeritakse mõõtmeteni {width}x{height} pikselit.",
|
||||||
|
"account_edit.upload_modal.title_add.avatar": "Lisa profiilifoto",
|
||||||
|
"account_edit.upload_modal.title_add.header": "Lisa kaanefoto",
|
||||||
|
"account_edit.upload_modal.title_replace.avatar": "Asenda profiilifoto",
|
||||||
|
"account_edit.upload_modal.title_replace.header": "Asenda kaanefoto",
|
||||||
|
"account_edit.verified_modal.details": "Tõsta oma Mastodoni profiili usaldusväärsust, kinnitades lingid isiklikele veebisaitidele. See toimib järgmiselt:",
|
||||||
|
"account_edit.verified_modal.invisible_link.details": "Lisa link oma päisesse. Oluline on atribuut rel=\"me\", mis takistab identiteedivargust kasutajate loodud sisuga veebisaitidel. Lehe päises võib kasutada isegi silti link {tag} asemel, kuid HTML peab olema kättesaadav ka ilma JavaScripti käivitamiseta.",
|
||||||
|
"account_edit.verified_modal.invisible_link.summary": "Kuidas ma muudan lingi nähtamatuks?",
|
||||||
|
"account_edit.verified_modal.step1.header": "Kopeeri allpool olev HTML-kood ja kleebi oma veebisaidi päisesse",
|
||||||
|
"account_edit.verified_modal.step2.details": "Kui oled oma veebisaidi kohandatud väljana juba lisanud, pead kinnitamise käivitamiseks selle kustutama ja uuesti lisama.",
|
||||||
|
"account_edit.verified_modal.step2.header": "Lisa oma veebileht kohandatud väljana",
|
||||||
|
"account_edit.verified_modal.title": "Kuidas lisada kinnitatud link",
|
||||||
|
"account_edit_tags.add_tag": "Lisa #{tagName}",
|
||||||
|
"account_edit_tags.column_title": "Muuda silte",
|
||||||
|
"account_edit_tags.help_text": "Esiletõstetud teemaviited aitavad kasutajatel sinu profiili leida ja sellega suhestuda. Need kuvatakse filtritena sinu profiili lehe tegevuste vaates.",
|
||||||
|
"account_edit_tags.max_tags_reached": "Oled jõudnud esiletõstetud teemaviidete maksimumarvuni.",
|
||||||
|
"account_edit_tags.search_placeholder": "Sisesta teemaviide…",
|
||||||
"account_edit_tags.suggestions": "Soovitused:",
|
"account_edit_tags.suggestions": "Soovitused:",
|
||||||
|
"account_edit_tags.tag_status_count": "{count, plural, one {# postitus} other {# postitust}}",
|
||||||
|
"account_list.total": "{total, plural, one {# konto} other {# kontot}}",
|
||||||
"account_note.placeholder": "Klõpsa märke lisamiseks",
|
"account_note.placeholder": "Klõpsa märke lisamiseks",
|
||||||
"admin.dashboard.daily_retention": "Kasutajate päevane allesjäämine peale registreerumist",
|
"admin.dashboard.daily_retention": "Kasutajate päevane allesjäämine peale registreerumist",
|
||||||
"admin.dashboard.monthly_retention": "Kasutajate kuine allesjäämine peale registreerumist",
|
"admin.dashboard.monthly_retention": "Kasutajate kuine allesjäämine peale registreerumist",
|
||||||
@ -306,11 +343,18 @@
|
|||||||
"callout.dismiss": "Loobu",
|
"callout.dismiss": "Loobu",
|
||||||
"carousel.current": "<sr>Slaid</sr> {current, number} / {max, number}",
|
"carousel.current": "<sr>Slaid</sr> {current, number} / {max, number}",
|
||||||
"carousel.slide": "Slaid {current, number} / {max, number}",
|
"carousel.slide": "Slaid {current, number} / {max, number}",
|
||||||
|
"character_counter.recommended": "{currentLength}/{maxLength} soovitatud märke",
|
||||||
|
"character_counter.required": "{currentLength}/{maxLength} märki",
|
||||||
"closed_registrations.other_server_instructions": "Kuna Mastodon on detsentraliseeritud, võib konto teha teise serverisse ja sellegipoolest siinse kontoga suhelda.",
|
"closed_registrations.other_server_instructions": "Kuna Mastodon on detsentraliseeritud, võib konto teha teise serverisse ja sellegipoolest siinse kontoga suhelda.",
|
||||||
"closed_registrations_modal.description": "Praegu ei ole võimalik teha {domain} peale kontot, aga pea meeles, et sul ei pea olema just {domain} konto, et Mastodoni kasutada.",
|
"closed_registrations_modal.description": "Praegu ei ole võimalik teha {domain} peale kontot, aga pea meeles, et sul ei pea olema just {domain} konto, et Mastodoni kasutada.",
|
||||||
"closed_registrations_modal.find_another_server": "Leia mõni muu server",
|
"closed_registrations_modal.find_another_server": "Leia mõni muu server",
|
||||||
"closed_registrations_modal.preamble": "Mastodon on hajutatud võrk, mis tähendab, et konto võid luua ükskõik kuhu, kuid ikkagi saad jälgida ja suhelda igaühega selles serveris. Võid isegi oma serveri püsti panna!",
|
"closed_registrations_modal.preamble": "Mastodon on hajutatud võrk, mis tähendab, et konto võid luua ükskõik kuhu, kuid ikkagi saad jälgida ja suhelda igaühega selles serveris. Võid isegi oma serveri püsti panna!",
|
||||||
"closed_registrations_modal.title": "Mastodoni registreerumine",
|
"closed_registrations_modal.title": "Mastodoni registreerumine",
|
||||||
|
"collection.share_modal.share_link_label": "Kutse jagamise link",
|
||||||
|
"collection.share_modal.share_via_post": "Postita Mastodonis",
|
||||||
|
"collection.share_modal.share_via_system": "Jaga kohas…",
|
||||||
|
"collection.share_modal.title": "Jaga kogumikku",
|
||||||
|
"collection.share_modal.title_new": "Jaga oma ut kogumikku!",
|
||||||
"collections.account_count": "{count, plural, one {# kasutajakonto} other {# kasutajakontot}}",
|
"collections.account_count": "{count, plural, one {# kasutajakonto} other {# kasutajakontot}}",
|
||||||
"collections.collection_description": "Kirjeldus",
|
"collections.collection_description": "Kirjeldus",
|
||||||
"collections.collection_name": "Nimi",
|
"collections.collection_name": "Nimi",
|
||||||
@ -516,7 +560,7 @@
|
|||||||
"emoji_button.search_results": "Otsitulemused",
|
"emoji_button.search_results": "Otsitulemused",
|
||||||
"emoji_button.symbols": "Sümbolid",
|
"emoji_button.symbols": "Sümbolid",
|
||||||
"emoji_button.travel": "Reisimine & kohad",
|
"emoji_button.travel": "Reisimine & kohad",
|
||||||
"empty_column.account_featured.other": "{acct} pole veel midagi esile tõstnud. Kas sa teadsid, et oma profiilis saad esile tõsta enamkasutatavaid teemaviiteid või sõbra kasutajakontot?",
|
"empty_column.account_featured.other": "{acct} pole veel midagi esile tõstnud. Kas teadsid, et oma profiilis saad esile tõsta rohkem kasutatud teemaviiteid või sõbra kasutajakontot?",
|
||||||
"empty_column.account_hides_collections": "See kasutaja otsustas mitte teha seda infot saadavaks",
|
"empty_column.account_hides_collections": "See kasutaja otsustas mitte teha seda infot saadavaks",
|
||||||
"empty_column.account_suspended": "Konto kustutatud",
|
"empty_column.account_suspended": "Konto kustutatud",
|
||||||
"empty_column.account_timeline": "Siin postitusi ei ole!",
|
"empty_column.account_timeline": "Siin postitusi ei ole!",
|
||||||
@ -556,6 +600,8 @@
|
|||||||
"featured_carousel.header": "{count, plural, one {Esiletõstetud postitus} other {Esiletõstetud postitust}}",
|
"featured_carousel.header": "{count, plural, one {Esiletõstetud postitus} other {Esiletõstetud postitust}}",
|
||||||
"featured_carousel.slide": "Postitus {current, number} / {max, number}",
|
"featured_carousel.slide": "Postitus {current, number} / {max, number}",
|
||||||
"featured_tags.more_items": "+{count}",
|
"featured_tags.more_items": "+{count}",
|
||||||
|
"featured_tags.suggestions": "Postitasid hiljuti {items} kohta. Kas lisada need esiletõstetud teemaviideteks?",
|
||||||
|
"featured_tags.suggestions.added": "Halda mistahes ajal oma esiletõstetud teemaviiteid kohas <link>Muuda profiili > Esiletõstetud teemaviited</link>.",
|
||||||
"filter_modal.added.context_mismatch_explanation": "See filtrikategooria ei rakendu kontekstis, kuidas postituseni jõudsid. Kui tahad postitust ka selles kontekstis filtreerida, pead muutma filtrit.",
|
"filter_modal.added.context_mismatch_explanation": "See filtrikategooria ei rakendu kontekstis, kuidas postituseni jõudsid. Kui tahad postitust ka selles kontekstis filtreerida, pead muutma filtrit.",
|
||||||
"filter_modal.added.context_mismatch_title": "Konteksti mittesobivus!",
|
"filter_modal.added.context_mismatch_title": "Konteksti mittesobivus!",
|
||||||
"filter_modal.added.expired_explanation": "Selle filtri kategooria on aegunud. pead muutma aegumiskuupäeva, kui tahad, et filter kehtiks.",
|
"filter_modal.added.expired_explanation": "Selle filtri kategooria on aegunud. pead muutma aegumiskuupäeva, kui tahad, et filter kehtiks.",
|
||||||
@ -620,7 +666,7 @@
|
|||||||
"hashtag.column_header.tag_mode.any": "või teemaviide {additional}",
|
"hashtag.column_header.tag_mode.any": "või teemaviide {additional}",
|
||||||
"hashtag.column_header.tag_mode.none": "ilma teemaviiteta {additional}",
|
"hashtag.column_header.tag_mode.none": "ilma teemaviiteta {additional}",
|
||||||
"hashtag.column_settings.select.no_options_message": "Soovitusi ei leitud",
|
"hashtag.column_settings.select.no_options_message": "Soovitusi ei leitud",
|
||||||
"hashtag.column_settings.select.placeholder": "Sisesta sildid…",
|
"hashtag.column_settings.select.placeholder": "Sisesta teemaviited…",
|
||||||
"hashtag.column_settings.tag_mode.all": "Kõik need",
|
"hashtag.column_settings.tag_mode.all": "Kõik need",
|
||||||
"hashtag.column_settings.tag_mode.any": "Mõni neist",
|
"hashtag.column_settings.tag_mode.any": "Mõni neist",
|
||||||
"hashtag.column_settings.tag_mode.none": "Mitte ükski neist",
|
"hashtag.column_settings.tag_mode.none": "Mitte ükski neist",
|
||||||
@ -920,7 +966,7 @@
|
|||||||
"onboarding.profile.display_name": "Näidatav nimi",
|
"onboarding.profile.display_name": "Näidatav nimi",
|
||||||
"onboarding.profile.display_name_hint": "Su täisnimi või naljanimi…",
|
"onboarding.profile.display_name_hint": "Su täisnimi või naljanimi…",
|
||||||
"onboarding.profile.note": "Elulugu",
|
"onboarding.profile.note": "Elulugu",
|
||||||
"onboarding.profile.note_hint": "Saad @mainida teisi kasutajaid või lisada #teemaviidet…",
|
"onboarding.profile.note_hint": "Saad @mainida teisi kasutajaid või lisada #teemaviiteid…",
|
||||||
"onboarding.profile.title": "Profiili seadistamine",
|
"onboarding.profile.title": "Profiili seadistamine",
|
||||||
"onboarding.profile.upload_avatar": "Laadi üles profiilipilt",
|
"onboarding.profile.upload_avatar": "Laadi üles profiilipilt",
|
||||||
"onboarding.profile.upload_header": "Laadi üles profiili päis",
|
"onboarding.profile.upload_header": "Laadi üles profiili päis",
|
||||||
@ -1048,7 +1094,7 @@
|
|||||||
"search_popout.user": "kasutaja",
|
"search_popout.user": "kasutaja",
|
||||||
"search_results.accounts": "Profiilid",
|
"search_results.accounts": "Profiilid",
|
||||||
"search_results.all": "Kõik",
|
"search_results.all": "Kõik",
|
||||||
"search_results.hashtags": "Sildid",
|
"search_results.hashtags": "Teemaviited",
|
||||||
"search_results.no_results": "Tulemusi pole.",
|
"search_results.no_results": "Tulemusi pole.",
|
||||||
"search_results.no_search_yet": "Proovi otsida postitusi, profiile või teemaviiteid.",
|
"search_results.no_search_yet": "Proovi otsida postitusi, profiile või teemaviiteid.",
|
||||||
"search_results.see_all": "Vaata kõiki",
|
"search_results.see_all": "Vaata kõiki",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Mykistetty",
|
"account.muted": "Mykistetty",
|
||||||
"account.muting": "Mykistetty",
|
"account.muting": "Mykistetty",
|
||||||
"account.mutual": "Seuraatte toisianne",
|
"account.mutual": "Seuraatte toisianne",
|
||||||
|
"account.name.copy": "Kopioi käyttäjätunnus",
|
||||||
"account.name.help.domain": "{domain} on palvelin, jolla käyttäjän profiili ja julkaisut sijaitsevat.",
|
"account.name.help.domain": "{domain} on palvelin, jolla käyttäjän profiili ja julkaisut sijaitsevat.",
|
||||||
"account.name.help.domain_self": "{domain} on palvelin, jolla profiilisi ja julkaisusi sijaitsevat.",
|
"account.name.help.domain_self": "{domain} on palvelin, jolla profiilisi ja julkaisusi sijaitsevat.",
|
||||||
"account.name.help.footer": "Aivan kuten voit lähettää sähköpostia eri sähköpostiohjelmilla, voit olla yhteydessä muihin Mastodon-palvelimiin – ja kehen tahansa, joka käyttää sosiaalisen median sovelluksia, jotka toimivat samoilla säännöillä kuin Mastodon (hyödyntävät ActivityPub-protokollaa).",
|
"account.name.help.footer": "Aivan kuten voit lähettää sähköpostia eri sähköpostiohjelmilla, voit olla yhteydessä muihin Mastodon-palvelimiin – ja kehen tahansa, joka käyttää sosiaalisen median sovelluksia, jotka toimivat samoilla säännöillä kuin Mastodon (hyödyntävät ActivityPub-protokollaa).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Kumoa käyttäjän @{name} mykistys",
|
"account.unmute": "Kumoa käyttäjän @{name} mykistys",
|
||||||
"account.unmute_notifications_short": "Kumoa ilmoitusten mykistys",
|
"account.unmute_notifications_short": "Kumoa ilmoitusten mykistys",
|
||||||
"account.unmute_short": "Kumoa mykistys",
|
"account.unmute_short": "Kumoa mykistys",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Ilmaise muille, että tili suorittaa enimmäkseen automaattisia toimia eikä sitä välttämättä valvota",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Bottitili",
|
||||||
|
"account_edit.advanced_settings.title": "Edistyneet asetukset",
|
||||||
"account_edit.bio.add_label": "Lisää elämäkerta",
|
"account_edit.bio.add_label": "Lisää elämäkerta",
|
||||||
"account_edit.bio.edit_label": "Muokkaa elämäkertaa",
|
"account_edit.bio.edit_label": "Muokkaa elämäkertaa",
|
||||||
"account_edit.bio.placeholder": "Lisää lyhyt esittely, joka auttaa muita tunnistamaan sinut.",
|
"account_edit.bio.placeholder": "Lisää lyhyt esittely, joka auttaa muita tunnistamaan sinut.",
|
||||||
@ -579,8 +583,7 @@
|
|||||||
"dropdown.empty": "Valitse vaihtoehto",
|
"dropdown.empty": "Valitse vaihtoehto",
|
||||||
"email_subscriptions.email": "Sähköpostiosoite",
|
"email_subscriptions.email": "Sähköpostiosoite",
|
||||||
"email_subscriptions.form.action": "Tilaa",
|
"email_subscriptions.form.action": "Tilaa",
|
||||||
"email_subscriptions.form.disclaimer": "Voit peruuttaa tilauksen milloin tahansa. Jos haluat lisätietoja, katso <a>tietosuojakäytäntö</a>.",
|
"email_subscriptions.form.bottom": "Saa julkaisut Saapuneet-kansioosi luomatta Mastodon-tiliä. Peruuta tilaus milloin tahansa. Jos haluat lisätietoja, katso <a>tietosuojakäytäntö</a>.",
|
||||||
"email_subscriptions.form.lead": "Hanki julkaisut sähköpostilaatikkoosi luomatta Mastodon-tiliä.",
|
|
||||||
"email_subscriptions.form.title": "Tilaa sähköpostipäivitykset käyttäjältä {name}",
|
"email_subscriptions.form.title": "Tilaa sähköpostipäivitykset käyttäjältä {name}",
|
||||||
"email_subscriptions.submitted.lead": "Viimeistele sähköpostipäivitysten tilaus tarkistamalla Saapuneet-kansiosi.",
|
"email_subscriptions.submitted.lead": "Viimeistele sähköpostipäivitysten tilaus tarkistamalla Saapuneet-kansiosi.",
|
||||||
"email_subscriptions.submitted.title": "Vielä yksi vaihe",
|
"email_subscriptions.submitted.title": "Vielä yksi vaihe",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Masqué·e",
|
"account.muted": "Masqué·e",
|
||||||
"account.muting": "Masqué",
|
"account.muting": "Masqué",
|
||||||
"account.mutual": "Vous vous suivez mutuellement",
|
"account.mutual": "Vous vous suivez mutuellement",
|
||||||
|
"account.name.copy": "Copier l’identifiant",
|
||||||
"account.name.help.domain": "{domain} est le serveur qui héberge le profil et les messages du compte.",
|
"account.name.help.domain": "{domain} est le serveur qui héberge le profil et les messages du compte.",
|
||||||
"account.name.help.domain_self": "{domain} est le serveur qui héberge votre profil et vos messages.",
|
"account.name.help.domain_self": "{domain} est le serveur qui héberge votre profil et vos messages.",
|
||||||
"account.name.help.footer": "Tout comme vous pouvez envoyer des courriels à des personnes utilisant différents logiciels de messagerie, vous pouvez interagir avec des personnes sur d'autres serveurs Mastodon — et avec n'importe qui sur d'autres applications sociales propulsées par le même ensemble de règles que Mastodon utilise (le protocole ActivityPub).",
|
"account.name.help.footer": "Tout comme vous pouvez envoyer des courriels à des personnes utilisant différents logiciels de messagerie, vous pouvez interagir avec des personnes sur d'autres serveurs Mastodon — et avec n'importe qui sur d'autres applications sociales propulsées par le même ensemble de règles que Mastodon utilise (le protocole ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Ne plus masquer @{name}",
|
"account.unmute": "Ne plus masquer @{name}",
|
||||||
"account.unmute_notifications_short": "Ne plus masquer les notifications",
|
"account.unmute_notifications_short": "Ne plus masquer les notifications",
|
||||||
"account.unmute_short": "Ne plus masquer",
|
"account.unmute_short": "Ne plus masquer",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Indique que le compte effectue principalement des actions automatisées et pourrait ne pas être surveillé",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Compte automatisé",
|
||||||
|
"account_edit.advanced_settings.title": "Paramètres avancés",
|
||||||
"account_edit.bio.add_label": "Ajouter une présentation",
|
"account_edit.bio.add_label": "Ajouter une présentation",
|
||||||
"account_edit.bio.edit_label": "Modifier la présentation",
|
"account_edit.bio.edit_label": "Modifier la présentation",
|
||||||
"account_edit.bio.placeholder": "Ajouter une courte introduction pour aider les autres à vous connaître.",
|
"account_edit.bio.placeholder": "Ajouter une courte introduction pour aider les autres à vous connaître.",
|
||||||
@ -579,8 +583,7 @@
|
|||||||
"dropdown.empty": "Sélectionner une option",
|
"dropdown.empty": "Sélectionner une option",
|
||||||
"email_subscriptions.email": "Adresse de courriel",
|
"email_subscriptions.email": "Adresse de courriel",
|
||||||
"email_subscriptions.form.action": "S’abonner",
|
"email_subscriptions.form.action": "S’abonner",
|
||||||
"email_subscriptions.form.disclaimer": "Vous pouvez vous désabonner à tout moment. Pour plus d'informations, référez-vous à la <a>politique de confidentialité</a>.",
|
"email_subscriptions.form.bottom": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon. Désabonnez-vous quand vous voulez. Pour plus d’information, se référer à la <a>politique de confidentialité</a>.",
|
||||||
"email_subscriptions.form.lead": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Abonnez-vous pour recevoir par courriel les notifications de {name}",
|
"email_subscriptions.form.title": "Abonnez-vous pour recevoir par courriel les notifications de {name}",
|
||||||
"email_subscriptions.submitted.lead": "Vérifiez votre boîte de réception pour finaliser de votre inscription aux notifications par courriel.",
|
"email_subscriptions.submitted.lead": "Vérifiez votre boîte de réception pour finaliser de votre inscription aux notifications par courriel.",
|
||||||
"email_subscriptions.submitted.title": "Une dernière chose",
|
"email_subscriptions.submitted.title": "Une dernière chose",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Masqué·e",
|
"account.muted": "Masqué·e",
|
||||||
"account.muting": "Masqué",
|
"account.muting": "Masqué",
|
||||||
"account.mutual": "Vous vous suivez mutuellement",
|
"account.mutual": "Vous vous suivez mutuellement",
|
||||||
|
"account.name.copy": "Copier l’identifiant",
|
||||||
"account.name.help.domain": "{domain} est le serveur qui héberge le profil et les messages du compte.",
|
"account.name.help.domain": "{domain} est le serveur qui héberge le profil et les messages du compte.",
|
||||||
"account.name.help.domain_self": "{domain} est le serveur qui héberge votre profil et vos messages.",
|
"account.name.help.domain_self": "{domain} est le serveur qui héberge votre profil et vos messages.",
|
||||||
"account.name.help.footer": "Tout comme vous pouvez envoyer des courriels à des personnes utilisant différents logiciels de messagerie, vous pouvez interagir avec des personnes sur d'autres serveurs Mastodon — et avec n'importe qui sur d'autres applications sociales propulsées par le même ensemble de règles que Mastodon utilise (le protocole ActivityPub).",
|
"account.name.help.footer": "Tout comme vous pouvez envoyer des courriels à des personnes utilisant différents logiciels de messagerie, vous pouvez interagir avec des personnes sur d'autres serveurs Mastodon — et avec n'importe qui sur d'autres applications sociales propulsées par le même ensemble de règles que Mastodon utilise (le protocole ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Ne plus masquer @{name}",
|
"account.unmute": "Ne plus masquer @{name}",
|
||||||
"account.unmute_notifications_short": "Réactiver les notifications",
|
"account.unmute_notifications_short": "Réactiver les notifications",
|
||||||
"account.unmute_short": "Ne plus masquer",
|
"account.unmute_short": "Ne plus masquer",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Indique que le compte effectue principalement des actions automatisées et pourrait ne pas être surveillé",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Compte automatisé",
|
||||||
|
"account_edit.advanced_settings.title": "Paramètres avancés",
|
||||||
"account_edit.bio.add_label": "Ajouter une présentation",
|
"account_edit.bio.add_label": "Ajouter une présentation",
|
||||||
"account_edit.bio.edit_label": "Modifier la présentation",
|
"account_edit.bio.edit_label": "Modifier la présentation",
|
||||||
"account_edit.bio.placeholder": "Ajouter une courte introduction pour aider les autres à vous connaître.",
|
"account_edit.bio.placeholder": "Ajouter une courte introduction pour aider les autres à vous connaître.",
|
||||||
@ -579,8 +583,7 @@
|
|||||||
"dropdown.empty": "Sélectionner une option",
|
"dropdown.empty": "Sélectionner une option",
|
||||||
"email_subscriptions.email": "Adresse de courriel",
|
"email_subscriptions.email": "Adresse de courriel",
|
||||||
"email_subscriptions.form.action": "S’abonner",
|
"email_subscriptions.form.action": "S’abonner",
|
||||||
"email_subscriptions.form.disclaimer": "Vous pouvez vous désabonner à tout moment. Pour plus d'informations, référez-vous à la <a>politique de confidentialité</a>.",
|
"email_subscriptions.form.bottom": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon. Désabonnez-vous quand vous voulez. Pour plus d’information, se référer à la <a>politique de confidentialité</a>.",
|
||||||
"email_subscriptions.form.lead": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Abonnez-vous pour recevoir par courriel les notifications de {name}",
|
"email_subscriptions.form.title": "Abonnez-vous pour recevoir par courriel les notifications de {name}",
|
||||||
"email_subscriptions.submitted.lead": "Vérifiez votre boîte de réception pour finaliser de votre inscription aux notifications par courriel.",
|
"email_subscriptions.submitted.lead": "Vérifiez votre boîte de réception pour finaliser de votre inscription aux notifications par courriel.",
|
||||||
"email_subscriptions.submitted.title": "Une dernière chose",
|
"email_subscriptions.submitted.title": "Une dernière chose",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Balbhaithe",
|
"account.muted": "Balbhaithe",
|
||||||
"account.muting": "Ag balbhaigh",
|
"account.muting": "Ag balbhaigh",
|
||||||
"account.mutual": "Leanann sibh a chéile",
|
"account.mutual": "Leanann sibh a chéile",
|
||||||
|
"account.name.copy": "Láimhseáil chóipeála",
|
||||||
"account.name.help.domain": "Is é {domain} an freastalaí a óstálann próifíl agus poist an úsáideora.",
|
"account.name.help.domain": "Is é {domain} an freastalaí a óstálann próifíl agus poist an úsáideora.",
|
||||||
"account.name.help.domain_self": "Is é {domain} an freastalaí a óstálann do phróifíl agus do phoist.",
|
"account.name.help.domain_self": "Is é {domain} an freastalaí a óstálann do phróifíl agus do phoist.",
|
||||||
"account.name.help.footer": "Díreach mar is féidir leat ríomhphoist a sheoladh chuig daoine ag baint úsáide as cliaint ríomhphoist éagsúla, is féidir leat idirghníomhú le daoine ar fhreastalaithe Mastodon eile – agus le duine ar bith ar aipeanna sóisialta eile atá faoi thiomáint ag an tsraith rialacha chéanna a úsáideann Mastodon (an prótacal ActivityPub).",
|
"account.name.help.footer": "Díreach mar is féidir leat ríomhphoist a sheoladh chuig daoine ag baint úsáide as cliaint ríomhphoist éagsúla, is féidir leat idirghníomhú le daoine ar fhreastalaithe Mastodon eile – agus le duine ar bith ar aipeanna sóisialta eile atá faoi thiomáint ag an tsraith rialacha chéanna a úsáideann Mastodon (an prótacal ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Díbhalbhaigh @{name}",
|
"account.unmute": "Díbhalbhaigh @{name}",
|
||||||
"account.unmute_notifications_short": "Díbhalbhaigh fógraí",
|
"account.unmute_notifications_short": "Díbhalbhaigh fógraí",
|
||||||
"account.unmute_short": "Díbhalbhaigh",
|
"account.unmute_short": "Díbhalbhaigh",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Tabhair comhartha do dhaoine eile go ndéanann an cuntas gníomhartha uathoibrithe den chuid is mó agus nach bhféadfadh sé go ndéantar monatóireacht air",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Cuntas uathoibrithe",
|
||||||
|
"account_edit.advanced_settings.title": "Socruithe ardleibhéil",
|
||||||
"account_edit.bio.add_label": "Cuir beathaisnéis leis",
|
"account_edit.bio.add_label": "Cuir beathaisnéis leis",
|
||||||
"account_edit.bio.edit_label": "Cuir beathaisnéis in eagar",
|
"account_edit.bio.edit_label": "Cuir beathaisnéis in eagar",
|
||||||
"account_edit.bio.placeholder": "Cuir réamhrá gearr leis chun cabhrú le daoine eile tú a aithint.",
|
"account_edit.bio.placeholder": "Cuir réamhrá gearr leis chun cabhrú le daoine eile tú a aithint.",
|
||||||
@ -577,10 +581,7 @@
|
|||||||
"domain_pill.your_server": "Do theach digiteach, áit a bhfuil do phoist go léir ina gcónaí. Nach maith leat an ceann seo? Aistrigh freastalaithe am ar bith agus tabhair leat do leantóirí freisin.",
|
"domain_pill.your_server": "Do theach digiteach, áit a bhfuil do phoist go léir ina gcónaí. Nach maith leat an ceann seo? Aistrigh freastalaithe am ar bith agus tabhair leat do leantóirí freisin.",
|
||||||
"domain_pill.your_username": "D'aitheantóir uathúil ar an bhfreastalaí seo. Is féidir teacht ar úsáideoirí leis an ainm úsáideora céanna ar fhreastalaithe éagsúla.",
|
"domain_pill.your_username": "D'aitheantóir uathúil ar an bhfreastalaí seo. Is féidir teacht ar úsáideoirí leis an ainm úsáideora céanna ar fhreastalaithe éagsúla.",
|
||||||
"dropdown.empty": "Roghnaigh rogha",
|
"dropdown.empty": "Roghnaigh rogha",
|
||||||
"email_subscriptions.email": "Seoladh ríomhphoist",
|
|
||||||
"email_subscriptions.form.action": "Liostáil",
|
"email_subscriptions.form.action": "Liostáil",
|
||||||
"email_subscriptions.form.disclaimer": "Is féidir leat díliostáil ag am ar bith. Le haghaidh tuilleadh eolais, féach ar an <a>Polasaí Príobháideachais</a>.",
|
|
||||||
"email_subscriptions.form.lead": "Faigh poist i do bhosca isteach gan cuntas Mastodon a chruthú.",
|
|
||||||
"email_subscriptions.form.title": "Cláraigh le haghaidh nuashonruithe ríomhphoist ó {name}",
|
"email_subscriptions.form.title": "Cláraigh le haghaidh nuashonruithe ríomhphoist ó {name}",
|
||||||
"email_subscriptions.submitted.lead": "Seiceáil do bhosca isteach le haghaidh ríomhphoist chun clárú le haghaidh nuashonruithe ríomhphoist a chríochnú.",
|
"email_subscriptions.submitted.lead": "Seiceáil do bhosca isteach le haghaidh ríomhphoist chun clárú le haghaidh nuashonruithe ríomhphoist a chríochnú.",
|
||||||
"email_subscriptions.submitted.title": "Céim amháin eile",
|
"email_subscriptions.submitted.title": "Céim amháin eile",
|
||||||
|
|||||||
@ -72,6 +72,7 @@
|
|||||||
"account.in_memoriam": "Mar chuimhneachan.",
|
"account.in_memoriam": "Mar chuimhneachan.",
|
||||||
"account.joined_short": "Air ballrachd fhaighinn",
|
"account.joined_short": "Air ballrachd fhaighinn",
|
||||||
"account.languages": "Atharraich fo-sgrìobhadh nan cànan",
|
"account.languages": "Atharraich fo-sgrìobhadh nan cànan",
|
||||||
|
"account.last_active": "Gnìomhach an turas mu dheireadh",
|
||||||
"account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}",
|
"account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}",
|
||||||
"account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas a leantainn.",
|
"account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas a leantainn.",
|
||||||
"account.media": "Meadhanan",
|
"account.media": "Meadhanan",
|
||||||
@ -101,6 +102,7 @@
|
|||||||
"account.muted": "’Ga mhùchadh",
|
"account.muted": "’Ga mhùchadh",
|
||||||
"account.muting": "’Ga mhùchadh",
|
"account.muting": "’Ga mhùchadh",
|
||||||
"account.mutual": "A’ leantainn càch a chèile",
|
"account.mutual": "A’ leantainn càch a chèile",
|
||||||
|
"account.name.copy": "Dèan lethbhreac dhen aithnichear",
|
||||||
"account.name.help.domain": "Is {domain} am frithealaiche a tha ag òstadh pròifil ’s postaichean a’ chleachdaiche.",
|
"account.name.help.domain": "Is {domain} am frithealaiche a tha ag òstadh pròifil ’s postaichean a’ chleachdaiche.",
|
||||||
"account.name.help.domain_self": "Is {domain} am frithealaiche agad-sa a tha ag òstadh pròifil ’s postaichean agad-sa.",
|
"account.name.help.domain_self": "Is {domain} am frithealaiche agad-sa a tha ag òstadh pròifil ’s postaichean agad-sa.",
|
||||||
"account.name.help.footer": "Air an aon dòigh ’s a chuireas tu puist-d gu daoine le cliantan puist-d eadar-dhealaichte, ’s urrainn dhut conaltradh le daoine air frithealaichean Mastodon eile – agus le duine sam bith air aplacaidean sòisealta eile a chleachdas na h-aon riaghailtean ’s a chleachdas Mastodon (sin pròtacal ActivityPub).",
|
"account.name.help.footer": "Air an aon dòigh ’s a chuireas tu puist-d gu daoine le cliantan puist-d eadar-dhealaichte, ’s urrainn dhut conaltradh le daoine air frithealaichean Mastodon eile – agus le duine sam bith air aplacaidean sòisealta eile a chleachdas na h-aon riaghailtean ’s a chleachdas Mastodon (sin pròtacal ActivityPub).",
|
||||||
@ -137,6 +139,9 @@
|
|||||||
"account.unmute": "Dì-mhùch @{name}",
|
"account.unmute": "Dì-mhùch @{name}",
|
||||||
"account.unmute_notifications_short": "Dì-mhùch na brathan",
|
"account.unmute_notifications_short": "Dì-mhùch na brathan",
|
||||||
"account.unmute_short": "Dì-mhùch",
|
"account.unmute_short": "Dì-mhùch",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Comharraich do chàch gu bheil an cunntas seo ri gnìomhan fèin-obrachail gu h-àraidh is dh’fhaoidte nach doir duine sam bith sùil air idir",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Cunntas fèin-obrachail",
|
||||||
|
"account_edit.advanced_settings.title": "Roghainnean adhartach",
|
||||||
"account_edit.bio.add_label": "Cuir ris roinn mu mo dhèidhinn",
|
"account_edit.bio.add_label": "Cuir ris roinn mu mo dhèidhinn",
|
||||||
"account_edit.bio.edit_label": "Deasaich an roinn mu mo dhèidhinn",
|
"account_edit.bio.edit_label": "Deasaich an roinn mu mo dhèidhinn",
|
||||||
"account_edit.bio.placeholder": "Cuir thu fhèin an aithne càich gu goirid.",
|
"account_edit.bio.placeholder": "Cuir thu fhèin an aithne càich gu goirid.",
|
||||||
@ -174,7 +179,7 @@
|
|||||||
"account_edit.field_edit_modal.name_hint": "Can “Làrach-lìn phearsanta”",
|
"account_edit.field_edit_modal.name_hint": "Can “Làrach-lìn phearsanta”",
|
||||||
"account_edit.field_edit_modal.name_label": "Leubail",
|
"account_edit.field_edit_modal.name_label": "Leubail",
|
||||||
"account_edit.field_edit_modal.url_warning": "Airson ceangal a chur ris, gabh a-staigh {protocol} aig a thoiseach.",
|
"account_edit.field_edit_modal.url_warning": "Airson ceangal a chur ris, gabh a-staigh {protocol} aig a thoiseach.",
|
||||||
"account_edit.field_edit_modal.value_hint": "Can “https://example.me”",
|
"account_edit.field_edit_modal.value_hint": "Can “https://example.com”",
|
||||||
"account_edit.field_edit_modal.value_label": "Luach",
|
"account_edit.field_edit_modal.value_label": "Luach",
|
||||||
"account_edit.field_reorder_modal.drag_cancel": "Chaidh sgur dhen t-slaodadh. Chaidh an raon “{item}” a leigeil às.",
|
"account_edit.field_reorder_modal.drag_cancel": "Chaidh sgur dhen t-slaodadh. Chaidh an raon “{item}” a leigeil às.",
|
||||||
"account_edit.field_reorder_modal.drag_end": "Chaidh an raon “{item}” a leigeil às.",
|
"account_edit.field_reorder_modal.drag_end": "Chaidh an raon “{item}” a leigeil às.",
|
||||||
@ -231,7 +236,7 @@
|
|||||||
"account_edit.verified_modal.invisible_link.summary": "Ciamar a dh’fhalaicheas mi an ceangal?",
|
"account_edit.verified_modal.invisible_link.summary": "Ciamar a dh’fhalaicheas mi an ceangal?",
|
||||||
"account_edit.verified_modal.step1.header": "Dèan lethbhreac dhen chòd HTML gu h-ìosal is cuir e ri bann-cinn na làraich-lìn agad",
|
"account_edit.verified_modal.step1.header": "Dèan lethbhreac dhen chòd HTML gu h-ìosal is cuir e ri bann-cinn na làraich-lìn agad",
|
||||||
"account_edit.verified_modal.step2.details": "Ma chuir thu an làrach-lìn agad mar raon ghnàthaichte ris cheana, feumaidh tu a sguabadh às ’s a chur ris a-rithist airson an dearbhadh a chur gu dol.",
|
"account_edit.verified_modal.step2.details": "Ma chuir thu an làrach-lìn agad mar raon ghnàthaichte ris cheana, feumaidh tu a sguabadh às ’s a chur ris a-rithist airson an dearbhadh a chur gu dol.",
|
||||||
"account_edit.verified_modal.step2.header": "Cuir an làrach-lìn agad ris na raon gnàthaichte",
|
"account_edit.verified_modal.step2.header": "Cuir an làrach-lìn agad ris ’na raon gnàthaichte",
|
||||||
"account_edit.verified_modal.title": "Mar a chuireas tu ceangal dearbhte ris",
|
"account_edit.verified_modal.title": "Mar a chuireas tu ceangal dearbhte ris",
|
||||||
"account_edit_tags.add_tag": "Cuir #{tagName} ris",
|
"account_edit_tags.add_tag": "Cuir #{tagName} ris",
|
||||||
"account_edit_tags.column_title": "Deasaich na tagaichean",
|
"account_edit_tags.column_title": "Deasaich na tagaichean",
|
||||||
@ -373,10 +378,13 @@
|
|||||||
"collections.delete_collection": "Sguab an cruinneachadh às",
|
"collections.delete_collection": "Sguab an cruinneachadh às",
|
||||||
"collections.description_length_hint": "Crìoch de 100 caractar",
|
"collections.description_length_hint": "Crìoch de 100 caractar",
|
||||||
"collections.detail.accounts_heading": "Cunntasan",
|
"collections.detail.accounts_heading": "Cunntasan",
|
||||||
|
"collections.detail.author_added_you_on_date": "Chuir {author} ris thu {date}",
|
||||||
"collections.detail.loading": "A’ luchdadh a’ chruinneachaidh…",
|
"collections.detail.loading": "A’ luchdadh a’ chruinneachaidh…",
|
||||||
"collections.detail.revoke_inclusion": "Thoir air falbh mi",
|
"collections.detail.revoke_inclusion": "Thoir air falbh mi",
|
||||||
|
"collections.detail.sensitive_content": "Susbaint fhrionasach",
|
||||||
"collections.detail.sensitive_note": "Tha cunntasan is susbaint sa chruinneachadh seo a dh’fhaodadh a bhith frionasach do chuid.",
|
"collections.detail.sensitive_note": "Tha cunntasan is susbaint sa chruinneachadh seo a dh’fhaodadh a bhith frionasach do chuid.",
|
||||||
"collections.detail.share": "Co-roinn an cruinneachadh seo",
|
"collections.detail.share": "Co-roinn an cruinneachadh seo",
|
||||||
|
"collections.detail.you_are_in_this_collection": "Thathar do bhrosnachadh sa chruinneachadh seo",
|
||||||
"collections.edit_details": "Deasaich am fiosrachadh",
|
"collections.edit_details": "Deasaich am fiosrachadh",
|
||||||
"collections.error_loading_collections": "Thachair mearachd nuair a dh’fheuch sinn ris a’ chruinneachaidhean agad a luchdadh.",
|
"collections.error_loading_collections": "Thachair mearachd nuair a dh’fheuch sinn ris a’ chruinneachaidhean agad a luchdadh.",
|
||||||
"collections.hints.accounts_counter": "{count} / {max} cunntas(an)",
|
"collections.hints.accounts_counter": "{count} / {max} cunntas(an)",
|
||||||
@ -532,6 +540,7 @@
|
|||||||
"content_warning.hide": "Falaich am post",
|
"content_warning.hide": "Falaich am post",
|
||||||
"content_warning.show": "Seall e co-dhiù",
|
"content_warning.show": "Seall e co-dhiù",
|
||||||
"content_warning.show_more": "Seall barrachd dheth",
|
"content_warning.show_more": "Seall barrachd dheth",
|
||||||
|
"content_warning.show_short": "Seall",
|
||||||
"conversation.delete": "Sguab às an còmhradh",
|
"conversation.delete": "Sguab às an còmhradh",
|
||||||
"conversation.mark_as_read": "Cuir comharra gun deach a leughadh",
|
"conversation.mark_as_read": "Cuir comharra gun deach a leughadh",
|
||||||
"conversation.open": "Seall an còmhradh",
|
"conversation.open": "Seall an còmhradh",
|
||||||
@ -572,6 +581,13 @@
|
|||||||
"domain_pill.your_server": "Do dhachaigh dhigiteach far a bheil na postaichean uile agad a’ fuireach. Nach toigh leat an tè seo? Dèan imrich gu frithealaiche eile uair sam bith is thoir an luchd-leantainn agad leat cuideachd.",
|
"domain_pill.your_server": "Do dhachaigh dhigiteach far a bheil na postaichean uile agad a’ fuireach. Nach toigh leat an tè seo? Dèan imrich gu frithealaiche eile uair sam bith is thoir an luchd-leantainn agad leat cuideachd.",
|
||||||
"domain_pill.your_username": "Seo an t-aithnichear àraidh agad air an fhrithealaiche seo. Dh’fhaoidte gu bheil luchd-cleachdaidh air a bheil an t-aon ainm air frithealaichean eile.",
|
"domain_pill.your_username": "Seo an t-aithnichear àraidh agad air an fhrithealaiche seo. Dh’fhaoidte gu bheil luchd-cleachdaidh air a bheil an t-aon ainm air frithealaichean eile.",
|
||||||
"dropdown.empty": "Tagh roghainn",
|
"dropdown.empty": "Tagh roghainn",
|
||||||
|
"email_subscriptions.email": "Post-d",
|
||||||
|
"email_subscriptions.form.action": "Fo-sgrìobh",
|
||||||
|
"email_subscriptions.form.bottom": "Faigh postaichean sa bhogsa a-steach agad às aonais cunntais Mhastodon. Cuir crìoch air an fho-sgrìobhadh uair sam bith. Airson barrachd fiosrachaidh, faic am <a>poileasaidh prìobhaideachd</a>.",
|
||||||
|
"email_subscriptions.form.title": "Clàraich airson naidheachdan {name} fhaighinn air a’ phost-d",
|
||||||
|
"email_subscriptions.submitted.lead": "Thoir sùil a bheil post-d sa a’ bhogsa a-steach agad airson an clàradh airson naidheachdan puist-d a choileanadh.",
|
||||||
|
"email_subscriptions.submitted.title": "Aon cheum eile",
|
||||||
|
"email_subscriptions.validation.email.invalid": "Seòladh puist-d mì-dhligheach",
|
||||||
"embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.",
|
"embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.",
|
||||||
"embed.preview": "Seo an coltas a bhios air:",
|
"embed.preview": "Seo an coltas a bhios air:",
|
||||||
"emoji_button.activity": "Gnìomhachd",
|
"emoji_button.activity": "Gnìomhachd",
|
||||||
@ -590,6 +606,12 @@
|
|||||||
"emoji_button.symbols": "Samhlaidhean",
|
"emoji_button.symbols": "Samhlaidhean",
|
||||||
"emoji_button.travel": "Siubhal ⁊ àitichean",
|
"emoji_button.travel": "Siubhal ⁊ àitichean",
|
||||||
"empty_column.account_featured.other": "Chan eil {acct} a’ brosnachadh dad fhathast. An robh fios agad gur urrainn dhut na tagaichean hais a chleachdas tu as trice agus fiù ’s cunntasan do charaidean a bhrosnachadh air a’ phròifil agad?",
|
"empty_column.account_featured.other": "Chan eil {acct} a’ brosnachadh dad fhathast. An robh fios agad gur urrainn dhut na tagaichean hais a chleachdas tu as trice agus fiù ’s cunntasan do charaidean a bhrosnachadh air a’ phròifil agad?",
|
||||||
|
"empty_column.account_featured_other.no_collections_desc": "Cha do chruthaich {acct} cruinneachadh sam bith fhathast.",
|
||||||
|
"empty_column.account_featured_other.title": "Chan eil dad ri fhaicinn an-seo",
|
||||||
|
"empty_column.account_featured_self.no_collections": "Chan eil cruinneachadh ann fhathast",
|
||||||
|
"empty_column.account_featured_self.no_collections_button": "Cruthaich cruinneachadh",
|
||||||
|
"empty_column.account_featured_unknown.no_collections_desc": "Cha do chruthaich an cunntas seo cruinneachadh sam bith fhathast.",
|
||||||
|
"empty_column.account_featured_unknown.other": "Chan eil an cunntas seo a’ brosnachadh dad fhathast.",
|
||||||
"empty_column.account_hides_collections": "Chuir an cleachdaiche seo roimhe nach eil am fiosrachadh seo ri fhaighinn",
|
"empty_column.account_hides_collections": "Chuir an cleachdaiche seo roimhe nach eil am fiosrachadh seo ri fhaighinn",
|
||||||
"empty_column.account_suspended": "Chaidh an cunntas a chur à rèim",
|
"empty_column.account_suspended": "Chaidh an cunntas a chur à rèim",
|
||||||
"empty_column.account_timeline": "Chan eil post an-seo!",
|
"empty_column.account_timeline": "Chan eil post an-seo!",
|
||||||
@ -948,7 +970,7 @@
|
|||||||
"notifications.column_settings.filter_bar.category": "Bàr-criathraidh luath",
|
"notifications.column_settings.filter_bar.category": "Bàr-criathraidh luath",
|
||||||
"notifications.column_settings.follow": "Luchd-leantainn ùr:",
|
"notifications.column_settings.follow": "Luchd-leantainn ùr:",
|
||||||
"notifications.column_settings.follow_request": "Iarrtasan leantainn ùra:",
|
"notifications.column_settings.follow_request": "Iarrtasan leantainn ùra:",
|
||||||
"notifications.column_settings.group": "Buidheann",
|
"notifications.column_settings.group": "Buidhnich",
|
||||||
"notifications.column_settings.mention": "Iomraidhean:",
|
"notifications.column_settings.mention": "Iomraidhean:",
|
||||||
"notifications.column_settings.poll": "Toraidhean cunntais-bheachd:",
|
"notifications.column_settings.poll": "Toraidhean cunntais-bheachd:",
|
||||||
"notifications.column_settings.push": "Brathan putaidh",
|
"notifications.column_settings.push": "Brathan putaidh",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Acalada",
|
"account.muted": "Acalada",
|
||||||
"account.muting": "Silenciamento",
|
"account.muting": "Silenciamento",
|
||||||
"account.mutual": "Seguimento mútuo",
|
"account.mutual": "Seguimento mútuo",
|
||||||
|
"account.name.copy": "Copiar identificador",
|
||||||
"account.name.help.domain": "{domain} é o servidor que aloxa o perfil e as publicacións da usuaria.",
|
"account.name.help.domain": "{domain} é o servidor que aloxa o perfil e as publicacións da usuaria.",
|
||||||
"account.name.help.domain_self": "{domain} é o servidor que aloxa o teu perfil e publicacións.",
|
"account.name.help.domain_self": "{domain} é o servidor que aloxa o teu perfil e publicacións.",
|
||||||
"account.name.help.footer": "Ao igual que envías correos electrónicos a persoas que usan diferentes provedores, podes interactuar con persoas en outros servidores Mastodon ― e con calquera outra que use aplicacións que sigan o mesmo sistema que usa Mastodon (o protocolo ActivityPub).",
|
"account.name.help.footer": "Ao igual que envías correos electrónicos a persoas que usan diferentes provedores, podes interactuar con persoas en outros servidores Mastodon ― e con calquera outra que use aplicacións que sigan o mesmo sistema que usa Mastodon (o protocolo ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Deixar de silenciar a @{name}",
|
"account.unmute": "Deixar de silenciar a @{name}",
|
||||||
"account.unmute_notifications_short": "Reactivar notificacións",
|
"account.unmute_notifications_short": "Reactivar notificacións",
|
||||||
"account.unmute_short": "Non silenciar",
|
"account.unmute_short": "Non silenciar",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Advirte ás usuarias de que esta conta realiza principalmente accións automatizadas e podería non estar monitorizada",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Conta automatizada",
|
||||||
|
"account_edit.advanced_settings.title": "Axustes avanzados",
|
||||||
"account_edit.bio.add_label": "Engadir biografía",
|
"account_edit.bio.add_label": "Engadir biografía",
|
||||||
"account_edit.bio.edit_label": "Editar biografía",
|
"account_edit.bio.edit_label": "Editar biografía",
|
||||||
"account_edit.bio.placeholder": "Escribe unha breve presentación para que te coñezan mellor.",
|
"account_edit.bio.placeholder": "Escribe unha breve presentación para que te coñezan mellor.",
|
||||||
@ -577,10 +581,8 @@
|
|||||||
"domain_pill.your_server": "O teu fogar dixital, onde están as túas publicacións. Non é do teu agrado? Podes cambiar de servidor cando queiras levando as túas seguidoras contigo.",
|
"domain_pill.your_server": "O teu fogar dixital, onde están as túas publicacións. Non é do teu agrado? Podes cambiar de servidor cando queiras levando as túas seguidoras contigo.",
|
||||||
"domain_pill.your_username": "O teu identificador único neste servidor. É posible que atopes usuarias co mesmo nome de usuaria en outros servidores.",
|
"domain_pill.your_username": "O teu identificador único neste servidor. É posible que atopes usuarias co mesmo nome de usuaria en outros servidores.",
|
||||||
"dropdown.empty": "Escolle unha opción",
|
"dropdown.empty": "Escolle unha opción",
|
||||||
"email_subscriptions.email": "Enderezos de correo",
|
"email_subscriptions.email": "Correo electrónico",
|
||||||
"email_subscriptions.form.action": "Subscribirse",
|
"email_subscriptions.form.action": "Subscribirse",
|
||||||
"email_subscriptions.form.disclaimer": "Pódeste dar de baixa cando queiras. Para máis información le a <a>Directiva de Privacidade</a>.",
|
|
||||||
"email_subscriptions.form.lead": "Recibe as publicacións na caixa de correo sen precisar unha conta de Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Subscríbete para recibir actualizacións por correo de {name}",
|
"email_subscriptions.form.title": "Subscríbete para recibir actualizacións por correo de {name}",
|
||||||
"email_subscriptions.submitted.lead": "Comproba a túa caixa de correo para completar a subscrición ás actualizacións por correo.",
|
"email_subscriptions.submitted.lead": "Comproba a túa caixa de correo para completar a subscrición ás actualizacións por correo.",
|
||||||
"email_subscriptions.submitted.title": "Un último paso",
|
"email_subscriptions.submitted.title": "Un último paso",
|
||||||
|
|||||||
@ -577,10 +577,7 @@
|
|||||||
"domain_pill.your_server": "הבית המקוון שלך, היכן ששוכנות כל הודעותיך. לא מוצא חן בעיניך? ניתן לעבור שרתים בכל עת וגם לשמור על העוקבים.",
|
"domain_pill.your_server": "הבית המקוון שלך, היכן ששוכנות כל הודעותיך. לא מוצא חן בעיניך? ניתן לעבור שרתים בכל עת וגם לשמור על העוקבים.",
|
||||||
"domain_pill.your_username": "המזהה הייחודי שלך על שרת זה. ניתן למצוא משתמשים עם שם משתמש זהה על שרתים שונים.",
|
"domain_pill.your_username": "המזהה הייחודי שלך על שרת זה. ניתן למצוא משתמשים עם שם משתמש זהה על שרתים שונים.",
|
||||||
"dropdown.empty": "בחירת אפשרות",
|
"dropdown.empty": "בחירת אפשרות",
|
||||||
"email_subscriptions.email": "כתובת דוא\"ל",
|
|
||||||
"email_subscriptions.form.action": "הרשמה",
|
"email_subscriptions.form.action": "הרשמה",
|
||||||
"email_subscriptions.form.disclaimer": "ניתן לבטל את ההרשמה בכל עת. למידע נוסף, הציצו ב<a>מדיניות הפרטיות</a>.",
|
|
||||||
"email_subscriptions.form.lead": "לקבל הודעות בדואל בלי ליצור חשבון מסטודון.",
|
|
||||||
"email_subscriptions.form.title": "הרשמה לקבלת עידכוני דואל מאת {name}",
|
"email_subscriptions.form.title": "הרשמה לקבלת עידכוני דואל מאת {name}",
|
||||||
"email_subscriptions.submitted.lead": "יש לחפש בתיבת הדואל הודעה לסיום ההרשמה לעידכונים בדואל.",
|
"email_subscriptions.submitted.lead": "יש לחפש בתיבת הדואל הודעה לסיום ההרשמה לעידכונים בדואל.",
|
||||||
"email_subscriptions.submitted.title": "עוד שלב אחד אחרון",
|
"email_subscriptions.submitted.title": "עוד שלב אחד אחרון",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Némítva",
|
"account.muted": "Némítva",
|
||||||
"account.muting": "Némítás",
|
"account.muting": "Némítás",
|
||||||
"account.mutual": "Követitek egymást",
|
"account.mutual": "Követitek egymást",
|
||||||
|
"account.name.copy": "Fióknév másolása",
|
||||||
"account.name.help.domain": "A(z) {domain} a kiszolgáló, amely a felhasználó profilját és bejegyzéseit szolgálja ki.",
|
"account.name.help.domain": "A(z) {domain} a kiszolgáló, amely a felhasználó profilját és bejegyzéseit szolgálja ki.",
|
||||||
"account.name.help.domain_self": "A(z) {domain} a kiszolgáló, amely a profilodat és bejegyzéseidet szolgálja ki.",
|
"account.name.help.domain_self": "A(z) {domain} a kiszolgáló, amely a profilodat és bejegyzéseidet szolgálja ki.",
|
||||||
"account.name.help.footer": "Ahogy több különböző szolgáltatónál lévő embernek lehet e-mailt küldeni, úgy más Mastodon-kiszolgálókon lévő emberrekel is kapcsolatba lehet lépni – és bárki mással is, akik ugyanazokat a szabályokat (az ActivityPub-protokollt) használó közösségimédia-alkalmazásokat használnak, mint a Mastodon.",
|
"account.name.help.footer": "Ahogy több különböző szolgáltatónál lévő embernek lehet e-mailt küldeni, úgy más Mastodon-kiszolgálókon lévő emberrekel is kapcsolatba lehet lépni – és bárki mással is, akik ugyanazokat a szabályokat (az ActivityPub-protokollt) használó közösségimédia-alkalmazásokat használnak, mint a Mastodon.",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"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.advanced_settings.bot_hint": "Jelzés másoknak, hogy ez a fiók automatikus műveleteket végez és valószínűleg nem figyeljük",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Automatizált fiók",
|
||||||
|
"account_edit.advanced_settings.title": "Speciális beállítások",
|
||||||
"account_edit.bio.add_label": "Bemutatkozás hozzáadá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.",
|
||||||
@ -579,8 +583,7 @@
|
|||||||
"dropdown.empty": "Válassz egy lehetőséget",
|
"dropdown.empty": "Válassz egy lehetőséget",
|
||||||
"email_subscriptions.email": "E-mail-cím",
|
"email_subscriptions.email": "E-mail-cím",
|
||||||
"email_subscriptions.form.action": "Feliratkozás",
|
"email_subscriptions.form.action": "Feliratkozás",
|
||||||
"email_subscriptions.form.disclaimer": "Bármikor leiratkozhatsz. További információkért lásd az <a>Adatvédelmi szabályzatot</a>.",
|
"email_subscriptions.form.bottom": "Kapj bejegyzéseket a postaládádba anélkül, hogy Mastodon-fiókot hoznál létre. Bármikor leiratkozhatsz. További információkért nézd meg az <a>Adatvédelmi irányelveket</a>.",
|
||||||
"email_subscriptions.form.lead": "Kapj bejegyzéseket a postaládádba, Mastodon-fiók létrehozása nélkül.",
|
|
||||||
"email_subscriptions.form.title": "Regisztrálj {name} e-mailben küldött híreiért",
|
"email_subscriptions.form.title": "Regisztrálj {name} e-mailben küldött híreiért",
|
||||||
"email_subscriptions.submitted.lead": "Ellenőrizd a postaládádat az e-mailes hírek regisztrációs folyamatának befejezéséhez.",
|
"email_subscriptions.submitted.lead": "Ellenőrizd a postaládádat az e-mailes hírek regisztrációs folyamatának befejezéséhez.",
|
||||||
"email_subscriptions.submitted.title": "Csak még egy lépés",
|
"email_subscriptions.submitted.title": "Csak még egy lépés",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Þaggaður",
|
"account.muted": "Þaggaður",
|
||||||
"account.muting": "Þöggun",
|
"account.muting": "Þöggun",
|
||||||
"account.mutual": "Þið fylgist með hvor öðrum",
|
"account.mutual": "Þið fylgist með hvor öðrum",
|
||||||
|
"account.name.copy": "Afrita kennislóð",
|
||||||
"account.name.help.domain": "{domain} er netþjónninn sem hýsir upplýsingasnið um notandann og færslurnar hans.",
|
"account.name.help.domain": "{domain} er netþjónninn sem hýsir upplýsingasnið um notandann og færslurnar hans.",
|
||||||
"account.name.help.domain_self": "{domain} er netþjónninn þinn sem hýsir upplýsingasniðið þitt og færslurnar þínar.",
|
"account.name.help.domain_self": "{domain} er netþjónninn þinn sem hýsir upplýsingasniðið þitt og færslurnar þínar.",
|
||||||
"account.name.help.footer": "Rétt eins og að þú getur sent tölvupóst á fólk í gegnum mismunandi þjónustur og forrit, þá getur þú átt í samskiptum við fólk á öðrum Mastodon-netþjónum – og reyndar við hverja þá sem eru á öðrum þeim samfélagsmiðlum sem nota sömu samskiptareglur og Mastodon notar (sem er ActivityPub-samskiptamátinn).",
|
"account.name.help.footer": "Rétt eins og að þú getur sent tölvupóst á fólk í gegnum mismunandi þjónustur og forrit, þá getur þú átt í samskiptum við fólk á öðrum Mastodon-netþjónum – og reyndar við hverja þá sem eru á öðrum þeim samfélagsmiðlum sem nota sömu samskiptareglur og Mastodon notar (sem er ActivityPub-samskiptamátinn).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Hætta að þagga niður í @{name}",
|
"account.unmute": "Hætta að þagga niður í @{name}",
|
||||||
"account.unmute_notifications_short": "Hætta að þagga í tilkynningum",
|
"account.unmute_notifications_short": "Hætta að þagga í tilkynningum",
|
||||||
"account.unmute_short": "Hætta að þagga niður",
|
"account.unmute_short": "Hætta að þagga niður",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Merki til annarra að þessi aðgangur sé aðallega til að framkvæma sjálfvirkar aðgerðir og gæti verið án þess að hann sé vaktaður reglulega",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Sjálfvirkur aðgangur",
|
||||||
|
"account_edit.advanced_settings.title": "Ítarlegar stillingar",
|
||||||
"account_edit.bio.add_label": "Bættu við æviágripi",
|
"account_edit.bio.add_label": "Bættu við æviágripi",
|
||||||
"account_edit.bio.edit_label": "Breyta æviágripi",
|
"account_edit.bio.edit_label": "Breyta æviágripi",
|
||||||
"account_edit.bio.placeholder": "Settu inn stutta kynningu á þér svo aðrir eigi betur með að auðkenna þig.",
|
"account_edit.bio.placeholder": "Settu inn stutta kynningu á þér svo aðrir eigi betur með að auðkenna þig.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Stafrænt heimili þitt, þar sem allar færslur þínar eru hýstar. Kanntu ekki við þennan netþjón? Þú getur flutt þig á milli netþjóna hvenær sem er og tekið með þér alla fylgjendurna þína.",
|
"domain_pill.your_server": "Stafrænt heimili þitt, þar sem allar færslur þínar eru hýstar. Kanntu ekki við þennan netþjón? Þú getur flutt þig á milli netþjóna hvenær sem er og tekið með þér alla fylgjendurna þína.",
|
||||||
"domain_pill.your_username": "Sértækt auðkenni þitt á þessum netþjóni. Það er mögulegt að finna notendur með sama notandanafn á mismunandi netþjónum.",
|
"domain_pill.your_username": "Sértækt auðkenni þitt á þessum netþjóni. Það er mögulegt að finna notendur með sama notandanafn á mismunandi netþjónum.",
|
||||||
"dropdown.empty": "Veldu valkost",
|
"dropdown.empty": "Veldu valkost",
|
||||||
"email_subscriptions.email": "Tölvupóstfang",
|
"email_subscriptions.email": "Tölvupóstur",
|
||||||
"email_subscriptions.form.action": "Gerast áskrifandi",
|
"email_subscriptions.form.action": "Gerast áskrifandi",
|
||||||
"email_subscriptions.form.disclaimer": "Þú getur hætt í áskrift hvenær sem er. Til að sjá nánari upplýsingar geturðu skoðað <a>Meðferð persónuupplýsinga</a>.",
|
"email_subscriptions.form.bottom": "Fáðu færslur í tölvupósti án þess að útbúa Mastodon-aðgang. Segðu upp áskrift hvenær sem er. Nánari upplýsingar má finna í <a>Meðferð persónuupplýsinga</a>.",
|
||||||
"email_subscriptions.form.lead": "Fáðu færslur í pósthólfið þitt án þess að skrá þig með Mastodon-aðgang.",
|
|
||||||
"email_subscriptions.form.title": "Skráðu þig í áskrift í tölvupósti að færslum frá {name}",
|
"email_subscriptions.form.title": "Skráðu þig í áskrift í tölvupósti að færslum frá {name}",
|
||||||
"email_subscriptions.submitted.lead": "Athugaðu hvort þér hafi borist tölvupóstur til að ljúka áskriftarferlinu.",
|
"email_subscriptions.submitted.lead": "Athugaðu hvort þér hafi borist tölvupóstur til að ljúka áskriftarferlinu.",
|
||||||
"email_subscriptions.submitted.title": "Eitt skref í viðbót",
|
"email_subscriptions.submitted.title": "Eitt skref í viðbót",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Mutato",
|
"account.muted": "Mutato",
|
||||||
"account.muting": "Account silenziato",
|
"account.muting": "Account silenziato",
|
||||||
"account.mutual": "Vi seguite a vicenda",
|
"account.mutual": "Vi seguite a vicenda",
|
||||||
|
"account.name.copy": "Copia il nome univoco",
|
||||||
"account.name.help.domain": "{domain} è il server che ospita il profilo e i post dell'utente.",
|
"account.name.help.domain": "{domain} è il server che ospita il profilo e i post dell'utente.",
|
||||||
"account.name.help.domain_self": "{domain} è il tuo server che ospita il tuo profilo e i post.",
|
"account.name.help.domain_self": "{domain} è il tuo server che ospita il tuo profilo e i post.",
|
||||||
"account.name.help.footer": "Proprio come puoi inviare email a persone che usano diversi client di posta elettronica, così puoi interagire con le persone su altri server Mastodon — e con chiunque utilizzi altre app social basate sulle stesse regole che Mastodon usa (il protocollo ActivityPub).",
|
"account.name.help.footer": "Proprio come puoi inviare email a persone che usano diversi client di posta elettronica, così puoi interagire con le persone su altri server Mastodon — e con chiunque utilizzi altre app social basate sulle stesse regole che Mastodon usa (il protocollo ActivityPub).",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Riattiva @{name}",
|
"account.unmute": "Riattiva @{name}",
|
||||||
"account.unmute_notifications_short": "Riattiva notifiche",
|
"account.unmute_notifications_short": "Riattiva notifiche",
|
||||||
"account.unmute_short": "Attiva audio",
|
"account.unmute_short": "Attiva audio",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Segnala ad altri che l'account esegue principalmente azioni automatizzate e potrebbe non essere monitorato",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Account automatizzato",
|
||||||
|
"account_edit.advanced_settings.title": "Impostazioni avanzate",
|
||||||
"account_edit.bio.add_label": "Aggiungi biografia",
|
"account_edit.bio.add_label": "Aggiungi biografia",
|
||||||
"account_edit.bio.edit_label": "Modifica la biografia",
|
"account_edit.bio.edit_label": "Modifica la biografia",
|
||||||
"account_edit.bio.placeholder": "Aggiungi una breve introduzione per aiutare gli altri a identificarti.",
|
"account_edit.bio.placeholder": "Aggiungi una breve introduzione per aiutare gli altri a identificarti.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "La tua casa digitale, dove vivono tutti i tuoi post. Non ti piace questa? Cambia server in qualsiasi momento e porta con te anche i tuoi follower.",
|
"domain_pill.your_server": "La tua casa digitale, dove vivono tutti i tuoi post. Non ti piace questa? Cambia server in qualsiasi momento e porta con te anche i tuoi follower.",
|
||||||
"domain_pill.your_username": "Il tuo identificatore univoco su questo server. È possibile trovare utenti con lo stesso nome utente su server diversi.",
|
"domain_pill.your_username": "Il tuo identificatore univoco su questo server. È possibile trovare utenti con lo stesso nome utente su server diversi.",
|
||||||
"dropdown.empty": "Seleziona un'opzione",
|
"dropdown.empty": "Seleziona un'opzione",
|
||||||
"email_subscriptions.email": "Indirizzo email",
|
"email_subscriptions.email": "Email",
|
||||||
"email_subscriptions.form.action": "Iscriviti",
|
"email_subscriptions.form.action": "Iscriviti",
|
||||||
"email_subscriptions.form.disclaimer": "Puoi annullare l'iscrizione in qualsiasi momento. Per ulteriori informazioni, consulta l'<a>Informativa sulla privacy</a>.",
|
"email_subscriptions.form.bottom": "Ricevi i post nella tua casella di posta elettronica senza creare un account Mastodon. Puoi disiscriverti in qualsiasi momento. Per maggiori informazioni, consulta l'<a>Informativa sulla privacy</a>.",
|
||||||
"email_subscriptions.form.lead": "Ricevi i post nella tua casella di posta elettronica senza creare un account Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Iscriviti per ricevere aggiornamenti via email da {name}",
|
"email_subscriptions.form.title": "Iscriviti per ricevere aggiornamenti via email da {name}",
|
||||||
"email_subscriptions.submitted.lead": "Controlla la tua casella di posta elettronica per completare l'iscrizione agli aggiornamenti via email.",
|
"email_subscriptions.submitted.lead": "Controlla la tua casella di posta elettronica per completare l'iscrizione agli aggiornamenti via email.",
|
||||||
"email_subscriptions.submitted.title": "Ancora un passaggio",
|
"email_subscriptions.submitted.title": "Ancora un passaggio",
|
||||||
@ -1071,7 +1074,7 @@
|
|||||||
"relative_time.days": "{number}g",
|
"relative_time.days": "{number}g",
|
||||||
"relative_time.full.days": "{number, plural, one {# giorno} other {# giorni}} fa",
|
"relative_time.full.days": "{number, plural, one {# giorno} other {# giorni}} fa",
|
||||||
"relative_time.full.hours": "{number, plural, one {# ora} other {# ore}} fa",
|
"relative_time.full.hours": "{number, plural, one {# ora} other {# ore}} fa",
|
||||||
"relative_time.full.just_now": "adesso",
|
"relative_time.full.just_now": "proprio ora",
|
||||||
"relative_time.full.minutes": "{number, plural, one {# minuto} other {# minuti}} fa",
|
"relative_time.full.minutes": "{number, plural, one {# minuto} other {# minuti}} fa",
|
||||||
"relative_time.full.seconds": "{number, plural, one {# secondo} other {# secondi}} fa",
|
"relative_time.full.seconds": "{number, plural, one {# secondo} other {# secondi}} fa",
|
||||||
"relative_time.hours": "{number}h",
|
"relative_time.hours": "{number}h",
|
||||||
@ -1281,11 +1284,11 @@
|
|||||||
"terms_of_service.effective_as_of": "In vigore a partire dal giorno {date}",
|
"terms_of_service.effective_as_of": "In vigore a partire dal giorno {date}",
|
||||||
"terms_of_service.title": "Termini di Servizio",
|
"terms_of_service.title": "Termini di Servizio",
|
||||||
"terms_of_service.upcoming_changes_on": "Prossime modifiche nel giorno {date}",
|
"terms_of_service.upcoming_changes_on": "Prossime modifiche nel giorno {date}",
|
||||||
"time_remaining.days": "{number, plural, one {# giorno} other {# giorni}} left",
|
"time_remaining.days": "{number, plural, one {# giorno rimanente} other {# giorni rimanenti}}",
|
||||||
"time_remaining.hours": "{number, plural, one {# ora} other {# ore}} left",
|
"time_remaining.hours": "{number, plural, one {# ora rimanente} other {# ore rimanenti}}",
|
||||||
"time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} left",
|
"time_remaining.minutes": "{number, plural, one {# minuto rimanente} other {# minuti rimanenti}}",
|
||||||
"time_remaining.moments": "Restano pochi istanti",
|
"time_remaining.moments": "Restano pochi istanti",
|
||||||
"time_remaining.seconds": "{number, plural, one {# secondo} other {# secondi}} left",
|
"time_remaining.seconds": "{number, plural, one {# secondo rimanente} other {# secondi rimanenti}}",
|
||||||
"trends.counter_by_accounts": "{count, plural, one {{count} persona} other {{count} persone}} {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}",
|
"trends.counter_by_accounts": "{count, plural, one {{count} persona} other {{count} persone}} {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}",
|
||||||
"trends.trending_now": "Ora in tendenza",
|
"trends.trending_now": "Ora in tendenza",
|
||||||
"ui.beforeunload": "La tua bozza andrà persa, se abbandoni Mastodon.",
|
"ui.beforeunload": "La tua bozza andrà persa, se abbandoni Mastodon.",
|
||||||
|
|||||||
@ -577,10 +577,7 @@
|
|||||||
"domain_pill.your_server": "Lí數位ê厝,內底有lí所有ê PO文。無kah意?Ē當轉kàu別ê服侍器,koh保有跟tuè lí êl âng。.",
|
"domain_pill.your_server": "Lí數位ê厝,內底有lí所有ê PO文。無kah意?Ē當轉kàu別ê服侍器,koh保有跟tuè lí êl âng。.",
|
||||||
"domain_pill.your_username": "Lí 佇tsit ê服侍器獨一ê稱呼。佇無kâng ê服侍器有可能tshuē著kāng名ê用者。",
|
"domain_pill.your_username": "Lí 佇tsit ê服侍器獨一ê稱呼。佇無kâng ê服侍器有可能tshuē著kāng名ê用者。",
|
||||||
"dropdown.empty": "揀選項",
|
"dropdown.empty": "揀選項",
|
||||||
"email_subscriptions.email": "電子phue地址",
|
|
||||||
"email_subscriptions.form.action": "訂",
|
"email_subscriptions.form.action": "訂",
|
||||||
"email_subscriptions.form.disclaimer": "Lí不管時lóng會使取消訂。其他ê資訊請參考<a>隱私權政策</a>。",
|
|
||||||
"email_subscriptions.form.lead": "無開 Mastodon ê口座,mā佇電子phue ê收件箱收著PO文。",
|
|
||||||
"email_subscriptions.form.title": "訂 {name} ê電子phue更新",
|
"email_subscriptions.form.title": "訂 {name} ê電子phue更新",
|
||||||
"email_subscriptions.submitted.lead": "請檢查lí ê收件箱來完成訂電子批ê更新。",
|
"email_subscriptions.submitted.lead": "請檢查lí ê收件箱來完成訂電子批ê更新。",
|
||||||
"email_subscriptions.submitted.title": "上尾步",
|
"email_subscriptions.submitted.title": "上尾步",
|
||||||
|
|||||||
@ -574,10 +574,7 @@
|
|||||||
"domain_pill.your_server": "Jouw digitale thuis, waar al jouw berichten zich bevinden. Is deze server toch niet naar jouw wens? Dan kun je op elk moment naar een andere server verhuizen en ook jouw volgers overbrengen.",
|
"domain_pill.your_server": "Jouw digitale thuis, waar al jouw berichten zich bevinden. Is deze server toch niet naar jouw wens? Dan kun je op elk moment naar een andere server verhuizen en ook jouw volgers overbrengen.",
|
||||||
"domain_pill.your_username": "Jouw unieke identificatie-adres op deze server. Het is mogelijk dat er gebruikers met dezelfde gebruikersnaam op verschillende servers te vinden zijn.",
|
"domain_pill.your_username": "Jouw unieke identificatie-adres op deze server. Het is mogelijk dat er gebruikers met dezelfde gebruikersnaam op verschillende servers te vinden zijn.",
|
||||||
"dropdown.empty": "Selecteer een optie",
|
"dropdown.empty": "Selecteer een optie",
|
||||||
"email_subscriptions.email": "E-mailadres",
|
|
||||||
"email_subscriptions.form.action": "Abonneren",
|
"email_subscriptions.form.action": "Abonneren",
|
||||||
"email_subscriptions.form.disclaimer": "Je kunt je op elk gewenst moment afmelden. Raadpleeg het <a>Privacybeleid</a> voor meer informatie.",
|
|
||||||
"email_subscriptions.form.lead": "Krijg berichten in je inbox zonder een Mastodonaccount aan te hoeven maken.",
|
|
||||||
"email_subscriptions.form.title": "Op e-mailupdates van {name} abonneren",
|
"email_subscriptions.form.title": "Op e-mailupdates van {name} abonneren",
|
||||||
"email_subscriptions.submitted.lead": "Kijk in je inbox voor een e-mail waarmee je het abbonement op de e-mailupdates kunt bevestigen.",
|
"email_subscriptions.submitted.lead": "Kijk in je inbox voor een e-mail waarmee je het abbonement op de e-mailupdates kunt bevestigen.",
|
||||||
"email_subscriptions.submitted.title": "Nog één stap",
|
"email_subscriptions.submitted.title": "Nog één stap",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Målbunden",
|
"account.muted": "Målbunden",
|
||||||
"account.muting": "Dempa",
|
"account.muting": "Dempa",
|
||||||
"account.mutual": "De fylgjer kvarandre",
|
"account.mutual": "De fylgjer kvarandre",
|
||||||
|
"account.name.copy": "Kopier brukaradressa",
|
||||||
"account.name.help.domain": "{domain} er tenaren som lagrar brukarprofilen og innlegga.",
|
"account.name.help.domain": "{domain} er tenaren som lagrar brukarprofilen og innlegga.",
|
||||||
"account.name.help.domain_self": "{domain} er tenaren som lagrar brukarprofilen og innlegga dine.",
|
"account.name.help.domain_self": "{domain} er tenaren som lagrar brukarprofilen og innlegga dine.",
|
||||||
"account.name.help.footer": "På same måten som du kan senda epost til folk med ulike epostprogram og -kontoar, kan du kommunisera med folk på andre Mastodon-tenarar, og med folk på andre sosiale nettverk som samhandlar på same måte som Mastodon. Det er ActivityPub-protokollen.",
|
"account.name.help.footer": "På same måten som du kan senda epost til folk med ulike epostprogram og -kontoar, kan du kommunisera med folk på andre Mastodon-tenarar, og med folk på andre sosiale nettverk som samhandlar på same måte som Mastodon. Det er ActivityPub-protokollen.",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "Opphev demping av @{name}",
|
"account.unmute": "Opphev demping av @{name}",
|
||||||
"account.unmute_notifications_short": "Opphev demping av varslingar",
|
"account.unmute_notifications_short": "Opphev demping av varslingar",
|
||||||
"account.unmute_short": "Opphev demping",
|
"account.unmute_short": "Opphev demping",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Varsla andre om at denne kontoen for det meste er automatisert og truleg ikkje blir sjekka jamnleg",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Automatisert konto",
|
||||||
|
"account_edit.advanced_settings.title": "Avanserte innstillingar",
|
||||||
"account_edit.bio.add_label": "Skriv om deg sjølv",
|
"account_edit.bio.add_label": "Skriv om deg sjølv",
|
||||||
"account_edit.bio.edit_label": "Rediger bio",
|
"account_edit.bio.edit_label": "Rediger bio",
|
||||||
"account_edit.bio.placeholder": "Skriv ei kort innleiing slik at andre kan sjå kven du er.",
|
"account_edit.bio.placeholder": "Skriv ei kort innleiing slik at andre kan sjå kven du er.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Din digitale heim, der alle innlegga dine bur. Liker du ikkje dette? Byt til ein ny tenar når som helst og ta med fylgjarane dine òg.",
|
"domain_pill.your_server": "Din digitale heim, der alle innlegga dine bur. Liker du ikkje dette? Byt til ein ny tenar når som helst og ta med fylgjarane dine òg.",
|
||||||
"domain_pill.your_username": "Din unike identifikator på denne tenaren. Det er mogleg å finne brukarar med same brukarnamn på forskjellige tenarar.",
|
"domain_pill.your_username": "Din unike identifikator på denne tenaren. Det er mogleg å finne brukarar med same brukarnamn på forskjellige tenarar.",
|
||||||
"dropdown.empty": "Vel eit alternativ",
|
"dropdown.empty": "Vel eit alternativ",
|
||||||
"email_subscriptions.email": "Epostadresse",
|
"email_subscriptions.email": "Epost",
|
||||||
"email_subscriptions.form.action": "Abonner",
|
"email_subscriptions.form.action": "Abonner",
|
||||||
"email_subscriptions.form.disclaimer": "Du kan melda deg av når som helst. Sjå <a>personvernretningslinene</a> for meir informasjon.",
|
"email_subscriptions.form.bottom": "Få innlegg i innboksen din utan å laga ein Mastodon-konto. Meld deg av når du vil. Sjå <a>personvernsida</a> for meir info.",
|
||||||
"email_subscriptions.form.lead": "Få innlegg i innboksen din utan å laga ein Mastodon-konto.",
|
|
||||||
"email_subscriptions.form.title": "Meld deg på epostoppdateringar frå {name}",
|
"email_subscriptions.form.title": "Meld deg på epostoppdateringar frå {name}",
|
||||||
"email_subscriptions.submitted.lead": "Sjekk innboksen din for ein epost om korleis du fullfører abonnementet på epostoppdateringar.",
|
"email_subscriptions.submitted.lead": "Sjekk innboksen din for ein epost om korleis du fullfører abonnementet på epostoppdateringar.",
|
||||||
"email_subscriptions.submitted.title": "Eitt steg til",
|
"email_subscriptions.submitted.title": "Eitt steg til",
|
||||||
|
|||||||
@ -536,10 +536,7 @@
|
|||||||
"domain_pill.your_server": "Ваш цифровой дом, где находятся все ваши посты. Если вам не нравится этот сервер, вы можете в любое время перенести свою учётную запись на другой сервер, не теряя подписчиков.",
|
"domain_pill.your_server": "Ваш цифровой дом, где находятся все ваши посты. Если вам не нравится этот сервер, вы можете в любое время перенести свою учётную запись на другой сервер, не теряя подписчиков.",
|
||||||
"domain_pill.your_username": "Ваш уникальный идентификатор на этом сервере. На разных серверах могут встречаться люди с тем же именем пользователя.",
|
"domain_pill.your_username": "Ваш уникальный идентификатор на этом сервере. На разных серверах могут встречаться люди с тем же именем пользователя.",
|
||||||
"dropdown.empty": "Выберите вариант",
|
"dropdown.empty": "Выберите вариант",
|
||||||
"email_subscriptions.email": "Адрес электронной почты",
|
|
||||||
"email_subscriptions.form.action": "Подписаться",
|
"email_subscriptions.form.action": "Подписаться",
|
||||||
"email_subscriptions.form.disclaimer": "Вы можете отписаться в любое время. Больше информации в <a>Политике конфиденциальности</a>.",
|
|
||||||
"email_subscriptions.form.lead": "Получайте новые посты по электронной почты — для этого не нужно регистрироваться в Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Оформите email-подписку на этого пользователя",
|
"email_subscriptions.form.title": "Оформите email-подписку на этого пользователя",
|
||||||
"email_subscriptions.submitted.title": "Ещё один шаг",
|
"email_subscriptions.submitted.title": "Ещё один шаг",
|
||||||
"email_subscriptions.validation.email.blocked": "Почтовый сервис заблокирован",
|
"email_subscriptions.validation.email.blocked": "Почтовый сервис заблокирован",
|
||||||
|
|||||||
@ -138,6 +138,9 @@
|
|||||||
"account.unmute": "Ktheji zërin @{name}",
|
"account.unmute": "Ktheji zërin @{name}",
|
||||||
"account.unmute_notifications_short": "Shfaqi njoftimet",
|
"account.unmute_notifications_short": "Shfaqi njoftimet",
|
||||||
"account.unmute_short": "Çheshtoje",
|
"account.unmute_short": "Çheshtoje",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Sinjalizojuni të tjerëve se llogari kryesisht kryen veprime të automatizuara dhe mund të mos vëzhgohet",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Llogari e automatizuar",
|
||||||
|
"account_edit.advanced_settings.title": "Rregullime të mëtejshme",
|
||||||
"account_edit.bio.add_label": "Shtoni jetëshkrim",
|
"account_edit.bio.add_label": "Shtoni jetëshkrim",
|
||||||
"account_edit.bio.edit_label": "Përpunoni jetëshkrim",
|
"account_edit.bio.edit_label": "Përpunoni jetëshkrim",
|
||||||
"account_edit.bio.placeholder": "Shtoni një hyrje të shkurtër për të ndihmuar të tjerët t’ju identifikojnë.",
|
"account_edit.bio.placeholder": "Shtoni një hyrje të shkurtër për të ndihmuar të tjerët t’ju identifikojnë.",
|
||||||
@ -573,10 +576,9 @@
|
|||||||
"domain_pill.your_server": "Shtëpia juaj dixhitale, kur gjenden krejt postimet tuaja. S’ju pëlqen kjo këtu? Shpërngulni shërbyes kur të doni dhe sillni edhe ndjekësit tuaj.",
|
"domain_pill.your_server": "Shtëpia juaj dixhitale, kur gjenden krejt postimet tuaja. S’ju pëlqen kjo këtu? Shpërngulni shërbyes kur të doni dhe sillni edhe ndjekësit tuaj.",
|
||||||
"domain_pill.your_username": "Identifikuesi juja unik në këtë shërbyes. Është e mundur të gjenden përdorues me të njëjtin emër përdoruesi në shërbyes të ndryshëm.",
|
"domain_pill.your_username": "Identifikuesi juja unik në këtë shërbyes. Është e mundur të gjenden përdorues me të njëjtin emër përdoruesi në shërbyes të ndryshëm.",
|
||||||
"dropdown.empty": "Përzgjidhni një mundësi",
|
"dropdown.empty": "Përzgjidhni një mundësi",
|
||||||
"email_subscriptions.email": "Adresë email",
|
"email_subscriptions.email": "Email",
|
||||||
"email_subscriptions.form.action": "Pajtohuni",
|
"email_subscriptions.form.action": "Pajtohuni",
|
||||||
"email_subscriptions.form.disclaimer": "S’mund të shpajtoheni, në çfarëdo kohe. Për më tepër informacion, shihni te <a>Rregulla Privatësie</a>.",
|
"email_subscriptions.form.bottom": "Merrni postime në email-in tuaj, pa krijuar një llogari Mastodon. Shpajtohuni në çfarëdo kohe. Për më tepër informacion, shihni te <a>Rregulla Privatësie</a>.",
|
||||||
"email_subscriptions.form.lead": "Merrni postime në email-in tuaj, pa krijuar një llogari Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Regjistrohuni për përditësime me email nga {name}",
|
"email_subscriptions.form.title": "Regjistrohuni për përditësime me email nga {name}",
|
||||||
"email_subscriptions.submitted.lead": "Shihni te mesazhet tuaj të marrë për një email, që të përfundoni regjistrimin për përditësime me email.",
|
"email_subscriptions.submitted.lead": "Shihni te mesazhet tuaj të marrë për një email, që të përfundoni regjistrimin për përditësime me email.",
|
||||||
"email_subscriptions.submitted.title": "Edhe një hap",
|
"email_subscriptions.submitted.title": "Edhe një hap",
|
||||||
|
|||||||
@ -72,6 +72,7 @@
|
|||||||
"account.in_memoriam": "Till minne av.",
|
"account.in_memoriam": "Till minne av.",
|
||||||
"account.joined_short": "Gick med",
|
"account.joined_short": "Gick med",
|
||||||
"account.languages": "Ändra vilka språk du helst vill se i ditt flöde",
|
"account.languages": "Ändra vilka språk du helst vill se i ditt flöde",
|
||||||
|
"account.last_active": "Senast aktiv",
|
||||||
"account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}",
|
"account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}",
|
||||||
"account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.",
|
"account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.",
|
||||||
"account.media": "Media",
|
"account.media": "Media",
|
||||||
@ -104,7 +105,14 @@
|
|||||||
"account.name.help.domain": "{domain} är servern som är värd för användarens profil och inlägg.",
|
"account.name.help.domain": "{domain} är servern som är värd för användarens profil och inlägg.",
|
||||||
"account.name.help.domain_self": "{domain} är din server som är värd för användarens profil och inlägg.",
|
"account.name.help.domain_self": "{domain} är din server som är värd för användarens profil och inlägg.",
|
||||||
"account.name.help.footer": "Precis som du kan skicka e-post till personer med olika e-postklienter, du kan interagera med personer på andra Mastodon-servrar – och med vem som helst på andra sociala appar som drivs av samma uppsättning regler som Mastodon använder (ActivityPub-protokollet).",
|
"account.name.help.footer": "Precis som du kan skicka e-post till personer med olika e-postklienter, du kan interagera med personer på andra Mastodon-servrar – och med vem som helst på andra sociala appar som drivs av samma uppsättning regler som Mastodon använder (ActivityPub-protokollet).",
|
||||||
|
"account.name.help.header": "Ett handtag är som en e-postadress",
|
||||||
|
"account.name.help.username": "{username} är kontots användarnamn på deras server. Någon på en annan server kan ha samma användarnamn.",
|
||||||
|
"account.name.help.username_self": "{username} är ditt användarnamn på denna server. Någon på en annan server kan ha samma användarnamn.",
|
||||||
|
"account.name_info": "Vad betyder detta?",
|
||||||
"account.no_bio": "Ingen beskrivning angiven.",
|
"account.no_bio": "Ingen beskrivning angiven.",
|
||||||
|
"account.node_modal.callout": "Personlig anteckningar är endast synliga för dig.",
|
||||||
|
"account.node_modal.edit_title": "Redigera en personlig anteckning",
|
||||||
|
"account.node_modal.error_unknown": "Kunde inte spara anteckningen",
|
||||||
"account.node_modal.field_label": "Personlig anteckning",
|
"account.node_modal.field_label": "Personlig anteckning",
|
||||||
"account.node_modal.save": "Spara",
|
"account.node_modal.save": "Spara",
|
||||||
"account.node_modal.title": "Lägg till en personlig anteckning",
|
"account.node_modal.title": "Lägg till en personlig anteckning",
|
||||||
@ -130,33 +138,47 @@
|
|||||||
"account.unmute": "Sluta tysta @{name}",
|
"account.unmute": "Sluta tysta @{name}",
|
||||||
"account.unmute_notifications_short": "Aktivera aviseringsljud",
|
"account.unmute_notifications_short": "Aktivera aviseringsljud",
|
||||||
"account.unmute_short": "Avtysta",
|
"account.unmute_short": "Avtysta",
|
||||||
|
"account_edit.advanced_settings.title": "Avancerade inställningar",
|
||||||
"account_edit.bio.add_label": "Lägg till biografi",
|
"account_edit.bio.add_label": "Lägg till biografi",
|
||||||
|
"account_edit.bio.edit_label": "Redigera biografi",
|
||||||
"account_edit.bio.placeholder": "Lägg till en kort introduktion för att hjälpa andra att identifiera dig.",
|
"account_edit.bio.placeholder": "Lägg till en kort introduktion för att hjälpa andra att identifiera dig.",
|
||||||
"account_edit.bio.title": "Biografi",
|
"account_edit.bio.title": "Biografi",
|
||||||
"account_edit.bio_modal.add_title": "Lägg till biografi",
|
"account_edit.bio_modal.add_title": "Lägg till biografi",
|
||||||
"account_edit.bio_modal.edit_title": "Redigera biografi",
|
"account_edit.bio_modal.edit_title": "Redigera biografi",
|
||||||
"account_edit.column_button": "Klar",
|
"account_edit.column_button": "Klar",
|
||||||
"account_edit.column_title": "Redigera profil",
|
"account_edit.column_title": "Redigera profil",
|
||||||
|
"account_edit.custom_fields.add_label": "Lägg till fält",
|
||||||
|
"account_edit.custom_fields.edit_label": "Redigera fält",
|
||||||
"account_edit.custom_fields.placeholder": "Lägg till dina pronomen, externa länkar eller något annat du vill dela.",
|
"account_edit.custom_fields.placeholder": "Lägg till dina pronomen, externa länkar eller något annat du vill dela.",
|
||||||
"account_edit.custom_fields.reorder_button": "Ändra ordning för fält",
|
"account_edit.custom_fields.reorder_button": "Ändra ordning för fält",
|
||||||
"account_edit.custom_fields.tip_content": "Du kan enkelt lägga till trovärdighet till ditt Mastodon-konto genom att verifiera länkar till alla webbplatser du äger.",
|
"account_edit.custom_fields.tip_content": "Du kan enkelt lägga till trovärdighet till ditt Mastodon-konto genom att verifiera länkar till alla webbplatser du äger.",
|
||||||
"account_edit.custom_fields.tip_title": "Tips: Lägga till verifierade länkar",
|
"account_edit.custom_fields.tip_title": "Tips: Lägga till verifierade länkar",
|
||||||
"account_edit.custom_fields.title": "Tilläggsfält",
|
"account_edit.custom_fields.title": "Tilläggsfält",
|
||||||
"account_edit.custom_fields.verified_hint": "Hur lägger jag till en verifierad länk?",
|
"account_edit.custom_fields.verified_hint": "Hur lägger jag till en verifierad länk?",
|
||||||
|
"account_edit.display_name.add_label": "Lägg till visningsnamn",
|
||||||
|
"account_edit.display_name.edit_label": "Redigera visningsnamn",
|
||||||
"account_edit.display_name.placeholder": "Visningsnamnet är hur ditt namn ser ut på din profil och i tidslinjer.",
|
"account_edit.display_name.placeholder": "Visningsnamnet är hur ditt namn ser ut på din profil och i tidslinjer.",
|
||||||
"account_edit.display_name.title": "Visningsnamn",
|
"account_edit.display_name.title": "Visningsnamn",
|
||||||
|
"account_edit.featured_hashtags.edit_label": "Lägg till hashtaggar",
|
||||||
"account_edit.featured_hashtags.placeholder": "Hjälp andra att identifiera, och få snabb tillgång till, dina favoritämnen.",
|
"account_edit.featured_hashtags.placeholder": "Hjälp andra att identifiera, och få snabb tillgång till, dina favoritämnen.",
|
||||||
"account_edit.featured_hashtags.title": "Utvalda hashtaggar",
|
"account_edit.featured_hashtags.title": "Utvalda hashtaggar",
|
||||||
|
"account_edit.field_actions.delete": "Radera fält",
|
||||||
|
"account_edit.field_actions.edit": "Redigera fält",
|
||||||
"account_edit.field_delete_modal.confirm": "Är du säker på att du vill ta bort detta tilläggsfält? Denna åtgärd kan inte ångras.",
|
"account_edit.field_delete_modal.confirm": "Är du säker på att du vill ta bort detta tilläggsfält? Denna åtgärd kan inte ångras.",
|
||||||
"account_edit.field_delete_modal.delete_button": "Radera",
|
"account_edit.field_delete_modal.delete_button": "Radera",
|
||||||
"account_edit.field_delete_modal.title": "Radera tilläggsfält?",
|
"account_edit.field_delete_modal.title": "Radera tilläggsfält?",
|
||||||
"account_edit.field_edit_modal.add_title": "Lägg till tilläggsfält",
|
"account_edit.field_edit_modal.add_title": "Lägg till tilläggsfält",
|
||||||
|
"account_edit.field_edit_modal.discard_confirm": "Ta bort",
|
||||||
|
"account_edit.field_edit_modal.discard_message": "Du har osparade ändringar. Är du säker på att du vill ta bort dem?",
|
||||||
"account_edit.field_edit_modal.edit_title": "Redigera tilläggsfält",
|
"account_edit.field_edit_modal.edit_title": "Redigera tilläggsfält",
|
||||||
"account_edit.field_edit_modal.length_warning": "Rekommenderad teckengräns överskrids. Mobilanvändare kanske inte ser ditt fält i sin helhet.",
|
"account_edit.field_edit_modal.length_warning": "Rekommenderad teckengräns överskrids. Mobilanvändare kanske inte ser ditt fält i sin helhet.",
|
||||||
"account_edit.field_edit_modal.name_hint": "T.ex. “Personlig webbplats”",
|
"account_edit.field_edit_modal.name_hint": "T.ex. “Personlig webbplats”",
|
||||||
"account_edit.field_edit_modal.name_label": "Etikett",
|
"account_edit.field_edit_modal.name_label": "Etikett",
|
||||||
"account_edit.field_edit_modal.url_warning": "För att lägga till en länk, vänligen inkludera {protocol} i början.",
|
"account_edit.field_edit_modal.url_warning": "För att lägga till en länk, vänligen inkludera {protocol} i början.",
|
||||||
"account_edit.field_edit_modal.value_hint": "T.ex. \"https://example.me”",
|
"account_edit.field_edit_modal.value_hint": "T.ex. \"https://example.me”",
|
||||||
|
"account_edit.field_edit_modal.value_label": "Värde",
|
||||||
|
"account_edit.field_reorder_modal.drag_cancel": "Flytten avbröts. Fältet \"{item}\" släpptes.",
|
||||||
|
"account_edit.image_alt_modal.add_title": "Lägg till alternativ text",
|
||||||
"account_edit.image_edit.add_button": "Lägg till bild",
|
"account_edit.image_edit.add_button": "Lägg till bild",
|
||||||
"account_edit.image_edit.alt_add_button": "Lägg till alternativtext",
|
"account_edit.image_edit.alt_add_button": "Lägg till alternativtext",
|
||||||
"account_edit.image_edit.alt_edit_button": "Redigera alternativtext",
|
"account_edit.image_edit.alt_edit_button": "Redigera alternativtext",
|
||||||
@ -440,9 +462,7 @@
|
|||||||
"domain_pill.your_server": "Ditt digitala hem, där alla dina inlägg bor. Gillar du inte just denna? Byt server när som helst och ta med dina anhängare också.",
|
"domain_pill.your_server": "Ditt digitala hem, där alla dina inlägg bor. Gillar du inte just denna? Byt server när som helst och ta med dina anhängare också.",
|
||||||
"domain_pill.your_username": "Din unika identifierare på denna server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.",
|
"domain_pill.your_username": "Din unika identifierare på denna server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.",
|
||||||
"dropdown.empty": "Välj ett alternativ",
|
"dropdown.empty": "Välj ett alternativ",
|
||||||
"email_subscriptions.email": "E-postadress",
|
|
||||||
"email_subscriptions.form.action": "Prenumerera",
|
"email_subscriptions.form.action": "Prenumerera",
|
||||||
"email_subscriptions.form.lead": "Få inlägg i din inkorg utan att skapa ett Mastodon-konto.",
|
|
||||||
"email_subscriptions.submitted.title": "Ett steg kvar",
|
"email_subscriptions.submitted.title": "Ett steg kvar",
|
||||||
"email_subscriptions.validation.email.blocked": "Blockerad e-postleverantör",
|
"email_subscriptions.validation.email.blocked": "Blockerad e-postleverantör",
|
||||||
"email_subscriptions.validation.email.invalid": "Ogiltig epostadress",
|
"email_subscriptions.validation.email.invalid": "Ogiltig epostadress",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "Susturuldu",
|
"account.muted": "Susturuldu",
|
||||||
"account.muting": "Sessize alınıyor",
|
"account.muting": "Sessize alınıyor",
|
||||||
"account.mutual": "Birbirinizi takip ediyorsunuz",
|
"account.mutual": "Birbirinizi takip ediyorsunuz",
|
||||||
|
"account.name.copy": "İsmi Kopyala",
|
||||||
"account.name.help.domain": "{domain} kullanıcının profilini ve gönderilerini barındıran sunucudur.",
|
"account.name.help.domain": "{domain} kullanıcının profilini ve gönderilerini barındıran sunucudur.",
|
||||||
"account.name.help.domain_self": "{domain} profilinizi ve gönderilerinizi barındıran sunucunuzdur.",
|
"account.name.help.domain_self": "{domain} profilinizi ve gönderilerinizi barındıran sunucunuzdur.",
|
||||||
"account.name.help.footer": "Farklı e-posta istemcileri kullanan kişilere e-posta gönderebileceğiniz gibi, diğer Mastodon sunucularındaki kişilerle ve Mastodon'un kullandığı kurallarla (ActivityPub protokolü) çalışan diğer sosyal uygulamalardaki herkesle etkileşim kurabilirsiniz.",
|
"account.name.help.footer": "Farklı e-posta istemcileri kullanan kişilere e-posta gönderebileceğiniz gibi, diğer Mastodon sunucularındaki kişilerle ve Mastodon'un kullandığı kurallarla (ActivityPub protokolü) çalışan diğer sosyal uygulamalardaki herkesle etkileşim kurabilirsiniz.",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "@{name} adlı kişinin sesini aç",
|
"account.unmute": "@{name} adlı kişinin sesini aç",
|
||||||
"account.unmute_notifications_short": "Bildirimlerin sesini aç",
|
"account.unmute_notifications_short": "Bildirimlerin sesini aç",
|
||||||
"account.unmute_short": "Susturmayı kaldır",
|
"account.unmute_short": "Susturmayı kaldır",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "Bu hesap temelde otomatik eylemler gerçekleştirir ve izlenmeyebiliri diğerlerine bildir",
|
||||||
|
"account_edit.advanced_settings.bot_label": "Otomatik hesap",
|
||||||
|
"account_edit.advanced_settings.title": "Gelişmiş ayarlar",
|
||||||
"account_edit.bio.add_label": "Kişisel bilgi ekle",
|
"account_edit.bio.add_label": "Kişisel bilgi ekle",
|
||||||
"account_edit.bio.edit_label": "Kişisel bilgiyi düzenle",
|
"account_edit.bio.edit_label": "Kişisel bilgiyi düzenle",
|
||||||
"account_edit.bio.placeholder": "Diğerlerinin sizi tanımasına yardımcı olmak için kısa bir tanıtım ekleyin.",
|
"account_edit.bio.placeholder": "Diğerlerinin sizi tanımasına yardımcı olmak için kısa bir tanıtım ekleyin.",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "Dijital anasayfanız, tüm gönderilerinizin yaşadığı yerdir. Bunu beğenmediniz mi? İstediğiniz zaman sunucularınızı değiştirin ve takipçilerinizi de getirin.",
|
"domain_pill.your_server": "Dijital anasayfanız, tüm gönderilerinizin yaşadığı yerdir. Bunu beğenmediniz mi? İstediğiniz zaman sunucularınızı değiştirin ve takipçilerinizi de getirin.",
|
||||||
"domain_pill.your_username": "Bu sunucudaki tekil tanımlayıcınız. Farklı sunucularda aynı kullanıcı adına sahip kullanıcıları bulmak mümkündür.",
|
"domain_pill.your_username": "Bu sunucudaki tekil tanımlayıcınız. Farklı sunucularda aynı kullanıcı adına sahip kullanıcıları bulmak mümkündür.",
|
||||||
"dropdown.empty": "Bir seçenek seçin",
|
"dropdown.empty": "Bir seçenek seçin",
|
||||||
"email_subscriptions.email": "E-posta adresi",
|
"email_subscriptions.email": "E-posta",
|
||||||
"email_subscriptions.form.action": "Abone ol",
|
"email_subscriptions.form.action": "Abone ol",
|
||||||
"email_subscriptions.form.disclaimer": "İstediğiniz zaman abonelikten çıkabilirsiniz. Daha fazla bilgi için <a>Gizlilik Politikası</a> sayfasına bakabilirsiniz.",
|
"email_subscriptions.form.bottom": "Gönderiler Mastodon hesabı oluşturmadan e-posta kutunuza gelsin. İstediğiniz zaman aboneliğinizi iptal edebilirsiniz. Daha fazla bilgi için <a>Gizlilik Politikası</a>'na bakın.",
|
||||||
"email_subscriptions.form.lead": "Gönderiler gelen kutunuza Mastodon hesabı oluşturmadan gelsin.",
|
|
||||||
"email_subscriptions.form.title": "{name} kişisinin e-posta güncellemelerine kaydolun",
|
"email_subscriptions.form.title": "{name} kişisinin e-posta güncellemelerine kaydolun",
|
||||||
"email_subscriptions.submitted.lead": "E-posta güncellemelerine kaydolma işlemini tamamlamak için gelen kutunuzu kontrol edin.",
|
"email_subscriptions.submitted.lead": "E-posta güncellemelerine kaydolma işlemini tamamlamak için gelen kutunuzu kontrol edin.",
|
||||||
"email_subscriptions.submitted.title": "Bir adım daha",
|
"email_subscriptions.submitted.title": "Bir adım daha",
|
||||||
|
|||||||
@ -577,10 +577,7 @@
|
|||||||
"domain_pill.your_server": "Nơi lưu trữ tút của bạn. Không thích ở đây? Chuyển sang máy chủ khác và giữ nguyên người theo dõi của bạn.",
|
"domain_pill.your_server": "Nơi lưu trữ tút của bạn. Không thích ở đây? Chuyển sang máy chủ khác và giữ nguyên người theo dõi của bạn.",
|
||||||
"domain_pill.your_username": "Chỉ riêng bạn trên máy chủ này. Những máy chủ khác có thể cũng có tên người dùng giống vậy.",
|
"domain_pill.your_username": "Chỉ riêng bạn trên máy chủ này. Những máy chủ khác có thể cũng có tên người dùng giống vậy.",
|
||||||
"dropdown.empty": "Chọn một lựa chọn",
|
"dropdown.empty": "Chọn một lựa chọn",
|
||||||
"email_subscriptions.email": "Địa chỉ email",
|
|
||||||
"email_subscriptions.form.action": "Đăng ký",
|
"email_subscriptions.form.action": "Đăng ký",
|
||||||
"email_subscriptions.form.disclaimer": "Bạn có thể hủy đăng ký bất cứ lúc nào. Để biết thêm thông tin, vui lòng tham khảo <a>Chính sách bảo mật</a>.",
|
|
||||||
"email_subscriptions.form.lead": "Nhận tút trực tiếp vào hộp thư đến mà không cần tạo tài khoản Mastodon.",
|
|
||||||
"email_subscriptions.form.title": "Đăng ký nhận cập nhật qua email từ {name}",
|
"email_subscriptions.form.title": "Đăng ký nhận cập nhật qua email từ {name}",
|
||||||
"email_subscriptions.submitted.lead": "Kiểm tra hộp thư đến của bạn để tìm email hoàn tất đăng ký nhận thông báo qua email.",
|
"email_subscriptions.submitted.lead": "Kiểm tra hộp thư đến của bạn để tìm email hoàn tất đăng ký nhận thông báo qua email.",
|
||||||
"email_subscriptions.submitted.title": "Một bước nữa",
|
"email_subscriptions.submitted.title": "Một bước nữa",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "已隐藏",
|
"account.muted": "已隐藏",
|
||||||
"account.muting": "正在静音",
|
"account.muting": "正在静音",
|
||||||
"account.mutual": "你们互相关注",
|
"account.mutual": "你们互相关注",
|
||||||
|
"account.name.copy": "复制用户名",
|
||||||
"account.name.help.domain": "{domain} 是托管该用户个人资料及嘟文的服务器。",
|
"account.name.help.domain": "{domain} 是托管该用户个人资料及嘟文的服务器。",
|
||||||
"account.name.help.domain_self": "{domain} 是托管你的个人资料及嘟文的服务器。",
|
"account.name.help.domain_self": "{domain} 是托管你的个人资料及嘟文的服务器。",
|
||||||
"account.name.help.footer": "就像你可以用不同的电子邮件客户端向其他人发送同样的电子邮件一般,你也可以和其他 Mastodon 服务器上的用户互动,甚至还能和与 Mastodon 采用相同规则(即 ActivityPub 协议)的其他社交软件上的任何人互动。",
|
"account.name.help.footer": "就像你可以用不同的电子邮件客户端向其他人发送同样的电子邮件一般,你也可以和其他 Mastodon 服务器上的用户互动,甚至还能和与 Mastodon 采用相同规则(即 ActivityPub 协议)的其他社交软件上的任何人互动。",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "不再隐藏 @{name}",
|
"account.unmute": "不再隐藏 @{name}",
|
||||||
"account.unmute_notifications_short": "恢复通知",
|
"account.unmute_notifications_short": "恢复通知",
|
||||||
"account.unmute_short": "取消隐藏",
|
"account.unmute_short": "取消隐藏",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "来自这个账号的绝大多数操作都是自动进行的,并且可能无人监控",
|
||||||
|
"account_edit.advanced_settings.bot_label": "机器人账号",
|
||||||
|
"account_edit.advanced_settings.title": "高级设置",
|
||||||
"account_edit.bio.add_label": "添加个人简介",
|
"account_edit.bio.add_label": "添加个人简介",
|
||||||
"account_edit.bio.edit_label": "编辑个人简介",
|
"account_edit.bio.edit_label": "编辑个人简介",
|
||||||
"account_edit.bio.placeholder": "添加一段简短介绍,帮助其他人认识你。",
|
"account_edit.bio.placeholder": "添加一段简短介绍,帮助其他人认识你。",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "你的数字家园,你的全部嘟文都在此存储。不喜欢这里吗?你可以随时迁移到其它服务器,并带上你的关注者。",
|
"domain_pill.your_server": "你的数字家园,你的全部嘟文都在此存储。不喜欢这里吗?你可以随时迁移到其它服务器,并带上你的关注者。",
|
||||||
"domain_pill.your_username": "你在此服务器上的唯一标识。不同服务器上可能存在相同用户名的用户。",
|
"domain_pill.your_username": "你在此服务器上的唯一标识。不同服务器上可能存在相同用户名的用户。",
|
||||||
"dropdown.empty": "选项",
|
"dropdown.empty": "选项",
|
||||||
"email_subscriptions.email": "电子邮件地址",
|
"email_subscriptions.email": "电子邮件",
|
||||||
"email_subscriptions.form.action": "订阅",
|
"email_subscriptions.form.action": "订阅",
|
||||||
"email_subscriptions.form.disclaimer": "你可以随时退订。更多信息参见<a>隐私政策</a>。",
|
"email_subscriptions.form.bottom": "无需注册 Mastodon 账号,在收件箱中获取嘟文。如果想退订了你可以随时退订。更多信息参见<a>隐私政策</a>。",
|
||||||
"email_subscriptions.form.lead": "无需注册 Mastodon 账号,在收件箱中获取嘟文。",
|
|
||||||
"email_subscriptions.form.title": "订阅 {name} 的电子邮件推送",
|
"email_subscriptions.form.title": "订阅 {name} 的电子邮件推送",
|
||||||
"email_subscriptions.submitted.lead": "请检查你的收件箱来完成邮件订阅注册。",
|
"email_subscriptions.submitted.lead": "请检查你的收件箱来完成邮件订阅注册。",
|
||||||
"email_subscriptions.submitted.title": "最后一步",
|
"email_subscriptions.submitted.title": "最后一步",
|
||||||
|
|||||||
@ -102,6 +102,7 @@
|
|||||||
"account.muted": "已靜音",
|
"account.muted": "已靜音",
|
||||||
"account.muting": "靜音",
|
"account.muting": "靜音",
|
||||||
"account.mutual": "跟隨彼此",
|
"account.mutual": "跟隨彼此",
|
||||||
|
"account.name.copy": "複製帳號",
|
||||||
"account.name.help.domain": "{domain} 為託管此使用者個人檔案與嘟文之伺服器。",
|
"account.name.help.domain": "{domain} 為託管此使用者個人檔案與嘟文之伺服器。",
|
||||||
"account.name.help.domain_self": "{domain} 為託管您個人檔案與嘟文之伺服器。",
|
"account.name.help.domain_self": "{domain} 為託管您個人檔案與嘟文之伺服器。",
|
||||||
"account.name.help.footer": "就像是您的以不同 email 程式寄信給他人一樣,您能與其他 Mastodon 伺服器中的人們互動,並且能和使用與 Mastodon 一樣規則 (ActivityPub 協定) 的其他社群軟體上任何人互動。",
|
"account.name.help.footer": "就像是您的以不同 email 程式寄信給他人一樣,您能與其他 Mastodon 伺服器中的人們互動,並且能和使用與 Mastodon 一樣規則 (ActivityPub 協定) 的其他社群軟體上任何人互動。",
|
||||||
@ -138,6 +139,9 @@
|
|||||||
"account.unmute": "解除靜音 @{name}",
|
"account.unmute": "解除靜音 @{name}",
|
||||||
"account.unmute_notifications_short": "解除靜音推播通知",
|
"account.unmute_notifications_short": "解除靜音推播通知",
|
||||||
"account.unmute_short": "解除靜音",
|
"account.unmute_short": "解除靜音",
|
||||||
|
"account_edit.advanced_settings.bot_hint": "告知他人此帳號主要執行自動化操作且可能未受人為監控",
|
||||||
|
"account_edit.advanced_settings.bot_label": "機器人帳號",
|
||||||
|
"account_edit.advanced_settings.title": "進階設定",
|
||||||
"account_edit.bio.add_label": "新增個人簡介",
|
"account_edit.bio.add_label": "新增個人簡介",
|
||||||
"account_edit.bio.edit_label": "編輯個人簡介",
|
"account_edit.bio.edit_label": "編輯個人簡介",
|
||||||
"account_edit.bio.placeholder": "加入一段簡短介紹以幫助其他人識別您。",
|
"account_edit.bio.placeholder": "加入一段簡短介紹以幫助其他人識別您。",
|
||||||
@ -577,10 +581,9 @@
|
|||||||
"domain_pill.your_server": "您數位世界的家,您所有的嘟文都在這裡。不喜歡這台伺服器嗎?您能隨時搬家至其他伺服器並且仍保有您的跟隨者。",
|
"domain_pill.your_server": "您數位世界的家,您所有的嘟文都在這裡。不喜歡這台伺服器嗎?您能隨時搬家至其他伺服器並且仍保有您的跟隨者。",
|
||||||
"domain_pill.your_username": "您於您的伺服器中獨一無二的識別。於不同的伺服器上可能找到具有相同帳號的使用者。",
|
"domain_pill.your_username": "您於您的伺服器中獨一無二的識別。於不同的伺服器上可能找到具有相同帳號的使用者。",
|
||||||
"dropdown.empty": "請選擇一個選項",
|
"dropdown.empty": "請選擇一個選項",
|
||||||
"email_subscriptions.email": "電子郵件地址",
|
"email_subscriptions.email": "電子郵件",
|
||||||
"email_subscriptions.form.action": "訂閱",
|
"email_subscriptions.form.action": "訂閱",
|
||||||
"email_subscriptions.form.disclaimer": "您可以任何時候取消訂閱。欲了解更多資訊,請參考<a>隱私權政策</a>。",
|
"email_subscriptions.form.bottom": "於不建立 Mastodon 帳號的情況下,將透過電子郵件取得嘟文。您可以任何時候取消訂閱。欲了解更多資訊,請參考<a>隱私權政策</a>。",
|
||||||
"email_subscriptions.form.lead": "於不建立 Mastodon 帳號的情況下,將透過電子郵件取得嘟文。",
|
|
||||||
"email_subscriptions.form.title": "訂閱 {name} 之電子郵件通訊",
|
"email_subscriptions.form.title": "訂閱 {name} 之電子郵件通訊",
|
||||||
"email_subscriptions.submitted.lead": "請檢查您的收件夾以完成訂閱電子郵件通訊。",
|
"email_subscriptions.submitted.lead": "請檢查您的收件夾以完成訂閱電子郵件通訊。",
|
||||||
"email_subscriptions.submitted.title": "最後一步",
|
"email_subscriptions.submitted.title": "最後一步",
|
||||||
|
|||||||
@ -10,6 +10,8 @@ import type {
|
|||||||
} from 'mastodon/api_types/notifications';
|
} from 'mastodon/api_types/notifications';
|
||||||
import type { ApiReportJSON } from 'mastodon/api_types/reports';
|
import type { ApiReportJSON } from 'mastodon/api_types/reports';
|
||||||
|
|
||||||
|
import type { ApiCollectionJSON } from '../api_types/collections';
|
||||||
|
|
||||||
// Maximum number of avatars displayed in a notification group
|
// Maximum number of avatars displayed in a notification group
|
||||||
// This corresponds to the max length of `group.sampleAccountIds`
|
// This corresponds to the max length of `group.sampleAccountIds`
|
||||||
export const NOTIFICATIONS_GROUP_MAX_AVATARS = 8;
|
export const NOTIFICATIONS_GROUP_MAX_AVATARS = 8;
|
||||||
@ -87,6 +89,15 @@ export interface NotificationGroupAdminReport extends BaseNotification<'admin.re
|
|||||||
report: Report;
|
report: Report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Collection = ApiCollectionJSON;
|
||||||
|
export interface NotificationGroupAddedToCollection extends BaseNotification<'added_to_collection'> {
|
||||||
|
collection: Collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface NotificationGroupCollectionUpdate extends BaseNotification<'collection_update'> {
|
||||||
|
collection: Collection;
|
||||||
|
}
|
||||||
|
|
||||||
export type NotificationGroup =
|
export type NotificationGroup =
|
||||||
| NotificationGroupFavourite
|
| NotificationGroupFavourite
|
||||||
| NotificationGroupReblog
|
| NotificationGroupReblog
|
||||||
@ -102,7 +113,9 @@ export type NotificationGroup =
|
|||||||
| NotificationGroupSeveredRelationships
|
| NotificationGroupSeveredRelationships
|
||||||
| NotificationGroupAdminSignUp
|
| NotificationGroupAdminSignUp
|
||||||
| NotificationGroupAdminReport
|
| NotificationGroupAdminReport
|
||||||
| NotificationGroupAnnualReport;
|
| NotificationGroupAnnualReport
|
||||||
|
| NotificationGroupAddedToCollection
|
||||||
|
| NotificationGroupCollectionUpdate;
|
||||||
|
|
||||||
function createReportFromJSON(reportJSON: ApiReportJSON): Report {
|
function createReportFromJSON(reportJSON: ApiReportJSON): Report {
|
||||||
const { target_account, ...report } = reportJSON;
|
const { target_account, ...report } = reportJSON;
|
||||||
@ -249,6 +262,13 @@ export function createNotificationGroupFromNotificationJSON(
|
|||||||
notification.moderation_warning,
|
notification.moderation_warning,
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
case 'added_to_collection':
|
||||||
|
case 'collection_update':
|
||||||
|
return {
|
||||||
|
...group,
|
||||||
|
type: notification.type,
|
||||||
|
collection: notification.collection,
|
||||||
|
};
|
||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
...group,
|
...group,
|
||||||
|
|||||||
@ -32,7 +32,6 @@ async function loadEmojiPolyfills() {
|
|||||||
// Loads Vite's module preload polyfill for older browsers, but not in a Worker context.
|
// Loads Vite's module preload polyfill for older browsers, but not in a Worker context.
|
||||||
function loadVitePreloadPolyfill() {
|
function loadVitePreloadPolyfill() {
|
||||||
if (typeof document === 'undefined') return;
|
if (typeof document === 'undefined') return;
|
||||||
// @ts-expect-error -- This is a virtual module provided by Vite.
|
|
||||||
// eslint-disable-next-line import/extensions
|
// eslint-disable-next-line import/extensions
|
||||||
return import('vite/modulepreload-polyfill');
|
return import('vite/modulepreload-polyfill');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8688,20 +8688,6 @@ noscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&__familiar-followers {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
margin-block: 16px;
|
|
||||||
color: var(--color-text-secondary);
|
|
||||||
|
|
||||||
a:any-link {
|
|
||||||
font-weight: 500;
|
|
||||||
text-decoration: none;
|
|
||||||
color: var(--color-text-primary);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.account__contents {
|
.account__contents {
|
||||||
@ -8711,6 +8697,7 @@ noscript {
|
|||||||
.account__details {
|
.account__details {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
column-gap: 1em;
|
column-gap: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10679,11 +10666,6 @@ noscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&__source {
|
&__source {
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
max-width: 100%;
|
|
||||||
color: var(--color-text-tertiary);
|
|
||||||
gap: 4px;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
cursor: help;
|
cursor: help;
|
||||||
@ -10692,11 +10674,6 @@ noscript {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10722,11 +10699,6 @@ noscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.verified-badge {
|
|
||||||
font-size: 14px;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@ -26,6 +26,7 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity
|
|||||||
collection_item_attributes(:accepted)
|
collection_item_attributes(:accepted)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
notify_local_user!(collection_item)
|
||||||
queue_delivery!(collection_item, ActivityPub::AcceptFeatureRequestSerializer)
|
queue_delivery!(collection_item, ActivityPub::AcceptFeatureRequestSerializer)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -52,6 +53,10 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity
|
|||||||
{ account: @featured_account, activity_uri: @json['id'], state: }
|
{ account: @featured_account, activity_uri: @json['id'], state: }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def notify_local_user!(collection_item)
|
||||||
|
LocalNotificationWorker.perform_async(collection_item.account_id, collection_item.id, collection_item.class.name, 'added_to_collection')
|
||||||
|
end
|
||||||
|
|
||||||
def queue_delivery!(collection_item, serializer)
|
def queue_delivery!(collection_item, serializer)
|
||||||
json = JSON.generate(serialize_payload(collection_item, serializer))
|
json = JSON.generate(serialize_payload(collection_item, serializer))
|
||||||
ActivityPub::DeliveryWorker.perform_async(json, @featured_account.id, @account.inbox_url)
|
ActivityPub::DeliveryWorker.perform_async(json, @featured_account.id, @account.inbox_url)
|
||||||
|
|||||||
@ -47,6 +47,10 @@ class CollectionItem < ApplicationRecord
|
|||||||
update!(state: :revoked)
|
update!(state: :revoked)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def with_local_account?
|
||||||
|
account&.local?
|
||||||
|
end
|
||||||
|
|
||||||
def local_item_with_remote_account?
|
def local_item_with_remote_account?
|
||||||
local? && account&.remote?
|
local? && account&.remote?
|
||||||
end
|
end
|
||||||
|
|||||||
@ -33,7 +33,7 @@ class Notification < ApplicationRecord
|
|||||||
'Quote' => :quote,
|
'Quote' => :quote,
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
# Please update app/javascript/api_types/notification.ts if you change this
|
# Please update app/javascript/mastodon/api_types/notifications.ts if you change this
|
||||||
PROPERTIES = {
|
PROPERTIES = {
|
||||||
mention: {
|
mention: {
|
||||||
filterable: true,
|
filterable: true,
|
||||||
@ -80,6 +80,12 @@ class Notification < ApplicationRecord
|
|||||||
quoted_update: {
|
quoted_update: {
|
||||||
filterable: false,
|
filterable: false,
|
||||||
}.freeze,
|
}.freeze,
|
||||||
|
added_to_collection: {
|
||||||
|
filterable: true,
|
||||||
|
}.freeze,
|
||||||
|
collection_update: {
|
||||||
|
filterable: false,
|
||||||
|
},
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
TYPES = PROPERTIES.keys.freeze
|
TYPES = PROPERTIES.keys.freeze
|
||||||
@ -112,6 +118,8 @@ class Notification < ApplicationRecord
|
|||||||
belongs_to :account_warning, inverse_of: false
|
belongs_to :account_warning, inverse_of: false
|
||||||
belongs_to :generated_annual_report, inverse_of: false
|
belongs_to :generated_annual_report, inverse_of: false
|
||||||
belongs_to :quote, inverse_of: :notification
|
belongs_to :quote, inverse_of: :notification
|
||||||
|
belongs_to :collection_item, inverse_of: false # TODO: have an inverse?
|
||||||
|
belongs_to :collection, inverse_of: false # TODO: have an inverse?
|
||||||
end
|
end
|
||||||
|
|
||||||
validates :type, inclusion: { in: TYPES }
|
validates :type, inclusion: { in: TYPES }
|
||||||
@ -139,6 +147,15 @@ class Notification < ApplicationRecord
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def target_collection
|
||||||
|
case type
|
||||||
|
when :added_to_collection
|
||||||
|
collection_item&.collection
|
||||||
|
when :collection_update
|
||||||
|
collection
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def browserable(types: [], exclude_types: [], from_account_id: nil, include_filtered: false)
|
def browserable(types: [], exclude_types: [], from_account_id: nil, include_filtered: false)
|
||||||
requested_types = if types.empty?
|
requested_types = if types.empty?
|
||||||
@ -208,8 +225,10 @@ class Notification < ApplicationRecord
|
|||||||
case activity_type
|
case activity_type
|
||||||
when 'Status'
|
when 'Status'
|
||||||
self.from_account_id = type == :quoted_update ? activity&.quote&.quoted_account_id : activity&.account_id
|
self.from_account_id = type == :quoted_update ? activity&.quote&.quoted_account_id : activity&.account_id
|
||||||
when 'Follow', 'Favourite', 'FollowRequest', 'Poll', 'Report', 'Quote'
|
when 'Follow', 'Favourite', 'FollowRequest', 'Poll', 'Report', 'Quote', 'Collection'
|
||||||
self.from_account_id = activity&.account_id
|
self.from_account_id = activity&.account_id
|
||||||
|
when 'CollectionItem'
|
||||||
|
self.from_account_id = activity&.collection&.account_id
|
||||||
when 'Mention'
|
when 'Mention'
|
||||||
self.from_account_id = activity&.status&.account_id
|
self.from_account_id = activity&.status&.account_id
|
||||||
when 'Account'
|
when 'Account'
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class NotificationGroup < ActiveModelSerializers::Model
|
|||||||
|
|
||||||
delegate :type,
|
delegate :type,
|
||||||
:target_status,
|
:target_status,
|
||||||
|
:target_collection,
|
||||||
:report,
|
:report,
|
||||||
:account_relationship_severance_event,
|
:account_relationship_severance_event,
|
||||||
:account_warning,
|
:account_warning,
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Search < ActiveModelSerializers::Model
|
class Search < ActiveModelSerializers::Model
|
||||||
attributes :accounts, :statuses, :hashtags
|
attributes :accounts, :statuses, :hashtags, :collections
|
||||||
end
|
end
|
||||||
|
|||||||
@ -14,9 +14,8 @@ class StatusPolicy < ApplicationPolicy
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# This is about requesting a quote post, not validating it
|
|
||||||
def quote?
|
def quote?
|
||||||
show? && record.quote_policy_for_account(current_account) != :denied
|
show? && !blocking_author? && record.quote_policy_for_account(current_account) != :denied
|
||||||
end
|
end
|
||||||
|
|
||||||
def reblog?
|
def reblog?
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class REST::NotificationGroupSerializer < ActiveModel::Serializer
|
class REST::NotificationGroupSerializer < ActiveModel::Serializer
|
||||||
# Please update app/javascript/api_types/notification.ts when making changes to the attributes
|
# Please update app/javascript/mastodon/api_types/notifications.ts when making changes to the attributes
|
||||||
attributes :group_key, :notifications_count, :type, :most_recent_notification_id
|
attributes :group_key, :notifications_count, :type, :most_recent_notification_id
|
||||||
|
|
||||||
attribute :page_min_id, if: :paginated?
|
attribute :page_min_id, if: :paginated?
|
||||||
@ -14,6 +14,7 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer
|
|||||||
belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer
|
belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer
|
||||||
belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer
|
belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer
|
||||||
belongs_to :generated_annual_report, key: :annual_report, if: :annual_report_event?, serializer: REST::AnnualReportEventSerializer
|
belongs_to :generated_annual_report, key: :annual_report, if: :annual_report_event?, serializer: REST::AnnualReportEventSerializer
|
||||||
|
belongs_to :target_collection, key: :collection, if: :collection_type?, serializer: REST::CollectionSerializer
|
||||||
|
|
||||||
def sample_account_ids
|
def sample_account_ids
|
||||||
object.sample_accounts.pluck(:id).map(&:to_s)
|
object.sample_accounts.pluck(:id).map(&:to_s)
|
||||||
@ -27,6 +28,10 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer
|
|||||||
[:favourite, :reblog, :status, :mention, :poll, :update, :quote, :quoted_update].include?(object.type)
|
[:favourite, :reblog, :status, :mention, :poll, :update, :quote, :quoted_update].include?(object.type)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def collection_type?
|
||||||
|
[:added_to_collection, :collection_update].include?(object.type)
|
||||||
|
end
|
||||||
|
|
||||||
def report_type?
|
def report_type?
|
||||||
object.type == :'admin.report'
|
object.type == :'admin.report'
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class REST::NotificationSerializer < ActiveModel::Serializer
|
class REST::NotificationSerializer < ActiveModel::Serializer
|
||||||
# Please update app/javascript/api_types/notification.ts when making changes to the attributes
|
# Please update app/javascript/mastodon/api_types/notifications.ts when making changes to the attributes
|
||||||
attributes :id, :type, :created_at, :group_key
|
attributes :id, :type, :created_at, :group_key
|
||||||
|
|
||||||
attribute :filtered, if: :filtered?
|
attribute :filtered, if: :filtered?
|
||||||
@ -11,6 +11,7 @@ class REST::NotificationSerializer < ActiveModel::Serializer
|
|||||||
belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer
|
belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer
|
||||||
belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer
|
belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer
|
||||||
belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer
|
belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer
|
||||||
|
belongs_to :target_collection, key: :collection, if: :collection_type?, serializer: REST::CollectionSerializer
|
||||||
|
|
||||||
def id
|
def id
|
||||||
object.id.to_s
|
object.id.to_s
|
||||||
@ -24,6 +25,10 @@ class REST::NotificationSerializer < ActiveModel::Serializer
|
|||||||
[:favourite, :reblog, :status, :mention, :poll, :update, :quoted_update, :quote].include?(object.type)
|
[:favourite, :reblog, :status, :mention, :poll, :update, :quoted_update, :quote].include?(object.type)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def collection_type?
|
||||||
|
[:added_to_collection, :collection_update].include?(object.type)
|
||||||
|
end
|
||||||
|
|
||||||
def report_type?
|
def report_type?
|
||||||
object.type == :'admin.report'
|
object.type == :'admin.report'
|
||||||
end
|
end
|
||||||
|
|||||||
@ -4,4 +4,5 @@ class REST::SearchSerializer < ActiveModel::Serializer
|
|||||||
has_many :accounts, serializer: REST::AccountSerializer
|
has_many :accounts, serializer: REST::AccountSerializer
|
||||||
has_many :statuses, serializer: REST::StatusSerializer
|
has_many :statuses, serializer: REST::StatusSerializer
|
||||||
has_many :hashtags, serializer: REST::TagSerializer
|
has_many :hashtags, serializer: REST::TagSerializer
|
||||||
|
has_many :collections, serializer: REST::CollectionSerializer
|
||||||
end
|
end
|
||||||
|
|||||||
@ -3,8 +3,12 @@
|
|||||||
class ActivityPub::FetchRemoteFeaturedCollectionService < BaseService
|
class ActivityPub::FetchRemoteFeaturedCollectionService < BaseService
|
||||||
include JsonLdHelper
|
include JsonLdHelper
|
||||||
|
|
||||||
def call(uri, request_id: nil, on_behalf_of: nil)
|
def call(uri, request_id: nil, prefetched_body: nil, on_behalf_of: nil)
|
||||||
json = fetch_resource(uri, true, on_behalf_of)
|
json = if prefetched_body.nil?
|
||||||
|
fetch_resource(uri, true, on_behalf_of)
|
||||||
|
else
|
||||||
|
body_to_json(prefetched_body, compare_id: uri)
|
||||||
|
end
|
||||||
|
|
||||||
return unless supported_context?(json)
|
return unless supported_context?(json)
|
||||||
return unless json['type'] == 'FeaturedCollection'
|
return unless json['type'] == 'FeaturedCollection'
|
||||||
|
|||||||
@ -25,6 +25,7 @@ class ActivityPub::ProcessFeaturedCollectionService
|
|||||||
end
|
end
|
||||||
|
|
||||||
process_items!
|
process_items!
|
||||||
|
notify_about_update!
|
||||||
|
|
||||||
@collection
|
@collection
|
||||||
end
|
end
|
||||||
@ -32,6 +33,10 @@ class ActivityPub::ProcessFeaturedCollectionService
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def notify_about_update!
|
||||||
|
NotifyOfCollectionUpdateService.new.call(@collection)
|
||||||
|
end
|
||||||
|
|
||||||
def truncated_summary
|
def truncated_summary
|
||||||
text = @json['summaryMap']&.values&.first || @json['summary'] || ''
|
text = @json['summaryMap']&.values&.first || @json['summary'] || ''
|
||||||
text[0, Collection::DESCRIPTION_LENGTH_HARD_LIMIT]
|
text[0, Collection::DESCRIPTION_LENGTH_HARD_LIMIT]
|
||||||
|
|||||||
@ -11,6 +11,7 @@ class AddAccountToCollectionService
|
|||||||
|
|
||||||
@collection_item = create_collection_item
|
@collection_item = create_collection_item
|
||||||
|
|
||||||
|
notify_local_user if @account.local?
|
||||||
distribute_add_activity if @account.local?
|
distribute_add_activity if @account.local?
|
||||||
distribute_feature_request_activity if @account.remote?
|
distribute_feature_request_activity if @account.remote?
|
||||||
|
|
||||||
@ -24,6 +25,10 @@ class AddAccountToCollectionService
|
|||||||
@collection.collection_items.create!(account: @account, state:)
|
@collection.collection_items.create!(account: @account, state:)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def notify_local_user
|
||||||
|
LocalNotificationWorker.perform_async(@account.id, @collection_item.id, @collection_item.class.name, 'added_to_collection')
|
||||||
|
end
|
||||||
|
|
||||||
def distribute_add_activity
|
def distribute_add_activity
|
||||||
ActivityPub::AccountRawDistributionWorker.perform_async(add_activity_json, @collection.account_id)
|
ActivityPub::AccountRawDistributionWorker.perform_async(add_activity_json, @collection.account_id)
|
||||||
end
|
end
|
||||||
|
|||||||
@ -9,6 +9,7 @@ class CreateCollectionService
|
|||||||
|
|
||||||
@collection.save!
|
@collection.save!
|
||||||
|
|
||||||
|
notify_local_users
|
||||||
distribute_add_activity
|
distribute_add_activity
|
||||||
distribute_feature_request_activities
|
distribute_feature_request_activities
|
||||||
|
|
||||||
@ -39,6 +40,12 @@ class CreateCollectionService
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def notify_local_users
|
||||||
|
@collection.collection_items.select(&:with_local_account?).each do |collection_item|
|
||||||
|
LocalNotificationWorker.perform_async(@account.id, collection_item.id, collection_item.class.name, 'added_to_collection')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def activity_json
|
def activity_json
|
||||||
ActiveModelSerializers::SerializableResource.new(@collection, serializer: ActivityPub::AddFeaturedCollectionSerializer, adapter: ActivityPub::Adapter).to_json
|
ActiveModelSerializers::SerializableResource.new(@collection, serializer: ActivityPub::AddFeaturedCollectionSerializer, adapter: ActivityPub::Adapter).to_json
|
||||||
end
|
end
|
||||||
|
|||||||
@ -63,7 +63,7 @@ class FetchResourceService < BaseService
|
|||||||
end
|
end
|
||||||
|
|
||||||
def expected_type?(json)
|
def expected_type?(json)
|
||||||
equals_or_includes_any?(json['type'], ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES)
|
equals_or_includes_any?(json['type'], ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES + %w(FeaturedCollection))
|
||||||
end
|
end
|
||||||
|
|
||||||
def process_html(response)
|
def process_html(response)
|
||||||
|
|||||||
21
app/services/notify_of_collection_update_service.rb
Normal file
21
app/services/notify_of_collection_update_service.rb
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class NotifyOfCollectionUpdateService
|
||||||
|
def call(collection)
|
||||||
|
return unless significantly_changed?(collection)
|
||||||
|
|
||||||
|
collection.collection_items.includes(:account).references(:account).merge(Account.local).accepted.find_each do |collection_item|
|
||||||
|
LocalNotificationWorker.perform_async(collection_item.account_id, collection.id, collection.class.name, 'collection_update')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def significantly_changed?(collection)
|
||||||
|
# If the collection is brand new, we don't need to look at its members
|
||||||
|
return false if collection.previously_new_record?
|
||||||
|
|
||||||
|
# Only notify of change to description or name
|
||||||
|
%i(description description_html name).any? { |attr| collection.attribute_previously_changed?(attr) }
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -14,6 +14,8 @@ class NotifyService < BaseService
|
|||||||
moderation_warning
|
moderation_warning
|
||||||
severed_relationships
|
severed_relationships
|
||||||
annual_report
|
annual_report
|
||||||
|
added_to_collection
|
||||||
|
collection_update
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
class BaseCondition
|
class BaseCondition
|
||||||
@ -21,15 +23,6 @@ class NotifyService < BaseService
|
|||||||
|
|
||||||
NEW_FOLLOWER_THRESHOLD = 3.days.freeze
|
NEW_FOLLOWER_THRESHOLD = 3.days.freeze
|
||||||
|
|
||||||
NON_FILTERABLE_TYPES = %i(
|
|
||||||
admin.sign_up
|
|
||||||
admin.report
|
|
||||||
poll
|
|
||||||
update
|
|
||||||
account_warning
|
|
||||||
annual_report
|
|
||||||
).freeze
|
|
||||||
|
|
||||||
def initialize(notification, **options)
|
def initialize(notification, **options)
|
||||||
@recipient = notification.account
|
@recipient = notification.account
|
||||||
@sender = notification.from_account
|
@sender = notification.from_account
|
||||||
|
|||||||
@ -28,6 +28,10 @@ class ResolveURLService < BaseService
|
|||||||
status = FetchRemoteStatusService.new.call(resource_url, prefetched_body: body)
|
status = FetchRemoteStatusService.new.call(resource_url, prefetched_body: body)
|
||||||
authorize_with @on_behalf_of, status, :show? unless status.nil?
|
authorize_with @on_behalf_of, status, :show? unless status.nil?
|
||||||
status
|
status
|
||||||
|
elsif type == 'FeaturedCollection' && Mastodon::Feature.collections_enabled?
|
||||||
|
collection = ActivityPub::FetchRemoteFeaturedCollectionService.new.call(resource_url, prefetched_body: body)
|
||||||
|
authorize_with @on_behalf_of, collection, :show? unless collection.nil?
|
||||||
|
collection
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -111,9 +115,21 @@ class ResolveURLService < BaseService
|
|||||||
|
|
||||||
Account.find_remote(username, domain)
|
Account.find_remote(username, domain)
|
||||||
end
|
end
|
||||||
|
when 'collections'
|
||||||
|
return unless recognized_params[:action] == 'show'
|
||||||
|
|
||||||
|
check_collection(Collection.find_by(id: recognized_params[:id]))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def check_collection(collection)
|
||||||
|
return if collection.nil?
|
||||||
|
|
||||||
|
authorize_with @on_behalf_of, collection, :show?
|
||||||
|
rescue Mastodon::NotPermittedError
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
def check_local_status(status)
|
def check_local_status(status)
|
||||||
return if status.nil?
|
return if status.nil?
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,7 @@ class SearchService < BaseService
|
|||||||
end
|
end
|
||||||
|
|
||||||
def default_results
|
def default_results
|
||||||
{ accounts: [], hashtags: [], statuses: [] }
|
{ accounts: [], hashtags: [], statuses: [], collections: [] }
|
||||||
end
|
end
|
||||||
|
|
||||||
def url_query?
|
def url_query?
|
||||||
|
|||||||
@ -7,6 +7,7 @@ class UpdateCollectionService
|
|||||||
@collection = collection
|
@collection = collection
|
||||||
@collection.update!(params)
|
@collection.update!(params)
|
||||||
|
|
||||||
|
notify_about_update
|
||||||
distribute_update_activity
|
distribute_update_activity
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -18,6 +19,10 @@ class UpdateCollectionService
|
|||||||
ActivityPub::AccountRawDistributionWorker.perform_async(activity_json, @collection.account.id)
|
ActivityPub::AccountRawDistributionWorker.perform_async(activity_json, @collection.account.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def notify_about_update
|
||||||
|
NotifyOfCollectionUpdateService.new.call(@collection)
|
||||||
|
end
|
||||||
|
|
||||||
def activity_json
|
def activity_json
|
||||||
ActiveModelSerializers::SerializableResource.new(@collection, serializer: ActivityPub::UpdateFeaturedCollectionSerializer, adapter: ActivityPub::Adapter).to_json
|
ActiveModelSerializers::SerializableResource.new(@collection, serializer: ActivityPub::UpdateFeaturedCollectionSerializer, adapter: ActivityPub::Adapter).to_json
|
||||||
end
|
end
|
||||||
|
|||||||
@ -5,19 +5,4 @@
|
|||||||
%h1= t('settings.profile')
|
%h1= t('settings.profile')
|
||||||
= render partial: 'settings/shared/profile_navigation'
|
= render partial: 'settings/shared/profile_navigation'
|
||||||
|
|
||||||
= simple_form_for @featured_tag, url: settings_featured_tags_path do |f|
|
= render partial: 'settings/shared/profile_new_notice'
|
||||||
= render 'shared/error_messages', object: @featured_tag
|
|
||||||
|
|
||||||
%p.lead= t('featured_tags.hint_html')
|
|
||||||
|
|
||||||
.fields-group
|
|
||||||
= f.input :name,
|
|
||||||
hint: featured_tags_hint(@recently_used_tags),
|
|
||||||
wrapper: :with_block_label
|
|
||||||
|
|
||||||
.actions
|
|
||||||
= f.button :button, t('featured_tags.add_new'), type: :submit
|
|
||||||
|
|
||||||
%hr.spacer/
|
|
||||||
|
|
||||||
= render collection: @featured_tags, partial: 'settings/featured_tags/featured_tag'
|
|
||||||
|
|||||||
@ -5,76 +5,4 @@
|
|||||||
%h1= t('settings.profile')
|
%h1= t('settings.profile')
|
||||||
= render partial: 'settings/shared/profile_navigation'
|
= render partial: 'settings/shared/profile_navigation'
|
||||||
|
|
||||||
- if Mastodon::Feature.profile_redesign_enabled?
|
= render partial: 'settings/shared/profile_new_notice'
|
||||||
%aside.callout
|
|
||||||
= material_symbol 'info'
|
|
||||||
.content
|
|
||||||
.body
|
|
||||||
%p.title= t('edit_profile.redesign_title')
|
|
||||||
%p= t('edit_profile.redesign_body')
|
|
||||||
= link_to t('edit_profile.redesign_button'), '/profile/edit'
|
|
||||||
|
|
||||||
= simple_form_for @account, url: settings_profile_path, html: { id: :edit_profile } do |f|
|
|
||||||
= render 'shared/error_messages', object: @account
|
|
||||||
|
|
||||||
%p.lead= t('edit_profile.hint_html')
|
|
||||||
|
|
||||||
%h2= t('edit_profile.basic_information')
|
|
||||||
|
|
||||||
.fields-row
|
|
||||||
.fields-row__column.fields-row__column-6
|
|
||||||
.fields-group
|
|
||||||
= f.input :display_name, wrapper: :with_block_label, input_html: { maxlength: Account::DISPLAY_NAME_LENGTH_LIMIT, data: { default: @account.username } }
|
|
||||||
|
|
||||||
.fields-group
|
|
||||||
= f.input :note, wrapper: :with_block_label, input_html: { maxlength: Account::NOTE_LENGTH_LIMIT }
|
|
||||||
|
|
||||||
.fields-row__column.fields-group.fields-row__column-6
|
|
||||||
.input.with_block_label
|
|
||||||
%label= t('simple_form.labels.defaults.fields')
|
|
||||||
%span.hint= t('simple_form.hints.account.fields')
|
|
||||||
|
|
||||||
= f.simple_fields_for :fields do |fields_f|
|
|
||||||
.row
|
|
||||||
= fields_f.input :name, placeholder: t('simple_form.labels.account.fields.name'), input_html: { maxlength: Account::Field::MAX_CHARACTERS_LOCAL }
|
|
||||||
= fields_f.input :value, placeholder: t('simple_form.labels.account.fields.value'), input_html: { maxlength: Account::Field::MAX_CHARACTERS_LOCAL }
|
|
||||||
|
|
||||||
.fields-row
|
|
||||||
.fields-row__column.fields-row__column-6
|
|
||||||
.fields-group
|
|
||||||
= f.input :avatar,
|
|
||||||
hint: t('simple_form.hints.defaults.avatar', dimensions: Account::Avatar::AVATAR_GEOMETRY, size: number_to_human_size(Account::Avatar::AVATAR_LIMIT)),
|
|
||||||
input_html: { accept: Account::Avatar::AVATAR_IMAGE_MIME_TYPES },
|
|
||||||
wrapper: :with_block_label
|
|
||||||
|
|
||||||
.fields-row__column.fields-row__column-6
|
|
||||||
.fields-group
|
|
||||||
= image_tag @account.avatar.url, class: 'fields-group__thumbnail', id: 'account_avatar-preview'
|
|
||||||
- if @account.avatar.present?
|
|
||||||
= link_to settings_profile_picture_path('avatar'), data: { method: :delete }, class: 'link-button link-button--destructive' do
|
|
||||||
= material_symbol 'delete'
|
|
||||||
= t('generic.delete')
|
|
||||||
|
|
||||||
.fields-row
|
|
||||||
.fields-row__column.fields-row__column-6
|
|
||||||
.fields-group
|
|
||||||
= f.input :header,
|
|
||||||
hint: t('simple_form.hints.defaults.header', dimensions: Account::Header::HEADER_GEOMETRY, size: number_to_human_size(Account::Header::HEADER_LIMIT)),
|
|
||||||
input_html: { accept: Account::Header::HEADER_IMAGE_MIME_TYPES },
|
|
||||||
wrapper: :with_block_label
|
|
||||||
|
|
||||||
.fields-row__column.fields-row__column-6
|
|
||||||
.fields-group
|
|
||||||
= image_tag @account.header.url, class: 'fields-group__thumbnail', id: 'account_header-preview'
|
|
||||||
- if @account.header.present?
|
|
||||||
= link_to settings_profile_picture_path('header'), data: { method: :delete }, class: 'link-button link-button--destructive' do
|
|
||||||
= material_symbol 'delete'
|
|
||||||
= t('generic.delete')
|
|
||||||
|
|
||||||
%h2= t('edit_profile.other')
|
|
||||||
|
|
||||||
.fields-group
|
|
||||||
= f.input :bot, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.bot')
|
|
||||||
|
|
||||||
.actions
|
|
||||||
= f.button :button, t('generic.save_changes'), type: :submit
|
|
||||||
|
|||||||
7
app/views/settings/shared/_profile_new_notice.html.haml
Normal file
7
app/views/settings/shared/_profile_new_notice.html.haml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
%aside.callout
|
||||||
|
= material_symbol 'info'
|
||||||
|
.content
|
||||||
|
.body
|
||||||
|
%p.title= t('edit_profile.redesign_title')
|
||||||
|
%p= t('edit_profile.redesign_body')
|
||||||
|
= link_to t('edit_profile.redesign_button'), '/profile/edit'
|
||||||
@ -5,6 +5,8 @@
|
|||||||
%h1= t('settings.profile')
|
%h1= t('settings.profile')
|
||||||
= render partial: 'settings/shared/profile_navigation'
|
= render partial: 'settings/shared/profile_navigation'
|
||||||
|
|
||||||
|
= render partial: 'settings/shared/profile_new_notice'
|
||||||
|
|
||||||
.simple_form.form-section
|
.simple_form.form-section
|
||||||
%h2.heading-medium= t('verification.website_verification')
|
%h2.heading-medium= t('verification.website_verification')
|
||||||
|
|
||||||
|
|||||||
@ -10,10 +10,8 @@ class LocalNotificationWorker
|
|||||||
# For most notification types, only one notification should exist, and the older one is
|
# For most notification types, only one notification should exist, and the older one is
|
||||||
# preferred. For updates, such as when a status is edited, the new notification
|
# preferred. For updates, such as when a status is edited, the new notification
|
||||||
# should replace the previous ones.
|
# should replace the previous ones.
|
||||||
if type == 'update'
|
if %w(update quoted_update collection_update).include?(type)
|
||||||
Notification.where(account: receiver, activity: activity, type: 'update').in_batches.delete_all
|
Notification.where(account: receiver, activity: activity, type: type).in_batches.delete_all
|
||||||
elsif type == 'quoted_update'
|
|
||||||
Notification.where(account: receiver, activity: activity, type: 'quoted_update').in_batches.delete_all
|
|
||||||
elsif Notification.where(account: receiver, activity: activity, type: type).any?
|
elsif Notification.where(account: receiver, activity: activity, type: type).any?
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1038,9 +1038,6 @@ an:
|
|||||||
lists: Listas
|
lists: Listas
|
||||||
mutes: Tiens en silencio
|
mutes: Tiens en silencio
|
||||||
storage: Almagazenamiento
|
storage: Almagazenamiento
|
||||||
featured_tags:
|
|
||||||
add_new: Anyadir nuevo
|
|
||||||
hint_html: "<strong>Qué son las etiquetas destacadas?</strong> S'amuestran de forma prominent en o tuyo perfil publico y permiten a los usuarios navegar per las tuyas publicacions publicas especificament baixo ixas etiquetas. Son una gran ferramienta pa fer un seguimiento de treballos creativos u prochectos a largo plazo."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Perfils
|
account: Perfils
|
||||||
|
|||||||
@ -1448,8 +1448,6 @@ ar:
|
|||||||
your_appeal_pending: لقد قمت بتقديم طعن
|
your_appeal_pending: لقد قمت بتقديم طعن
|
||||||
your_appeal_rejected: تم رفض طعنك
|
your_appeal_rejected: تم رفض طعنك
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: معلومات أساسية
|
|
||||||
hint_html: "<strong>قم بتخصيص ما سيراه الناس في ملفك الشخصي العام وبجوار منشوراتك.</strong> من المرجح أن يتابعك أشخاص آخرون ويتفاعلون معك إن كان لديك صفحة شخصية مملوء وصورة."
|
|
||||||
other: أخرى
|
other: أخرى
|
||||||
emoji_styles:
|
emoji_styles:
|
||||||
auto: تلقائي
|
auto: تلقائي
|
||||||
@ -1489,10 +1487,8 @@ ar:
|
|||||||
mutes: قُمتَ بكتم
|
mutes: قُمتَ بكتم
|
||||||
storage: ذاكرة التخزين
|
storage: ذاكرة التخزين
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: أضف واحدًا جديدا
|
|
||||||
errors:
|
errors:
|
||||||
limit: لقد قمت بالفعل بعرض الحد الأقصى من عدد الوسوم
|
limit: لقد قمت بالفعل بعرض الحد الأقصى من عدد الوسوم
|
||||||
hint_html: "<strong>ما هي الوسوم الرائجة؟</strong> يتم عرضها بشكل بارز على ملفك الشخصي العام وتسمح للناس بتصفح منشوراتك العامة على وجه التحديد تحت تلك الوسوم. وهي أداة رائعة لتتبع الأعمال الإبداعية أو المشاريع الطويلة الأجل."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: الملفات التعريفية
|
account: الملفات التعريفية
|
||||||
|
|||||||
@ -524,7 +524,6 @@ ast:
|
|||||||
your_appeal_pending: Unviesti una apellación
|
your_appeal_pending: Unviesti una apellación
|
||||||
your_appeal_rejected: Refugóse la to apellación
|
your_appeal_rejected: Refugóse la to apellación
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Información básica
|
|
||||||
other: Otres preferencies
|
other: Otres preferencies
|
||||||
errors:
|
errors:
|
||||||
'400': La solicitú qu'unviesti nun yera válida o yera incorreuta.
|
'400': La solicitú qu'unviesti nun yera válida o yera incorreuta.
|
||||||
@ -554,8 +553,6 @@ ast:
|
|||||||
domain_blocks: Dominios bloquiaos
|
domain_blocks: Dominios bloquiaos
|
||||||
lists: Llistes
|
lists: Llistes
|
||||||
storage: Almacenamientu multimedia
|
storage: Almacenamientu multimedia
|
||||||
featured_tags:
|
|
||||||
add_new: Amestar
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Perfiles
|
account: Perfiles
|
||||||
|
|||||||
@ -170,9 +170,6 @@ az:
|
|||||||
confirm_password: Kimliyinizi doğrulamaq üçün hazırkı parolunuzu daxil edin
|
confirm_password: Kimliyinizi doğrulamaq üçün hazırkı parolunuzu daxil edin
|
||||||
proceed: Hesabı sil
|
proceed: Hesabı sil
|
||||||
success_msg: Hesabınız uğurla silindi
|
success_msg: Hesabınız uğurla silindi
|
||||||
edit_profile:
|
|
||||||
basic_information: Təməl məlumatlar
|
|
||||||
hint_html: "<strong>İnsanların hər kəsə açıq profilinizdə və göndərişlərinizin yanında nə göstərmək istədiyinizi özəlləşdirin.</strong> Doldurulmuş bir profilə və bir profil şəklinə sahib olduğunuz zaman digər şəxslərin sizi izləmə və sizinlə əlaqə qurma ehtimalı yüksəkdir."
|
|
||||||
exports:
|
exports:
|
||||||
archive_takeout:
|
archive_takeout:
|
||||||
hint_html: "<strong>Göndərişlərinizin və yüklədiyiniz medianın</strong> bir arxivini tələb edə bilərsiniz. Xaricə köçürülmüş verilər, istənilən uyumlu yazılım tərəfindən oxuna bilən ActivityPub formatında olacaq. Hər 7 gündə bir dəfə arxiv tələb edə bilərsiniz."
|
hint_html: "<strong>Göndərişlərinizin və yüklədiyiniz medianın</strong> bir arxivini tələb edə bilərsiniz. Xaricə köçürülmüş verilər, istənilən uyumlu yazılım tərəfindən oxuna bilən ActivityPub formatında olacaq. Hər 7 gündə bir dəfə arxiv tələb edə bilərsiniz."
|
||||||
|
|||||||
@ -1460,8 +1460,6 @@ be:
|
|||||||
your_appeal_pending: Вы адправілі апеляцыю
|
your_appeal_pending: Вы адправілі апеляцыю
|
||||||
your_appeal_rejected: Ваша абскарджанне было адхілена
|
your_appeal_rejected: Ваша абскарджанне было адхілена
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Асноўная інфармацыя
|
|
||||||
hint_html: "<strong>Наладзьце тое, што людзі будуць бачыць у вашым профілі і побач з вашымі паведамленнямі.</strong> Іншыя людзі з большай верагоднасцю будуць сачыць і ўзаемадзейнічаць з вамі, калі ў вас ёсць запоўнены профіль і фота профілю."
|
|
||||||
other: Іншае
|
other: Іншае
|
||||||
redesign_body: Рэдагаванне профілю цяпер даступнае наўпрост са старонкі профілю.
|
redesign_body: Рэдагаванне профілю цяпер даступнае наўпрост са старонкі профілю.
|
||||||
redesign_button: Перайсці туды
|
redesign_button: Перайсці туды
|
||||||
@ -1538,10 +1536,8 @@ be:
|
|||||||
mutes: Уліковыя запісы, якія вы ігнаруеце
|
mutes: Уліковыя запісы, якія вы ігнаруеце
|
||||||
storage: Медыясховішча
|
storage: Медыясховішча
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: Дадаць новы
|
|
||||||
errors:
|
errors:
|
||||||
limit: Вы ўжо дадалі максімальную колькасць хэштэгаў
|
limit: Вы ўжо дадалі максімальную колькасць хэштэгаў
|
||||||
hint_html: "<strong>Што такое выбраныя хэштэгі?</strong> Яны паказваюцца на бачным месцы вашага профілю і дазваляюць людзям праглядаць вашыя публічныя пасты з гэтымі хэштэгамі. З іхняй дапамогай вельмі зручна сачыць за творчымі ці даўгатэрміновымі праектамі."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Профілі
|
account: Профілі
|
||||||
|
|||||||
@ -1361,8 +1361,6 @@ bg:
|
|||||||
your_appeal_pending: Подадохте обжалване
|
your_appeal_pending: Подадохте обжалване
|
||||||
your_appeal_rejected: Вашето обжалване е отхвърлено
|
your_appeal_rejected: Вашето обжалване е отхвърлено
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Основна информация
|
|
||||||
hint_html: "<strong>Персонализирайте какво хората виждат в обществения ви профил и до публикациите ви.</strong> Другите хора са по-склонни да ви последват и да взаимодействат с вас, когато имате попълнен профил и снимка на профила."
|
|
||||||
other: Друго
|
other: Друго
|
||||||
emoji_styles:
|
emoji_styles:
|
||||||
auto: Автоматично
|
auto: Автоматично
|
||||||
@ -1402,10 +1400,8 @@ bg:
|
|||||||
mutes: Заглушавания
|
mutes: Заглушавания
|
||||||
storage: Съхранение на мултимедия
|
storage: Съхранение на мултимедия
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: Добавяне на нов
|
|
||||||
errors:
|
errors:
|
||||||
limit: Вече достигнахте максималния брой хаштагове
|
limit: Вече достигнахте максималния брой хаштагове
|
||||||
hint_html: "<strong>Изтъкнете най-важните си хаштагове на профила?</strong> Чудесен инструмент за организиране на вашите творби и дългосрочни проекти, изтъкнатите хаштагове са отчетливо видими на вашия профил и позволяват лесен достъп до вашите собствени публикации."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Профили
|
account: Профили
|
||||||
|
|||||||
@ -584,7 +584,6 @@ br:
|
|||||||
none: Diwall
|
none: Diwall
|
||||||
suspend: Astaliñ ar gont
|
suspend: Astaliñ ar gont
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Titouroù diavaez
|
|
||||||
other: All
|
other: All
|
||||||
emoji_styles:
|
emoji_styles:
|
||||||
auto: Emgefreek
|
auto: Emgefreek
|
||||||
@ -598,8 +597,6 @@ br:
|
|||||||
bookmarks: Sinedoù
|
bookmarks: Sinedoù
|
||||||
csv: CSV
|
csv: CSV
|
||||||
lists: Listennoù
|
lists: Listennoù
|
||||||
featured_tags:
|
|
||||||
add_new: Ouzhpennañ unan nevez
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Profiloù
|
account: Profiloù
|
||||||
|
|||||||
@ -1376,8 +1376,6 @@ ca:
|
|||||||
your_appeal_pending: Has enviat una apel·lació
|
your_appeal_pending: Has enviat una apel·lació
|
||||||
your_appeal_rejected: La teva apel·lació ha estat rebutjada
|
your_appeal_rejected: La teva apel·lació ha estat rebutjada
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Informació bàsica
|
|
||||||
hint_html: "<strong>Personalitza el que la gent veu en el teu perfil públic i a prop dels teus tuts..</strong> És més probable que altres persones et segueixin i interaccionin amb tu quan tens emplenat el teu perfil i amb la teva imatge."
|
|
||||||
other: Altres
|
other: Altres
|
||||||
emoji_styles:
|
emoji_styles:
|
||||||
auto: Automàtic
|
auto: Automàtic
|
||||||
@ -1417,10 +1415,8 @@ ca:
|
|||||||
mutes: Persones silenciades
|
mutes: Persones silenciades
|
||||||
storage: Emmagatzematge
|
storage: Emmagatzematge
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: Afegeix-ne una de nova
|
|
||||||
errors:
|
errors:
|
||||||
limit: Ja has mostrat la quantitat màxima d'etiquetes
|
limit: Ja has mostrat la quantitat màxima d'etiquetes
|
||||||
hint_html: "<strong>Què son les etiquetes destacades?</strong> Es mostren de manera destacada en el teu perfil públic i permeten a les persones navegar per els teus tuts gràcies a aquestes etiquetes. Són una gran eina per fer un seguiment de treballs creatius o de projectes a llarg termini."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Perfils
|
account: Perfils
|
||||||
|
|||||||
@ -670,9 +670,6 @@ ckb:
|
|||||||
lists: لیستەکان
|
lists: لیستەکان
|
||||||
mutes: هەژمارە بێدەنگ کراوە
|
mutes: هەژمارە بێدەنگ کراوە
|
||||||
storage: هەمارگەی میدیا
|
storage: هەمارگەی میدیا
|
||||||
featured_tags:
|
|
||||||
add_new: زیادکردنی نوێ
|
|
||||||
hint_html: "<strong> هاشتاگی تایبەت چییە؟</strong> بە شێوەیەکی دیار نیشان دەدرێت لەسەر پرۆفایلی گشتی و ڕێگە بە خەڵک دەدات بۆ گەڕان لە نووسراوە گشتیەکانت بە تایبەتی لەژێر ئەو هاشتاگە. ئامرازێکی زۆر باشن بۆ پاراستنی کاری داهێنەرانە یان پڕۆژەی درێژخایەنی ئێوە."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: پرۆفایلەکان
|
account: پرۆفایلەکان
|
||||||
|
|||||||
@ -629,9 +629,6 @@ co:
|
|||||||
lists: Liste
|
lists: Liste
|
||||||
mutes: Piattate
|
mutes: Piattate
|
||||||
storage: I vostri media
|
storage: I vostri media
|
||||||
featured_tags:
|
|
||||||
add_new: Aghjunghje
|
|
||||||
hint_html: "<strong>Quale sò i hashtag in mostra?</strong> Sò messi in vista nant'à u vostru prufile pubblicu è permettenu à a ghjente di vede i vostri statuti ch'annu stu hashtag. Sò una bona manere di mustrà e vostre opere creative o i prughjetti à longu termine."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Prufili
|
account: Prufili
|
||||||
|
|||||||
@ -1449,8 +1449,6 @@ cs:
|
|||||||
your_appeal_pending: Podali jste odvolání
|
your_appeal_pending: Podali jste odvolání
|
||||||
your_appeal_rejected: Vaše odvolání bylo zamítnuto
|
your_appeal_rejected: Vaše odvolání bylo zamítnuto
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Základní informace
|
|
||||||
hint_html: "<strong>Nastavte si, co lidé uvidí na vašem veřejném profilu a vedle vašich příspěvků.</strong> Ostatní lidé vás budou spíše sledovat a komunikovat s vámi, když budete mít vyplněný profil a profilový obrázek."
|
|
||||||
other: Další
|
other: Další
|
||||||
emoji_styles:
|
emoji_styles:
|
||||||
auto: Auto
|
auto: Auto
|
||||||
@ -1490,10 +1488,8 @@ cs:
|
|||||||
mutes: Skrýváte
|
mutes: Skrýváte
|
||||||
storage: Úložiště médií
|
storage: Úložiště médií
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: Přidat nový
|
|
||||||
errors:
|
errors:
|
||||||
limit: Již jste zvýraznili maximální počet hashtagů
|
limit: Již jste zvýraznili maximální počet hashtagů
|
||||||
hint_html: "<strong>Co jsou zvýrazněné hashtagy?</strong> Zobrazují se prominentně na vašem veřejném profilu a dovolují lidem prohlížet si vaše veřejné příspěvky konkrétně pod těmi hashtagy. Je to skvělý nástroj pro sledování kreativních děl nebo dlouhodobých projektů."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Profily
|
account: Profily
|
||||||
|
|||||||
@ -1497,8 +1497,6 @@ cy:
|
|||||||
your_appeal_pending: Rydych wedi cyflwyno apêl
|
your_appeal_pending: Rydych wedi cyflwyno apêl
|
||||||
your_appeal_rejected: Mae eich apêl wedi'i gwrthod
|
your_appeal_rejected: Mae eich apêl wedi'i gwrthod
|
||||||
edit_profile:
|
edit_profile:
|
||||||
basic_information: Gwybodaeth Sylfaenol
|
|
||||||
hint_html: "<strong>Addaswch yr hyn y mae pobl yn ei weld ar eich proffil cyhoeddus ac wrth ymyl eich postiadau.</strong> Mae pobl eraill yn fwy tebygol o'ch dilyn yn ôl a rhyngweithio â chi pan fydd gennych broffil wedi'i lenwi a llun proffil."
|
|
||||||
other: Arall
|
other: Arall
|
||||||
emoji_styles:
|
emoji_styles:
|
||||||
auto: Awto
|
auto: Awto
|
||||||
@ -1538,10 +1536,8 @@ cy:
|
|||||||
mutes: Rydych chi'n anwybyddu
|
mutes: Rydych chi'n anwybyddu
|
||||||
storage: Storfa cyfryngau
|
storage: Storfa cyfryngau
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: Ychwanegu
|
|
||||||
errors:
|
errors:
|
||||||
limit: Rydych chi eisoes wedi cynnwys y nifer mwyaf o hashnodau
|
limit: Rydych chi eisoes wedi cynnwys y nifer mwyaf o hashnodau
|
||||||
hint_html: "<strong>Beth yw hashnodau dan sylw?</strong> Maen nhw'n cael eu dangos yn amlwg ar eich proffil cyhoeddus ac yn caniatáu i bobl bori'ch postiadau cyhoeddus yn benodol o dan yr hashnodau hynny. Maen nhw'n arf gwych ar gyfer cadw golwg ar weithiau creadigol neu brojectau tymor hir."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Proffilau
|
account: Proffilau
|
||||||
|
|||||||
@ -1418,8 +1418,6 @@ da:
|
|||||||
your_appeal_pending: Du har indgivet en appel
|
your_appeal_pending: Du har indgivet en appel
|
||||||
your_appeal_rejected: Din appel er afvist
|
your_appeal_rejected: Din appel er afvist
|
||||||
edit_profile:
|
edit_profile:
|
||||||
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."
|
|
||||||
other: Andre
|
other: Andre
|
||||||
redesign_body: Profilredigering kan nu tilgås direkte fra profilsiden.
|
redesign_body: Profilredigering kan nu tilgås direkte fra profilsiden.
|
||||||
redesign_button: Gå dertil
|
redesign_button: Gå dertil
|
||||||
@ -1494,10 +1492,8 @@ da:
|
|||||||
mutes: Du skjuler
|
mutes: Du skjuler
|
||||||
storage: Medielagerplads
|
storage: Medielagerplads
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: Tilføj nyt
|
|
||||||
errors:
|
errors:
|
||||||
limit: Det maksimale antal hashtags er allerede fremhævet
|
limit: Det maksimale antal hashtags er allerede fremhævet
|
||||||
hint_html: "<strong>Hvad er fremhævede hashtags?</strong> De vises i en fremtrædende position på din offentlige profil og giver folk mulighed for at gennemse dine offentlige indlæg specifikt under disse hashtags. De er et fantastisk værktøj til at holde styr på kreative værker eller langsigtede projekter."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Profiler
|
account: Profiler
|
||||||
|
|||||||
@ -1417,8 +1417,6 @@ de:
|
|||||||
your_appeal_pending: Du hast Einspruch erhoben
|
your_appeal_pending: Du hast Einspruch erhoben
|
||||||
your_appeal_rejected: Dein Einspruch wurde abgelehnt
|
your_appeal_rejected: Dein Einspruch wurde abgelehnt
|
||||||
edit_profile:
|
edit_profile:
|
||||||
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."
|
|
||||||
other: Andere
|
other: Andere
|
||||||
redesign_body: Dein Profil kannst du jetzt direkt auf deiner Profilseite bearbeiten.
|
redesign_body: Dein Profil kannst du jetzt direkt auf deiner Profilseite bearbeiten.
|
||||||
redesign_button: Loslegen
|
redesign_button: Loslegen
|
||||||
@ -1484,10 +1482,8 @@ de:
|
|||||||
mutes: Stummgeschaltete Profile
|
mutes: Stummgeschaltete Profile
|
||||||
storage: Medienspeicher
|
storage: Medienspeicher
|
||||||
featured_tags:
|
featured_tags:
|
||||||
add_new: Neuen hinzufügen
|
|
||||||
errors:
|
errors:
|
||||||
limit: Du hast bereits die maximale Anzahl an Hashtags erreicht
|
limit: Du hast bereits die maximale Anzahl an Hashtags erreicht
|
||||||
hint_html: "<strong>Präsentiere deine wichtigsten Hashtags auf deinem Profil.</strong> Vorgestellte Hashtags verschaffen einen Überblick über deine kreativen Werke und langfristigen Projekte. Sie werden gut sichtbar auf deinem Profil angezeigt und ermöglichen einen schnellen Zugriff auf deine eigenen Beiträge."
|
|
||||||
filters:
|
filters:
|
||||||
contexts:
|
contexts:
|
||||||
account: Profile
|
account: Profile
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user