Merge commit 'bca57020a04c552a3c91912a0e0b69ddafaad06a' into glitch-soc/merge-upstream
This commit is contained in:
@@ -179,3 +179,10 @@ export async function apiRequestDelete<
|
||||
>(url: ApiUrl, params?: RequestParamsOrData<ApiParams>) {
|
||||
return apiRequest<ApiResponse>('DELETE', url, { params });
|
||||
}
|
||||
|
||||
export async function apiRequestPatch<ApiResponse = unknown, ApiData = unknown>(
|
||||
url: ApiUrl,
|
||||
data?: RequestParamsOrData<ApiData>,
|
||||
) {
|
||||
return apiRequest<ApiResponse>('PATCH', url, { data });
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { apiRequestPost, apiRequestGet, apiRequestDelete } from 'mastodon/api';
|
||||
import {
|
||||
apiRequestPost,
|
||||
apiRequestGet,
|
||||
apiRequestDelete,
|
||||
apiRequestPatch,
|
||||
} from 'mastodon/api';
|
||||
import type {
|
||||
ApiAccountJSON,
|
||||
ApiFamiliarFollowersJSON,
|
||||
@@ -9,6 +14,11 @@ import type {
|
||||
ApiHashtagJSON,
|
||||
} from 'mastodon/api_types/tags';
|
||||
|
||||
import type {
|
||||
ApiProfileJSON,
|
||||
ApiProfileUpdateParams,
|
||||
} from '../api_types/profile';
|
||||
|
||||
export const apiSubmitAccountNote = (id: string, value: string) =>
|
||||
apiRequestPost<ApiRelationshipJSON>(`v1/accounts/${id}/note`, {
|
||||
comment: value,
|
||||
@@ -54,3 +64,8 @@ export const apiGetFamiliarFollowers = (id: string) =>
|
||||
apiRequestGet<ApiFamiliarFollowersJSON>('v1/accounts/familiar_followers', {
|
||||
id,
|
||||
});
|
||||
|
||||
export const apiGetProfile = () => apiRequestGet<ApiProfileJSON>('v1/profile');
|
||||
|
||||
export const apiPatchProfile = (params: ApiProfileUpdateParams) =>
|
||||
apiRequestPatch<ApiProfileJSON>('v1/profile', params);
|
||||
|
||||
42
app/javascript/mastodon/api_types/profile.ts
Normal file
42
app/javascript/mastodon/api_types/profile.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import type { ApiAccountFieldJSON } from './accounts';
|
||||
|
||||
export interface ApiProfileJSON {
|
||||
id: string;
|
||||
display_name: string;
|
||||
note: string;
|
||||
fields: ApiAccountFieldJSON[];
|
||||
avatar: string;
|
||||
avatar_static: string;
|
||||
avatar_description: string;
|
||||
header: string;
|
||||
header_static: string;
|
||||
header_description: string;
|
||||
locked: boolean;
|
||||
bot: boolean;
|
||||
hide_collections: boolean;
|
||||
discoverable: boolean;
|
||||
indexable: boolean;
|
||||
show_media: boolean;
|
||||
show_media_replies: boolean;
|
||||
show_featured: boolean;
|
||||
attribution_domains: string[];
|
||||
}
|
||||
|
||||
export type ApiProfileUpdateParams = Partial<
|
||||
Pick<
|
||||
ApiProfileJSON,
|
||||
| 'display_name'
|
||||
| 'note'
|
||||
| 'locked'
|
||||
| 'bot'
|
||||
| 'hide_collections'
|
||||
| 'discoverable'
|
||||
| 'indexable'
|
||||
| 'show_media'
|
||||
| 'show_media_replies'
|
||||
| 'show_featured'
|
||||
>
|
||||
> & {
|
||||
attribution_domains?: string[];
|
||||
fields_attributes?: Pick<ApiAccountFieldJSON, 'name' | 'value'>[];
|
||||
};
|
||||
@@ -4,12 +4,11 @@ import type { ChangeEventHandler, FC } from 'react';
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
import { TextArea } from '@/mastodon/components/form_fields';
|
||||
import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
|
||||
import { insertEmojiAtPosition } from '@/mastodon/features/emoji/utils';
|
||||
import type { BaseConfirmationModalProps } from '@/mastodon/features/ui/components/confirmation_modals';
|
||||
import { ConfirmationModal } from '@/mastodon/features/ui/components/confirmation_modals';
|
||||
import { useAccount } from '@/mastodon/hooks/useAccount';
|
||||
import { useCurrentAccountId } from '@/mastodon/hooks/useAccountId';
|
||||
import { patchProfile } from '@/mastodon/reducers/slices/profile_edit';
|
||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||
|
||||
import classes from '../styles.module.scss';
|
||||
|
||||
@@ -38,10 +37,11 @@ export const BioModal: FC<BaseConfirmationModalProps> = ({ onClose }) => {
|
||||
const titleId = useId();
|
||||
const counterId = useId();
|
||||
const textAreaRef = useRef<HTMLTextAreaElement>(null);
|
||||
const accountId = useCurrentAccountId();
|
||||
const account = useAccount(accountId);
|
||||
|
||||
const [newBio, setNewBio] = useState(account?.note_plain ?? '');
|
||||
const { profile: { bio } = {}, isPending } = useAppSelector(
|
||||
(state) => state.profileEdit,
|
||||
);
|
||||
const [newBio, setNewBio] = useState(bio ?? '');
|
||||
const handleChange: ChangeEventHandler<HTMLTextAreaElement> = useCallback(
|
||||
(event) => {
|
||||
setNewBio(event.currentTarget.value);
|
||||
@@ -55,19 +55,22 @@ export const BioModal: FC<BaseConfirmationModalProps> = ({ onClose }) => {
|
||||
});
|
||||
}, []);
|
||||
|
||||
if (!account) {
|
||||
return <LoadingIndicator />;
|
||||
}
|
||||
const dispatch = useAppDispatch();
|
||||
const handleSave = useCallback(() => {
|
||||
if (!isPending) {
|
||||
void dispatch(patchProfile({ note: newBio })).then(onClose);
|
||||
}
|
||||
}, [dispatch, isPending, newBio, onClose]);
|
||||
|
||||
return (
|
||||
<ConfirmationModal
|
||||
title={intl.formatMessage(
|
||||
account.note_plain ? messages.editTitle : messages.addTitle,
|
||||
)}
|
||||
title={intl.formatMessage(bio ? messages.editTitle : messages.addTitle)}
|
||||
titleId={titleId}
|
||||
confirm={intl.formatMessage(messages.save)}
|
||||
onConfirm={onClose} // To be implemented
|
||||
onConfirm={handleSave}
|
||||
onClose={onClose}
|
||||
updating={isPending}
|
||||
disabled={newBio.length > MAX_BIO_LENGTH}
|
||||
noFocusButton
|
||||
>
|
||||
<div className={classes.inputWrapper}>
|
||||
|
||||
@@ -7,8 +7,8 @@ import { TextInput } from '@/mastodon/components/form_fields';
|
||||
import { insertEmojiAtPosition } from '@/mastodon/features/emoji/utils';
|
||||
import type { BaseConfirmationModalProps } from '@/mastodon/features/ui/components/confirmation_modals';
|
||||
import { ConfirmationModal } from '@/mastodon/features/ui/components/confirmation_modals';
|
||||
import { useAccount } from '@/mastodon/hooks/useAccount';
|
||||
import { useCurrentAccountId } from '@/mastodon/hooks/useAccountId';
|
||||
import { patchProfile } from '@/mastodon/reducers/slices/profile_edit';
|
||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||
|
||||
import classes from '../styles.module.scss';
|
||||
|
||||
@@ -37,10 +37,11 @@ export const NameModal: FC<BaseConfirmationModalProps> = ({ onClose }) => {
|
||||
const titleId = useId();
|
||||
const counterId = useId();
|
||||
const inputRef = useRef<HTMLInputElement>(null);
|
||||
const accountId = useCurrentAccountId();
|
||||
const account = useAccount(accountId);
|
||||
|
||||
const [newName, setNewName] = useState(account?.display_name ?? '');
|
||||
const { profile: { displayName } = {}, isPending } = useAppSelector(
|
||||
(state) => state.profileEdit,
|
||||
);
|
||||
const [newName, setNewName] = useState(displayName ?? '');
|
||||
const handleChange: ChangeEventHandler<HTMLInputElement> = useCallback(
|
||||
(event) => {
|
||||
setNewName(event.currentTarget.value);
|
||||
@@ -54,13 +55,22 @@ export const NameModal: FC<BaseConfirmationModalProps> = ({ onClose }) => {
|
||||
});
|
||||
}, []);
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
const handleSave = useCallback(() => {
|
||||
if (!isPending) {
|
||||
void dispatch(patchProfile({ display_name: newName })).then(onClose);
|
||||
}
|
||||
}, [dispatch, isPending, newName, onClose]);
|
||||
|
||||
return (
|
||||
<ConfirmationModal
|
||||
title={intl.formatMessage(messages.editTitle)}
|
||||
titleId={titleId}
|
||||
confirm={intl.formatMessage(messages.save)}
|
||||
onConfirm={onClose} // To be implemented
|
||||
onConfirm={handleSave}
|
||||
onClose={onClose}
|
||||
updating={isPending}
|
||||
disabled={newName.length > MAX_NAME_LENGTH}
|
||||
noCloseOnConfirm
|
||||
noFocusButton
|
||||
>
|
||||
|
||||
@@ -14,7 +14,11 @@ import {
|
||||
fetchFeaturedTags,
|
||||
fetchSuggestedTags,
|
||||
} from '@/mastodon/reducers/slices/profile_edit';
|
||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||
import {
|
||||
createAppSelector,
|
||||
useAppDispatch,
|
||||
useAppSelector,
|
||||
} from '@/mastodon/store';
|
||||
|
||||
import { AccountEditColumn, AccountEditEmptyColumn } from './components/column';
|
||||
import { AccountEditItemList } from './components/item_list';
|
||||
@@ -28,14 +32,23 @@ const messages = defineMessages({
|
||||
},
|
||||
});
|
||||
|
||||
const selectTags = createAppSelector(
|
||||
[(state) => state.profileEdit],
|
||||
(profileEdit) => ({
|
||||
tags: profileEdit.tags ?? [],
|
||||
tagSuggestions: profileEdit.tagSuggestions ?? [],
|
||||
isLoading: !profileEdit.tags || !profileEdit.tagSuggestions,
|
||||
isPending: profileEdit.isPending,
|
||||
}),
|
||||
);
|
||||
|
||||
export const AccountEditFeaturedTags: FC = () => {
|
||||
const accountId = useCurrentAccountId();
|
||||
const account = useAccount(accountId);
|
||||
const intl = useIntl();
|
||||
|
||||
const { tags, tagSuggestions, isLoading, isPending } = useAppSelector(
|
||||
(state) => state.profileEdit,
|
||||
);
|
||||
const { tags, tagSuggestions, isLoading, isPending } =
|
||||
useAppSelector(selectTags);
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
useEffect(() => {
|
||||
|
||||
@@ -7,13 +7,17 @@ import { useHistory } from 'react-router-dom';
|
||||
|
||||
import type { ModalType } from '@/mastodon/actions/modal';
|
||||
import { openModal } from '@/mastodon/actions/modal';
|
||||
import { AccountBio } from '@/mastodon/components/account_bio';
|
||||
import { Avatar } from '@/mastodon/components/avatar';
|
||||
import { DisplayNameSimple } from '@/mastodon/components/display_name/simple';
|
||||
import { CustomEmojiProvider } from '@/mastodon/components/emoji/context';
|
||||
import { EmojiHTML } from '@/mastodon/components/emoji/html';
|
||||
import { useElementHandledLink } from '@/mastodon/components/status/handled_link';
|
||||
import { useAccount } from '@/mastodon/hooks/useAccount';
|
||||
import { useCurrentAccountId } from '@/mastodon/hooks/useAccountId';
|
||||
import { autoPlayGif } from '@/mastodon/initial_state';
|
||||
import { fetchFeaturedTags } from '@/mastodon/reducers/slices/profile_edit';
|
||||
import {
|
||||
fetchFeaturedTags,
|
||||
fetchProfile,
|
||||
} from '@/mastodon/reducers/slices/profile_edit';
|
||||
import { useAppDispatch, useAppSelector } from '@/mastodon/store';
|
||||
|
||||
import { AccountEditColumn, AccountEditEmptyColumn } from './components/column';
|
||||
@@ -82,11 +86,10 @@ export const AccountEdit: FC = () => {
|
||||
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const { tags: featuredTags, isLoading: isTagsLoading } = useAppSelector(
|
||||
(state) => state.profileEdit,
|
||||
);
|
||||
const { profile, tags = [] } = useAppSelector((state) => state.profileEdit);
|
||||
useEffect(() => {
|
||||
void dispatch(fetchFeaturedTags());
|
||||
void dispatch(fetchProfile());
|
||||
}, [dispatch]);
|
||||
|
||||
const handleOpenModal = useCallback(
|
||||
@@ -107,14 +110,20 @@ export const AccountEdit: FC = () => {
|
||||
history.push('/profile/featured_tags');
|
||||
}, [history]);
|
||||
|
||||
if (!accountId || !account) {
|
||||
// Normally we would use the account emoji, but we want all custom emojis to be available to render after editing.
|
||||
const emojis = useAppSelector((state) => state.custom_emojis);
|
||||
const htmlHandlers = useElementHandledLink({
|
||||
hashtagAccountId: profile?.id,
|
||||
});
|
||||
|
||||
if (!accountId || !account || !profile) {
|
||||
return <AccountEditEmptyColumn notFound={!accountId} />;
|
||||
}
|
||||
|
||||
const headerSrc = autoPlayGif ? account.header : account.header_static;
|
||||
const hasName = !!account.display_name;
|
||||
const hasBio = !!account.note_plain;
|
||||
const hasTags = !isTagsLoading && featuredTags.length > 0;
|
||||
const headerSrc = autoPlayGif ? profile.header : profile.headerStatic;
|
||||
const hasName = !!profile.displayName;
|
||||
const hasBio = !!profile.bio;
|
||||
const hasTags = tags.length > 0;
|
||||
|
||||
return (
|
||||
<AccountEditColumn
|
||||
@@ -128,62 +137,64 @@ export const AccountEdit: FC = () => {
|
||||
<Avatar account={account} size={80} className={classes.avatar} />
|
||||
</header>
|
||||
|
||||
<AccountEditSection
|
||||
title={messages.displayNameTitle}
|
||||
description={messages.displayNamePlaceholder}
|
||||
showDescription={!hasName}
|
||||
buttons={
|
||||
<EditButton
|
||||
onClick={handleNameEdit}
|
||||
item={messages.displayNameTitle}
|
||||
edit={hasName}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<DisplayNameSimple account={account} />
|
||||
</AccountEditSection>
|
||||
<CustomEmojiProvider emojis={emojis}>
|
||||
<AccountEditSection
|
||||
title={messages.displayNameTitle}
|
||||
description={messages.displayNamePlaceholder}
|
||||
showDescription={!hasName}
|
||||
buttons={
|
||||
<EditButton
|
||||
onClick={handleNameEdit}
|
||||
item={messages.displayNameTitle}
|
||||
edit={hasName}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EmojiHTML htmlString={profile.displayName} {...htmlHandlers} />
|
||||
</AccountEditSection>
|
||||
|
||||
<AccountEditSection
|
||||
title={messages.bioTitle}
|
||||
description={messages.bioPlaceholder}
|
||||
showDescription={!hasBio}
|
||||
buttons={
|
||||
<EditButton
|
||||
onClick={handleBioEdit}
|
||||
item={messages.bioTitle}
|
||||
edit={hasBio}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<AccountBio accountId={accountId} />
|
||||
</AccountEditSection>
|
||||
<AccountEditSection
|
||||
title={messages.bioTitle}
|
||||
description={messages.bioPlaceholder}
|
||||
showDescription={!hasBio}
|
||||
buttons={
|
||||
<EditButton
|
||||
onClick={handleBioEdit}
|
||||
item={messages.bioTitle}
|
||||
edit={hasBio}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EmojiHTML htmlString={profile.bio} {...htmlHandlers} />
|
||||
</AccountEditSection>
|
||||
|
||||
<AccountEditSection
|
||||
title={messages.customFieldsTitle}
|
||||
description={messages.customFieldsPlaceholder}
|
||||
showDescription
|
||||
/>
|
||||
<AccountEditSection
|
||||
title={messages.customFieldsTitle}
|
||||
description={messages.customFieldsPlaceholder}
|
||||
showDescription
|
||||
/>
|
||||
|
||||
<AccountEditSection
|
||||
title={messages.featuredHashtagsTitle}
|
||||
description={messages.featuredHashtagsPlaceholder}
|
||||
showDescription={!hasTags}
|
||||
buttons={
|
||||
<EditButton
|
||||
onClick={handleFeaturedTagsEdit}
|
||||
edit={hasTags}
|
||||
item={messages.featuredHashtagsItem}
|
||||
/>
|
||||
}
|
||||
>
|
||||
{featuredTags.map((tag) => `#${tag.name}`).join(', ')}
|
||||
</AccountEditSection>
|
||||
<AccountEditSection
|
||||
title={messages.featuredHashtagsTitle}
|
||||
description={messages.featuredHashtagsPlaceholder}
|
||||
showDescription={!hasTags}
|
||||
buttons={
|
||||
<EditButton
|
||||
onClick={handleFeaturedTagsEdit}
|
||||
edit={hasTags}
|
||||
item={messages.featuredHashtagsItem}
|
||||
/>
|
||||
}
|
||||
>
|
||||
{tags.map((tag) => `#${tag.name}`).join(', ')}
|
||||
</AccountEditSection>
|
||||
|
||||
<AccountEditSection
|
||||
title={messages.profileTabTitle}
|
||||
description={messages.profileTabSubtitle}
|
||||
showDescription
|
||||
/>
|
||||
<AccountEditSection
|
||||
title={messages.profileTabTitle}
|
||||
description={messages.profileTabSubtitle}
|
||||
showDescription
|
||||
/>
|
||||
</CustomEmojiProvider>
|
||||
</AccountEditColumn>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -262,6 +262,11 @@ svg.badgeIcon {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// See: https://stackoverflow.com/questions/13226296/is-scrollwidth-property-of-a-span-not-working-on-chrome
|
||||
[data-contents] {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
.fieldVerified {
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Дадзеная інфармацыя не дасяжная на гэтым серверы.",
|
||||
"about.powered_by": "Дэцэнтралізаваная сацыяльная сетка, створаная {mastodon}",
|
||||
"about.rules": "Правілы сервера",
|
||||
"account.about": "Пра сябе",
|
||||
"account.account_note_header": "Асабістая нататка",
|
||||
"account.activity": "Актыўнасць",
|
||||
"account.add_note": "Дадаць асабістую нататку",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Мае сярод падпісчыкаў {name1} і {name2}",
|
||||
"account.featured": "Рэкамендаванае",
|
||||
"account.featured.accounts": "Профілі",
|
||||
"account.featured.collections": "Калекцыі",
|
||||
"account.featured.hashtags": "Хэштэгі",
|
||||
"account.featured_tags.last_status_at": "Апошні допіс ад {date}",
|
||||
"account.featured_tags.last_status_never": "Няма допісаў",
|
||||
"account.field_overflow": "Паказаць усё змесціва",
|
||||
"account.filters.all": "Уся актыўнасць",
|
||||
"account.filters.boosts_toggle": "Паказваць пашырэнні",
|
||||
"account.filters.posts_boosts": "Допісы і пашырэнні",
|
||||
@@ -141,8 +142,33 @@
|
||||
"account.unmute": "Не ігнараваць @{name}",
|
||||
"account.unmute_notifications_short": "Апавяшчаць",
|
||||
"account.unmute_short": "Не ігнараваць",
|
||||
"account_edit.bio.placeholder": "Коратка апішыце сябе, каб дапамагчы іншым пазнаць Вас.",
|
||||
"account_edit.bio.title": "Хто я",
|
||||
"account_edit.bio_modal.add_title": "Апісаць сябе",
|
||||
"account_edit.bio_modal.edit_title": "Змяніць апісанне",
|
||||
"account_edit.button.add": "Дадаць {item}",
|
||||
"account_edit.button.delete": "Выдаліць {item}",
|
||||
"account_edit.button.edit": "Змяніць {item}",
|
||||
"account_edit.char_counter": "{currentLength}/{maxLength} сімвалаў",
|
||||
"account_edit.column_button": "Гатова",
|
||||
"account_edit.column_title": "Рэдагаваць профіль",
|
||||
"account_edit.custom_fields.placeholder": "Дадайце свае займеннікі, знешнія спасылкі ці нешта іншае, чым Вы хацелі б падзяліцца.",
|
||||
"account_edit.custom_fields.title": "Карыстальніцкія палі",
|
||||
"account_edit.display_name.placeholder": "Вашае бачнае імя — гэта імя, якое іншыя людзі бачаць у Вашым профілі і ў стужках.",
|
||||
"account_edit.display_name.title": "Бачнае імя",
|
||||
"account_edit.featured_hashtags.item": "хэштэгі",
|
||||
"account_edit.featured_hashtags.placeholder": "Дапамажыце іншым зразумець, якія тэмы Вас цікавяць, і атрымаць доступ да іх.",
|
||||
"account_edit.featured_hashtags.title": "Выбраныя хэштэгі",
|
||||
"account_edit.name_modal.add_title": "Дадаць бачнае імя",
|
||||
"account_edit.name_modal.edit_title": "Змяніць бачнае імя",
|
||||
"account_edit.profile_tab.subtitle": "Змяняйце на свой густ укладкі свайго профілю і тое, што яны паказваюць.",
|
||||
"account_edit.profile_tab.title": "Налады ўкладкі профілю",
|
||||
"account_edit.save": "Захаваць",
|
||||
"account_edit_tags.column_title": "Змяніць выбраныя хэштэгі",
|
||||
"account_edit_tags.help_text": "Выбраныя хэштэгі дапамагаюць карыстальнікам знаходзіць Ваш профіль і ўзаемадзейнічаць з ім. Яны дзейнічаюць як фільтры пры праглядзе актыўнасці на Вашай старонцы.",
|
||||
"account_edit_tags.search_placeholder": "Увядзіце хэштэг…",
|
||||
"account_edit_tags.suggestions": "Прапановы:",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {допіс} few {допісы} many {допісаў} other {допісаў}}",
|
||||
"account_note.placeholder": "Націсніце, каб дадаць нататку",
|
||||
"admin.dashboard.daily_retention": "Штодзённы паказчык утрымання карыстальнікаў пасля рэгістрацыі",
|
||||
"admin.dashboard.monthly_retention": "Штомесячны паказчык утрымання карыстальнікаў пасля рэгістрацыі",
|
||||
@@ -267,21 +293,27 @@
|
||||
"collections.detail.curated_by_you": "Курыруеце Вы",
|
||||
"collections.detail.loading": "Загружаецца калекцыя…",
|
||||
"collections.detail.share": "Падзяліцца гэтай калекцыяй",
|
||||
"collections.edit_details": "Рэдагаваць падрабязнасці",
|
||||
"collections.error_loading_collections": "Адбылася памылка падчас загрузкі Вашых калекцый.",
|
||||
"collections.hints.accounts_counter": "{count} / {max} уліковых запісаў",
|
||||
"collections.hints.add_more_accounts": "Дадайце як мінімум {count, plural, one {# уліковы запіс} few{# ўліковыя запісы} other {# уліковых запісаў}}, каб працягнуць",
|
||||
"collections.hints.can_not_remove_more_accounts": "У калекцыі мусіць быць як мінімум {count, plural, one {# уліковы запіс} few{# ўліковыя запісы} other {# уліковых запісаў}}. Немагчыма прыбраць больш уліковых запісаў.",
|
||||
"collections.last_updated_at": "Апошняе абнаўленне: {date}",
|
||||
"collections.manage_accounts": "Кіраванне ўліковымі запісамі",
|
||||
"collections.mark_as_sensitive": "Пазначыць як далікатную",
|
||||
"collections.mark_as_sensitive": "Пазначыць як адчувальную",
|
||||
"collections.mark_as_sensitive_hint": "Схаваць апісанне калекцыі і ўліковыя запісы за банерам з папярэджаннем. Назва калекцыі застанецца бачнай.",
|
||||
"collections.name_length_hint": "Максімум 40 сімвалаў",
|
||||
"collections.new_collection": "Новая калекцыя",
|
||||
"collections.no_collections_yet": "Пакуль няма калекцый.",
|
||||
"collections.old_last_post_note": "Апошні допіс быў больш за тыдзень таму",
|
||||
"collections.remove_account": "Прыбраць гэты ўліковы запіс",
|
||||
"collections.report_collection": "Паскардзіцца на гэту калекцыю",
|
||||
"collections.search_accounts_label": "Шукайце ўліковыя запісы, каб дадаць іх сюды…",
|
||||
"collections.search_accounts_max_reached": "Вы дадалі максімальную колькасць уліковых запісаў",
|
||||
"collections.sensitive": "Адчувальная",
|
||||
"collections.topic_hint": "Дадайце хэштэг, які дапаможа іншым зразумець галоўную тэму гэтай калекцыі.",
|
||||
"collections.view_collection": "Глядзець калекцыю",
|
||||
"collections.view_other_collections_by_user": "Паглядзець іншыя калекцыі гэтага карыстальніка",
|
||||
"collections.visibility_public": "Публічная",
|
||||
"collections.visibility_public_hint": "Можна знайсці ў пошуку і іншых месцах, дзе з'яўляюцца рэкамендацыі.",
|
||||
"collections.visibility_title": "Бачнасць",
|
||||
@@ -370,6 +402,9 @@
|
||||
"confirmations.discard_draft.post.title": "Скасаваць чарнавік?",
|
||||
"confirmations.discard_edit_media.confirm": "Адмяніць",
|
||||
"confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
|
||||
"confirmations.follow_to_collection.confirm": "Падпісацца і дадаць у калекцыю",
|
||||
"confirmations.follow_to_collection.message": "Вам трэба падпісацца на {name}, каб дадаць яго/яе ў калекцыю.",
|
||||
"confirmations.follow_to_collection.title": "Падпісацца на ўліковы запіс?",
|
||||
"confirmations.follow_to_list.confirm": "Падпісацца і дадаць у спіс",
|
||||
"confirmations.follow_to_list.message": "Вам трэба падпісацца на {name}, каб дадаць яго/яе ў спіс.",
|
||||
"confirmations.follow_to_list.title": "Падпісацца на карыстальніка?",
|
||||
@@ -464,8 +499,6 @@
|
||||
"emoji_button.search_results": "Вынікі пошуку",
|
||||
"emoji_button.symbols": "Сімвалы",
|
||||
"emoji_button.travel": "Падарожжы і месцы",
|
||||
"empty_column.account_about.me": "Вы пакуль не дадалі аніякай інфармацыі пра сябе.",
|
||||
"empty_column.account_about.other": "{acct} пакуль не дадаў(-ла) аніякай інфармацыі пра сябе.",
|
||||
"empty_column.account_featured.me": "Вы яшчэ нічога не паказалі. Ці ведалі Вы, што ў сваім профілі Вы можаце паказаць свае хэштэгі, якімі найбольш карыстаецеся, і нават профілі сваіх сяброў?",
|
||||
"empty_column.account_featured.other": "{acct} яшчэ нічога не паказаў. Ці ведалі Вы, што ў сваім профілі Вы можаце паказаць свае хэштэгі, якімі найбольш карыстаецеся, і нават профілі сваіх сяброў?",
|
||||
"empty_column.account_featured_other.unknown": "Гэты ўліковы запіс яшчэ нічога не паказаў.",
|
||||
@@ -771,9 +804,9 @@
|
||||
"notification.moderation_warning": "Вы атрымалі папярэджанне ад мадэратараў",
|
||||
"notification.moderation_warning.action_delete_statuses": "Некаторыя Вашыя допісы былі выдаленыя.",
|
||||
"notification.moderation_warning.action_disable": "Ваш уліковы запіс быў адключаны.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некаторыя з вашых допісаў былі пазначаныя як далікатныя.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некаторыя з вашых допісаў былі пазначаныя як адчувальныя.",
|
||||
"notification.moderation_warning.action_none": "Ваш уліковы запіс атрымаў папярэджанне ад мадэратараў.",
|
||||
"notification.moderation_warning.action_sensitive": "З гэтага моманту вашыя допісы будуць пазначаныя як далікатныя.",
|
||||
"notification.moderation_warning.action_sensitive": "З гэтага моманту вашыя допісы будуць пазначаныя як адчувальныя.",
|
||||
"notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.",
|
||||
"notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў заблакіраваны.",
|
||||
"notification.own_poll": "Ваша апытанне скончылася",
|
||||
@@ -944,6 +977,7 @@
|
||||
"report.category.title_account": "профіль",
|
||||
"report.category.title_status": "допіс",
|
||||
"report.close": "Гатова",
|
||||
"report.collection_comment": "Чаму Вы хочаце паскардзіцца на гэту калекцыю?",
|
||||
"report.comment.title": "Што-небудзь яшчэ, што нам неабходна ведаць?",
|
||||
"report.forward": "Пераслаць на {target}",
|
||||
"report.forward_hint": "Гэты ўліковы запіс з іншага сервера. Даслаць ананімную копію скаргі і туды?",
|
||||
@@ -965,6 +999,8 @@
|
||||
"report.rules.title": "Якія правілы былі парушаны?",
|
||||
"report.statuses.subtitle": "Абярыце ўсе пункты, што падыходзяць",
|
||||
"report.statuses.title": "Ці ёсць допісы, каб падмацаваць гэтую скаргу?",
|
||||
"report.submission_error": "Немагчыма адправіць скаргу",
|
||||
"report.submission_error_details": "Калі ласка, праверце сваё сеткавае злучэнне і паспрабуйце зноў пазней.",
|
||||
"report.submit": "Адправіць",
|
||||
"report.target": "Скарга на {target}",
|
||||
"report.thanks.take_action": "Вось Вашыя варыянты кантролю над тым, што Вы бачыце в Mastodon:",
|
||||
@@ -1100,7 +1136,7 @@
|
||||
"status.report": "Паскардзіцца на @{name}",
|
||||
"status.request_quote": "Даслаць запыт на цытаванне",
|
||||
"status.revoke_quote": "Выдаліць мой допіс з допісу @{name}",
|
||||
"status.sensitive_warning": "Уражвальны змест",
|
||||
"status.sensitive_warning": "Адчувальнае змесціва",
|
||||
"status.share": "Абагуліць",
|
||||
"status.show_less_all": "Згарнуць усё",
|
||||
"status.show_more_all": "Разгарнуць усё",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Aquesta informació no és disponible en aquest servidor.",
|
||||
"about.powered_by": "Xarxa social descentralitzada impulsada per {mastodon}",
|
||||
"about.rules": "Normes del servidor",
|
||||
"account.about": "Quant a",
|
||||
"account.account_note_header": "Nota personal",
|
||||
"account.activity": "Activitat",
|
||||
"account.add_note": "Afegeix una nota personal",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Tato informace nebyla zpřístupněna na tomto serveru.",
|
||||
"about.powered_by": "Decentralizovaná sociální média poháněná {mastodon}",
|
||||
"about.rules": "Pravidla serveru",
|
||||
"account.about": "O účtu",
|
||||
"account.account_note_header": "Osobní poznámka",
|
||||
"account.activity": "Aktivita",
|
||||
"account.add_note": "Přidat vlastní poznámku",
|
||||
@@ -446,8 +445,6 @@
|
||||
"emoji_button.search_results": "Výsledky hledání",
|
||||
"emoji_button.symbols": "Symboly",
|
||||
"emoji_button.travel": "Cestování a místa",
|
||||
"empty_column.account_about.me": "Zatím jste o sobě nepřidali žádné informace.",
|
||||
"empty_column.account_about.other": "{acct} zatím o sobě nepřidali žádné informace.",
|
||||
"empty_column.account_featured.me": "Zatím jste nic nezvýraznili. Věděli jste, že na svém profilu můžete zvýraznit hashtagy, které používáte nejvíce, a dokonce účty vašich přátel?",
|
||||
"empty_column.account_featured.other": "{acct} zatím nic nezvýraznili. Věděli jste, že na svém profilu můžete zvýraznit hashtagy, které používáte nejvíce, a dokonce účty vašich přátel?",
|
||||
"empty_column.account_featured_other.unknown": "Tento účet zatím nemá nic zvýrazněného.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Dyw'r wybodaeth yma heb ei wneud ar gael ar y gweinydd hwn.",
|
||||
"about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}",
|
||||
"about.rules": "Rheolau'r gweinydd",
|
||||
"account.about": "Ynghylch",
|
||||
"account.account_note_header": "Nodyn personol",
|
||||
"account.activity": "Gweithgaredd",
|
||||
"account.add_note": "Ychwanegu nodyn personol",
|
||||
@@ -486,8 +485,6 @@
|
||||
"emoji_button.search_results": "Canlyniadau chwilio",
|
||||
"emoji_button.symbols": "Symbolau",
|
||||
"emoji_button.travel": "Teithio a Llefydd",
|
||||
"empty_column.account_about.me": "Dydych chi heb ychwanegu unrhyw wybodaeth amdanoch chi'ch hun eto.",
|
||||
"empty_column.account_about.other": "Dyw {acct} ddim wedi ychwanegu unrhyw wybodaeth amdanyn nhw eu hunain eto.",
|
||||
"empty_column.account_featured.me": "Dydych chi ddim wedi cynnwys unrhyw beth eto. Oeddech chi'n gwybod y gallwch chi gynnwys yr hashnodau rydych chi'n eu defnyddio fwyaf, a hyd yn oed cyfrifon eich ffrindiau ar eich proffil?",
|
||||
"empty_column.account_featured.other": "Dyw {acct} heb gynnwys unrhyw beth eto. Oeddech chi'n gwybod y gallwch chi gynnwys yr hashnodau rydych chi'n eu defnyddio fwyaf, a hyd yn oed cyfrifon eich ffrindiau ar eich proffil?",
|
||||
"empty_column.account_featured_other.unknown": "Dyw'r cyfrif hwn heb gynnwys dim eto.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Denne information er ikke blevet gjort tilgængelig på denne server.",
|
||||
"about.powered_by": "Decentraliserede sociale medier drevet af {mastodon}",
|
||||
"about.rules": "Serverregler",
|
||||
"account.about": "Om",
|
||||
"account.account_note_header": "Personligt notat",
|
||||
"account.activity": "Aktivitet",
|
||||
"account.add_note": "Tilføj en personlig note",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Følges af {name1} og {name2}",
|
||||
"account.featured": "Fremhævet",
|
||||
"account.featured.accounts": "Profiler",
|
||||
"account.featured.collections": "Samlinger",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Seneste indlæg {date}",
|
||||
"account.featured_tags.last_status_never": "Ingen indlæg",
|
||||
"account.field_overflow": "Vis fuldt indhold",
|
||||
"account.filters.all": "Al aktivitet",
|
||||
"account.filters.boosts_toggle": "Vis fremhævelser",
|
||||
"account.filters.posts_boosts": "Indlæg og fremhævelser",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Søgeresultater",
|
||||
"emoji_button.symbols": "Symboler",
|
||||
"emoji_button.travel": "Rejser og steder",
|
||||
"empty_column.account_about.me": "Du har endnu ikke tilføjet nogen information om dig selv.",
|
||||
"empty_column.account_about.other": "{acct} har endnu ikke tilføjet nogen oplysninger om sig selv.",
|
||||
"empty_column.account_featured.me": "Intet fremhævet endnu. Vidste du, at du kan fremhæve dine mest brugte hashtags og endda din vens konti på din profil?",
|
||||
"empty_column.account_featured.other": "{acct} har ikke fremhævet noget endnu. Vidste du, at du kan fremhæve dine mest brugte hashtags og endda din vens konti på din profil?",
|
||||
"empty_column.account_featured_other.unknown": "Denne konto har ikke fremhævet noget endnu.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Diese Informationen sind auf diesem Server nicht verfügbar.",
|
||||
"about.powered_by": "Ein dezentralisiertes soziales Netzwerk, ermöglicht durch {mastodon}",
|
||||
"about.rules": "Serverregeln",
|
||||
"account.about": "Über",
|
||||
"account.account_note_header": "Persönliche Notiz",
|
||||
"account.activity": "Aktivitäten",
|
||||
"account.add_note": "Persönliche Notiz hinzufügen",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Gefolgt von {name1} und {name2}",
|
||||
"account.featured": "Vorgestellt",
|
||||
"account.featured.accounts": "Profile",
|
||||
"account.featured.collections": "Sammlungen",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Neuester Beitrag vom {date}",
|
||||
"account.featured_tags.last_status_never": "Keine Beiträge",
|
||||
"account.field_overflow": "Vollständigen Inhalt anzeigen",
|
||||
"account.filters.all": "Alle Aktivitäten",
|
||||
"account.filters.boosts_toggle": "Geteilte Beiträge anzeigen",
|
||||
"account.filters.posts_boosts": "Beiträge & geteilte Beiträge",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Suchergebnisse",
|
||||
"emoji_button.symbols": "Symbole",
|
||||
"emoji_button.travel": "Reisen & Orte",
|
||||
"empty_column.account_about.me": "Du hast noch keine Informationen über dich hinzugefügt.",
|
||||
"empty_column.account_about.other": "{acct} hat noch keine Informationen über sich hinzugefügt.",
|
||||
"empty_column.account_featured.me": "Du hast bisher noch nichts vorgestellt. Wusstest du, dass du deine häufig verwendeten Hashtags und sogar Profile von Freund*innen vorstellen kannst?",
|
||||
"empty_column.account_featured.other": "{acct} hat bisher noch nichts vorgestellt. Wusstest du, dass du deine häufig verwendeten Hashtags und sogar Profile von Freund*innen vorstellen kannst?",
|
||||
"empty_column.account_featured_other.unknown": "Dieses Profil hat bisher noch nichts vorgestellt.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Αυτές οι πληροφορίες δεν έχουν είναι διαθέσιμες σε αυτόν τον διακομιστή.",
|
||||
"about.powered_by": "Αποκεντρωμένο μέσο κοινωνικής δικτύωσης που βασίζεται στο {mastodon}",
|
||||
"about.rules": "Κανόνες διακομιστή",
|
||||
"account.about": "Σχετικά",
|
||||
"account.account_note_header": "Προσωπική σημείωση",
|
||||
"account.activity": "Δραστηριότητα",
|
||||
"account.add_note": "Προσθέστε μια προσωπική σημείωση",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Ακολουθείται από {name1} και {name2}",
|
||||
"account.featured": "Αναδεδειγμένα",
|
||||
"account.featured.accounts": "Προφίλ",
|
||||
"account.featured.collections": "Συλλογές",
|
||||
"account.featured.hashtags": "Ετικέτες",
|
||||
"account.featured_tags.last_status_at": "Τελευταία ανάρτηση στις {date}",
|
||||
"account.featured_tags.last_status_never": "Καμία ανάρτηση",
|
||||
"account.field_overflow": "Εμφάνιση πλήρους περιεχομένου",
|
||||
"account.filters.all": "Όλη η δραστηριότητα",
|
||||
"account.filters.boosts_toggle": "Εμφάνιση ενισχύσεων",
|
||||
"account.filters.posts_boosts": "Αναρτήσεις και ενισχύσεις",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Αποτελέσματα αναζήτησης",
|
||||
"emoji_button.symbols": "Σύμβολα",
|
||||
"emoji_button.travel": "Ταξίδια & Τοποθεσίες",
|
||||
"empty_column.account_about.me": "Δεν έχετε προσθέσει ακόμη καμία πληροφορία για τον εαυτό σας.",
|
||||
"empty_column.account_about.other": "Ο/Η {acct} δεν έχει προσθέσει ακόμη καμία πληροφορία για τον εαυτό του/της.",
|
||||
"empty_column.account_featured.me": "Δεν έχεις αναδείξει τίποτα ακόμη. Γνώριζες ότι μπορείς να αναδείξεις τις ετικέτες που χρησιμοποιείς περισσότερο, ακόμη και τους λογαριασμούς των φίλων σου στο προφίλ σου;",
|
||||
"empty_column.account_featured.other": "Ο/Η {acct} δεν έχει αναδείξει τίποτα ακόμη. Γνώριζες ότι μπορείς να αναδείξεις τις ετικέτες που χρησιμοποιείς περισσότερο, ακόμη και τους λογαριασμούς των φίλων σου στο προφίλ σου;",
|
||||
"empty_column.account_featured_other.unknown": "Αυτός ο λογαριασμός δεν έχει αναδείξει τίποτα ακόμη.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "This information has not been made available on this server.",
|
||||
"about.powered_by": "Decentralised social media powered by {mastodon}",
|
||||
"about.rules": "Server rules",
|
||||
"account.about": "About",
|
||||
"account.account_note_header": "Personal note",
|
||||
"account.activity": "Activity",
|
||||
"account.add_note": "Add a personal note",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Followed by {name1} and {name2}",
|
||||
"account.featured": "Featured",
|
||||
"account.featured.accounts": "Profiles",
|
||||
"account.featured.collections": "Collections",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Last post on {date}",
|
||||
"account.featured_tags.last_status_never": "No posts",
|
||||
"account.field_overflow": "Show full content",
|
||||
"account.filters.all": "All activity",
|
||||
"account.filters.boosts_toggle": "Show boosts",
|
||||
"account.filters.posts_boosts": "Posts and boosts",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Search results",
|
||||
"emoji_button.symbols": "Symbols",
|
||||
"emoji_button.travel": "Travel & Places",
|
||||
"empty_column.account_about.me": "You have not added any information about yourself yet.",
|
||||
"empty_column.account_about.other": "{acct} has not added any information about themselves yet.",
|
||||
"empty_column.account_featured.me": "You have not featured anything yet. Did you know that you can feature your hashtags you use the most, and even your friend’s accounts on your profile?",
|
||||
"empty_column.account_featured.other": "{acct} has not featured anything yet. Did you know that you can feature your hashtags you use the most, and even your friend’s accounts on your profile?",
|
||||
"empty_column.account_featured_other.unknown": "This account has not featured anything yet.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Esta información no está disponible en este servidor.",
|
||||
"about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}",
|
||||
"about.rules": "Reglas del servidor",
|
||||
"account.about": "Información",
|
||||
"account.account_note_header": "Nota personal",
|
||||
"account.activity": "Actividad",
|
||||
"account.add_note": "Agregar una nota personal",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Seguido por {name1} y {name2}",
|
||||
"account.featured": "Destacados",
|
||||
"account.featured.accounts": "Perfiles",
|
||||
"account.featured.collections": "Colecciones",
|
||||
"account.featured.hashtags": "Etiquetas",
|
||||
"account.featured_tags.last_status_at": "Último mensaje: {date}",
|
||||
"account.featured_tags.last_status_never": "Sin mensajes",
|
||||
"account.field_overflow": "Mostrar contenido completo",
|
||||
"account.filters.all": "Toda la actividad",
|
||||
"account.filters.boosts_toggle": "Mostrar adhesiones",
|
||||
"account.filters.posts_boosts": "Mensajes y adhesiones",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Resultados de búsqueda",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viajes y lugares",
|
||||
"empty_column.account_about.me": "Todavía no has agregaste ninguna información sobre vos.",
|
||||
"empty_column.account_about.other": "{acct} todavía no agregó ninguna información sobre esta cuenta.",
|
||||
"empty_column.account_featured.me": "Todavía no destacaste nada. ¿Sabías que en tu perfil podés destacar tus etiquetas que más usás e incluso las cuentas de tus contactos?",
|
||||
"empty_column.account_featured.other": "{acct} todavía no destacó nada. ¿Sabías que en tu perfil podés destacar tus etiquetas que más usás e incluso las cuentas de tus contactos?",
|
||||
"empty_column.account_featured_other.unknown": "Esta cuenta todavía no destacó nada.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Esta información no está disponible en este servidor.",
|
||||
"about.powered_by": "Medio social descentralizado con tecnología de {mastodon}",
|
||||
"about.rules": "Reglas del servidor",
|
||||
"account.about": "Acerca de",
|
||||
"account.account_note_header": "Nota personal",
|
||||
"account.activity": "Actividad",
|
||||
"account.add_note": "Añadir una nota personal",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Seguid por {name1} y {name2}",
|
||||
"account.featured": "Destacado",
|
||||
"account.featured.accounts": "Perfiles",
|
||||
"account.featured.collections": "Colecciones",
|
||||
"account.featured.hashtags": "Etiquetas",
|
||||
"account.featured_tags.last_status_at": "Última publicación el {date}",
|
||||
"account.featured_tags.last_status_never": "Sin publicaciones",
|
||||
"account.field_overflow": "Mostrar contenido completo",
|
||||
"account.filters.all": "Toda la actividad",
|
||||
"account.filters.boosts_toggle": "Mostrar impulsos",
|
||||
"account.filters.posts_boosts": "Publicaciones e impulsos",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Resultados de búsqueda",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viajes y lugares",
|
||||
"empty_column.account_about.me": "Aún no has añadido ninguna información sobre ti.",
|
||||
"empty_column.account_about.other": "{acct} aún no ha añadido ninguna información sobre sí mismo/a.",
|
||||
"empty_column.account_featured.me": "Aún no has destacado nada. ¿Sabías que puedes destacar las etiquetas que más usas e incluso las cuentas de tus amigos en tu perfil?",
|
||||
"empty_column.account_featured.other": "{acct} no ha destacado nada todavía. ¿Sabías que puedes destacar las etiquetas que más usas e incluso las cuentas de tus amigos en tu perfil?",
|
||||
"empty_column.account_featured_other.unknown": "Esta cuenta no ha destacado nada todavía.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Esta información no está disponible en este servidor.",
|
||||
"about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}",
|
||||
"about.rules": "Reglas del servidor",
|
||||
"account.about": "Acerca de",
|
||||
"account.account_note_header": "Nota personal",
|
||||
"account.activity": "Actividad",
|
||||
"account.add_note": "Añadir una nota personal",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Seguido por {name1} y {name2}",
|
||||
"account.featured": "Destacado",
|
||||
"account.featured.accounts": "Perfiles",
|
||||
"account.featured.collections": "Colecciones",
|
||||
"account.featured.hashtags": "Etiquetas",
|
||||
"account.featured_tags.last_status_at": "Última publicación el {date}",
|
||||
"account.featured_tags.last_status_never": "Sin publicaciones",
|
||||
"account.field_overflow": "Mostrar contenido completo",
|
||||
"account.filters.all": "Toda la actividad",
|
||||
"account.filters.boosts_toggle": "Mostrar impulsos",
|
||||
"account.filters.posts_boosts": "Publicaciones e impulsos",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Resultados de búsqueda",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viajes y lugares",
|
||||
"empty_column.account_about.me": "Aún no has añadido ninguna información sobre ti.",
|
||||
"empty_column.account_about.other": "{acct} aún no ha añadido ninguna información sobre sí mismo/a/e.",
|
||||
"empty_column.account_featured.me": "Aún no has destacado nada. ¿Sabías que puedes destacar las etiquetas que más usas e incluso las cuentas de tus amigos en tu perfil?",
|
||||
"empty_column.account_featured.other": "{acct} aún no ha destacado nada. ¿Sabías que puedes destacar las etiquetas que más usas e incluso las cuentas de tus amigos en tu perfil?",
|
||||
"empty_column.account_featured_other.unknown": "Esta cuenta aún no ha destacado nada.",
|
||||
@@ -1001,7 +1000,7 @@
|
||||
"report.statuses.subtitle": "Selecciona todos los que correspondan",
|
||||
"report.statuses.title": "¿Hay alguna publicación que respalde este informe?",
|
||||
"report.submission_error": "No se pudo enviar el reporte",
|
||||
"report.submission_error_details": "Comprueba tu conexión de red e intenta volver a intentarlo más tarde.",
|
||||
"report.submission_error_details": "Comprueba tu conexión de red e inténtalo más tarde.",
|
||||
"report.submit": "Enviar",
|
||||
"report.target": "Reportando {target}",
|
||||
"report.thanks.take_action": "Aquí están tus opciones para controlar lo que ves en Mastodon:",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "See info ei ole selles serveris saadavaks tehtud.",
|
||||
"about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}",
|
||||
"about.rules": "Serveri reeglid",
|
||||
"account.about": "Teave",
|
||||
"account.account_note_header": "Isiklik märge",
|
||||
"account.activity": "Tegevus",
|
||||
"account.add_note": "Lisa isiklik märge",
|
||||
@@ -448,8 +447,6 @@
|
||||
"emoji_button.search_results": "Otsitulemused",
|
||||
"emoji_button.symbols": "Sümbolid",
|
||||
"emoji_button.travel": "Reisimine & kohad",
|
||||
"empty_column.account_about.me": "Sa pole enda kohta veel mitte mingit teavet lisanud.",
|
||||
"empty_column.account_about.other": "{acct} pole enda kohta veel mitte mingit teavet lisanud.",
|
||||
"empty_column.account_featured.me": "Sa pole veel midagi esile tõstnud. Kas sa teadsid, et oma profiilis saad esile tõsta enamkasutatavaid teemaviiteid või sõbra kasutajakontot?",
|
||||
"empty_column.account_featured.other": "{acct} pole veel midagi esile tõstnud. Kas sa teadsid, et oma profiilis saad esile tõsta enamkasutatavaid teemaviiteid või sõbra kasutajakontot?",
|
||||
"empty_column.account_featured_other.unknown": "See kasutajakonto pole veel midagi esile tõstnud.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Näitä tietoja ei ole julkaistu tällä palvelimella.",
|
||||
"about.powered_by": "Hajautetun sosiaalisen median tarjoaa {mastodon}",
|
||||
"about.rules": "Palvelimen säännöt",
|
||||
"account.about": "Tietoja",
|
||||
"account.account_note_header": "Henkilökohtainen muistiinpano",
|
||||
"account.activity": "Toiminta",
|
||||
"account.add_note": "Lisää henkilökohtainen muistiinpano",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Seuraajina {name1} ja {name2}",
|
||||
"account.featured": "Esittelyssä",
|
||||
"account.featured.accounts": "Profiilit",
|
||||
"account.featured.collections": "Kokoelmat",
|
||||
"account.featured.hashtags": "Aihetunnisteet",
|
||||
"account.featured_tags.last_status_at": "Viimeisin julkaisu {date}",
|
||||
"account.featured_tags.last_status_never": "Ei julkaisuja",
|
||||
"account.field_overflow": "Näytä koko sisältö",
|
||||
"account.filters.all": "Kaikki toiminta",
|
||||
"account.filters.boosts_toggle": "Näytä tehostukset",
|
||||
"account.filters.posts_boosts": "Julkaisut ja tehostukset",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Hakutulokset",
|
||||
"emoji_button.symbols": "Symbolit",
|
||||
"emoji_button.travel": "Matkailu ja paikat",
|
||||
"empty_column.account_about.me": "Et ole vielä lisännyt tietoja itsestäsi.",
|
||||
"empty_column.account_about.other": "{acct} ei ole vielä lisännyt tietoja itsestään.",
|
||||
"empty_column.account_featured.me": "Et esittele vielä mitään. Tiesitkö, että voit esitellä profiilissasi eniten käyttämiäsi aihetunnisteita ja jopa ystäviesi tilejä?",
|
||||
"empty_column.account_featured.other": "{acct} ei esittele vielä mitään. Tiesitkö, että voit esitellä profiilissasi eniten käyttämiäsi aihetunnisteita ja jopa ystäviesi tilejä?",
|
||||
"empty_column.account_featured_other.unknown": "Tämä tili ei esittele vielä mitään.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Hetta er ikki tøkt á føroyska servaranum enn.",
|
||||
"about.powered_by": "Miðfirra almennur miðil koyrandi á {mastodon}",
|
||||
"about.rules": "Ambætarareglur",
|
||||
"account.about": "Um",
|
||||
"account.account_note_header": "Persónlig viðmerking",
|
||||
"account.activity": "Virksemi",
|
||||
"account.add_note": "Legg persónliga notu afturat",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "{name1} og {name2} fylgja",
|
||||
"account.featured": "Tikin fram",
|
||||
"account.featured.accounts": "Vangar",
|
||||
"account.featured.collections": "Søvn",
|
||||
"account.featured.hashtags": "Frámerki",
|
||||
"account.featured_tags.last_status_at": "Seinasta strongur skrivaður {date}",
|
||||
"account.featured_tags.last_status_never": "Einki uppslag",
|
||||
"account.field_overflow": "Vís alt innihaldið",
|
||||
"account.filters.all": "Alt virksemi",
|
||||
"account.filters.boosts_toggle": "Vís stimbranir",
|
||||
"account.filters.posts_boosts": "Postar og stimbranir",
|
||||
@@ -167,6 +168,7 @@
|
||||
"account_edit_tags.help_text": "Sermerkt frámerki hjálpa brúkarum at varnast og virka saman við vanga tínum. Tey síggjast sum filtur á virksemisvísingini av vanga tínum.",
|
||||
"account_edit_tags.search_placeholder": "Áset eitt frámerki…",
|
||||
"account_edit_tags.suggestions": "Uppskot:",
|
||||
"account_edit_tags.tag_status_count": "{count, plural, one {# postur} other {# postar}}",
|
||||
"account_note.placeholder": "Klikka fyri at leggja viðmerking afturat",
|
||||
"admin.dashboard.daily_retention": "Hvussu nógvir brúkarar eru eftir, síðani tey skrásettu seg, roknað í døgum",
|
||||
"admin.dashboard.monthly_retention": "Hvussu nógvir brúkarar eru eftir síðani tey skrásettu seg, roknað í mánaðum",
|
||||
@@ -305,11 +307,13 @@
|
||||
"collections.no_collections_yet": "Eingi søvn enn.",
|
||||
"collections.old_last_post_note": "Postaði seinast fyri meira enn einari viku síðani",
|
||||
"collections.remove_account": "Strika hesa kontuna",
|
||||
"collections.report_collection": "Melda hetta savnið",
|
||||
"collections.search_accounts_label": "Leita eftir kontum at leggja afturat…",
|
||||
"collections.search_accounts_max_reached": "Tú hevur lagt afturat mesta talið av kontum",
|
||||
"collections.sensitive": "Viðkvæmt",
|
||||
"collections.topic_hint": "Legg afturat eitt frámerki, sum hjálpir øðrum at skilja høvuðevnið í hesum savninum.",
|
||||
"collections.view_collection": "Vís savn",
|
||||
"collections.view_other_collections_by_user": "Vís hini søvnini hjá hesum brúkaranum",
|
||||
"collections.visibility_public": "Alment",
|
||||
"collections.visibility_public_hint": "Kann uppdagast í leitiúrslitum og øðrum økjum, har viðmæli síggjast.",
|
||||
"collections.visibility_title": "Sýni",
|
||||
@@ -495,8 +499,6 @@
|
||||
"emoji_button.search_results": "Leitiúrslit",
|
||||
"emoji_button.symbols": "Ímyndir",
|
||||
"emoji_button.travel": "Ferðing og støð",
|
||||
"empty_column.account_about.me": "Tú hevur ikki lagt nakrar upplýsingar um teg sjálva/n inn enn.",
|
||||
"empty_column.account_about.other": "{acct} hevur ikki lagt nakrar upplýsingar um seg sjálva/n inn enn.",
|
||||
"empty_column.account_featured.me": "Tú hevur ikki tikið nakað fram enn. Visti tú, at tú kanst taka fram tey frámerki, tú brúkar mest, og sjálvt kontur hjá vinum tínum á vangan hjá tær?",
|
||||
"empty_column.account_featured.other": "{acct} hevur ikki tikið nakað fram enn. Visti tú, at tú kanst taka fram tey frámerki, tú brúkar mest, og sjálvt kontur hjá vinum tínum á vangan hjá tær?",
|
||||
"empty_column.account_featured_other.unknown": "Hendan kontan hevur ikki tikið nakað fram enn.",
|
||||
@@ -975,6 +977,7 @@
|
||||
"report.category.title_account": "vangi",
|
||||
"report.category.title_status": "postinum",
|
||||
"report.close": "Liðugt",
|
||||
"report.collection_comment": "Hví vilt tú melda hetta savnið?",
|
||||
"report.comment.title": "Er nakað annað, sum tú heldur, at vit áttu at vitað?",
|
||||
"report.forward": "Víðarisend til {target}",
|
||||
"report.forward_hint": "Kontan er frá einum øðrum ambætara. Send eitt dulnevnt avrit av meldingini hagar eisini?",
|
||||
@@ -996,6 +999,8 @@
|
||||
"report.rules.title": "Hvørjar reglur verða brotnar?",
|
||||
"report.statuses.subtitle": "Vel alt viðkomandi",
|
||||
"report.statuses.title": "Eru nakrir postar, sum stuðla uppundir hesa meldingina?",
|
||||
"report.submission_error": "Meldingin kundi ikki fráboðast",
|
||||
"report.submission_error_details": "Vinarliga eftirkanna netsambandið og royn aftur seinni.",
|
||||
"report.submit": "Send inn",
|
||||
"report.target": "Meldi {target}",
|
||||
"report.thanks.take_action": "Her eru tínir møguleikar fyri at stýra, hvat tú sær á Mastodon:",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
|
||||
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
|
||||
"about.rules": "Règles du serveur",
|
||||
"account.about": "À propos",
|
||||
"account.account_note_header": "Note personnelle",
|
||||
"account.activity": "Activité",
|
||||
"account.add_note": "Ajouter une note personnelle",
|
||||
@@ -45,6 +44,7 @@
|
||||
"account.familiar_followers_two": "Suivi·e par {name1} et {name2}",
|
||||
"account.featured": "En vedette",
|
||||
"account.featured.accounts": "Profils",
|
||||
"account.featured.collections": "Collections",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Dernière publication {date}",
|
||||
"account.featured_tags.last_status_never": "Aucune publication",
|
||||
@@ -312,6 +312,7 @@
|
||||
"collections.sensitive": "Sensible",
|
||||
"collections.topic_hint": "Ajouter un hashtag pour aider les autres personnes à comprendre le sujet de la collection.",
|
||||
"collections.view_collection": "Voir la collection",
|
||||
"collections.view_other_collections_by_user": "Voir les autres collections par ce compte",
|
||||
"collections.visibility_public": "Publique",
|
||||
"collections.visibility_public_hint": "Visible dans les résultats de recherche et les recommandations.",
|
||||
"collections.visibility_title": "Visibilité",
|
||||
@@ -497,8 +498,6 @@
|
||||
"emoji_button.search_results": "Résultats",
|
||||
"emoji_button.symbols": "Symboles",
|
||||
"emoji_button.travel": "Voyage et lieux",
|
||||
"empty_column.account_about.me": "Vous n'avez pas encore ajouté d'informations sur vous.",
|
||||
"empty_column.account_about.other": "{acct} n'a pas encore ajouté d'informations sur lui-même.",
|
||||
"empty_column.account_featured.me": "Vous n'avez pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured.other": "{acct} n'a pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured_other.unknown": "Ce compte n'a mis aucun contenu en avant pour l'instant.",
|
||||
@@ -977,7 +976,7 @@
|
||||
"report.category.title_account": "ce profil",
|
||||
"report.category.title_status": "ce message",
|
||||
"report.close": "Terminé",
|
||||
"report.collection_comment": "Pourquoi souhaitez-vous signaler cette collection ?",
|
||||
"report.collection_comment": "Pourquoi voulez-vous signaler cette collection ?",
|
||||
"report.comment.title": "Y a-t-il autre chose que nous devrions savoir?",
|
||||
"report.forward": "Transférer à {target}",
|
||||
"report.forward_hint": "Le compte provient d’un autre serveur. Envoyer une copie anonyme du rapport là-bas également?",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
|
||||
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
|
||||
"about.rules": "Règles du serveur",
|
||||
"account.about": "À propos",
|
||||
"account.account_note_header": "Note personnelle",
|
||||
"account.activity": "Activité",
|
||||
"account.add_note": "Ajouter une note personnelle",
|
||||
@@ -45,6 +44,7 @@
|
||||
"account.familiar_followers_two": "Suivi·e par {name1} et {name2}",
|
||||
"account.featured": "En vedette",
|
||||
"account.featured.accounts": "Profils",
|
||||
"account.featured.collections": "Collections",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Dernier message le {date}",
|
||||
"account.featured_tags.last_status_never": "Aucun message",
|
||||
@@ -312,6 +312,7 @@
|
||||
"collections.sensitive": "Sensible",
|
||||
"collections.topic_hint": "Ajouter un hashtag pour aider les autres personnes à comprendre le sujet de la collection.",
|
||||
"collections.view_collection": "Voir la collection",
|
||||
"collections.view_other_collections_by_user": "Voir les autres collections par ce compte",
|
||||
"collections.visibility_public": "Publique",
|
||||
"collections.visibility_public_hint": "Visible dans les résultats de recherche et les recommandations.",
|
||||
"collections.visibility_title": "Visibilité",
|
||||
@@ -497,8 +498,6 @@
|
||||
"emoji_button.search_results": "Résultats de la recherche",
|
||||
"emoji_button.symbols": "Symboles",
|
||||
"emoji_button.travel": "Voyage et lieux",
|
||||
"empty_column.account_about.me": "Vous n'avez pas encore ajouté d'informations sur vous.",
|
||||
"empty_column.account_about.other": "{acct} n'a pas encore ajouté d'informations sur lui-même.",
|
||||
"empty_column.account_featured.me": "Vous n'avez pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured.other": "{acct} n'a pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured_other.unknown": "Ce compte n'a mis aucun contenu en avant pour l'instant.",
|
||||
@@ -977,7 +976,7 @@
|
||||
"report.category.title_account": "ce profil",
|
||||
"report.category.title_status": "ce message",
|
||||
"report.close": "Terminé",
|
||||
"report.collection_comment": "Pourquoi souhaitez-vous signaler cette collection ?",
|
||||
"report.collection_comment": "Pourquoi voulez-vous signaler cette collection ?",
|
||||
"report.comment.title": "Y a-t-il autre chose que nous devrions savoir ?",
|
||||
"report.forward": "Transférer à {target}",
|
||||
"report.forward_hint": "Le compte provient d’un autre serveur. Envoyer également une copie anonyme du rapport ?",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Níor cuireadh an t-eolas seo ar fáil ar an bhfreastalaí seo.",
|
||||
"about.powered_by": "Meáin shóisialta díláraithe faoi chumhacht {mastodon}",
|
||||
"about.rules": "Rialacha an fhreastalaí",
|
||||
"account.about": "Maidir",
|
||||
"account.account_note_header": "Nóta pearsanta",
|
||||
"account.activity": "Gníomhaíocht",
|
||||
"account.add_note": "Cuir nóta pearsanta leis",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Ina dhiaidh sin tá {name1} agus {name2}",
|
||||
"account.featured": "Faoi thrácht",
|
||||
"account.featured.accounts": "Próifílí",
|
||||
"account.featured.collections": "Bailiúcháin",
|
||||
"account.featured.hashtags": "Haischlibeanna",
|
||||
"account.featured_tags.last_status_at": "Postáil is déanaí ar {date}",
|
||||
"account.featured_tags.last_status_never": "Gan aon phoist",
|
||||
"account.field_overflow": "Taispeáin an t-ábhar iomlán",
|
||||
"account.filters.all": "Gach gníomhaíocht",
|
||||
"account.filters.boosts_toggle": "Taispeáin borradh",
|
||||
"account.filters.posts_boosts": "Poist agus borradh",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Torthaí cuardaigh",
|
||||
"emoji_button.symbols": "Comharthaí",
|
||||
"emoji_button.travel": "Taisteal ⁊ Áiteanna",
|
||||
"empty_column.account_about.me": "Níl aon fhaisnéis fút féin curtha leis agat go fóill.",
|
||||
"empty_column.account_about.other": "Níl aon fhaisnéis fúthu féin curtha leis ag {acct} go fóill.",
|
||||
"empty_column.account_featured.me": "Níl aon rud curtha i láthair agat go fóill. An raibh a fhios agat gur féidir leat na haischlibeanna is mó a úsáideann tú, agus fiú cuntais do chairde, a chur i láthair ar do phróifíl?",
|
||||
"empty_column.account_featured.other": "Níl aon rud feicthe ag {acct} go fóill. An raibh a fhios agat gur féidir leat na hashtags is mó a úsáideann tú, agus fiú cuntais do chairde, a chur ar do phróifíl?",
|
||||
"empty_column.account_featured_other.unknown": "Níl aon rud le feiceáil sa chuntas seo go fóill.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Esta información non está dispoñible neste servidor.",
|
||||
"about.powered_by": "Comunicación social descentralizada grazas a {mastodon}",
|
||||
"about.rules": "Regras do servidor",
|
||||
"account.about": "Sobre",
|
||||
"account.account_note_header": "Nota persoal",
|
||||
"account.activity": "Actividade",
|
||||
"account.add_note": "Engadir nota persoal",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Seguida por {name1} e {name2}",
|
||||
"account.featured": "Destacado",
|
||||
"account.featured.accounts": "Perfís",
|
||||
"account.featured.collections": "Coleccións",
|
||||
"account.featured.hashtags": "Cancelos",
|
||||
"account.featured_tags.last_status_at": "Última publicación o {date}",
|
||||
"account.featured_tags.last_status_never": "Sen publicacións",
|
||||
"account.field_overflow": "Mostrar contido completo",
|
||||
"account.filters.all": "Toda actividade",
|
||||
"account.filters.boosts_toggle": "Mostrar promocións",
|
||||
"account.filters.posts_boosts": "Publicacións e promocións",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Resultados da procura",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viaxes e Lugares",
|
||||
"empty_column.account_about.me": "Aínda non engadiches ningunha información sobre ti.",
|
||||
"empty_column.account_about.other": "{acct} aínda non engadiu ningunha información sobre a súa conta.",
|
||||
"empty_column.account_featured.me": "Aínda non destacaches nada. Sabías que podes facer destacar no teu perfil os cancelos que máis usas, incluso as contas das túas amizades?",
|
||||
"empty_column.account_featured.other": "{acct} aínda non escolleu nada para destacar. Sabías que podes facer destacatar no teu perfil os cancelos que máis usas, incluso os perfís das túas amizades?",
|
||||
"empty_column.account_featured_other.unknown": "Esta conta aínda non destacou nada.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "המידע אינו זמין על שרת זה.",
|
||||
"about.powered_by": "רשת חברתית מבוזרת המופעלת על ידי {mastodon}",
|
||||
"about.rules": "כללי השרת",
|
||||
"account.about": "אודות",
|
||||
"account.account_note_header": "הערה אישית",
|
||||
"account.activity": "פעילות",
|
||||
"account.add_note": "הוספת הערה פרטית",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "החשבון נעקב על ידי {name1} ו־{name2}",
|
||||
"account.featured": "מומלץ",
|
||||
"account.featured.accounts": "פרופילים",
|
||||
"account.featured.collections": "אוספים",
|
||||
"account.featured.hashtags": "תגיות",
|
||||
"account.featured_tags.last_status_at": "חצרוץ אחרון בתאריך {date}",
|
||||
"account.featured_tags.last_status_never": "אין חצרוצים",
|
||||
"account.field_overflow": "הצג תוכן מלא",
|
||||
"account.filters.all": "כל הפעילות",
|
||||
"account.filters.boosts_toggle": "הצגת הדהודים",
|
||||
"account.filters.posts_boosts": "הודעות והדהודים",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "תוצאות חיפוש",
|
||||
"emoji_button.symbols": "סמלים",
|
||||
"emoji_button.travel": "טיולים ואתרים",
|
||||
"empty_column.account_about.me": "עוד לא הוספת מידע על עצמך.",
|
||||
"empty_column.account_about.other": "{acct} עוד לא הוסיפו מידע עצמי.",
|
||||
"empty_column.account_featured.me": "עוד לא קידמת תכנים. הידעת שניתן לקדם תגיות שבשימושך התדיר או אפילו את החשבונות של חבריםות בפרופיל שלך?",
|
||||
"empty_column.account_featured.other": "{acct} עוד לא קידם תכנים. הידעת שניתן לקדם תגיות שבשימושך התדיר או אפילו את החשבונות של חבריםות בפרופיל שלך?",
|
||||
"empty_column.account_featured_other.unknown": "חשבון זה עוד לא קידם תכנים.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Ez az információ nem lett közzétéve ezen a kiszolgálón.",
|
||||
"about.powered_by": "Decentralizált közösségi média a {mastodon} segítségével",
|
||||
"about.rules": "Kiszolgáló szabályai",
|
||||
"account.about": "Névjegy",
|
||||
"account.account_note_header": "Személyes megjegyzés",
|
||||
"account.activity": "Tevékenység",
|
||||
"account.add_note": "Személyes megjegyzés hozzáadása",
|
||||
@@ -477,8 +476,6 @@
|
||||
"emoji_button.search_results": "Keresési találatok",
|
||||
"emoji_button.symbols": "Szimbólumok",
|
||||
"emoji_button.travel": "Utazás és helyek",
|
||||
"empty_column.account_about.me": "Még nem adtál meg semmilyen információt magadról.",
|
||||
"empty_column.account_about.other": "{acct} nem adott meg semmilyen információt magáról.",
|
||||
"empty_column.account_featured.me": "Még semmit sem emeltél ki. Tudtad, hogy kiemelheted a profilodon a legtöbbet használt hashtageidet, és még a barátaid fiókját is?",
|
||||
"empty_column.account_featured.other": "{acct} még semmit sem emelt ki. Tudtad, hogy kiemelheted a profilodon a legtöbbet használt hashtageidet, és még a barátaid fiókját is?",
|
||||
"empty_column.account_featured_other.unknown": "Ez a fiók még semmit sem emelt ki.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Þessar upplýsingar hafa ekki verið gerðar aðgengilegar á þessum netþjóni.",
|
||||
"about.powered_by": "Dreifhýstur samskiptamiðill keyrður með {mastodon}",
|
||||
"about.rules": "Reglur netþjónsins",
|
||||
"account.about": "Um aðganginn",
|
||||
"account.account_note_header": "Einkaminnispunktur",
|
||||
"account.activity": "Virkni",
|
||||
"account.add_note": "Bæta við einkaminnispunkti",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Fylgt af {name1} og {name2}",
|
||||
"account.featured": "Með aukið vægi",
|
||||
"account.featured.accounts": "Notendasnið",
|
||||
"account.featured.collections": "Söfn",
|
||||
"account.featured.hashtags": "Myllumerki",
|
||||
"account.featured_tags.last_status_at": "Síðasta færsla þann {date}",
|
||||
"account.featured_tags.last_status_never": "Engar færslur",
|
||||
"account.field_overflow": "Birta allt efnið",
|
||||
"account.filters.all": "Öll virkni",
|
||||
"account.filters.boosts_toggle": "Sýna endurbirtingar",
|
||||
"account.filters.posts_boosts": "Færslur og endurbirtingar",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Leitarniðurstöður",
|
||||
"emoji_button.symbols": "Tákn",
|
||||
"emoji_button.travel": "Ferðalög og staðir",
|
||||
"empty_column.account_about.me": "Þú hefur ekki enn bætt við neinum upplýsingum um þig.",
|
||||
"empty_column.account_about.other": "{acct} hefur ekki enn bætt við neinum upplýsingum um sig.",
|
||||
"empty_column.account_featured.me": "Þú hefur enn ekki sett neitt sem áberandi. Vissirðu að þú getur gefið meira vægi á notandasniðinu þínu ýmsum myllumerkjum sem þú notar oft og jafnvel aðgöngum vina þinna?",
|
||||
"empty_column.account_featured.other": "{acct} hefur enn ekki sett neitt sem áberandi. Vissirðu að þú getur gefið meira vægi á notandasniðinu þínu ýmsum myllumerkjum sem þú notar oft og jafnvel aðgöngum vina þinna?",
|
||||
"empty_column.account_featured_other.unknown": "Þessi notandi hefur enn ekki sett neitt sem áberandi.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Queste informazioni non sono state rese disponibili su questo server.",
|
||||
"about.powered_by": "Social media decentralizzato basato su {mastodon}",
|
||||
"about.rules": "Regole del server",
|
||||
"account.about": "Info",
|
||||
"account.account_note_header": "Note personali",
|
||||
"account.activity": "Attività",
|
||||
"account.add_note": "Aggiungi una nota personale",
|
||||
@@ -498,8 +497,6 @@
|
||||
"emoji_button.search_results": "Risultati della ricerca",
|
||||
"emoji_button.symbols": "Simboli",
|
||||
"emoji_button.travel": "Viaggi & Luoghi",
|
||||
"empty_column.account_about.me": "Non hai ancora aggiunto alcuna informazione su di te.",
|
||||
"empty_column.account_about.other": "{acct} non ha ancora aggiunto alcuna informazione su sé stesso/a.",
|
||||
"empty_column.account_featured.me": "Non hai ancora messo in evidenza nulla. Sapevi che puoi mettere in evidenza gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?",
|
||||
"empty_column.account_featured.other": "{acct} non ha ancora messo in evidenza nulla. Sapevi che puoi mettere in evidenza gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?",
|
||||
"empty_column.account_featured_other.unknown": "Questo account non ha ancora pubblicato nulla.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "이 정보는 이 서버에서 사용할 수 없습니다.",
|
||||
"about.powered_by": "{mastodon}으로 구동되는 분산 소셜 미디어",
|
||||
"about.rules": "서버 규칙",
|
||||
"account.about": "정보",
|
||||
"account.account_note_header": "개인 메모",
|
||||
"account.activity": "활동",
|
||||
"account.add_note": "개인 메모 추가",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Tsit ê資訊bē-tàng tī tsit ê服侍器使用。",
|
||||
"about.powered_by": "由 {mastodon} 提供ê非中心化社群媒體",
|
||||
"about.rules": "服侍器ê規則",
|
||||
"account.about": "概要",
|
||||
"account.account_note_header": "個人ê註解",
|
||||
"account.activity": "活動",
|
||||
"account.add_note": "加私人ê註解",
|
||||
@@ -487,8 +486,6 @@
|
||||
"emoji_button.search_results": "Tshiau-tshuē ê結果",
|
||||
"emoji_button.symbols": "符號",
|
||||
"emoji_button.travel": "旅行kap地點",
|
||||
"empty_column.account_about.me": "Lí iáu bē加任何關係lí ê資訊。",
|
||||
"empty_column.account_about.other": "{acct} iáu bē加任何關係伊ê資訊。",
|
||||
"empty_column.account_featured.me": "Lí iáu無任何ê特色內容。Lí kám知影lí ē當kā lí tsia̍p-tsia̍p用ê hashtag,甚至是朋友ê口座揀做特色ê內容,khǹg佇lí ê個人資料內底?",
|
||||
"empty_column.account_featured.other": "{acct} iáu無任何ê特色內容。Lí kám知影lí ē當kā lí tsia̍p-tsia̍p用ê hashtag,甚至是朋友ê口座揀做特色ê內容,khǹg佇lí ê個人資料內底?",
|
||||
"empty_column.account_featured_other.unknown": "Tsit ê口座iáu無任何ê特色內容。",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Deze informatie is niet beschikbaar gemaakt op deze server.",
|
||||
"about.powered_by": "Gedecentraliseerde sociale media mogelijk gemaakt door {mastodon}",
|
||||
"about.rules": "Serverregels",
|
||||
"account.about": "Over",
|
||||
"account.account_note_header": "Persoonlijke opmerking",
|
||||
"account.activity": "Activiteit",
|
||||
"account.add_note": "Een persoonlijke opmerking toevoegen",
|
||||
@@ -45,6 +44,7 @@
|
||||
"account.familiar_followers_two": "Gevolgd door {name1} en {name2}",
|
||||
"account.featured": "Uitgelicht",
|
||||
"account.featured.accounts": "Profielen",
|
||||
"account.featured.collections": "Verzamelingen",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Laatste bericht op {date}",
|
||||
"account.featured_tags.last_status_never": "Geen berichten",
|
||||
@@ -167,6 +167,7 @@
|
||||
"account_edit_tags.help_text": "Aanbevolen hashtags helpen gebruikers je profiel te ontdekken en te communiceren. Ze verschijnen als filters op de activiteitenweergave van je pagina.",
|
||||
"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_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",
|
||||
@@ -305,11 +306,13 @@
|
||||
"collections.no_collections_yet": "Nog geen verzamelingen.",
|
||||
"collections.old_last_post_note": "Laatst gepost over een week geleden",
|
||||
"collections.remove_account": "Deze account verwijderen",
|
||||
"collections.report_collection": "Deze verzameling rapporteren",
|
||||
"collections.search_accounts_label": "Zoek naar accounts om toe te voegen…",
|
||||
"collections.search_accounts_max_reached": "Je hebt het maximum aantal accounts toegevoegd",
|
||||
"collections.sensitive": "Gevoelig",
|
||||
"collections.topic_hint": "Voeg een hashtag toe die anderen helpt het hoofdonderwerp van deze verzameling te begrijpen.",
|
||||
"collections.view_collection": "Verzameling bekijken",
|
||||
"collections.view_other_collections_by_user": "Bekijk andere verzamelingen van deze gebruiker",
|
||||
"collections.visibility_public": "Openbaar",
|
||||
"collections.visibility_public_hint": "Te zien onder zoekresultaten en in andere gebieden waar aanbevelingen verschijnen.",
|
||||
"collections.visibility_title": "Zichtbaarheid",
|
||||
@@ -495,8 +498,6 @@
|
||||
"emoji_button.search_results": "Zoekresultaten",
|
||||
"emoji_button.symbols": "Symbolen",
|
||||
"emoji_button.travel": "Reizen en locaties",
|
||||
"empty_column.account_about.me": "Je hebt nog een enkele informatie over jezelf toegevoegd.",
|
||||
"empty_column.account_about.other": "{acct} heeft nog geen enkele informatie over zichzelf toegevoegd.",
|
||||
"empty_column.account_featured.me": "Je hebt nog niets uitgelicht. Wist je dat je een aantal van jouw berichten, jouw meest gebruikte hashtags en zelfs accounts van je vrienden op je profiel kunt uitlichten?",
|
||||
"empty_column.account_featured.other": "{acct} heeft nog niets uitgelicht. Wist je dat je een aantal van jouw berichten, jouw meest gebruikte hashtags en zelfs accounts van je vrienden op je profiel kunt uitlichten?",
|
||||
"empty_column.account_featured_other.unknown": "Dit account heeft nog niets uitgelicht.",
|
||||
@@ -975,6 +976,7 @@
|
||||
"report.category.title_account": "account",
|
||||
"report.category.title_status": "bericht",
|
||||
"report.close": "Klaar",
|
||||
"report.collection_comment": "Waarom wil je deze verzameling rapporteren?",
|
||||
"report.comment.title": "Zijn er nog andere dingen waarvan je denkt dat wij dat moeten weten?",
|
||||
"report.forward": "Naar {target} doorsturen",
|
||||
"report.forward_hint": "Het account bevindt zich op een andere server. Wil je daar eveneens een geanonimiseerde kopie van deze rapportage naar toe sturen?",
|
||||
@@ -996,6 +998,8 @@
|
||||
"report.rules.title": "Welke regels worden geschonden?",
|
||||
"report.statuses.subtitle": "Selecteer wat van toepassing is",
|
||||
"report.statuses.title": "Zijn er berichten die deze rapportage ondersteunen?",
|
||||
"report.submission_error": "Rapportering kon niet worden ingediend",
|
||||
"report.submission_error_details": "Controleer de netwerkverbinding en probeer het later opnieuw.",
|
||||
"report.submit": "Verzenden",
|
||||
"report.target": "{target} rapporteren",
|
||||
"report.thanks.take_action": "Hier zijn jouw opties waarmee je kunt bepalen wat je in Mastodon wilt zien:",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Denne informasjonen er ikkje gjort tilgjengeleg på denne tenaren.",
|
||||
"about.powered_by": "Desentraliserte sosiale medium drive av {mastodon}",
|
||||
"about.rules": "Tenarreglar",
|
||||
"account.about": "Om",
|
||||
"account.account_note_header": "Personleg notat",
|
||||
"account.activity": "Aktivitet",
|
||||
"account.add_note": "Legg til eit personleg notat",
|
||||
@@ -496,8 +495,6 @@
|
||||
"emoji_button.search_results": "Søkeresultat",
|
||||
"emoji_button.symbols": "Symbol",
|
||||
"emoji_button.travel": "Reise & stader",
|
||||
"empty_column.account_about.me": "Du har ikkje skrive noko om deg sjølv enno.",
|
||||
"empty_column.account_about.other": "{acct} har ikkje skrive noko om seg sjølv enno.",
|
||||
"empty_column.account_featured.me": "Du har ikkje valt ut noko enno. Visste du at du kan velja ut emneknaggar du bruker mykje, og til og med venekontoar på profilen din?",
|
||||
"empty_column.account_featured.other": "{acct} har ikkje valt ut noko enno. Visste du at du kan velja ut emneknaggar du bruker mykje, og til og med venekontoar på profilen din?",
|
||||
"empty_column.account_featured_other.unknown": "Denne kontoen har ikkje valt ut noko enno.",
|
||||
@@ -1165,7 +1162,7 @@
|
||||
"ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.",
|
||||
"units.short.billion": "{count}m.ard",
|
||||
"units.short.million": "{count}mill",
|
||||
"units.short.thousand": "{count}T",
|
||||
"units.short.thousand": "{count}k",
|
||||
"upload_area.title": "Dra & slepp for å lasta opp",
|
||||
"upload_button.label": "Legg til medium",
|
||||
"upload_error.limit": "Du har gått over opplastingsgrensa.",
|
||||
|
||||
@@ -843,7 +843,7 @@
|
||||
"ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.",
|
||||
"units.short.billion": "{count}m.ard",
|
||||
"units.short.million": "{count}mill",
|
||||
"units.short.thousand": "{count}T",
|
||||
"units.short.thousand": "{count}k",
|
||||
"upload_area.title": "Dra og slipp for å laste opp",
|
||||
"upload_button.label": "Legg til media",
|
||||
"upload_error.limit": "Filopplastingsgrensen er oversteget.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
||||
"about.powered_by": "Rede social descentralizada baseada no {mastodon}",
|
||||
"about.rules": "Regras do servidor",
|
||||
"account.about": "Sobre",
|
||||
"account.account_note_header": "Nota pessoal",
|
||||
"account.activity": "Atividade",
|
||||
"account.add_note": "Adicionar nota pessoal",
|
||||
@@ -496,8 +495,6 @@
|
||||
"emoji_button.search_results": "Resultado da pesquisa",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viagem e Lugares",
|
||||
"empty_column.account_about.me": "Você ainda não inseriu nenhuma informação sobre si.",
|
||||
"empty_column.account_about.other": "{acct} ainda não adicionou nenhuma informação sobre si.",
|
||||
"empty_column.account_featured.me": "Você ainda não destacou nada. Você sabia que pode destacar seus posts, hashtags que você mais usa e até mesmo contas de seus amigos no seu perfil?",
|
||||
"empty_column.account_featured.other": "{acct} Ainda não destacou nada. Você sabia que pode destacar suas publicações, hashtags que você mais usa e até mesmo contas de seus amigos no seu perfil?",
|
||||
"empty_column.account_featured_other.unknown": "Esta conta ainda não destacou nada.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
||||
"about.powered_by": "Rede social descentralizada baseada no {mastodon}",
|
||||
"about.rules": "Regras do servidor",
|
||||
"account.about": "Sobre",
|
||||
"account.account_note_header": "Nota pessoal",
|
||||
"account.activity": "Atividade",
|
||||
"account.add_note": "Adicionar uma nota pessoal",
|
||||
@@ -45,6 +44,7 @@
|
||||
"account.familiar_followers_two": "Seguido por {name1} e {name2}",
|
||||
"account.featured": "Destaques",
|
||||
"account.featured.accounts": "Perfis",
|
||||
"account.featured.collections": "Coleções",
|
||||
"account.featured.hashtags": "Etiquetas",
|
||||
"account.featured_tags.last_status_at": "Última publicação em {date}",
|
||||
"account.featured_tags.last_status_never": "Sem publicações",
|
||||
@@ -145,6 +145,9 @@
|
||||
"account_edit.bio.title": "Bio",
|
||||
"account_edit.bio_modal.add_title": "Adicionar biografia",
|
||||
"account_edit.bio_modal.edit_title": "Editar biografia",
|
||||
"account_edit.button.add": "Adicionar {item}",
|
||||
"account_edit.button.delete": "Eliminar \"{item}",
|
||||
"account_edit.button.edit": "Editar {item}",
|
||||
"account_edit.char_counter": "{currentLength}/{maxLength} caracteres",
|
||||
"account_edit.column_button": "Concluído",
|
||||
"account_edit.column_title": "Editar Perfil",
|
||||
@@ -152,10 +155,15 @@
|
||||
"account_edit.custom_fields.title": "Campos personalizados",
|
||||
"account_edit.display_name.placeholder": "Como o seu nome vai aparecer no seu perfil e nas linhas do tempo.",
|
||||
"account_edit.display_name.title": "Nome a mostrar",
|
||||
"account_edit.featured_hashtags.item": "etiquetas",
|
||||
"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.name_modal.add_title": "Adicionar nome a mostrar",
|
||||
"account_edit.name_modal.edit_title": "Editar o nome a mostrar",
|
||||
"account_edit.save": "Guardar",
|
||||
"account_edit_tags.column_title": "Editar etiquetas em destaque",
|
||||
"account_edit_tags.search_placeholder": "Insira uma etiqueta…",
|
||||
"account_edit_tags.suggestions": "Sugestões:",
|
||||
"account_note.placeholder": "Clicar para adicionar nota",
|
||||
"admin.dashboard.daily_retention": "Taxa de retenção de utilizadores por dia após a inscrição",
|
||||
"admin.dashboard.monthly_retention": "Taxa de retenção de utilizadores por mês após a inscrição",
|
||||
@@ -259,9 +267,11 @@
|
||||
"closed_registrations_modal.preamble": "O Mastodon é descentralizado, por isso não importa onde a tua conta é criada, pois continuarás a poder acompanhar e interagir com qualquer um neste servidor. Podes até alojar o teu próprio servidor!",
|
||||
"closed_registrations_modal.title": "Criar uma conta no Mastodon",
|
||||
"collections.account_count": "{count, plural, one {# conta} other {# contas}}",
|
||||
"collections.accounts.empty_title": "Esta coleção está vazia",
|
||||
"collections.collection_description": "Descrição",
|
||||
"collections.collection_name": "Nome",
|
||||
"collections.collection_topic": "Tópico",
|
||||
"collections.confirm_account_removal": "Tem a certeza que quer remover esta conta desta coleção?",
|
||||
"collections.content_warning": "Aviso de conteúdo",
|
||||
"collections.continue": "Continuar",
|
||||
"collections.create.accounts_subtitle": "Apenas as contas que segue e que optaram por ser descobertas podem ser adicionadas.",
|
||||
@@ -272,7 +282,12 @@
|
||||
"collections.create_collection": "Criar coleção",
|
||||
"collections.delete_collection": "Eliminar coleção",
|
||||
"collections.description_length_hint": "Limite de 100 caracteres",
|
||||
"collections.detail.accounts_heading": "Contas",
|
||||
"collections.detail.loading": "A carregar a coleção…",
|
||||
"collections.detail.share": "Partilhar esta coleção",
|
||||
"collections.edit_details": "Editar detalhes",
|
||||
"collections.error_loading_collections": "Ocorreu um erro ao tentar carregar as suas coleções.",
|
||||
"collections.hints.add_more_accounts": "Adicione pelo menos {count, plural, one {# conta} other {# contas}} para continuar",
|
||||
"collections.last_updated_at": "Última atualização: {date}",
|
||||
"collections.manage_accounts": "Gerir contas",
|
||||
"collections.mark_as_sensitive": "Marcar como sensível",
|
||||
@@ -463,8 +478,6 @@
|
||||
"emoji_button.search_results": "Resultados da pesquisa",
|
||||
"emoji_button.symbols": "Símbolos",
|
||||
"emoji_button.travel": "Viagens e lugares",
|
||||
"empty_column.account_about.me": "Ainda não adicionou nenhuma informação sobre si.",
|
||||
"empty_column.account_about.other": "{acct} ainda não adicionou nenhuma informação sobre si.",
|
||||
"empty_column.account_featured.me": "Ainda não colocou nada em destaque. Sabia que pode destacar as etiquetas que mais utiliza e até as contas dos seus amigos no seu perfil?",
|
||||
"empty_column.account_featured.other": "{acct} ainda não colocou nada em destaque. Sabia que pode destacar as etiquetas que mais utiliza e até as contas dos seus amigos no seu perfil?",
|
||||
"empty_column.account_featured_other.unknown": "Esta conta ainda não colocou nada em destaque.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Ky informacion, në këtë shërbyes, nuk jepet.",
|
||||
"about.powered_by": "Media shoqërore e decentralizuar, bazuar në {mastodon}",
|
||||
"about.rules": "Rregulla shërbyesi",
|
||||
"account.about": "Mbi",
|
||||
"account.account_note_header": "Shënim personal",
|
||||
"account.activity": "Veprimtari",
|
||||
"account.add_note": "Shtoni një shënim personal",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Ndjekur nga {name1} dhe {name2}",
|
||||
"account.featured": "Të zgjedhur",
|
||||
"account.featured.accounts": "Profile",
|
||||
"account.featured.collections": "Koleksione",
|
||||
"account.featured.hashtags": "Hashtag-ë",
|
||||
"account.featured_tags.last_status_at": "Postimi i fundit më {date}",
|
||||
"account.featured_tags.last_status_never": "Pa postime",
|
||||
"account.field_overflow": "Shfaq lëndë të plotë",
|
||||
"account.filters.all": "Krejt veprimtarinë",
|
||||
"account.filters.boosts_toggle": "Shfaq përforcime",
|
||||
"account.filters.posts_boosts": "Postime dhe përforcime",
|
||||
@@ -495,8 +496,6 @@
|
||||
"emoji_button.search_results": "Përfundime kërkimi",
|
||||
"emoji_button.symbols": "Simbole",
|
||||
"emoji_button.travel": "Udhëtime & Vende",
|
||||
"empty_column.account_about.me": "S’keni shtuar ende ndonjë hollësi rreth vetes.",
|
||||
"empty_column.account_about.other": "{acct} s’ka shtuar ende ndonjë hollësi rreth vetes.",
|
||||
"empty_column.account_featured.me": "S’keni ende të zgjedhur diçka. E dini se në profilin tuaj mund të shfaqni si të zgjedhura hashtag-ët që përdorni më tepër dhe madje edhe llogaritë e shokëve tuaj?",
|
||||
"empty_column.account_featured.other": "{acct} s’ka të zgjedhur ende ndonjë gjë. E dini se në profilin tuaj mund të shfaqni si të zgjedhura hashtag-ët që përdorni më tepër dhe madje edhe llogaritë e shokëve tuaj?",
|
||||
"empty_column.account_featured_other.unknown": "Kjo llogari s’ka ende gjë të zgjedhur.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Denna information har inte gjorts tillgänglig på denna server.",
|
||||
"about.powered_by": "En decentraliserad plattform for sociala medier, drivet av {mastodon}",
|
||||
"about.rules": "Serverregler",
|
||||
"account.about": "Om",
|
||||
"account.account_note_header": "Personlig anteckning",
|
||||
"account.add_or_remove_from_list": "Lägg till i eller ta bort från listor",
|
||||
"account.badges.bot": "Bot",
|
||||
@@ -377,8 +376,6 @@
|
||||
"emoji_button.search_results": "Sökresultat",
|
||||
"emoji_button.symbols": "Symboler",
|
||||
"emoji_button.travel": "Resor & platser",
|
||||
"empty_column.account_about.me": "Du har inte lagt till någon information om dig själv än.",
|
||||
"empty_column.account_about.other": "{acct} har inte lagt till någon information om sig själv än.",
|
||||
"empty_column.account_featured.me": "Du har inte presenterat något ännu. Visste du att du kan markera de fyrkantstaggar du använder mest och även din väns konton på din profil?",
|
||||
"empty_column.account_featured.other": "{acct} har inte presenterat något ännu. Visste du att du kan markera de fyrkantstaggar som du använder mest och även din väns konton på din profil?",
|
||||
"empty_column.account_featured_other.unknown": "Detta konto har inte presenterat något ännu.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Bu sunucuda bu bilgi kullanıma sunulmadı.",
|
||||
"about.powered_by": "{mastodon} destekli merkeziyetsiz sosyal ağ",
|
||||
"about.rules": "Sunucu kuralları",
|
||||
"account.about": "Hakkında",
|
||||
"account.account_note_header": "Kişisel not",
|
||||
"account.activity": "Aktivite",
|
||||
"account.add_note": "Kişisel bir not ekle",
|
||||
@@ -306,11 +305,13 @@
|
||||
"collections.no_collections_yet": "Henüz hiçbir koleksiyon yok.",
|
||||
"collections.old_last_post_note": "Son gönderi bir haftadan önce",
|
||||
"collections.remove_account": "Bu hesabı çıkar",
|
||||
"collections.report_collection": "Bu koleksiyonu bildir",
|
||||
"collections.search_accounts_label": "Eklemek için hesap arayın…",
|
||||
"collections.search_accounts_max_reached": "Maksimum hesabı eklediniz",
|
||||
"collections.sensitive": "Hassas",
|
||||
"collections.topic_hint": "Bu koleksiyonun ana konusunu başkalarının anlamasına yardımcı olacak bir etiket ekleyin.",
|
||||
"collections.view_collection": "Koleksiyonu görüntüle",
|
||||
"collections.view_other_collections_by_user": "Bu kullanıcının diğer koleksiyonlarını görüntüle",
|
||||
"collections.visibility_public": "Herkese açık",
|
||||
"collections.visibility_public_hint": "Arama sonuçlarında ve önerilerin görüntülendiği diğer alanlarda keşfedilebilir.",
|
||||
"collections.visibility_title": "Görünürlük",
|
||||
@@ -496,8 +497,6 @@
|
||||
"emoji_button.search_results": "Arama sonuçları",
|
||||
"emoji_button.symbols": "Semboller",
|
||||
"emoji_button.travel": "Seyahat ve Yerler",
|
||||
"empty_column.account_about.me": "Henüz kendinle ilgili herhangi bir bilgi eklemedin.",
|
||||
"empty_column.account_about.other": "{acct} henüz kendisiyle ilgili herhangi bir bilgi eklemedi.",
|
||||
"empty_column.account_featured.me": "Henüz hiçbir şeyi öne çıkarmadınız. En çok kullandığınız etiketleri ve hatta arkadaşlarınızın hesaplarını profilinizde öne çıkarabileceğinizi biliyor muydunuz?",
|
||||
"empty_column.account_featured.other": "{acct} henüz hiçbir şeyi öne çıkarmadı. En çok kullandığınız etiketleri ve hatta arkadaşlarınızın hesaplarını profilinizde öne çıkarabileceğinizi biliyor muydunuz?",
|
||||
"empty_column.account_featured_other.unknown": "Bu hesap henüz hiçbir şeyi öne çıkarmadı.",
|
||||
@@ -976,6 +975,7 @@
|
||||
"report.category.title_account": "profil",
|
||||
"report.category.title_status": "gönderi",
|
||||
"report.close": "Tamam",
|
||||
"report.collection_comment": "Bu koleksiyonu neden bildirmek istiyorsunuz?",
|
||||
"report.comment.title": "Bilmemizi istediğiniz başka bir şey var mı?",
|
||||
"report.forward": "{target} ilet",
|
||||
"report.forward_hint": "Hesap başka bir sunucudan. Raporun anonim bir kopyası da oraya gönderilsin mi?",
|
||||
@@ -997,6 +997,8 @@
|
||||
"report.rules.title": "Hangi kurallar ihlal ediliyor?",
|
||||
"report.statuses.subtitle": "Geçerli olanların hepsini seçin",
|
||||
"report.statuses.title": "Bu bildirimi destekleyecek herhangi bir gönderi var mı?",
|
||||
"report.submission_error": "Bildirim gönderilemiyor",
|
||||
"report.submission_error_details": "Lütfen ağ durumunu kontrol edin ve daha sonra tekrar deneyin.",
|
||||
"report.submit": "Gönder",
|
||||
"report.target": "{target} Bildiriliyor",
|
||||
"report.thanks.take_action": "Mastodon'da ne görebileceğinizi denetlemeye ilişkin seçenekler şunlardır:",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "Máy chủ này chưa cung cấp thông tin.",
|
||||
"about.powered_by": "Mạng xã hội liên hợp {mastodon}",
|
||||
"about.rules": "Nội quy máy chủ",
|
||||
"account.about": "Giới thiệu",
|
||||
"account.account_note_header": "Ghi chú",
|
||||
"account.activity": "Hoạt động",
|
||||
"account.add_note": "Thêm ghi chú",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "Theo dõi bởi {name1} và {name2}",
|
||||
"account.featured": "Nêu bật",
|
||||
"account.featured.accounts": "Tài khoản",
|
||||
"account.featured.collections": "Collection",
|
||||
"account.featured.hashtags": "Hashtag thường dùng",
|
||||
"account.featured_tags.last_status_at": "Tút gần nhất {date}",
|
||||
"account.featured_tags.last_status_never": "Chưa có tút",
|
||||
"account.field_overflow": "Hiện đầy đủ nội dung",
|
||||
"account.filters.all": "Tất cả hoạt động",
|
||||
"account.filters.boosts_toggle": "Hiện những lượt đăng lại",
|
||||
"account.filters.posts_boosts": "Tút và lượt đăng lại",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "Kết quả tìm kiếm",
|
||||
"emoji_button.symbols": "Biểu tượng",
|
||||
"emoji_button.travel": "Du lịch",
|
||||
"empty_column.account_about.me": "Bạn chưa thêm thông tin gì về bản thân.",
|
||||
"empty_column.account_about.other": "{acct} chưa thêm thông tin gì về họ.",
|
||||
"empty_column.account_featured.me": "Bạn chưa nêu bật gì. Bạn có biết rằng, bạn có thể giới thiệu hashtag thường dùng và hồ sơ của bạn bè trên trang cá nhân của mình không?",
|
||||
"empty_column.account_featured.other": "{acct} chưa nêu bật gì. Bạn có biết rằng, bạn có thể giới thiệu hashtag thường dùng và hồ sơ của bạn bè trên trang cá nhân của mình không?",
|
||||
"empty_column.account_featured_other.unknown": "Tài khoản này chưa nêu bật gì.",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "此信息在当前服务器尚不可用。",
|
||||
"about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体",
|
||||
"about.rules": "站点规则",
|
||||
"account.about": "关于",
|
||||
"account.account_note_header": "个人备注",
|
||||
"account.activity": "活动",
|
||||
"account.add_note": "添加个人备注",
|
||||
@@ -45,6 +44,7 @@
|
||||
"account.familiar_followers_two": "{name1} 和 {name2} 关注了此账号",
|
||||
"account.featured": "精选",
|
||||
"account.featured.accounts": "个人资料",
|
||||
"account.featured.collections": "收藏列表",
|
||||
"account.featured.hashtags": "话题",
|
||||
"account.featured_tags.last_status_at": "上次发言于 {date}",
|
||||
"account.featured_tags.last_status_never": "暂无嘟文",
|
||||
@@ -498,8 +498,6 @@
|
||||
"emoji_button.search_results": "搜索结果",
|
||||
"emoji_button.symbols": "符号",
|
||||
"emoji_button.travel": "旅行与地点",
|
||||
"empty_column.account_about.me": "你尚未添加有关你自己的任何信息。",
|
||||
"empty_column.account_about.other": "{acct} 尚未添加有关自己的任何信息。",
|
||||
"empty_column.account_featured.me": "你尚未设置任何精选。你知道吗?你可以将自己最常使用的话题标签,甚至是好友的账号,在你的个人主页上设为精选。",
|
||||
"empty_column.account_featured.other": "{acct} 尚未设置任何精选。你知道吗?你可以将自己最常使用的话题标签,甚至是好友的账号,在你的个人主页上设为精选。",
|
||||
"empty_column.account_featured_other.unknown": "此账号尚未设置任何精选。",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"about.not_available": "無法於本伺服器上使用此資訊。",
|
||||
"about.powered_by": "由 {mastodon} 提供之去中心化社群媒體",
|
||||
"about.rules": "伺服器規則",
|
||||
"account.about": "關於",
|
||||
"account.account_note_header": "個人備註",
|
||||
"account.activity": "活動",
|
||||
"account.add_note": "新增個人備註",
|
||||
@@ -45,9 +44,11 @@
|
||||
"account.familiar_followers_two": "被 {name1} 與 {name2} 跟隨",
|
||||
"account.featured": "精選內容",
|
||||
"account.featured.accounts": "個人檔案",
|
||||
"account.featured.collections": "收藏名單",
|
||||
"account.featured.hashtags": "主題標籤",
|
||||
"account.featured_tags.last_status_at": "上次發嘟於 {date}",
|
||||
"account.featured_tags.last_status_never": "沒有嘟文",
|
||||
"account.field_overflow": "顯示完整內容",
|
||||
"account.filters.all": "所有活動",
|
||||
"account.filters.boosts_toggle": "顯示轉嘟",
|
||||
"account.filters.posts_boosts": "嘟文與轉嘟",
|
||||
@@ -498,8 +499,6 @@
|
||||
"emoji_button.search_results": "搜尋結果",
|
||||
"emoji_button.symbols": "符號",
|
||||
"emoji_button.travel": "旅遊與地點",
|
||||
"empty_column.account_about.me": "您尚未新增任何關於您的資訊。",
|
||||
"empty_column.account_about.other": "{acct} 尚未新增任何關於他們的資訊。",
|
||||
"empty_column.account_featured.me": "您尚未有任何精選內容。您知道您可以將您的常用主題標籤、甚至您朋友們的帳號作為您個人檔案上之精選內容嗎?",
|
||||
"empty_column.account_featured.other": "{acct} 尚未有任何精選內容。您知道您可以將您的常用主題標籤、甚至您朋友們的帳號作為您個人檔案上之精選內容嗎?",
|
||||
"empty_column.account_featured_other.unknown": "此帳號尚未有任何精選內容。",
|
||||
|
||||
@@ -4,6 +4,7 @@ import { CUSTOM_EMOJIS_FETCH_SUCCESS } from '../actions/custom_emojis';
|
||||
import { buildCustomEmojis } from '../features/emoji/emoji';
|
||||
import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light';
|
||||
|
||||
/** @type {ImmutableList<import('@/mastodon/models/custom_emoji').CustomEmoji>} */
|
||||
const initialState = ImmutableList([]);
|
||||
|
||||
export default function custom_emojis(state = initialState, action) {
|
||||
|
||||
@@ -6,10 +6,16 @@ import { debounce } from 'lodash';
|
||||
import {
|
||||
apiDeleteFeaturedTag,
|
||||
apiGetCurrentFeaturedTags,
|
||||
apiGetProfile,
|
||||
apiGetTagSuggestions,
|
||||
apiPatchProfile,
|
||||
apiPostFeaturedTag,
|
||||
} from '@/mastodon/api/accounts';
|
||||
import { apiGetSearch } from '@/mastodon/api/search';
|
||||
import type {
|
||||
ApiProfileJSON,
|
||||
ApiProfileUpdateParams,
|
||||
} from '@/mastodon/api_types/profile';
|
||||
import { hashtagToFeaturedTag } from '@/mastodon/api_types/tags';
|
||||
import type { ApiFeaturedTagJSON } from '@/mastodon/api_types/tags';
|
||||
import type { AppDispatch } from '@/mastodon/store';
|
||||
@@ -17,11 +23,21 @@ import {
|
||||
createAppAsyncThunk,
|
||||
createDataLoadingThunk,
|
||||
} from '@/mastodon/store/typed_functions';
|
||||
import type { SnakeToCamelCase } from '@/mastodon/utils/types';
|
||||
|
||||
interface ProfileEditState {
|
||||
tags: ApiFeaturedTagJSON[];
|
||||
tagSuggestions: ApiFeaturedTagJSON[];
|
||||
isLoading: boolean;
|
||||
type ProfileData = {
|
||||
[Key in keyof Omit<
|
||||
ApiProfileJSON,
|
||||
'note'
|
||||
> as SnakeToCamelCase<Key>]: ApiProfileJSON[Key];
|
||||
} & {
|
||||
bio: ApiProfileJSON['note'];
|
||||
};
|
||||
|
||||
export interface ProfileEditState {
|
||||
profile?: ProfileData;
|
||||
tags?: ApiFeaturedTagJSON[];
|
||||
tagSuggestions?: ApiFeaturedTagJSON[];
|
||||
isPending: boolean;
|
||||
search: {
|
||||
query: string;
|
||||
@@ -31,9 +47,6 @@ interface ProfileEditState {
|
||||
}
|
||||
|
||||
const initialState: ProfileEditState = {
|
||||
tags: [],
|
||||
tagSuggestions: [],
|
||||
isLoading: true,
|
||||
isPending: false,
|
||||
search: {
|
||||
query: '',
|
||||
@@ -49,6 +62,7 @@ const profileEditSlice = createSlice({
|
||||
if (state.search.query === action.payload) {
|
||||
return;
|
||||
}
|
||||
|
||||
state.search.query = action.payload;
|
||||
state.search.isLoading = false;
|
||||
state.search.results = undefined;
|
||||
@@ -60,13 +74,25 @@ const profileEditSlice = createSlice({
|
||||
},
|
||||
},
|
||||
extraReducers(builder) {
|
||||
builder.addCase(fetchProfile.fulfilled, (state, action) => {
|
||||
state.profile = action.payload;
|
||||
});
|
||||
builder.addCase(fetchSuggestedTags.fulfilled, (state, action) => {
|
||||
state.tagSuggestions = action.payload.map(hashtagToFeaturedTag);
|
||||
state.isLoading = false;
|
||||
});
|
||||
builder.addCase(fetchFeaturedTags.fulfilled, (state, action) => {
|
||||
state.tags = action.payload;
|
||||
state.isLoading = false;
|
||||
});
|
||||
|
||||
builder.addCase(patchProfile.pending, (state) => {
|
||||
state.isPending = true;
|
||||
});
|
||||
builder.addCase(patchProfile.rejected, (state) => {
|
||||
state.isPending = false;
|
||||
});
|
||||
builder.addCase(patchProfile.fulfilled, (state, action) => {
|
||||
state.profile = action.payload;
|
||||
state.isPending = false;
|
||||
});
|
||||
|
||||
builder.addCase(addFeaturedTag.pending, (state) => {
|
||||
@@ -76,12 +102,18 @@ const profileEditSlice = createSlice({
|
||||
state.isPending = false;
|
||||
});
|
||||
builder.addCase(addFeaturedTag.fulfilled, (state, action) => {
|
||||
if (!state.tags) {
|
||||
return;
|
||||
}
|
||||
|
||||
state.tags = [...state.tags, action.payload].toSorted(
|
||||
(a, b) => b.statuses_count - a.statuses_count,
|
||||
);
|
||||
state.tagSuggestions = state.tagSuggestions.filter(
|
||||
(tag) => tag.name !== action.meta.arg.name,
|
||||
);
|
||||
if (state.tagSuggestions) {
|
||||
state.tagSuggestions = state.tagSuggestions.filter(
|
||||
(tag) => tag.name !== action.meta.arg.name,
|
||||
);
|
||||
}
|
||||
state.isPending = false;
|
||||
});
|
||||
|
||||
@@ -92,6 +124,10 @@ const profileEditSlice = createSlice({
|
||||
state.isPending = false;
|
||||
});
|
||||
builder.addCase(deleteFeaturedTag.fulfilled, (state, action) => {
|
||||
if (!state.tags) {
|
||||
return;
|
||||
}
|
||||
|
||||
state.tags = state.tags.filter((tag) => tag.id !== action.meta.arg.tagId);
|
||||
state.isPending = false;
|
||||
});
|
||||
@@ -106,7 +142,7 @@ const profileEditSlice = createSlice({
|
||||
builder.addCase(fetchSearchResults.fulfilled, (state, action) => {
|
||||
state.search.isLoading = false;
|
||||
const searchResults: ApiFeaturedTagJSON[] = [];
|
||||
const currentTags = new Set(state.tags.map((tag) => tag.name));
|
||||
const currentTags = new Set((state.tags ?? []).map((tag) => tag.name));
|
||||
|
||||
for (const tag of action.payload) {
|
||||
if (currentTags.has(tag.name)) {
|
||||
@@ -125,6 +161,41 @@ const profileEditSlice = createSlice({
|
||||
export const profileEdit = profileEditSlice.reducer;
|
||||
export const { clearSearch } = profileEditSlice.actions;
|
||||
|
||||
const transformProfile = (result: ApiProfileJSON): ProfileData => ({
|
||||
id: result.id,
|
||||
displayName: result.display_name,
|
||||
bio: result.note,
|
||||
fields: result.fields,
|
||||
avatar: result.avatar,
|
||||
avatarStatic: result.avatar_static,
|
||||
avatarDescription: result.avatar_description,
|
||||
header: result.header,
|
||||
headerStatic: result.header_static,
|
||||
headerDescription: result.header_description,
|
||||
locked: result.locked,
|
||||
bot: result.bot,
|
||||
hideCollections: result.hide_collections,
|
||||
discoverable: result.discoverable,
|
||||
indexable: result.indexable,
|
||||
showMedia: result.show_media,
|
||||
showMediaReplies: result.show_media_replies,
|
||||
showFeatured: result.show_featured,
|
||||
attributionDomains: result.attribution_domains,
|
||||
});
|
||||
|
||||
export const fetchProfile = createDataLoadingThunk(
|
||||
`${profileEditSlice.name}/fetchProfile`,
|
||||
apiGetProfile,
|
||||
transformProfile,
|
||||
);
|
||||
|
||||
export const patchProfile = createDataLoadingThunk(
|
||||
`${profileEditSlice.name}/patchProfile`,
|
||||
(params: Partial<ApiProfileUpdateParams>) => apiPatchProfile(params),
|
||||
transformProfile,
|
||||
{ useLoadingBar: false },
|
||||
);
|
||||
|
||||
export const fetchFeaturedTags = createDataLoadingThunk(
|
||||
`${profileEditSlice.name}/fetchFeaturedTags`,
|
||||
apiGetCurrentFeaturedTags,
|
||||
@@ -143,7 +214,10 @@ export const addFeaturedTag = createDataLoadingThunk(
|
||||
{
|
||||
condition(arg, { getState }) {
|
||||
const state = getState();
|
||||
return !state.profileEdit.tags.some((tag) => tag.name === arg.name);
|
||||
return (
|
||||
!!state.profileEdit.tags &&
|
||||
!state.profileEdit.tags.some((tag) => tag.name === arg.name)
|
||||
);
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -24,3 +24,8 @@ export type OmitValueType<T, V> = {
|
||||
export type AnyFunction = (...args: never) => unknown;
|
||||
|
||||
export type OmitUnion<TUnion, TBase> = TBase & Omit<TUnion, keyof TBase>;
|
||||
|
||||
export type SnakeToCamelCase<S extends string> =
|
||||
S extends `${infer T}_${infer U}`
|
||||
? `${T}${Capitalize<SnakeToCamelCase<U>>}`
|
||||
: S;
|
||||
|
||||
@@ -465,8 +465,11 @@ class Account < ApplicationRecord
|
||||
save!
|
||||
end
|
||||
|
||||
def featureable?
|
||||
local? && discoverable?
|
||||
def featureable_by?(other_account)
|
||||
return discoverable? if local?
|
||||
return false unless Mastodon::Feature.collections_federation_enabled?
|
||||
|
||||
feature_policy_for_account(other_account).in?(%i(automatic manual))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -35,6 +35,7 @@ class CollectionItem < ApplicationRecord
|
||||
validates :uri, presence: true, if: :remote?
|
||||
|
||||
before_validation :set_position, on: :create
|
||||
before_validation :set_activity_uri, only: :create, if: :local_item_with_remote_account?
|
||||
|
||||
scope :ordered, -> { order(position: :asc) }
|
||||
scope :with_accounts, -> { includes(account: [:account_stat, :user]) }
|
||||
@@ -55,4 +56,8 @@ class CollectionItem < ApplicationRecord
|
||||
|
||||
self.position = self.class.where(collection_id:).maximum(:position).to_i + 1
|
||||
end
|
||||
|
||||
def set_activity_uri
|
||||
self.activity_uri = [ActivityPub::TagManager.instance.uri_for(collection.account), '/feature_requests/', SecureRandom.uuid].join
|
||||
end
|
||||
end
|
||||
|
||||
@@ -66,7 +66,7 @@ class AccountPolicy < ApplicationPolicy
|
||||
end
|
||||
|
||||
def feature?
|
||||
record.featureable? && !current_account.blocking?(record) && !current_account.blocked_by?(record)
|
||||
record.featureable_by?(current_account) && !current_account.blocking?(record) && !current_account.blocked_by?(record)
|
||||
end
|
||||
|
||||
def index_collections?
|
||||
|
||||
22
app/serializers/activitypub/feature_request_serializer.rb
Normal file
22
app/serializers/activitypub/feature_request_serializer.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub::FeatureRequestSerializer < ActivityPub::Serializer
|
||||
attributes :id, :type, :instrument
|
||||
attribute :virtual_object, key: :object
|
||||
|
||||
def id
|
||||
object.activity_uri
|
||||
end
|
||||
|
||||
def type
|
||||
'FeatureRequest'
|
||||
end
|
||||
|
||||
def virtual_object
|
||||
ActivityPub::TagManager.instance.uri_for(object.account)
|
||||
end
|
||||
|
||||
def instrument
|
||||
ActivityPub::TagManager.instance.uri_for(object.collection)
|
||||
end
|
||||
end
|
||||
@@ -69,6 +69,8 @@ class REST::InstanceSerializer < ActiveModel::Serializer
|
||||
},
|
||||
|
||||
accounts: {
|
||||
max_display_name_length: Account::DISPLAY_NAME_LENGTH_LIMIT,
|
||||
max_note_length: Account::NOTE_LENGTH_LIMIT,
|
||||
max_featured_tags: FeaturedTag::LIMIT,
|
||||
max_pinned_statuses: StatusPinValidator::PIN_LIMIT,
|
||||
max_profile_fields: Account::DEFAULT_FIELDS_SIZE,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
class REST::ProfileSerializer < ActiveModel::Serializer
|
||||
include RoutingHelper
|
||||
|
||||
# Please update app/javascript/api_types/profile.ts when making changes to the attributes
|
||||
attributes :id, :display_name, :note, :fields,
|
||||
:avatar, :avatar_static, :avatar_description, :header, :header_static, :header_description,
|
||||
:locked, :bot,
|
||||
@@ -10,6 +11,8 @@ class REST::ProfileSerializer < ActiveModel::Serializer
|
||||
:show_media, :show_media_replies, :show_featured,
|
||||
:attribution_domains
|
||||
|
||||
has_many :featured_tags, serializer: REST::FeaturedTagSerializer
|
||||
|
||||
def id
|
||||
object.id.to_s
|
||||
end
|
||||
|
||||
@@ -11,7 +11,10 @@ class AddAccountToCollectionService
|
||||
|
||||
@collection_item = create_collection_item
|
||||
|
||||
distribute_add_activity if @account.local? && Mastodon::Feature.collections_federation_enabled?
|
||||
if Mastodon::Feature.collections_federation_enabled?
|
||||
distribute_add_activity if @account.local?
|
||||
distribute_feature_request_activity if @account.remote?
|
||||
end
|
||||
|
||||
@collection_item
|
||||
end
|
||||
@@ -26,10 +29,14 @@ class AddAccountToCollectionService
|
||||
end
|
||||
|
||||
def distribute_add_activity
|
||||
ActivityPub::AccountRawDistributionWorker.perform_async(activity_json, @collection.account_id)
|
||||
ActivityPub::AccountRawDistributionWorker.perform_async(add_activity_json, @collection.account_id)
|
||||
end
|
||||
|
||||
def activity_json
|
||||
def distribute_feature_request_activity
|
||||
ActivityPub::FeatureRequestWorker.perform_async(@collection_item.id)
|
||||
end
|
||||
|
||||
def add_activity_json
|
||||
ActiveModelSerializers::SerializableResource.new(@collection_item, serializer: ActivityPub::AddFeaturedItemSerializer, adapter: ActivityPub::Adapter).to_json
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,7 +9,10 @@ class CreateCollectionService
|
||||
|
||||
@collection.save!
|
||||
|
||||
distribute_add_activity if Mastodon::Feature.collections_federation_enabled?
|
||||
if Mastodon::Feature.collections_federation_enabled?
|
||||
distribute_add_activity
|
||||
distribute_feature_request_activities
|
||||
end
|
||||
|
||||
@collection
|
||||
end
|
||||
@@ -20,6 +23,12 @@ class CreateCollectionService
|
||||
ActivityPub::AccountRawDistributionWorker.perform_async(activity_json, @account.id)
|
||||
end
|
||||
|
||||
def distribute_feature_request_activities
|
||||
@collection.collection_items.select(&:local_item_with_remote_account?).each do |collection_item|
|
||||
ActivityPub::FeatureRequestWorker.perform_async(collection_item.id)
|
||||
end
|
||||
end
|
||||
|
||||
def build_items
|
||||
return if @accounts_to_add.empty?
|
||||
|
||||
|
||||
22
app/workers/activitypub/feature_request_worker.rb
Normal file
22
app/workers/activitypub/feature_request_worker.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub::FeatureRequestWorker < ActivityPub::RawDistributionWorker
|
||||
def perform(collection_item_id)
|
||||
@collection_item = CollectionItem.find(collection_item_id)
|
||||
@account = @collection_item.collection.account
|
||||
|
||||
distribute!
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
true
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def inboxes
|
||||
@inboxes ||= [@collection_item.account.inbox_url]
|
||||
end
|
||||
|
||||
def payload
|
||||
@payload ||= Oj.dump(serialize_payload(@collection_item, ActivityPub::FeatureRequestSerializer, signer: @account))
|
||||
end
|
||||
end
|
||||
@@ -62,6 +62,7 @@ be:
|
||||
label: Змяніць ролю
|
||||
no_role: Няма ролі
|
||||
title: Змяніць ролю для %{username}
|
||||
collections: Калекцыі
|
||||
confirm: Пацвердзіць
|
||||
confirmed: Пацверджаны
|
||||
confirming: Ідзе пацвярджэнне
|
||||
@@ -274,6 +275,7 @@ be:
|
||||
demote_user_html: "%{name} прыбраў карыстальніка %{target}"
|
||||
destroy_announcement_html: "%{name} выдаліў аб'яву %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} разблакіраваў эл. пошту з хэшам %{target}"
|
||||
destroy_collection_html: "%{name} выдаліў(-ла) калекцыю %{target}"
|
||||
destroy_custom_emoji_html: "%{name} выдаліў(-ла) эмодзі %{target}"
|
||||
destroy_domain_allow_html: "%{name} зняў(-ла) дазвол на аб’яднанне з даменам %{target}"
|
||||
destroy_domain_block_html: "%{name} разблакаваў дамен %{target}"
|
||||
@@ -313,6 +315,7 @@ be:
|
||||
unsilence_account_html: "%{name} зняў ліміт з уліковага запісу %{target}"
|
||||
unsuspend_account_html: Уліковы запіс %{target} адноўлены %{name}
|
||||
update_announcement_html: "%{name} абнавіў(-ла) аб’яву %{target}"
|
||||
update_collection_html: "%{name} абнавіў(-ла) калекцыю %{target}"
|
||||
update_custom_emoji_html: "%{name} абнавіў эмодзі %{target}"
|
||||
update_domain_block_html: "%{name} абнавіў блакіроўку дамена для %{target}"
|
||||
update_ip_block_html: "%{name} змяніў правіла для IP %{target}"
|
||||
@@ -348,6 +351,17 @@ be:
|
||||
unpublish: Зняць з публікацыі
|
||||
unpublished_msg: Аб’ява схавана!
|
||||
updated_msg: Аб’ява абноўлена!
|
||||
collections:
|
||||
accounts: Уліковыя запісы
|
||||
collection_title: Калекцыя %{name}
|
||||
contents: Змесціва
|
||||
number_of_accounts:
|
||||
few: "%{count} уліковыя запісы"
|
||||
many: "%{count} уліковых запісаў"
|
||||
one: 1 уліковы запіс
|
||||
other: "%{count} уліковых запісаў"
|
||||
open: Адкрыць
|
||||
view_publicly: Глядзець публічна
|
||||
critical_update_pending: Чакаецца абнаўленне
|
||||
custom_emojis:
|
||||
assign_category: Прызначыць катэгорыю
|
||||
@@ -705,6 +719,7 @@ be:
|
||||
cancel: Скасаваць
|
||||
category: Катэгорыя
|
||||
category_description_html: Прычына паведамлення аб гэтым уліковым запісе і/або кантэнце будзе згадана ў сувязі з уліковым запісам, на які пададзена скарга
|
||||
collections: Калекцыі (%{count})
|
||||
comment:
|
||||
none: Пуста
|
||||
comment_description_html: 'Каб даць больш інфармацыі, %{name} напісаў:'
|
||||
@@ -734,11 +749,13 @@ be:
|
||||
report: 'Скарга #%{id}'
|
||||
reported_account: Уліковы запіс парушальніка
|
||||
reported_by: Адпраўнік скаргі
|
||||
reported_content: Змесціва, на якое паскардзіліся
|
||||
reported_with_application: Паведамлена праз праграму
|
||||
resolved: Вырашана
|
||||
resolved_msg: Скарга была паспяхова вырашана!
|
||||
skip_to_actions: Прапусціць дзеянні
|
||||
status: Стан
|
||||
statuses: Допісы (%{count})
|
||||
statuses_description_html: Крыўднае змесціва будзе згадвацца ў зносінах з уліковым запісам, на які пададзена скарга
|
||||
summary:
|
||||
action_preambles:
|
||||
|
||||
@@ -267,6 +267,7 @@ da:
|
||||
demote_user_html: "%{name} degraderede brugeren %{target}"
|
||||
destroy_announcement_html: "%{name} slettede bekendtgørelsen %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} afblokerede e-mailen med hash'et %{target}"
|
||||
destroy_collection_html: "%{name} fjernede samling af %{target}"
|
||||
destroy_custom_emoji_html: "%{name} slettede emojien %{target}"
|
||||
destroy_domain_allow_html: "%{name} fjernede federeringstilladelsen med domænet %{target}"
|
||||
destroy_domain_block_html: "%{name} afblokerede domænet %{target}"
|
||||
@@ -306,6 +307,7 @@ da:
|
||||
unsilence_account_html: "%{name} fjernede begrænsningen af %{target}s konto"
|
||||
unsuspend_account_html: "%{name} fjernede suspenderingen af %{target}s konto"
|
||||
update_announcement_html: "%{name} opdaterede bekendtgørelsen %{target}"
|
||||
update_collection_html: "%{name} opdaterede samling af %{target}"
|
||||
update_custom_emoji_html: "%{name} opdaterede emoji %{target}"
|
||||
update_domain_block_html: "%{name} opdaterede domæneblokeringen for %{target}"
|
||||
update_ip_block_html: "%{name} ændrede reglen for IP'en %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ de:
|
||||
demote_user_html: "%{name} stufte %{target} herunter"
|
||||
destroy_announcement_html: "%{name} löschte die Ankündigung %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} entsperrte die E-Mail mit dem Hash %{target}"
|
||||
destroy_collection_html: "%{name} entfernte Sammlung von %{target}"
|
||||
destroy_custom_emoji_html: "%{name} löschte das Emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} verwehrte die Föderation mit der Domain %{target}"
|
||||
destroy_domain_block_html: "%{name} entsperrte die Domain %{target}"
|
||||
@@ -306,6 +307,7 @@ de:
|
||||
unsilence_account_html: "%{name} hob die Stummschaltung von %{target} auf"
|
||||
unsuspend_account_html: "%{name} entsperrte das Konto von %{target}"
|
||||
update_announcement_html: "%{name} überarbeitete die Ankündigung %{target}"
|
||||
update_collection_html: "%{name} überarbeitete Sammlung von %{target}"
|
||||
update_custom_emoji_html: "%{name} bearbeitete das Emoji %{target}"
|
||||
update_domain_block_html: "%{name} aktualisierte die Domain-Sperre für %{target}"
|
||||
update_ip_block_html: "%{name} änderte eine IP-Regel für %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ el:
|
||||
demote_user_html: Ο/Η %{name} υποβίβασε τον χρήστη %{target}
|
||||
destroy_announcement_html: Ο/Η %{name} διέγραψε την ανακοίνωση %{target}
|
||||
destroy_canonical_email_block_html: Ο χρήστης %{name} έκανε άρση αποκλεισμού email με το hash %{target}
|
||||
destroy_collection_html: Ο/Η %{name} αφαίρεσε τη συλλογή του/της %{target}
|
||||
destroy_custom_emoji_html: Ο/Η %{name} διέγραψε το emoji %{target}
|
||||
destroy_domain_allow_html: Ο/Η %{name} αφαίρεσε τον τομέα %{target} από τη λίστα εγκρίσεων
|
||||
destroy_domain_block_html: Ο/Η %{name} επέτρεψε τον τομέα %{target}
|
||||
@@ -306,6 +307,7 @@ el:
|
||||
unsilence_account_html: Ο/Η %{name} αφαίρεσε το περιορισμό του λογαριασμού του/της %{target}
|
||||
unsuspend_account_html: Ο/Η %{name} επανέφερε τον λογαριασμό του/της %{target}
|
||||
update_announcement_html: Ο/Η %{name} ενημέρωσε την ανακοίνωση %{target}
|
||||
update_collection_html: Ο/Η %{name} ενημέρωσε τη συλλογή του/της %{target}
|
||||
update_custom_emoji_html: Ο/Η %{name} ενημέρωσε το emoji %{target}
|
||||
update_domain_block_html: Ο/Η %{name} ενημέρωσε τον αποκλεισμό τομέα για %{target}
|
||||
update_ip_block_html: Ο/Η %{name} άλλαξε τον κανόνα για την IP %{target}
|
||||
|
||||
@@ -267,6 +267,7 @@ en-GB:
|
||||
demote_user_html: "%{name} demoted user %{target}"
|
||||
destroy_announcement_html: "%{name} deleted announcement %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} unblocked email with the hash %{target}"
|
||||
destroy_collection_html: "%{name} removed collection by %{target}"
|
||||
destroy_custom_emoji_html: "%{name} deleted emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} disallowed federation with domain %{target}"
|
||||
destroy_domain_block_html: "%{name} unblocked domain %{target}"
|
||||
@@ -306,6 +307,7 @@ en-GB:
|
||||
unsilence_account_html: "%{name} undid limit of %{target}'s account"
|
||||
unsuspend_account_html: "%{name} unsuspended %{target}'s account"
|
||||
update_announcement_html: "%{name} updated announcement %{target}"
|
||||
update_collection_html: "%{name} updated collection by %{target}"
|
||||
update_custom_emoji_html: "%{name} updated emoji %{target}"
|
||||
update_domain_block_html: "%{name} updated domain block for %{target}"
|
||||
update_ip_block_html: "%{name} changed rule for IP %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ es-AR:
|
||||
demote_user_html: "%{name} bajó de nivel al usuario %{target}"
|
||||
destroy_announcement_html: "%{name} eliminó el anuncio %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}"
|
||||
destroy_collection_html: "%{name} eliminó la colección de %{target}"
|
||||
destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} no permitió la federación con el dominio %{target}"
|
||||
destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}"
|
||||
@@ -306,6 +307,7 @@ es-AR:
|
||||
unsilence_account_html: "%{name} quitó el límite de la cuenta de %{target}"
|
||||
unsuspend_account_html: "%{name} quitó la suspensión de la cuenta de %{target}"
|
||||
update_announcement_html: "%{name} actualizó el anuncio %{target}"
|
||||
update_collection_html: "%{name} actualizó la colección de %{target}"
|
||||
update_custom_emoji_html: "%{name} actualizó el emoji %{target}"
|
||||
update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}"
|
||||
update_ip_block_html: "%{name} cambió la regla para la dirección IP %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ es-MX:
|
||||
demote_user_html: "%{name} degradó al usuario %{target}"
|
||||
destroy_announcement_html: "%{name} eliminó el anuncio %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} ha desbloqueado el correo electrónico con el hash %{target}"
|
||||
destroy_collection_html: "%{name} eliminó la colección de %{target}"
|
||||
destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}"
|
||||
destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}"
|
||||
@@ -306,6 +307,7 @@ es-MX:
|
||||
unsilence_account_html: "%{name} desilenció la cuenta de %{target}"
|
||||
unsuspend_account_html: "%{name} reactivó la cuenta de %{target}"
|
||||
update_announcement_html: "%{name} actualizó el anuncio %{target}"
|
||||
update_collection_html: "%{name} actualizó la colección de %{target}"
|
||||
update_custom_emoji_html: "%{name} actualizó el emoji %{target}"
|
||||
update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}"
|
||||
update_ip_block_html: "%{name} cambió la regla para la IP %{target}"
|
||||
|
||||
@@ -12,6 +12,9 @@ es:
|
||||
followers:
|
||||
one: Seguidor
|
||||
other: Seguidores
|
||||
following:
|
||||
one: Siguiendo
|
||||
other: Siguiendo
|
||||
instance_actor_flash: Esta cuenta es un actor virtual utilizado para representar al propio servidor y no a ningún usuario individual. Se utiliza con fines de federación y no debe suspenderse.
|
||||
last_active: última conexión
|
||||
link_verified_on: La propiedad de este vínculo fue verificada el %{date}
|
||||
@@ -264,6 +267,7 @@ es:
|
||||
demote_user_html: "%{name} degradó al usuario %{target}"
|
||||
destroy_announcement_html: "%{name} eliminó el anuncio %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}"
|
||||
destroy_collection_html: "%{name} eliminó la colección de %{target}"
|
||||
destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}"
|
||||
destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}"
|
||||
@@ -303,6 +307,7 @@ es:
|
||||
unsilence_account_html: "%{name} desilenció la cuenta de %{target}"
|
||||
unsuspend_account_html: "%{name} reactivó la cuenta de %{target}"
|
||||
update_announcement_html: "%{name} actualizó el anuncio %{target}"
|
||||
update_collection_html: "%{name} actualizó la colección de %{target}"
|
||||
update_custom_emoji_html: "%{name} actualizó el emoji %{target}"
|
||||
update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}"
|
||||
update_ip_block_html: "%{name} cambió la regla para la IP %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ fi:
|
||||
demote_user_html: "%{name} alensi käyttäjän %{target}"
|
||||
destroy_announcement_html: "%{name} poisti tiedotteen %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} kumosi eston tiivistettä %{target} vastaavalta sähköpostiosoitteelta"
|
||||
destroy_collection_html: "%{name} poisti käyttäjän %{target} kokoelman"
|
||||
destroy_custom_emoji_html: "%{name} poisti emojin %{target}"
|
||||
destroy_domain_allow_html: "%{name} kielsi federoinnin verkkotunnuksen %{target} kanssa"
|
||||
destroy_domain_block_html: "%{name} kumosi verkkotunnuksen %{target} eston"
|
||||
@@ -306,6 +307,7 @@ fi:
|
||||
unsilence_account_html: "%{name} kumosi käyttäjän %{target} tilin rajoituksen"
|
||||
unsuspend_account_html: "%{name} kumosi käyttäjän %{target} tilin jäädytyksen"
|
||||
update_announcement_html: "%{name} päivitti tiedotteen %{target}"
|
||||
update_collection_html: "%{name} päivitti käyttäjän %{target} kokoelman"
|
||||
update_custom_emoji_html: "%{name} päivitti emojin %{target}"
|
||||
update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target} eston"
|
||||
update_ip_block_html: "%{name} muutti IP-osoitteen %{target} sääntöä"
|
||||
|
||||
@@ -12,6 +12,9 @@ fo:
|
||||
followers:
|
||||
one: Fylgjari
|
||||
other: Fylgjarar
|
||||
following:
|
||||
one: Fylgi
|
||||
other: Fylgi
|
||||
instance_actor_flash: Hendan kontan er ein tykisligur aktørur, sum verður brúktur til at umboða ambætaran sjálvan og ikki nakran ávísan brúkara. Hon verður brúkt til sameind endamál og eigur ikki at vera tikin úr gildi.
|
||||
last_active: virkin seinast
|
||||
link_verified_on: Eigaraskapur av hesum leinki var eftirkannaður tann %{date}
|
||||
@@ -264,6 +267,7 @@ fo:
|
||||
demote_user_html: "%{name} lækkaði tignina hjá brúkaranum %{target}"
|
||||
destroy_announcement_html: "%{name} strikaðar fráboðanir %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} strikaði blokeringina av teldupostin við hashkodu %{target}"
|
||||
destroy_collection_html: "%{name} slettaði savnið hjá %{target}"
|
||||
destroy_custom_emoji_html: "%{name} strikaði kensluteknið %{target}"
|
||||
destroy_domain_allow_html: "%{name} havnaði sameining við navnaøkið %{target}"
|
||||
destroy_domain_block_html: "%{name} strikaði blokering av navnaøkinum %{target}"
|
||||
@@ -303,6 +307,7 @@ fo:
|
||||
unsilence_account_html: "%{name} strikaði avmarkingina av kontuni hjá %{target}"
|
||||
unsuspend_account_html: "%{name} setti kontuna hjá %{target} í gildi aftur"
|
||||
update_announcement_html: "%{name} dagførdi kunngerðina %{target}"
|
||||
update_collection_html: "%{name} dagførdi savnið hjá %{target}"
|
||||
update_custom_emoji_html: "%{name} dagførdi kensluteknið %{target}"
|
||||
update_domain_block_html: "%{name} dagførdi navnaøkisblokeringina hjá %{target}"
|
||||
update_ip_block_html: "%{name} broytti IP-reglurnar %{target}"
|
||||
@@ -342,6 +347,9 @@ fo:
|
||||
accounts: Kontur
|
||||
collection_title: Savn hjá %{name}
|
||||
contents: Innihald
|
||||
number_of_accounts:
|
||||
one: 1 konta
|
||||
other: "%{count} kontur"
|
||||
open: Opin
|
||||
view_publicly: Vís fyri øllum
|
||||
critical_update_pending: Kritisk dagføring bíðar
|
||||
|
||||
@@ -267,6 +267,7 @@ fr-CA:
|
||||
demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}"
|
||||
destroy_announcement_html: "%{name} a supprimé l'annonce %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} a débloqué l'adresse email avec le hachage %{target}"
|
||||
destroy_collection_html: "%{name} a supprimé la collection de %{target}"
|
||||
destroy_custom_emoji_html: "%{name} a supprimé l'émoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}"
|
||||
destroy_domain_block_html: "%{name} a débloqué le domaine %{target}"
|
||||
@@ -306,6 +307,7 @@ fr-CA:
|
||||
unsilence_account_html: "%{name} a annulé la limitation du compte de %{target}"
|
||||
unsuspend_account_html: "%{name} a réactivé le compte de %{target}"
|
||||
update_announcement_html: "%{name} a mis à jour l'annonce %{target}"
|
||||
update_collection_html: "%{name} a mis à jour la collections de %{target}"
|
||||
update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}"
|
||||
update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}"
|
||||
update_ip_block_html: "%{name} a modifié la règle pour l'IP %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ fr:
|
||||
demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}"
|
||||
destroy_announcement_html: "%{name} a supprimé l'annonce %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} a débloqué l'adresse email avec le hachage %{target}"
|
||||
destroy_collection_html: "%{name} a supprimé la collection de %{target}"
|
||||
destroy_custom_emoji_html: "%{name} a supprimé l'émoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}"
|
||||
destroy_domain_block_html: "%{name} a débloqué le domaine %{target}"
|
||||
@@ -306,6 +307,7 @@ fr:
|
||||
unsilence_account_html: "%{name} a annulé la limitation du compte de %{target}"
|
||||
unsuspend_account_html: "%{name} a réactivé le compte de %{target}"
|
||||
update_announcement_html: "%{name} a mis à jour l'annonce %{target}"
|
||||
update_collection_html: "%{name} a mis à jour la collections de %{target}"
|
||||
update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}"
|
||||
update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}"
|
||||
update_ip_block_html: "%{name} a modifié la règle pour l'IP %{target}"
|
||||
|
||||
@@ -279,6 +279,7 @@ ga:
|
||||
demote_user_html: "%{name} úsáideoir scriosta %{target}"
|
||||
destroy_announcement_html: "%{name} fógra scriosta %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} ríomhphost díchoiscthe leis an hash %{target}"
|
||||
destroy_collection_html: Bhain %{name} bailiúchán le %{target}
|
||||
destroy_custom_emoji_html: Scriosadh %{name} emoji %{target}
|
||||
destroy_domain_allow_html: Dhiúltaigh %{name} cónaidhm le fearann %{target}
|
||||
destroy_domain_block_html: "%{name} fearann %{target} bainte de"
|
||||
@@ -318,6 +319,7 @@ ga:
|
||||
unsilence_account_html: Chealaigh %{name} teorainn chuntas %{target}
|
||||
unsuspend_account_html: Níor chuir %{name} cuntas %{target} ar fionraí
|
||||
update_announcement_html: "%{name} fógra nuashonraithe %{target}"
|
||||
update_collection_html: Nuashonraigh %{name} bailiúchán le %{target}
|
||||
update_custom_emoji_html: "%{name} emoji nuashonraithe %{target}"
|
||||
update_domain_block_html: "%{name} nuashonraithe bloc fearainn le haghaidh %{target}"
|
||||
update_ip_block_html: D'athraigh %{name} riail an IP %{target}
|
||||
|
||||
@@ -267,6 +267,7 @@ gl:
|
||||
demote_user_html: "%{name} degradou a usuaria %{target}"
|
||||
destroy_announcement_html: "%{name} eliminou o anuncio %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} desbloqueou o correo con suma de comprobación %{target}"
|
||||
destroy_collection_html: "%{name} eliminou a colección de %{target}"
|
||||
destroy_custom_emoji_html: "%{name} eliminou o emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} retirou a federación co dominio %{target}"
|
||||
destroy_domain_block_html: "%{name} desbloqueou o dominio %{target}"
|
||||
@@ -306,6 +307,7 @@ gl:
|
||||
unsilence_account_html: "%{name} reactivou a conta de %{target}"
|
||||
unsuspend_account_html: "%{name} retiroulle a suspensión á conta de %{target}"
|
||||
update_announcement_html: "%{name} actualizou o anuncio %{target}"
|
||||
update_collection_html: "%{name} actualizou a colección de %{target}"
|
||||
update_custom_emoji_html: "%{name} actualizou o emoji %{target}"
|
||||
update_domain_block_html: "%{name} actualizou o bloqueo do dominio para %{target}"
|
||||
update_ip_block_html: "%{name} cambiou a regra para IP %{target}"
|
||||
|
||||
@@ -275,6 +275,7 @@ he:
|
||||
demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}"
|
||||
destroy_announcement_html: "%{name} מחק/ה את ההכרזה %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} הסירו חסימה מדואל %{target}"
|
||||
destroy_collection_html: האוסף של %{target} הוסר ע"י %{name}
|
||||
destroy_custom_emoji_html: "%{name} מחק אמוג'י של %{target}"
|
||||
destroy_domain_allow_html: "%{name} לא התיר/ה פדרציה עם הדומיין %{target}"
|
||||
destroy_domain_block_html: החסימה על מתחם %{target} הוסרה ע"י %{name}
|
||||
@@ -314,6 +315,7 @@ he:
|
||||
unsilence_account_html: "%{name} ביטל/ה ההגבלה מהחשבון של %{target}"
|
||||
unsuspend_account_html: "%{name} ביטל/ה את ההשעיה של החשבון של %{target}"
|
||||
update_announcement_html: "%{name} עדכן/ה הכרזה %{target}"
|
||||
update_collection_html: האוסף של %{target} עודכן ע"י %{name}
|
||||
update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}"
|
||||
update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}"
|
||||
update_ip_block_html: "%{name} שינה כלל עבור IP %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ is:
|
||||
demote_user_html: "%{name} lækkaði notandann %{target} í tign"
|
||||
destroy_announcement_html: "%{name} eyddi tilkynninguni %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} tók af útilokun á tölvupósti með tætigildið %{target}"
|
||||
destroy_collection_html: "%{name} fjarlægði safn frá %{target}"
|
||||
destroy_custom_emoji_html: "%{name} eyddi emoji-tákni %{target}"
|
||||
destroy_domain_allow_html: "%{name} bannaði skýjasamband með léninu %{target}"
|
||||
destroy_domain_block_html: "%{name} aflétti útilokun af léninu %{target}"
|
||||
@@ -306,6 +307,7 @@ is:
|
||||
unsilence_account_html: "%{name} hætti að hylja notandaaðganginn %{target}"
|
||||
unsuspend_account_html: "%{name} tók notandaaðganginn %{target} úr frysti"
|
||||
update_announcement_html: "%{name} uppfærði tilkynningu %{target}"
|
||||
update_collection_html: "%{name} uppfærði safn frá %{target}"
|
||||
update_custom_emoji_html: "%{name} uppfærði lyndistáknið %{target}"
|
||||
update_domain_block_html: "%{name} uppfærði útilokun lénsins %{target}"
|
||||
update_ip_block_html: "%{name} breytti reglu fyrir IP-vistfangið %{target}"
|
||||
|
||||
@@ -267,6 +267,7 @@ nl:
|
||||
demote_user_html: Gebruiker %{target} is door %{name} gedegradeerd
|
||||
destroy_announcement_html: "%{name} heeft de mededeling %{target} verwijderd"
|
||||
destroy_canonical_email_block_html: "%{name} deblokkeerde e-mail met de hash %{target}"
|
||||
destroy_collection_html: "%{name} heeft de verzameling van %{target} verwijderd"
|
||||
destroy_custom_emoji_html: "%{name} verwijderde de emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} heeft de federatie met het domein %{target} afgekeurd"
|
||||
destroy_domain_block_html: Domein %{target} is door %{name} gedeblokkeerd
|
||||
@@ -306,6 +307,7 @@ nl:
|
||||
unsilence_account_html: Beperking van account %{target} is door %{name} opgeheven
|
||||
unsuspend_account_html: Opschorten van account %{target} is door %{name} opgeheven
|
||||
update_announcement_html: "%{name} heeft de mededeling %{target} bijgewerkt"
|
||||
update_collection_html: "%{name} heeft de verzameling van %{target} bijgewerkt"
|
||||
update_custom_emoji_html: Emoji %{target} is door %{name} bijgewerkt
|
||||
update_domain_block_html: "%{name} heeft de domeinblokkade bijgewerkt voor %{target}"
|
||||
update_ip_block_html: "%{name} wijzigde de IP-regel voor %{target}"
|
||||
|
||||
@@ -1436,7 +1436,7 @@
|
||||
billion: Mrd
|
||||
million: Mln
|
||||
quadrillion: Kvd
|
||||
thousand: T
|
||||
thousand: k
|
||||
trillion: Trl
|
||||
otp_authentication:
|
||||
code_hint: Skriv inn koden generert av autentiseringsappen din for å bekrefte
|
||||
|
||||
@@ -267,6 +267,7 @@ sq:
|
||||
demote_user_html: "%{name} zhgradoi përdoruesin %{target}"
|
||||
destroy_announcement_html: "%{name} fshiu lajmërimin për %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} zhbllokoi email me hashin %{target}"
|
||||
destroy_collection_html: "%{name} hoqi koleksion nga %{target}"
|
||||
destroy_custom_emoji_html: "%{name} fshiu emoji-n %{target}"
|
||||
destroy_domain_allow_html: "%{name} hoqi lejimin për federim me %{target}"
|
||||
destroy_domain_block_html: "%{name} zhbllokoi përkatësinë %{target}"
|
||||
@@ -306,6 +307,7 @@ sq:
|
||||
unsilence_account_html: "%{name} hoqi heshtimin për llogarinë %{target}"
|
||||
unsuspend_account_html: "%{name} hoqi pezullimin për llogarinë e %{target}"
|
||||
update_announcement_html: "%{name} përditësoi lajmërimin %{target}"
|
||||
update_collection_html: "%{name} përditësoi koleksion nga %{target}"
|
||||
update_custom_emoji_html: "%{name} përditësoi emoxhin %{target}"
|
||||
update_domain_block_html: "%{name} përditësoi bllokim përkatësish për %{target}"
|
||||
update_ip_block_html: "%{name} ndryshoi rregull për IP-në %{target}"
|
||||
|
||||
@@ -263,6 +263,7 @@ vi:
|
||||
demote_user_html: "%{name} đã hạ vai trò của %{target}"
|
||||
destroy_announcement_html: "%{name} đã xóa thông báo %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} đã bỏ chặn địa chỉ email biến thể %{target}"
|
||||
destroy_collection_html: "%{name} đã gỡ collection của %{target}"
|
||||
destroy_custom_emoji_html: "%{name} đã xóa emoji %{target}"
|
||||
destroy_domain_allow_html: "%{name} đã ngừng liên hợp với %{target}"
|
||||
destroy_domain_block_html: "%{name} đã bỏ chặn máy chủ %{target}"
|
||||
@@ -302,6 +303,7 @@ vi:
|
||||
unsilence_account_html: "%{name} đã bỏ ẩn %{target}"
|
||||
unsuspend_account_html: "%{name} đã bỏ vô hiệu hóa %{target}"
|
||||
update_announcement_html: "%{name} đã cập nhật thông báo %{target}"
|
||||
update_collection_html: "%{name} đã cập nhật collection của %{target}"
|
||||
update_custom_emoji_html: "%{name} đã cập nhật emoji %{target}"
|
||||
update_domain_block_html: "%{name} đã cập nhật chặn máy chủ %{target}"
|
||||
update_ip_block_html: "%{name} đã cập nhật chặn IP %{target}"
|
||||
|
||||
@@ -263,6 +263,7 @@ zh-CN:
|
||||
demote_user_html: "%{name} 撤销了用户 %{target} 的管理权限"
|
||||
destroy_announcement_html: "%{name} 删除了公告 %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} 解封了 hash 为 %{target} 的邮箱地址"
|
||||
destroy_collection_html: "%{name} 移除了 %{target} 的收藏列表"
|
||||
destroy_custom_emoji_html: "%{name} 删除了自定义表情 %{target}"
|
||||
destroy_domain_allow_html: "%{name} 拒绝了与站点 %{target} 的联合"
|
||||
destroy_domain_block_html: "%{name} 解除了对站点 %{target} 的屏蔽"
|
||||
@@ -302,6 +303,7 @@ zh-CN:
|
||||
unsilence_account_html: "%{name} 解除了用户 %{target} 的隐藏状态"
|
||||
unsuspend_account_html: "%{name} 解封了用户 %{target}"
|
||||
update_announcement_html: "%{name} 更新了公告 %{target}"
|
||||
update_collection_html: "%{name} 更新了 %{target} 的收藏列表"
|
||||
update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}"
|
||||
update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽"
|
||||
update_ip_block_html: "%{name} 修改了对 IP %{target} 的规则"
|
||||
|
||||
@@ -263,6 +263,7 @@ zh-TW:
|
||||
demote_user_html: "%{name} 將使用者 %{target} 降級"
|
||||
destroy_announcement_html: "%{name} 已刪除公告 %{target}"
|
||||
destroy_canonical_email_block_html: "%{name} 已解除封鎖 hash 為 %{target} 之電子郵件"
|
||||
destroy_collection_html: "%{name} 已刪除 %{target} 的收藏名單"
|
||||
destroy_custom_emoji_html: "%{name} 已刪除 emoji 表情符號 %{target}"
|
||||
destroy_domain_allow_html: "%{name} 不允許與網域 %{target} 加入聯邦宇宙"
|
||||
destroy_domain_block_html: "%{name} 已解除封鎖網域 %{target}"
|
||||
@@ -302,6 +303,7 @@ zh-TW:
|
||||
unsilence_account_html: "%{name} 已取消使用者 %{target} 的靜音狀態"
|
||||
unsuspend_account_html: "%{name} 已取消停權 %{target} 的帳號"
|
||||
update_announcement_html: "%{name} 已更新公告 %{target}"
|
||||
update_collection_html: "%{name} 已更新 %{target} 的收藏名單"
|
||||
update_custom_emoji_html: "%{name} 已更新自訂 emoji 表情符號 %{target}"
|
||||
update_domain_block_html: "%{name} 已更新 %{target} 之網域封鎖"
|
||||
update_ip_block_html: "%{name} 已變更 IP %{target} 之規則"
|
||||
|
||||
@@ -790,17 +790,20 @@ RSpec.describe Account do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#featureable?' do
|
||||
subject { Fabricate.build(:account, domain: (local ? nil : 'example.com'), discoverable:) }
|
||||
describe '#featureable_by?' do
|
||||
subject { Fabricate.build(:account, domain: (local ? nil : 'example.com'), discoverable:, feature_approval_policy:) }
|
||||
|
||||
let(:local_account) { Fabricate(:account) }
|
||||
|
||||
context 'when account is local' do
|
||||
let(:local) { true }
|
||||
let(:feature_approval_policy) { nil }
|
||||
|
||||
context 'when account is discoverable' do
|
||||
let(:discoverable) { true }
|
||||
|
||||
it 'returns `true`' do
|
||||
expect(subject.featureable?).to be true
|
||||
expect(subject.featureable_by?(local_account)).to be true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -808,7 +811,7 @@ RSpec.describe Account do
|
||||
let(:discoverable) { false }
|
||||
|
||||
it 'returns `false`' do
|
||||
expect(subject.featureable?).to be false
|
||||
expect(subject.featureable_by?(local_account)).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -816,9 +819,26 @@ RSpec.describe Account do
|
||||
context 'when account is remote' do
|
||||
let(:local) { false }
|
||||
let(:discoverable) { true }
|
||||
let(:feature_approval_policy) { (0b10 << 16) | 0 }
|
||||
|
||||
it 'returns `false`' do
|
||||
expect(subject.featureable?).to be false
|
||||
expect(subject.featureable_by?(local_account)).to be false
|
||||
end
|
||||
|
||||
context 'when collections federation is enabled', feature: :collections_federation do
|
||||
context 'when the policy allows it' do
|
||||
it 'returns `true`' do
|
||||
expect(subject.featureable_by?(local_account)).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the policy forbids it' do
|
||||
let(:feature_approval_policy) { 0 }
|
||||
|
||||
it 'returns `false`' do
|
||||
expect(subject.featureable_by?(local_account)).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,14 +16,6 @@ RSpec.describe CollectionItem do
|
||||
it { is_expected.to validate_presence_of(:account) }
|
||||
end
|
||||
|
||||
context 'when item is local and account is remote' do
|
||||
subject { Fabricate.build(:collection_item, account: remote_account) }
|
||||
|
||||
let(:remote_account) { Fabricate.build(:remote_account) }
|
||||
|
||||
it { is_expected.to validate_presence_of(:activity_uri) }
|
||||
end
|
||||
|
||||
context 'when item is not local' do
|
||||
subject { Fabricate.build(:collection_item, collection: remote_collection) }
|
||||
|
||||
@@ -58,5 +50,11 @@ RSpec.describe CollectionItem do
|
||||
expect(unrelated_item.position).to eq 1
|
||||
expect(custom_item.position).to eq 7
|
||||
end
|
||||
|
||||
it 'automatically sets `activity_uri` when account is remote' do
|
||||
item = collection.collection_items.create(account: Fabricate(:remote_account))
|
||||
|
||||
expect(item.activity_uri).to be_present
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -165,7 +165,7 @@ RSpec.describe AccountPolicy do
|
||||
end
|
||||
|
||||
context 'when account is not featureable' do
|
||||
before { allow(alice).to receive(:featureable?).and_return(false) }
|
||||
before { allow(alice).to receive(:featureable_by?).and_return(false) }
|
||||
|
||||
it 'denies' do
|
||||
expect(subject).to_not permit(john, alice)
|
||||
|
||||
@@ -48,7 +48,8 @@ RSpec.describe 'Profile API' do
|
||||
'note' => account.note,
|
||||
'show_featured' => account.show_featured,
|
||||
'show_media' => account.show_media,
|
||||
'show_media_replies' => account.show_media_replies
|
||||
'show_media_replies' => account.show_media_replies,
|
||||
'featured_tags' => []
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe ActivityPub::FeatureRequestSerializer do
|
||||
subject { serialized_record_json(collection_item, described_class, adapter: ActivityPub::Adapter) }
|
||||
|
||||
let(:tag_manager) { ActivityPub::TagManager.instance }
|
||||
let(:target_account) { Fabricate(:remote_account) }
|
||||
let(:collection) { Fabricate(:collection) }
|
||||
let(:collection_item) { Fabricate(:collection_item, collection:, account: target_account) }
|
||||
|
||||
it 'serializes to the expected json' do
|
||||
expect(subject).to include({
|
||||
'id' => collection_item.activity_uri,
|
||||
'type' => 'FeatureRequest',
|
||||
'instrument' => tag_manager.uri_for(collection_item.collection),
|
||||
'object' => tag_manager.uri_for(target_account),
|
||||
})
|
||||
|
||||
expect(subject).to_not have_key('published')
|
||||
expect(subject).to_not have_key('to')
|
||||
expect(subject).to_not have_key('cc')
|
||||
expect(subject).to_not have_key('target')
|
||||
end
|
||||
end
|
||||
@@ -21,10 +21,22 @@ RSpec.describe AddAccountToCollectionService do
|
||||
expect(new_item.account).to eq account
|
||||
end
|
||||
|
||||
it 'federates an `Add` activity', feature: :collections_federation do
|
||||
subject.call(collection, account)
|
||||
context 'when the account is local' do
|
||||
it 'federates an `Add` activity', feature: :collections_federation do
|
||||
subject.call(collection, account)
|
||||
|
||||
expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job
|
||||
expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the account is remote', feature: :collections_federation do
|
||||
let(:account) { Fabricate(:remote_account, feature_approval_policy: (0b10 << 16)) }
|
||||
|
||||
it 'federates a `FeatureRequest` activity' do
|
||||
subject.call(collection, account)
|
||||
|
||||
expect(ActivityPub::FeatureRequestWorker).to have_enqueued_sidekiq_job
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -61,6 +61,16 @@ RSpec.describe CreateCollectionService do
|
||||
end.to raise_error(Mastodon::NotPermittedError)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when some accounts are remote' do
|
||||
let(:accounts) { Fabricate.times(2, :remote_account, feature_approval_policy: (0b10 << 16)) }
|
||||
|
||||
it 'federates `FeatureRequest` activities', feature: :collections_federation do
|
||||
subject.call(params, author)
|
||||
|
||||
expect(ActivityPub::FeatureRequestWorker).to have_enqueued_sidekiq_job.exactly(2).times
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when given a tag' do
|
||||
|
||||
@@ -3,46 +3,47 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe DisallowedHashtagsValidator do
|
||||
let(:disallowed_tags) { [] }
|
||||
subject { Fabricate.build :status }
|
||||
|
||||
describe '#validate' do
|
||||
before do
|
||||
disallowed_tags.each { |name| Fabricate(:tag, name: name, usable: false) }
|
||||
described_class.new.validate(status)
|
||||
let(:tag_string) { 'ok #a #b #c then' }
|
||||
|
||||
context 'when local' do
|
||||
before { subject.local = true }
|
||||
|
||||
context 'when reblog? is true' do
|
||||
before { subject.reblog = Fabricate(:status) }
|
||||
|
||||
it { is_expected.to allow_values(nil, tag_string).for(:text) }
|
||||
end
|
||||
|
||||
let(:status) { instance_double(Status, errors: errors, local?: local, reblog?: reblog, text: disallowed_tags.map { |x| "##{x}" }.join(' ')) }
|
||||
let(:errors) { instance_double(ActiveModel::Errors, add: nil) }
|
||||
|
||||
context 'with a remote reblog' do
|
||||
let(:local) { false }
|
||||
let(:reblog) { true }
|
||||
|
||||
it 'does not add errors' do
|
||||
expect(errors).to_not have_received(:add).with(:text, any_args)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with a local original status' do
|
||||
let(:local) { true }
|
||||
let(:reblog) { false }
|
||||
|
||||
context 'when does not contain any disallowed hashtags' do
|
||||
let(:disallowed_tags) { [] }
|
||||
|
||||
it 'does not add errors' do
|
||||
expect(errors).to_not have_received(:add).with(:text, any_args)
|
||||
end
|
||||
context 'when reblog? is false' do
|
||||
context 'when text does not contain unusable tags' do
|
||||
it { is_expected.to allow_values('text', tag_string).for(:text) }
|
||||
end
|
||||
|
||||
context 'when contains disallowed hashtags' do
|
||||
let(:disallowed_tags) { %w(a b c) }
|
||||
context 'when text contains unusable tags' do
|
||||
before { Fabricate :tag, name: 'a', usable: false }
|
||||
|
||||
it 'adds an error' do
|
||||
expect(errors).to have_received(:add)
|
||||
.with(:text, I18n.t('statuses.disallowed_hashtags', tags: disallowed_tags.join(', '), count: disallowed_tags.size))
|
||||
it { is_expected.to_not allow_values(tag_string).for(:text).with_message(disallow_message) }
|
||||
|
||||
def disallow_message
|
||||
I18n.t('statuses.disallowed_hashtags', tags: 'a', count: 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when remote' do
|
||||
before { subject.local = false }
|
||||
|
||||
context 'when reblog? is true' do
|
||||
before { subject.reblog = Fabricate(:status) }
|
||||
|
||||
it { is_expected.to allow_values(nil, tag_string).for(:text) }
|
||||
end
|
||||
|
||||
context 'when reblog? is false' do
|
||||
it { is_expected.to allow_values('text', tag_string).for(:text) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
30
spec/workers/activitypub/feature_request_worker_spec.rb
Normal file
30
spec/workers/activitypub/feature_request_worker_spec.rb
Normal file
@@ -0,0 +1,30 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe ActivityPub::FeatureRequestWorker do
|
||||
subject { described_class.new }
|
||||
|
||||
let(:account) { Fabricate(:account, inbox_url: 'http://example.com', domain: 'example.com') }
|
||||
let(:collection_owner) { Fabricate(:account) }
|
||||
let(:collection) { Fabricate(:collection, account: collection_owner) }
|
||||
let(:collection_item) { Fabricate(:collection_item, collection:, account:) }
|
||||
|
||||
describe '#perform' do
|
||||
it 'sends the expected `FeatureRequest` activity' do
|
||||
subject.perform(collection_item.id)
|
||||
|
||||
expect(ActivityPub::DeliveryWorker)
|
||||
.to have_enqueued_sidekiq_job(expected_json, collection_owner.id, 'http://example.com', {})
|
||||
end
|
||||
|
||||
def expected_json
|
||||
match_json_values(
|
||||
id: a_string_matching(/^http/),
|
||||
type: 'FeatureRequest',
|
||||
object: ActivityPub::TagManager.instance.uri_for(account),
|
||||
instrument: ActivityPub::TagManager.instance.uri_for(collection_item.collection)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user