Merge commit '9d5e10a70e006c1c0bc61e7f591b1078c7be6ab4' into glitch-soc/merge-upstream
This commit is contained in:
commit
2ac493ee8e
108
Gemfile.lock
108
Gemfile.lock
@ -12,29 +12,29 @@ GEM
|
||||
specs:
|
||||
action_text-trix (2.1.17)
|
||||
railties
|
||||
actioncable (8.1.2.1)
|
||||
actionpack (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
actioncable (8.1.3)
|
||||
actionpack (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (8.1.2.1)
|
||||
actionpack (= 8.1.2.1)
|
||||
activejob (= 8.1.2.1)
|
||||
activerecord (= 8.1.2.1)
|
||||
activestorage (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
actionmailbox (8.1.3)
|
||||
actionpack (= 8.1.3)
|
||||
activejob (= 8.1.3)
|
||||
activerecord (= 8.1.3)
|
||||
activestorage (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
mail (>= 2.8.0)
|
||||
actionmailer (8.1.2.1)
|
||||
actionpack (= 8.1.2.1)
|
||||
actionview (= 8.1.2.1)
|
||||
activejob (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
actionmailer (8.1.3)
|
||||
actionpack (= 8.1.3)
|
||||
actionview (= 8.1.3)
|
||||
activejob (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
mail (>= 2.8.0)
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (8.1.2.1)
|
||||
actionview (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
actionpack (8.1.3)
|
||||
actionview (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
nokogiri (>= 1.8.5)
|
||||
rack (>= 2.2.4)
|
||||
rack-session (>= 1.0.1)
|
||||
@ -42,16 +42,16 @@ GEM
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
useragent (~> 0.16)
|
||||
actiontext (8.1.2.1)
|
||||
actiontext (8.1.3)
|
||||
action_text-trix (~> 2.1.15)
|
||||
actionpack (= 8.1.2.1)
|
||||
activerecord (= 8.1.2.1)
|
||||
activestorage (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
actionpack (= 8.1.3)
|
||||
activerecord (= 8.1.3)
|
||||
activestorage (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
actionview (8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
@ -61,22 +61,22 @@ GEM
|
||||
activemodel (>= 4.1)
|
||||
case_transform (>= 0.2)
|
||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||
activejob (8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
activejob (8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
activerecord (8.1.2.1)
|
||||
activemodel (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
activemodel (8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
activerecord (8.1.3)
|
||||
activemodel (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (8.1.2.1)
|
||||
actionpack (= 8.1.2.1)
|
||||
activejob (= 8.1.2.1)
|
||||
activerecord (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
activestorage (8.1.3)
|
||||
actionpack (= 8.1.3)
|
||||
activejob (= 8.1.3)
|
||||
activerecord (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
marcel (~> 1.0)
|
||||
activesupport (8.1.2.1)
|
||||
activesupport (8.1.3)
|
||||
base64
|
||||
bigdecimal
|
||||
concurrent-ruby (~> 1.0, >= 1.3.1)
|
||||
@ -354,7 +354,7 @@ GEM
|
||||
azure-blob (~> 0.5.2)
|
||||
hashie (~> 5.0)
|
||||
jmespath (1.6.2)
|
||||
json (2.19.2)
|
||||
json (2.19.3)
|
||||
json-canonicalization (1.0.0)
|
||||
json-jwt (1.17.0)
|
||||
activesupport (>= 4.2)
|
||||
@ -657,20 +657,20 @@ GEM
|
||||
rack (>= 1.3)
|
||||
rackup (2.3.1)
|
||||
rack (>= 3)
|
||||
rails (8.1.2.1)
|
||||
actioncable (= 8.1.2.1)
|
||||
actionmailbox (= 8.1.2.1)
|
||||
actionmailer (= 8.1.2.1)
|
||||
actionpack (= 8.1.2.1)
|
||||
actiontext (= 8.1.2.1)
|
||||
actionview (= 8.1.2.1)
|
||||
activejob (= 8.1.2.1)
|
||||
activemodel (= 8.1.2.1)
|
||||
activerecord (= 8.1.2.1)
|
||||
activestorage (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
rails (8.1.3)
|
||||
actioncable (= 8.1.3)
|
||||
actionmailbox (= 8.1.3)
|
||||
actionmailer (= 8.1.3)
|
||||
actionpack (= 8.1.3)
|
||||
actiontext (= 8.1.3)
|
||||
actionview (= 8.1.3)
|
||||
activejob (= 8.1.3)
|
||||
activemodel (= 8.1.3)
|
||||
activerecord (= 8.1.3)
|
||||
activestorage (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 8.1.2.1)
|
||||
railties (= 8.1.3)
|
||||
rails-dom-testing (2.3.0)
|
||||
activesupport (>= 5.0.0)
|
||||
minitest
|
||||
@ -681,9 +681,9 @@ GEM
|
||||
rails-i18n (8.1.0)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 8.0.0, < 9)
|
||||
railties (8.1.2.1)
|
||||
actionpack (= 8.1.2.1)
|
||||
activesupport (= 8.1.2.1)
|
||||
railties (8.1.3)
|
||||
actionpack (= 8.1.3)
|
||||
activesupport (= 8.1.3)
|
||||
irb (~> 1.13)
|
||||
rackup (>= 1.0.0)
|
||||
rake (>= 12.2)
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Instances::TermsOfServiceController < Api::V1::Instances::BaseController
|
||||
before_action :cache_even_if_authenticated!
|
||||
|
||||
def index
|
||||
@terms_of_service = TermsOfService.current || raise(ActiveRecord::RecordNotFound)
|
||||
render json: @terms_of_service, serializer: REST::TermsOfServiceSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
@terms_of_service = TermsOfService.published.find_by!(effective_date: params[:date])
|
||||
render json: @terms_of_service, serializer: REST::TermsOfServiceSerializer
|
||||
end
|
||||
end
|
||||
@ -1,23 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Instances::TermsOfServicesController < Api::V1::Instances::BaseController
|
||||
before_action :set_terms_of_service
|
||||
|
||||
def show
|
||||
cache_even_if_authenticated!
|
||||
render json: @terms_of_service, serializer: REST::TermsOfServiceSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_terms_of_service
|
||||
@terms_of_service = begin
|
||||
if params[:date].present?
|
||||
TermsOfService.published.find_by!(effective_date: params[:date])
|
||||
else
|
||||
TermsOfService.current
|
||||
end
|
||||
end
|
||||
not_found if @terms_of_service.nil?
|
||||
end
|
||||
end
|
||||
@ -18,23 +18,7 @@ module WellKnown
|
||||
private
|
||||
|
||||
def set_account
|
||||
username = username_from_resource
|
||||
|
||||
@account = begin
|
||||
if username == Rails.configuration.x.local_domain || username == Rails.configuration.x.web_domain
|
||||
Account.representative
|
||||
else
|
||||
Account.find_local!(username)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def username_from_resource
|
||||
resource_user = resource_param
|
||||
username, domain = resource_user.split('@')
|
||||
resource_user = "#{username}@#{Rails.configuration.x.local_domain}" if Rails.configuration.x.alternate_domains.include?(domain)
|
||||
|
||||
WebfingerResource.new(resource_user).username
|
||||
@account = WebfingerResource.new(resource_param).account
|
||||
end
|
||||
|
||||
def resource_param
|
||||
|
||||
@ -4,6 +4,7 @@ module ContextHelper
|
||||
NAMED_CONTEXT_MAP = {
|
||||
activitystreams: 'https://www.w3.org/ns/activitystreams',
|
||||
security: 'https://w3id.org/security/v1',
|
||||
webfinger: 'https://purl.archive.org/socialweb/webfinger',
|
||||
}.freeze
|
||||
|
||||
CONTEXT_EXTENSION_MAP = {
|
||||
|
||||
@ -95,7 +95,7 @@ export const Avatar: React.FC<Props> = ({
|
||||
};
|
||||
|
||||
export const AvatarById: React.FC<
|
||||
{ accountId: string } & Omit<Props, 'account'>
|
||||
{ accountId: string | undefined } & Omit<Props, 'account'>
|
||||
> = ({ accountId, ...otherProps }) => {
|
||||
const account = useAccount(accountId);
|
||||
return <Avatar account={account} {...otherProps} />;
|
||||
|
||||
@ -31,7 +31,7 @@ export const Badge: FC<BadgeProps> = ({
|
||||
data-account-role-id={roleId}
|
||||
>
|
||||
{icon}
|
||||
{label}
|
||||
<span>{label}</span>
|
||||
{domain && <span className='account-role__domain'>{domain}</span>}
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -6,10 +6,11 @@ import { Skeleton } from '../skeleton';
|
||||
import type { DisplayNameProps } from './index';
|
||||
import { DisplayNameWithoutDomain } from './no-domain';
|
||||
|
||||
export const DisplayNameDefault: FC<
|
||||
Omit<DisplayNameProps, 'variant'> & ComponentPropsWithoutRef<'span'>
|
||||
> = ({ account, localDomain, className, ...props }) => {
|
||||
const username = useMemo(() => {
|
||||
export function useAccountHandle(
|
||||
account: DisplayNameProps['account'],
|
||||
localDomain: DisplayNameProps['localDomain'],
|
||||
) {
|
||||
return useMemo(() => {
|
||||
if (!account) {
|
||||
return null;
|
||||
}
|
||||
@ -20,6 +21,12 @@ export const DisplayNameDefault: FC<
|
||||
}
|
||||
return `@${acct}`;
|
||||
}, [account, localDomain]);
|
||||
}
|
||||
|
||||
export const DisplayNameDefault: FC<
|
||||
Omit<DisplayNameProps, 'variant'> & ComponentPropsWithoutRef<'span'>
|
||||
> = ({ account, localDomain, className, ...props }) => {
|
||||
const username = useAccountHandle(account, localDomain);
|
||||
|
||||
return (
|
||||
<DisplayNameWithoutDomain
|
||||
|
||||
@ -6,16 +6,12 @@ import { AuthorLink } from 'mastodon/features/explore/components/author_link';
|
||||
export const MoreFromAuthor: React.FC<{ accountId: string }> = ({
|
||||
accountId,
|
||||
}) => (
|
||||
<FormattedMessage
|
||||
id='link_preview.more_from_author'
|
||||
defaultMessage='More from {name}'
|
||||
values={{ name: <AuthorLink accountId={accountId} /> }}
|
||||
>
|
||||
{(chunks) => (
|
||||
<div className='more-from-author'>
|
||||
<IconLogo />
|
||||
{chunks}
|
||||
</div>
|
||||
)}
|
||||
</FormattedMessage>
|
||||
<div className='more-from-author'>
|
||||
<IconLogo />
|
||||
<FormattedMessage
|
||||
id='link_preview.more_from_author'
|
||||
defaultMessage='More from {name}'
|
||||
values={{ name: <AuthorLink accountId={accountId} /> }}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -6,6 +6,7 @@ export const NotSignedInIndicator: React.FC = () => (
|
||||
<FormattedMessage
|
||||
id='not_signed_in_indicator.not_signed_in'
|
||||
defaultMessage='You need to login to access this resource.'
|
||||
tagName='span'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -20,6 +20,7 @@ export const RegenerationIndicator: React.FC = () => (
|
||||
<FormattedMessage
|
||||
id='regeneration_indicator.please_stand_by'
|
||||
defaultMessage='Please stand by.'
|
||||
tagName='span'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -37,7 +37,11 @@ export const ItemList = forwardRef<
|
||||
}
|
||||
>(({ isLoading, emptyMessage, className, children, ...otherProps }, ref) => {
|
||||
if (!isLoading && Children.count(children) === 0 && emptyMessage) {
|
||||
return <div className='empty-column-indicator'>{emptyMessage}</div>;
|
||||
return (
|
||||
<div className='empty-column-indicator'>
|
||||
<span>{emptyMessage}</span>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
@ -385,7 +385,7 @@ class ScrollableList extends PureComponent {
|
||||
{alwaysPrepend && prepend}
|
||||
|
||||
<div className='empty-column-indicator'>
|
||||
{emptyMessage}
|
||||
<span>{emptyMessage}</span>
|
||||
</div>
|
||||
|
||||
{footer}
|
||||
|
||||
@ -435,7 +435,7 @@ class Status extends ImmutablePureComponent {
|
||||
prepend = (
|
||||
<div className='status__prepend'>
|
||||
<div className='status__prepend__icon'><Icon id='retweet' icon={RepeatIcon} /></div>
|
||||
<FormattedMessage id='status.reblogged_by' defaultMessage='{name} boosted' values={{ name }} />
|
||||
<FormattedMessage id='status.reblogged_by' defaultMessage='{name} boosted' values={{ name }} tagName='span' />
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -447,7 +447,7 @@ class Status extends ImmutablePureComponent {
|
||||
prepend = (
|
||||
<div className='status__prepend'>
|
||||
<div className='status__prepend__icon'><Icon id='at' icon={AlternateEmailIcon} /></div>
|
||||
<FormattedMessage id='status.direct_indicator' defaultMessage='Private mention' />
|
||||
<FormattedMessage id='status.direct_indicator' defaultMessage='Private mention' tagName='span' />
|
||||
</div>
|
||||
);
|
||||
} else if (showThread && status.get('in_reply_to_id')) {
|
||||
|
||||
@ -51,7 +51,7 @@ export const StatusThreadLabel: React.FC<{
|
||||
<div className='status__prepend__icon'>
|
||||
<Icon id='reply' icon={ReplyIcon} />
|
||||
</div>
|
||||
{label}
|
||||
<span>{label}</span>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@ -65,5 +65,9 @@ export const EmptyMessage: React.FC<EmptyMessageProps> = ({
|
||||
);
|
||||
}
|
||||
|
||||
return <div className='empty-column-indicator'>{message}</div>;
|
||||
return (
|
||||
<div className='empty-column-indicator'>
|
||||
<span>{message}</span>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@ -154,6 +154,7 @@ const AccountFeatured: React.FC<{ multiColumn: boolean }> = ({
|
||||
key={item.id}
|
||||
collection={item}
|
||||
withoutBorder={index === listedCollections.length - 1}
|
||||
withAuthorHandle={false}
|
||||
positionInList={index + 1}
|
||||
listSize={listedCollections.length}
|
||||
/>
|
||||
|
||||
@ -9,6 +9,11 @@
|
||||
|
||||
.barWrapper {
|
||||
border-bottom: none;
|
||||
padding-inline: 24px;
|
||||
|
||||
@container (width < 500px) {
|
||||
padding-inline: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.avatarWrapper {
|
||||
@ -125,7 +130,7 @@ $button-fallback-breakpoint: $button-breakpoint + 55px;
|
||||
position: sticky;
|
||||
bottom: var(--mobile-bottom-nav-height);
|
||||
padding: 12px 16px;
|
||||
margin: 0 -20px;
|
||||
margin: 0 -16px;
|
||||
|
||||
@container (width >= #{$button-breakpoint}) {
|
||||
display: none;
|
||||
@ -388,7 +393,7 @@ svg.badgeIcon {
|
||||
padding: 0 24px;
|
||||
|
||||
@container (width < 500px) {
|
||||
padding: 0 12px;
|
||||
padding: 0 16px;
|
||||
|
||||
a {
|
||||
flex: 1 1 0px;
|
||||
|
||||
@ -78,6 +78,7 @@ export const TagSuggestions: FC = () => {
|
||||
values={{
|
||||
link: (chunks) => <Link to='/profile/featured_tags'>{chunks}</Link>,
|
||||
}}
|
||||
tagName='span'
|
||||
/>
|
||||
</Callout>
|
||||
);
|
||||
@ -122,6 +123,7 @@ export const TagSuggestions: FC = () => {
|
||||
/>
|
||||
),
|
||||
}}
|
||||
tagName='span'
|
||||
/>
|
||||
</Callout>
|
||||
);
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
.wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
align-items: start;
|
||||
margin-inline: 24px;
|
||||
padding-block: 12px;
|
||||
gap: 16px;
|
||||
padding-inline: 16px;
|
||||
|
||||
&:not(.wrapperWithoutBorder) {
|
||||
border-bottom: 1px solid var(--color-border-primary);
|
||||
@ -12,12 +13,42 @@
|
||||
.content {
|
||||
position: relative;
|
||||
flex-grow: 1;
|
||||
padding-block: 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 12px;
|
||||
}
|
||||
|
||||
.avatarGrid {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, min-content);
|
||||
gap: 2px;
|
||||
|
||||
&.avatarGridSensitive {
|
||||
.avatar {
|
||||
filter: blur(4px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.avatar {
|
||||
background: var(--color-bg-brand-softest);
|
||||
}
|
||||
|
||||
.avatarSensitiveBadge {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
margin: auto;
|
||||
padding: 3px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 8px;
|
||||
color: var(--color-text-primary);
|
||||
background: var(--color-bg-warning-softest);
|
||||
}
|
||||
|
||||
.link {
|
||||
display: block;
|
||||
margin-bottom: 2px;
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
text-decoration: none;
|
||||
@ -40,15 +71,12 @@
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
|
||||
.metaList {
|
||||
--gap: 0.75ch;
|
||||
.menuButton {
|
||||
padding: 4px;
|
||||
margin-top: -2px;
|
||||
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--gap);
|
||||
|
||||
& > li:not(:last-child)::after {
|
||||
content: '·';
|
||||
margin-inline-start: var(--gap);
|
||||
svg {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,70 +5,65 @@ import { FormattedMessage } from 'react-intl';
|
||||
import classNames from 'classnames';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import WarningIcon from '@/material-icons/400-24px/warning.svg?react';
|
||||
import type { ApiCollectionJSON } from 'mastodon/api_types/collections';
|
||||
import { AvatarById } from 'mastodon/components/avatar';
|
||||
import { useAccountHandle } from 'mastodon/components/display_name/default';
|
||||
import { RelativeTimestamp } from 'mastodon/components/relative_timestamp';
|
||||
import { Article } from 'mastodon/components/scrollable_list/components';
|
||||
import { useAccount } from 'mastodon/hooks/useAccount';
|
||||
import { domain } from 'mastodon/initial_state';
|
||||
|
||||
import classes from './collection_list_item.module.scss';
|
||||
import { CollectionMenu } from './collection_menu';
|
||||
|
||||
export const CollectionMetaData: React.FC<{
|
||||
collection: ApiCollectionJSON;
|
||||
extended?: boolean;
|
||||
className?: string;
|
||||
}> = ({ collection, extended, className }) => {
|
||||
export const AvatarGrid: React.FC<{
|
||||
accountIds: (string | undefined)[];
|
||||
sensitive?: boolean;
|
||||
}> = ({ accountIds: ids, sensitive }) => {
|
||||
const avatarIds = [ids[0], ids[1], ids[2], ids[3]];
|
||||
return (
|
||||
<ul className={classNames(classes.metaList, className)}>
|
||||
<FormattedMessage
|
||||
id='collections.account_count'
|
||||
defaultMessage='{count, plural, one {# account} other {# accounts}}'
|
||||
values={{ count: collection.item_count }}
|
||||
tagName='li'
|
||||
/>
|
||||
{extended && (
|
||||
<>
|
||||
{collection.discoverable ? (
|
||||
<FormattedMessage
|
||||
id='collections.visibility_public'
|
||||
defaultMessage='Public'
|
||||
tagName='li'
|
||||
/>
|
||||
) : (
|
||||
<FormattedMessage
|
||||
id='collections.visibility_unlisted'
|
||||
defaultMessage='Unlisted'
|
||||
tagName='li'
|
||||
/>
|
||||
)}
|
||||
{collection.sensitive && (
|
||||
<FormattedMessage
|
||||
id='collections.sensitive'
|
||||
defaultMessage='Sensitive'
|
||||
tagName='li'
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
<div
|
||||
className={classNames(
|
||||
classes.avatarGrid,
|
||||
sensitive ? classes.avatarGridSensitive : null,
|
||||
)}
|
||||
<FormattedMessage
|
||||
id='collections.last_updated_at'
|
||||
defaultMessage='Last updated: {date}'
|
||||
values={{
|
||||
date: <RelativeTimestamp timestamp={collection.updated_at} long />,
|
||||
}}
|
||||
tagName='li'
|
||||
/>
|
||||
</ul>
|
||||
>
|
||||
{avatarIds.map((id) => (
|
||||
<AvatarById
|
||||
animate={false}
|
||||
key={id}
|
||||
accountId={id}
|
||||
className={classes.avatar}
|
||||
size={25}
|
||||
/>
|
||||
))}
|
||||
{sensitive && <WarningIcon className={classes.avatarSensitiveBadge} />}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export const CollectionListItem: React.FC<{
|
||||
collection: ApiCollectionJSON;
|
||||
withoutBorder?: boolean;
|
||||
withAuthorHandle?: boolean;
|
||||
withTimestamp?: boolean;
|
||||
positionInList: number;
|
||||
listSize: number;
|
||||
}> = ({ collection, withoutBorder, positionInList, listSize }) => {
|
||||
}> = ({
|
||||
collection,
|
||||
withoutBorder,
|
||||
withAuthorHandle = true,
|
||||
withTimestamp,
|
||||
positionInList,
|
||||
listSize,
|
||||
}) => {
|
||||
const { id, name } = collection;
|
||||
const linkId = useId();
|
||||
const uniqueId = useId();
|
||||
const linkId = `${uniqueId}-link`;
|
||||
const infoId = `${uniqueId}-info`;
|
||||
const authorAccount = useAccount(collection.account_id);
|
||||
const authorHandle = useAccountHandle(authorAccount, domain);
|
||||
|
||||
return (
|
||||
<Article
|
||||
@ -78,19 +73,67 @@ export const CollectionListItem: React.FC<{
|
||||
withoutBorder && classes.wrapperWithoutBorder,
|
||||
)}
|
||||
aria-labelledby={linkId}
|
||||
aria-describedby={infoId}
|
||||
aria-posinset={positionInList}
|
||||
aria-setsize={listSize}
|
||||
>
|
||||
<div className={classes.content}>
|
||||
<h2 id={linkId}>
|
||||
<Link to={`/collections/${id}`} className={classes.link}>
|
||||
{name}
|
||||
</Link>
|
||||
</h2>
|
||||
<CollectionMetaData collection={collection} className={classes.info} />
|
||||
<AvatarGrid
|
||||
accountIds={collection.items.map((item) => item.account_id)}
|
||||
sensitive={collection.sensitive}
|
||||
/>
|
||||
<div>
|
||||
<h2 id={linkId}>
|
||||
<Link to={`/collections/${id}`} className={classes.link}>
|
||||
{name}
|
||||
</Link>
|
||||
</h2>
|
||||
<ul className={classes.info} id={infoId}>
|
||||
{collection.sensitive && (
|
||||
<li className='sr-only'>
|
||||
<FormattedMessage
|
||||
id='collections.sensitive'
|
||||
defaultMessage='Sensitive'
|
||||
/>
|
||||
</li>
|
||||
)}
|
||||
{withAuthorHandle && authorAccount && (
|
||||
<FormattedMessage
|
||||
id='collections.by_account'
|
||||
defaultMessage='by {account_handle}'
|
||||
values={{
|
||||
account_handle: authorHandle,
|
||||
}}
|
||||
tagName='li'
|
||||
/>
|
||||
)}
|
||||
<FormattedMessage
|
||||
id='collections.account_count'
|
||||
defaultMessage='{count, plural, one {# account} other {# accounts}}'
|
||||
values={{ count: collection.item_count }}
|
||||
tagName='li'
|
||||
/>
|
||||
{withTimestamp && (
|
||||
<FormattedMessage
|
||||
id='collections.last_updated_at'
|
||||
defaultMessage='Last updated: {date}'
|
||||
values={{
|
||||
date: (
|
||||
<RelativeTimestamp timestamp={collection.updated_at} long />
|
||||
),
|
||||
}}
|
||||
tagName='li'
|
||||
/>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<CollectionMenu context='list' collection={collection} />
|
||||
<CollectionMenu
|
||||
context='list'
|
||||
collection={collection}
|
||||
className={classes.menuButton}
|
||||
/>
|
||||
</Article>
|
||||
);
|
||||
};
|
||||
|
||||
@ -6,6 +6,7 @@ import { Helmet } from 'react-helmet';
|
||||
import { useHistory, useLocation, useParams } from 'react-router';
|
||||
|
||||
import { openModal } from '@/mastodon/actions/modal';
|
||||
import { RelativeTimestamp } from '@/mastodon/components/relative_timestamp';
|
||||
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
||||
import ShareIcon from '@/material-icons/400-24px/share.svg?react';
|
||||
import type { ApiCollectionJSON } from 'mastodon/api_types/collections';
|
||||
@ -25,7 +26,6 @@ import { fetchCollection } from 'mastodon/reducers/slices/collections';
|
||||
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
||||
|
||||
import { CollectionAccountsList } from './accounts_list';
|
||||
import { CollectionMetaData } from './collection_list_item';
|
||||
import { CollectionMenu } from './collection_menu';
|
||||
import classes from './styles.module.scss';
|
||||
|
||||
@ -40,6 +40,54 @@ const messages = defineMessages({
|
||||
},
|
||||
});
|
||||
|
||||
const CollectionMetaData: React.FC<{
|
||||
collection: ApiCollectionJSON;
|
||||
extended?: boolean;
|
||||
}> = ({ collection, extended }) => {
|
||||
return (
|
||||
<ul className={classes.metaList}>
|
||||
<FormattedMessage
|
||||
id='collections.account_count'
|
||||
defaultMessage='{count, plural, one {# account} other {# accounts}}'
|
||||
values={{ count: collection.item_count }}
|
||||
tagName='li'
|
||||
/>
|
||||
{extended && (
|
||||
<>
|
||||
{collection.discoverable ? (
|
||||
<FormattedMessage
|
||||
id='collections.visibility_public'
|
||||
defaultMessage='Public'
|
||||
tagName='li'
|
||||
/>
|
||||
) : (
|
||||
<FormattedMessage
|
||||
id='collections.visibility_unlisted'
|
||||
defaultMessage='Unlisted'
|
||||
tagName='li'
|
||||
/>
|
||||
)}
|
||||
{collection.sensitive && (
|
||||
<FormattedMessage
|
||||
id='collections.sensitive'
|
||||
defaultMessage='Sensitive'
|
||||
tagName='li'
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
<FormattedMessage
|
||||
id='collections.last_updated_at'
|
||||
defaultMessage='Last updated: {date}'
|
||||
values={{
|
||||
date: <RelativeTimestamp timestamp={collection.updated_at} long />,
|
||||
}}
|
||||
tagName='li'
|
||||
/>
|
||||
</ul>
|
||||
);
|
||||
};
|
||||
|
||||
export const AuthorNote: React.FC<{ id: string; previewMode?: boolean }> = ({
|
||||
id,
|
||||
// When previewMode is enabled, your own display name
|
||||
@ -137,7 +185,6 @@ const CollectionHeader: React.FC<{ collection: ApiCollectionJSON }> = ({
|
||||
<CollectionMetaData
|
||||
extended={account_id === me}
|
||||
collection={collection}
|
||||
className={classes.metaData}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -52,9 +52,19 @@
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.metaData {
|
||||
.metaList {
|
||||
--gap: 0.75ch;
|
||||
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 16px;
|
||||
gap: var(--gap);
|
||||
font-size: 15px;
|
||||
|
||||
& > li:not(:last-child)::after {
|
||||
content: '·';
|
||||
margin-inline-start: var(--gap);
|
||||
}
|
||||
}
|
||||
|
||||
.columnSubheading {
|
||||
|
||||
@ -47,6 +47,7 @@ export const Collections: React.FC<{
|
||||
<FormattedMessage
|
||||
id='collections.error_loading_collections'
|
||||
defaultMessage='There was an error when trying to load your collections.'
|
||||
tagName='span'
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
@ -92,6 +93,8 @@ export const Collections: React.FC<{
|
||||
<ItemList emptyMessage={emptyMessage} isLoading={status === 'loading'}>
|
||||
{collections.map((item, index) => (
|
||||
<CollectionListItem
|
||||
withTimestamp
|
||||
withAuthorHandle={false}
|
||||
key={item.id}
|
||||
collection={item}
|
||||
positionInList={index + 1}
|
||||
|
||||
@ -30,17 +30,19 @@ export const UploadProgress: React.FC<UploadProgressProps> = ({
|
||||
<Icon id='upload' icon={UploadFileIcon} />
|
||||
|
||||
<div className='upload-progress__message'>
|
||||
{isProcessing ? (
|
||||
<FormattedMessage
|
||||
id='upload_progress.processing'
|
||||
defaultMessage='Processing…'
|
||||
/>
|
||||
) : (
|
||||
<FormattedMessage
|
||||
id='upload_progress.label'
|
||||
defaultMessage='Uploading…'
|
||||
/>
|
||||
)}
|
||||
<span>
|
||||
{isProcessing ? (
|
||||
<FormattedMessage
|
||||
id='upload_progress.processing'
|
||||
defaultMessage='Processing…'
|
||||
/>
|
||||
) : (
|
||||
<FormattedMessage
|
||||
id='upload_progress.label'
|
||||
defaultMessage='Uploading…'
|
||||
/>
|
||||
)}
|
||||
</span>
|
||||
|
||||
<div className='upload-progress__backdrop'>
|
||||
<animated.div className='upload-progress__tracker' style={styles} />
|
||||
|
||||
@ -47,7 +47,7 @@ class Links extends PureComponent {
|
||||
return (
|
||||
<div className='explore__links scrollable scrollable--flex'>
|
||||
<div className='empty-column-indicator'>
|
||||
<FormattedMessage id='empty_column.explore_statuses' defaultMessage='Nothing is trending right now. Check back later!' />
|
||||
<FormattedMessage id='empty_column.explore_statuses' defaultMessage='Nothing is trending right now. Check back later!' tagName='span' />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -45,7 +45,7 @@ class Suggestions extends PureComponent {
|
||||
return (
|
||||
<div className='explore__suggestions scrollable scrollable--flex'>
|
||||
<div className='empty-column-indicator'>
|
||||
<FormattedMessage id='empty_column.explore_statuses' defaultMessage='Nothing is trending right now. Check back later!' />
|
||||
<FormattedMessage id='empty_column.explore_statuses' defaultMessage='Nothing is trending right now. Check back later!' tagName='span' />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -46,7 +46,7 @@ class Tags extends PureComponent {
|
||||
return (
|
||||
<div className='explore__links scrollable scrollable--flex'>
|
||||
<div className='empty-column-indicator'>
|
||||
<FormattedMessage id='empty_column.explore_statuses' defaultMessage='Nothing is trending right now. Check back later!' />
|
||||
<FormattedMessage id='empty_column.explore_statuses' defaultMessage='Nothing is trending right now. Check back later!' tagName='span' />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -63,6 +63,7 @@ const Followers: FC = () => {
|
||||
<FormattedMessage
|
||||
id='followers.hide_other_followers'
|
||||
defaultMessage='This user has chosen to not make their other followers visible'
|
||||
tagName='span'
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -65,6 +65,7 @@ const Followers: FC = () => {
|
||||
<FormattedMessage
|
||||
id='following.hide_other_following'
|
||||
defaultMessage='This user has chosen to not make the rest of who they follow visible'
|
||||
tagName='span'
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -115,7 +115,7 @@ const Source: React.FC<{ id: ApiSuggestionSourceJSON }> = ({ id }) => {
|
||||
title={hint}
|
||||
>
|
||||
<Icon id='' icon={InfoIcon} />
|
||||
{label}
|
||||
<span>{label}</span>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@ -285,6 +285,7 @@ const ListMembers: React.FC<{
|
||||
<FormattedMessage
|
||||
id='lists.no_results_found'
|
||||
defaultMessage='No results found.'
|
||||
tagName='span'
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ export const NotificationGroupWithStatus: React.FC<{
|
||||
</div>
|
||||
|
||||
<div className='notification-group__main__header__label'>
|
||||
{label}
|
||||
<span>{label}</span>
|
||||
{timestamp && (
|
||||
<>
|
||||
<span className='notification-group__main__header__label-separator'>
|
||||
|
||||
@ -194,6 +194,7 @@ const Comment: React.FC<Props> = ({
|
||||
id='report.forward'
|
||||
defaultMessage='Forward to {target}'
|
||||
values={{ target: domain }}
|
||||
tagName='span'
|
||||
/>
|
||||
</label>
|
||||
))}
|
||||
|
||||
@ -406,6 +406,7 @@ export const DetailedStatus: React.FC<{
|
||||
<FormattedMessage
|
||||
id='status.direct_indicator'
|
||||
defaultMessage='Private mention'
|
||||
tagName='span'
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Не ігнараваць @{name}",
|
||||
"account.unmute_notifications_short": "Апавяшчаць",
|
||||
"account.unmute_short": "Не ігнараваць",
|
||||
"account_edit.bio.add_label": "Апісаць сябе",
|
||||
"account_edit.bio.edit_label": "Змяніць апісанне",
|
||||
"account_edit.bio.label": "хто я",
|
||||
"account_edit.bio.placeholder": "Коратка апішыце сябе, каб дапамагчы іншым пазнаць Вас.",
|
||||
"account_edit.bio.title": "Хто я",
|
||||
"account_edit.bio_modal.add_title": "Апісаць сябе",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Vis @{name} igen",
|
||||
"account.unmute_notifications_short": "Vis notifikationer igen",
|
||||
"account.unmute_short": "Vis igen",
|
||||
"account_edit.bio.add_label": "Tilføj bio",
|
||||
"account_edit.bio.edit_label": "Rediger bio",
|
||||
"account_edit.bio.label": "bio",
|
||||
"account_edit.bio.placeholder": "Tilføj en kort introduktion, så andre kan få et indtryk af, hvem du er.",
|
||||
"account_edit.bio.title": "Bio",
|
||||
"account_edit.bio_modal.add_title": "Tilføj bio",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Stummschaltung von @{name} aufheben",
|
||||
"account.unmute_notifications_short": "Stummschaltung der Benachrichtigungen aufheben",
|
||||
"account.unmute_short": "Stummschaltung aufheben",
|
||||
"account_edit.bio.add_label": "Biografie hinzufügen",
|
||||
"account_edit.bio.edit_label": "Biografie bearbeiten",
|
||||
"account_edit.bio.label": "Biografie",
|
||||
"account_edit.bio.placeholder": "Gib anderen einen Einblick über dich, damit sie wissen, wer du bist.",
|
||||
"account_edit.bio.title": "Über mich",
|
||||
"account_edit.bio_modal.add_title": "Biografie hinzufügen",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Άρση σίγασης @{name}",
|
||||
"account.unmute_notifications_short": "Σίγαση ειδοποιήσεων",
|
||||
"account.unmute_short": "Κατάργηση σίγασης",
|
||||
"account_edit.bio.add_label": "Προσθήκη βιογραφικού",
|
||||
"account_edit.bio.edit_label": "Επεξεργασία βιογραφικού",
|
||||
"account_edit.bio.label": "βιογραφικό",
|
||||
"account_edit.bio.placeholder": "Προσθέστε μια σύντομη εισαγωγή για να βοηθήσετε άλλους να σας αναγνωρίσουν.",
|
||||
"account_edit.bio.title": "Βιογραφικό",
|
||||
"account_edit.bio_modal.add_title": "Προσθήκη βιογραφικού",
|
||||
|
||||
@ -359,6 +359,7 @@
|
||||
"collections.account_count": "{count, plural, one {# account} other {# accounts}}",
|
||||
"collections.accounts.empty_description": "Add up to {count} accounts you follow",
|
||||
"collections.accounts.empty_title": "This collection is empty",
|
||||
"collections.by_account": "by {account_handle}",
|
||||
"collections.collection_description": "Description",
|
||||
"collections.collection_language": "Language",
|
||||
"collections.collection_language_none": "None",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Dejar de silenciar a @{name}",
|
||||
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
||||
"account.unmute_short": "Dejar de silenciar",
|
||||
"account_edit.bio.add_label": "Agregar biografía",
|
||||
"account_edit.bio.edit_label": "Editar biografía",
|
||||
"account_edit.bio.label": "biografía",
|
||||
"account_edit.bio.placeholder": "Agregá una breve introducción para ayudar a otras personas a identificarte.",
|
||||
"account_edit.bio.title": "Biografía",
|
||||
"account_edit.bio_modal.add_title": "Agregar biografía",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Dejar de silenciar a @{name}",
|
||||
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
||||
"account.unmute_short": "Dejar de silenciar",
|
||||
"account_edit.bio.add_label": "Añadir biografía",
|
||||
"account_edit.bio.edit_label": "Editar biografía",
|
||||
"account_edit.bio.label": "biografía",
|
||||
"account_edit.bio.placeholder": "Añade una breve introducción para ayudar a los demás a identificarte.",
|
||||
"account_edit.bio.title": "Biografía",
|
||||
"account_edit.bio_modal.add_title": "Añadir biografía",
|
||||
|
||||
@ -141,27 +141,39 @@
|
||||
"account.unmute": "Dejar de silenciar a @{name}",
|
||||
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
||||
"account.unmute_short": "Dejar de silenciar",
|
||||
"account_edit.bio.add_label": "Añadir 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.title": "Biografía",
|
||||
"account_edit.bio_modal.add_title": "Añadir biografía",
|
||||
"account_edit.bio_modal.edit_title": "Editar biografía",
|
||||
"account_edit.column_button": "Hecho",
|
||||
"account_edit.column_title": "Editar perfil",
|
||||
"account_edit.custom_fields.add_label": "Añadir campo",
|
||||
"account_edit.custom_fields.edit_label": "Editar campo",
|
||||
"account_edit.custom_fields.placeholder": "Añade tus pronombres, enlaces externos o cualquier otra cosa que quieras compartir.",
|
||||
"account_edit.custom_fields.reorder_button": "Reordenar campos",
|
||||
"account_edit.custom_fields.tip_content": "Puedes añadir credibilidad fácilmente a tu cuenta de Mastodon verificando los enlaces a tus propias webs.",
|
||||
"account_edit.custom_fields.tip_title": "Consejo: Añade enlaces verificados",
|
||||
"account_edit.custom_fields.title": "Campos personalizados",
|
||||
"account_edit.custom_fields.verified_hint": "¿Cómo añado un enlace verificado?",
|
||||
"account_edit.display_name.add_label": "Añadir nombre para mostrar",
|
||||
"account_edit.display_name.edit_label": "Editar nombre para mostrar",
|
||||
"account_edit.display_name.placeholder": "Tu nombre de usuario es el nombre que aparece en tu perfil y en las cronologías.",
|
||||
"account_edit.display_name.title": "Nombre para mostrar",
|
||||
"account_edit.featured_hashtags.edit_label": "Añadir etiquetas",
|
||||
"account_edit.featured_hashtags.placeholder": "Ayuda a otros a identificar tus temas favoritos y a acceder rápidamente a ellos.",
|
||||
"account_edit.featured_hashtags.title": "Etiquetas destacadas",
|
||||
"account_edit.field_actions.delete": "Eliminar campo",
|
||||
"account_edit.field_actions.edit": "Editar campo",
|
||||
"account_edit.field_delete_modal.confirm": "¿Estás seguro de que quieres borrar este campo personalizado? La acción no se puede deshacer.",
|
||||
"account_edit.field_delete_modal.delete_button": "Borrar",
|
||||
"account_edit.field_delete_modal.title": "¿Borrar campo personalizado?",
|
||||
"account_edit.field_edit_modal.add_title": "Añadir campo personalizado",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Descartar",
|
||||
"account_edit.field_edit_modal.discard_message": "Tiene cambios no guardados. ¿Seguro que quieres descartarlos?",
|
||||
"account_edit.field_edit_modal.edit_title": "Editar campo personalizado",
|
||||
"account_edit.field_edit_modal.limit_warning": "Se ha superado el límite recomendado de caracteres. Es posible que los usuarios móviles no vean el campo completo.",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "Recomendamos no usar emojis personalizados combinados con enlaces. Los campos personalizados que contengan ambos solo se mostrarán como texto en vez de un enlace, para evitar confusiones.",
|
||||
"account_edit.field_edit_modal.name_hint": "Ej. \"Web personal\"",
|
||||
"account_edit.field_edit_modal.name_label": "Etiqueta",
|
||||
@ -190,6 +202,8 @@
|
||||
"account_edit.image_edit.alt_edit_button": "Editar texto alternativo",
|
||||
"account_edit.image_edit.remove_button": "Quitar imagen",
|
||||
"account_edit.image_edit.replace_button": "Sustituir imagen",
|
||||
"account_edit.item_list.delete": "Eliminar {name}",
|
||||
"account_edit.item_list.edit": "Editar {name}",
|
||||
"account_edit.name_modal.add_title": "Añadir nombre para mostrar",
|
||||
"account_edit.name_modal.edit_title": "Editar nombre para mostrar",
|
||||
"account_edit.profile_tab.button_label": "Personalizar",
|
||||
@ -212,6 +226,10 @@
|
||||
"account_edit.upload_modal.step_upload.dragging": "Suelta para subir",
|
||||
"account_edit.upload_modal.step_upload.header": "Elige una imagen",
|
||||
"account_edit.upload_modal.step_upload.hint": "Formato WEBP, PNG, GIF o JPG, hasta {limit}MB.{br}La imagen será escalada a {width}x{height}px.",
|
||||
"account_edit.upload_modal.title_add.avatar": "Añadir foto de perfil",
|
||||
"account_edit.upload_modal.title_add.header": "Añadir foto de portada",
|
||||
"account_edit.upload_modal.title_replace.avatar": "Reemplazar foto de perfil",
|
||||
"account_edit.upload_modal.title_replace.header": "Reemplazar foto de portada",
|
||||
"account_edit.verified_modal.details": "Añade credibilidad a tu perfil de Mastodon verificando enlaces a tus webs personales. Así es como funciona:",
|
||||
"account_edit.verified_modal.invisible_link.details": "Añade el enlace en el encabezado. La parte importante es rel=\"me\", que evita la suplantación de identidad en webs con contenido generado por usuarios. Incluso puedes utilizar un enlace con etiqueta en el encabezado de la página en vez de {tag}, pero el HTML debe ser accesible sin ejecutar JavaScript.",
|
||||
"account_edit.verified_modal.invisible_link.summary": "¿Cómo puedo hacer el enlace invisible?",
|
||||
@ -220,10 +238,13 @@
|
||||
"account_edit.verified_modal.step2.header": "Añade tu web como un campo personalizado",
|
||||
"account_edit.verified_modal.title": "Cómo añadir un enlace verificado",
|
||||
"account_edit_tags.add_tag": "Agregar #{tagName}",
|
||||
"account_edit_tags.column_title": "Editar Etiquetas",
|
||||
"account_edit_tags.help_text": "Las etiquetas destacadas ayudan a los usuarios a descubrir e interactuar con tu perfil. Aparecen como filtros en la vista de actividad de tu página de perfil.",
|
||||
"account_edit_tags.max_tags_reached": "Has alcanzado el número máximo de etiquetas destacadas.",
|
||||
"account_edit_tags.search_placeholder": "Introduce una etiqueta…",
|
||||
"account_edit_tags.suggestions": "Sugerencias:",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {# publicación} other {# publicaciones}}",
|
||||
"account_list.total": "{total, plural, one {# cuenta} other {# cuentas}}",
|
||||
"account_note.placeholder": "Haz clic para añadir nota",
|
||||
"admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro",
|
||||
"admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro",
|
||||
@ -339,6 +360,8 @@
|
||||
"collections.accounts.empty_description": "Añade hasta {count} cuentas que sigas",
|
||||
"collections.accounts.empty_title": "Esta colección está vacía",
|
||||
"collections.collection_description": "Descripción",
|
||||
"collections.collection_language": "Idioma",
|
||||
"collections.collection_language_none": "Ninguno",
|
||||
"collections.collection_name": "Nombre",
|
||||
"collections.collection_topic": "Tema",
|
||||
"collections.confirm_account_removal": "¿Estás seguro de que quieres eliminar esta cuenta de la colección?",
|
||||
@ -662,7 +685,9 @@
|
||||
"follow_suggestions.who_to_follow": "A quién seguir",
|
||||
"followed_tags": "Etiquetas seguidas",
|
||||
"followers.hide_other_followers": "Este usuario ha elegido no hacer visible sus otros seguidores",
|
||||
"followers.title": "Siguiendo a {name}",
|
||||
"following.hide_other_following": "Este usuario ha elegido no hacer visible a quién más sigue",
|
||||
"following.title": "Seguido por {name}",
|
||||
"footer.about": "Acerca de",
|
||||
"footer.about_mastodon": "Acerca de Mastodon",
|
||||
"footer.about_server": "Acerca de {domain}",
|
||||
|
||||
@ -142,7 +142,6 @@
|
||||
"account.unmute_notifications_short": "Kumoa ilmoitusten mykistys",
|
||||
"account.unmute_short": "Kumoa mykistys",
|
||||
"account_edit.bio.edit_label": "Muokkaa elämäkertaa",
|
||||
"account_edit.bio.label": "elämäkerta",
|
||||
"account_edit.bio.placeholder": "Lisää lyhyt esittely, joka auttaa muita tunnistamaan sinut.",
|
||||
"account_edit.bio.title": "Elämäkerta",
|
||||
"account_edit.bio_modal.add_title": "Lisää elämäkerta",
|
||||
|
||||
@ -141,27 +141,39 @@
|
||||
"account.unmute": "Ne plus masquer @{name}",
|
||||
"account.unmute_notifications_short": "Ne plus masquer les notifications",
|
||||
"account.unmute_short": "Ne plus masquer",
|
||||
"account_edit.bio.add_label": "Ajouter une 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.title": "Présentation",
|
||||
"account_edit.bio_modal.add_title": "Ajouter une présentation",
|
||||
"account_edit.bio_modal.edit_title": "Modifier la présentation",
|
||||
"account_edit.column_button": "Terminé",
|
||||
"account_edit.column_title": "Modifier le profil",
|
||||
"account_edit.custom_fields.add_label": "Ajouter un champ",
|
||||
"account_edit.custom_fields.edit_label": "Modifier le champ",
|
||||
"account_edit.custom_fields.placeholder": "Ajouter vos pronoms, vos sites, ou tout ce que vous voulez partager.",
|
||||
"account_edit.custom_fields.reorder_button": "Réorganiser les champs",
|
||||
"account_edit.custom_fields.tip_content": "Vous pouvez facilement ajouter de la crédibilité à votre compte Mastodon en vérifiant les liens vers tous les sites Web que vous possédez.",
|
||||
"account_edit.custom_fields.tip_title": "Astuce : ajout de liens vérifiés",
|
||||
"account_edit.custom_fields.title": "Champs personnalisés",
|
||||
"account_edit.custom_fields.verified_hint": "Comment ajouter un lien vérifié ?",
|
||||
"account_edit.display_name.add_label": "Ajouter un nom public",
|
||||
"account_edit.display_name.edit_label": "Modifier le nom public",
|
||||
"account_edit.display_name.placeholder": "Votre nom public est le nom qui apparaît sur votre profil et dans les fils d'actualités.",
|
||||
"account_edit.display_name.title": "Nom public",
|
||||
"account_edit.featured_hashtags.edit_label": "Ajouter des hashtags",
|
||||
"account_edit.featured_hashtags.placeholder": "Aider les autres à identifier et à accéder rapidement à vos sujets préférés.",
|
||||
"account_edit.featured_hashtags.title": "Hashtags mis en avant",
|
||||
"account_edit.field_actions.delete": "Supprimer le champ",
|
||||
"account_edit.field_actions.edit": "Modifier le champ",
|
||||
"account_edit.field_delete_modal.confirm": "Voulez-vous vraiment supprimer ce champ personnalisé ? Cette action ne peut pas être annulée.",
|
||||
"account_edit.field_delete_modal.delete_button": "Supprimer",
|
||||
"account_edit.field_delete_modal.title": "Supprimer le champ personnalisé ?",
|
||||
"account_edit.field_edit_modal.add_title": "Ajouter un champ personnalisé",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Abandonner",
|
||||
"account_edit.field_edit_modal.discard_message": "Vos modifications n’ont pas été enregistrées. Voulez-vous vraiment les abandonner ?",
|
||||
"account_edit.field_edit_modal.edit_title": "Modifier un champ personnalisé",
|
||||
"account_edit.field_edit_modal.limit_warning": "Le nombre de caractères dépasse la limite recommandée. Le champ peut ne pas s'afficher entièrement sur les téléphones.",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "Nous déconseillons l'usage d'émoji personnalisé avec les URL. Les champs personnalisés contenant les deux seront affichés comme du texte et non un lien, afin d'éviter toute confusion.",
|
||||
"account_edit.field_edit_modal.name_hint": "Par exemple « Site Web personnel »",
|
||||
"account_edit.field_edit_modal.name_label": "Libellé",
|
||||
@ -190,6 +202,8 @@
|
||||
"account_edit.image_edit.alt_edit_button": "Modifier le texte alternatif",
|
||||
"account_edit.image_edit.remove_button": "Supprimer l’image",
|
||||
"account_edit.image_edit.replace_button": "Remplacer l'image",
|
||||
"account_edit.item_list.delete": "Supprimer {name}",
|
||||
"account_edit.item_list.edit": "Modifier {name}",
|
||||
"account_edit.name_modal.add_title": "Ajouter un nom public",
|
||||
"account_edit.name_modal.edit_title": "Modifier le nom public",
|
||||
"account_edit.profile_tab.button_label": "Personnaliser",
|
||||
@ -212,6 +226,10 @@
|
||||
"account_edit.upload_modal.step_upload.dragging": "Déposer pour téléverser",
|
||||
"account_edit.upload_modal.step_upload.header": "Choisir une image",
|
||||
"account_edit.upload_modal.step_upload.hint": "Format WebP, PNG, GIF ou JPEG, jusqu'à {limit} Mo.{br}L'image sera redimensionnée à {width} × {height} px.",
|
||||
"account_edit.upload_modal.title_add.avatar": "Ajouter une photo de profil",
|
||||
"account_edit.upload_modal.title_add.header": "Ajouter une photo de couverture",
|
||||
"account_edit.upload_modal.title_replace.avatar": "Remplacer la photo de profil",
|
||||
"account_edit.upload_modal.title_replace.header": "Remplacer la photo de couverture",
|
||||
"account_edit.verified_modal.details": "Ajouter de la crédibilité à votre profil Mastodon en vérifiant les liens vers vos sites Web personnels. Voici comment cela fonctionne :",
|
||||
"account_edit.verified_modal.invisible_link.details": "Ajouter le lien dans votre en-tête. La partie importante est « rel=\"me\" » qui empêche l'usurpation d'identité sur des sites Web ayant du contenu généré par d'autres utilisateur·rice·s. Vous pouvez aussi utiliser une balise link dans l'en-tête de la page au lieu de {tag}, mais le code HTML doit être accessible sans avoir besoin d'exécuter du JavaScript.",
|
||||
"account_edit.verified_modal.invisible_link.summary": "Comment rendre le lien invisible ?",
|
||||
@ -220,7 +238,9 @@
|
||||
"account_edit.verified_modal.step2.header": "Ajouter votre site Web en tant que champ personnalisé",
|
||||
"account_edit.verified_modal.title": "Comment ajouter un lien vérifié ?",
|
||||
"account_edit_tags.add_tag": "Ajouter #{tagName}",
|
||||
"account_edit_tags.column_title": "Modifier les hashtags",
|
||||
"account_edit_tags.help_text": "Les hashtags mis en avant aident les personnes à découvrir et interagir avec votre profil. Ils apparaissent comme des filtres dans la vue « Activité » de votre profil.",
|
||||
"account_edit_tags.max_tags_reached": "Vous avez atteint le nombre maximum de hashtags mis en avant.",
|
||||
"account_edit_tags.search_placeholder": "Saisir un hashtag…",
|
||||
"account_edit_tags.suggestions": "Suggestions :",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {# message} other {# messages}}",
|
||||
@ -996,7 +1016,7 @@
|
||||
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
||||
"onboarding.profile.title": "Configuration du profil",
|
||||
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
||||
"onboarding.profile.upload_header": "Importer un entête de profil",
|
||||
"onboarding.profile.upload_header": "Importer une image de couverture",
|
||||
"password_confirmation.exceeds_maxlength": "La confirmation du mot de passe dépasse la longueur maximale du mot de passe",
|
||||
"password_confirmation.mismatching": "Les deux mots de passe ne correspondent pas",
|
||||
"picture_in_picture.restore": "Remettre en place",
|
||||
|
||||
@ -141,27 +141,39 @@
|
||||
"account.unmute": "Ne plus masquer @{name}",
|
||||
"account.unmute_notifications_short": "Réactiver les notifications",
|
||||
"account.unmute_short": "Ne plus masquer",
|
||||
"account_edit.bio.add_label": "Ajouter une 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.title": "Présentation",
|
||||
"account_edit.bio_modal.add_title": "Ajouter une présentation",
|
||||
"account_edit.bio_modal.edit_title": "Modifier la présentation",
|
||||
"account_edit.column_button": "Terminé",
|
||||
"account_edit.column_title": "Modifier le profil",
|
||||
"account_edit.custom_fields.add_label": "Ajouter un champ",
|
||||
"account_edit.custom_fields.edit_label": "Modifier le champ",
|
||||
"account_edit.custom_fields.placeholder": "Ajouter vos pronoms, vos sites, ou tout ce que vous voulez partager.",
|
||||
"account_edit.custom_fields.reorder_button": "Réorganiser les champs",
|
||||
"account_edit.custom_fields.tip_content": "Vous pouvez facilement ajouter de la crédibilité à votre compte Mastodon en vérifiant les liens vers tous les sites Web que vous possédez.",
|
||||
"account_edit.custom_fields.tip_title": "Astuce : ajout de liens vérifiés",
|
||||
"account_edit.custom_fields.title": "Champs personnalisés",
|
||||
"account_edit.custom_fields.verified_hint": "Comment ajouter un lien vérifié ?",
|
||||
"account_edit.display_name.add_label": "Ajouter un nom public",
|
||||
"account_edit.display_name.edit_label": "Modifier le nom public",
|
||||
"account_edit.display_name.placeholder": "Votre nom public est le nom qui apparaît sur votre profil et dans les fils d'actualités.",
|
||||
"account_edit.display_name.title": "Nom public",
|
||||
"account_edit.featured_hashtags.edit_label": "Ajouter des hashtags",
|
||||
"account_edit.featured_hashtags.placeholder": "Aider les autres à identifier et à accéder rapidement à vos sujets préférés.",
|
||||
"account_edit.featured_hashtags.title": "Hashtags mis en avant",
|
||||
"account_edit.field_actions.delete": "Supprimer le champ",
|
||||
"account_edit.field_actions.edit": "Modifier le champ",
|
||||
"account_edit.field_delete_modal.confirm": "Voulez-vous vraiment supprimer ce champ personnalisé ? Cette action ne peut pas être annulée.",
|
||||
"account_edit.field_delete_modal.delete_button": "Supprimer",
|
||||
"account_edit.field_delete_modal.title": "Supprimer le champ personnalisé ?",
|
||||
"account_edit.field_edit_modal.add_title": "Ajouter un champ personnalisé",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Abandonner",
|
||||
"account_edit.field_edit_modal.discard_message": "Vos modifications n’ont pas été enregistrées. Voulez-vous vraiment les abandonner ?",
|
||||
"account_edit.field_edit_modal.edit_title": "Modifier un champ personnalisé",
|
||||
"account_edit.field_edit_modal.limit_warning": "Le nombre de caractères dépasse la limite recommandée. Le champ peut ne pas s'afficher entièrement sur les téléphones.",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "Nous déconseillons l'usage d'émoji personnalisé avec les URL. Les champs personnalisés contenant les deux seront affichés comme du texte et non un lien, afin d'éviter toute confusion.",
|
||||
"account_edit.field_edit_modal.name_hint": "Par exemple « Site Web personnel »",
|
||||
"account_edit.field_edit_modal.name_label": "Libellé",
|
||||
@ -190,6 +202,8 @@
|
||||
"account_edit.image_edit.alt_edit_button": "Modifier le texte alternatif",
|
||||
"account_edit.image_edit.remove_button": "Supprimer l’image",
|
||||
"account_edit.image_edit.replace_button": "Remplacer l'image",
|
||||
"account_edit.item_list.delete": "Supprimer {name}",
|
||||
"account_edit.item_list.edit": "Modifier {name}",
|
||||
"account_edit.name_modal.add_title": "Ajouter un nom public",
|
||||
"account_edit.name_modal.edit_title": "Modifier le nom public",
|
||||
"account_edit.profile_tab.button_label": "Personnaliser",
|
||||
@ -212,6 +226,10 @@
|
||||
"account_edit.upload_modal.step_upload.dragging": "Déposer pour téléverser",
|
||||
"account_edit.upload_modal.step_upload.header": "Choisir une image",
|
||||
"account_edit.upload_modal.step_upload.hint": "Format WebP, PNG, GIF ou JPEG, jusqu'à {limit} Mo.{br}L'image sera redimensionnée à {width} × {height} px.",
|
||||
"account_edit.upload_modal.title_add.avatar": "Ajouter une photo de profil",
|
||||
"account_edit.upload_modal.title_add.header": "Ajouter une photo de couverture",
|
||||
"account_edit.upload_modal.title_replace.avatar": "Remplacer la photo de profil",
|
||||
"account_edit.upload_modal.title_replace.header": "Remplacer la photo de couverture",
|
||||
"account_edit.verified_modal.details": "Ajouter de la crédibilité à votre profil Mastodon en vérifiant les liens vers vos sites Web personnels. Voici comment cela fonctionne :",
|
||||
"account_edit.verified_modal.invisible_link.details": "Ajouter le lien dans votre en-tête. La partie importante est « rel=\"me\" » qui empêche l'usurpation d'identité sur des sites Web ayant du contenu généré par d'autres utilisateur·rice·s. Vous pouvez aussi utiliser une balise link dans l'en-tête de la page au lieu de {tag}, mais le code HTML doit être accessible sans avoir besoin d'exécuter du JavaScript.",
|
||||
"account_edit.verified_modal.invisible_link.summary": "Comment rendre le lien invisible ?",
|
||||
@ -220,7 +238,9 @@
|
||||
"account_edit.verified_modal.step2.header": "Ajouter votre site Web en tant que champ personnalisé",
|
||||
"account_edit.verified_modal.title": "Comment ajouter un lien vérifié ?",
|
||||
"account_edit_tags.add_tag": "Ajouter #{tagName}",
|
||||
"account_edit_tags.column_title": "Modifier les hashtags",
|
||||
"account_edit_tags.help_text": "Les hashtags mis en avant aident les personnes à découvrir et interagir avec votre profil. Ils apparaissent comme des filtres dans la vue « Activité » de votre profil.",
|
||||
"account_edit_tags.max_tags_reached": "Vous avez atteint le nombre maximum de hashtags mis en avant.",
|
||||
"account_edit_tags.search_placeholder": "Saisir un hashtag…",
|
||||
"account_edit_tags.suggestions": "Suggestions :",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {# message} other {# messages}}",
|
||||
@ -996,7 +1016,7 @@
|
||||
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
||||
"onboarding.profile.title": "Configuration du profil",
|
||||
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
||||
"onboarding.profile.upload_header": "Importer un entête de profil",
|
||||
"onboarding.profile.upload_header": "Importer une image de couverture",
|
||||
"password_confirmation.exceeds_maxlength": "La confirmation du mot de passe dépasse la longueur du mot de passe",
|
||||
"password_confirmation.mismatching": "Les deux mots de passe ne correspondent pas",
|
||||
"picture_in_picture.restore": "Remettre en place",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Díbhalbhaigh @{name}",
|
||||
"account.unmute_notifications_short": "Díbhalbhaigh fógraí",
|
||||
"account.unmute_short": "Díbhalbhaigh",
|
||||
"account_edit.bio.add_label": "Cuir beathaisnéis leis",
|
||||
"account_edit.bio.edit_label": "Cuir beathaisnéis in eagar",
|
||||
"account_edit.bio.label": "beathaisnéis",
|
||||
"account_edit.bio.placeholder": "Cuir réamhrá gearr leis chun cabhrú le daoine eile tú a aithint.",
|
||||
"account_edit.bio.title": "Beathaisnéis",
|
||||
"account_edit.bio_modal.add_title": "Cuir beathaisnéis leis",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Deixar de silenciar a @{name}",
|
||||
"account.unmute_notifications_short": "Reactivar notificacións",
|
||||
"account.unmute_short": "Non silenciar",
|
||||
"account_edit.bio.add_label": "Engadir biografía",
|
||||
"account_edit.bio.edit_label": "Editar biografía",
|
||||
"account_edit.bio.label": "sobre ti",
|
||||
"account_edit.bio.placeholder": "Escribe unha breve presentación para que te coñezan mellor.",
|
||||
"account_edit.bio.title": "Sobre ti",
|
||||
"account_edit.bio_modal.add_title": "Engadir biografía",
|
||||
@ -171,7 +171,9 @@
|
||||
"account_edit.field_delete_modal.title": "Eliminar campo persoal?",
|
||||
"account_edit.field_edit_modal.add_title": "Engadir campo persoal",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Desbotar",
|
||||
"account_edit.field_edit_modal.discard_message": "Tes cambios sen gardar. Tes certeza de querer desbotalos?",
|
||||
"account_edit.field_edit_modal.edit_title": "Editar campo persoal",
|
||||
"account_edit.field_edit_modal.limit_warning": "Superouse o límite de caracteres recomendado. Nos móbiles podería non verse a información completa.",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "Non recomendamos o uso de emojis persoais combinados con URLs. Os campos persoais que conteñen ambos móstranse só como texto e non como unha ligazón, para evitar a confusión de quen os lea.",
|
||||
"account_edit.field_edit_modal.name_hint": "Ex. \"Páxina web persoal\"",
|
||||
"account_edit.field_edit_modal.name_label": "Etiqueta",
|
||||
@ -200,6 +202,8 @@
|
||||
"account_edit.image_edit.alt_edit_button": "Editar descrición",
|
||||
"account_edit.image_edit.remove_button": "Retirar a imaxe",
|
||||
"account_edit.image_edit.replace_button": "Substituír a imaxe",
|
||||
"account_edit.item_list.delete": "Eliminar {name}",
|
||||
"account_edit.item_list.edit": "Editar {name}",
|
||||
"account_edit.name_modal.add_title": "Engadir nome público",
|
||||
"account_edit.name_modal.edit_title": "Editar o nome público",
|
||||
"account_edit.profile_tab.button_label": "Personalizar",
|
||||
@ -222,6 +226,10 @@
|
||||
"account_edit.upload_modal.step_upload.dragging": "Solta aquí para subir",
|
||||
"account_edit.upload_modal.step_upload.header": "Escoller unha imaxe",
|
||||
"account_edit.upload_modal.step_upload.hint": "Formato WEBP, PNG, GIF ou JPG, ata {limit}MB.{br}A imaxe será comprimida a {width}x{height}px.",
|
||||
"account_edit.upload_modal.title_add.avatar": "Engadir foto do perfil",
|
||||
"account_edit.upload_modal.title_add.header": "Engadir foto da cabeceira",
|
||||
"account_edit.upload_modal.title_replace.avatar": "Substituír foto do perfil",
|
||||
"account_edit.upload_modal.title_replace.header": "Substituír foto da cabeceira",
|
||||
"account_edit.verified_modal.details": "Engade maior credibilidade ao teu perfil Mastodon verificando as ligazóns ás túas páxinas web persoais. Funciona así:",
|
||||
"account_edit.verified_modal.invisible_link.details": "Engade a ligazón ao «header» da páxina web. A parte importante é rel=\"me\", que evita a suplantación en sitios web con contido creado polas usuarias. Tamén podes usar a etiqueta «link» na cabeceira da páxina no lugar de {tag}, pero o HTML ten que ser accesible sen usar JavaScript.",
|
||||
"account_edit.verified_modal.invisible_link.summary": "Como fago visible a ligazón?",
|
||||
@ -230,10 +238,13 @@
|
||||
"account_edit.verified_modal.step2.header": "Engade a túa páxina como campo persoal",
|
||||
"account_edit.verified_modal.title": "Como engadir unha ligazón verificada",
|
||||
"account_edit_tags.add_tag": "Engadir #{tagName}",
|
||||
"account_edit_tags.column_title": "Editar etiquetas",
|
||||
"account_edit_tags.help_text": "Os cancelos destacados axúdanlle ás usuarias a atopar e interactuar co teu perfil. Aparecen como filtros na túa páxina de perfil na vista Actividade.",
|
||||
"account_edit_tags.max_tags_reached": "Acadaches o número máximo de cancelos destacados.",
|
||||
"account_edit_tags.search_placeholder": "Escribe un cancelo…",
|
||||
"account_edit_tags.suggestions": "Suxestións:",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {# publicación} other {# publicacións}}",
|
||||
"account_list.total": "{total, plural, one {# conta} other {# contas}}",
|
||||
"account_note.placeholder": "Preme para engadir nota",
|
||||
"admin.dashboard.daily_retention": "Ratio de retención de usuarias diaria após rexistrarse",
|
||||
"admin.dashboard.monthly_retention": "Ratio de retención de usuarias mensual após o rexistro",
|
||||
@ -674,7 +685,9 @@
|
||||
"follow_suggestions.who_to_follow": "A quen seguir",
|
||||
"followed_tags": "Cancelos seguidos",
|
||||
"followers.hide_other_followers": "Esta usuaria escolleu non mostrar as outras persoas que a seguen",
|
||||
"followers.title": "Seguindo a {name}",
|
||||
"following.hide_other_following": "Esta usuaria escolleu non mostrar as outras persoas que segue",
|
||||
"following.title": "Seguida por {name}",
|
||||
"footer.about": "Sobre",
|
||||
"footer.about_mastodon": "Sobre Mastodon",
|
||||
"footer.about_server": "Sobre {domain}",
|
||||
|
||||
@ -141,27 +141,38 @@
|
||||
"account.unmute": "הפסקת השתקת @{name}",
|
||||
"account.unmute_notifications_short": "הפעלת הודעות",
|
||||
"account.unmute_short": "ביטול השתקה",
|
||||
"account_edit.bio.edit_label": "עריכת ביוגרפיה",
|
||||
"account_edit.bio.placeholder": "הוסיפו הצגה קצרה כדי לעזור לאחרים לזהות אותך.",
|
||||
"account_edit.bio.title": "ביוגרפיה",
|
||||
"account_edit.bio_modal.add_title": "הוסיפו ביוגרפיה",
|
||||
"account_edit.bio_modal.edit_title": "עריכת ביוגרפיה",
|
||||
"account_edit.column_button": "סיום",
|
||||
"account_edit.column_title": "עריכת הפרופיל",
|
||||
"account_edit.custom_fields.add_label": "הוספת שדה",
|
||||
"account_edit.custom_fields.edit_label": "עריכת שדה",
|
||||
"account_edit.custom_fields.placeholder": "הוסיפו צורת פניה, קישורים חיצוניים וכל דבר שתרצו לשתף.",
|
||||
"account_edit.custom_fields.reorder_button": "הגדרת סדר השדות",
|
||||
"account_edit.custom_fields.tip_content": "ניתן להוסיף אמינות לחשבון המסטודון שלך על ידי וידוא קישורים לאתרים שבבעלותך.",
|
||||
"account_edit.custom_fields.tip_title": "טיפ: הוספת קישורים מוודאים",
|
||||
"account_edit.custom_fields.title": "שדות בהתאמה אישית",
|
||||
"account_edit.custom_fields.verified_hint": "כיצד תוסיפו קישורים מוודאים?",
|
||||
"account_edit.display_name.add_label": "הוספת שם תצוגה",
|
||||
"account_edit.display_name.edit_label": "עריכת שם תצוגה",
|
||||
"account_edit.display_name.placeholder": "שם התצוגה שלכן הוא איך שהשם יופיע בפרופיל ובצירי הזמנים.",
|
||||
"account_edit.display_name.title": "שם תצוגה",
|
||||
"account_edit.featured_hashtags.edit_label": "הוספת תגיות",
|
||||
"account_edit.featured_hashtags.placeholder": "עזרו לאחרים לזהות ולגשת בקלות לנושאים החביבים עליכם.",
|
||||
"account_edit.featured_hashtags.title": "תגיות נבחרות",
|
||||
"account_edit.field_actions.delete": "מחיקת שדה",
|
||||
"account_edit.field_actions.edit": "עריכת שדה",
|
||||
"account_edit.field_delete_modal.confirm": "האם אתם בטוחיםות שברצונכן למחוק את השדה המיוחד הזה? פעולה זו לא ניתנת לביטול.",
|
||||
"account_edit.field_delete_modal.delete_button": "מחק",
|
||||
"account_edit.field_delete_modal.title": "מחיקת שדה מתואם אישית?",
|
||||
"account_edit.field_edit_modal.add_title": "הוסף שדה מותאם אישית",
|
||||
"account_edit.field_edit_modal.discard_confirm": "השלך",
|
||||
"account_edit.field_edit_modal.discard_message": "יש שינויים שלא נשמרו. לסלק אותם?",
|
||||
"account_edit.field_edit_modal.edit_title": "עריכת שדה מותאם אישית",
|
||||
"account_edit.field_edit_modal.limit_warning": "עברת את מספר התווים המירבי המומלץ. משתמשים בנייד עלולים שלא לראות את השדה המלא.",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "אנו ממליצים נגד שימוש באמוג'י ייחודיים ביחד עם URL. שדות מיוחדים שמכילים את שניהם יופיעו כמלל בלבד ולא כקישור, כדי למנוע בלבול משתמשים.",
|
||||
"account_edit.field_edit_modal.name_hint": "למשל \"אתר אישי\"",
|
||||
"account_edit.field_edit_modal.name_label": "תווית",
|
||||
@ -190,6 +201,8 @@
|
||||
"account_edit.image_edit.alt_edit_button": "עריכת מלל חלופי",
|
||||
"account_edit.image_edit.remove_button": "הסרת תמונה",
|
||||
"account_edit.image_edit.replace_button": "החלפת תמונה",
|
||||
"account_edit.item_list.delete": "מחיקת {name}",
|
||||
"account_edit.item_list.edit": "עריכת {name}",
|
||||
"account_edit.name_modal.add_title": "הוספת שם תצוגה",
|
||||
"account_edit.name_modal.edit_title": "עריכת שם תצוגה",
|
||||
"account_edit.profile_tab.button_label": "התאמה אישית",
|
||||
@ -212,6 +225,10 @@
|
||||
"account_edit.upload_modal.step_upload.dragging": "גרור להעלאה",
|
||||
"account_edit.upload_modal.step_upload.header": "בחר/י תמונה",
|
||||
"account_edit.upload_modal.step_upload.hint": "תכנים בתקן WEBP, PNG, GIF או JPG, עד לגודל {limit} מ\"ב.{br}התמונה תתוקן לגודל {width} על {height} פיקסלים.",
|
||||
"account_edit.upload_modal.title_add.avatar": "הוספת תמונת פרופיל",
|
||||
"account_edit.upload_modal.title_add.header": "הוספת תמונת מסגרת",
|
||||
"account_edit.upload_modal.title_replace.avatar": "החלפת תמונת פרופיל",
|
||||
"account_edit.upload_modal.title_replace.header": "החלפת תמונת מסגרת",
|
||||
"account_edit.verified_modal.details": "הוספת אמינות לחשבון המסטודון על ידי הוספת קישורים מוודאים לאתרים אישיים. כך זה עובד:",
|
||||
"account_edit.verified_modal.invisible_link.details": "הוסיפו את הקישור בכותרת. החלק החשוב הוא rel=\"me\" שמונע התחזות על אתרים עם תוכן משתמשים. ניתן גם ליצור תגית link בכותרת העמוד במקום קישור {tag} אבל קוד ה־HTML חייב להופיע שם ללא הרצה של ג'אווהסקריפט.",
|
||||
"account_edit.verified_modal.invisible_link.summary": "כיצד לגרום לקישור להיות בלתי נראה?",
|
||||
@ -220,7 +237,9 @@
|
||||
"account_edit.verified_modal.step2.header": "הוסיפו את אתרכן בשדה המיוחד",
|
||||
"account_edit.verified_modal.title": "כיצד תוסיפו קישורים מוודאים",
|
||||
"account_edit_tags.add_tag": "הוספת #{tagName}",
|
||||
"account_edit_tags.column_title": "עריכת תגיות",
|
||||
"account_edit_tags.help_text": "תגיות נבחרות עוזרות למשתמשים לגלות ולהשתמש בפרופיל שלך. הן יופיעו כסננים במבט הפעילויות על עמוד הפרופיל שלך.",
|
||||
"account_edit_tags.max_tags_reached": "הגעת למספר התגיות הנבחרות המירבי.",
|
||||
"account_edit_tags.search_placeholder": "הזנת תגית…",
|
||||
"account_edit_tags.suggestions": "הצעות:",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {הודעה אחת} two {הודעותיים} other {# הודעות}}",
|
||||
|
||||
@ -142,7 +142,6 @@
|
||||
"account.unmute_notifications_short": "Értesítések némításának feloldása",
|
||||
"account.unmute_short": "Némitás feloldása",
|
||||
"account_edit.bio.edit_label": "Bemutatkozás szerkesztése",
|
||||
"account_edit.bio.label": "bemutatkozás",
|
||||
"account_edit.bio.placeholder": "Adj meg egy rövid bemutatkozást, hogy mások könnyebben megtaláljanak.",
|
||||
"account_edit.bio.title": "Bemutatkozás",
|
||||
"account_edit.bio_modal.add_title": "Bemutatkozás hozzáadása",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Hætta að þagga niður í @{name}",
|
||||
"account.unmute_notifications_short": "Hætta að þagga í tilkynningum",
|
||||
"account.unmute_short": "Hætta að þagga niður",
|
||||
"account_edit.bio.add_label": "Bættu við æviágripi",
|
||||
"account_edit.bio.edit_label": "Breyta æviágripi",
|
||||
"account_edit.bio.label": "æviágrip",
|
||||
"account_edit.bio.placeholder": "Settu inn stutta kynningu á þér svo aðrir eigi betur með að auðkenna þig.",
|
||||
"account_edit.bio.title": "Æviágrip",
|
||||
"account_edit.bio_modal.add_title": "Bættu við æviágripi",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Riattiva @{name}",
|
||||
"account.unmute_notifications_short": "Riattiva notifiche",
|
||||
"account.unmute_short": "Attiva audio",
|
||||
"account_edit.bio.add_label": "Aggiungi biografia",
|
||||
"account_edit.bio.edit_label": "Modifica la biografia",
|
||||
"account_edit.bio.label": "biografia",
|
||||
"account_edit.bio.placeholder": "Aggiungi una breve introduzione per aiutare gli altri a identificarti.",
|
||||
"account_edit.bio.title": "Biografia",
|
||||
"account_edit.bio_modal.add_title": "Aggiungi biografia",
|
||||
|
||||
@ -141,27 +141,38 @@
|
||||
"account.unmute": "@{name} niet langer negeren",
|
||||
"account.unmute_notifications_short": "Meldingen niet langer negeren",
|
||||
"account.unmute_short": "Niet langer negeren",
|
||||
"account_edit.bio.edit_label": "Biografie bewerken",
|
||||
"account_edit.bio.placeholder": "Vertel iets over jezelf, zodat anderen inzicht krijgen in wat voor persoon je bent.",
|
||||
"account_edit.bio.title": "Biografie",
|
||||
"account_edit.bio_modal.add_title": "Biografie toevoegen",
|
||||
"account_edit.bio_modal.edit_title": "Biografie bewerken",
|
||||
"account_edit.column_button": "Klaar",
|
||||
"account_edit.column_title": "Profiel bewerken",
|
||||
"account_edit.custom_fields.add_label": "Veld toevoegen",
|
||||
"account_edit.custom_fields.edit_label": "Veld bewerken",
|
||||
"account_edit.custom_fields.placeholder": "Voeg je voornaamwoorden, externe links of iets anders toe dat je wilt delen.",
|
||||
"account_edit.custom_fields.reorder_button": "Velden opnieuw ordenen",
|
||||
"account_edit.custom_fields.tip_content": "Je kunt gemakkelijk je Mastodon-account geloofwaardig maken door links naar websites die van jou zijn te laten verifiëren.",
|
||||
"account_edit.custom_fields.tip_title": "Tip: Geverifieerde links toevoegen",
|
||||
"account_edit.custom_fields.title": "Extra velden",
|
||||
"account_edit.custom_fields.verified_hint": "Hoe voeg ik een geverifieerde link toe?",
|
||||
"account_edit.display_name.add_label": "Weergavenaam toevoegen",
|
||||
"account_edit.display_name.edit_label": "Weergavenaam bewerken",
|
||||
"account_edit.display_name.placeholder": "Je weergavenaam wordt op jouw profiel en op tijdlijnen weergegeven.",
|
||||
"account_edit.display_name.title": "Weergavenaam",
|
||||
"account_edit.featured_hashtags.edit_label": "Hashtags toevoegen",
|
||||
"account_edit.featured_hashtags.placeholder": "Geef anderen een overzicht van en snel toegang tot je favoriete onderwerpen.",
|
||||
"account_edit.featured_hashtags.title": "Uitgelichte hashtags",
|
||||
"account_edit.field_actions.delete": "Veld verwijderen",
|
||||
"account_edit.field_actions.edit": "Veld bewerken",
|
||||
"account_edit.field_delete_modal.confirm": "Weet je zeker dat je dit aangepaste veld wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.",
|
||||
"account_edit.field_delete_modal.delete_button": "Verwijderen",
|
||||
"account_edit.field_delete_modal.title": "Aangepast veld verwijderen?",
|
||||
"account_edit.field_edit_modal.add_title": "Aangepast veld toevoegen",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Weggooien",
|
||||
"account_edit.field_edit_modal.discard_message": "U heeft niet-opgeslagen wijzigingen. Weet u zeker dat u ze wilt weggooien?",
|
||||
"account_edit.field_edit_modal.edit_title": "Aangepast veld bewerken",
|
||||
"account_edit.field_edit_modal.limit_warning": "Aanbevolen tekenlimiet overschreden. Mobiele gebruikers zien mogelijk uw veld niet volledig.",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "We raden aan om geen lokale emoji in combinatie met URL's te gebruiken. Aangepaste velden die beide bevatten worden alleen als tekst weergegeven, in plaats van als een link. Dit om verwarring voor de gebruiker te voorkomen.",
|
||||
"account_edit.field_edit_modal.name_hint": "Bijv. \"Persoonlijke website\"",
|
||||
"account_edit.field_edit_modal.name_label": "Label",
|
||||
@ -190,6 +201,8 @@
|
||||
"account_edit.image_edit.alt_edit_button": "Alt-tekst bewerken",
|
||||
"account_edit.image_edit.remove_button": "Afbeelding verwijderen",
|
||||
"account_edit.image_edit.replace_button": "Afbeelding vervangen",
|
||||
"account_edit.item_list.delete": "{name} verwijderen",
|
||||
"account_edit.item_list.edit": "{name} bewerken",
|
||||
"account_edit.name_modal.add_title": "Weergavenaam toevoegen",
|
||||
"account_edit.name_modal.edit_title": "Weergavenaam bewerken",
|
||||
"account_edit.profile_tab.button_label": "Aanpassen",
|
||||
@ -212,6 +225,10 @@
|
||||
"account_edit.upload_modal.step_upload.dragging": "Hierheen slepen om te uploaden",
|
||||
"account_edit.upload_modal.step_upload.header": "Kies een afbeelding",
|
||||
"account_edit.upload_modal.step_upload.hint": "WEBP-, PNG-, GIF- of JPG-formaat, tot max. {limit}MB.{br}Afbeelding wordt geschaald naar {width}x{height}px.",
|
||||
"account_edit.upload_modal.title_add.avatar": "Profielfoto toevoegen",
|
||||
"account_edit.upload_modal.title_add.header": "Omslagfoto toevoegen",
|
||||
"account_edit.upload_modal.title_replace.avatar": "Profielfoto vervangen",
|
||||
"account_edit.upload_modal.title_replace.header": "Omslagfoto vervangen",
|
||||
"account_edit.verified_modal.details": "Maak je Mastodonprofiel geloofwaardig door links naar persoonlijke websites te verifiëren. Zo werkt het:",
|
||||
"account_edit.verified_modal.invisible_link.details": "Voeg de link aan de HTML van je website toe. Het belangrijkste onderdeel is rel=\"me\", waarmee wordt voorkomen dat websites met user-generated content geïmpersoneerd kunnen worden. Je kunt zelfs een <link>-tag gebruiken binnen de <head>-tag van je website in plaats van {tag}, maar de HTML moet zonder JavaScript toegankelijk zijn.",
|
||||
"account_edit.verified_modal.invisible_link.summary": "Hoe maak ik de link onzichtbaar?",
|
||||
@ -220,10 +237,13 @@
|
||||
"account_edit.verified_modal.step2.header": "Voeg je website toe als een aangepast veld",
|
||||
"account_edit.verified_modal.title": "Hoe voeg je een geverifieerde link toe",
|
||||
"account_edit_tags.add_tag": "#{tagName} toevoegen",
|
||||
"account_edit_tags.column_title": "Labels bewerken",
|
||||
"account_edit_tags.help_text": "Uitgelichte hashtags helpen gebruikers je profiel te ontdekken en om er interactie mee te communiceren. Ze verschijnen als filters op je Profielpagina onder het tabblad Activiteit.",
|
||||
"account_edit_tags.max_tags_reached": "Maximum aantal uitgelichte hashtags bereikt.",
|
||||
"account_edit_tags.search_placeholder": "Voer een hashtag in…",
|
||||
"account_edit_tags.suggestions": "Suggesties:",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {# bericht} other {# berichten}}",
|
||||
"account_list.total": "{total, plural, one {# account} other {# accounts}}",
|
||||
"account_note.placeholder": "Klik om een opmerking toe te voegen",
|
||||
"admin.dashboard.daily_retention": "Retentiegraad van gebruikers per dag, vanaf registratie",
|
||||
"admin.dashboard.monthly_retention": "Retentiegraad van gebruikers per maand, vanaf registratie",
|
||||
@ -618,6 +638,10 @@
|
||||
"featured_carousel.header": "{count, plural, one {Vastgezet bericht} other {Vastgezette berichten}}",
|
||||
"featured_carousel.slide": "Bericht {current, number} van {max, number}",
|
||||
"featured_tags.more_items": "+{count}",
|
||||
"featured_tags.suggestions": "De laatste tijd heb over {items} gepost. Deze toevoegen als uitgelichte hashtags?",
|
||||
"featured_tags.suggestions.add": "Toevoegen",
|
||||
"featured_tags.suggestions.added": "Je kunt je uitgelichte hashtags beheren onder <link>Profiel bewerken > Uitgelichte hashtags</link>.",
|
||||
"featured_tags.suggestions.dismiss": "Nee, bedankt",
|
||||
"filter_modal.added.context_mismatch_explanation": "Deze filtercategorie is niet van toepassing op de context waarin je dit bericht hebt benaderd. Als je wilt dat het bericht ook in deze context wordt gefilterd, moet je het filter bewerken.",
|
||||
"filter_modal.added.context_mismatch_title": "Context komt niet overeen!",
|
||||
"filter_modal.added.expired_explanation": "Deze filtercategorie is verlopen. Je moet de vervaldatum wijzigen om de categorie toe te kunnen passen.",
|
||||
@ -660,7 +684,9 @@
|
||||
"follow_suggestions.who_to_follow": "Wie te volgen",
|
||||
"followed_tags": "Gevolgde hashtags",
|
||||
"followers.hide_other_followers": "Deze gebruiker heeft ervoor gekozen diens andere volgers niet zichtbaar te maken",
|
||||
"followers.title": "{name} volgen",
|
||||
"following.hide_other_following": "Deze gebruiker heeft ervoor gekozen de rest van diens gevolgde accounts niet zichtbaar te maken",
|
||||
"following.title": "Gevolgd door {name}",
|
||||
"footer.about": "Over",
|
||||
"footer.about_mastodon": "Over Mastodon",
|
||||
"footer.about_server": "Over {domain}",
|
||||
|
||||
@ -14,9 +14,16 @@
|
||||
"about.powered_by": "Zdecentralizowane media społecznościowe napędzane przez {mastodon}",
|
||||
"about.rules": "Regulamin serwera",
|
||||
"account.account_note_header": "Notatka",
|
||||
"account.activity": "Aktywność",
|
||||
"account.add_note": "Dodaj osobistą notkę",
|
||||
"account.add_or_remove_from_list": "Dodaj lub usuń z list",
|
||||
"account.badges.admin": "Admin",
|
||||
"account.badges.blocked": "Zablokowane",
|
||||
"account.badges.bot": "Bot",
|
||||
"account.badges.domain_blocked": "Zablokowana domena",
|
||||
"account.badges.group": "Grupa",
|
||||
"account.badges.muted": "Wyciszone",
|
||||
"account.badges.muted_until": "Wyciszone do {until}",
|
||||
"account.block": "Blokuj @{name}",
|
||||
"account.block_domain": "Blokuj wszystko z {domain}",
|
||||
"account.block_short": "Zablokuj",
|
||||
@ -27,6 +34,7 @@
|
||||
"account.direct": "Napisz bezpośrednio do @{name}",
|
||||
"account.disable_notifications": "Przestań powiadamiać mnie o wpisach @{name}",
|
||||
"account.domain_blocking": "Blokowanie domeny",
|
||||
"account.edit_note": "Edytuj osobistą notkę",
|
||||
"account.edit_profile": "Edytuj profil",
|
||||
"account.edit_profile_short": "Edytuj",
|
||||
"account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}",
|
||||
@ -36,9 +44,17 @@
|
||||
"account.familiar_followers_two": "To konto jest obserwowane przez {name1} i {name2}",
|
||||
"account.featured": "Wyróżnione",
|
||||
"account.featured.accounts": "Profile",
|
||||
"account.featured.collections": "Kolekcje",
|
||||
"account.featured.hashtags": "Tagi",
|
||||
"account.featured_tags.last_status_at": "Ostatni post {date}",
|
||||
"account.featured_tags.last_status_never": "Brak postów",
|
||||
"account.field_overflow": "Pokaż całą zawartość",
|
||||
"account.filters.all": "Wszystkie aktywności",
|
||||
"account.filters.boosts_toggle": "Pokaż ulepszenia",
|
||||
"account.filters.posts_boosts": "Posty i ulepszenia",
|
||||
"account.filters.posts_only": "Posty",
|
||||
"account.filters.posts_replies": "Posty i odpowiedzi",
|
||||
"account.filters.replies_toggle": "Pokaż odpowiedzi",
|
||||
"account.follow": "Obserwuj",
|
||||
"account.follow_back": "Również obserwuj",
|
||||
"account.follow_back_short": "Również obserwuj",
|
||||
@ -63,6 +79,24 @@
|
||||
"account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go obserwować.",
|
||||
"account.media": "Multimedia",
|
||||
"account.mention": "Wspomnij o @{name}",
|
||||
"account.menu.add_to_list": "Dodaj do listy…",
|
||||
"account.menu.block": "Zablokuj konto",
|
||||
"account.menu.block_domain": "Zablokuj {domain}",
|
||||
"account.menu.copied": "Skopiowano link do konta do schowka",
|
||||
"account.menu.copy": "Skopiuj link",
|
||||
"account.menu.direct": "Prywatna wzmianka",
|
||||
"account.menu.hide_reblogs": "Ukryj ulepszenia na osi czasu",
|
||||
"account.menu.mention": "Wzmianka",
|
||||
"account.menu.mute": "Wycisz konta",
|
||||
"account.menu.note.description": "Widoczne tylko dla Ciebie",
|
||||
"account.menu.open_original_page": "Zobacz na {domain}",
|
||||
"account.menu.remove_follower": "Usuń obserwującego",
|
||||
"account.menu.report": "Zgłoś konto",
|
||||
"account.menu.share": "Udostępnij...",
|
||||
"account.menu.show_reblogs": "Pokaż ulepszenia na osi czasu",
|
||||
"account.menu.unblock": "Odblokuj konto",
|
||||
"account.menu.unblock_domain": "Odblokuj {domain}",
|
||||
"account.menu.unmute": "Odcisz konto",
|
||||
"account.moved_to": "{name} jako swoje nowe konto wskazał/a:",
|
||||
"account.mute": "Wycisz @{name}",
|
||||
"account.mute_notifications_short": "Wycisz powiadomienia",
|
||||
@ -90,6 +124,35 @@
|
||||
"account.unmute": "Nie wyciszaj @{name}",
|
||||
"account.unmute_notifications_short": "Nie wyciszaj powiadomień",
|
||||
"account.unmute_short": "Nie wyciszaj",
|
||||
"account_edit.bio_modal.add_title": "Szczegóły profilu",
|
||||
"account_edit.bio_modal.edit_title": "Edytuj szczegóły profilu",
|
||||
"account_edit.column_button": "Gotowe",
|
||||
"account_edit.column_title": "Edytuj profil",
|
||||
"account_edit.custom_fields.add_label": "Dodaj pole",
|
||||
"account_edit.custom_fields.edit_label": "Edytuj pole",
|
||||
"account_edit.custom_fields.placeholder": "Dodaj swoje zaimki, linki zewnętrzne lub cokolwiek innego, które chcesz udostępnić.",
|
||||
"account_edit.custom_fields.reorder_button": "Zmień kolejność pól",
|
||||
"account_edit.custom_fields.tip_content": "Możesz z łatwością zwiększyć wiarygodność swojego konta Mastodon poprzez weryfikację linków do wszelkich stron internetowych, które posiadasz.",
|
||||
"account_edit.custom_fields.tip_title": "Wskazówka: Dodawanie zweryfikowanych linków",
|
||||
"account_edit.custom_fields.title": "Pola niestandardowe",
|
||||
"account_edit.custom_fields.verified_hint": "Jak dodać zweryfikowany link?",
|
||||
"account_edit.display_name.add_label": "Dodaj nazwę wyświetlaną",
|
||||
"account_edit.display_name.edit_label": "Edytuj nazwę wyświetlaną",
|
||||
"account_edit.display_name.placeholder": "Twoja nazwa wyświetlana jest jak Twoja nazwa pojawia się na Twoim profilu i na osi czasu.",
|
||||
"account_edit.display_name.title": "Wyświetlana nazwa",
|
||||
"account_edit.featured_hashtags.edit_label": "Dodaj hashtagi",
|
||||
"account_edit.featured_hashtags.placeholder": "Pomóż innym zidentyfikować i mieć szybki dostęp do Twoich ulubionych tematów.",
|
||||
"account_edit.featured_hashtags.title": "Wyróżnione hashtagi",
|
||||
"account_edit.field_actions.delete": "Usuń pole",
|
||||
"account_edit.field_actions.edit": "Edytuj pole",
|
||||
"account_edit.field_delete_modal.confirm": "Czy na pewno chcesz usunąć to pole niestandardowe? Tej czynności nie można cofnąć.",
|
||||
"account_edit.field_delete_modal.delete_button": "Usuń",
|
||||
"account_edit.field_delete_modal.title": "Usuń pole niestandardowe ",
|
||||
"account_edit.field_edit_modal.add_title": "Dodaj pole niestandardowe",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Odrzuć",
|
||||
"account_edit.field_edit_modal.discard_message": "Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?",
|
||||
"account_edit.field_edit_modal.edit_title": "Edytuj dodatkowe pole",
|
||||
"account_edit.field_edit_modal.limit_warning": "Przekroczono limit zalecanych znaków. Użytkownicy mobilni mogą nie widzieć Twojego pola w całości.",
|
||||
"account_note.placeholder": "Kliknij, aby dodać notatkę",
|
||||
"admin.dashboard.daily_retention": "Wskaźnik utrzymania użytkowników według dni od rejestracji",
|
||||
"admin.dashboard.monthly_retention": "Wskaźnik utrzymania użytkowników według miesięcy od rejestracji",
|
||||
|
||||
@ -142,7 +142,6 @@
|
||||
"account.unmute_notifications_short": "Ativar som de notificações",
|
||||
"account.unmute_short": "Desativar silêncio",
|
||||
"account_edit.bio.edit_label": "Editar Biografia",
|
||||
"account_edit.bio.label": "biografia",
|
||||
"account_edit.bio.placeholder": "Insira uma breve introdução para ajudar os outros a lhe identificar.",
|
||||
"account_edit.bio.title": "Bio",
|
||||
"account_edit.bio_modal.add_title": "Adicionar biografia",
|
||||
|
||||
@ -141,12 +141,16 @@
|
||||
"account.unmute": "Desocultar @{name}",
|
||||
"account.unmute_notifications_short": "Desocultar notificações",
|
||||
"account.unmute_short": "Desocultar",
|
||||
"account_edit.bio.add_label": "Adicionar biografia",
|
||||
"account_edit.bio.edit_label": "Editar biografia",
|
||||
"account_edit.bio.placeholder": "Adicione uma breve apresentação para ajudar os outros a identificá-lo.",
|
||||
"account_edit.bio.title": "Bio",
|
||||
"account_edit.bio_modal.add_title": "Adicionar biografia",
|
||||
"account_edit.bio_modal.edit_title": "Editar biografia",
|
||||
"account_edit.column_button": "Concluído",
|
||||
"account_edit.column_title": "Editar Perfil",
|
||||
"account_edit.custom_fields.add_label": "Adicionar campo",
|
||||
"account_edit.custom_fields.edit_label": "Editar campo",
|
||||
"account_edit.custom_fields.placeholder": "Adicione os seus pronomes, hiperligações externas ou qualquer outra coisa que queira partilhar.",
|
||||
"account_edit.custom_fields.reorder_button": "Reordenar campos",
|
||||
"account_edit.custom_fields.tip_content": "Pode adicionar facilmente credibilidade à sua conta Mastodon, verificando ligações para qualquer website que possua.",
|
||||
@ -157,10 +161,13 @@
|
||||
"account_edit.display_name.title": "Nome a mostrar",
|
||||
"account_edit.featured_hashtags.placeholder": "Ajude à sua identificação por outros e tenha acesso rápido aos seus tópicos favoritos.",
|
||||
"account_edit.featured_hashtags.title": "Etiquetas em destaque",
|
||||
"account_edit.field_actions.delete": "Eliminar campo",
|
||||
"account_edit.field_actions.edit": "Editar campo",
|
||||
"account_edit.field_delete_modal.confirm": "Tem certeza de que deseja excluir este campo personalizado? Esta ação não pode ser desfeita.",
|
||||
"account_edit.field_delete_modal.delete_button": "Excluir",
|
||||
"account_edit.field_delete_modal.title": "Excluir campo personalizado?",
|
||||
"account_edit.field_edit_modal.add_title": "Adicionar campo personalizado",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Descartar",
|
||||
"account_edit.field_edit_modal.edit_title": "Editar campo personalizado",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "Não recomendamos o uso de emojis personalizados em combinação com URLs. Campos personalizados que contenham ambos serão exibidos apenas como texto, em vez de como hiperligação, para evitar confusão aos utilizadores.",
|
||||
"account_edit.field_edit_modal.name_hint": "Ex.: \"Site pessoal\"",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Ktheji zërin @{name}",
|
||||
"account.unmute_notifications_short": "Shfaqi njoftimet",
|
||||
"account.unmute_short": "Çheshtoje",
|
||||
"account_edit.bio.add_label": "Shtoni jetëshkrim",
|
||||
"account_edit.bio.edit_label": "Përpunoni jetëshkrim",
|
||||
"account_edit.bio.label": "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.title": "Jetëshkrim",
|
||||
"account_edit.bio_modal.add_title": "Shtoni jetëshkrim",
|
||||
|
||||
@ -134,6 +134,7 @@
|
||||
"account.unmute": "Sluta tysta @{name}",
|
||||
"account.unmute_notifications_short": "Aktivera aviseringsljud",
|
||||
"account.unmute_short": "Avtysta",
|
||||
"account_edit.bio.add_label": "Lägg till biografi",
|
||||
"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_modal.add_title": "Lägg till biografi",
|
||||
|
||||
@ -141,27 +141,39 @@
|
||||
"account.unmute": "@{name} adlı kişinin sesini aç",
|
||||
"account.unmute_notifications_short": "Bildirimlerin sesini aç",
|
||||
"account.unmute_short": "Susturmayı kaldır",
|
||||
"account_edit.bio.add_label": "Kişisel bilgi ekle",
|
||||
"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.title": "Kişisel bilgiler",
|
||||
"account_edit.bio_modal.add_title": "Kişisel bilgi ekle",
|
||||
"account_edit.bio_modal.edit_title": "Kişisel bilgiyi düzenle",
|
||||
"account_edit.column_button": "Tamamlandı",
|
||||
"account_edit.column_title": "Profili Düzenle",
|
||||
"account_edit.custom_fields.add_label": "Alan ekle",
|
||||
"account_edit.custom_fields.edit_label": "Alanı düzenle",
|
||||
"account_edit.custom_fields.placeholder": "Zamirlerinizi, harici bağlantılarınızı veya paylaşmak istediğiniz diğer bilgileri ekleyin.",
|
||||
"account_edit.custom_fields.reorder_button": "Alanları yeniden sırala",
|
||||
"account_edit.custom_fields.tip_content": "Sahip olduğunuz web sitelerine bağlantıları doğrulayarak Mastodon hesabınıza kolayca güvenilirlik katabilirsiniz.",
|
||||
"account_edit.custom_fields.tip_title": "İpucu: Doğrulanmış bağlantılar ekleme",
|
||||
"account_edit.custom_fields.title": "Özel alanlar",
|
||||
"account_edit.custom_fields.verified_hint": "Doğrulanmış bir bağlantı nasıl eklerim?",
|
||||
"account_edit.display_name.add_label": "Görüntülenecek ad ekle",
|
||||
"account_edit.display_name.edit_label": "Görüntülenecek adı düzenle",
|
||||
"account_edit.display_name.placeholder": "Görünen adınız profilinizde ve zaman akışlarında adınızın nasıl göründüğüdür.",
|
||||
"account_edit.display_name.title": "Görünen ad",
|
||||
"account_edit.featured_hashtags.edit_label": "Etiket ekle",
|
||||
"account_edit.featured_hashtags.placeholder": "Başkalarının favori konularınızı tanımlamasına ve bunlara hızlı bir şekilde erişmesine yardımcı olun.",
|
||||
"account_edit.featured_hashtags.title": "Öne çıkan etiketler",
|
||||
"account_edit.field_actions.delete": "Alanı sil",
|
||||
"account_edit.field_actions.edit": "Alanı düzenle",
|
||||
"account_edit.field_delete_modal.confirm": "Bu özel alanı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
|
||||
"account_edit.field_delete_modal.delete_button": "Sil",
|
||||
"account_edit.field_delete_modal.title": "Özel alanı sil?",
|
||||
"account_edit.field_edit_modal.add_title": "Özel alan ekle",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Yoksay",
|
||||
"account_edit.field_edit_modal.discard_message": "Kaydedilmemiş değişiklikleriniz var. Bunları silmek istediğinizden emin misiniz?",
|
||||
"account_edit.field_edit_modal.edit_title": "Özel alanı düzenle",
|
||||
"account_edit.field_edit_modal.limit_warning": "Önerilen karakter sınırı aşıldı. Mobil kullanıcılar sahayı tam olarak görmeyebilirler.",
|
||||
"account_edit.field_edit_modal.link_emoji_warning": "Url'lerle birlikte özel emoji kullanmamanızı öneririz. Her ikisini de içeren özel alanlar, kullanıcıların kafasını karıştırmamak için bağlantı yerine yalnızca metin olarak görüntülenir.",
|
||||
"account_edit.field_edit_modal.name_hint": "Örn. \"Kişisel web sitesi\"",
|
||||
"account_edit.field_edit_modal.name_label": "Etiket",
|
||||
@ -190,6 +202,8 @@
|
||||
"account_edit.image_edit.alt_edit_button": "Alternatif metni düzenle",
|
||||
"account_edit.image_edit.remove_button": "Görseli kaldır",
|
||||
"account_edit.image_edit.replace_button": "Görseli değiştir",
|
||||
"account_edit.item_list.delete": "{name} sil",
|
||||
"account_edit.item_list.edit": "{name} düzenle",
|
||||
"account_edit.name_modal.add_title": "Görünen ad ekle",
|
||||
"account_edit.name_modal.edit_title": "Görünen adı düzenle",
|
||||
"account_edit.profile_tab.button_label": "Özelleştir",
|
||||
@ -212,6 +226,10 @@
|
||||
"account_edit.upload_modal.step_upload.dragging": "Yüklemek için bırakın",
|
||||
"account_edit.upload_modal.step_upload.header": "Bir resim seç",
|
||||
"account_edit.upload_modal.step_upload.hint": "WEBP, PNG, GIF veya JPG formatında, en fazla {limit} MB.{br}Görsel {width}x{height} piksel boyutuna getirilir.",
|
||||
"account_edit.upload_modal.title_add.avatar": "Profil fotoğrafı ekle",
|
||||
"account_edit.upload_modal.title_add.header": "Kapak fotoğrafı ekle",
|
||||
"account_edit.upload_modal.title_replace.avatar": "Profil fotoğrafını değiştir",
|
||||
"account_edit.upload_modal.title_replace.header": "Kapak fotoğrafını değiştirin",
|
||||
"account_edit.verified_modal.details": "Kişisel web sitelerine bağlantıları doğrulayarak Mastodon profilinize güvenilirlik katın. İşte böyle çalışıyor:",
|
||||
"account_edit.verified_modal.invisible_link.details": "Bağlantıyı başlığınıza ekleyin. Önemli olan kısım, kullanıcı tarafından oluşturulan içeriğe sahip web sitelerinde kimlik sahtekarlığını önleyen rel=\"me\" özniteliğidir. {tag} yerine sayfanın başlığında bir bağlantı etiketi bile kullanabilirsiniz, ancak HTML, JavaScript çalıştırılmadan erişilebilir olmalıdır.",
|
||||
"account_edit.verified_modal.invisible_link.summary": "Bağlantıyı nasıl görünmez hale getirebilirim?",
|
||||
@ -220,7 +238,9 @@
|
||||
"account_edit.verified_modal.step2.header": "Web sitenizi özel bir alan olarak ekleyin",
|
||||
"account_edit.verified_modal.title": "Doğrulanmış bir bağlantı nasıl eklenir",
|
||||
"account_edit_tags.add_tag": "#{tagName} ekle",
|
||||
"account_edit_tags.column_title": "Etiketleri Düzenle",
|
||||
"account_edit_tags.help_text": "Öne çıkan etiketler kullanıcıların profilinizi keşfetmesine ve etkileşim kurmasına yardımcı olur. Profil sayfanızın Etkinlik görünümünde filtreler olarak görünürler.",
|
||||
"account_edit_tags.max_tags_reached": "Azami öne çıkan etiket sayısına ulaştınız.",
|
||||
"account_edit_tags.search_placeholder": "Bir etiket girin…",
|
||||
"account_edit_tags.suggestions": "Öneriler:",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {# gönderi} other {# gönderi}}",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "Bỏ phớt lờ @{name}",
|
||||
"account.unmute_notifications_short": "Bỏ phớt lờ thông báo",
|
||||
"account.unmute_short": "Bỏ phớt lờ",
|
||||
"account_edit.bio.add_label": "Thêm giới thiệu",
|
||||
"account_edit.bio.edit_label": "Sửa giới thiệu",
|
||||
"account_edit.bio.label": "giới thiệu",
|
||||
"account_edit.bio.placeholder": "Thêm một dòng giới thiệu để giúp mọi người nhận ra bạn.",
|
||||
"account_edit.bio.title": "Giới thiệu",
|
||||
"account_edit.bio_modal.add_title": "Thêm giới thiệu",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "不再隐藏 @{name}",
|
||||
"account.unmute_notifications_short": "恢复通知",
|
||||
"account.unmute_short": "取消隐藏",
|
||||
"account_edit.bio.add_label": "添加个人简介",
|
||||
"account_edit.bio.edit_label": "编辑个人简介",
|
||||
"account_edit.bio.label": "简介",
|
||||
"account_edit.bio.placeholder": "添加一段简短介绍,帮助其他人认识你。",
|
||||
"account_edit.bio.title": "简介",
|
||||
"account_edit.bio_modal.add_title": "添加个人简介",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute": "解除靜音 @{name}",
|
||||
"account.unmute_notifications_short": "解除靜音推播通知",
|
||||
"account.unmute_short": "解除靜音",
|
||||
"account_edit.bio.add_label": "新增個人簡介",
|
||||
"account_edit.bio.edit_label": "編輯個人簡介",
|
||||
"account_edit.bio.label": "個人簡介",
|
||||
"account_edit.bio.placeholder": "加入一段簡短介紹以幫助其他人識別您。",
|
||||
"account_edit.bio.title": "個人簡介",
|
||||
"account_edit.bio_modal.add_title": "新增個人簡介",
|
||||
@ -639,7 +639,7 @@
|
||||
"featured_carousel.header": "{count, plural, other {# 則釘選嘟文}}",
|
||||
"featured_carousel.slide": "{max, number} 則嘟文中之第 {current, number} 則",
|
||||
"featured_tags.more_items": "+{count}",
|
||||
"featured_tags.suggestions": "最近您曾發有關 {items} 之嘟文。是否新增其為推薦主題標籤?",
|
||||
"featured_tags.suggestions": "最近您曾發過有關 {items} 之嘟文。是否新增其為推薦主題標籤?",
|
||||
"featured_tags.suggestions.add": "新增",
|
||||
"featured_tags.suggestions.added": "於 <link>編輯個人檔案 > 推薦主題標籤</link> 隨時管理您的推薦主題標籤。",
|
||||
"featured_tags.suggestions.dismiss": "不需要,謝謝",
|
||||
|
||||
@ -29,7 +29,7 @@ export const selectUserListWithoutMe = createAppSelector(
|
||||
.filter((id) => id !== currentAccountId)
|
||||
.toArray(),
|
||||
isLoading: !!list.get('isLoading', true),
|
||||
hasMore: !!list.get('hasMore', false),
|
||||
hasMore: !!list.get('next'),
|
||||
};
|
||||
},
|
||||
);
|
||||
|
||||
@ -442,6 +442,53 @@ $content-width: 840px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.callout {
|
||||
display: flex;
|
||||
align-items: start;
|
||||
padding: 12px;
|
||||
gap: 8px;
|
||||
background-color: var(--color-bg-brand-softest);
|
||||
color: var(--color-text-primary);
|
||||
border-radius: 12px;
|
||||
font-size: 15px;
|
||||
margin-bottom: 30px;
|
||||
|
||||
.icon {
|
||||
padding: 4px;
|
||||
border-radius: 9999px;
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
margin-top: -2px;
|
||||
background-color: var(--color-bg-brand-soft);
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
flex-grow: 1;
|
||||
padding: 0;
|
||||
|
||||
@media screen and (width >= 630px) {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
|
||||
.body {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: 600;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hr.spacer {
|
||||
|
||||
@ -4099,11 +4099,10 @@ a.account__display-name {
|
||||
.column-subheading {
|
||||
background: var(--color-bg-secondary);
|
||||
color: var(--color-text-secondary);
|
||||
padding: 8px 20px;
|
||||
font-size: 12px;
|
||||
padding: 12px 24px;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
text-transform: uppercase;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.getting-started__wrapper {
|
||||
@ -10679,6 +10678,7 @@ noscript {
|
||||
&__source {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
max-width: 100%;
|
||||
color: var(--color-text-tertiary);
|
||||
gap: 4px;
|
||||
overflow: hidden;
|
||||
@ -10899,12 +10899,6 @@ noscript {
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
|
||||
& > span {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
|
||||
@ -7,7 +7,7 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity
|
||||
return unless Mastodon::Feature.collections_federation_enabled?
|
||||
return if non_matching_uri_hosts?(@account.uri, @json['id'])
|
||||
|
||||
@collection = @account.collections.find_by(uri: value_or_id(@json['instrument']))
|
||||
@collection = find_or_fetch_collection
|
||||
@featured_account = ActivityPub::TagManager.instance.uris_to_local_accounts([value_or_id(@json['object'])]).first
|
||||
|
||||
return if @collection.nil? || @featured_account.nil?
|
||||
@ -37,6 +37,17 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity
|
||||
queue_delivery!(collection_item, ActivityPub::RejectFeatureRequestSerializer)
|
||||
end
|
||||
|
||||
def find_or_fetch_collection
|
||||
uri = value_or_id(@json['instrument'])
|
||||
collection = @account.collections.find_by(uri:)
|
||||
return collection if collection.present?
|
||||
|
||||
collection = ActivityPub::FetchRemoteFeaturedCollectionService.new.call(uri)
|
||||
return collection if collection.present? && collection.account == @account
|
||||
|
||||
nil
|
||||
end
|
||||
|
||||
def collection_item_attributes(state = :accepted)
|
||||
{ account: @featured_account, activity_uri: @json['id'], state: }
|
||||
end
|
||||
|
||||
@ -9,14 +9,14 @@ class WebfingerResource
|
||||
@resource = resource
|
||||
end
|
||||
|
||||
def username
|
||||
def account
|
||||
case resource
|
||||
when %r{\A(https?://)?#{instance_actor_regexp}/?\Z}
|
||||
Rails.configuration.x.local_domain
|
||||
Account.representative
|
||||
when /\Ahttps?/i
|
||||
username_from_url
|
||||
account_from_url
|
||||
when /@/
|
||||
username_from_acct
|
||||
account_from_acct
|
||||
else
|
||||
raise InvalidRequest
|
||||
end
|
||||
@ -31,11 +31,11 @@ class WebfingerResource
|
||||
Regexp.union(hosts)
|
||||
end
|
||||
|
||||
def username_from_url
|
||||
def account_from_url
|
||||
if account_show_page?
|
||||
path_params[:username]
|
||||
path_params.key?(:username) ? Account.find_local!(path_params[:username]) : Account.local.find(path_params[:id])
|
||||
elsif instance_actor_page?
|
||||
Rails.configuration.x.local_domain
|
||||
Account.representative
|
||||
else
|
||||
raise ActiveRecord::RecordNotFound
|
||||
end
|
||||
@ -53,10 +53,13 @@ class WebfingerResource
|
||||
Rails.application.routes.recognize_path(resource)
|
||||
end
|
||||
|
||||
def username_from_acct
|
||||
def account_from_acct
|
||||
raise ActiveRecord::RecordNotFound unless domain_matches_local?
|
||||
|
||||
local_username
|
||||
username = local_username
|
||||
return Account.representative if username == Rails.configuration.x.local_domain || username == Rails.configuration.x.web_domain
|
||||
|
||||
Account.find_local!(username)
|
||||
end
|
||||
|
||||
def split_acct
|
||||
@ -76,6 +79,6 @@ class WebfingerResource
|
||||
end
|
||||
|
||||
def domain_matches_local?
|
||||
TagManager.instance.local_domain?(local_domain) || TagManager.instance.web_domain?(local_domain)
|
||||
TagManager.instance.local_domain?(local_domain) || TagManager.instance.web_domain?(local_domain) || Rails.configuration.x.alternate_domains.include?(local_domain)
|
||||
end
|
||||
end
|
||||
|
||||
@ -32,7 +32,7 @@ class Admin::TagFilter
|
||||
when :status
|
||||
status_scope(value)
|
||||
when :name
|
||||
Tag.search_for(value.to_s.strip, params[:limit], params[:offset], exclude_unlistable: false)
|
||||
Tag.search_for(value, params[:limit], params[:offset], exclude_unlistable: false)
|
||||
when :order
|
||||
order_scope(value)
|
||||
else
|
||||
|
||||
@ -128,7 +128,7 @@ class Tag < ApplicationRecord
|
||||
end
|
||||
|
||||
def search_for(term, limit = 5, offset = 0, options = {})
|
||||
stripped_term = term.strip
|
||||
stripped_term = term.to_s.strip
|
||||
options.reverse_merge!({ exclude_unlistable: true, exclude_unreviewed: false })
|
||||
|
||||
query = Tag.matches_name(stripped_term)
|
||||
|
||||
@ -4,7 +4,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
|
||||
include RoutingHelper
|
||||
include FormattingHelper
|
||||
|
||||
context :security
|
||||
context :security, :webfinger
|
||||
|
||||
context_extensions :manually_approves_followers, :featured, :also_known_as,
|
||||
:moved_to, :property_value, :discoverable, :suspended,
|
||||
@ -55,6 +55,10 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
|
||||
ActivityPub::TagManager.instance.uri_for(object)
|
||||
end
|
||||
|
||||
def webfinger
|
||||
object.local_username_and_domain
|
||||
end
|
||||
|
||||
def type
|
||||
if object.instance_actor?
|
||||
'Application'
|
||||
|
||||
@ -2,9 +2,11 @@
|
||||
|
||||
class REST::ProfileSerializer < ActiveModel::Serializer
|
||||
include RoutingHelper
|
||||
include FormattingHelper
|
||||
|
||||
# Please update app/javascript/api_types/profile.ts when making changes to the attributes
|
||||
attributes :id, :display_name, :note, :fields,
|
||||
:formatted_note, :formatted_fields,
|
||||
:avatar, :avatar_static, :avatar_description, :header, :header_static, :header_description,
|
||||
:locked, :bot,
|
||||
:hide_collections, :discoverable, :indexable,
|
||||
@ -17,10 +19,18 @@ class REST::ProfileSerializer < ActiveModel::Serializer
|
||||
object.id.to_s
|
||||
end
|
||||
|
||||
def formatted_note
|
||||
account_bio_format(object)
|
||||
end
|
||||
|
||||
def fields
|
||||
object.fields.map(&:to_h)
|
||||
end
|
||||
|
||||
def formatted_fields
|
||||
object.fields.map { |field| { name: field.name, value: account_field_value_format(field), verified_at: field.verified_at } }
|
||||
end
|
||||
|
||||
def avatar
|
||||
object.avatar_file_name.present? ? full_asset_url(object.avatar_original_url) : nil
|
||||
end
|
||||
|
||||
@ -27,11 +27,23 @@ class ActivityPub::FetchRemoteActorService < BaseService
|
||||
raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?
|
||||
raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type?
|
||||
raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present?
|
||||
raise Error, "Actor #{uri} has no 'preferredUsername', which is a requirement for Mastodon compatibility" if @json['preferredUsername'].blank?
|
||||
raise Error, "Actor #{uri} has neither 'preferredUsername' nor `webfinger`, which is a requirement for Mastodon compatibility" if @json['preferredUsername'].blank? && @json['webfinger'].blank?
|
||||
|
||||
@uri = @json['id']
|
||||
@username = @json['preferredUsername']
|
||||
@domain = Addressable::URI.parse(@uri).normalized_host
|
||||
@uri = @json['id']
|
||||
|
||||
# FEP-2c59 defines a `webfinger` attribute that makes things more explicit and spares an extra request in some cases.
|
||||
# It supersedes `preferredUsername`.
|
||||
if @json['webfinger'].present? && @json['webfinger'].is_a?(String)
|
||||
@username, @domain = split_acct(@json['webfinger'])
|
||||
Rails.logger.debug { "Actor #{uri} has an invalid `webfinger` value, falling back to `preferredUsername`" }
|
||||
end
|
||||
|
||||
if @username.blank? || @domain.blank?
|
||||
raise "Actor #{uri} has no `preferredUsername`, and either a bogus or missing `webfinger`, which is a requirement for Mastodon compatibility" if @json['preferredUsername'].blank?
|
||||
|
||||
@username = @json['preferredUsername']
|
||||
@domain = Addressable::URI.parse(@uri).normalized_host
|
||||
end
|
||||
|
||||
check_webfinger! unless only_key
|
||||
|
||||
|
||||
@ -17,20 +17,15 @@ class ActivityPub::ProcessFeaturedCollectionService
|
||||
Collection.transaction do
|
||||
@collection = @account.collections.find_or_initialize_by(uri: @json['id'])
|
||||
|
||||
@collection.update!(
|
||||
local: false,
|
||||
name: (@json['name'] || '')[0, Collection::NAME_LENGTH_HARD_LIMIT],
|
||||
description_html: truncated_summary,
|
||||
language:,
|
||||
sensitive: @json['sensitive'],
|
||||
discoverable: @json['discoverable'],
|
||||
original_number_of_items: @json['totalItems'] || 0,
|
||||
tag_name: @json.dig('topic', 'name')
|
||||
)
|
||||
@collection.update!(collection_attributes)
|
||||
|
||||
process_items!
|
||||
@items = (@json['orderedItems'] || [])[0, ITEMS_LIMIT]
|
||||
item_uris = @items.filter_map { |i| value_or_id(i) }
|
||||
@collection.collection_items.where.not(uri: item_uris).delete_all
|
||||
end
|
||||
|
||||
process_items!
|
||||
|
||||
@collection
|
||||
end
|
||||
end
|
||||
@ -46,14 +41,22 @@ class ActivityPub::ProcessFeaturedCollectionService
|
||||
@json['summaryMap']&.keys&.first
|
||||
end
|
||||
|
||||
def collection_attributes
|
||||
{
|
||||
local: false,
|
||||
name: (@json['name'] || '')[0, Collection::NAME_LENGTH_HARD_LIMIT],
|
||||
description_html: truncated_summary,
|
||||
language:,
|
||||
sensitive: @json['sensitive'],
|
||||
discoverable: @json['discoverable'],
|
||||
original_number_of_items: @json['totalItems'] || 0,
|
||||
tag_name: @json.dig('topic', 'name'),
|
||||
}
|
||||
end
|
||||
|
||||
def process_items!
|
||||
uris = []
|
||||
items = @json['orderedItems'] || []
|
||||
items.take(ITEMS_LIMIT).each_with_index do |item_json, index|
|
||||
uris << value_or_id(item_json)
|
||||
@items.each_with_index do |item_json, index|
|
||||
ActivityPub::ProcessFeaturedItemWorker.perform_async(@collection.id, item_json, index + 1, @request_id)
|
||||
end
|
||||
uris.compact!
|
||||
@collection.collection_items.where.not(uri: uris).delete_all
|
||||
end
|
||||
end
|
||||
|
||||
@ -5,6 +5,15 @@
|
||||
%h1= t('settings.profile')
|
||||
= render partial: 'settings/shared/profile_navigation'
|
||||
|
||||
- if Mastodon::Feature.profile_redesign_enabled?
|
||||
%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
|
||||
|
||||
|
||||
14
config/initializers/json_ld_webfinger.rb
Normal file
14
config/initializers/json_ld_webfinger.rb
Normal file
@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'json/ld'
|
||||
|
||||
class JSON::LD::Context
|
||||
add_preloaded("http://purl.archive.org/socialweb/webfinger") do
|
||||
new(processingMode: "json-ld-1.0", term_definitions: {
|
||||
"webfinger" => TermDefinition.new("webfinger", id: "https://purl.archive.org/socialweb/webfinger#webfinger", type_mapping: "http://www.w3.org/2001/XMLSchema#string"),
|
||||
"wf" => TermDefinition.new("wf", id: "https://purl.archive.org/socialweb/webfinger#", simple: true, prefix: true),
|
||||
"xsd" => TermDefinition.new("xsd", id: "http://www.w3.org/2001/XMLSchema#", simple: true, prefix: true)
|
||||
})
|
||||
end
|
||||
alias_preloaded("https://purl.archive.org/socialweb/webfinger", "http://purl.archive.org/socialweb/webfinger")
|
||||
end
|
||||
@ -1761,15 +1761,6 @@ ar:
|
||||
failed_sign_in_html: فشل محاولة تسجيل الدخول مع %{method} من %{ip} (%{browser})
|
||||
successful_sign_in_html: تم تسجيل الدخول بنجاح مع %{method} من %{ip} (%{browser})
|
||||
title: تاريخ المصادقة
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: إرسال إشعارات التفضيلات بالبريد الإلكتروني
|
||||
follow: إرسال إشعارات المتابعة بالبريد الإلكتروني
|
||||
follow_request: إرسال إشعارات الطلبات بالبريد الإلكتروني
|
||||
mention: إشعارات رسائل البريد عندما يَذكُرك أحدهم
|
||||
reblog: رسائل البريد الخاصة بالمنشورات المعاد نشرها
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: ليس بالإمكان إرفاق فيديو في منشور يحتوي مسبقا على صور
|
||||
|
||||
@ -211,11 +211,6 @@ az:
|
||||
otp: iki faktorlu kimlik doğrulama tətbiqi
|
||||
password: parol
|
||||
description_html: Əgər tanımadığınız bir fəaliyyəti görsəniz, parolunuzu dəyişdirməyi və iki faktorlu kimlik doğrulamanı fəallaşdırmağı düşünə bilərsiniz
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
reblog: təkrar paylaşma bildirişi e-poçtları
|
||||
migrations:
|
||||
incoming_migrations: Fərqli bir hesabdan daşı
|
||||
incoming_migrations_html: Başqa bir hesabdan bu hesaba daşımaq üçün əvvəlcə <a href="%{path}">bir hesab alias-ı yaratmalısınız</a>.
|
||||
|
||||
@ -1734,15 +1734,6 @@ be:
|
||||
failed_sign_in_html: Няўдалая спроба ўваходу праз %{method} з %{ip} (%{browser})
|
||||
successful_sign_in_html: Паспяховы ўваход праз %{method} з %{ip} (%{browser})
|
||||
title: Гісторыя ўваходаў
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: апавяшчэнні на пошту пра упадабанае
|
||||
follow: апавяшчэнні на пошту пра падпіскі
|
||||
follow_request: апавяшчэнні на пошту пра запыты на падпіску
|
||||
mention: апавяшчэнні на пошту пра згадванні
|
||||
reblog: апавяшчэнні на пошту пра пашырэнні
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Немагчыма далучыць відэа да допісу, які ўжо змяшчае выявы
|
||||
|
||||
@ -1598,15 +1598,6 @@ bg:
|
||||
failed_sign_in_html: Неуспешен опит за влизане с %{method} от %{ip} (%{browser})
|
||||
successful_sign_in_html: Успешно влизане с %{method} от %{ip} (%{browser})
|
||||
title: Историята на удостоверяване
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: е-писма за известия с любими
|
||||
follow: е-писма с известия за последване
|
||||
follow_request: е-писма със заявки за следване
|
||||
mention: е-писма с известия за споменаване
|
||||
reblog: е-писма с известия за подсилване
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения
|
||||
|
||||
@ -1613,15 +1613,6 @@ ca:
|
||||
failed_sign_in_html: Intent d'inici de sessió errat amb %{method} des de %{ip} (%{browser})
|
||||
successful_sign_in_html: Inici de sessió exitós amb %{method} des de %{ip} (%{browser})
|
||||
title: Historial d'autenticació
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: notificacions dels favorits per correu electrònic
|
||||
follow: notificacions dels seguiments per correu electrònic
|
||||
follow_request: correus electrònics de peticions de seguiment
|
||||
mention: correus electrònics de notificacions de mencions
|
||||
reblog: correus electrònics de notificacions d'impulsos
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: No es pot adjuntar un vídeo a una publicació que ja contingui imatges
|
||||
|
||||
@ -1726,15 +1726,6 @@ cs:
|
||||
failed_sign_in_html: Neúspěšný pokus o přihlášení %{method} z %{ip} (%{browser})
|
||||
successful_sign_in_html: Úspěšné přihlášení %{method} z %{ip} (%{browser})
|
||||
title: Historie přihlášení
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: e-mailové oznámení při oblíbení
|
||||
follow: e-mailové oznámení při sledování
|
||||
follow_request: e-mail při žádost o sledování
|
||||
mention: e-mailové oznámení při zmínění
|
||||
reblog: e-mailové oznámení při boostu
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: K příspěvku, který již obsahuje obrázky, nelze připojit video
|
||||
|
||||
@ -1814,15 +1814,6 @@ cy:
|
||||
failed_sign_in_html: Ymgais mewngofnodi wedi methu gyda %{method} gan %{ip} (%{browser})
|
||||
successful_sign_in_html: Mewngofnodi llwyddiannus gyda %{method} o %{ip} (%{browser})
|
||||
title: Hanes dilysu
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: e-bost hysbysu hoffi
|
||||
follow: e-byst hysbysu dilyn
|
||||
follow_request: e-byst ceisiadau dilyn
|
||||
mention: e-byst hysbysu crybwylliadau
|
||||
reblog: e-byst hysbysiadau hybu
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Methu atodi fideo i bostiad sydd eisoes yn cynnwys delweddau
|
||||
|
||||
@ -762,6 +762,7 @@ da:
|
||||
categories:
|
||||
administration: Administration
|
||||
devops: DevOps
|
||||
email: E-mail
|
||||
invites: Invitationer
|
||||
moderation: Moderering
|
||||
special: Speciel
|
||||
@ -790,6 +791,8 @@ da:
|
||||
manage_blocks_description: Tillader brugere at blokere e-mailudbydere og IP-adresser
|
||||
manage_custom_emojis: Administrere tilpassede emojier
|
||||
manage_custom_emojis_description: Tillader brugere at administrere tilpassede emojier på serveren
|
||||
manage_email_subscriptions: Administrer e-mail-abonnementer
|
||||
manage_email_subscriptions_description: Giv brugere mulighed for at abonnere på andre brugere med denne tilladelse via e-mail
|
||||
manage_federation: Administrere federation
|
||||
manage_federation_description: Tillader brugere at blokere eller tillade federation med andre domæner og styre leverbarhed
|
||||
manage_invites: Administrere invitationer
|
||||
@ -1418,6 +1421,38 @@ da:
|
||||
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
|
||||
email_subscription_mailer:
|
||||
confirmation:
|
||||
action: Bekræft e-mailadresse
|
||||
instructions_to_confirm: Bekræft, at du gerne vil modtage e-mails fra %{name} (@%{acct}), når vedkommende offentliggør nye indlæg.
|
||||
instructions_to_ignore: Hvis du ikke ved, hvorfor du har modtaget denne e-mail, kan du slette den. Du bliver ikke tilmeldt, hvis du ikke klikker på linket ovenfor.
|
||||
subject: Bekræft din e-mailadresse
|
||||
title: Modtag e-mail opdateringer fra %{name}?
|
||||
notification:
|
||||
create_account: Opret en Mastodon-konto
|
||||
footer:
|
||||
privacy_html: E-mails sendes fra %{domain}, en server drevet af Mastodon. For at få mere at vide om, hvordan denne server behandler dine personoplysninger, kan du læse <a href="%{privacy_policy_path}">privatlivspolitikken</a>.
|
||||
reason_for_email_html: Du modtager denne e-mail, fordi du har valgt at modtage e-mailopdateringer fra %{name}. Ønsker du ikke at modtage disse e-mails? <a href="%{unsubscribe_path}">Afmeld</a>
|
||||
interact_with_this_post:
|
||||
one: Interagér med dette indlæg, og find flere lignende indlæg.
|
||||
other: Interagér med disse indlæg, og find flere.
|
||||
subject:
|
||||
one: 'Nyt indlæg: "%{excerpt}"'
|
||||
other: Nye indlæg fra %{name}
|
||||
title:
|
||||
one: 'Nyt indlæg: "%{excerpt}"'
|
||||
other: Nye indlæg fra %{name}
|
||||
email_subscriptions:
|
||||
active: Aktive
|
||||
confirmations:
|
||||
show:
|
||||
changed_your_mind: Har du skiftet mening?
|
||||
success_html: Du vil nu begynde at modtage e-mails, når %{name} offentliggør nye indlæg. Tilføj %{sender} til dine kontakter, så disse indlæg ikke ender i din spam-mappe.
|
||||
title: Du er tilmeldt
|
||||
unsubscribe: Afmeld
|
||||
inactive: Inaktive
|
||||
status: Status
|
||||
subscribers: Abonnenter
|
||||
emoji_styles:
|
||||
auto: Auto
|
||||
native: Indbygget
|
||||
@ -1652,15 +1687,6 @@ da:
|
||||
failed_sign_in_html: Mislykket indlogning med %{method} fra %{ip} (%{browser})
|
||||
successful_sign_in_html: Gennemført indlogning med %{method} fra %{ip} (%{browser})
|
||||
title: Godkendelseshistorik
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: e-mailnotifikationer om favoritmarkeringer
|
||||
follow: e-mailnotifikationer om nye følgere
|
||||
follow_request: e-mailnotifikationer om følgeanmodninger
|
||||
mention: e-mailnotifikationer om omtaler
|
||||
reblog: e-mailnotifikationer om fremhævelser
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: En video kan ikke vedhæftes et indlæg med billedindhold
|
||||
@ -1798,6 +1824,8 @@ da:
|
||||
posting_defaults: Standarder for indlæg
|
||||
public_timelines: Offentlige tidslinjer
|
||||
privacy:
|
||||
email_subscriptions: Send indlæg via e-mail
|
||||
email_subscriptions_hint_html: Tilføj en tilmeldingsformular til din profil, som vises for brugere, der ikke er logget ind. Når besøgende indtaster deres e-mailadresse og tilmelder sig, sender Mastodon e-mailopdateringer om dine offentlige indlæg.
|
||||
hint_html: "<strong>Tilpas hvordan din profil og dine indlæg kan findes.</strong> En række funktioner i Mastodon kan hjælpe dig med at nå ud til et bredere publikum, hvis du aktiverer dem. Tjek indstillingerne herunder for at sikre, at de passer til dit brugsscenarie."
|
||||
privacy: Privatliv
|
||||
privacy_hint_html: Styr, hvor meget du vil afsløre til gavn for andre. Folk opdager interessante profiler og apps ved at gennemse andres følgere og se, hvilke apps de sender fra, men du foretrækker måske at holde det skjult.
|
||||
@ -2061,6 +2089,28 @@ da:
|
||||
resume_app_authorization: Genoptag godkendelse af applikation
|
||||
role_requirement: "%{domain} kræver, at du konfigurerer tofaktorgodkendelse, før du kan bruge Mastodon."
|
||||
webauthn: Sikkerhedsnøgler
|
||||
unsubscriptions:
|
||||
create:
|
||||
action: Gå til serverens hjemmeside
|
||||
email_subscription:
|
||||
confirmation_html: Du vil ikke længere modtage e-mails fra %{name}.
|
||||
title: Du er afmeldt
|
||||
user:
|
||||
confirmation_html: Du vil ikke længere modtage %{type} fra Mastodon på %{domain}.
|
||||
notification_emails:
|
||||
favourite: e-mail-notifikationer om favoritmarkeringer
|
||||
follow: e-mail-notifikationer om nye følgere
|
||||
follow_request: e-mail-notifikationer om følgeanmodninger
|
||||
mention: e-mail-notifikationer om omtaler
|
||||
reblog: e-mail-notifikationer om fremhævelser
|
||||
show:
|
||||
action: Afmeld
|
||||
email_subscription:
|
||||
confirmation_html: Du vil ikke længere modtage e-mails, når denne konto offentliggør nye indlæg.
|
||||
title: Afmeld fra %{name}?
|
||||
user:
|
||||
confirmation_html: Du vil ikke længere modtage %{type} fra Mastodon på %{domain}.
|
||||
title: Afmeld fra %{type}?
|
||||
user_mailer:
|
||||
announcement_published:
|
||||
description: 'Administratorerne på %{domain} udsender en annoncering:'
|
||||
|
||||
@ -762,6 +762,7 @@ de:
|
||||
categories:
|
||||
administration: Administration
|
||||
devops: DevOps
|
||||
email: E-Mail
|
||||
invites: Einladungen
|
||||
moderation: Moderation
|
||||
special: Besonderheit
|
||||
@ -790,6 +791,7 @@ de:
|
||||
manage_blocks_description: E-Mail-Provider und IP-Adressen sperren
|
||||
manage_custom_emojis: Emojis
|
||||
manage_custom_emojis_description: Spezielle Emojis dieses Servers verwalten
|
||||
manage_email_subscriptions: E-Mail-Benachrichtigungen verwalten
|
||||
manage_federation: Föderation
|
||||
manage_federation_description: Domains anderer Mastodon-Server sperren/zulassen – und Zustellbarkeit kontrollieren
|
||||
manage_invites: Einladungen
|
||||
@ -1418,6 +1420,28 @@ de:
|
||||
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
|
||||
email_subscription_mailer:
|
||||
confirmation:
|
||||
action: E-Mail-Adresse bestätigen
|
||||
subject: Bestätige deine E-Mail-Adresse
|
||||
title: E-Mail-Benachrichtigungen von %{name} erhalten?
|
||||
notification:
|
||||
create_account: Mastodon-Konto erstellen
|
||||
subject:
|
||||
one: 'Neuer Beitrag: „%{excerpt}“'
|
||||
other: Neue Beiträge von %{name}
|
||||
title:
|
||||
one: 'Neuer Beitrag: „%{excerpt}“'
|
||||
other: Neue Beiträge von %{name}
|
||||
email_subscriptions:
|
||||
active: Aktiviert
|
||||
confirmations:
|
||||
show:
|
||||
changed_your_mind: Meinung geändert?
|
||||
unsubscribe: Abbestellen
|
||||
inactive: Deaktiviert
|
||||
status: Status
|
||||
subscribers: Abonnent*innen
|
||||
emoji_styles:
|
||||
auto: Automatisch
|
||||
native: Nativ
|
||||
@ -1652,15 +1676,6 @@ de:
|
||||
failed_sign_in_html: Fehlgeschlagener Anmeldeversuch mit %{method} von %{ip} (%{browser})
|
||||
successful_sign_in_html: Erfolgreiches Anmelden mit %{method} von %{ip} (%{browser})
|
||||
title: Anmeldeverlauf
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: E-Mail-Benachrichtigungen bei Favoriten
|
||||
follow: E-Mail-Benachrichtigungen bei Followern
|
||||
follow_request: E-Mail-Benachrichtigungen bei Follower-Anfragen
|
||||
mention: E-Mail-Benachrichtigungen bei Erwähnungen
|
||||
reblog: E-Mail-Benachrichtigungen bei geteilten Beiträgen
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Es kann kein Video an einen Beitrag angehängt werden, der bereits Bilder enthält
|
||||
@ -1798,6 +1813,7 @@ de:
|
||||
posting_defaults: Standardeinstellungen für Beiträge
|
||||
public_timelines: Öffentliche Timelines
|
||||
privacy:
|
||||
email_subscriptions: Sende Beiträge per E-Mail
|
||||
hint_html: "<strong>Bestimme selbst, wie dein Profil und deine Beiträge gefunden werden sollen.</strong> Zahlreiche Mastodon-Funktionen können dir für eine größere Reichweite behilflich sein. Nimm dir einen Moment Zeit, um diese Einstellungen zu überprüfen."
|
||||
privacy: Datenschutz
|
||||
privacy_hint_html: Bestimme, wie viele Informationen du für andere preisgeben möchtest. Viele Menschen entdecken interessante Profile und coole Apps, indem sie die Follower anderer Profile durchstöbern und die Apps sehen, über die Beiträge veröffentlicht wurden – möglicherweise möchtest du diese Informationen ausblenden.
|
||||
@ -2061,6 +2077,9 @@ de:
|
||||
resume_app_authorization: Autorisierung der App fortsetzen
|
||||
role_requirement: "%{domain} verlangt das Einrichten einer Zwei-Faktor-Authentisierung, bevor du Mastodon verwenden kannst."
|
||||
webauthn: Sicherheitsschlüssel
|
||||
unsubscriptions:
|
||||
show:
|
||||
action: Abbestellen
|
||||
user_mailer:
|
||||
announcement_published:
|
||||
description: 'Ankündigung der Administrator*innen von %{domain}:'
|
||||
|
||||
@ -762,6 +762,7 @@ el:
|
||||
categories:
|
||||
administration: Διαχείριση
|
||||
devops: DevOps
|
||||
email: Email
|
||||
invites: Προσκλήσεις
|
||||
moderation: Συντονισμός
|
||||
special: Ειδικός
|
||||
@ -790,6 +791,8 @@ el:
|
||||
manage_blocks_description: Επιτρέπει στους χρήστες να αποκλείουν παρόχους email και διευθύνσεις IP
|
||||
manage_custom_emojis: Διαχείριση Προσαρμοσμένων Emojis
|
||||
manage_custom_emojis_description: Επιτρέπει στους χρήστες να διαχειρίζονται προσαρμοσμένα emojis στον διακομιστή
|
||||
manage_email_subscriptions: Διαχείριση Συνδρομών Email
|
||||
manage_email_subscriptions_description: Να επιτρέπεται στους χρήστες να εγγράφονται σε χρήστες με αυτήν την άδεια μέσω ηλεκτρονικού ταχυδρομείου
|
||||
manage_federation: Διαχείριση Ομοσπονδίας
|
||||
manage_federation_description: Επιτρέπει στους χρήστες να αποκλείουν ή να επιτρέπουν τις συναλλαγές με άλλους τομείς και να ελέγχουν την παράδοση
|
||||
manage_invites: Διαχείριση Προσκλήσεων
|
||||
@ -1418,6 +1421,38 @@ el:
|
||||
basic_information: Βασικές πληροφορίες
|
||||
hint_html: "<strong>Προσάρμοσε τί βλέπουν άτομα στο δημόσιο προφίλ σου και δίπλα στις αναρτήσεις σου.</strong> Είναι πιο πιθανό άλλα άτομα να σε ακολουθήσουν πίσω και να αλληλεπιδράσουν μαζί σου αν έχεις ολοκληρωμένο προφίλ και εικόνα προφίλ."
|
||||
other: Άλλο
|
||||
email_subscription_mailer:
|
||||
confirmation:
|
||||
action: Επιβεβαιώστε τη διεύθυνση email
|
||||
instructions_to_confirm: Επιβεβαιώστε ότι θα θέλατε να λαμβάνετε email από %{name} (@%{acct}) όταν δημοσιεύει νέες αναρτήσεις.
|
||||
instructions_to_ignore: Αν δεν είστε σίγουροι γιατί λάβατε αυτό το email, μπορείτε να το διαγράψετε. Δεν θα εγγραφείτε αν δεν κάνετε κλικ στον παραπάνω σύνδεσμο.
|
||||
subject: Επιβεβαιώστε τη διεύθυνση email σας
|
||||
title: Να λαμβάνετε ενημερώσεις μέσω email από %{name};
|
||||
notification:
|
||||
create_account: Δημιουργήστε έναν λογαριασμό Mastodon
|
||||
footer:
|
||||
privacy_html: Τα email στέλνονται από το %{domain}, έναν διακομιστή που βασίζεται στο Mastodon. Για να καταλάβετε πώς ο διακομιστής αυτός επεξεργάζεται τα προσωπικά σας δεδομένα, ανατρέξτε στην <a href="%{privacy_policy_path}">Πολιτική Απορρήτου</a>.
|
||||
reason_for_email_html: Λαμβάνετε αυτό το email επειδή έχετε κάνει εγγραφή για ενημερώσεις από %{name}. Δεν θέλετε να λαμβάνετε τέτοια email; <a href="%{unsubscribe_path}">Κατάργηση συνδρομής</a>
|
||||
interact_with_this_post:
|
||||
one: Αλληλεπιδράστε με αυτήν την ανάρτηση και ανακαλύψτε περισσότερες σαν αυτήν.
|
||||
other: Αλληλεπιδράστε με αυτές τις αναρτήσεις και ανακαλύψτε περισσότερες.
|
||||
subject:
|
||||
one: 'Νέα ανάρτηση: "%{excerpt}"'
|
||||
other: Νέες αναρτήσεις από %{name}
|
||||
title:
|
||||
one: 'Νέα ανάρτηση: "%{excerpt}"'
|
||||
other: Νέες αναρτήσεις από %{name}
|
||||
email_subscriptions:
|
||||
active: Ενεργή
|
||||
confirmations:
|
||||
show:
|
||||
changed_your_mind: Αλλάξατε γνώμη;
|
||||
success_html: Τώρα θα αρχίσετε να λαμβάνετε email όταν ο χρήστης %{name} δημοσιεύει νέες αναρτήσεις. Προσθέστε το %{sender} στις επαφές σας, έτσι ώστε αυτές οι αναρτήσεις να μην καταλήγουν στο φάκελο Ανεπιθύμητα.
|
||||
title: Έχετε εγγραφεί
|
||||
unsubscribe: Κατάργηση συνδρομής
|
||||
inactive: Ανενεργή
|
||||
status: Κατάσταση
|
||||
subscribers: Συνδρομητές
|
||||
emoji_styles:
|
||||
auto: Αυτόματο
|
||||
native: Εγγενές
|
||||
@ -1652,15 +1687,6 @@ el:
|
||||
failed_sign_in_html: Αποτυχημένη προσπάθεια σύνδεσης με %{method} από %{ip} (%{browser})
|
||||
successful_sign_in_html: Επιτυχής σύνδεση με %{method} από %{ip} (%{browser})
|
||||
title: Ιστορικό ελέγχου ταυτότητας
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: ειδοποιήσεις email για αγαπημένα
|
||||
follow: ειδοποιήσεις email για ακολουθήσεις
|
||||
follow_request: email για αιτήματα ακολούθησης
|
||||
mention: ειδοποιήσεις email για επισημάνσεις
|
||||
reblog: ειδοποιήσεις email για ενίσχυση
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Δεν γίνεται να προσθέσεις βίντεο σε ανάρτηση που ήδη περιέχει εικόνες
|
||||
@ -1798,6 +1824,8 @@ el:
|
||||
posting_defaults: Προεπιλογές ανάρτησης
|
||||
public_timelines: Δημόσιες ροές
|
||||
privacy:
|
||||
email_subscriptions: Αποστολή αναρτήσεων μέσω email
|
||||
email_subscriptions_hint_html: Προσθέστε μια φόρμα εγγραφής μέσω email στο προφίλ σας που εμφανίζεται για αποσυνδεδεμένους χρήστες. Όταν οι επισκέπτες εισαγάγουν τη διεύθυνση email τους και επιλέξουν εγγραφή, το Mastodon θα στέλνει ενημερώσεις email για τις δημόσιες αναρτήσεις σας.
|
||||
hint_html: "<strong>Προσάρμοσε πώς θες το προφίλ και οι αναρτήσεις σου να ανακαλύπτονται.</strong>. Μια ποικιλία δυνατοτήτων στο Mastodon μπορούν να σε βοηθήσουν να απευθυνθείς σε μεγαλύτερο κοινό όταν ενεργοποιηθούν. Αφιέρωσε μερικά λεπτά για να εξετάσεις τις ρυθμίσεις και να σιγουρευτείς ότι σου ταιριάζουν."
|
||||
privacy: Απόρρητο
|
||||
privacy_hint_html: "'Έλεγξε πόσο θες να αποκαλύπτεις προς όφελος των άλλων. Οι άνθρωποι ανακαλύπτουν ενδιαφέροντα προφίλ και εφαρμογές με την περιήγηση των ακολούθων άλλων ατόμων και βλέποντας από ποιες εφαρμογές δημοσιεύουν, αλλά μπορεί να προτιμάς να το κρατάς κρυφό."
|
||||
@ -2061,6 +2089,28 @@ el:
|
||||
resume_app_authorization: Συνέχιση εξουσιοδότησης εφαρμογής
|
||||
role_requirement: Το %{domain} απαιτεί να ρυθμίσετε τον έλεγχο ταυτότητας δύο παραγόντων πριν χρησιμοποιήσετε το Mastodon.
|
||||
webauthn: Κλειδιά ασφαλείας
|
||||
unsubscriptions:
|
||||
create:
|
||||
action: Μετάβαση στην αρχική σελίδα του διακομιστή
|
||||
email_subscription:
|
||||
confirmation_html: Δεν θα λαμβάνετε πλέον email από %{name}.
|
||||
title: Έχετε καταργήσει τη συνδρομή
|
||||
user:
|
||||
confirmation_html: Δεν θα λαμβάνετε πλέον %{type} από το Mastodon στο %{domain}.
|
||||
notification_emails:
|
||||
favourite: ειδοποιήσεις email για αγαπημένα
|
||||
follow: ειδοποιήσεις email για ακολουθήσεις
|
||||
follow_request: email για αιτήματα ακολούθησης
|
||||
mention: ειδοποιήσεις email για επισημάνσεις
|
||||
reblog: ειδοποιήσεις email για ενισχύσεις
|
||||
show:
|
||||
action: Κατάργηση συνδρομής
|
||||
email_subscription:
|
||||
confirmation_html: Θα σταματήσετε να λαμβάνετε email όταν αυτός ο λογαριασμός δημοσιεύει νέες αναρτήσεις.
|
||||
title: Κατάργηση συνδρομής από %{name};
|
||||
user:
|
||||
confirmation_html: Θα σταματήσετε να λαμβάνετε %{type} από το Mastodon στο %{domain}.
|
||||
title: Κατάργηση συνδρομής από %{type};
|
||||
user_mailer:
|
||||
announcement_published:
|
||||
description: 'Οι διαχειριστές του %{domain} κάνουν μια ανακοίνωση:'
|
||||
|
||||
@ -1648,15 +1648,6 @@ en-GB:
|
||||
failed_sign_in_html: Failed login attempt with %{method} from %{ip} (%{browser})
|
||||
successful_sign_in_html: Successful login with %{method} from %{ip} (%{browser})
|
||||
title: Authentication history
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: favourite notification emails
|
||||
follow: follow notification emails
|
||||
follow_request: follow request emails
|
||||
mention: mention notification emails
|
||||
reblog: boost notification emails
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Cannot attach a video to a post that already contains images
|
||||
|
||||
@ -1421,6 +1421,9 @@ en:
|
||||
basic_information: Basic information
|
||||
hint_html: "<strong>Customize what people see on your public profile and next to your posts.</strong> Other people are more likely to follow you back and interact with you when you have a filled out profile and a profile picture."
|
||||
other: Other
|
||||
redesign_body: Profile editing can now be accessed directly from the profile page.
|
||||
redesign_button: Go there
|
||||
redesign_title: There’s a new profile editing experience
|
||||
email_subscription_mailer:
|
||||
confirmation:
|
||||
action: Confirm email address
|
||||
|
||||
@ -1589,15 +1589,6 @@ eo:
|
||||
failed_sign_in_html: Malsukcese ensalutprovo per %{method} de %{ip} (%{browser})
|
||||
successful_sign_in_html: Sukcese ensaluto per %{method} de %{ip} (%{browser})
|
||||
title: Aŭtentiga historio
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: sciigoj retpoŝtaj de ŝatataj
|
||||
follow: sciigoj retpoŝtaj de sekvoj
|
||||
follow_request: retpoŝtajn petoj de sekvado
|
||||
mention: sciigoj retpoŝtaj de mencioj
|
||||
reblog: sciigoj retpoŝtaj de diskonigoj
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Aldoni videon al mesaĝo, kiu jam havas bildojn ne eblas
|
||||
|
||||
@ -762,6 +762,7 @@ es-AR:
|
||||
categories:
|
||||
administration: Administración
|
||||
devops: Operadores de desarrollo
|
||||
email: Correo electrónico
|
||||
invites: Invitaciones
|
||||
moderation: Moderación
|
||||
special: Especial
|
||||
@ -790,6 +791,8 @@ es-AR:
|
||||
manage_blocks_description: Permite a los usuarios bloquear proveedores de correo electrónico y direcciones IP
|
||||
manage_custom_emojis: Administrar emojis personalizados
|
||||
manage_custom_emojis_description: Permite a los usuarios administrar emojis personalizados en el servidor
|
||||
manage_email_subscriptions: Administrar suscripciones de correo electrónico
|
||||
manage_email_subscriptions_description: Permitir a los usuarios suscribirse a usuarios con este permiso por correo electrónico
|
||||
manage_federation: Administrar Federación
|
||||
manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios y controlar las entregas
|
||||
manage_invites: Administrar invitaciones
|
||||
@ -1418,6 +1421,38 @@ es-AR:
|
||||
basic_information: Información básica
|
||||
hint_html: "<strong>Personalizá lo que la gente ve en tu perfil público y junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen con vos cuando tengas un perfil completo y una foto de perfil."
|
||||
other: Otros
|
||||
email_subscription_mailer:
|
||||
confirmation:
|
||||
action: Confirmar dirección de correo electrónico
|
||||
instructions_to_confirm: Confirmá que querés recibir correos electrónicos de %{name} (@%{acct}) cuando publique algo nuevo.
|
||||
instructions_to_ignore: Si no estás seguro de por qué recibiste este correo electrónico, podés eliminarlo. Si no hacés clic en el enlace de arriba, no te vas a suscribir.
|
||||
subject: Confirmá tu dirección de correo electrónico
|
||||
title: "¿Obtener actualizaciones por correo electrónico de %{name}?"
|
||||
notification:
|
||||
create_account: Crear una cuenta de Mastodon
|
||||
footer:
|
||||
privacy_html: Los correos electrónicos son enviados desde %{domain}, un servidor de Mastodon. Para conocer cómo este servidor procesa tus datos personales, consultá la <a href="%{privacy_policy_path}">Política de Privacidad</a>.
|
||||
reason_for_email_html: Estás recibiendo este correo porque optaste recibir actualizaciones por correo electrónico de %{name}. ¿No querés recibir estos correos? <a href="%{unsubscribe_path}">Desuscribite</a>
|
||||
interact_with_this_post:
|
||||
one: Interactuá con esta publicación y descubrí otras similares.
|
||||
other: Interactuá con estas publicaciones y descubrí otras similares.
|
||||
subject:
|
||||
one: 'Nueva publicación: «%{excerpt}»'
|
||||
other: Nuevos publicaciones de %{name}
|
||||
title:
|
||||
one: 'Nueva publicación: «%{excerpt}»'
|
||||
other: Nuevos mensajes de %{name}
|
||||
email_subscriptions:
|
||||
active: Activa
|
||||
confirmations:
|
||||
show:
|
||||
changed_your_mind: "¿Cambiaste de opinión?"
|
||||
success_html: Ahora vas a empezar a recibir correos electrónicos cuando %{name} publique algo nuevo. Agregá a %{sender} a tus contactos para que estas publicaciones no terminen en tu carpeta de spam o correo no deseado.
|
||||
title: Te suscribiste
|
||||
unsubscribe: Desuscribirse
|
||||
inactive: Inactiva
|
||||
status: Estado
|
||||
subscribers: Suscriptores
|
||||
emoji_styles:
|
||||
auto: Automático
|
||||
native: Nativo
|
||||
@ -1652,15 +1687,6 @@ es-AR:
|
||||
failed_sign_in_html: Intento de inicio de sesión fallido con %{method} desde %{ip} (%{browser})
|
||||
successful_sign_in_html: Inicio de sesión exitoso con %{method} desde %{ip} (%{browser})
|
||||
title: Historial de autenticación
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: notificaciones de favoritos por correo electrónico
|
||||
follow: notificaciones de seguidores por correo electrónico
|
||||
follow_request: notificaciones de solicitudes de seguimiento por correo electrónico
|
||||
mention: notificaciones de menciones por correo electrónico
|
||||
reblog: notificaciones de adhesiones por correo electrónico
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: No se puede adjuntar un video a un mensaje que ya contenga imágenes
|
||||
@ -1798,6 +1824,8 @@ es-AR:
|
||||
posting_defaults: Configuración predeterminada de mensajes
|
||||
public_timelines: Líneas temporales públicas
|
||||
privacy:
|
||||
email_subscriptions: Enviar mensajes por correo electrónico
|
||||
email_subscriptions_hint_html: Agregá un formulario de registro por correo electrónico a tu perfil, que aparece para los usuarios que no iniciaron sesión. Cuando los visitantes ingresen su dirección de correo electrónico y opten por ello, Mastodon enviará actualizaciones por correo electrónico para tus mensajes públicos.
|
||||
hint_html: "<strong>Personalizá cómo querés que sean encontrados tu perfil y tus mensajes.</strong> Una variedad de funciones en Mastodon pueden ayudarte a alcanzar una mayor audiencia al estar activada. Tomate un momento para revisar esta configuración para asegurarte de que se ajusta a tu caso."
|
||||
privacy: Privacidad
|
||||
privacy_hint_html: Controlá cuánto querés revelar a los demás. La gente descubre perfiles interesantes y aplicaciones copadas explorando los seguimientos de otras personas y viendo qué aplicaciones usan, pero puede que prefieras mantener esto oculto.
|
||||
@ -2061,6 +2089,28 @@ es-AR:
|
||||
resume_app_authorization: Reanudar autorización de aplicación
|
||||
role_requirement: "%{domain} requiere que configurés la autenticación de dos factores antes de poder usar Mastodon."
|
||||
webauthn: Llaves de seguridad
|
||||
unsubscriptions:
|
||||
create:
|
||||
action: Ir a la página de inicio del servidor
|
||||
email_subscription:
|
||||
confirmation_html: Ya no recibirás correos electrónicos de %{name}.
|
||||
title: Te desuscribiste
|
||||
user:
|
||||
confirmation_html: Ya no recibirás %{type} de Mastodon en %{domain}.
|
||||
notification_emails:
|
||||
favourite: correos de notificación de favoritos
|
||||
follow: correos de notificación de nuevos seguidores
|
||||
follow_request: correos de notificación de solicitudes de seguimiento
|
||||
mention: correos de notificación de menciones
|
||||
reblog: correos de notificación de adhesiones
|
||||
show:
|
||||
action: Desuscribirse
|
||||
email_subscription:
|
||||
confirmation_html: Vas a dejar de recibir correos cuando esta cuenta publique algo nuevo.
|
||||
title: "¿Desuscribirse de %{name}?"
|
||||
user:
|
||||
confirmation_html: Vas a dejar de recibir %{type} de Mastodon en %{domain}.
|
||||
title: "¿Desuscribirse de %{type}?"
|
||||
user_mailer:
|
||||
announcement_published:
|
||||
description: 'Los administradores de %{domain} están haciendo un anuncio:'
|
||||
|
||||
@ -762,6 +762,7 @@ es-MX:
|
||||
categories:
|
||||
administration: Administración
|
||||
devops: DevOps
|
||||
email: Correo electrónico
|
||||
invites: Invitaciones
|
||||
moderation: Moderación
|
||||
special: Especial
|
||||
@ -790,6 +791,8 @@ es-MX:
|
||||
manage_blocks_description: Permite a los usuarios bloquear proveedores de correo electrónico y direcciones IP
|
||||
manage_custom_emojis: Administrar Emojis Personalizados
|
||||
manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor
|
||||
manage_email_subscriptions: Gestionar suscripciones por correo electrónico
|
||||
manage_email_subscriptions_description: Permitir a los usuarios suscribirse a otros usuarios con este permiso por correo electrónico
|
||||
manage_federation: Administrar Federación
|
||||
manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad
|
||||
manage_invites: Administrar Invitaciones
|
||||
@ -1418,6 +1421,38 @@ es-MX:
|
||||
basic_information: Información básica
|
||||
hint_html: "<strong>Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen contigo cuando completes tu perfil y agregues una foto."
|
||||
other: Otro
|
||||
email_subscription_mailer:
|
||||
confirmation:
|
||||
action: Confirmar dirección de correo electrónico
|
||||
instructions_to_confirm: Confirma que deseas recibir correos electrónicos de %{name} (@%{acct}) cuando haga una nueva publicación.
|
||||
instructions_to_ignore: Si no estás seguro de por qué has recibido este correo electrónico, puedes borrarlo. No te suscribirás si no haces clic en el enlace de arriba.
|
||||
subject: Confirma tu dirección de correo electrónico
|
||||
title: "¿Deseas recibir actualizaciones por correo electrónico de %{name}?"
|
||||
notification:
|
||||
create_account: Crear una cuenta de Mastodon
|
||||
footer:
|
||||
privacy_html: Los correos electrónicos se envían desde %{domain} un servidor que utiliza Mastodon. Para saber cómo este servidor procesa tus datos personales, consulta la <a href="%{privacy_policy_path}">Política de privacidad</a>.
|
||||
reason_for_email_html: Recibes este correo electrónico porque te has suscrito a las actualizaciones por correo electrónico de %{name}. ¿No quieres recibir estos correos electrónicos? <a href="%{unsubscribe_path}">Cancelar suscripción</a>
|
||||
interact_with_this_post:
|
||||
one: Interactúa con esta publicación y descubre otras similares.
|
||||
other: Interactúa con estas publicaciones y descubre más.
|
||||
subject:
|
||||
one: 'Nueva publicación: "%{excerpt}"'
|
||||
other: Nuevas publicaciones de %{name}
|
||||
title:
|
||||
one: 'Nueva publicación: "%{excerpt}"'
|
||||
other: Nuevas publicaciones de %{name}
|
||||
email_subscriptions:
|
||||
active: Activa
|
||||
confirmations:
|
||||
show:
|
||||
changed_your_mind: "¿Has cambiado de opinión?"
|
||||
success_html: A partir de ahora, recibirás correos electrónicos cada vez que %{name} haga nuevas publicaciones. Añade a %{sender} a tus contactos para que estas publicaciones no terminen en tu carpeta de spam.
|
||||
title: Ya estás registrado
|
||||
unsubscribe: Cancelar suscripción
|
||||
inactive: Inactiva
|
||||
status: Estado
|
||||
subscribers: Suscriptores
|
||||
emoji_styles:
|
||||
auto: Automático
|
||||
native: Nativo
|
||||
@ -1652,15 +1687,6 @@ es-MX:
|
||||
failed_sign_in_html: Intento de inicio de sesión fallido con %{method} de %{ip} (%{browser})
|
||||
successful_sign_in_html: Inicio de sesión exitoso con %{method} desde %{ip} (%{browser})
|
||||
title: Historial de autenticación
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: correos de notificación de favoritos
|
||||
follow: correos electrónicos de notificación de seguimiento
|
||||
follow_request: correos electrónicos de solicitud de seguimiento
|
||||
mention: correos de notificación de menciones
|
||||
reblog: correos de notificación de impulsos
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: No se puede adjuntar un video a una publicación que ya contenga imágenes
|
||||
@ -1798,6 +1824,8 @@ es-MX:
|
||||
posting_defaults: Configuración por defecto de publicaciones
|
||||
public_timelines: Líneas de tiempo públicas
|
||||
privacy:
|
||||
email_subscriptions: Enviar publicaciones por correo electrónico
|
||||
email_subscriptions_hint_html: Añade un formulario de suscripción por correo electrónico a tu perfil que se muestre a los usuarios que no hayan iniciado sesión. Cuando los visitantes introduzcan su dirección de correo electrónico y se suscriban, Mastodon les enviará actualizaciones por correo electrónico de tus publicaciones públicas.
|
||||
hint_html: "<strong>Personaliza cómo te gustaría que tu perfil y tus publicaciones sean encontradas.</strong> En Mastodon tienes a tu disposición distintas características que pueden ayudarte a llegar a una audiencia más amplia cuando se encuentran activadas. Toma un momento para revisar estos ajustes para asegurarte si cumplen tus necesidades."
|
||||
privacy: Privacidad
|
||||
privacy_hint_html: Controla cuánto quieres compartir para el beneficio de otros. Las personas descubren perfiles interesantes y aplicaciones geniales al navegar por los seguidores de otras personas y viendo desde cuáles aplicaciones publican, pero también puedes preferir mantenerlo oculto.
|
||||
@ -2061,6 +2089,28 @@ es-MX:
|
||||
resume_app_authorization: Reanudar autorización de aplicación
|
||||
role_requirement: "%{domain} requiere que configures la autenticación de dos pasos antes de poder utilizar Mastodon."
|
||||
webauthn: Claves de seguridad
|
||||
unsubscriptions:
|
||||
create:
|
||||
action: Ir a la página de inicio del servidor
|
||||
email_subscription:
|
||||
confirmation_html: Ya no recibirás correos electrónicos de %{name}.
|
||||
title: Ya no estás suscrito
|
||||
user:
|
||||
confirmation_html: Ya no recibirás %{type} de Mastodon en %{domain}.
|
||||
notification_emails:
|
||||
favourite: correos electrónicos de notificación de favoritos
|
||||
follow: correos electrónicos de notificación de seguimiento
|
||||
follow_request: correos electrónicos de solicitud de seguimiento
|
||||
mention: correos de notificación de menciones
|
||||
reblog: correos de notificación de impulsos
|
||||
show:
|
||||
action: Cancelar suscripción
|
||||
email_subscription:
|
||||
confirmation_html: Dejarás de recibir correos electrónicos cuando esta cuenta haga nuevas publicaciones.
|
||||
title: "¿Deseas cancelar suscripción a %{name}?"
|
||||
user:
|
||||
confirmation_html: Dejarás de recibir %{type} de Mastodon en %{domain}.
|
||||
title: "¿Deseas cancelar suscripción a %{type}?"
|
||||
user_mailer:
|
||||
announcement_published:
|
||||
description: 'Los administradores de %{domain} están haciendo un anuncio:'
|
||||
|
||||
@ -762,6 +762,7 @@ es:
|
||||
categories:
|
||||
administration: Administración
|
||||
devops: DevOps
|
||||
email: Correo electrónico
|
||||
invites: Invitaciones
|
||||
moderation: Moderación
|
||||
special: Especial
|
||||
@ -790,6 +791,8 @@ es:
|
||||
manage_blocks_description: Permite a los usuarios bloquear proveedores de correo electrónico y direcciones IP
|
||||
manage_custom_emojis: Administrar Emojis Personalizados
|
||||
manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor
|
||||
manage_email_subscriptions: Administrar suscripciones de correo electrónico
|
||||
manage_email_subscriptions_description: Permitir a los usuarios suscribirse a usuarios con este permiso por correo electrónico
|
||||
manage_federation: Administrar Federación
|
||||
manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad
|
||||
manage_invites: Administrar Invitaciones
|
||||
@ -1418,6 +1421,38 @@ es:
|
||||
basic_information: Información básica
|
||||
hint_html: "<strong>Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones.</strong> Es más probable que otras personas te sigan e interactúen contigo cuando completas tu perfil y foto."
|
||||
other: Otros
|
||||
email_subscription_mailer:
|
||||
confirmation:
|
||||
action: Confirmar dirección de correo electrónico
|
||||
instructions_to_confirm: Confirma que quieres recibir correos electrónicos de %{name} (@%{acct}) cuando publique algo nuevo.
|
||||
instructions_to_ignore: Si no estás seguro de por qué recibiste este correo electrónico, puedes eliminarlo. No te suscribirás si no haces clic en el enlace de arriba.
|
||||
subject: Confirme tu dirección de correo electrónico
|
||||
title: "¿Obtener actualizaciones por correo electrónico de %{name}?"
|
||||
notification:
|
||||
create_account: Crear una cuenta de Mastodon
|
||||
footer:
|
||||
privacy_html: Los correos electrónicos son enviados desde %{domain}, un servidor de Mastodon. Para conocer cómo este servidor procesa tus datos personales, consulta la <a href="%{privacy_policy_path}">Política de Privacidad</a>.
|
||||
reason_for_email_html: Estás recibiendo este correo porque has optado por recibir actualizaciones por correo electrónico de %{name}. ¿No quieres recibir estos correos? <a href="%{unsubscribe_path}">Cancela la suscripción</a>
|
||||
interact_with_this_post:
|
||||
one: Interactúa con esta publicación y descubre otras similares.
|
||||
other: Interactúa con estas publicaciones y descubre otras similares.
|
||||
subject:
|
||||
one: 'Nueva publicación: "%{excerpt}"'
|
||||
other: Nuevas publicaciones de %{name}
|
||||
title:
|
||||
one: 'Nueva publicación: "%{excerpt}"'
|
||||
other: Nuevas publicaciones de %{name}
|
||||
email_subscriptions:
|
||||
active: Activa
|
||||
confirmations:
|
||||
show:
|
||||
changed_your_mind: "¿Cambiaste de opinión?"
|
||||
success_html: Ahora empezarás a recibir correos electrónicos cuando %{name} publique algo nuevo. Añade %{sender} a tus contactos para que estas publicaciones no terminen en tu carpeta de Spam.
|
||||
title: Estás suscrito
|
||||
unsubscribe: Cancelar suscripición
|
||||
inactive: Inactiva
|
||||
status: Estado
|
||||
subscribers: Suscriptores
|
||||
emoji_styles:
|
||||
auto: Automático
|
||||
native: Nativo
|
||||
@ -1652,15 +1687,6 @@ es:
|
||||
failed_sign_in_html: Intento de inicio de sesión fallido con %{method} de %{ip} (%{browser})
|
||||
successful_sign_in_html: Inicio de sesión exitoso con %{method} desde %{ip} (%{browser})
|
||||
title: Historial de autenticación
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: correos de notificación de favoritos
|
||||
follow: correos de notificación de nuevos seguidores
|
||||
follow_request: correos de notificación de solicitud de seguidor
|
||||
mention: correos de notificación de menciones
|
||||
reblog: correos de notificación de impulsos
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: No se puede adjuntar un video a una publicación que ya contenga imágenes
|
||||
@ -1798,6 +1824,8 @@ es:
|
||||
posting_defaults: Configuración por defecto de publicaciones
|
||||
public_timelines: Líneas de tiempo públicas
|
||||
privacy:
|
||||
email_subscriptions: Enviar mensajes por correo electrónico
|
||||
email_subscriptions_hint_html: Añade un formulario de registro por correo electrónico a tu perfil, que aparece para los usuarios que no han iniciado sesión. Cuando los visitantes ingresen su dirección de correo electrónico y opten por ello, Mastodon enviará actualizaciones por correo electrónico para tus publicaciones públicas.
|
||||
hint_html: "<strong>Personaliza el descubrimiento de tu perfil y tus publicaciones.</strong> En Mastodon tienes distintas características que te ayudarán a alcanzar una mayor audiencia si las activas. Tómate un momento para revisar estas configuraciones y asegurarte de que cumplen tus necesidades."
|
||||
privacy: Privacidad
|
||||
privacy_hint_html: Controla cuánto deseas revelar a los demás. Las personas descubren perfiles y aplicaciones interesantes navegando por los seguidores de otras personas y viendo desde qué aplicaciones publican, pero puede que prefieras mantenerlo oculto.
|
||||
@ -2061,6 +2089,28 @@ es:
|
||||
resume_app_authorization: Reanudar autorización de aplicación
|
||||
role_requirement: "%{domain} requiere que establezcas la autenticación en dos pasos para poder usar Mastodon."
|
||||
webauthn: Claves de seguridad
|
||||
unsubscriptions:
|
||||
create:
|
||||
action: Ir a la página de inicio del servidor
|
||||
email_subscription:
|
||||
confirmation_html: Ya no recibirás correos electrónicos de %{name}.
|
||||
title: Ya no estás suscrito
|
||||
user:
|
||||
confirmation_html: Ya no recibirás %{type} de Mastodon en %{domain}.
|
||||
notification_emails:
|
||||
favourite: correos de notificación de favoritos
|
||||
follow: correos de notificación de nuevos seguidores
|
||||
follow_request: correos de notificación de solicitudes de seguimiento
|
||||
mention: correos de notificación de menciones
|
||||
reblog: correos de notificación de impulsos
|
||||
show:
|
||||
action: Cancelar suscripción
|
||||
email_subscription:
|
||||
confirmation_html: Dejarás de recibir correos cuando esta cuenta publique algo nuevo.
|
||||
title: "¿Darse de baja de %{name}?"
|
||||
user:
|
||||
confirmation_html: Dejarás de recibir %{type} de Mastodon en %{domain}.
|
||||
title: "¿Darse de baja de %{type}?"
|
||||
user_mailer:
|
||||
announcement_published:
|
||||
description: 'Los administradores de %{domain} están haciendo un anuncio:'
|
||||
|
||||
@ -1633,15 +1633,6 @@ et:
|
||||
failed_sign_in_html: Nurjunud sisenemine meetodiga %{method} aadressilt %{ip} (%{browser})
|
||||
successful_sign_in_html: Edukas sisenemine meetodiga %{method} aadressilt %{ip} (%{browser})
|
||||
title: Autentimise ajalugu
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: lemmikuks märkimise teavituskirjade
|
||||
follow: jälgimiste teavituskirjade
|
||||
follow_request: jälgimistaotluste teavituskirjade
|
||||
mention: mainimiste teavituskirjade
|
||||
reblog: jagamiste teavituskirjade
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Ei saa lisada video postitusele, milles on juba pildid
|
||||
|
||||
@ -1535,15 +1535,6 @@ eu:
|
||||
failed_sign_in_html: Huts egindako saioa hasteko saiakera %{method} erabiliz %{ip} IPtik (%{browser})
|
||||
successful_sign_in_html: Saioa hasiera arrakastatsua %{method} erabiliz %{ip} IPtik (%{browser})
|
||||
title: Autentifikazioen historia
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: zure argitalpena gogoko egin dutenaren jakinarazpen e-mailak
|
||||
follow: jarraitu jakinarazpen-mezu elektronikoak
|
||||
follow_request: jarraipen-eskaeren jakinarazpen e-mailak
|
||||
mention: aipamenen jakinarazpen e-mailak
|
||||
reblog: bultzaden jakinarazpen e-mailak
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Ezin da irudiak dituen bidalketa batean bideo bat erantsi
|
||||
|
||||
@ -1629,15 +1629,6 @@ fa:
|
||||
failed_sign_in_html: تلاشهای شکستخوردهٔ ورود با %{method} از %{ip} (%{browser})
|
||||
successful_sign_in_html: ورودهای موفق با %{method} از %{ip} (%{browser})
|
||||
title: تاریخچهٔ تأیید هویت
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: رایانامههای آگاهی برگزیدن
|
||||
follow: رایانامههای آگاهی پیگیری
|
||||
follow_request: رایانامههای درخواست پیگیری
|
||||
mention: رایانامههای آگاهی اشاره
|
||||
reblog: رایانامههای آگاهی تقویت
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: نمیتوان برای نوشتهای که تصویر دارد ویدیو بارگذاری کرد
|
||||
|
||||
@ -1652,15 +1652,6 @@ fi:
|
||||
failed_sign_in_html: Epäonnistunut kirjautumisyritys %{method} IP-osoitteesta %{ip} (%{browser})
|
||||
successful_sign_in_html: Onnistunut kirjautuminen %{method} IP-osoitteesta %{ip} (%{browser})
|
||||
title: Todennushistoria
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: sähköposti-ilmoituksia suosikkeihin lisäämisistä
|
||||
follow: sähköposti-ilmoituksia seuraamisista
|
||||
follow_request: sähköposti-ilmoituksia seurantapyynnöistä
|
||||
mention: sähköposti-ilmoituksia maininnoista
|
||||
reblog: sähköposti-ilmoituksia tehostuksista
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Videota ei voi liittää tilapäivitykseen, jossa on jo kuvia
|
||||
|
||||
@ -1648,15 +1648,6 @@ fo:
|
||||
failed_sign_in_html: Miseydnað innritanarroynd við %{method} frá %{ip} (%{browser})
|
||||
successful_sign_in_html: Eydnað innritan við %{method} frá %{ip} (%{browser})
|
||||
title: Samgildissøga
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: yndisfráboðanarteldupostar
|
||||
follow: fylg fráboðanarteldupostar
|
||||
follow_request: fylg umbønir um teldupost
|
||||
mention: nevn fráboðanarteldupostar
|
||||
reblog: framhevja fráboðanarpostar
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Kann ikki viðfesta sjónfílu til ein post, sum longu inniheldur myndir
|
||||
|
||||
@ -1655,15 +1655,6 @@ fr-CA:
|
||||
failed_sign_in_html: Tentative de connexion échouée avec %{method} de %{ip} (%{browser})
|
||||
successful_sign_in_html: Connexion réussie avec %{method} de %{ip} (%{browser})
|
||||
title: Historique d'authentification
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: e-mails de notifications de favoris
|
||||
follow: e-mails de notifications d’abonnements
|
||||
follow_request: e-mails de demandes d’abonnements
|
||||
mention: e-mails de notifications de mentions
|
||||
reblog: e-mails de notifications de partages
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Impossible de joindre une vidéo à un message contenant déjà des images
|
||||
|
||||
@ -80,7 +80,7 @@ fr:
|
||||
enabled_msg: Le compte de %{username} a été dégelé avec succès
|
||||
followers: Abonné·e·s
|
||||
follows: Abonnements
|
||||
header: Entête
|
||||
header: Image de couverture
|
||||
inbox_url: URL d’entrée
|
||||
invite_request_text: Raisons de l’adhésion
|
||||
invited_by: Invité par
|
||||
@ -128,7 +128,7 @@ fr:
|
||||
remote_suspension_irreversible: Les données de ce compte ont été supprimées définitivement.
|
||||
remote_suspension_reversible_hint_html: Ce compte a été suspendu par son serveur d'accueil, et les données rattachées seront supprimées le %{date}. Jusqu'à cette date, il peut être restauré sans aucune perte par le serveur distant. Si vous souhaitez supprimer immédiatement toutes les données de ce compte, vous pouvez le faire ci-dessous.
|
||||
remove_avatar: Supprimer l’avatar
|
||||
remove_header: Supprimer l’entête
|
||||
remove_header: Supprimer l'image de couverture
|
||||
removed_avatar_msg: L’avatar de %{username} a été supprimé avec succès
|
||||
removed_header_msg: L’image d’en-tête de %{username} a été supprimée avec succès
|
||||
resend_confirmation:
|
||||
@ -1655,15 +1655,6 @@ fr:
|
||||
failed_sign_in_html: Tentative de connexion échouée avec %{method} de %{ip} (%{browser})
|
||||
successful_sign_in_html: Connexion réussie avec %{method} de %{ip} (%{browser})
|
||||
title: Historique d'authentification
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: e-mails de notifications de favoris
|
||||
follow: e-mails de notifications d’abonnements
|
||||
follow_request: e-mails de demandes d’abonnements
|
||||
mention: e-mails de notifications de mentions
|
||||
reblog: e-mails de notifications de partages
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Impossible de joindre une vidéo à un message contenant déjà des images
|
||||
|
||||
@ -1594,15 +1594,6 @@ fy:
|
||||
failed_sign_in_html: Mislearre oanmeldbesykjen mei %{method} fan %{ip} (%{browser})
|
||||
successful_sign_in_html: Mei sukses oanmeld mei %{method} fan %{ip} (%{browser})
|
||||
title: Oanmeldskiednis
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: e-mailmeldingen foar favoriten
|
||||
follow: e-mailmeldingen foar nije folgers
|
||||
follow_request: e-mailmeldingen foar folchfersiken
|
||||
mention: e-mailmeldingen foar fermeldingen
|
||||
reblog: e-mailmeldingen foar boosts
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: In fideo kin net oan in berjocht mei ôfbyldingen keppele wurde
|
||||
|
||||
@ -1777,15 +1777,6 @@ ga:
|
||||
failed_sign_in_html: Theip ar iarracht síniú isteach le %{method} ó %{ip} (%{browser})
|
||||
successful_sign_in_html: D'éirigh le síniú isteach le %{method} ó %{ip} (%{browser})
|
||||
title: Stair fíordheimhnithe
|
||||
mail_subscriptions:
|
||||
unsubscribe:
|
||||
emails:
|
||||
notification_emails:
|
||||
favourite: ríomhphoist fógra is fearr leat
|
||||
follow: leanúint ríomhphoist fógra
|
||||
follow_request: lean ríomhphoist iarratais
|
||||
mention: trácht ar ríomhphoist fógra
|
||||
reblog: ríomhphoist fógraí a threisiú
|
||||
media_attachments:
|
||||
validations:
|
||||
images_and_video: Ní féidir físeán a cheangal le postáil a bhfuil íomhánna ann cheana féin
|
||||
|
||||
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