Merge pull request #3513 from glitch-soc/glitch-soc/merge-upstream

Merge upstream changes up to 9215e1ec53dcf3714080c84af7af070bcb8d9978
This commit is contained in:
Claire 2026-05-28 08:40:19 +02:00 committed by GitHub
commit 28411fe366
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
135 changed files with 1262 additions and 805 deletions

3
.bundler-audit.yml Normal file
View File

@ -0,0 +1,3 @@
---
ignore:
- CVE-2026-45363

View File

@ -35,7 +35,7 @@ jobs:
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4 uses: github/codeql-action/init@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@ -48,7 +48,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4 uses: github/codeql-action/autobuild@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4
# Command-line programs to run using the OS shell. # Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@ -61,6 +61,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh # ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4 uses: github/codeql-action/analyze@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4
with: with:
category: '/language:${{matrix.language}}' category: '/language:${{matrix.language}}'

View File

@ -167,7 +167,7 @@ jobs:
- name: Upload coverage reports to Codecov - name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version' if: matrix.ruby-version == '.ruby-version'
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6 uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6
with: with:
files: coverage/lcov/*.lcov files: coverage/lcov/*.lcov
env: env:

View File

@ -24,3 +24,6 @@ Rails/RakeEnvironment:
Rails/SkipsModelValidations: Rails/SkipsModelValidations:
Enabled: false Enabled: false
Rails/StrongParametersExpect:
Enabled: false

View File

@ -33,6 +33,9 @@ Style/NumericLiterals:
AllowedPatterns: AllowedPatterns:
- \d{4}_\d{2}_\d{2}_\d{6} - \d{4}_\d{2}_\d{2}_\d{6}
Style/OneClassPerFile:
Enabled: false
Style/PercentLiteralDelimiters: Style/PercentLiteralDelimiters:
PreferredDelimiters: PreferredDelimiters:
'%i': () '%i': ()

View File

@ -99,8 +99,8 @@ GEM
ast (2.4.3) ast (2.4.3)
attr_required (1.0.2) attr_required (1.0.2)
aws-eventstream (1.4.0) aws-eventstream (1.4.0)
aws-partitions (1.1249.0) aws-partitions (1.1253.0)
aws-sdk-core (3.247.0) aws-sdk-core (3.249.0)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0) aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9) aws-sigv4 (~> 1.9)
@ -235,7 +235,7 @@ GEM
fabrication (3.0.0) fabrication (3.0.0)
faker (3.8.0) faker (3.8.0)
i18n (>= 1.8.11, < 2) i18n (>= 1.8.11, < 2)
faraday (2.14.1) faraday (2.14.2)
faraday-net_http (>= 2.0, < 3.5) faraday-net_http (>= 2.0, < 3.5)
json json
logger logger
@ -243,7 +243,7 @@ GEM
faraday (>= 1, < 3) faraday (>= 1, < 3)
faraday-httpclient (2.0.2) faraday-httpclient (2.0.2)
httpclient (>= 2.2) httpclient (>= 2.2)
faraday-net_http (3.4.2) faraday-net_http (3.4.3)
net-http (~> 0.5) net-http (~> 0.5)
fast_blank (1.0.1) fast_blank (1.0.1)
fastimage (2.4.1) fastimage (2.4.1)
@ -588,7 +588,7 @@ GEM
ostruct (0.6.3) ostruct (0.6.3)
ox (2.14.26) ox (2.14.26)
bigdecimal (>= 3.0) bigdecimal (>= 3.0)
parallel (1.28.0) parallel (2.1.0)
parser (3.3.11.1) parser (3.3.11.1)
ast (~> 2.4.1) ast (~> 2.4.1)
racc racc
@ -755,11 +755,11 @@ GEM
rspec-mocks (~> 3.0) rspec-mocks (~> 3.0)
sidekiq (>= 5, < 9) sidekiq (>= 5, < 9)
rspec-support (3.13.7) rspec-support (3.13.7)
rubocop (1.84.2) rubocop (1.86.2)
json (~> 2.3) json (~> 2.3)
language_server-protocol (~> 3.17.0.2) language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0) lint_roller (~> 1.1.0)
parallel (~> 1.10) parallel (>= 1.10)
parser (>= 3.3.0.2) parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0) rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0) regexp_parser (>= 2.9.3, < 3.0)
@ -779,7 +779,7 @@ GEM
lint_roller (~> 1.1) lint_roller (~> 1.1)
rubocop (>= 1.75.0, < 2.0) rubocop (>= 1.75.0, < 2.0)
rubocop-ast (>= 1.47.1, < 2.0) rubocop-ast (>= 1.47.1, < 2.0)
rubocop-rails (2.34.3) rubocop-rails (2.35.2)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
lint_roller (~> 1.1) lint_roller (~> 1.1)
rack (>= 1.1) rack (>= 1.1)

View File

@ -1,4 +1,5 @@
import type { ApiAccountJSON } from './accounts'; import type { ApiAccountJSON } from './accounts';
import type { ApiCollectionJSON } from './collections';
import type { ApiStatusJSON } from './statuses'; import type { ApiStatusJSON } from './statuses';
import type { ApiHashtagJSON } from './tags'; import type { ApiHashtagJSON } from './tags';
@ -8,4 +9,5 @@ export interface ApiSearchResultsJSON {
accounts: ApiAccountJSON[]; accounts: ApiAccountJSON[];
statuses: ApiStatusJSON[]; statuses: ApiStatusJSON[];
hashtags: ApiHashtagJSON[]; hashtags: ApiHashtagJSON[];
collections: ApiCollectionJSON[];
} }

View File

@ -11,7 +11,7 @@ import NotificationsIcon from '@/material-icons/400-24px/notifications.svg?react
import NotificationsActiveIcon from '@/material-icons/400-24px/notifications_active-fill.svg?react'; import NotificationsActiveIcon from '@/material-icons/400-24px/notifications_active-fill.svg?react';
import ShareIcon from '@/material-icons/400-24px/share.svg?react'; import ShareIcon from '@/material-icons/400-24px/share.svg?react';
import { CopyIconButton } from '../copy_icon_button'; import { CopyIconButton } from '../copy_button';
import { FollowButton } from '../follow_button'; import { FollowButton } from '../follow_button';
import { IconButton } from '../icon_button'; import { IconButton } from '../icon_button';

View File

@ -7,17 +7,16 @@ import classNames from 'classnames';
import Overlay from 'react-overlays/esm/Overlay'; import Overlay from 'react-overlays/esm/Overlay';
import { showAlert } from '@/flavours/glitch/actions/alerts';
import { useAccount } from '@/flavours/glitch/hooks/useAccount'; import { useAccount } from '@/flavours/glitch/hooks/useAccount';
import { useRelationship } from '@/flavours/glitch/hooks/useRelationship'; import { useRelationship } from '@/flavours/glitch/hooks/useRelationship';
import { useAppDispatch, useAppSelector } from '@/flavours/glitch/store'; import { useAppSelector } from '@/flavours/glitch/store';
import AtIcon from '@/material-icons/400-24px/alternate_email.svg?react'; import AtIcon from '@/material-icons/400-24px/alternate_email.svg?react';
import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
import HelpIcon from '@/material-icons/400-24px/help.svg?react'; import HelpIcon from '@/material-icons/400-24px/help.svg?react';
import DomainIcon from '@/material-icons/400-24px/language.svg?react'; import DomainIcon from '@/material-icons/400-24px/language.svg?react';
import { FollowsYouBadge } from '../badge'; import { FollowsYouBadge } from '../badge';
import { Button } from '../button'; import { CopyButton } from '../copy_button';
import { DisplayName } from '../display_name'; import { DisplayName } from '../display_name';
import { Icon } from '../icon'; import { Icon } from '../icon';
@ -90,17 +89,6 @@ const AccountNameHelp: FC<{
const handle = `@${username}@${domain}`; const handle = `@${username}@${domain}`;
const dispatch = useAppDispatch();
const [copied, setCopied] = useState(false);
const handleCopy = useCallback(() => {
void navigator.clipboard.writeText(handle);
setCopied(true);
dispatch(showAlert({ message: messages.copied }));
setTimeout(() => {
setCopied(false);
}, 700);
}, [handle, dispatch]);
return ( return (
<> <>
<button <button
@ -182,21 +170,25 @@ const AccountNameHelp: FC<{
tagName='p' tagName='p'
/> />
<Button onClick={handleCopy} className={classes.handleCopy}> <CopyButton value={handle} className={classes.handleCopy}>
<Icon id='copy' icon={ContentCopyIcon} /> {(wasCopied) => (
{!copied && ( <>
<FormattedMessage <Icon id='copy' icon={ContentCopyIcon} />
id='account.name.copy' {!wasCopied && (
defaultMessage='Copy handle' <FormattedMessage
/> id='account.name.copy'
defaultMessage='Copy handle'
/>
)}
{wasCopied && (
<FormattedMessage
id='copypaste.copied'
defaultMessage='Copied'
/>
)}
</>
)} )}
{copied && ( </CopyButton>
<FormattedMessage
id='copypaste.copied'
defaultMessage='Copied'
/>
)}
</Button>
</div> </div>
)} )}
</Overlay> </Overlay>

View File

@ -0,0 +1,75 @@
import { useState, useCallback } from 'react';
import { defineMessages } from 'react-intl';
import classNames from 'classnames';
import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
import { showAlert } from 'flavours/glitch/actions/alerts';
import { IconButton } from 'flavours/glitch/components/icon_button';
import { useAppDispatch } from 'flavours/glitch/store';
import { Button } from './button';
const messages = defineMessages({
copied: {
id: 'copy_icon_button.copied',
defaultMessage: 'Copied to clipboard',
},
});
export function useCopyToClipboard({ text }: { text: string }) {
const [wasCopied, setWasCopied] = useState(false);
const dispatch = useAppDispatch();
const copyText = useCallback(() => {
void navigator.clipboard.writeText(text);
setWasCopied(true);
dispatch(showAlert({ message: messages.copied }));
setTimeout(() => {
setWasCopied(false);
}, 700);
}, [setWasCopied, text, dispatch]);
return { copyText, wasCopied };
}
export const CopyButton: React.FC<
Omit<
React.ComponentPropsWithoutRef<typeof Button>,
'onClick' | 'text' | 'children'
> & {
value: string;
children: React.ReactNode | ((wasCopied: boolean) => React.ReactNode);
}
> = ({ value, children, ...otherProps }) => {
const { copyText, wasCopied } = useCopyToClipboard({ text: value });
const label = typeof children === 'function' ? children(wasCopied) : children;
return (
<Button {...otherProps} onClick={copyText}>
{label}
</Button>
);
};
export const CopyIconButton: React.FC<{
title: string;
value: string;
className?: string;
'aria-describedby'?: string;
}> = ({ title, value, className, 'aria-describedby': ariaDescribedBy }) => {
const { copyText, wasCopied } = useCopyToClipboard({ text: value });
return (
<IconButton
className={classNames(className, wasCopied ? 'copied' : 'copyable')}
title={title}
onClick={copyText}
icon='copy-icon'
iconComponent={ContentCopyIcon}
aria-describedby={ariaDescribedBy}
/>
);
};

View File

@ -1,47 +0,0 @@
import { useState, useCallback } from 'react';
import { defineMessages } from 'react-intl';
import classNames from 'classnames';
import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
import { showAlert } from 'flavours/glitch/actions/alerts';
import { IconButton } from 'flavours/glitch/components/icon_button';
import { useAppDispatch } from 'flavours/glitch/store';
const messages = defineMessages({
copied: {
id: 'copy_icon_button.copied',
defaultMessage: 'Copied to clipboard',
},
});
export const CopyIconButton: React.FC<{
title: string;
value: string;
className?: string;
'aria-describedby'?: string;
}> = ({ title, value, className, 'aria-describedby': ariaDescribedBy }) => {
const [copied, setCopied] = useState(false);
const dispatch = useAppDispatch();
const handleClick = useCallback(() => {
void navigator.clipboard.writeText(value);
setCopied(true);
dispatch(showAlert({ message: messages.copied }));
setTimeout(() => {
setCopied(false);
}, 700);
}, [setCopied, value, dispatch]);
return (
<IconButton
className={classNames(className, copied ? 'copied' : 'copyable')}
title={title}
onClick={handleClick}
icon='copy-icon'
iconComponent={ContentCopyIcon}
aria-describedby={ariaDescribedBy}
/>
);
};

View File

@ -13,8 +13,7 @@
.content { .content {
max-width: 370px; max-width: 370px;
svg, :where(svg, img) {
img {
width: 200px; width: 200px;
aspect-ratio: 1; aspect-ratio: 1;
object-fit: contain; object-fit: contain;
@ -22,16 +21,10 @@
margin-bottom: 16px; margin-bottom: 16px;
} }
h3 {
font-size: 17px;
font-weight: 500;
text-wrap: balance;
line-height: 1.2;
}
p { p {
margin-top: 8px; margin-top: 8px;
font-size: 15px; font-size: 15px;
line-height: 1.4;
color: var(--color-text-secondary); color: var(--color-text-secondary);
text-wrap: pretty; text-wrap: pretty;
} }
@ -41,6 +34,18 @@
} }
} }
.heading {
font-size: 17px;
font-weight: 500;
text-wrap: balance;
line-height: 1.2;
}
.errorImage {
width: 280px;
margin: -10% 0;
}
[data-color-scheme='dark'] .defaultImage { [data-color-scheme='dark'] .defaultImage {
--color-skin-1: #3a3a50; --color-skin-1: #3a3a50;
--color-skin-2: #67678e; --color-skin-2: #67678e;

View File

@ -29,6 +29,14 @@ export const Default: Story = {
}, },
}; };
export const Error: Story = {
args: {
image: 'error',
title: 'Error',
message: 'Something went wrong loading the page.',
},
};
export const WithAction: Story = { export const WithAction: Story = {
args: { args: {
...Default.args, ...Default.args,

View File

@ -4,10 +4,15 @@ import classNames from 'classnames';
import ElephantImage from '@/images/elephant_ui.svg?react'; import ElephantImage from '@/images/elephant_ui.svg?react';
import { GIF } from '../gif';
import classes from './empty_state.module.scss'; import classes from './empty_state.module.scss';
const images = { const images = {
default: <ElephantImage className={classes.defaultImage} />, default: <ElephantImage className={classes.defaultImage} />,
error: (
<GIF src='/oops.gif' staticSrc='/oops.png' className={classes.errorImage} />
),
}; };
/** /**
@ -21,6 +26,7 @@ export const EmptyState: React.FC<{
title?: React.ReactNode; title?: React.ReactNode;
message?: React.ReactNode; message?: React.ReactNode;
children?: React.ReactNode; children?: React.ReactNode;
headingLevel?: 'h2' | 'h3' | 'h4';
className?: string; className?: string;
}> = ({ }> = ({
image = 'default', image = 'default',
@ -29,6 +35,7 @@ export const EmptyState: React.FC<{
), ),
message, message,
children, children,
headingLevel: Heading = 'h2',
className, className,
}) => { }) => {
const imageToRender = typeof image === 'string' ? images[image] : image; const imageToRender = typeof image === 'string' ? images[image] : image;
@ -38,7 +45,7 @@ export const EmptyState: React.FC<{
{(title || message || imageToRender) && ( {(title || message || imageToRender) && (
<div className={classes.content}> <div className={classes.content}>
{imageToRender} {imageToRender}
{!!title && <h3>{title}</h3>} {!!title && <Heading className={classes.heading}>{title}</Heading>}
{!!message && <p>{message}</p>} {!!message && <p>{message}</p>}
</div> </div>
)} )}

View File

@ -4,7 +4,7 @@ import { useIntl } from 'react-intl';
import classNames from 'classnames'; import classNames from 'classnames';
import { CopyIconButton } from 'flavours/glitch/components/copy_icon_button'; import { CopyIconButton } from '@/flavours/glitch/components/copy_button';
import classes from './copy_link_field.module.scss'; import classes from './copy_link_field.module.scss';
import { FormFieldWrapper } from './form_field_wrapper'; import { FormFieldWrapper } from './form_field_wrapper';

View File

@ -4,7 +4,7 @@ import { autoPlayGif } from 'flavours/glitch/initial_state';
export const GIF: React.FC<{ export const GIF: React.FC<{
src: string; src: string;
staticSrc: string; staticSrc: string;
className: string; className?: string;
animate?: boolean; animate?: boolean;
}> = ({ src, staticSrc, className, animate = autoPlayGif }) => { }> = ({ src, staticSrc, className, animate = autoPlayGif }) => {
const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate); const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate);

View File

@ -9,7 +9,7 @@ import { Helmet } from '@unhead/react/helmet';
import { Column } from '@/flavours/glitch/components/column'; import { Column } from '@/flavours/glitch/components/column';
import { ColumnHeader } from '@/flavours/glitch/components/column_header'; import { ColumnHeader } from '@/flavours/glitch/components/column_header';
import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator'; import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator';
import BundleColumnError from '@/flavours/glitch/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/flavours/glitch/features/ui/components/bundle_column_error';
import { useColumnsContext } from '../../ui/util/columns_context'; import { useColumnsContext } from '../../ui/util/columns_context';
import classes from '../styles.module.scss'; import classes from '../styles.module.scss';

View File

@ -19,7 +19,7 @@ import {
} from '@/flavours/glitch/components/scrollable_list/components'; } from '@/flavours/glitch/components/scrollable_list/components';
import type { TruncatedListItemInfo } from '@/flavours/glitch/components/truncated_list'; import type { TruncatedListItemInfo } from '@/flavours/glitch/components/truncated_list';
import { TruncatedListItems } from '@/flavours/glitch/components/truncated_list'; import { TruncatedListItems } from '@/flavours/glitch/components/truncated_list';
import BundleColumnError from '@/flavours/glitch/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/flavours/glitch/features/ui/components/bundle_column_error';
import Column from '@/flavours/glitch/features/ui/components/column'; import Column from '@/flavours/glitch/features/ui/components/column';
import { useAccount } from '@/flavours/glitch/hooks/useAccount'; import { useAccount } from '@/flavours/glitch/hooks/useAccount';
import { useAccountId } from '@/flavours/glitch/hooks/useAccountId'; import { useAccountId } from '@/flavours/glitch/hooks/useAccountId';

View File

@ -10,7 +10,7 @@ import { AccountHeader } from '@/flavours/glitch/components/account_header';
import { LimitedAccountHint } from '@/flavours/glitch/components/limited_account_hint'; import { LimitedAccountHint } from '@/flavours/glitch/components/limited_account_hint';
import { RemoteHint } from '@/flavours/glitch/components/remote_hint'; import { RemoteHint } from '@/flavours/glitch/components/remote_hint';
import ScrollableList from '@/flavours/glitch/components/scrollable_list'; import ScrollableList from '@/flavours/glitch/components/scrollable_list';
import BundleColumnError from '@/flavours/glitch/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/flavours/glitch/features/ui/components/bundle_column_error';
import Column from '@/flavours/glitch/features/ui/components/column'; import Column from '@/flavours/glitch/features/ui/components/column';
import { useAccountId } from '@/flavours/glitch/hooks/useAccountId'; import { useAccountId } from '@/flavours/glitch/hooks/useAccountId';
import { useAccountVisibility } from '@/flavours/glitch/hooks/useAccountVisibility'; import { useAccountVisibility } from '@/flavours/glitch/hooks/useAccountVisibility';

View File

@ -19,7 +19,7 @@ import { LimitedAccountHint } from '@/flavours/glitch/components/limited_account
import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator'; import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator';
import { RemoteHint } from '@/flavours/glitch/components/remote_hint'; import { RemoteHint } from '@/flavours/glitch/components/remote_hint';
import StatusList from '@/flavours/glitch/components/status_list'; import StatusList from '@/flavours/glitch/components/status_list';
import BundleColumnError from '@/flavours/glitch/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/flavours/glitch/features/ui/components/bundle_column_error';
import { import {
useAccountId, useAccountId,
useCurrentAccountId, useCurrentAccountId,

View File

@ -19,6 +19,7 @@ import { useHistory } from 'react-router-dom';
import { isFulfilled } from '@reduxjs/toolkit'; import { isFulfilled } from '@reduxjs/toolkit';
import { getCollectionPath } from '@/flavours/glitch/features/collections/utils';
import CancelIcon from '@/material-icons/400-24px/cancel-fill.svg?react'; import CancelIcon from '@/material-icons/400-24px/cancel-fill.svg?react';
import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import CloseIcon from '@/material-icons/400-24px/close.svg?react';
import SearchIcon from '@/material-icons/400-24px/search.svg?react'; import SearchIcon from '@/material-icons/400-24px/search.svg?react';
@ -337,6 +338,10 @@ export const Search: React.FC<{
history.push( history.push(
`/@${result.payload.statuses[0].account.acct}/${result.payload.statuses[0].id}`, `/@${result.payload.statuses[0].account.acct}/${result.payload.statuses[0].id}`,
); );
} else if (result.payload.collections[0]) {
history.push(
getCollectionPath(result.payload.collections[0].id),
);
} }
} }

View File

@ -6,7 +6,7 @@ import type { ColumnRef } from '@/flavours/glitch/components/column';
import { Column } from '@/flavours/glitch/components/column'; import { Column } from '@/flavours/glitch/components/column';
import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator'; import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator';
import ScrollableList from '@/flavours/glitch/components/scrollable_list'; import ScrollableList from '@/flavours/glitch/components/scrollable_list';
import BundleColumnError from '@/flavours/glitch/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/flavours/glitch/features/ui/components/bundle_column_error';
import { useAccount } from '@/flavours/glitch/hooks/useAccount'; import { useAccount } from '@/flavours/glitch/hooks/useAccount';
import { useAccountVisibility } from '@/flavours/glitch/hooks/useAccountVisibility'; import { useAccountVisibility } from '@/flavours/glitch/hooks/useAccountVisibility';
import { useLayout } from '@/flavours/glitch/hooks/useLayout'; import { useLayout } from '@/flavours/glitch/hooks/useLayout';

View File

@ -4,16 +4,14 @@ import { Helmet } from '@unhead/react/helmet';
import { Column } from 'flavours/glitch/components/column'; import { Column } from 'flavours/glitch/components/column';
import { NavigationPanel, messages } from '../navigation_panel'; import { NavigationPanel } from '../navigation_panel';
import { LinkFooter } from '../ui/components/link_footer'; import { LinkFooter } from '../ui/components/link_footer';
const GettingStarted: React.FC = () => { const GettingStarted: React.FC = () => {
const intl = useIntl(); const intl = useIntl();
return ( return (
<Column> <Column>
<nav aria-label={intl.formatMessage(messages.main)}> <NavigationPanel multiColumn />
<NavigationPanel multiColumn />
</nav>
<LinkFooter context='multi-column' /> <LinkFooter context='multi-column' />

View File

@ -65,7 +65,7 @@ import { MoreLink } from './components/more_link';
import { SignInBanner } from './components/sign_in_banner'; import { SignInBanner } from './components/sign_in_banner';
import { Trends } from './components/trends'; import { Trends } from './components/trends';
export const messages = defineMessages({ const messages = defineMessages({
home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, home: { id: 'tabs_bar.home', defaultMessage: 'Home' },
notifications: { notifications: {
id: 'tabs_bar.notifications', id: 'tabs_bar.notifications',
@ -270,7 +270,10 @@ export const NavigationPanel: React.FC<{ multiColumn?: boolean }> = ({
); );
return ( return (
<div className='navigation-panel'> <nav
className='navigation-panel'
aria-label={intl.formatMessage(messages.main)}
>
{showSearch && <Search singleColumn />} {showSearch && <Search singleColumn />}
{!multiColumn && <ProfileCard />} {!multiColumn && <ProfileCard />}
@ -456,12 +459,11 @@ export const NavigationPanel: React.FC<{ multiColumn?: boolean }> = ({
<div className='flex-spacer' /> <div className='flex-spacer' />
<Trends /> <Trends />
</div> </nav>
); );
}; };
export const CollapsibleNavigationPanel: React.FC = () => { export const CollapsibleNavigationPanel: React.FC = () => {
const intl = useIntl();
const open = useAppSelector((state) => state.navigation.open); const open = useAppSelector((state) => state.navigation.open);
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const openable = useBreakpoint('openable'); const openable = useBreakpoint('openable');
@ -570,8 +572,7 @@ export const CollapsibleNavigationPanel: React.FC = () => {
const showOverlay = openable && open; const showOverlay = openable && open;
return ( return (
<nav <div
aria-label={intl.formatMessage(messages.main)}
className={classNames( className={classNames(
'columns-area__panels__pane columns-area__panels__pane--start columns-area__panels__pane--navigational', 'columns-area__panels__pane columns-area__panels__pane--start columns-area__panels__pane--navigational',
{ 'columns-area__panels__pane--overlay': showOverlay }, { 'columns-area__panels__pane--overlay': showOverlay },
@ -585,6 +586,6 @@ export const CollapsibleNavigationPanel: React.FC = () => {
> >
<NavigationPanel /> <NavigationPanel />
</animated.div> </animated.div>
</nav> </div>
); );
}; };

View File

@ -14,7 +14,7 @@ import { Helmet } from '@unhead/react/helmet';
import { apiGetTermsOfService } from 'flavours/glitch/api/instance'; import { apiGetTermsOfService } from 'flavours/glitch/api/instance';
import type { ApiTermsOfServiceJSON } from 'flavours/glitch/api_types/instance'; import type { ApiTermsOfServiceJSON } from 'flavours/glitch/api_types/instance';
import { Column } from 'flavours/glitch/components/column'; import { Column } from 'flavours/glitch/components/column';
import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error'; import { BundleColumnError } from 'flavours/glitch/features/ui/components/bundle_column_error';
const messages = defineMessages({ const messages = defineMessages({
title: { id: 'terms_of_service.title', defaultMessage: 'Terms of Service' }, title: { id: 'terms_of_service.title', defaultMessage: 'Terms of Service' },

View File

@ -1,116 +0,0 @@
import PropTypes from 'prop-types';
import { PureComponent } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import { Helmet } from '@unhead/react/helmet';
import { Link } from 'react-router-dom';
import { Button } from 'flavours/glitch/components/button';
import Column from 'flavours/glitch/components/column';
import { injectIntl } from '@/flavours/glitch/components/intl';
import { GIF } from 'flavours/glitch/components/gif';
class CopyButton extends PureComponent {
static propTypes = {
children: PropTypes.node.isRequired,
value: PropTypes.string.isRequired,
};
state = {
copied: false,
};
handleClick = () => {
const { value } = this.props;
navigator.clipboard.writeText(value);
this.setState({ copied: true });
this.timeout = setTimeout(() => this.setState({ copied: false }), 700);
};
componentWillUnmount () {
if (this.timeout) clearTimeout(this.timeout);
}
render () {
const { children } = this.props;
const { copied } = this.state;
return (
<Button onClick={this.handleClick} className={copied ? 'copied' : 'copyable'}>{copied ? <FormattedMessage id='copypaste.copied' defaultMessage='Copied' /> : children}</Button>
);
}
}
class BundleColumnError extends PureComponent {
static propTypes = {
errorType: PropTypes.oneOf(['routing', 'network', 'error']),
onRetry: PropTypes.func,
intl: PropTypes.object.isRequired,
multiColumn: PropTypes.bool,
stacktrace: PropTypes.string,
};
static defaultProps = {
errorType: 'routing',
};
handleRetry = () => {
const { onRetry } = this.props;
if (onRetry) {
onRetry();
}
};
render () {
const { errorType, multiColumn, stacktrace } = this.props;
let title, body;
switch(errorType) {
case 'routing':
title = <FormattedMessage id='bundle_column_error.routing.title' defaultMessage='404' />;
body = <FormattedMessage id='bundle_column_error.routing.body' defaultMessage='The requested page could not be found. Are you sure the URL in the address bar is correct?' />;
break;
case 'network':
title = <FormattedMessage id='bundle_column_error.network.title' defaultMessage='Network error' />;
body = <FormattedMessage id='bundle_column_error.network.body' defaultMessage='There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.' />;
break;
case 'error':
title = <FormattedMessage id='bundle_column_error.error.title' defaultMessage='Oh, no!' />;
body = <FormattedMessage id='bundle_column_error.error.body' defaultMessage='The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.' />;
break;
}
return (
<Column bindToDocument={!multiColumn}>
<div className='error-column'>
<GIF src='/oops.gif' staticSrc='/oops.png' className='error-column__image' />
<div className='error-column__message'>
<h1>{title}</h1>
<p>{body}</p>
<div className='error-column__message__actions'>
{errorType === 'network' && <Button onClick={this.handleRetry}><FormattedMessage id='bundle_column_error.retry' defaultMessage='Try again' /></Button>}
{errorType === 'error' && <CopyButton value={stacktrace}><FormattedMessage id='bundle_column_error.copy_stacktrace' defaultMessage='Copy error report' /></CopyButton>}
<Link to='/' className={classNames('button', { 'button-secondary': errorType !== 'routing' })}><FormattedMessage id='bundle_column_error.return' defaultMessage='Go back home' /></Link>
</div>
</div>
</div>
<Helmet>
<meta name='robots' content='noindex' />
</Helmet>
</Column>
);
}
}
export default injectIntl(BundleColumnError);

View File

@ -0,0 +1,122 @@
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import { Link } from 'react-router-dom';
import { Helmet } from '@unhead/react/helmet';
import { CopyButton } from '@/flavours/glitch/components/copy_button';
import { EmptyState } from '@/flavours/glitch/components/empty_state';
import { Button } from 'flavours/glitch/components/button';
import { Column } from 'flavours/glitch/components/column';
import classes from './styles.module.scss';
interface BundleColumnErrorProps {
errorType?: 'routing' | 'network' | 'error';
onRetry?: () => void;
multiColumn?: boolean;
stacktrace?: string;
}
export const BundleColumnError: React.FC<BundleColumnErrorProps> = ({
errorType = 'routing',
onRetry,
multiColumn,
stacktrace,
}) => {
let title, body;
switch (errorType) {
case 'routing':
title = (
<FormattedMessage
id='bundle_column_error.routing.title'
defaultMessage='404'
/>
);
body = (
<FormattedMessage
id='bundle_column_error.routing.body'
defaultMessage='The requested page could not be found. Are you sure the URL in the address bar is correct?'
/>
);
break;
case 'network':
title = (
<FormattedMessage
id='bundle_column_error.network.title'
defaultMessage='Network error'
/>
);
body = (
<FormattedMessage
id='bundle_column_error.network.body'
defaultMessage='There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.'
/>
);
break;
case 'error':
title = (
<FormattedMessage
id='bundle_column_error.error.title'
defaultMessage='Oh, no!'
/>
);
body = (
<FormattedMessage
id='bundle_column_error.error.body'
defaultMessage='The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.'
/>
);
break;
}
return (
<Column bindToDocument={!multiColumn}>
<EmptyState
image='error'
title={title}
message={body}
className={classes.error}
>
<div className={classes.actions}>
{errorType === 'network' && onRetry && (
<Button onClick={onRetry}>
<FormattedMessage
id='bundle_column_error.retry'
defaultMessage='Try again'
/>
</Button>
)}
{errorType === 'error' && stacktrace && (
<CopyButton value={stacktrace}>
<FormattedMessage
id='bundle_column_error.copy_stacktrace'
defaultMessage='Copy error report'
/>
</CopyButton>
)}
<Link
to='/'
className={classNames('button', {
'button-secondary': errorType !== 'routing',
})}
>
<FormattedMessage
id='bundle_column_error.return'
defaultMessage='Go back home'
/>
</Link>
</div>
</EmptyState>
<Helmet>
<meta name='robots' content='noindex' />
</Helmet>
</Column>
);
};
// eslint-disable-next-line import/no-default-export
export default BundleColumnError;

View File

@ -0,0 +1,12 @@
.error {
flex-grow: 1;
border: 1px solid var(--color-border-primary);
border-radius: 4px;
}
.actions {
display: flex;
flex-wrap: wrap;
gap: 8px 12px;
justify-content: center;
}

View File

@ -33,7 +33,7 @@ import {
import { useColumnsContext } from '../util/columns_context'; import { useColumnsContext } from '../util/columns_context';
import Bundle from './bundle'; import Bundle from './bundle';
import BundleColumnError from './bundle_column_error'; import { BundleColumnError } from './bundle_column_error';
import { ColumnLoading } from './column_loading'; import { ColumnLoading } from './column_loading';
import { ComposePanel, RedirectToMobileComposeIfNeeded } from './compose_panel'; import { ComposePanel, RedirectToMobileComposeIfNeeded } from './compose_panel';
import DrawerLoading from './drawer_loading'; import DrawerLoading from './drawer_loading';

View File

@ -29,6 +29,7 @@ export const LinkFooter: React.FC<{
id='footer.about_this_server' id='footer.about_this_server'
defaultMessage='About' defaultMessage='About'
/> />
<span className='sr-only'> {domain}</span>
</Link> </Link>
</li> </li>
{statusPageUrl && ( {statusPageUrl && (
@ -82,6 +83,7 @@ export const LinkFooter: React.FC<{
<li> <li>
<a href='https://joinmastodon.org' target='_blank' rel='noopener'> <a href='https://joinmastodon.org' target='_blank' rel='noopener'>
<FormattedMessage id='footer.about' defaultMessage='About' /> <FormattedMessage id='footer.about' defaultMessage='About' />
<span className='sr-only'> Mastodon</span>
</a> </a>
</li> </li>
<li> <li>

View File

@ -1420,6 +1420,7 @@ body > [data-popper-placement] {
// this element inherits a text direction that is opposite to its own, // this element inherits a text direction that is opposite to its own,
// the start of this element's text is cut off. // the start of this element's text is cut off.
// Posts on the timeline
.status:not(.status--is-quote) .status:not(.status--is-quote)
> .status__content > .status__content
> .status__content__text:lang(#{$lang}), > .status__content__text:lang(#{$lang}),
@ -1434,6 +1435,7 @@ body > [data-popper-placement] {
overflow-x: hidden; // read more overflow-x: hidden; // read more
} }
// Post editor
.autosuggest-textarea > .autosuggest-textarea__textarea:lang(#{$lang}) { .autosuggest-textarea > .autosuggest-textarea__textarea:lang(#{$lang}) {
writing-mode: vertical-lr; writing-mode: vertical-lr;
min-height: 209px; // writable min-height: 209px; // writable
@ -1442,6 +1444,18 @@ body > [data-popper-placement] {
scrollbar-color: unset; scrollbar-color: unset;
} }
// Alt text editor
.dialog-modal__content__form
> .input
> .label_input
> textarea#description:lang(#{$lang}) {
writing-mode: vertical-lr;
min-height: 150px; // writable
max-height: 150px; // suppress autosizing by react-textarea-autosize
overflow-x: auto;
}
// Detailed posts
.detailed-status > .status__content > .status__content__text:lang(#{$lang}) { .detailed-status > .status__content > .status__content__text:lang(#{$lang}) {
writing-mode: vertical-lr; writing-mode: vertical-lr;
width: 100%; // detecting overflow width: 100%; // detecting overflow
@ -3440,8 +3454,7 @@ a.account__display-name {
.column-header, .column-header,
.column-back-button, .column-back-button,
.scrollable, .scrollable {
.error-column {
border-radius: 0 !important; border-radius: 0 !important;
} }
@ -5428,51 +5441,6 @@ a.status-card {
margin-bottom: 0; margin-bottom: 0;
} }
.error-column {
padding: 20px;
border: 1px solid var(--color-border-primary);
border-radius: 4px;
display: flex;
flex: 1 1 auto;
align-items: center;
justify-content: center;
flex-direction: column;
cursor: default;
&__image {
width: 70%;
max-width: 350px;
margin-top: -50px;
}
&__message {
text-align: center;
color: var(--color-text-secondary);
font-size: 15px;
line-height: 22px;
h1 {
font-size: 28px;
line-height: 33px;
font-weight: 700;
margin-bottom: 15px;
color: var(--color-text-primary);
}
p {
max-width: 48ch;
}
&__actions {
margin-top: 30px;
display: flex;
gap: 10px;
align-items: center;
justify-content: center;
}
}
}
@keyframes heartbeat { @keyframes heartbeat {
0% { 0% {
transform: scale(1); transform: scale(1);

View File

@ -1,4 +1,5 @@
import type { ApiAccountJSON } from './accounts'; import type { ApiAccountJSON } from './accounts';
import type { ApiCollectionJSON } from './collections';
import type { ApiStatusJSON } from './statuses'; import type { ApiStatusJSON } from './statuses';
import type { ApiHashtagJSON } from './tags'; import type { ApiHashtagJSON } from './tags';
@ -8,4 +9,5 @@ export interface ApiSearchResultsJSON {
accounts: ApiAccountJSON[]; accounts: ApiAccountJSON[];
statuses: ApiStatusJSON[]; statuses: ApiStatusJSON[];
hashtags: ApiHashtagJSON[]; hashtags: ApiHashtagJSON[];
collections: ApiCollectionJSON[];
} }

View File

@ -11,7 +11,7 @@ import NotificationsIcon from '@/material-icons/400-24px/notifications.svg?react
import NotificationsActiveIcon from '@/material-icons/400-24px/notifications_active-fill.svg?react'; import NotificationsActiveIcon from '@/material-icons/400-24px/notifications_active-fill.svg?react';
import ShareIcon from '@/material-icons/400-24px/share.svg?react'; import ShareIcon from '@/material-icons/400-24px/share.svg?react';
import { CopyIconButton } from '../copy_icon_button'; import { CopyIconButton } from '../copy_button';
import { FollowButton } from '../follow_button'; import { FollowButton } from '../follow_button';
import { IconButton } from '../icon_button'; import { IconButton } from '../icon_button';

View File

@ -7,17 +7,16 @@ import classNames from 'classnames';
import Overlay from 'react-overlays/esm/Overlay'; import Overlay from 'react-overlays/esm/Overlay';
import { showAlert } from '@/mastodon/actions/alerts';
import { useAccount } from '@/mastodon/hooks/useAccount'; import { useAccount } from '@/mastodon/hooks/useAccount';
import { useRelationship } from '@/mastodon/hooks/useRelationship'; import { useRelationship } from '@/mastodon/hooks/useRelationship';
import { useAppDispatch, useAppSelector } from '@/mastodon/store'; import { useAppSelector } from '@/mastodon/store';
import AtIcon from '@/material-icons/400-24px/alternate_email.svg?react'; import AtIcon from '@/material-icons/400-24px/alternate_email.svg?react';
import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
import HelpIcon from '@/material-icons/400-24px/help.svg?react'; import HelpIcon from '@/material-icons/400-24px/help.svg?react';
import DomainIcon from '@/material-icons/400-24px/language.svg?react'; import DomainIcon from '@/material-icons/400-24px/language.svg?react';
import { FollowsYouBadge } from '../badge'; import { FollowsYouBadge } from '../badge';
import { Button } from '../button'; import { CopyButton } from '../copy_button';
import { DisplayName } from '../display_name'; import { DisplayName } from '../display_name';
import { Icon } from '../icon'; import { Icon } from '../icon';
@ -90,17 +89,6 @@ const AccountNameHelp: FC<{
const handle = `@${username}@${domain}`; const handle = `@${username}@${domain}`;
const dispatch = useAppDispatch();
const [copied, setCopied] = useState(false);
const handleCopy = useCallback(() => {
void navigator.clipboard.writeText(handle);
setCopied(true);
dispatch(showAlert({ message: messages.copied }));
setTimeout(() => {
setCopied(false);
}, 700);
}, [handle, dispatch]);
return ( return (
<> <>
<button <button
@ -182,21 +170,25 @@ const AccountNameHelp: FC<{
tagName='p' tagName='p'
/> />
<Button onClick={handleCopy} className={classes.handleCopy}> <CopyButton value={handle} className={classes.handleCopy}>
<Icon id='copy' icon={ContentCopyIcon} /> {(wasCopied) => (
{!copied && ( <>
<FormattedMessage <Icon id='copy' icon={ContentCopyIcon} />
id='account.name.copy' {!wasCopied && (
defaultMessage='Copy handle' <FormattedMessage
/> id='account.name.copy'
defaultMessage='Copy handle'
/>
)}
{wasCopied && (
<FormattedMessage
id='copypaste.copied'
defaultMessage='Copied'
/>
)}
</>
)} )}
{copied && ( </CopyButton>
<FormattedMessage
id='copypaste.copied'
defaultMessage='Copied'
/>
)}
</Button>
</div> </div>
)} )}
</Overlay> </Overlay>

View File

@ -0,0 +1,75 @@
import { useState, useCallback } from 'react';
import { defineMessages } from 'react-intl';
import classNames from 'classnames';
import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
import { showAlert } from 'mastodon/actions/alerts';
import { IconButton } from 'mastodon/components/icon_button';
import { useAppDispatch } from 'mastodon/store';
import { Button } from './button';
const messages = defineMessages({
copied: {
id: 'copy_icon_button.copied',
defaultMessage: 'Copied to clipboard',
},
});
export function useCopyToClipboard({ text }: { text: string }) {
const [wasCopied, setWasCopied] = useState(false);
const dispatch = useAppDispatch();
const copyText = useCallback(() => {
void navigator.clipboard.writeText(text);
setWasCopied(true);
dispatch(showAlert({ message: messages.copied }));
setTimeout(() => {
setWasCopied(false);
}, 700);
}, [setWasCopied, text, dispatch]);
return { copyText, wasCopied };
}
export const CopyButton: React.FC<
Omit<
React.ComponentPropsWithoutRef<typeof Button>,
'onClick' | 'text' | 'children'
> & {
value: string;
children: React.ReactNode | ((wasCopied: boolean) => React.ReactNode);
}
> = ({ value, children, ...otherProps }) => {
const { copyText, wasCopied } = useCopyToClipboard({ text: value });
const label = typeof children === 'function' ? children(wasCopied) : children;
return (
<Button {...otherProps} onClick={copyText}>
{label}
</Button>
);
};
export const CopyIconButton: React.FC<{
title: string;
value: string;
className?: string;
'aria-describedby'?: string;
}> = ({ title, value, className, 'aria-describedby': ariaDescribedBy }) => {
const { copyText, wasCopied } = useCopyToClipboard({ text: value });
return (
<IconButton
className={classNames(className, wasCopied ? 'copied' : 'copyable')}
title={title}
onClick={copyText}
icon='copy-icon'
iconComponent={ContentCopyIcon}
aria-describedby={ariaDescribedBy}
/>
);
};

View File

@ -1,47 +0,0 @@
import { useState, useCallback } from 'react';
import { defineMessages } from 'react-intl';
import classNames from 'classnames';
import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
import { showAlert } from 'mastodon/actions/alerts';
import { IconButton } from 'mastodon/components/icon_button';
import { useAppDispatch } from 'mastodon/store';
const messages = defineMessages({
copied: {
id: 'copy_icon_button.copied',
defaultMessage: 'Copied to clipboard',
},
});
export const CopyIconButton: React.FC<{
title: string;
value: string;
className?: string;
'aria-describedby'?: string;
}> = ({ title, value, className, 'aria-describedby': ariaDescribedBy }) => {
const [copied, setCopied] = useState(false);
const dispatch = useAppDispatch();
const handleClick = useCallback(() => {
void navigator.clipboard.writeText(value);
setCopied(true);
dispatch(showAlert({ message: messages.copied }));
setTimeout(() => {
setCopied(false);
}, 700);
}, [setCopied, value, dispatch]);
return (
<IconButton
className={classNames(className, copied ? 'copied' : 'copyable')}
title={title}
onClick={handleClick}
icon='copy-icon'
iconComponent={ContentCopyIcon}
aria-describedby={ariaDescribedBy}
/>
);
};

View File

@ -13,8 +13,7 @@
.content { .content {
max-width: 370px; max-width: 370px;
svg, :where(svg, img) {
img {
width: 200px; width: 200px;
aspect-ratio: 1; aspect-ratio: 1;
object-fit: contain; object-fit: contain;
@ -22,16 +21,10 @@
margin-bottom: 16px; margin-bottom: 16px;
} }
h3 {
font-size: 17px;
font-weight: 500;
text-wrap: balance;
line-height: 1.2;
}
p { p {
margin-top: 8px; margin-top: 8px;
font-size: 15px; font-size: 15px;
line-height: 1.4;
color: var(--color-text-secondary); color: var(--color-text-secondary);
text-wrap: pretty; text-wrap: pretty;
} }
@ -41,6 +34,18 @@
} }
} }
.heading {
font-size: 17px;
font-weight: 500;
text-wrap: balance;
line-height: 1.2;
}
.errorImage {
width: 280px;
margin: -10% 0;
}
[data-color-scheme='dark'] .defaultImage { [data-color-scheme='dark'] .defaultImage {
--color-skin-1: #3a3a50; --color-skin-1: #3a3a50;
--color-skin-2: #67678e; --color-skin-2: #67678e;

View File

@ -29,6 +29,14 @@ export const Default: Story = {
}, },
}; };
export const Error: Story = {
args: {
image: 'error',
title: 'Error',
message: 'Something went wrong loading the page.',
},
};
export const WithAction: Story = { export const WithAction: Story = {
args: { args: {
...Default.args, ...Default.args,

View File

@ -4,10 +4,15 @@ import classNames from 'classnames';
import ElephantImage from '@/images/elephant_ui.svg?react'; import ElephantImage from '@/images/elephant_ui.svg?react';
import { GIF } from '../gif';
import classes from './empty_state.module.scss'; import classes from './empty_state.module.scss';
const images = { const images = {
default: <ElephantImage className={classes.defaultImage} />, default: <ElephantImage className={classes.defaultImage} />,
error: (
<GIF src='/oops.gif' staticSrc='/oops.png' className={classes.errorImage} />
),
}; };
/** /**
@ -21,6 +26,7 @@ export const EmptyState: React.FC<{
title?: React.ReactNode; title?: React.ReactNode;
message?: React.ReactNode; message?: React.ReactNode;
children?: React.ReactNode; children?: React.ReactNode;
headingLevel?: 'h2' | 'h3' | 'h4';
className?: string; className?: string;
}> = ({ }> = ({
image = 'default', image = 'default',
@ -29,6 +35,7 @@ export const EmptyState: React.FC<{
), ),
message, message,
children, children,
headingLevel: Heading = 'h2',
className, className,
}) => { }) => {
const imageToRender = typeof image === 'string' ? images[image] : image; const imageToRender = typeof image === 'string' ? images[image] : image;
@ -38,7 +45,7 @@ export const EmptyState: React.FC<{
{(title || message || imageToRender) && ( {(title || message || imageToRender) && (
<div className={classes.content}> <div className={classes.content}>
{imageToRender} {imageToRender}
{!!title && <h3>{title}</h3>} {!!title && <Heading className={classes.heading}>{title}</Heading>}
{!!message && <p>{message}</p>} {!!message && <p>{message}</p>}
</div> </div>
)} )}

View File

@ -4,7 +4,7 @@ import { useIntl } from 'react-intl';
import classNames from 'classnames'; import classNames from 'classnames';
import { CopyIconButton } from 'mastodon/components/copy_icon_button'; import { CopyIconButton } from '@/mastodon/components/copy_button';
import classes from './copy_link_field.module.scss'; import classes from './copy_link_field.module.scss';
import { FormFieldWrapper } from './form_field_wrapper'; import { FormFieldWrapper } from './form_field_wrapper';

View File

@ -4,7 +4,7 @@ import { autoPlayGif } from 'mastodon/initial_state';
export const GIF: React.FC<{ export const GIF: React.FC<{
src: string; src: string;
staticSrc: string; staticSrc: string;
className: string; className?: string;
animate?: boolean; animate?: boolean;
}> = ({ src, staticSrc, className, animate = autoPlayGif }) => { }> = ({ src, staticSrc, className, animate = autoPlayGif }) => {
const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate); const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate);

View File

@ -9,7 +9,7 @@ import { Helmet } from '@unhead/react/helmet';
import { Column } from '@/mastodon/components/column'; import { Column } from '@/mastodon/components/column';
import { ColumnHeader } from '@/mastodon/components/column_header'; import { ColumnHeader } from '@/mastodon/components/column_header';
import { LoadingIndicator } from '@/mastodon/components/loading_indicator'; import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
import BundleColumnError from '@/mastodon/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/mastodon/features/ui/components/bundle_column_error';
import { useColumnsContext } from '../../ui/util/columns_context'; import { useColumnsContext } from '../../ui/util/columns_context';
import classes from '../styles.module.scss'; import classes from '../styles.module.scss';

View File

@ -19,7 +19,7 @@ import {
} from '@/mastodon/components/scrollable_list/components'; } from '@/mastodon/components/scrollable_list/components';
import type { TruncatedListItemInfo } from '@/mastodon/components/truncated_list'; import type { TruncatedListItemInfo } from '@/mastodon/components/truncated_list';
import { TruncatedListItems } from '@/mastodon/components/truncated_list'; import { TruncatedListItems } from '@/mastodon/components/truncated_list';
import BundleColumnError from '@/mastodon/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/mastodon/features/ui/components/bundle_column_error';
import Column from '@/mastodon/features/ui/components/column'; import Column from '@/mastodon/features/ui/components/column';
import { useAccount } from '@/mastodon/hooks/useAccount'; import { useAccount } from '@/mastodon/hooks/useAccount';
import { useAccountId } from '@/mastodon/hooks/useAccountId'; import { useAccountId } from '@/mastodon/hooks/useAccountId';

View File

@ -11,7 +11,7 @@ import { ColumnBackButton } from '@/mastodon/components/column_back_button';
import { LimitedAccountHint } from '@/mastodon/components/limited_account_hint'; import { LimitedAccountHint } from '@/mastodon/components/limited_account_hint';
import { RemoteHint } from '@/mastodon/components/remote_hint'; import { RemoteHint } from '@/mastodon/components/remote_hint';
import ScrollableList from '@/mastodon/components/scrollable_list'; import ScrollableList from '@/mastodon/components/scrollable_list';
import BundleColumnError from '@/mastodon/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/mastodon/features/ui/components/bundle_column_error';
import Column from '@/mastodon/features/ui/components/column'; import Column from '@/mastodon/features/ui/components/column';
import { useAccountId } from '@/mastodon/hooks/useAccountId'; import { useAccountId } from '@/mastodon/hooks/useAccountId';
import { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility'; import { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility';

View File

@ -19,7 +19,7 @@ import { LimitedAccountHint } from '@/mastodon/components/limited_account_hint';
import { LoadingIndicator } from '@/mastodon/components/loading_indicator'; import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
import { RemoteHint } from '@/mastodon/components/remote_hint'; import { RemoteHint } from '@/mastodon/components/remote_hint';
import StatusList from '@/mastodon/components/status_list'; import StatusList from '@/mastodon/components/status_list';
import BundleColumnError from '@/mastodon/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/mastodon/features/ui/components/bundle_column_error';
import { import {
useAccountId, useAccountId,
useCurrentAccountId, useCurrentAccountId,

View File

@ -19,6 +19,7 @@ import { useHistory } from 'react-router-dom';
import { isFulfilled } from '@reduxjs/toolkit'; import { isFulfilled } from '@reduxjs/toolkit';
import { getCollectionPath } from '@/mastodon/features/collections/utils';
import CancelIcon from '@/material-icons/400-24px/cancel-fill.svg?react'; import CancelIcon from '@/material-icons/400-24px/cancel-fill.svg?react';
import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import CloseIcon from '@/material-icons/400-24px/close.svg?react';
import SearchIcon from '@/material-icons/400-24px/search.svg?react'; import SearchIcon from '@/material-icons/400-24px/search.svg?react';
@ -337,6 +338,10 @@ export const Search: React.FC<{
history.push( history.push(
`/@${result.payload.statuses[0].account.acct}/${result.payload.statuses[0].id}`, `/@${result.payload.statuses[0].account.acct}/${result.payload.statuses[0].id}`,
); );
} else if (result.payload.collections[0]) {
history.push(
getCollectionPath(result.payload.collections[0].id),
);
} }
} }

View File

@ -6,7 +6,7 @@ import { Column } from '@/mastodon/components/column';
import { ColumnBackButton } from '@/mastodon/components/column_back_button'; import { ColumnBackButton } from '@/mastodon/components/column_back_button';
import { LoadingIndicator } from '@/mastodon/components/loading_indicator'; import { LoadingIndicator } from '@/mastodon/components/loading_indicator';
import ScrollableList from '@/mastodon/components/scrollable_list'; import ScrollableList from '@/mastodon/components/scrollable_list';
import BundleColumnError from '@/mastodon/features/ui/components/bundle_column_error'; import { BundleColumnError } from '@/mastodon/features/ui/components/bundle_column_error';
import { useAccount } from '@/mastodon/hooks/useAccount'; import { useAccount } from '@/mastodon/hooks/useAccount';
import { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility'; import { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility';
import { useLayout } from '@/mastodon/hooks/useLayout'; import { useLayout } from '@/mastodon/hooks/useLayout';

View File

@ -4,16 +4,14 @@ import { Helmet } from '@unhead/react/helmet';
import { Column } from 'mastodon/components/column'; import { Column } from 'mastodon/components/column';
import { NavigationPanel, messages } from '../navigation_panel'; import { NavigationPanel } from '../navigation_panel';
import { LinkFooter } from '../ui/components/link_footer'; import { LinkFooter } from '../ui/components/link_footer';
const GettingStarted: React.FC = () => { const GettingStarted: React.FC = () => {
const intl = useIntl(); const intl = useIntl();
return ( return (
<Column> <Column>
<nav aria-label={intl.formatMessage(messages.main)}> <NavigationPanel multiColumn />
<NavigationPanel multiColumn />
</nav>
<LinkFooter context='multi-column' /> <LinkFooter context='multi-column' />

View File

@ -60,7 +60,7 @@ import { MoreLink } from './components/more_link';
import { SignInBanner } from './components/sign_in_banner'; import { SignInBanner } from './components/sign_in_banner';
import { Trends } from './components/trends'; import { Trends } from './components/trends';
export const messages = defineMessages({ const messages = defineMessages({
home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, home: { id: 'tabs_bar.home', defaultMessage: 'Home' },
notifications: { notifications: {
id: 'tabs_bar.notifications', id: 'tabs_bar.notifications',
@ -238,7 +238,10 @@ export const NavigationPanel: React.FC<{ multiColumn?: boolean }> = ({
} }
return ( return (
<div className='navigation-panel'> <nav
className='navigation-panel'
aria-label={intl.formatMessage(messages.main)}
>
<div className='navigation-panel__logo'> <div className='navigation-panel__logo'>
<Link <Link
to='/' to='/'
@ -420,12 +423,11 @@ export const NavigationPanel: React.FC<{ multiColumn?: boolean }> = ({
<div className='flex-spacer' /> <div className='flex-spacer' />
<Trends /> <Trends />
</div> </nav>
); );
}; };
export const CollapsibleNavigationPanel: React.FC = () => { export const CollapsibleNavigationPanel: React.FC = () => {
const intl = useIntl();
const open = useAppSelector((state) => state.navigation.open); const open = useAppSelector((state) => state.navigation.open);
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const openable = useBreakpoint('openable'); const openable = useBreakpoint('openable');
@ -534,8 +536,7 @@ export const CollapsibleNavigationPanel: React.FC = () => {
const showOverlay = openable && open; const showOverlay = openable && open;
return ( return (
<nav <div
aria-label={intl.formatMessage(messages.main)}
className={classNames( className={classNames(
'columns-area__panels__pane columns-area__panels__pane--start columns-area__panels__pane--navigational', 'columns-area__panels__pane columns-area__panels__pane--start columns-area__panels__pane--navigational',
{ 'columns-area__panels__pane--overlay': showOverlay }, { 'columns-area__panels__pane--overlay': showOverlay },
@ -549,6 +550,6 @@ export const CollapsibleNavigationPanel: React.FC = () => {
> >
<NavigationPanel /> <NavigationPanel />
</animated.div> </animated.div>
</nav> </div>
); );
}; };

View File

@ -14,7 +14,7 @@ import { Helmet } from '@unhead/react/helmet';
import { apiGetTermsOfService } from 'mastodon/api/instance'; import { apiGetTermsOfService } from 'mastodon/api/instance';
import type { ApiTermsOfServiceJSON } from 'mastodon/api_types/instance'; import type { ApiTermsOfServiceJSON } from 'mastodon/api_types/instance';
import { Column } from 'mastodon/components/column'; import { Column } from 'mastodon/components/column';
import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error'; import { BundleColumnError } from 'mastodon/features/ui/components/bundle_column_error';
const messages = defineMessages({ const messages = defineMessages({
title: { id: 'terms_of_service.title', defaultMessage: 'Terms of Service' }, title: { id: 'terms_of_service.title', defaultMessage: 'Terms of Service' },

View File

@ -1,116 +0,0 @@
import PropTypes from 'prop-types';
import { PureComponent } from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import { Helmet } from '@unhead/react/helmet';
import { Link } from 'react-router-dom';
import { Button } from 'mastodon/components/button';
import Column from 'mastodon/components/column';
import { injectIntl } from '@/mastodon/components/intl';
import { GIF } from 'mastodon/components/gif';
class CopyButton extends PureComponent {
static propTypes = {
children: PropTypes.node.isRequired,
value: PropTypes.string.isRequired,
};
state = {
copied: false,
};
handleClick = () => {
const { value } = this.props;
navigator.clipboard.writeText(value);
this.setState({ copied: true });
this.timeout = setTimeout(() => this.setState({ copied: false }), 700);
};
componentWillUnmount () {
if (this.timeout) clearTimeout(this.timeout);
}
render () {
const { children } = this.props;
const { copied } = this.state;
return (
<Button onClick={this.handleClick} className={copied ? 'copied' : 'copyable'}>{copied ? <FormattedMessage id='copypaste.copied' defaultMessage='Copied' /> : children}</Button>
);
}
}
class BundleColumnError extends PureComponent {
static propTypes = {
errorType: PropTypes.oneOf(['routing', 'network', 'error']),
onRetry: PropTypes.func,
intl: PropTypes.object.isRequired,
multiColumn: PropTypes.bool,
stacktrace: PropTypes.string,
};
static defaultProps = {
errorType: 'routing',
};
handleRetry = () => {
const { onRetry } = this.props;
if (onRetry) {
onRetry();
}
};
render () {
const { errorType, multiColumn, stacktrace } = this.props;
let title, body;
switch(errorType) {
case 'routing':
title = <FormattedMessage id='bundle_column_error.routing.title' defaultMessage='404' />;
body = <FormattedMessage id='bundle_column_error.routing.body' defaultMessage='The requested page could not be found. Are you sure the URL in the address bar is correct?' />;
break;
case 'network':
title = <FormattedMessage id='bundle_column_error.network.title' defaultMessage='Network error' />;
body = <FormattedMessage id='bundle_column_error.network.body' defaultMessage='There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.' />;
break;
case 'error':
title = <FormattedMessage id='bundle_column_error.error.title' defaultMessage='Oh, no!' />;
body = <FormattedMessage id='bundle_column_error.error.body' defaultMessage='The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.' />;
break;
}
return (
<Column bindToDocument={!multiColumn}>
<div className='error-column'>
<GIF src='/oops.gif' staticSrc='/oops.png' className='error-column__image' />
<div className='error-column__message'>
<h1>{title}</h1>
<p>{body}</p>
<div className='error-column__message__actions'>
{errorType === 'network' && <Button onClick={this.handleRetry}><FormattedMessage id='bundle_column_error.retry' defaultMessage='Try again' /></Button>}
{errorType === 'error' && <CopyButton value={stacktrace}><FormattedMessage id='bundle_column_error.copy_stacktrace' defaultMessage='Copy error report' /></CopyButton>}
<Link to='/' className={classNames('button', { 'button-secondary': errorType !== 'routing' })}><FormattedMessage id='bundle_column_error.return' defaultMessage='Go back home' /></Link>
</div>
</div>
</div>
<Helmet>
<meta name='robots' content='noindex' />
</Helmet>
</Column>
);
}
}
export default injectIntl(BundleColumnError);

View File

@ -0,0 +1,122 @@
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import { Link } from 'react-router-dom';
import { Helmet } from '@unhead/react/helmet';
import { CopyButton } from '@/mastodon/components/copy_button';
import { EmptyState } from '@/mastodon/components/empty_state';
import { Button } from 'mastodon/components/button';
import { Column } from 'mastodon/components/column';
import classes from './styles.module.scss';
interface BundleColumnErrorProps {
errorType?: 'routing' | 'network' | 'error';
onRetry?: () => void;
multiColumn?: boolean;
stacktrace?: string;
}
export const BundleColumnError: React.FC<BundleColumnErrorProps> = ({
errorType = 'routing',
onRetry,
multiColumn,
stacktrace,
}) => {
let title, body;
switch (errorType) {
case 'routing':
title = (
<FormattedMessage
id='bundle_column_error.routing.title'
defaultMessage='404'
/>
);
body = (
<FormattedMessage
id='bundle_column_error.routing.body'
defaultMessage='The requested page could not be found. Are you sure the URL in the address bar is correct?'
/>
);
break;
case 'network':
title = (
<FormattedMessage
id='bundle_column_error.network.title'
defaultMessage='Network error'
/>
);
body = (
<FormattedMessage
id='bundle_column_error.network.body'
defaultMessage='There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.'
/>
);
break;
case 'error':
title = (
<FormattedMessage
id='bundle_column_error.error.title'
defaultMessage='Oh, no!'
/>
);
body = (
<FormattedMessage
id='bundle_column_error.error.body'
defaultMessage='The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.'
/>
);
break;
}
return (
<Column bindToDocument={!multiColumn}>
<EmptyState
image='error'
title={title}
message={body}
className={classes.error}
>
<div className={classes.actions}>
{errorType === 'network' && onRetry && (
<Button onClick={onRetry}>
<FormattedMessage
id='bundle_column_error.retry'
defaultMessage='Try again'
/>
</Button>
)}
{errorType === 'error' && stacktrace && (
<CopyButton value={stacktrace}>
<FormattedMessage
id='bundle_column_error.copy_stacktrace'
defaultMessage='Copy error report'
/>
</CopyButton>
)}
<Link
to='/'
className={classNames('button', {
'button-secondary': errorType !== 'routing',
})}
>
<FormattedMessage
id='bundle_column_error.return'
defaultMessage='Go back home'
/>
</Link>
</div>
</EmptyState>
<Helmet>
<meta name='robots' content='noindex' />
</Helmet>
</Column>
);
};
// eslint-disable-next-line import/no-default-export
export default BundleColumnError;

View File

@ -0,0 +1,12 @@
.error {
flex-grow: 1;
border: 1px solid var(--color-border-primary);
border-radius: 4px;
}
.actions {
display: flex;
flex-wrap: wrap;
gap: 8px 12px;
justify-content: center;
}

View File

@ -33,7 +33,7 @@ import {
import { useColumnsContext } from '../util/columns_context'; import { useColumnsContext } from '../util/columns_context';
import Bundle from './bundle'; import Bundle from './bundle';
import BundleColumnError from './bundle_column_error'; import { BundleColumnError } from './bundle_column_error';
import { ColumnLoading } from './column_loading'; import { ColumnLoading } from './column_loading';
import { ComposePanel, RedirectToMobileComposeIfNeeded } from './compose_panel'; import { ComposePanel, RedirectToMobileComposeIfNeeded } from './compose_panel';
import DrawerLoading from './drawer_loading'; import DrawerLoading from './drawer_loading';

View File

@ -29,6 +29,7 @@ export const LinkFooter: React.FC<{
id='footer.about_this_server' id='footer.about_this_server'
defaultMessage='About' defaultMessage='About'
/> />
<span className='sr-only'> {domain}</span>
</Link> </Link>
</li> </li>
{statusPageUrl && ( {statusPageUrl && (
@ -82,6 +83,7 @@ export const LinkFooter: React.FC<{
<li> <li>
<a href='https://joinmastodon.org' target='_blank' rel='noopener'> <a href='https://joinmastodon.org' target='_blank' rel='noopener'>
<FormattedMessage id='footer.about' defaultMessage='About' /> <FormattedMessage id='footer.about' defaultMessage='About' />
<span className='sr-only'> Mastodon</span>
</a> </a>
</li> </li>
<li> <li>

View File

@ -86,18 +86,22 @@
"account.locked_info": "تم ضبط حالة خصوصية هذا الحساب على أنه مؤمّن. إذ يراجع صاحبه يدويًا من يُسمح له بالمتابعة.", "account.locked_info": "تم ضبط حالة خصوصية هذا الحساب على أنه مؤمّن. إذ يراجع صاحبه يدويًا من يُسمح له بالمتابعة.",
"account.media": "وسائط", "account.media": "وسائط",
"account.mention": "أذكُر @{name}", "account.mention": "أذكُر @{name}",
"account.menu.add_to_collection": "إضافة إلى المجموعة…",
"account.menu.add_to_list": "إضافة إلى القائمة…", "account.menu.add_to_list": "إضافة إلى القائمة…",
"account.menu.block": "حظر الحساب", "account.menu.block": "حظر الحساب",
"account.menu.block_domain": "حظر {domain}", "account.menu.block_domain": "حظر {domain}",
"account.menu.copied": "تم نسخ رابط الحساب إلى الحافظة", "account.menu.copied": "تم نسخ رابط الحساب إلى الحافظة",
"account.menu.copy": "نسخ الرابط", "account.menu.copy": "نسخ الرابط",
"account.menu.direct": "إشارة خاصة لـ", "account.menu.direct": "إشارة خاصة لـ",
"account.menu.hide_reblogs": "إخفاء التعزيزات في الجدول الزمني",
"account.menu.mention": "إشارة", "account.menu.mention": "إشارة",
"account.menu.mute": "كتم الحساب", "account.menu.mute": "كتم الحساب",
"account.menu.note.description": "مرئي لك فقط", "account.menu.note.description": "مرئي لك فقط",
"account.menu.open_original_page": "عرض على {domain}",
"account.menu.remove_follower": "إزالة المتابِع", "account.menu.remove_follower": "إزالة المتابِع",
"account.menu.report": "الإبلاغ عن الحساب", "account.menu.report": "الإبلاغ عن الحساب",
"account.menu.share": "مشاركة…", "account.menu.share": "مشاركة…",
"account.menu.show_reblogs": "عرض التعزيزات في الجدول الزمني",
"account.menu.unblock": "رفع الحظر عن الحساب", "account.menu.unblock": "رفع الحظر عن الحساب",
"account.menu.unblock_domain": "رفع الحظر عن {domain}", "account.menu.unblock_domain": "رفع الحظر عن {domain}",
"account.menu.unmute": "إلغاء كتم الحساب", "account.menu.unmute": "إلغاء كتم الحساب",
@ -108,8 +112,15 @@
"account.muted": "مَكتوم", "account.muted": "مَكتوم",
"account.mutual": "أنتم تتابعون بعضكم البعض", "account.mutual": "أنتم تتابعون بعضكم البعض",
"account.name.copy": "نسخ المعرف", "account.name.copy": "نسخ المعرف",
"account.name.help.domain": "{domain} هو الخادوم الذي يستضيف ملف المستخدم الشخصي ومنشوراته.",
"account.name.help.domain_self": "{domain} هو الخادوم الذي يستضيف ملفك الشخصي ومنشوراتك.",
"account.name.help.footer": "تمامًا كما يمكنك إرسال رسائل بريد إلكتروني إلى أشخاص يستخدمون مزوّدي بريد إلكتروني مختلفين، يمكنك التفاعل مع أشخاص على خواديم ماستودون أخرى، ومع أي شخص على تطبيقات فيديفيرس الأخرى.",
"account.name.help.header": "اللقب يشبه عنوان البريد الإلكتروني",
"account.name.help.username": "{username} هو اسم المستخدم الخاص بهذا الحساب على خادومهم. قد يكون لدى شخص آخر على خادم آخر نفس اسم المستخدم.",
"account.name.help.username_self": "{username} هو اسم المستخدم الخاص بك على هذا الخادوم. قد يكون لدى شخص آخر على خادوم آخر نفس اسم المستخدم.",
"account.name_info": "ما معنى ذلك؟", "account.name_info": "ما معنى ذلك؟",
"account.no_bio": "لم يتم تقديم وصف.", "account.no_bio": "لم يتم تقديم وصف.",
"account.node_modal.callout": "الملاحظات الشخصية لا يراها سواك.",
"account.node_modal.edit_title": "تعديل الملاحظة الشخصية", "account.node_modal.edit_title": "تعديل الملاحظة الشخصية",
"account.node_modal.error_unknown": "تعذر حفظ الملاحظة", "account.node_modal.error_unknown": "تعذر حفظ الملاحظة",
"account.node_modal.field_label": "ملاحظة شخصية", "account.node_modal.field_label": "ملاحظة شخصية",
@ -118,6 +129,7 @@
"account.note.edit_button": "تعديل", "account.note.edit_button": "تعديل",
"account.note.title": "ملاحظة شخصية (مرئية لك فقط)", "account.note.title": "ملاحظة شخصية (مرئية لك فقط)",
"account.open_original_page": "افتح الصفحة الأصلية", "account.open_original_page": "افتح الصفحة الأصلية",
"account.pending": "معلّق",
"account.posts": "منشورات", "account.posts": "منشورات",
"account.remove_from_followers": "إزالة {name} من المتابعين", "account.remove_from_followers": "إزالة {name} من المتابعين",
"account.report": "الإبلاغ عن @{name}", "account.report": "الإبلاغ عن @{name}",
@ -136,10 +148,12 @@
"account.unmute": "إلغاء الكَتم عن @{name}", "account.unmute": "إلغاء الكَتم عن @{name}",
"account.unmute_notifications_short": "إلغاء كَتم الإشعارات", "account.unmute_notifications_short": "إلغاء كَتم الإشعارات",
"account.unmute_short": "إلغاء الكتم", "account.unmute_short": "إلغاء الكتم",
"account_edit.advanced_settings.bot_hint": "أعلِم الآخرين بأن الحساب يجري إجراءات آلية بشكلٍ أساسي وقد لا تتم مراقبته",
"account_edit.advanced_settings.bot_label": "حساب آلي", "account_edit.advanced_settings.bot_label": "حساب آلي",
"account_edit.advanced_settings.title": "الإعدادات المتقدمة", "account_edit.advanced_settings.title": "الإعدادات المتقدمة",
"account_edit.bio.add_label": "إضافة سيرة ذاتية", "account_edit.bio.add_label": "إضافة سيرة ذاتية",
"account_edit.bio.edit_label": "تعديل السيرة الذاتية", "account_edit.bio.edit_label": "تعديل السيرة الذاتية",
"account_edit.bio.placeholder": "أضف مقدّمة قصيرة لمساعدة الآخرين على التعرف عليك.",
"account_edit.bio.title": "نبذة عنك", "account_edit.bio.title": "نبذة عنك",
"account_edit.bio_modal.add_title": "إضافة سيرة ذاتية", "account_edit.bio_modal.add_title": "إضافة سيرة ذاتية",
"account_edit.bio_modal.edit_title": "تعديل السيرة الذاتية", "account_edit.bio_modal.edit_title": "تعديل السيرة الذاتية",
@ -149,30 +163,50 @@
"account_edit.custom_fields.edit_label": "تعديل الحقل", "account_edit.custom_fields.edit_label": "تعديل الحقل",
"account_edit.custom_fields.placeholder": "أضف ضمائر أو روابط خارجية أو أي شيء آخر ترغب في مشاركته.", "account_edit.custom_fields.placeholder": "أضف ضمائر أو روابط خارجية أو أي شيء آخر ترغب في مشاركته.",
"account_edit.custom_fields.reorder_button": "إعادة ترتيب الحقول", "account_edit.custom_fields.reorder_button": "إعادة ترتيب الحقول",
"account_edit.custom_fields.tip_content": "يمكنك بسهولة إضافة مصداقية إلى حسابك على منصة ماستودون عن طريق التحقق من الروابط المؤدّية إلى أي مواقع ويب تملكها.",
"account_edit.custom_fields.tip_title": "نصيحة: إضافة روابط متحقق منها", "account_edit.custom_fields.tip_title": "نصيحة: إضافة روابط متحقق منها",
"account_edit.custom_fields.title": "الحقول المخصصة", "account_edit.custom_fields.title": "الحقول المخصصة",
"account_edit.custom_fields.verified_hint": "كيف يمكنني إضافة رابط متحقق منه؟", "account_edit.custom_fields.verified_hint": "كيف يمكنني إضافة رابط متحقق منه؟",
"account_edit.display_name.add_label": "إضافة اسم علني", "account_edit.display_name.add_label": "إضافة اسم علني",
"account_edit.display_name.edit_label": "تعديل الاسم العلني", "account_edit.display_name.edit_label": "تعديل الاسم العلني",
"account_edit.display_name.placeholder": "اسم العرض الخاص بك هو كيف يظهر اسمك في ملفك الشخصي وفي الجداول الزمنية.",
"account_edit.display_name.title": "الاسم العلني", "account_edit.display_name.title": "الاسم العلني",
"account_edit.featured_hashtags.edit_label": "إضافة وسوم", "account_edit.featured_hashtags.edit_label": "إضافة وسوم",
"account_edit.featured_hashtags.placeholder": "ساعد الآخرين في تحديد مواضيعك المفضلة والوصول إليها بسرعة.",
"account_edit.featured_hashtags.title": "الوسوم المروّجة", "account_edit.featured_hashtags.title": "الوسوم المروّجة",
"account_edit.field_actions.delete": "حذف الحقل", "account_edit.field_actions.delete": "حذف الحقل",
"account_edit.field_actions.edit": "تعديل الحقل", "account_edit.field_actions.edit": "تعديل الحقل",
"account_edit.field_delete_modal.confirm": "هل أنت متأكد من رغبتك في حذف هذا الحقل المخصص؟ لا يمكن التراجع عن هذا الإجراء.",
"account_edit.field_delete_modal.delete_button": "حذف", "account_edit.field_delete_modal.delete_button": "حذف",
"account_edit.field_delete_modal.title": "أتريد حذف الحقل المخصص؟", "account_edit.field_delete_modal.title": "أتريد حذف الحقل المخصص؟",
"account_edit.field_edit_modal.add_title": "إضافة حقل مخصص", "account_edit.field_edit_modal.add_title": "إضافة حقل مخصص",
"account_edit.field_edit_modal.discard_confirm": "تجاهل", "account_edit.field_edit_modal.discard_confirm": "تجاهل",
"account_edit.field_edit_modal.discard_message": "لديك تغييرات غير محفوظة. هل أنت متأكد من رغبتك في حذفها؟",
"account_edit.field_edit_modal.edit_title": "تعديل الحقل المخصص", "account_edit.field_edit_modal.edit_title": "تعديل الحقل المخصص",
"account_edit.field_edit_modal.length_warning": "تم تجاوز الحد الأقصى الموصّى به لعدد الأحرف. قد لا يرى مستخدمو الهواتف الجوّالة حقل النص بالكامل.",
"account_edit.field_edit_modal.link_emoji_warning": "لا ننصح باستخدام الرموز التعبيرية المخصصة مع عناوين المواقع الإلكترونية. ستظهر الحقول المخصصة التي تحتوي على كليهما كنص فقط بدلًا من رابط، وذلك لتجنب إرباك المستخدم.",
"account_edit.field_edit_modal.name_hint": "على سبيل المثال \"الموقع الشخصي\"", "account_edit.field_edit_modal.name_hint": "على سبيل المثال \"الموقع الشخصي\"",
"account_edit.field_edit_modal.name_label": "التسمية", "account_edit.field_edit_modal.name_label": "التسمية",
"account_edit.field_edit_modal.url_warning": "لإضافة رابط ، يرجى تضمين {protocol} في البداية.", "account_edit.field_edit_modal.url_warning": "لإضافة رابط ، يرجى تضمين {protocol} في البداية.",
"account_edit.field_edit_modal.value_hint": "على سبيل المثال \"https://example.me\"", "account_edit.field_edit_modal.value_hint": "على سبيل المثال \"https://example.me\"",
"account_edit.field_edit_modal.value_label": "قيمة", "account_edit.field_edit_modal.value_label": "قيمة",
"account_edit.field_reorder_modal.drag_cancel": "تم إلغاء عملية السحب. تم حذف الحقل ”{item}“.",
"account_edit.field_reorder_modal.drag_end": "تم حذف الحقل ”{item}“.",
"account_edit.field_reorder_modal.drag_instructions": "لإعادة ترتيب الحقول المخصصة، اضغط على مفتاح المسافة أو مفتاح الإدخال. أثناء السحب، استخدم مفاتيح الأسهم لتحريك الحقل لأعلى أو لأسفل. اضغط على مفتاح المسافة أو مفتاح الإدخال مرة أخرى لإسقاط الحقل في موضعه الجديد، أو اضغط على زر Escape للإلغاء.",
"account_edit.field_reorder_modal.drag_move": "تم نقل الحقل ”{item}“.",
"account_edit.field_reorder_modal.drag_over": "تم نقل الحقل ”{item}“ إلى ”{over}“.",
"account_edit.field_reorder_modal.drag_start": "تم اختيار الحقل ”{item}“.",
"account_edit.field_reorder_modal.handle_label": "سحب الحقل ”{item}“",
"account_edit.field_reorder_modal.title": "إعادة ترتيب الحقول",
"account_edit.image_alt_modal.add_title": "إضافة نص بديل", "account_edit.image_alt_modal.add_title": "إضافة نص بديل",
"account_edit.image_alt_modal.details_content": "افعل: <ul> <li>صِف نفسك كما في الصورة</li> <li>استخدِم ضمير الغائب (مثلًا ”ألِكس“ بدلًا من ”أنا“)</li> <li>كُن موجزًا بضع كلمات تكفي غالبًا</li> </ul> لا تفعل: <ul> <li>ابدأ بـ”صورة لـ“ فهذا غير ضروري لقارئات الشاشة</li> </ul> مثال: <ul> <li>”ألِكس يرتدي قميصًا أخضر ونظّارة“</li> </ul>",
"account_edit.image_alt_modal.details_title": "نصائح: نص بديل لصور الملف الشخصي",
"account_edit.image_alt_modal.edit_title": "تعديل نص بديل", "account_edit.image_alt_modal.edit_title": "تعديل نص بديل",
"account_edit.image_alt_modal.text_hint": "يساعد النص البديل مستخدمي قارئات الشاشة على فهم المحتوى الخاص بك.",
"account_edit.image_alt_modal.text_label": "نص بديل", "account_edit.image_alt_modal.text_label": "نص بديل",
"account_edit.image_delete_modal.confirm": "هل أنت متأكد من رغبتك في حذف هذه الصورة؟ لا يمكن التراجع عن هذا الإجراء.",
"account_edit.image_delete_modal.delete_button": "حذف", "account_edit.image_delete_modal.delete_button": "حذف",
"account_edit.image_delete_modal.title": "حذف الصورة؟",
"account_edit.image_edit.add_button": "إضافة صورة", "account_edit.image_edit.add_button": "إضافة صورة",
"account_edit.image_edit.alt_add_button": "إضافة نص بديل", "account_edit.image_edit.alt_add_button": "إضافة نص بديل",
"account_edit.image_edit.alt_edit_button": "تعديل نص بديل", "account_edit.image_edit.alt_edit_button": "تعديل نص بديل",
@ -180,7 +214,21 @@
"account_edit.image_edit.replace_button": "استبدال الصورة", "account_edit.image_edit.replace_button": "استبدال الصورة",
"account_edit.item_list.delete": "حذف {name}", "account_edit.item_list.delete": "حذف {name}",
"account_edit.item_list.edit": "تعديل {name}", "account_edit.item_list.edit": "تعديل {name}",
"account_edit.name_modal.add_title": "إضافة اسم عرض",
"account_edit.name_modal.edit_title": "تعديل اسم العرض",
"account_edit.profile_tab.button_label": "تخصيص", "account_edit.profile_tab.button_label": "تخصيص",
"account_edit.profile_tab.hint.description": "تُخصّص هذه الإعدادات ما يراه المستخدمون على {server} في التطبيقات الرسمية، ولكنها قد لا تنطبق على المستخدمين على الخواديم الأخرى وتطبيقات الطرف الثالث.",
"account_edit.profile_tab.hint.title": "لا تزال العروض تختلف",
"account_edit.profile_tab.show_featured.description": "’المميّز‘ هو تبويب اختياري يمكنك من خلاله عرض حسابات أخرى.",
"account_edit.profile_tab.show_featured.title": "عرض علامة تبويب ’المميّز‘",
"account_edit.profile_tab.show_media.description": "’الوسائط‘ هي علامة تبويب اختيارية تعرض منشوراتك التي تحتوي على صور أو مقاطع فيديو.",
"account_edit.profile_tab.show_media.title": "إظهار علامة تبويب ’الوسائط‘",
"account_edit.profile_tab.show_media_replies.description": "عند تفعيلها، تعرض علامة تبويب الوسائط منشوراتك وردودك على منشورات الآخرين.",
"account_edit.profile_tab.show_media_replies.title": "تضمين الردود في علامة تبويب ’الوسائط‘",
"account_edit.profile_tab.show_relations.description": "يعرض هذا القسم الحسابات التي تتابعها والمتابعين للمستخدمين الآخرين في ملفك الشخصي. وسيظل بإمكان الآخرين معرفة ما إذا كنت تتابعهم أم لا.",
"account_edit.profile_tab.show_relations.title": "عرض ’يتابعوه‘ و’يتابع‘",
"account_edit.profile_tab.subtitle": "خصّص طريقة عرض ملفك الشخصي.",
"account_edit.profile_tab.title": "إعدادات عرض الملف الشخصي",
"account_edit.save": "حفظ", "account_edit.save": "حفظ",
"account_edit.upload_modal.back": "العودة", "account_edit.upload_modal.back": "العودة",
"account_edit.upload_modal.done": "تمّ", "account_edit.upload_modal.done": "تمّ",
@ -189,12 +237,27 @@
"account_edit.upload_modal.step_upload.button": "تصفح الملفات", "account_edit.upload_modal.step_upload.button": "تصفح الملفات",
"account_edit.upload_modal.step_upload.dragging": "إسقاط للتحميل", "account_edit.upload_modal.step_upload.dragging": "إسقاط للتحميل",
"account_edit.upload_modal.step_upload.header": "اختيار صورة", "account_edit.upload_modal.step_upload.header": "اختيار صورة",
"account_edit.upload_modal.step_upload.hint": "بصيغة WEBP أو PNG أو GIF أو JPG، حتى {limit} ميجابايت.{br} سيتم تغيير حجم الصورة إلى {width}×{height} بكسل.",
"account_edit.upload_modal.title_add.avatar": "إضافة صورة الملف الشخصي", "account_edit.upload_modal.title_add.avatar": "إضافة صورة الملف الشخصي",
"account_edit.upload_modal.title_add.header": "إضافة صورة الغلاف", "account_edit.upload_modal.title_add.header": "إضافة صورة الغلاف",
"account_edit.upload_modal.title_replace.avatar": "استبدال صورة الملف الشخصي", "account_edit.upload_modal.title_replace.avatar": "استبدال صورة الملف الشخصي",
"account_edit.upload_modal.title_replace.header": "استبدال صورة الغلاف", "account_edit.upload_modal.title_replace.header": "استبدال صورة الغلاف",
"account_edit.verified_modal.details": "أضف مصداقية إلى ملفك الشخصي على ماستودون من خلال التحقق من الروابط المؤدية إلى مواقعك الإلكترونية الشخصية. إليك كيفية عمل ذلك:",
"account_edit.verified_modal.invisible_link.details": "أضف الرابط إلى ترويسة صفحتك. الجزء المهم هو rel=\"me\" الذي يمنع انتحال الهوية على المواقع الإلكترونية التي تحتوي على محتوى من إنشاء المستخدمين. يمكنك حتى استخدام وسم الرابط في ترويسة الصفحة بدلًا من {tag}.",
"account_edit.verified_modal.invisible_link.summary": "كيف يمكنني إخفاء الرابط؟",
"account_edit.verified_modal.step1.header": "انسخ كود HTML أدناه والصقه في ترويسة موقعك الإلكتروني",
"account_edit.verified_modal.step2.details": "إذا كنت قد أضفت موقعك الإلكتروني فعلًا كحقل مخصّص، فستحتاج إلى حذفه وإعادة إضافته لتفعيل عملية التحقق.",
"account_edit.verified_modal.step2.header": "أضف موقعك الإلكتروني كحقل مخصّص",
"account_edit.verified_modal.title": "كيفية إضافة رابط موثّق",
"account_edit_tags.add_tag": "إضافة #{tagName}", "account_edit_tags.add_tag": "إضافة #{tagName}",
"account_edit_tags.column_title": "تعديل الوسوم",
"account_edit_tags.help_text": "تساعد الهاشتاجات المميّزة المستخدمين على اكتشاف ملفك الشخصي والتفاعل معه. وتظهر هذه الهاشتاجات كمرشّحات في صفحة النشاطات الخاصة بملفك الشخصي.",
"account_edit_tags.max_tags_reached": "لقد وصلت إلى الحد الأقصى لعدد الهاشتاجات المميّزة.",
"account_edit_tags.search_placeholder": "أدخِل هاشتاج…",
"account_edit_tags.suggestions": "الاقتراحات:", "account_edit_tags.suggestions": "الاقتراحات:",
"account_edit_tags.tag_status_count": "{count, plural, one {# منشور} two {# منشورَين} few {# منشورات} many {# منشور} other {# منشور}}",
"account_list.hidden_notice": "هذا المحتوى مرئي لك فقط. لعرض هذه القائمة للآخرين، انتقِل إلى <link>{page} > {modal} > {field}</link>.",
"account_list.total": "{total, plural, one {# حساب} two {# حسابَين} few {# حسابات} many {# حساب} other {# حساب}}",
"admin.dashboard.daily_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالأيام", "admin.dashboard.daily_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالأيام",
"admin.dashboard.monthly_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالشهور", "admin.dashboard.monthly_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالشهور",
"admin.dashboard.retention.average": "المعدل", "admin.dashboard.retention.average": "المعدل",
@ -217,27 +280,63 @@
"alt_text_modal.describe_for_people_with_visual_impairments": "قم بوصفها للأشخاص ذوي الإعاقة البصرية…", "alt_text_modal.describe_for_people_with_visual_impairments": "قم بوصفها للأشخاص ذوي الإعاقة البصرية…",
"alt_text_modal.done": "تمّ", "alt_text_modal.done": "تمّ",
"announcement.announcement": "إعلان", "announcement.announcement": "إعلان",
"annual_report.announcement.action_build": "بناء الملخّص الخاص بي",
"annual_report.announcement.action_dismiss": "لا شكراً", "annual_report.announcement.action_dismiss": "لا شكراً",
"annual_report.announcement.action_view": "الاطّلاع على الملخّص الخاص بي",
"annual_report.announcement.description": "اكتشف المزيد حول تفاعلك على منصة ماستودون خلال العام الماضي.",
"annual_report.announcement.title": "الملخّص لعام {year} قد وصل",
"annual_report.nav_item.badge": "جديد", "annual_report.nav_item.badge": "جديد",
"annual_report.shared_page.donate": "تبرع", "annual_report.shared_page.donate": "تبرع",
"annual_report.shared_page.footer": "صُنع بـ{heart} من قِبل فريق ماستودون",
"annual_report.shared_page.footer_server_info": "{username} يستخدم {domain}، وهو واحد من العديد من المجتمعات التي تعمل بواسطة ماستودون.",
"annual_report.summary.archetype.booster.desc_public": "واصَل {name} في البحث عن منشورات لتعزيزها، ممّا ساهم في تضخيم منشورات المبدعين الآخرين بدقّة متناهية.",
"annual_report.summary.archetype.booster.desc_self": "لقد واصلت البحث عن منشورات لتعزيزها، ممّا ساهم في تضخيم أعمال المبدعين الآخرين بدقّة متناهية.",
"annual_report.summary.archetype.booster.name": "النشّاب",
"annual_report.summary.archetype.die_drei_fragezeichen": "؟؟؟",
"annual_report.summary.archetype.lurker.desc_public": "نحن نعلم أنّ {name} كان هناك، في مكانٍ ما، يستمتع بماستودون بطريقته الهادئة الخاصة.",
"annual_report.summary.archetype.lurker.desc_self": "نحن نعلم أنّك كنت هناك، في مكان ما، تستمتع بماستودون بطريقتك الهادئة الخاصة.",
"annual_report.summary.archetype.lurker.name": "الرواقي",
"annual_report.summary.archetype.oracle.desc_public": "أنشأ {name} منشورات جديدة أكثر من الردود، ممّا حافَظ على تحديث ماستودون وتطلُّع المنصّة للمستقبَل.",
"annual_report.summary.archetype.oracle.desc_self": "لقد أنشأت منشورات جديدة أكثر من الردود، ممّا حافَظ على تحديث ماستودون وتطلُّع المنصّة للمستقبَل.",
"annual_report.summary.archetype.oracle.name": "الحكيم", "annual_report.summary.archetype.oracle.name": "الحكيم",
"annual_report.summary.archetype.pollster.desc_public": "أنشأ {name} استطلاعات رأي أكثر من أنواع المنشورات الأخرى، ممّا أثار الفضول على منصّة ماستودون.",
"annual_report.summary.archetype.pollster.desc_self": "لقد أنشأت استطلاعات رأي أكثر من أنواع المنشورات الأخرى، ممّا أثار الفضول على منصّة ماستودون.",
"annual_report.summary.archetype.pollster.name": "المتأمّل",
"annual_report.summary.archetype.replier.desc_public": "كان {name} يردّ باستمرار على منشورات الآخرين، ممّا يساهم في إثراء منصّة ماستودون بمناقشات جديدة.",
"annual_report.summary.archetype.replier.desc_self": "كنت تردّ باستمرار على منشورات الآخرين، ممّا ساهم إلى إثراء منصّة ماستودون بمناقشات جديدة.",
"annual_report.summary.archetype.replier.name": "الفراشة", "annual_report.summary.archetype.replier.name": "الفراشة",
"annual_report.summary.archetype.reveal": "الكشف عن نمطي",
"annual_report.summary.archetype.reveal_description": "شكرًا لكونك جزءً من ماستودون! حان الوقت لمعرفة أي نمط جسّدته في {year}.",
"annual_report.summary.archetype.title_public": "نمط {name}",
"annual_report.summary.archetype.title_self": "نمطك",
"annual_report.summary.close": "اغلق", "annual_report.summary.close": "اغلق",
"annual_report.summary.copy_link": "نسخ الرابط", "annual_report.summary.copy_link": "نسخ الرابط",
"annual_report.summary.followers.new_followers": "{count, plural, one {متابع جديد} two {متابعَين جديدَين} few {متابعين جديدين} many {متابع جديد} other {متابع جديد}}",
"annual_report.summary.highlighted_post.boost_count": "عُزِّز هذا المنشور {count, plural, one {مرة واحدة} two {مرتَين} few {# مرات} many {# مرة} other {# مرة}}.",
"annual_report.summary.highlighted_post.favourite_count": "أُضيف هذا المنشور إلى المفضّلة {count, plural, one {مرة واحدة} two {مرتَين} few {# مرات} many {# مرة} other {# مرة}}.",
"annual_report.summary.highlighted_post.reply_count": "تلقّى هذا المنشور {count, plural, one {ردًّا واحدًا} two {ردَّين} few {# ردود} many {# ردًّا} other {# ردّ}}.",
"annual_report.summary.highlighted_post.title": "المنشور الأكثر شعبية",
"annual_report.summary.most_used_app.most_used_app": "التطبيق الأكثر استخداماً", "annual_report.summary.most_used_app.most_used_app": "التطبيق الأكثر استخداماً",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "الهاشتاق الأكثر استخداماً", "annual_report.summary.most_used_hashtag.most_used_hashtag": "الهاشتاق الأكثر استخداماً",
"annual_report.summary.most_used_hashtag.used_count": "لقد أدرجت هذا الهاشتاج في {count, plural, one {منشور واحد} two {منشورَين} few {# منشورات} many {# منشورًا} other {# منشور}}.",
"annual_report.summary.most_used_hashtag.used_count_public": "{name} أدرج هذا الهاشتاج في {count, plural, one {منشور واحد} two {منشورَين} few {# منشورات} many {# منشورًا} other {# منشور}}.",
"annual_report.summary.new_posts.new_posts": "المنشورات الجديدة", "annual_report.summary.new_posts.new_posts": "المنشورات الجديدة",
"annual_report.summary.percentile.text": "<topLabel>هذا يجعلك من بين أكثر </topLabel><percentage></percentage><bottomLabel>مستخدمي {domain} نشاطاً </bottomLabel>", "annual_report.summary.percentile.text": "<topLabel>هذا يجعلك من بين أكثر </topLabel><percentage></percentage><bottomLabel>مستخدمي {domain} نشاطاً </bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "سيبقى هذا الأمر بيننا.", "annual_report.summary.percentile.we_wont_tell_bernie": "سيبقى هذا الأمر بيننا.",
"annual_report.summary.share_elsewhere": "شاركها في مكان آخر", "annual_report.summary.share_elsewhere": "شاركها في مكان آخر",
"annual_report.summary.share_message": "حصلتُ على نمط {archetype}!",
"annual_report.summary.share_on_mastodon": "شاركها على ماستدون", "annual_report.summary.share_on_mastodon": "شاركها على ماستدون",
"attachments_list.unprocessed": "(غير معالَج)", "attachments_list.unprocessed": "(غير معالَج)",
"audio.hide": "إخفاء المقطع الصوتي", "audio.hide": "إخفاء المقطع الصوتي",
"block_modal.no_collections": "لا يمكن لأيٍّ منكما إضافة الآخر إلى المجموعات. سيتمّ حذفكما تلقائيًّا من مجموعات بعضكما البعض الحالية، إن وُجدت.",
"block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.", "block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.",
"block_modal.show_less": "تفاصيل أقلّ", "block_modal.show_less": "تفاصيل أقلّ",
"block_modal.show_more": "تفاصيل أكثر", "block_modal.show_more": "تفاصيل أكثر",
"block_modal.they_cant_mention": "لا يجوز لكم ذكر بعضكم البعض، أو متابعته، أو الاقتباس منه.",
"block_modal.they_cant_see_posts": "لا يمكنهم رؤية محتواك ولن ترى محتواه.",
"block_modal.they_will_know": "سيعلم أنه قد حُظِر.", "block_modal.they_will_know": "سيعلم أنه قد حُظِر.",
"block_modal.title": "أتريد حظر هذا المستخدم؟", "block_modal.title": "أتريد حظر هذا المستخدم؟",
"block_modal.you_wont_see_mentions": "لن ترى منشورات من الآخرين تذكرهم.",
"boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة",
"boost_modal.reblog": "أتريد إعادة نشر المنشور؟", "boost_modal.reblog": "أتريد إعادة نشر المنشور؟",
"boost_modal.undo_reblog": "أتريد إلغاء إعادة نشر المنشور؟", "boost_modal.undo_reblog": "أتريد إلغاء إعادة نشر المنشور؟",
@ -254,6 +353,10 @@
"bundle_modal_error.message": "حدث خطأ أثناء تحميل هذه الشاشة.", "bundle_modal_error.message": "حدث خطأ أثناء تحميل هذه الشاشة.",
"bundle_modal_error.retry": "إعادة المُحاولة", "bundle_modal_error.retry": "إعادة المُحاولة",
"callout.dismiss": "تجاهل", "callout.dismiss": "تجاهل",
"carousel.current": "<sr>الشريحة</sr> {current, number}/{max, number}",
"carousel.slide": "الشريحة {current, number} من {max, number}",
"character_counter.recommended": "{currentLength}/{maxLength} حرفًا موصّى بها",
"character_counter.required": "{currentLength}/{maxLength} حرف",
"closed_registrations.other_server_instructions": "بما أن ماستدون لامركزي، يمكنك إنشاء حساب على خادم آخر للاستمرار في التفاعل مع هذا الخادم.", "closed_registrations.other_server_instructions": "بما أن ماستدون لامركزي، يمكنك إنشاء حساب على خادم آخر للاستمرار في التفاعل مع هذا الخادم.",
"closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.", "closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.",
"closed_registrations_modal.find_another_server": "ابحث على خادم آخر", "closed_registrations_modal.find_another_server": "ابحث على خادم آخر",
@ -261,6 +364,16 @@
"closed_registrations_modal.title": "إنشاء حساب على ماستدون", "closed_registrations_modal.title": "إنشاء حساب على ماستدون",
"collection.share_modal.share_link_label": "مشاركة الرابط", "collection.share_modal.share_link_label": "مشاركة الرابط",
"collection.share_modal.share_via_post": "نشر على ماستدون", "collection.share_modal.share_via_post": "نشر على ماستدون",
"collection.share_modal.share_via_system": "المشاركة مع…",
"collection.share_modal.title": "مشاركة المجموعة",
"collection.share_modal.title_new": "شارِك مجموعتك الجديدة!",
"collection.share_template_other": "ألقِ نظرة على هذه المجموعة الرائعة:",
"collection.share_template_own": "ألقِ نظرة على مجموعتي الجديدة:",
"collections.account_count": "{count, plural, zero {لا حسابات} one {حساب واحد} two {حسابَين} few {# حسابات} many {# حساب} other {# حساب}}",
"collections.accounts.empty_description": "أضف ما يصل إلى {count} من الحسابات",
"collections.accounts.empty_editor_title": "لا يوجد أحد في هذه المجموعة حتى الآن",
"collections.accounts.empty_title": "هذه المجموعة فارغة",
"collections.add_to_collection": "إضافة {name} إلى المجموعات",
"collections.block_collection_owner": "حظر الحساب", "collections.block_collection_owner": "حظر الحساب",
"collections.by_account": "مِن {account_handle}", "collections.by_account": "مِن {account_handle}",
"collections.collection_description": "الوصف", "collections.collection_description": "الوصف",
@ -268,17 +381,41 @@
"collections.collection_language_none": "لا شيء", "collections.collection_language_none": "لا شيء",
"collections.collection_name": "الاسم", "collections.collection_name": "الاسم",
"collections.collection_topic": "الموضوع", "collections.collection_topic": "الموضوع",
"collections.confirm_account_removal": "هل أنت متأكّد من رغبتك في إزالة هذا الحساب من هذه المجموعة؟",
"collections.content_warning": "تحذير عن المحتوى", "collections.content_warning": "تحذير عن المحتوى",
"collections.continue": "مواصلة", "collections.continue": "مواصلة",
"collections.copy_link": "نسخ الرابط", "collections.copy_link": "نسخ الرابط",
"collections.copy_link_confirmation": "نسخ الرابط إلى الحافظة", "collections.copy_link_confirmation": "نسخ الرابط إلى الحافظة",
"collections.create.accounts_title": "من ستضمّ في هذه المجموعة؟",
"collections.create.basic_details_title": "المعلومات الأساسية", "collections.create.basic_details_title": "المعلومات الأساسية",
"collections.create.steps": "الخطوة {step}/{total}", "collections.create.steps": "الخطوة {step}/{total}",
"collections.create_collection": "إنشاء مجموعة",
"collections.delete_collection": "حذف المجموعة",
"collections.description_length_hint": "الحد الأقصى هو ١٠٠ حرف",
"collections.detail.author_added_you_on_date": "أضافك {author} في {date}",
"collections.detail.loading": "جارٍ تحميل المجموعة…",
"collections.detail.revoke_inclusion": "أزلني", "collections.detail.revoke_inclusion": "أزلني",
"collections.detail.sensitive_content": "محتوى حساس", "collections.detail.sensitive_content": "محتوى حساس",
"collections.detail.sensitive_note": "قد لا يكون الوصف والحسابات مناسبة لجميع المشاهدين.",
"collections.detail.share": "مشاركة هذه المجموعة",
"collections.detail.you_are_in_this_collection": "أنت مضموم في هذه المجموعة",
"collections.edit_details": "تعديل التفاصيل", "collections.edit_details": "تعديل التفاصيل",
"collections.error_loading_collections": "حدث خطأ أثناء محاولة تحميل هذه المجموعات.",
"collections.hidden_accounts_description": "لقد حظرت {count, plural, one {هذا المستخدم} two {هذَين المستخدمَين} other {هؤلاء المستخدمين}} أو كتمه",
"collections.hidden_accounts_link": "{count, plural, one {حساب واحد مخفي} two {حسابَين مخفيَّين} few {# حسابات مخفية} many {# حساب مخفي} other {# حساب مخفي}}",
"collections.hints.accounts_counter": "{count}/{max} حسابات", "collections.hints.accounts_counter": "{count}/{max} حسابات",
"collections.last_updated_at": "آخر تحديث: {date}",
"collections.list.collections_with_count": "{count, plural, zero {لا مجموعات} one {مجموعة واحدة} two {مجموعتَين} few {# مجموعات} many {# مجموعة} other {# مجموعة}}",
"collections.list.created_by_author": "أنشأهُ {name}",
"collections.list.created_by_you": "من إنشائك",
"collections.list.featuring_you": "تضمّك",
"collections.manage_accounts": "إدارة الحسابات", "collections.manage_accounts": "إدارة الحسابات",
"collections.mark_as_sensitive": "التصنيف كحسّاس",
"collections.mark_as_sensitive_hint": "يُخفي هذا الخيار وصف المجموعة وحساباتها خلف تحذير بشأن المحتوى. سيظل اسم المجموعة ظاهرًا.",
"collections.maximum_collection_count_description": "يسمح خادومك بإنشاء ما يصل إلى {count} مجموعة.",
"collections.maximum_collection_count_reached": "لقد أنشأت الحد الأقصى لعدد المجموعات",
"collections.name_length_hint": "الحد الأقصى هو ٤٠ حرفًا",
"collections.new_collection": "مجموعة جديدة",
"collections.remove_account": "إزالة", "collections.remove_account": "إزالة",
"collections.sensitive": "حساس", "collections.sensitive": "حساس",
"collections.share_short": "مشاركة", "collections.share_short": "مشاركة",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Скапіяваць спасылку ў буфер абмену", "copy_icon_button.copy_this_text": "Скапіяваць спасылку ў буфер абмену",
"copypaste.copied": "Скапіравана", "copypaste.copied": "Скапіравана",
"copypaste.copy_to_clipboard": "Скапіяваць у буфер абмену", "copypaste.copy_to_clipboard": "Скапіяваць у буфер абмену",
"custom_homepage.about": "Падрабязна",
"custom_homepage.about_this_server": "Аб гэтым серверы",
"custom_homepage.administered_by": "Адміністратар",
"custom_homepage.contact": "Кантакты:",
"custom_homepage.latest_activity": "Апошняя актыўнасць",
"custom_homepage.these_are_the_latest_posts": "Гэта апошнія 40 допісаў з уліковых запісаў гэтага сервера.",
"directory.federated": "З вядомага федэральнага сусвету", "directory.federated": "З вядомага федэральнага сусвету",
"directory.local": "Толькі з {domain}", "directory.local": "Толькі з {domain}",
"directory.new_arrivals": "Новыя карыстальнікі", "directory.new_arrivals": "Новыя карыстальнікі",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "Жывая стужка (лакальная)", "navigation_bar.live_feed_local": "Жывая стужка (лакальная)",
"navigation_bar.live_feed_public": "Жывая стужка (публічная)", "navigation_bar.live_feed_public": "Жывая стужка (публічная)",
"navigation_bar.logout": "Выйсці", "navigation_bar.logout": "Выйсці",
"navigation_bar.main": "Галоўная",
"navigation_bar.moderation": "Мадэрацыя", "navigation_bar.moderation": "Мадэрацыя",
"navigation_bar.more": "Больш", "navigation_bar.more": "Больш",
"navigation_bar.mutes": "Ігнараваныя карыстальнікі", "navigation_bar.mutes": "Ігнараваныя карыстальнікі",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "Меню", "tabs_bar.menu": "Меню",
"tabs_bar.notifications": "Апавяшчэнні", "tabs_bar.notifications": "Апавяшчэнні",
"tabs_bar.publish": "Новы допіс", "tabs_bar.publish": "Новы допіс",
"tabs_bar.quick_links": "Хуткія спасылкі",
"tabs_bar.search": "Пошук", "tabs_bar.search": "Пошук",
"tag.remove": "Выдаліць", "tag.remove": "Выдаліць",
"terms_of_service.effective_as_of": "Дзейнічае да {date}", "terms_of_service.effective_as_of": "Дзейнічае да {date}",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Kopiér link til udklipsholderen", "copy_icon_button.copy_this_text": "Kopiér link til udklipsholderen",
"copypaste.copied": "Kopieret", "copypaste.copied": "Kopieret",
"copypaste.copy_to_clipboard": "Kopiér til udklipsholder", "copypaste.copy_to_clipboard": "Kopiér til udklipsholder",
"custom_homepage.about": "Om",
"custom_homepage.about_this_server": "Om denne server",
"custom_homepage.administered_by": "Administreret af",
"custom_homepage.contact": "Kontakt:",
"custom_homepage.latest_activity": "Seneste aktivitet",
"custom_homepage.these_are_the_latest_posts": "Disse er de seneste 40 indlæg fra konti på denne server.",
"directory.federated": "Fra kendt fediverse", "directory.federated": "Fra kendt fediverse",
"directory.local": "Kun fra {domain}", "directory.local": "Kun fra {domain}",
"directory.new_arrivals": "Nyankomne", "directory.new_arrivals": "Nyankomne",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "Live feed (lokalt)", "navigation_bar.live_feed_local": "Live feed (lokalt)",
"navigation_bar.live_feed_public": "Live feed (offentligt)", "navigation_bar.live_feed_public": "Live feed (offentligt)",
"navigation_bar.logout": "Log af", "navigation_bar.logout": "Log af",
"navigation_bar.main": "Primær",
"navigation_bar.moderation": "Moderering", "navigation_bar.moderation": "Moderering",
"navigation_bar.more": "Mere", "navigation_bar.more": "Mere",
"navigation_bar.mutes": "Skjulte brugere", "navigation_bar.mutes": "Skjulte brugere",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Notifikationer", "tabs_bar.notifications": "Notifikationer",
"tabs_bar.publish": "Nyt indlæg", "tabs_bar.publish": "Nyt indlæg",
"tabs_bar.quick_links": "Hurtig-links",
"tabs_bar.search": "Søg", "tabs_bar.search": "Søg",
"tag.remove": "Fjern", "tag.remove": "Fjern",
"terms_of_service.effective_as_of": "Gældende pr. {date}", "terms_of_service.effective_as_of": "Gældende pr. {date}",

View File

@ -429,7 +429,7 @@
"collections.share_short": "Teilen", "collections.share_short": "Teilen",
"collections.sort_alphabetical": "Alphabetisch", "collections.sort_alphabetical": "Alphabetisch",
"collections.sort_by": "Sortieren nach:", "collections.sort_by": "Sortieren nach:",
"collections.sort_date_added": "Datum des Hinzufügens", "collections.sort_date_added": "Hinzugefügt",
"collections.sort_last_active": "Neueste Aktivität", "collections.sort_last_active": "Neueste Aktivität",
"collections.sort_most_followers": "Followerzahl", "collections.sort_most_followers": "Followerzahl",
"collections.suggestions.can_not_add": "Kann nicht hinzugefügt werden", "collections.suggestions.can_not_add": "Kann nicht hinzugefügt werden",
@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Link in die Zwischenablage kopieren", "copy_icon_button.copy_this_text": "Link in die Zwischenablage kopieren",
"copypaste.copied": "Kopiert", "copypaste.copied": "Kopiert",
"copypaste.copy_to_clipboard": "In die Zwischenablage kopieren", "copypaste.copy_to_clipboard": "In die Zwischenablage kopieren",
"custom_homepage.about": "Über",
"custom_homepage.about_this_server": "Über diesen Server",
"custom_homepage.administered_by": "Administriert von",
"custom_homepage.contact": "Kontakt:",
"custom_homepage.latest_activity": "Neueste Aktivität",
"custom_homepage.these_are_the_latest_posts": "Diese sind die 40 neuesten Beiträge von Konten dieses Servers.",
"directory.federated": "Aus bekanntem Fediverse", "directory.federated": "Aus bekanntem Fediverse",
"directory.local": "Nur von dieser Domain {domain}", "directory.local": "Nur von dieser Domain {domain}",
"directory.new_arrivals": "Neue Profile", "directory.new_arrivals": "Neue Profile",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "Live-Feed (Dieser Server)", "navigation_bar.live_feed_local": "Live-Feed (Dieser Server)",
"navigation_bar.live_feed_public": "Live-Feed (Alle Server)", "navigation_bar.live_feed_public": "Live-Feed (Alle Server)",
"navigation_bar.logout": "Abmelden", "navigation_bar.logout": "Abmelden",
"navigation_bar.main": "Hauptmenü",
"navigation_bar.moderation": "Moderation", "navigation_bar.moderation": "Moderation",
"navigation_bar.more": "Mehr", "navigation_bar.more": "Mehr",
"navigation_bar.mutes": "Stummgeschaltete Profile", "navigation_bar.mutes": "Stummgeschaltete Profile",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "Menü", "tabs_bar.menu": "Menü",
"tabs_bar.notifications": "Benachrichtigungen", "tabs_bar.notifications": "Benachrichtigungen",
"tabs_bar.publish": "Neuer Beitrag", "tabs_bar.publish": "Neuer Beitrag",
"tabs_bar.quick_links": "Schnellzugriff",
"tabs_bar.search": "Suche", "tabs_bar.search": "Suche",
"tag.remove": "Entfernen", "tag.remove": "Entfernen",
"terms_of_service.effective_as_of": "Gültig ab {date}", "terms_of_service.effective_as_of": "Gültig ab {date}",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Αντιγραφή συνδέσμου στο πρόχειρο", "copy_icon_button.copy_this_text": "Αντιγραφή συνδέσμου στο πρόχειρο",
"copypaste.copied": "Αντιγράφηκε", "copypaste.copied": "Αντιγράφηκε",
"copypaste.copy_to_clipboard": "Αντιγραφή στο πρόχειρο", "copypaste.copy_to_clipboard": "Αντιγραφή στο πρόχειρο",
"custom_homepage.about": "Σχετικά με",
"custom_homepage.about_this_server": "Σχετικά μ' αυτόν τον διακομιστή",
"custom_homepage.administered_by": "Διαχειρίζεται από",
"custom_homepage.contact": "Επικοινωνία:",
"custom_homepage.latest_activity": "Τελευταία δραστηριότητα",
"custom_homepage.these_are_the_latest_posts": "Αυτές είναι οι τελευταίες 40 αναρτήσεις από λογαριασμούς σε αυτόν τον διακομιστή.",
"directory.federated": "Από το γνωστό fediverse", "directory.federated": "Από το γνωστό fediverse",
"directory.local": "Μόνο από {domain}", "directory.local": "Μόνο από {domain}",
"directory.new_arrivals": "Νέες αφίξεις", "directory.new_arrivals": "Νέες αφίξεις",
@ -805,7 +811,7 @@
"keyboard_shortcuts.column": "Εστίαση στη στήλη", "keyboard_shortcuts.column": "Εστίαση στη στήλη",
"keyboard_shortcuts.compose": "Εστίαση στην περιοχή συγγραφής κειμένου", "keyboard_shortcuts.compose": "Εστίαση στην περιοχή συγγραφής κειμένου",
"keyboard_shortcuts.description": "Περιγραφή", "keyboard_shortcuts.description": "Περιγραφή",
"keyboard_shortcuts.direct": "Άνοιγμα της στήλης ιδιωτικών επισημάνσεων", "keyboard_shortcuts.direct": "Άνοιγμα στήλης ιδιωτικών επισημάνσεων",
"keyboard_shortcuts.down": "Μετακίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.down": "Μετακίνηση προς τα κάτω στη λίστα",
"keyboard_shortcuts.enter": "Άνοιγμα ανάρτησης", "keyboard_shortcuts.enter": "Άνοιγμα ανάρτησης",
"keyboard_shortcuts.explore": "Άνοιγμα χρονολογίου τάσεων", "keyboard_shortcuts.explore": "Άνοιγμα χρονολογίου τάσεων",
@ -829,9 +835,9 @@
"keyboard_shortcuts.reply": "Απάντηση στην ανάρτηση", "keyboard_shortcuts.reply": "Απάντηση στην ανάρτηση",
"keyboard_shortcuts.requests": "Άνοιγμα λίστας αιτημάτων ακολούθησης", "keyboard_shortcuts.requests": "Άνοιγμα λίστας αιτημάτων ακολούθησης",
"keyboard_shortcuts.search": "Εστίαση στη γραμμή αναζήτησης", "keyboard_shortcuts.search": "Εστίαση στη γραμμή αναζήτησης",
"keyboard_shortcuts.spoilers": "Εμφάνιση/απόκρυψη πεδίου CW", "keyboard_shortcuts.spoilers": "Εμφάνιση/απόκρυψη πεδίου προειδοποίησης περιεχομένου (CW)",
"keyboard_shortcuts.start": "Άνοιγμα της στήλης \"Ας ξεκινήσουμε\"", "keyboard_shortcuts.start": "Άνοιγμα της στήλης \"Ας ξεκινήσουμε\"",
"keyboard_shortcuts.toggle_hidden": "Εμφάνιση/απόκρυψη κειμένου πίσω από το CW", "keyboard_shortcuts.toggle_hidden": "Εμφάνιση/απόκρυψη κειμένου πίσω από προειδοποίηση περιεχομένου (CW)",
"keyboard_shortcuts.toggle_sensitivity": "Εμφάνιση/απόκρυψη πολυμέσων", "keyboard_shortcuts.toggle_sensitivity": "Εμφάνιση/απόκρυψη πολυμέσων",
"keyboard_shortcuts.toot": "Δημιουργία νέας ανάρτησης", "keyboard_shortcuts.toot": "Δημιουργία νέας ανάρτησης",
"keyboard_shortcuts.top": "Μετακίνηση στην κορυφή της λίστας", "keyboard_shortcuts.top": "Μετακίνηση στην κορυφή της λίστας",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "Ζωντανή ροή (τοπική)", "navigation_bar.live_feed_local": "Ζωντανή ροή (τοπική)",
"navigation_bar.live_feed_public": "Ζωντανή ροή (δημόσια)", "navigation_bar.live_feed_public": "Ζωντανή ροή (δημόσια)",
"navigation_bar.logout": "Αποσύνδεση", "navigation_bar.logout": "Αποσύνδεση",
"navigation_bar.main": "Κύρια",
"navigation_bar.moderation": "Συντονισμός", "navigation_bar.moderation": "Συντονισμός",
"navigation_bar.more": "Περισσότερα", "navigation_bar.more": "Περισσότερα",
"navigation_bar.mutes": "Αποσιωπημένοι χρήστες", "navigation_bar.mutes": "Αποσιωπημένοι χρήστες",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "Μενού", "tabs_bar.menu": "Μενού",
"tabs_bar.notifications": "Ειδοποιήσεις", "tabs_bar.notifications": "Ειδοποιήσεις",
"tabs_bar.publish": "Νέα Ανάρτηση", "tabs_bar.publish": "Νέα Ανάρτηση",
"tabs_bar.quick_links": "Γρήγοροι σύνδεσμοι",
"tabs_bar.search": "Αναζήτηση", "tabs_bar.search": "Αναζήτηση",
"tag.remove": "Αφαίρεση", "tag.remove": "Αφαίρεση",
"terms_of_service.effective_as_of": "Ενεργό από {date}", "terms_of_service.effective_as_of": "Ενεργό από {date}",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Copiar enlace al portapapeles", "copy_icon_button.copy_this_text": "Copiar enlace al portapapeles",
"copypaste.copied": "Copiado", "copypaste.copied": "Copiado",
"copypaste.copy_to_clipboard": "Copiar al portapapeles", "copypaste.copy_to_clipboard": "Copiar al portapapeles",
"custom_homepage.about": "Información",
"custom_homepage.about_this_server": "Acerca de este servidor",
"custom_homepage.administered_by": "Administrado por",
"custom_homepage.contact": "Contacto:",
"custom_homepage.latest_activity": "Última actividad",
"custom_homepage.these_are_the_latest_posts": "Estas son las últimas 40 publicaciones de cuentas de este servidor.",
"directory.federated": "Desde fediverso conocido", "directory.federated": "Desde fediverso conocido",
"directory.local": "Solo de {domain}", "directory.local": "Solo de {domain}",
"directory.new_arrivals": "Recién llegados", "directory.new_arrivals": "Recién llegados",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "Línea temporal (local)", "navigation_bar.live_feed_local": "Línea temporal (local)",
"navigation_bar.live_feed_public": "Línea temporal (federada)", "navigation_bar.live_feed_public": "Línea temporal (federada)",
"navigation_bar.logout": "Cerrar sesión", "navigation_bar.logout": "Cerrar sesión",
"navigation_bar.main": "Principal",
"navigation_bar.moderation": "Moderación", "navigation_bar.moderation": "Moderación",
"navigation_bar.more": "Más", "navigation_bar.more": "Más",
"navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.mutes": "Usuarios silenciados",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "Menú", "tabs_bar.menu": "Menú",
"tabs_bar.notifications": "Notificaciones", "tabs_bar.notifications": "Notificaciones",
"tabs_bar.publish": "Nuevo mensaje", "tabs_bar.publish": "Nuevo mensaje",
"tabs_bar.quick_links": "Enlaces rápidos",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tag.remove": "Quitar", "tag.remove": "Quitar",
"terms_of_service.effective_as_of": "Efectivo a partir de {date}", "terms_of_service.effective_as_of": "Efectivo a partir de {date}",

View File

@ -367,8 +367,8 @@
"collection.share_modal.share_via_system": "Compartir con…", "collection.share_modal.share_via_system": "Compartir con…",
"collection.share_modal.title": "Compartir la colección", "collection.share_modal.title": "Compartir la colección",
"collection.share_modal.title_new": "¡Comparte tu nueva colección!", "collection.share_modal.title_new": "¡Comparte tu nueva colección!",
"collection.share_template_other": "Mira esta colección tan chula:", "collection.share_template_other": "Echa un vistazo a esta genial colección:",
"collection.share_template_own": "Mira mi nueva colección:", "collection.share_template_own": "Echa un vistazo a mi nueva colección:",
"collections.account_count": "{count, plural,one {# cuenta} other {# cuentas}}", "collections.account_count": "{count, plural,one {# cuenta} other {# cuentas}}",
"collections.accounts.empty_description": "Añade hasta {count} cuentas", "collections.accounts.empty_description": "Añade hasta {count} cuentas",
"collections.accounts.empty_editor_title": "No hay nadie en esta colección todavía", "collections.accounts.empty_editor_title": "No hay nadie en esta colección todavía",
@ -908,6 +908,7 @@
"navigation_bar.live_feed_local": "Cronología local", "navigation_bar.live_feed_local": "Cronología local",
"navigation_bar.live_feed_public": "Cronología pública", "navigation_bar.live_feed_public": "Cronología pública",
"navigation_bar.logout": "Cerrar sesión", "navigation_bar.logout": "Cerrar sesión",
"navigation_bar.main": "Principal",
"navigation_bar.moderation": "Moderación", "navigation_bar.moderation": "Moderación",
"navigation_bar.more": "Más", "navigation_bar.more": "Más",
"navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.mutes": "Usuarios silenciados",
@ -1305,6 +1306,7 @@
"tabs_bar.menu": "Menú", "tabs_bar.menu": "Menú",
"tabs_bar.notifications": "Notificaciones", "tabs_bar.notifications": "Notificaciones",
"tabs_bar.publish": "Nueva publicación", "tabs_bar.publish": "Nueva publicación",
"tabs_bar.quick_links": "Enlaces rápidos",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tag.remove": "Eliminar", "tag.remove": "Eliminar",
"terms_of_service.effective_as_of": "En vigor a partir del {date}", "terms_of_service.effective_as_of": "En vigor a partir del {date}",

View File

@ -59,7 +59,7 @@
"account.follow_request_cancel_short": "Cancelar", "account.follow_request_cancel_short": "Cancelar",
"account.follow_request_short": "Solicitar", "account.follow_request_short": "Solicitar",
"account.followers": "Seguidores", "account.followers": "Seguidores",
"account.followers.empty": "Todavía nadie sigue a este usuario.", "account.followers.empty": "Nadie sigue a este usuario todavía.",
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}", "account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
"account.followers_you_know_counter": "{counter} que conoces", "account.followers_you_know_counter": "{counter} que conoces",
"account.following": "Siguiendo", "account.following": "Siguiendo",
@ -908,6 +908,7 @@
"navigation_bar.live_feed_local": "Cronología local", "navigation_bar.live_feed_local": "Cronología local",
"navigation_bar.live_feed_public": "Cronología pública", "navigation_bar.live_feed_public": "Cronología pública",
"navigation_bar.logout": "Cerrar sesión", "navigation_bar.logout": "Cerrar sesión",
"navigation_bar.main": "Principal",
"navigation_bar.moderation": "Moderación", "navigation_bar.moderation": "Moderación",
"navigation_bar.more": "Más", "navigation_bar.more": "Más",
"navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.mutes": "Usuarios silenciados",
@ -1305,6 +1306,7 @@
"tabs_bar.menu": "Menú", "tabs_bar.menu": "Menú",
"tabs_bar.notifications": "Notificaciones", "tabs_bar.notifications": "Notificaciones",
"tabs_bar.publish": "Nueva Publicación", "tabs_bar.publish": "Nueva Publicación",
"tabs_bar.quick_links": "Enlaces rápidos",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tag.remove": "Eliminar", "tag.remove": "Eliminar",
"terms_of_service.effective_as_of": "En vigor a partir del {date}", "terms_of_service.effective_as_of": "En vigor a partir del {date}",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Kopioi linkki leikepöydälle", "copy_icon_button.copy_this_text": "Kopioi linkki leikepöydälle",
"copypaste.copied": "Kopioitu", "copypaste.copied": "Kopioitu",
"copypaste.copy_to_clipboard": "Kopioi leikepöydälle", "copypaste.copy_to_clipboard": "Kopioi leikepöydälle",
"custom_homepage.about": "Tietoja",
"custom_homepage.about_this_server": "Tietoja tästä palvelimesta",
"custom_homepage.administered_by": "Ylläpitäjänä",
"custom_homepage.contact": "Yhteydenotto:",
"custom_homepage.latest_activity": "Viimeisin toiminta",
"custom_homepage.these_are_the_latest_posts": "Nämä ovat tämän palvelimen 40 viimeisintä julkaisua.",
"directory.federated": "Tunnetusta fediversumista", "directory.federated": "Tunnetusta fediversumista",
"directory.local": "Vain palvelimelta {domain}", "directory.local": "Vain palvelimelta {domain}",
"directory.new_arrivals": "Äskettäin saapuneet", "directory.new_arrivals": "Äskettäin saapuneet",
@ -1305,6 +1311,7 @@
"tabs_bar.menu": "Valikko", "tabs_bar.menu": "Valikko",
"tabs_bar.notifications": "Ilmoitukset", "tabs_bar.notifications": "Ilmoitukset",
"tabs_bar.publish": "Uusi julkaisu", "tabs_bar.publish": "Uusi julkaisu",
"tabs_bar.quick_links": "Pikalinkit",
"tabs_bar.search": "Haku", "tabs_bar.search": "Haku",
"tag.remove": "Poista", "tag.remove": "Poista",
"terms_of_service.effective_as_of": "Tulee voimaan {date}", "terms_of_service.effective_as_of": "Tulee voimaan {date}",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier", "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier",
"copypaste.copied": "Copié", "copypaste.copied": "Copié",
"copypaste.copy_to_clipboard": "Copier dans le presse-papiers", "copypaste.copy_to_clipboard": "Copier dans le presse-papiers",
"custom_homepage.about": "À propos",
"custom_homepage.about_this_server": "À propos de ce serveur",
"custom_homepage.administered_by": "Administré par",
"custom_homepage.contact": "Contact :",
"custom_homepage.latest_activity": "Dernière activité",
"custom_homepage.these_are_the_latest_posts": "Voici les 40 derniers messages des comptes de ce serveur.",
"directory.federated": "D'un fediverse connu", "directory.federated": "D'un fediverse connu",
"directory.local": "De {domain} seulement", "directory.local": "De {domain} seulement",
"directory.new_arrivals": "Inscrit·e·s récemment", "directory.new_arrivals": "Inscrit·e·s récemment",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "Flux en direct (local)", "navigation_bar.live_feed_local": "Flux en direct (local)",
"navigation_bar.live_feed_public": "Flux en direct (public)", "navigation_bar.live_feed_public": "Flux en direct (public)",
"navigation_bar.logout": "Se déconnecter", "navigation_bar.logout": "Se déconnecter",
"navigation_bar.main": "Accueil",
"navigation_bar.moderation": "Modération", "navigation_bar.moderation": "Modération",
"navigation_bar.more": "Plus", "navigation_bar.more": "Plus",
"navigation_bar.mutes": "Utilisateurs masqués", "navigation_bar.mutes": "Utilisateurs masqués",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.publish": "Nouveau message", "tabs_bar.publish": "Nouveau message",
"tabs_bar.quick_links": "Accès rapides",
"tabs_bar.search": "Chercher", "tabs_bar.search": "Chercher",
"tag.remove": "Supprimer", "tag.remove": "Supprimer",
"terms_of_service.effective_as_of": "En vigueur à compter du {date}", "terms_of_service.effective_as_of": "En vigueur à compter du {date}",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier", "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier",
"copypaste.copied": "Copié", "copypaste.copied": "Copié",
"copypaste.copy_to_clipboard": "Copier dans le presse-papiers", "copypaste.copy_to_clipboard": "Copier dans le presse-papiers",
"custom_homepage.about": "À propos",
"custom_homepage.about_this_server": "À propos de ce serveur",
"custom_homepage.administered_by": "Administré par",
"custom_homepage.contact": "Contact :",
"custom_homepage.latest_activity": "Dernière activité",
"custom_homepage.these_are_the_latest_posts": "Voici les 40 derniers messages des comptes de ce serveur.",
"directory.federated": "Du fédivers connu", "directory.federated": "Du fédivers connu",
"directory.local": "De {domain} seulement", "directory.local": "De {domain} seulement",
"directory.new_arrivals": "Inscrit·e·s récemment", "directory.new_arrivals": "Inscrit·e·s récemment",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "Flux en direct (local)", "navigation_bar.live_feed_local": "Flux en direct (local)",
"navigation_bar.live_feed_public": "Flux en direct (public)", "navigation_bar.live_feed_public": "Flux en direct (public)",
"navigation_bar.logout": "Déconnexion", "navigation_bar.logout": "Déconnexion",
"navigation_bar.main": "Accueil",
"navigation_bar.moderation": "Modération", "navigation_bar.moderation": "Modération",
"navigation_bar.more": "Plus", "navigation_bar.more": "Plus",
"navigation_bar.mutes": "Comptes masqués", "navigation_bar.mutes": "Comptes masqués",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.publish": "Nouveau message", "tabs_bar.publish": "Nouveau message",
"tabs_bar.quick_links": "Accès rapides",
"tabs_bar.search": "Chercher", "tabs_bar.search": "Chercher",
"tag.remove": "Supprimer", "tag.remove": "Supprimer",
"terms_of_service.effective_as_of": "En vigueur à compter du {date}", "terms_of_service.effective_as_of": "En vigueur à compter du {date}",

View File

@ -367,6 +367,8 @@
"collection.share_modal.share_via_system": "Comhroinn le…", "collection.share_modal.share_via_system": "Comhroinn le…",
"collection.share_modal.title": "Comhroinn bailiúchán", "collection.share_modal.title": "Comhroinn bailiúchán",
"collection.share_modal.title_new": "Roinn do bhailiúchán nua!", "collection.share_modal.title_new": "Roinn do bhailiúchán nua!",
"collection.share_template_other": "Féach ar an mbailiúchán fionnuar seo:",
"collection.share_template_own": "Féach ar mo bhailiúchán nua:",
"collections.account_count": "{count, plural, one {# cuntas} two {# cuntais} few {# cuntais} many {# cuntais} other {# cuntais}}", "collections.account_count": "{count, plural, one {# cuntas} two {# cuntais} few {# cuntais} many {# cuntais} other {# cuntais}}",
"collections.accounts.empty_description": "Cuir suas le {count} cuntas leis", "collections.accounts.empty_description": "Cuir suas le {count} cuntas leis",
"collections.accounts.empty_editor_title": "Níl aon duine sa bhailiúchán seo fós", "collections.accounts.empty_editor_title": "Níl aon duine sa bhailiúchán seo fós",
@ -906,6 +908,7 @@
"navigation_bar.live_feed_local": "Fotha beo (áitiúil)", "navigation_bar.live_feed_local": "Fotha beo (áitiúil)",
"navigation_bar.live_feed_public": "Fotha beo (poiblí)", "navigation_bar.live_feed_public": "Fotha beo (poiblí)",
"navigation_bar.logout": "Logáil Amach", "navigation_bar.logout": "Logáil Amach",
"navigation_bar.main": "Príomh",
"navigation_bar.moderation": "Measarthacht", "navigation_bar.moderation": "Measarthacht",
"navigation_bar.more": "Tuilleadh", "navigation_bar.more": "Tuilleadh",
"navigation_bar.mutes": "Úsáideoirí balbhaithe", "navigation_bar.mutes": "Úsáideoirí balbhaithe",
@ -1303,6 +1306,7 @@
"tabs_bar.menu": "Roghchlár", "tabs_bar.menu": "Roghchlár",
"tabs_bar.notifications": "Fógraí", "tabs_bar.notifications": "Fógraí",
"tabs_bar.publish": "Post Nua", "tabs_bar.publish": "Post Nua",
"tabs_bar.quick_links": "Naisc thapa",
"tabs_bar.search": "Cuardaigh", "tabs_bar.search": "Cuardaigh",
"tag.remove": "Bain", "tag.remove": "Bain",
"terms_of_service.effective_as_of": "I bhfeidhm ó {date}", "terms_of_service.effective_as_of": "I bhfeidhm ó {date}",

View File

@ -367,6 +367,8 @@
"collection.share_modal.share_via_system": "Compartir con…", "collection.share_modal.share_via_system": "Compartir con…",
"collection.share_modal.title": "Compartir colección", "collection.share_modal.title": "Compartir colección",
"collection.share_modal.title_new": "Comparte a túa nova colección!", "collection.share_modal.title_new": "Comparte a túa nova colección!",
"collection.share_template_other": "Mira que colección máis boa:",
"collection.share_template_own": "Mira a miña nova colección:",
"collections.account_count": "{count, plural, one {# conta} other {# contas}}", "collections.account_count": "{count, plural, one {# conta} other {# contas}}",
"collections.accounts.empty_description": "Engade ate {count} contas", "collections.accounts.empty_description": "Engade ate {count} contas",
"collections.accounts.empty_editor_title": "Aínda non hai ninguén nesta colección", "collections.accounts.empty_editor_title": "Aínda non hai ninguén nesta colección",
@ -582,6 +584,12 @@
"copy_icon_button.copy_this_text": "Copiar a ligazón ao portapapeis", "copy_icon_button.copy_this_text": "Copiar a ligazón ao portapapeis",
"copypaste.copied": "Copiado", "copypaste.copied": "Copiado",
"copypaste.copy_to_clipboard": "Copiar ao portapapeis", "copypaste.copy_to_clipboard": "Copiar ao portapapeis",
"custom_homepage.about": "Sobre",
"custom_homepage.about_this_server": "Sobre este servidor",
"custom_homepage.administered_by": "Xestionado por",
"custom_homepage.contact": "Contacto:",
"custom_homepage.latest_activity": "Actividade recente",
"custom_homepage.these_are_the_latest_posts": "Estas son as últimas 40 publicacións das contas deste servidor.",
"directory.federated": "Do fediverso coñecido", "directory.federated": "Do fediverso coñecido",
"directory.local": "Só de {domain}", "directory.local": "Só de {domain}",
"directory.new_arrivals": "Recén chegadas", "directory.new_arrivals": "Recén chegadas",
@ -906,6 +914,7 @@
"navigation_bar.live_feed_local": "En directo (local)", "navigation_bar.live_feed_local": "En directo (local)",
"navigation_bar.live_feed_public": "En directo (federada)", "navigation_bar.live_feed_public": "En directo (federada)",
"navigation_bar.logout": "Pechar sesión", "navigation_bar.logout": "Pechar sesión",
"navigation_bar.main": "Inicio",
"navigation_bar.moderation": "Moderación", "navigation_bar.moderation": "Moderación",
"navigation_bar.more": "Máis", "navigation_bar.more": "Máis",
"navigation_bar.mutes": "Usuarias silenciadas", "navigation_bar.mutes": "Usuarias silenciadas",
@ -1303,6 +1312,7 @@
"tabs_bar.menu": "Menú", "tabs_bar.menu": "Menú",
"tabs_bar.notifications": "Notificacións", "tabs_bar.notifications": "Notificacións",
"tabs_bar.publish": "Nova publicación", "tabs_bar.publish": "Nova publicación",
"tabs_bar.quick_links": "Acceso rápido",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tag.remove": "Retirar", "tag.remove": "Retirar",
"terms_of_service.effective_as_of": "Con efecto desde o {date}", "terms_of_service.effective_as_of": "Con efecto desde o {date}",

View File

@ -367,6 +367,8 @@
"collection.share_modal.share_via_system": "לשתף אל…", "collection.share_modal.share_via_system": "לשתף אל…",
"collection.share_modal.title": "שיתוף אוסף", "collection.share_modal.title": "שיתוף אוסף",
"collection.share_modal.title_new": "שתפו את האוסף החדש שלכם!", "collection.share_modal.title_new": "שתפו את האוסף החדש שלכם!",
"collection.share_template_other": "הציצו על האוסף המעניין הזה:",
"collection.share_template_own": "הציצו על האוסף החדש שלי:",
"collections.account_count": "{count, plural, one {חשבון אחד} other {# חשבונות}}", "collections.account_count": "{count, plural, one {חשבון אחד} other {# חשבונות}}",
"collections.accounts.empty_description": "להוסיף עד ל־{count} חשבונות", "collections.accounts.empty_description": "להוסיף עד ל־{count} חשבונות",
"collections.accounts.empty_editor_title": "אוסף זה ריק כרגע", "collections.accounts.empty_editor_title": "אוסף זה ריק כרגע",
@ -582,6 +584,12 @@
"copy_icon_button.copy_this_text": "העתקת הקישור", "copy_icon_button.copy_this_text": "העתקת הקישור",
"copypaste.copied": "הועתק", "copypaste.copied": "הועתק",
"copypaste.copy_to_clipboard": "העתקה ללוח הגזירים", "copypaste.copy_to_clipboard": "העתקה ללוח הגזירים",
"custom_homepage.about": "אודות",
"custom_homepage.about_this_server": "אודות שרת זה",
"custom_homepage.administered_by": "מנוהל ע\"י",
"custom_homepage.contact": "יצירת קשר:",
"custom_homepage.latest_activity": "הפעילות האחרונה",
"custom_homepage.these_are_the_latest_posts": "הנה 40 הפרסומים האחרונים מחשבונות שעל שרת זה.",
"directory.federated": "מהפדרציה הידועה", "directory.federated": "מהפדרציה הידועה",
"directory.local": "מ- {domain} בלבד", "directory.local": "מ- {domain} בלבד",
"directory.new_arrivals": "חדשים כאן", "directory.new_arrivals": "חדשים כאן",
@ -906,6 +914,7 @@
"navigation_bar.live_feed_local": "פיד ההודעות בזמן אמת (מקומי)", "navigation_bar.live_feed_local": "פיד ההודעות בזמן אמת (מקומי)",
"navigation_bar.live_feed_public": "פיד ההודעות בזמן אמת (פומבי)", "navigation_bar.live_feed_public": "פיד ההודעות בזמן אמת (פומבי)",
"navigation_bar.logout": "התנתקות", "navigation_bar.logout": "התנתקות",
"navigation_bar.main": "ראשי",
"navigation_bar.moderation": "הנחיית דיונים", "navigation_bar.moderation": "הנחיית דיונים",
"navigation_bar.more": "עוד", "navigation_bar.more": "עוד",
"navigation_bar.mutes": "משתמשים בהשתקה", "navigation_bar.mutes": "משתמשים בהשתקה",
@ -1303,6 +1312,7 @@
"tabs_bar.menu": "תפריט", "tabs_bar.menu": "תפריט",
"tabs_bar.notifications": "התראות", "tabs_bar.notifications": "התראות",
"tabs_bar.publish": "הודעה חדשה", "tabs_bar.publish": "הודעה חדשה",
"tabs_bar.quick_links": "קישורים מהירים",
"tabs_bar.search": "חיפוש", "tabs_bar.search": "חיפוש",
"tag.remove": "הסרה", "tag.remove": "הסרה",
"terms_of_service.effective_as_of": "בתוקף החל מתאריך {date}", "terms_of_service.effective_as_of": "בתוקף החל מתאריך {date}",

View File

@ -456,7 +456,7 @@
"column.domain_blocks": "Letiltott domainek", "column.domain_blocks": "Letiltott domainek",
"column.edit_list": "Lista módosítása", "column.edit_list": "Lista módosítása",
"column.favourites": "Kedvencek", "column.favourites": "Kedvencek",
"column.firehose": "Hírfolyamok", "column.firehose": "Élő hírfolyamok",
"column.firehose_local": "Élő hírfolyam a kiszolgálóhoz", "column.firehose_local": "Élő hírfolyam a kiszolgálóhoz",
"column.firehose_singular": "Élő hírfolyam", "column.firehose_singular": "Élő hírfolyam",
"column.follow_requests": "Követési kérések", "column.follow_requests": "Követési kérések",
@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Hivatkozás vágólapra másolása", "copy_icon_button.copy_this_text": "Hivatkozás vágólapra másolása",
"copypaste.copied": "Másolva", "copypaste.copied": "Másolva",
"copypaste.copy_to_clipboard": "Másolás vágólapra", "copypaste.copy_to_clipboard": "Másolás vágólapra",
"custom_homepage.about": "Névjegy",
"custom_homepage.about_this_server": "A kiszolgáló névjegye",
"custom_homepage.administered_by": "Adminisztrátor:",
"custom_homepage.contact": "Kapcsolat:",
"custom_homepage.latest_activity": "Legújabb tevékenység",
"custom_homepage.these_are_the_latest_posts": "Ez a legutóbbi 40 bejegyzés a kiszolgáló fiókjaitól.",
"directory.federated": "Az ismert födiverzumból", "directory.federated": "Az ismert födiverzumból",
"directory.local": "Csak {domain} tartományból", "directory.local": "Csak {domain} tartományból",
"directory.new_arrivals": "Új csatlakozók", "directory.new_arrivals": "Új csatlakozók",
@ -1305,6 +1311,7 @@
"tabs_bar.menu": "Menü", "tabs_bar.menu": "Menü",
"tabs_bar.notifications": "Értesítések", "tabs_bar.notifications": "Értesítések",
"tabs_bar.publish": "Új bejegyzés", "tabs_bar.publish": "Új bejegyzés",
"tabs_bar.quick_links": "Gyors hivatkozások",
"tabs_bar.search": "Keresés", "tabs_bar.search": "Keresés",
"tag.remove": "Eltávolítás", "tag.remove": "Eltávolítás",
"terms_of_service.effective_as_of": "Hatálybalépés dátuma: {date}", "terms_of_service.effective_as_of": "Hatálybalépés dátuma: {date}",

View File

@ -86,6 +86,7 @@
"account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.",
"account.media": "Myndefni", "account.media": "Myndefni",
"account.mention": "Minnast á @{name}", "account.mention": "Minnast á @{name}",
"account.menu.add_to_collection": "Bæta við í safn…",
"account.menu.add_to_list": "Bæta á lista…", "account.menu.add_to_list": "Bæta á lista…",
"account.menu.block": "Útiloka notandaaðgang", "account.menu.block": "Útiloka notandaaðgang",
"account.menu.block_domain": "Útiloka {domain}", "account.menu.block_domain": "Útiloka {domain}",
@ -366,10 +367,13 @@
"collection.share_modal.share_via_system": "Deila með…", "collection.share_modal.share_via_system": "Deila með…",
"collection.share_modal.title": "Deila safni", "collection.share_modal.title": "Deila safni",
"collection.share_modal.title_new": "Deildu nýja safninu þínu!", "collection.share_modal.title_new": "Deildu nýja safninu þínu!",
"collection.share_template_other": "Kíktu á þetta áhugaverða safn:",
"collection.share_template_own": "Kíktu á nýja safnið mitt:",
"collections.account_count": "{count, plural, one {# aðgangur} other {# aðgangar}}", "collections.account_count": "{count, plural, one {# aðgangur} other {# aðgangar}}",
"collections.accounts.empty_description": "Bættu við allt að {count} aðgöngum", "collections.accounts.empty_description": "Bættu við allt að {count} aðgöngum",
"collections.accounts.empty_editor_title": "Enginn er enn í þessu safni", "collections.accounts.empty_editor_title": "Enginn er enn í þessu safni",
"collections.accounts.empty_title": "Þetta safn er tómt", "collections.accounts.empty_title": "Þetta safn er tómt",
"collections.add_to_collection": "Bæta {name} við söfn",
"collections.block_collection_owner": "Útiloka notandaaðgang", "collections.block_collection_owner": "Útiloka notandaaðgang",
"collections.by_account": "frá {account_handle}", "collections.by_account": "frá {account_handle}",
"collections.collection_description": "Lýsing", "collections.collection_description": "Lýsing",
@ -392,6 +396,7 @@
"collections.detail.loading": "Hleð inn safni…", "collections.detail.loading": "Hleð inn safni…",
"collections.detail.revoke_inclusion": "Fjarlægja mig", "collections.detail.revoke_inclusion": "Fjarlægja mig",
"collections.detail.sensitive_content": "Viðkvæmt efni", "collections.detail.sensitive_content": "Viðkvæmt efni",
"collections.detail.sensitive_note": "Lýsing og aðgangar gætu ekki hentað hverjum sem er.",
"collections.detail.share": "Deila þessu safni", "collections.detail.share": "Deila þessu safni",
"collections.detail.you_are_in_this_collection": "Þú kemur fyrir í þessu safni", "collections.detail.you_are_in_this_collection": "Þú kemur fyrir í þessu safni",
"collections.edit_details": "Breyta ítarupplýsingum", "collections.edit_details": "Breyta ítarupplýsingum",
@ -422,6 +427,11 @@
"collections.search_accounts_max_reached": "Þú hefur þegar bætt við leyfilegum hámarksfjölda aðganga", "collections.search_accounts_max_reached": "Þú hefur þegar bætt við leyfilegum hámarksfjölda aðganga",
"collections.sensitive": "Viðkvæmt", "collections.sensitive": "Viðkvæmt",
"collections.share_short": "Deila", "collections.share_short": "Deila",
"collections.sort_alphabetical": "Stafrófsröð",
"collections.sort_by": "Raða eftir:",
"collections.sort_date_added": "Dagsetning skráningar",
"collections.sort_last_active": "Síðasta virkni",
"collections.sort_most_followers": "Flestir fylgjendur",
"collections.suggestions.can_not_add": "Er ekki hægt að bæta við", "collections.suggestions.can_not_add": "Er ekki hægt að bæta við",
"collections.suggestions.can_not_add_desc": "Þessir aðgangar gætu hafa skráð sig úr almennri birtingu eða gætu verið á netþjónum sem ekki styðja söfn.", "collections.suggestions.can_not_add_desc": "Þessir aðgangar gætu hafa skráð sig úr almennri birtingu eða gætu verið á netþjónum sem ekki styðja söfn.",
"collections.suggestions.must_follow": "Verður fyrst að fylgja", "collections.suggestions.must_follow": "Verður fyrst að fylgja",
@ -574,6 +584,12 @@
"copy_icon_button.copy_this_text": "Afrita tengil á klippispjald", "copy_icon_button.copy_this_text": "Afrita tengil á klippispjald",
"copypaste.copied": "Afritað", "copypaste.copied": "Afritað",
"copypaste.copy_to_clipboard": "Afrita á klippispjald", "copypaste.copy_to_clipboard": "Afrita á klippispjald",
"custom_homepage.about": "Um aðganginn",
"custom_homepage.about_this_server": "Um þennan netþjón",
"custom_homepage.administered_by": "Stýrt af",
"custom_homepage.contact": "Hafa samband:",
"custom_homepage.latest_activity": "Síðasta virkni",
"custom_homepage.these_are_the_latest_posts": "Þetta eru síðustu 40 færslur frá notendum á þessum netþjóni.",
"directory.federated": "Frá samtengdum vefþjónum", "directory.federated": "Frá samtengdum vefþjónum",
"directory.local": "Einungis frá {domain}", "directory.local": "Einungis frá {domain}",
"directory.new_arrivals": "Nýkomnir", "directory.new_arrivals": "Nýkomnir",
@ -633,6 +649,7 @@
"empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.", "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.",
"empty_column.bookmarked_statuses": "Þú ert ekki ennþá með neinar bókamerktar færslur. Þegar þú bókamerkir færslu, mun það birtast hér.", "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með neinar bókamerktar færslur. Þegar þú bókamerkir færslu, mun það birtast hér.",
"empty_column.collections.featured_in": "Þér hefur enn ekki verið bætt við nein söfn.", "empty_column.collections.featured_in": "Þér hefur enn ekki verið bætt við nein söfn.",
"empty_column.collections.featured_in_undiscoverable": "Til þess að fólk geti bætt þér í söfn þá þarftu að leyfa að þú komir upp í leitum, en það er gert í <link>Kjörstillingar > Gagnaleynd og útbreiðsla</link>",
"empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!", "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!",
"empty_column.direct": "Þú ert ekki ennþá með neitt einkaspjall við neinn. Þegar þú sendir eða tekur við slíku, mun það birtast hér.", "empty_column.direct": "Þú ert ekki ennþá með neitt einkaspjall við neinn. Þegar þú sendir eða tekur við slíku, mun það birtast hér.",
"empty_column.disabled_feed": "Þetta streymi hefur verið gert óvirkt af stjórnendum netþjónis þíns.", "empty_column.disabled_feed": "Þetta streymi hefur verið gert óvirkt af stjórnendum netþjónis þíns.",
@ -897,6 +914,7 @@
"navigation_bar.live_feed_local": "Bein streymi (á netþjóni)", "navigation_bar.live_feed_local": "Bein streymi (á netþjóni)",
"navigation_bar.live_feed_public": "Bein streymi (opinber)", "navigation_bar.live_feed_public": "Bein streymi (opinber)",
"navigation_bar.logout": "Útskráning", "navigation_bar.logout": "Útskráning",
"navigation_bar.main": "Aðalstýring",
"navigation_bar.moderation": "Umsjón", "navigation_bar.moderation": "Umsjón",
"navigation_bar.more": "Meira", "navigation_bar.more": "Meira",
"navigation_bar.mutes": "Þaggaðir notendur", "navigation_bar.mutes": "Þaggaðir notendur",
@ -1294,6 +1312,7 @@
"tabs_bar.menu": "Valmynd", "tabs_bar.menu": "Valmynd",
"tabs_bar.notifications": "Tilkynningar", "tabs_bar.notifications": "Tilkynningar",
"tabs_bar.publish": "Ný færsla", "tabs_bar.publish": "Ný færsla",
"tabs_bar.quick_links": "Flýtitenglar",
"tabs_bar.search": "Leita", "tabs_bar.search": "Leita",
"tag.remove": "Fjarlægja", "tag.remove": "Fjarlægja",
"terms_of_service.effective_as_of": "Gildir frá og með {date}", "terms_of_service.effective_as_of": "Gildir frá og með {date}",

View File

@ -367,6 +367,8 @@
"collection.share_modal.share_via_system": "Condividi con…", "collection.share_modal.share_via_system": "Condividi con…",
"collection.share_modal.title": "Condividi la collezione", "collection.share_modal.title": "Condividi la collezione",
"collection.share_modal.title_new": "Condividi la tua nuova collezione!", "collection.share_modal.title_new": "Condividi la tua nuova collezione!",
"collection.share_template_other": "Dai un'occhiata a questa fantastica collezione:",
"collection.share_template_own": "Dai un'occhiata alla mia nuova collezione:",
"collections.account_count": "{count, plural, one {# account} other {# account}}", "collections.account_count": "{count, plural, one {# account} other {# account}}",
"collections.accounts.empty_description": "Aggiungi fino a {count} account", "collections.accounts.empty_description": "Aggiungi fino a {count} account",
"collections.accounts.empty_editor_title": "Nessuno è ancora in questa collezione", "collections.accounts.empty_editor_title": "Nessuno è ancora in questa collezione",
@ -582,6 +584,12 @@
"copy_icon_button.copy_this_text": "Copia il link negli appunti", "copy_icon_button.copy_this_text": "Copia il link negli appunti",
"copypaste.copied": "Copiato", "copypaste.copied": "Copiato",
"copypaste.copy_to_clipboard": "Copia negli Appunti", "copypaste.copy_to_clipboard": "Copia negli Appunti",
"custom_homepage.about": "Info",
"custom_homepage.about_this_server": "Informazioni su questo server",
"custom_homepage.administered_by": "Amministrato da",
"custom_homepage.contact": "Contatto:",
"custom_homepage.latest_activity": "Attività più recente",
"custom_homepage.these_are_the_latest_posts": "Questi sono gli ultimi 40 post da account presenti su questo server.",
"directory.federated": "Da un fediverse noto", "directory.federated": "Da un fediverse noto",
"directory.local": "Solo da {domain}", "directory.local": "Solo da {domain}",
"directory.new_arrivals": "Nuovi arrivi", "directory.new_arrivals": "Nuovi arrivi",
@ -712,7 +720,7 @@
"follow_suggestions.hints.friends_of_friends": "Questo profilo è popolare tra le persone che segui.", "follow_suggestions.hints.friends_of_friends": "Questo profilo è popolare tra le persone che segui.",
"follow_suggestions.hints.most_followed": "Questo profilo è uno dei più seguiti su {domain}.", "follow_suggestions.hints.most_followed": "Questo profilo è uno dei più seguiti su {domain}.",
"follow_suggestions.hints.most_interactions": "Recentemente, questo profilo ha ricevuto molta attenzione su {domain}.", "follow_suggestions.hints.most_interactions": "Recentemente, questo profilo ha ricevuto molta attenzione su {domain}.",
"follow_suggestions.hints.similar_to_recently_followed": "Questo profilo è simile ai profili che hai seguito più recentemente.", "follow_suggestions.hints.similar_to_recently_followed": "Questo profilo è simile a quelli che hai iniziato a seguire più recentemente.",
"follow_suggestions.personalized_suggestion": "Suggerimento personalizzato", "follow_suggestions.personalized_suggestion": "Suggerimento personalizzato",
"follow_suggestions.popular_suggestion": "Suggerimento frequente", "follow_suggestions.popular_suggestion": "Suggerimento frequente",
"follow_suggestions.popular_suggestion_longer": "Popolare su {domain}", "follow_suggestions.popular_suggestion_longer": "Popolare su {domain}",
@ -906,6 +914,7 @@
"navigation_bar.live_feed_local": "Feed in diretta (locale)", "navigation_bar.live_feed_local": "Feed in diretta (locale)",
"navigation_bar.live_feed_public": "Feed in diretta (pubblico)", "navigation_bar.live_feed_public": "Feed in diretta (pubblico)",
"navigation_bar.logout": "Disconnettiti", "navigation_bar.logout": "Disconnettiti",
"navigation_bar.main": "Menù principale",
"navigation_bar.moderation": "Moderazione", "navigation_bar.moderation": "Moderazione",
"navigation_bar.more": "Altro", "navigation_bar.more": "Altro",
"navigation_bar.mutes": "Utenti silenziati", "navigation_bar.mutes": "Utenti silenziati",
@ -1303,6 +1312,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Notifiche", "tabs_bar.notifications": "Notifiche",
"tabs_bar.publish": "Nuovo post", "tabs_bar.publish": "Nuovo post",
"tabs_bar.quick_links": "Collegamenti rapidi",
"tabs_bar.search": "Cerca", "tabs_bar.search": "Cerca",
"tag.remove": "Rimuovi", "tag.remove": "Rimuovi",
"terms_of_service.effective_as_of": "In vigore a partire dal giorno {date}", "terms_of_service.effective_as_of": "In vigore a partire dal giorno {date}",

View File

@ -78,11 +78,13 @@
"account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.", "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.",
"account.media": "Timidyatin", "account.media": "Timidyatin",
"account.mention": "Bder-d @{name}", "account.mention": "Bder-d @{name}",
"account.menu.add_to_collection": "Rnu-t ɣer telkensit…",
"account.menu.add_to_list": "Rnu ɣer tebdart…", "account.menu.add_to_list": "Rnu ɣer tebdart…",
"account.menu.block": "Sewḥel amiḍan", "account.menu.block": "Sewḥel amiḍan",
"account.menu.block_domain": "Sewḥel {domain}", "account.menu.block_domain": "Sewḥel {domain}",
"account.menu.copied": "Aseɣwen n umiḍan yettwanɣel ɣer tecwafit", "account.menu.copied": "Aseɣwen n umiḍan yettwanɣel ɣer tecwafit",
"account.menu.copy": "Nɣel aseɣwen", "account.menu.copy": "Nɣel aseɣwen",
"account.menu.direct": "Abdar uslig",
"account.menu.mention": "Bder-d", "account.menu.mention": "Bder-d",
"account.menu.mute": "Sgugem amiḍan", "account.menu.mute": "Sgugem amiḍan",
"account.menu.note.description": "Ad tettbin i kečč·mm kan", "account.menu.note.description": "Ad tettbin i kečč·mm kan",
@ -91,6 +93,7 @@
"account.menu.report": "Cetki ɣef umiḍan-a", "account.menu.report": "Cetki ɣef umiḍan-a",
"account.menu.share": "Zuzer…", "account.menu.share": "Zuzer…",
"account.menu.unblock": "Kkes asewḥel i umiḍan", "account.menu.unblock": "Kkes asewḥel i umiḍan",
"account.menu.unblock_domain": "Serreḥ i {domain}",
"account.menu.unmute": "Kkes asgugem ɣef umiḍan", "account.menu.unmute": "Kkes asgugem ɣef umiḍan",
"account.moved_to": "{name} yenna-d dakken amiḍan-is amaynut yuɣal :", "account.moved_to": "{name} yenna-d dakken amiḍan-is amaynut yuɣal :",
"account.mute": "Sgugem @{name}", "account.mute": "Sgugem @{name}",

View File

@ -1,29 +1,56 @@
{ {
"about.blocks": "Модерирани сервери", "about.blocks": "Модерирани сервери",
"about.contact": "Контакт:", "about.contact": "Контакт:",
"about.default_locale": "Стандардно",
"about.disclaimer": "Mastodon е бесплатен, open-source софтвер, и заштитен знак на Mastodon gGmbH.", "about.disclaimer": "Mastodon е бесплатен, open-source софтвер, и заштитен знак на Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Причината не е достапна",
"about.domain_blocks.preamble": "Mastodon вообичаено ви дозволува да прегледувате содржини и комуницирате со корисниците од било кој сервер во федиверзумот. На овој сервер има исклучоци.", "about.domain_blocks.preamble": "Mastodon вообичаено ви дозволува да прегледувате содржини и комуницирате со корисниците од било кој сервер во федиверзумот. На овој сервер има исклучоци.",
"about.domain_blocks.silenced.explanation": "Вообичаено нема да гледате профили и содржина од овој сервер, освен ако не го пребарате намерно, или го заследите.", "about.domain_blocks.silenced.explanation": "Вообичаено нема да гледате профили и содржина од овој сервер, освен ако не го пребарате намерно, или го заследите.",
"about.domain_blocks.silenced.title": "Ограничено", "about.domain_blocks.silenced.title": "Ограничено",
"about.domain_blocks.suspended.explanation": "Податоците од овој сервер нема да бидат процесирани, зачувани или сменети и било која интеракција или комуникација со корисниците од овој сервер ќе биде невозможна.", "about.domain_blocks.suspended.explanation": "Податоците од овој сервер нема да бидат процесирани, зачувани или сменети и било која интеракција или комуникација со корисниците од овој сервер ќе биде невозможна.",
"about.domain_blocks.suspended.title": "Суспендиран", "about.domain_blocks.suspended.title": "Суспендиран",
"about.language_label": "Јазик",
"about.not_available": "Оваа информација не е достапна на овој сервер.", "about.not_available": "Оваа информација не е достапна на овој сервер.",
"about.powered_by": "Децентрализиран друштвен медиум овозможен од {mastodon}", "about.powered_by": "Децентрализиран друштвен медиум овозможен од {mastodon}",
"about.rules": "Правила на серверот", "about.rules": "Правила на серверот",
"account.account_note_header": "Лична забелешка",
"account.activity": "Активност",
"account.add_note": "Додај лична забелешка",
"account.add_or_remove_from_list": "Додади или одстрани од листа", "account.add_or_remove_from_list": "Додади или одстрани од листа",
"account.badges.admin": "Админ",
"account.badges.blocked": "Блокиран",
"account.badges.bot": "Бот", "account.badges.bot": "Бот",
"account.badges.domain_blocked": "Блокиран домен",
"account.badges.group": "Група", "account.badges.group": "Група",
"account.badges.muted": "Исклучен глас",
"account.badges.muted_until": "Исклучен глас до {until}",
"account.block": "Блокирај @{name}", "account.block": "Блокирај @{name}",
"account.block_domain": "Сокријај се од {domain}", "account.block_domain": "Сокријај се од {domain}",
"account.block_short": "Блокирај",
"account.blocked": "Блокиран", "account.blocked": "Блокиран",
"account.cancel_follow_request": "Withdraw follow request", "account.cancel_follow_request": "Withdraw follow request",
"account.copy": "Копирај линк до профилот",
"account.direct": "Тивко спомни @{name}",
"account.disable_notifications": "Престани да ме известуваш кога @{name} постира",
"account.edit_note": "Измени лична забелешка",
"account.edit_profile": "Измени профил", "account.edit_profile": "Измени профил",
"account.edit_profile_short": "Измени",
"account.enable_notifications": "Извести ме кога @{name} постира",
"account.endorse": "Карактеристики на профилот", "account.endorse": "Карактеристики на профилот",
"account.featured.accounts": "Профили",
"account.featured.collections": "Колекции",
"account.featured.new_collection": "Нова колекција",
"account.field_overflow": "Покажи цела содржина",
"account.filters.all": "Сета активност",
"account.follow": "Следи", "account.follow": "Следи",
"account.follow_back": "Заследи назад",
"account.follow_back_short": "Заследи назад",
"account.follow_request_cancel_short": "Откажи",
"account.followers": "Следбеници", "account.followers": "Следбеници",
"account.followers.empty": "Никој не го следи овој корисник сеуште.", "account.followers.empty": "Никој не го следи овој корисник сеуште.",
"account.follows.empty": "Корисникот не следи никој сеуште.", "account.follows.empty": "Корисникот не следи никој сеуште.",
"account.hide_reblogs": "Сокриј буст од @{name}", "account.hide_reblogs": "Сокриј буст од @{name}",
"account.join_modal.day": "Ден",
"account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}", "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}",
"account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.",
"account.media": "Медија", "account.media": "Медија",

View File

@ -86,6 +86,7 @@
"account.locked_info": "Tsit ê口座ê隱私狀態鎖起來ah。所有者ē手動審查thang kā跟tuè ê lâng。", "account.locked_info": "Tsit ê口座ê隱私狀態鎖起來ah。所有者ē手動審查thang kā跟tuè ê lâng。",
"account.media": "媒體", "account.media": "媒體",
"account.mention": "提起 @{name}", "account.mention": "提起 @{name}",
"account.menu.add_to_collection": "編輯收藏……",
"account.menu.add_to_list": "加入去列單……", "account.menu.add_to_list": "加入去列單……",
"account.menu.block": "封鎖口座", "account.menu.block": "封鎖口座",
"account.menu.block_domain": "封鎖 {domain}", "account.menu.block_domain": "封鎖 {domain}",
@ -366,10 +367,13 @@
"collection.share_modal.share_via_system": "分享kàu……", "collection.share_modal.share_via_system": "分享kàu……",
"collection.share_modal.title": "分享收藏", "collection.share_modal.title": "分享收藏",
"collection.share_modal.title_new": "分享lí ê新收藏!", "collection.share_modal.title_new": "分享lí ê新收藏!",
"collection.share_template_other": "緊看覓chit ê時行ê收藏:",
"collection.share_template_own": "緊看覓我ê收藏:",
"collections.account_count": "{count, plural, other {# ê口座}}", "collections.account_count": "{count, plural, other {# ê口座}}",
"collections.accounts.empty_description": "加上tsē {count} ê口座", "collections.accounts.empty_description": "加上tsē {count} ê口座",
"collections.accounts.empty_editor_title": "Tsit ê 收藏內底iáu無半ê lâng", "collections.accounts.empty_editor_title": "Tsit ê 收藏內底iáu無半ê lâng",
"collections.accounts.empty_title": "收藏內底無半項", "collections.accounts.empty_title": "收藏內底無半項",
"collections.add_to_collection": "Kā {name} 加入去收藏",
"collections.block_collection_owner": "封鎖口座", "collections.block_collection_owner": "封鎖口座",
"collections.by_account": "tuì {account_handle}", "collections.by_account": "tuì {account_handle}",
"collections.collection_description": "說明", "collections.collection_description": "說明",
@ -392,6 +396,7 @@
"collections.detail.loading": "載入收藏……", "collections.detail.loading": "載入收藏……",
"collections.detail.revoke_inclusion": "Kā我suá掉", "collections.detail.revoke_inclusion": "Kā我suá掉",
"collections.detail.sensitive_content": "敏感ê內容", "collections.detail.sensitive_content": "敏感ê內容",
"collections.detail.sensitive_note": "描述kap口座可能無適合逐ê檢視者。",
"collections.detail.share": "分享tsit ê收藏", "collections.detail.share": "分享tsit ê收藏",
"collections.detail.you_are_in_this_collection": "Lí已經hőng加kàu tsit ê收藏", "collections.detail.you_are_in_this_collection": "Lí已經hőng加kàu tsit ê收藏",
"collections.edit_details": "編輯詳細", "collections.edit_details": "編輯詳細",
@ -422,6 +427,11 @@
"collections.search_accounts_max_reached": "Lí已經加kàu口座數ê盡磅ah。", "collections.search_accounts_max_reached": "Lí已經加kàu口座數ê盡磅ah。",
"collections.sensitive": "敏感ê", "collections.sensitive": "敏感ê",
"collections.share_short": "分享", "collections.share_short": "分享",
"collections.sort_alphabetical": "照字母排",
"collections.sort_by": "排序方法:",
"collections.sort_date_added": "加添ê日期",
"collections.sort_last_active": "頂kái活動ê時間",
"collections.sort_most_followers": "上tsē跟tuè ê",
"collections.suggestions.can_not_add": "Bē當hőng加添", "collections.suggestions.can_not_add": "Bē當hőng加添",
"collections.suggestions.can_not_add_desc": "Tsiah ê口座可能選擇退出探索或者是in可能佇無支援收藏ê服侍器頂。", "collections.suggestions.can_not_add_desc": "Tsiah ê口座可能選擇退出探索或者是in可能佇無支援收藏ê服侍器頂。",
"collections.suggestions.must_follow": "Lí著sing跟tuè", "collections.suggestions.must_follow": "Lí著sing跟tuè",
@ -633,6 +643,7 @@
"empty_column.blocks": "Lí iáu無封鎖任何用者。", "empty_column.blocks": "Lí iáu無封鎖任何用者。",
"empty_column.bookmarked_statuses": "Lí iáu無加添任何冊籤。Nā是lí加添冊籤伊ē佇tsia顯示。", "empty_column.bookmarked_statuses": "Lí iáu無加添任何冊籤。Nā是lí加添冊籤伊ē佇tsia顯示。",
"empty_column.collections.featured_in": "Lí iáu buē加添kàu任何收藏。", "empty_column.collections.featured_in": "Lí iáu buē加添kàu任何收藏。",
"empty_column.collections.featured_in_undiscoverable": "若beh予lâng kā lí加入去收藏lí需要kàu<link>偏愛ê設定 > 隱私kap資訊ê及至</link>佇探索經驗允准推薦",
"empty_column.community": "本站時間線是空ê。緊來公開PO文oh", "empty_column.community": "本站時間線是空ê。緊來公開PO文oh",
"empty_column.direct": "Lí iáu無任何ê私人訊息。Nā是lí送á是收著私人訊息ē佇tsia顯示。.", "empty_column.direct": "Lí iáu無任何ê私人訊息。Nā是lí送á是收著私人訊息ē佇tsia顯示。.",
"empty_column.disabled_feed": "Tsit ê feed已經hōo lí ê服侍器ê管理員停用。", "empty_column.disabled_feed": "Tsit ê feed已經hōo lí ê服侍器ê管理員停用。",

View File

@ -367,6 +367,8 @@
"collection.share_modal.share_via_system": "Delen met…", "collection.share_modal.share_via_system": "Delen met…",
"collection.share_modal.title": "Verzameling delen", "collection.share_modal.title": "Verzameling delen",
"collection.share_modal.title_new": "Je nieuwe verzameling delen!", "collection.share_modal.title_new": "Je nieuwe verzameling delen!",
"collection.share_template_other": "Bekijk deze coole verzameling:",
"collection.share_template_own": "Bekijk mijn nieuwe verzameling:",
"collections.account_count": "{count, plural, one {# account} other {# accounts}}", "collections.account_count": "{count, plural, one {# account} other {# accounts}}",
"collections.accounts.empty_description": "Tot {count} accounts toevoegen", "collections.accounts.empty_description": "Tot {count} accounts toevoegen",
"collections.accounts.empty_editor_title": "Er is nog nog niemand in deze verzameling", "collections.accounts.empty_editor_title": "Er is nog nog niemand in deze verzameling",
@ -582,6 +584,12 @@
"copy_icon_button.copy_this_text": "Link naar klembord kopiëren", "copy_icon_button.copy_this_text": "Link naar klembord kopiëren",
"copypaste.copied": "Gekopieerd", "copypaste.copied": "Gekopieerd",
"copypaste.copy_to_clipboard": "Naar klembord kopiëren", "copypaste.copy_to_clipboard": "Naar klembord kopiëren",
"custom_homepage.about": "Over",
"custom_homepage.about_this_server": "Over deze server",
"custom_homepage.administered_by": "Beheerd door",
"custom_homepage.contact": "Contact:",
"custom_homepage.latest_activity": "Meest recente activiteit",
"custom_homepage.these_are_the_latest_posts": "Dit zijn de meest recente 40 berichten van accounts op deze server.",
"directory.federated": "Fediverse (wat bekend is)", "directory.federated": "Fediverse (wat bekend is)",
"directory.local": "Alleen {domain}", "directory.local": "Alleen {domain}",
"directory.new_arrivals": "Nieuwe accounts", "directory.new_arrivals": "Nieuwe accounts",
@ -906,6 +914,7 @@
"navigation_bar.live_feed_local": "Openbare tijdlijn (deze server)", "navigation_bar.live_feed_local": "Openbare tijdlijn (deze server)",
"navigation_bar.live_feed_public": "Openbare tijdlijn (alles)", "navigation_bar.live_feed_public": "Openbare tijdlijn (alles)",
"navigation_bar.logout": "Uitloggen", "navigation_bar.logout": "Uitloggen",
"navigation_bar.main": "Hoofdmenu",
"navigation_bar.moderation": "Moderatie", "navigation_bar.moderation": "Moderatie",
"navigation_bar.more": "Meer", "navigation_bar.more": "Meer",
"navigation_bar.mutes": "Genegeerde gebruikers", "navigation_bar.mutes": "Genegeerde gebruikers",
@ -1303,6 +1312,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Meldingen", "tabs_bar.notifications": "Meldingen",
"tabs_bar.publish": "Nieuw bericht", "tabs_bar.publish": "Nieuw bericht",
"tabs_bar.quick_links": "Snelkoppelingen",
"tabs_bar.search": "Zoeken", "tabs_bar.search": "Zoeken",
"tag.remove": "Verwijderen", "tag.remove": "Verwijderen",
"terms_of_service.effective_as_of": "Van kracht met ingang van {date}", "terms_of_service.effective_as_of": "Van kracht met ingang van {date}",

View File

@ -56,6 +56,7 @@
"account.follows_you": "ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਦੇ ਹਨ", "account.follows_you": "ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਦੇ ਹਨ",
"account.go_to_profile": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਜਾਓ", "account.go_to_profile": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਜਾਓ",
"account.hide_reblogs": "{name} ਵਲੋਂ ਬੂਸਟ ਨੂੰ ਲੁਕਾਓ", "account.hide_reblogs": "{name} ਵਲੋਂ ਬੂਸਟ ਨੂੰ ਲੁਕਾਓ",
"account.join_modal.day": "ਦਿਨ",
"account.joined_short": "ਜੁਆਇਨ ਕੀਤਾ", "account.joined_short": "ਜੁਆਇਨ ਕੀਤਾ",
"account.media": "ਮੀਡੀਆ", "account.media": "ਮੀਡੀਆ",
"account.mention": "@{name} ਦਾ ਜ਼ਿਕਰ", "account.mention": "@{name} ਦਾ ਜ਼ਿਕਰ",
@ -103,6 +104,13 @@
"account.unmute": "@{name} ਲਈ ਮੌਨ ਹਟਾਓ", "account.unmute": "@{name} ਲਈ ਮੌਨ ਹਟਾਓ",
"account.unmute_notifications_short": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਅਣ-ਮੌਨ ਕਰੋ", "account.unmute_notifications_short": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਅਣ-ਮੌਨ ਕਰੋ",
"account.unmute_short": "ਮੌਨ-ਰਹਿਤ ਕਰੋ", "account.unmute_short": "ਮੌਨ-ਰਹਿਤ ਕਰੋ",
"account_edit.bio.title": "ਜਾਣਕਾਰੀ",
"account_edit.bio_modal.add_title": "ਜਾਣਕਾਰੀ ਨੂੰ ਜੋੜੋ",
"account_edit.bio_modal.edit_title": "ਜਾਣਕਾਰੀ ਨੂੰ ਸੋਧੋ",
"account_edit.column_button": "ਮੁਕੰਮਲ",
"account_edit.column_title": "ਪਰੋਫਾਈਲ ਨੂੰ ਸੋਧੋ",
"account_edit.field_delete_modal.delete_button": "ਹਟਾਓ",
"account_edit.field_edit_modal.discard_confirm": "ਖਾਰਜ ਕਰੋ",
"admin.dashboard.retention.average": "ਔਸਤ", "admin.dashboard.retention.average": "ਔਸਤ",
"admin.dashboard.retention.cohort_size": "ਨਵੇਂ ਵਰਤੋਂਕਾਰ", "admin.dashboard.retention.cohort_size": "ਨਵੇਂ ਵਰਤੋਂਕਾਰ",
"alert.unexpected.title": "ਓਹੋ!", "alert.unexpected.title": "ਓਹੋ!",

View File

@ -178,13 +178,13 @@
"account_edit.field_actions.edit": "Editar campo", "account_edit.field_actions.edit": "Editar campo",
"account_edit.field_delete_modal.confirm": "Tem certeza que deseja excluir este campo personalizado? Esta ação não pode ser desfeita.", "account_edit.field_delete_modal.confirm": "Tem certeza que deseja excluir este campo personalizado? Esta ação não pode ser desfeita.",
"account_edit.field_delete_modal.delete_button": "Excluir", "account_edit.field_delete_modal.delete_button": "Excluir",
"account_edit.field_delete_modal.title": "Remover espaço?", "account_edit.field_delete_modal.title": "Remover campo?",
"account_edit.field_edit_modal.add_title": "Adicionar espaço", "account_edit.field_edit_modal.add_title": "Adicionar campo",
"account_edit.field_edit_modal.discard_confirm": "Descartar", "account_edit.field_edit_modal.discard_confirm": "Descartar",
"account_edit.field_edit_modal.discard_message": "Você possui alterações não salvas. Deseja mesmo descartá-las?", "account_edit.field_edit_modal.discard_message": "Você possui alterações não salvas. Deseja mesmo descartá-las?",
"account_edit.field_edit_modal.edit_title": "Editar espaço", "account_edit.field_edit_modal.edit_title": "Editar campo",
"account_edit.field_edit_modal.length_warning": "Limite de caracteres excedido. Usuários móveis talvez não consigam ver seus espaços por inteiro.", "account_edit.field_edit_modal.length_warning": "Limite de caracteres excedido. Usuários móveis talvez não consigam ver seus campos por inteiro.",
"account_edit.field_edit_modal.link_emoji_warning": "Recomendamos não usar emojis personalizados com URLs. Espaços contendo ambos serão exibidos apenas como um texto invés de um link para evitar confusão.", "account_edit.field_edit_modal.link_emoji_warning": "Recomendamos não usar emojis personalizados com URLs. Campos contendo ambos serão exibidos apenas como um texto invés de um link para evitar confusão.",
"account_edit.field_edit_modal.name_hint": "p. e.x.: “Site pessoal”", "account_edit.field_edit_modal.name_hint": "p. e.x.: “Site pessoal”",
"account_edit.field_edit_modal.name_label": "Rótulo", "account_edit.field_edit_modal.name_label": "Rótulo",
"account_edit.field_edit_modal.url_warning": "Para adicionar links, inclua {protocol} no início.", "account_edit.field_edit_modal.url_warning": "Para adicionar links, inclua {protocol} no início.",
@ -323,21 +323,21 @@
"annual_report.summary.new_posts.new_posts": "novas publicações", "annual_report.summary.new_posts.new_posts": "novas publicações",
"annual_report.summary.percentile.text": "<topLabel>Isso lhe coloca no topo</topLabel><percentage></percentage><bottomLabel>de usuários de {domain}.</bottomLabel>", "annual_report.summary.percentile.text": "<topLabel>Isso lhe coloca no topo</topLabel><percentage></percentage><bottomLabel>de usuários de {domain}.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Não contaremos ao Bernie.", "annual_report.summary.percentile.we_wont_tell_bernie": "Não contaremos ao Bernie.",
"annual_report.summary.share_elsewhere": "Compartilhar em outro lugar", "annual_report.summary.share_elsewhere": "Compartilhar fora",
"annual_report.summary.share_message": "Eu obtive o arquétipo {archetype}!", "annual_report.summary.share_message": "Eu obtive o arquétipo {archetype}!",
"annual_report.summary.share_on_mastodon": "Compartilhar no Mastodon", "annual_report.summary.share_on_mastodon": "Compartilhar no Mastodon",
"attachments_list.unprocessed": "(não processado)", "attachments_list.unprocessed": "(não processado)",
"audio.hide": "Ocultar áudio", "audio.hide": "Ocultar áudio",
"block_modal.no_collections": "Nenhum de vocês pode adicionar um ao outro a coleções. Vocês serão automaticamente removidos um da coleção do outro, se for o caso.", "block_modal.no_collections": "Nenhum dos dois podem se adicionar a uma coleção. Você será automaticamente removido da coleção do outro, se possível.",
"block_modal.remote_users_caveat": "Pediremos ao servidor {domain} que respeite sua decisão. No entanto, a conformidade não é garantida, já que alguns servidores podem lidar com bloqueios de maneira diferente. As publicações abertas ainda podem estar visíveis para usuários não logados.", "block_modal.remote_users_caveat": "Pediremos ao servidor {domain} para respeitar sua decisão. Porém, não é garantido, já que os servidores podem lidar com bloqueios de formas diferentes. Publicações ainda poderão ser visíveis para usuários não registrados.",
"block_modal.show_less": "Mostrar menos", "block_modal.show_less": "Mostrar menos",
"block_modal.show_more": "Mostrar mais", "block_modal.show_more": "Mostrar mais",
"block_modal.they_cant_mention": "Vocês não podem mencionar, seguir ou citar um ao outro.", "block_modal.they_cant_mention": "Você não poderá mencionar, seguir ou citar esta pessoa.",
"block_modal.they_cant_see_posts": "Vocês não podem ver o conteúdo um do outro.", "block_modal.they_cant_see_posts": "Vocês não poderão ver o conteúdo um do outro.",
"block_modal.they_will_know": "Poderá ver que você bloqueou.", "block_modal.they_will_know": "Poderá ver que você bloqueou.",
"block_modal.title": "Bloquear usuário?", "block_modal.title": "Bloquear usuário?",
"block_modal.you_wont_see_mentions": "Você não verá publicações de outros que mencionem essa conta.", "block_modal.you_wont_see_mentions": "Você não verá publicações de usuários que mencionarem esta pessoa.",
"boost_modal.combo": "Pressione {combo} para pular isto na próxima vez", "boost_modal.combo": "Pressione {combo} para pular da próxima vez",
"boost_modal.reblog": "Impulsionar a publicação?", "boost_modal.reblog": "Impulsionar a publicação?",
"boost_modal.undo_reblog": "Retirar o impulso da publicação?", "boost_modal.undo_reblog": "Retirar o impulso da publicação?",
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro", "bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
@ -367,6 +367,8 @@
"collection.share_modal.share_via_system": "Enviar para…", "collection.share_modal.share_via_system": "Enviar para…",
"collection.share_modal.title": "Compartilhar coleção", "collection.share_modal.title": "Compartilhar coleção",
"collection.share_modal.title_new": "Compartilhe sua nova coleção!", "collection.share_modal.title_new": "Compartilhe sua nova coleção!",
"collection.share_template_other": "Confira esta coleção incrível:",
"collection.share_template_own": "Confira minha nova coleção:",
"collections.account_count": "{count, plural, one {# conta} other {# conta}}", "collections.account_count": "{count, plural, one {# conta} other {# conta}}",
"collections.accounts.empty_description": "Adicione até {count} contas", "collections.accounts.empty_description": "Adicione até {count} contas",
"collections.accounts.empty_editor_title": "Ainda não há ninguém nesta coleção", "collections.accounts.empty_editor_title": "Ainda não há ninguém nesta coleção",
@ -380,11 +382,11 @@
"collections.collection_name": "Nome", "collections.collection_name": "Nome",
"collections.collection_topic": "Tópico", "collections.collection_topic": "Tópico",
"collections.confirm_account_removal": "Tem certeza que deseja remover esta conta da sua coleção?", "collections.confirm_account_removal": "Tem certeza que deseja remover esta conta da sua coleção?",
"collections.content_warning": "Aviso de conteúdo", "collections.content_warning": "Alerta de conteúdo",
"collections.continue": "Continuar", "collections.continue": "Continuar",
"collections.copy_link": "Copiar link", "collections.copy_link": "Copiar link",
"collections.copy_link_confirmation": "Link de coleção copiado", "collections.copy_link_confirmation": "Link de coleção copiado",
"collections.create.accounts_title": "Quen você vai apresentar nesta coleção?", "collections.create.accounts_title": "Quem você adicionará a esta coleção?",
"collections.create.basic_details_title": "Detalhes básicos", "collections.create.basic_details_title": "Detalhes básicos",
"collections.create.steps": "Passo {step}/{total}", "collections.create.steps": "Passo {step}/{total}",
"collections.create_collection": "Criar coleção", "collections.create_collection": "Criar coleção",
@ -406,23 +408,23 @@
"collections.list.collections_with_count": "{count, plural, one {# Coleção} other {# Coleções}}", "collections.list.collections_with_count": "{count, plural, one {# Coleção} other {# Coleções}}",
"collections.list.created_by_author": "Criado por {name}", "collections.list.created_by_author": "Criado por {name}",
"collections.list.created_by_you": "Criadas por você", "collections.list.created_by_you": "Criadas por você",
"collections.list.featuring_you": "Apresentado por ti", "collections.list.featuring_you": "Com você presente",
"collections.manage_accounts": "Gerenciar contas", "collections.manage_accounts": "Gerenciar contas",
"collections.mark_as_sensitive": "Marcar como sensível", "collections.mark_as_sensitive": "Marcar como sensível",
"collections.mark_as_sensitive_hint": "Oculta a descrição e as contas da coleção por trás de um aviso de conteúdo. O nome da coleção ainda será visível.", "collections.mark_as_sensitive_hint": "Oculta a descrição e contas da coleção atrás de um alerta de conteúdo. O nome da coleção ainda será visível.",
"collections.maximum_collection_count_description": "Seu servidor permite a criação de, no máximo, {count} coleções.", "collections.maximum_collection_count_description": "Seu servidor permite criar até {count} coleções.",
"collections.maximum_collection_count_reached": "Você criou a quantidade máxima de coleções", "collections.maximum_collection_count_reached": "Você criou a quantidade máxima de coleções",
"collections.name_length_hint": "limite de 40 caracteres", "collections.name_length_hint": "limite de 40 caracteres",
"collections.new_collection": "Nova coleção", "collections.new_collection": "Nova coleção",
"collections.pending_accounts.message": "Contas podem aparecer como pendentes quando estamos aguardando uma resposta do usuário ou de seu servidor. Apenas você pode ver contas pendentes.", "collections.pending_accounts.message": "Contas talvez apareçam pendentes se estivermos aguardando a resposta do usuário ou do servidor. Só você pode ver contas pendentes.",
"collections.pending_accounts.title": "Por que estou vendo contas pendentes?", "collections.pending_accounts.title": "Por que estou vendo contas pendentes?",
"collections.remove_account": "Remover", "collections.remove_account": "Remover",
"collections.report_collection": "Denunciar esta coleção", "collections.report_collection": "Denunciar coleção",
"collections.revoke_collection_inclusion": "Remover-me desta coleção", "collections.revoke_collection_inclusion": "Me remover desta coleção",
"collections.revoke_inclusion.confirmation": "Você foi removido de \"{collection}\"", "collections.revoke_inclusion.confirmation": "Você foi removido de \"{collection}\"",
"collections.revoke_inclusion.error": "Houve um erro, por favor tente novamente mais tarde.", "collections.revoke_inclusion.error": "Ocorreu um erro, tente novamente mais tarde.",
"collections.search_accounts_label": "Pesquisar por uma conta para adicionar", "collections.search_accounts_label": "Buscar uma conta para adicionar",
"collections.search_accounts_max_reached": "Você acrescentou o número máximo de contas", "collections.search_accounts_max_reached": "Você adicionou o número máximo de contas",
"collections.sensitive": "Sensível", "collections.sensitive": "Sensível",
"collections.share_short": "Compartilhar", "collections.share_short": "Compartilhar",
"collections.sort_alphabetical": "Alfabética", "collections.sort_alphabetical": "Alfabética",
@ -430,20 +432,20 @@
"collections.sort_date_added": "Data adicionada", "collections.sort_date_added": "Data adicionada",
"collections.sort_last_active": "Última atividade", "collections.sort_last_active": "Última atividade",
"collections.sort_most_followers": "Mais seguidores", "collections.sort_most_followers": "Mais seguidores",
"collections.suggestions.can_not_add": "Não pôde ser adicionado", "collections.suggestions.can_not_add": "Não pode ser adicionado",
"collections.suggestions.can_not_add_desc": "Estas contas podem ter optado para não serem exibidas na página de descobrir, ou podem estar em um servidor que não suporta coleções.", "collections.suggestions.can_not_add_desc": "Estas contas talvez não permitem aparecer na página Descobrir ou talvez estejam em um servidor que não suporte coleções.",
"collections.suggestions.must_follow": "Você deve seguir primeiro", "collections.suggestions.must_follow": "Você deve seguir primeiro",
"collections.suggestions.must_follow_desc": "Essas contas revisam todas as solicitações de seguir. Seguidores podem os adicionar às coleções.", "collections.suggestions.must_follow_desc": "Estas contas revisam as solicitações de seguidores. Seguidores podem adicioná-los às coleções.",
"collections.topic_hint": "Adicione uma hashtag que ajude os outros a entender o tópico principal desta coleção.", "collections.topic_hint": "Adicione uma hashtag que ajude a todos compreenderem o tópico da coleção.",
"collections.topic_special_chars_hint": "Caracteres especiais serão removidos ao salvar", "collections.topic_special_chars_hint": "Caracteres especiais não serão incluídos ao salvar",
"collections.unlisted_collections_description": "Estes não aparecem em seu perfil aos outros. Qualquer um com um link pode os descobrir.", "collections.unlisted_collections_description": "Estes não aparecem em seu perfil para todos. Qualquer um com link pode descobri-los.",
"collections.unlisted_collections_with_count": "Coleções não listadas ({count})", "collections.unlisted_collections_with_count": "Coleções não listadas ({count})",
"collections.view_collection": "Ver coleção", "collections.view_collection": "Ver coleção",
"collections.visibility_public": "Público", "collections.visibility_public": "Público",
"collections.visibility_public_hint": "Localizável em resultados de buscas e outras áreas onde recomendações aparecem.", "collections.visibility_public_hint": "Descobrível em resultados de busca e qualquer outra área de recomendações.",
"collections.visibility_title": "Visibilidade", "collections.visibility_title": "Visibilidade",
"collections.visibility_unlisted": "Não listado", "collections.visibility_unlisted": "Não listado",
"collections.visibility_unlisted_hint": "Visível para qualquer um com um link. Oculto nos resultados de busca e recomendações.", "collections.visibility_unlisted_hint": "Visível apenas com um link. Oculto de resultados de buscas e recomendações.",
"column.about": "Sobre", "column.about": "Sobre",
"column.blocks": "Usuários bloqueados", "column.blocks": "Usuários bloqueados",
"column.bookmarks": "Salvos", "column.bookmarks": "Salvos",
@ -455,7 +457,7 @@
"column.edit_list": "Editar lista", "column.edit_list": "Editar lista",
"column.favourites": "Favoritos", "column.favourites": "Favoritos",
"column.firehose": "Feeds ao vivo", "column.firehose": "Feeds ao vivo",
"column.firehose_local": "Feed ao vivo deste servidor", "column.firehose_local": "Feed ao vivo do servidor",
"column.firehose_singular": "Feed ao vivo", "column.firehose_singular": "Feed ao vivo",
"column.follow_requests": "Seguidores pendentes", "column.follow_requests": "Seguidores pendentes",
"column.home": "Página inicial", "column.home": "Página inicial",
@ -550,7 +552,7 @@
"confirmations.private_quote_notify.title": "Compartilhar com seguidores e usuários mencionados?", "confirmations.private_quote_notify.title": "Compartilhar com seguidores e usuários mencionados?",
"confirmations.quiet_post_quote_info.dismiss": "Não me lembrar novamente", "confirmations.quiet_post_quote_info.dismiss": "Não me lembrar novamente",
"confirmations.quiet_post_quote_info.got_it": "Entendi", "confirmations.quiet_post_quote_info.got_it": "Entendi",
"confirmations.quiet_post_quote_info.message": "Ao citar uma publicação pública silenciosa, sua postagem será oculta das linhas de tempo em tendência.", "confirmations.quiet_post_quote_info.message": "Ao citar uma publicação silenciosa, sua publicação será oculta das timelines em alta.",
"confirmations.quiet_post_quote_info.title": "Citando publicações públicas silenciosas", "confirmations.quiet_post_quote_info.title": "Citando publicações públicas silenciosas",
"confirmations.redraft.confirm": "Excluir e rascunhar", "confirmations.redraft.confirm": "Excluir e rascunhar",
"confirmations.redraft.message": "Você tem certeza de que quer apagar esta publicação e rascunhá-la? Favoritos e impulsos serão perdidos, e respostas à publicação original ficarão órfãs.", "confirmations.redraft.message": "Você tem certeza de que quer apagar esta publicação e rascunhá-la? Favoritos e impulsos serão perdidos, e respostas à publicação original ficarão órfãs.",
@ -582,6 +584,12 @@
"copy_icon_button.copy_this_text": "Copiar link para área de transferência", "copy_icon_button.copy_this_text": "Copiar link para área de transferência",
"copypaste.copied": "Copiado", "copypaste.copied": "Copiado",
"copypaste.copy_to_clipboard": "Copiar para a área de transferência", "copypaste.copy_to_clipboard": "Copiar para a área de transferência",
"custom_homepage.about": "Sobre",
"custom_homepage.about_this_server": "Sobre este servidor",
"custom_homepage.administered_by": "Administrado por",
"custom_homepage.contact": "Contato:",
"custom_homepage.latest_activity": "Última atividade",
"custom_homepage.these_are_the_latest_posts": "Estas são as últimas 40 publicações das contas neste servidor.",
"directory.federated": "Do fediverso conhecido", "directory.federated": "Do fediverso conhecido",
"directory.local": "Somente de {domain}", "directory.local": "Somente de {domain}",
"directory.new_arrivals": "Acabaram de chegar", "directory.new_arrivals": "Acabaram de chegar",
@ -595,7 +603,7 @@
"domain_block_modal.block_account_instead": "Bloquear @{name} em vez disso", "domain_block_modal.block_account_instead": "Bloquear @{name} em vez disso",
"domain_block_modal.they_can_interact_with_old_posts": "Pessoas deste servidor podem interagir com suas publicações antigas.", "domain_block_modal.they_can_interact_with_old_posts": "Pessoas deste servidor podem interagir com suas publicações antigas.",
"domain_block_modal.they_cant_follow": "Ninguém deste servidor pode lhe seguir.", "domain_block_modal.they_cant_follow": "Ninguém deste servidor pode lhe seguir.",
"domain_block_modal.they_wont_know": "O/A usuário/a não saberá que foi bloqueado/a.", "domain_block_modal.they_wont_know": "O usuário não saberá que foi bloqueado.",
"domain_block_modal.title": "Bloquear domínio?", "domain_block_modal.title": "Bloquear domínio?",
"domain_block_modal.you_will_lose_num_followers": "Você perderá {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} e {followingCount, plural, one {{followingCountDisplay} pessoa que você segue} other {{followingCountDisplay} pessoas que você segue}}.", "domain_block_modal.you_will_lose_num_followers": "Você perderá {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} e {followingCount, plural, one {{followingCountDisplay} pessoa que você segue} other {{followingCountDisplay} pessoas que você segue}}.",
"domain_block_modal.you_will_lose_relationships": "Você irá perder todos os seguidores e pessoas que você segue neste servidor.", "domain_block_modal.you_will_lose_relationships": "Você irá perder todos os seguidores e pessoas que você segue neste servidor.",
@ -605,9 +613,9 @@
"email_subscriptions.form.action": "Inscrever-se", "email_subscriptions.form.action": "Inscrever-se",
"email_subscriptions.form.bottom": "Receba publicações em sua caixa de entrada sem criar uma conta do Mastodon. Desinscreva-se a qualquer momento. Para mais informações, consulte a <a>Política de Privacidade</a>.", "email_subscriptions.form.bottom": "Receba publicações em sua caixa de entrada sem criar uma conta do Mastodon. Desinscreva-se a qualquer momento. Para mais informações, consulte a <a>Política de Privacidade</a>.",
"email_subscriptions.form.title": "Inscrever-se para atualizações por email de {name}", "email_subscriptions.form.title": "Inscrever-se para atualizações por email de {name}",
"email_subscriptions.submitted.lead": "Verifique sua caixa de entrada para finalizar sua inscrição para receber atualizações por email.", "email_subscriptions.submitted.lead": "Verifique a caixa de entrada por algum e-mail para encerrar inscrição de atualizações por e-mail.",
"email_subscriptions.submitted.title": "Mais um passo", "email_subscriptions.submitted.title": "Mais um passo",
"email_subscriptions.validation.email.blocked": "Provedor de email bloqueado", "email_subscriptions.validation.email.blocked": "Fornecedor de e-mail bloqueado",
"email_subscriptions.validation.email.invalid": "Endereço de email inválido", "email_subscriptions.validation.email.invalid": "Endereço de email inválido",
"embed.instructions": "Incorpore esta publicação no seu site ao copiar o código abaixo.", "embed.instructions": "Incorpore esta publicação no seu site ao copiar o código abaixo.",
"embed.preview": "Aqui está como vai ficar:", "embed.preview": "Aqui está como vai ficar:",
@ -626,24 +634,24 @@
"emoji_button.search_results": "Resultado da pesquisa", "emoji_button.search_results": "Resultado da pesquisa",
"emoji_button.symbols": "Símbolos", "emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagem e Lugares", "emoji_button.travel": "Viagem e Lugares",
"empty_column.account_featured.other": "{acct} ainda não colocou nada em destaque.", "empty_column.account_featured.other": "{acct} não destacou nada ainda.",
"empty_column.account_featured_self.no_collections_button": "Criar uma coleção", "empty_column.account_featured_self.no_collections_button": "Criar uma coleção",
"empty_column.account_featured_self.no_collections_hide_tab": "Ocultar esta aba em vez disso", "empty_column.account_featured_self.no_collections_hide_tab": "Ao invés, ocultar esta aba",
"empty_column.account_featured_self.pre_collections": "Acompanhe este espaço para Coleções", "empty_column.account_featured_self.pre_collections": "Fique ligado às Coleções",
"empty_column.account_featured_self.pre_collections_desc": "Coleções (chegando no Mastodon 4.6) permitem que você crie sua própria lista curada de contas para recomendar aos outros.", "empty_column.account_featured_self.pre_collections_desc": "Coleções (em breve no Mastodon 4.6) permite que você crie listas curadas de contas de recomendação para os outros.",
"empty_column.account_featured_self.showcase_accounts": "Exibir suas contas favoritas", "empty_column.account_featured_self.showcase_accounts": "Exibir contas favoritas",
"empty_column.account_featured_self.showcase_accounts_desc": "Coleções são listas curadas de contas que ajudam os outros a descobrir mais do Fediverso.", "empty_column.account_featured_self.showcase_accounts_desc": "Coleções são listas curadas de contas para ajudar todos a descobrir mais do Fediverso.",
"empty_column.account_featured_unknown.other": "Esta conta ainda não pôs nada em destaque.", "empty_column.account_featured_unknown.other": "Esta conta não destacou nada ainda.",
"empty_column.account_hides_collections": "A pessoa optou por não disponibilizar esta informação", "empty_column.account_hides_collections": "O usuário decidiu não tornar esta informação disponível",
"empty_column.account_suspended": "Conta suspensa", "empty_column.account_suspended": "Conta suspensa",
"empty_column.account_timeline": "Nada aqui.", "empty_column.account_timeline": "Nada aqui.",
"empty_column.account_unavailable": "Perfil indisponível", "empty_column.account_unavailable": "Perfil indisponível",
"empty_column.blocks": "Nada aqui.", "empty_column.blocks": "Nada aqui.",
"empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar uma publicação, ela aparecerá aqui.", "empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar uma publicação, ela aparecerá aqui.",
"empty_column.collections.featured_in": "Você ainda não foi adicionado a nenhuma coleção.", "empty_column.collections.featured_in": "Você ainda não foi adicionado a uma coleção.",
"empty_column.collections.featured_in_undiscoverable": "Para as pessoas adicionarem você às coleções, você precisa permitir destaque de experiências de descoberta através de <link>Preferências > Privacidade e alcance</link>", "empty_column.collections.featured_in_undiscoverable": "Para as pessoas adicionarem você às coleções, você precisa permitir destaque de experiências de descoberta através de <link>Preferências > Privacidade e alcance</link>",
"empty_column.community": "A linha local está vazia. Publique algo para começar!", "empty_column.community": "A linha local está vazia. Publique algo para começar!",
"empty_column.direct": "Você ainda não tem mensagens privadas. Quando você enviar ou receber uma, será exibida aqui.", "empty_column.direct": "Você ainda não possui menções privadas. Caso você enviar ou receber uma, ela aparecerá aqui.",
"empty_column.disabled_feed": "Este feed foi desativado pelos administradores de seu servidor.", "empty_column.disabled_feed": "Este feed foi desativado pelos administradores de seu servidor.",
"empty_column.domain_blocks": "Nada aqui.", "empty_column.domain_blocks": "Nada aqui.",
"empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!", "empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!",
@ -652,7 +660,7 @@
"empty_column.follow_requests": "Nada aqui. Quando você tiver seguidores pendentes, eles aparecerão aqui.", "empty_column.follow_requests": "Nada aqui. Quando você tiver seguidores pendentes, eles aparecerão aqui.",
"empty_column.followed_tags": "Você ainda não seguiu nenhuma hashtag. Quando seguir, elas serão exibidas aqui.", "empty_column.followed_tags": "Você ainda não seguiu nenhuma hashtag. Quando seguir, elas serão exibidas aqui.",
"empty_column.hashtag": "Nada aqui.", "empty_column.hashtag": "Nada aqui.",
"empty_column.home": "Sua página inicial está vazia! Siga mais pessoas para preenchê-la.", "empty_column.home": "Sua timeline inicial está vazia! Siga mais pessoas para preenchê-la.",
"empty_column.list": "Nada aqui. Quando membros da lista publicarem, elas aparecerão aqui.", "empty_column.list": "Nada aqui. Quando membros da lista publicarem, elas aparecerão aqui.",
"empty_column.mutes": "Nada aqui.", "empty_column.mutes": "Nada aqui.",
"empty_column.notification_requests": "Tudo limpo! Não há nada aqui. Quando você receber novas notificações, elas aparecerão aqui de acordo com suas configurações.", "empty_column.notification_requests": "Tudo limpo! Não há nada aqui. Quando você receber novas notificações, elas aparecerão aqui de acordo com suas configurações.",
@ -675,16 +683,16 @@
"featured_carousel.header": "{count, plural, one {Publicação fixada} other {Publicações fixadas}}", "featured_carousel.header": "{count, plural, one {Publicação fixada} other {Publicações fixadas}}",
"featured_carousel.slide": "Publicação {current, number} de {max, number}", "featured_carousel.slide": "Publicação {current, number} de {max, number}",
"featured_tags.more_items": "+{count}", "featured_tags.more_items": "+{count}",
"featured_tags.suggestions": "Anteriormente você postou sobre {items}. Adicionar estas como hashtags em destaque?", "featured_tags.suggestions": "Recentemente, você publicou sobre {items}. Adicioná-los como hashtags destacadas?",
"featured_tags.suggestions.add": "Adicionar", "featured_tags.suggestions.add": "Adicionar",
"featured_tags.suggestions.added": "Gerencie suas hashtags a qualquer momento sob <link>Editar Perfil > Hashtags em destaque</link>.", "featured_tags.suggestions.added": "Gerencie as hashtags destacadas em <link>Editar perfil > Hashtags destacadas</link>.",
"featured_tags.suggestions.dismiss": "Não, obrigado", "featured_tags.suggestions.dismiss": "Não, obrigado",
"filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.", "filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.",
"filter_modal.added.context_mismatch_title": "Incompatibilidade de contexto!", "filter_modal.added.context_mismatch_title": "Incompatibilidade de contexto!",
"filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, você precisará alterar a data de expiração para aplicar.", "filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, você precisará alterar a data de expiração para aplicar.",
"filter_modal.added.expired_title": "Filtro expirado!", "filter_modal.added.expired_title": "Filtro expirado!",
"filter_modal.added.review_and_configure": "Para revisar e configurar ainda mais esta categoria de filtro, vá para {settings_link}.", "filter_modal.added.review_and_configure": "Para revisar e configurar ainda mais esta categoria de filtro, vá para {settings_link}.",
"filter_modal.added.review_and_configure_title": "Configurações de filtro", "filter_modal.added.review_and_configure_title": "Opções de filtro",
"filter_modal.added.settings_link": "página de configurações", "filter_modal.added.settings_link": "página de configurações",
"filter_modal.added.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.", "filter_modal.added.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.",
"filter_modal.added.title": "Filtro adicionado!", "filter_modal.added.title": "Filtro adicionado!",
@ -692,11 +700,11 @@
"filter_modal.select_filter.expired": "expirado", "filter_modal.select_filter.expired": "expirado",
"filter_modal.select_filter.prompt_new": "Nova categoria: {name}", "filter_modal.select_filter.prompt_new": "Nova categoria: {name}",
"filter_modal.select_filter.search": "Buscar ou criar", "filter_modal.select_filter.search": "Buscar ou criar",
"filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova", "filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma",
"filter_modal.select_filter.title": "Filtrar esta publicação", "filter_modal.select_filter.title": "Filtrar esta publicação",
"filter_modal.title.status": "Filtrar uma publicação", "filter_modal.title.status": "Filtrar uma publicação",
"filter_warning.matches_filter": "Corresponder filtro “<span>{title}</span>”", "filter_warning.matches_filter": "Corresponde ao filtro “<span>{title}</span>”",
"filtered_notifications_banner.pending_requests": "Por {count, plural, =0 {no one} one {one person} other {# people}} que você talvez conheça", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguém} one {uma pessoa} other {# pessoas}} que você talvez conheça",
"filtered_notifications_banner.title": "Notificações filtradas", "filtered_notifications_banner.title": "Notificações filtradas",
"firehose.all": "Tudo", "firehose.all": "Tudo",
"firehose.local": "Este servidor", "firehose.local": "Este servidor",
@ -906,6 +914,7 @@
"navigation_bar.live_feed_local": "Feed ao vivo (local)", "navigation_bar.live_feed_local": "Feed ao vivo (local)",
"navigation_bar.live_feed_public": "Feed ao vivo (público)", "navigation_bar.live_feed_public": "Feed ao vivo (público)",
"navigation_bar.logout": "Sair", "navigation_bar.logout": "Sair",
"navigation_bar.main": "Principal",
"navigation_bar.moderation": "Moderação", "navigation_bar.moderation": "Moderação",
"navigation_bar.more": "Mais", "navigation_bar.more": "Mais",
"navigation_bar.mutes": "Usuários silenciados", "navigation_bar.mutes": "Usuários silenciados",
@ -1303,6 +1312,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Notificações", "tabs_bar.notifications": "Notificações",
"tabs_bar.publish": "Nova publicação", "tabs_bar.publish": "Nova publicação",
"tabs_bar.quick_links": "Links rápidos",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tag.remove": "Remover", "tag.remove": "Remover",
"terms_of_service.effective_as_of": "Em vigor a partir de {date}", "terms_of_service.effective_as_of": "Em vigor a partir de {date}",

View File

@ -579,6 +579,12 @@
"copy_icon_button.copy_this_text": "Kopjoje lidhjen në të papastër", "copy_icon_button.copy_this_text": "Kopjoje lidhjen në të papastër",
"copypaste.copied": "U kopjua", "copypaste.copied": "U kopjua",
"copypaste.copy_to_clipboard": "Kopjoje në të papastër", "copypaste.copy_to_clipboard": "Kopjoje në të papastër",
"custom_homepage.about": "Mbi",
"custom_homepage.about_this_server": "Rreth këtij shërbyesi",
"custom_homepage.administered_by": "Administruar nga",
"custom_homepage.contact": "Kontakt:",
"custom_homepage.latest_activity": "Veprimtaria e fundit",
"custom_homepage.these_are_the_latest_posts": "Këto janë 40 postimet më të reja nga llogari në këtë shërbyes.",
"directory.federated": "Nga fedivers i njohur", "directory.federated": "Nga fedivers i njohur",
"directory.local": "Vetëm nga {domain}", "directory.local": "Vetëm nga {domain}",
"directory.new_arrivals": "Të ardhur rishtas", "directory.new_arrivals": "Të ardhur rishtas",
@ -903,6 +909,7 @@
"navigation_bar.live_feed_local": "Pryrje e atypëratyshme (vendore)", "navigation_bar.live_feed_local": "Pryrje e atypëratyshme (vendore)",
"navigation_bar.live_feed_public": "Prurje e atypëratyshme (publike)", "navigation_bar.live_feed_public": "Prurje e atypëratyshme (publike)",
"navigation_bar.logout": "Dalje", "navigation_bar.logout": "Dalje",
"navigation_bar.main": "Kryesorja",
"navigation_bar.moderation": "Moderim", "navigation_bar.moderation": "Moderim",
"navigation_bar.more": "Më tepër", "navigation_bar.more": "Më tepër",
"navigation_bar.mutes": "Përdorues të heshtuar", "navigation_bar.mutes": "Përdorues të heshtuar",
@ -1299,6 +1306,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Njoftime", "tabs_bar.notifications": "Njoftime",
"tabs_bar.publish": "Postimi i Ri", "tabs_bar.publish": "Postimi i Ri",
"tabs_bar.quick_links": "Lidhje të shpejta",
"tabs_bar.search": "Kërkim", "tabs_bar.search": "Kërkim",
"tag.remove": "Hiqe", "tag.remove": "Hiqe",
"terms_of_service.effective_as_of": "Hyn në fuqi që prej {date}", "terms_of_service.effective_as_of": "Hyn në fuqi që prej {date}",

View File

@ -86,6 +86,7 @@
"account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.",
"account.media": "Media", "account.media": "Media",
"account.mention": "Nämn @{name}", "account.mention": "Nämn @{name}",
"account.menu.add_to_collection": "Lägg till i samling…",
"account.menu.add_to_list": "Lägg till i lista…", "account.menu.add_to_list": "Lägg till i lista…",
"account.menu.block": "Blockera konto", "account.menu.block": "Blockera konto",
"account.menu.block_domain": "Blockera {domain}", "account.menu.block_domain": "Blockera {domain}",
@ -366,10 +367,13 @@
"collection.share_modal.share_via_system": "Dela med…", "collection.share_modal.share_via_system": "Dela med…",
"collection.share_modal.title": "Dela samling", "collection.share_modal.title": "Dela samling",
"collection.share_modal.title_new": "Dela din nya samling!", "collection.share_modal.title_new": "Dela din nya samling!",
"collection.share_template_other": "Kolla in denna coola samling:",
"collection.share_template_own": "Kolla in min nya samling:",
"collections.account_count": "{count, plural, one {# konto} other {# konton}}", "collections.account_count": "{count, plural, one {# konto} other {# konton}}",
"collections.accounts.empty_description": "Lägg till upp till {count} konton", "collections.accounts.empty_description": "Lägg till upp till {count} konton",
"collections.accounts.empty_editor_title": "Ingen finns i denna samling ännu", "collections.accounts.empty_editor_title": "Ingen finns i denna samling ännu",
"collections.accounts.empty_title": "Denna samling är tom", "collections.accounts.empty_title": "Denna samling är tom",
"collections.add_to_collection": "Lägg till {name} i samlingar",
"collections.block_collection_owner": "Blockera konto", "collections.block_collection_owner": "Blockera konto",
"collections.by_account": "av {account_handle}", "collections.by_account": "av {account_handle}",
"collections.collection_description": "Beskrivning", "collections.collection_description": "Beskrivning",
@ -392,6 +396,7 @@
"collections.detail.loading": "Laddar samling…", "collections.detail.loading": "Laddar samling…",
"collections.detail.revoke_inclusion": "Ta bort mig", "collections.detail.revoke_inclusion": "Ta bort mig",
"collections.detail.sensitive_content": "Känsligt innehåll", "collections.detail.sensitive_content": "Känsligt innehåll",
"collections.detail.sensitive_note": "Beskrivningen och dessa konton är kanske inte lämpliga för alla tittare.",
"collections.detail.share": "Dela denna samling", "collections.detail.share": "Dela denna samling",
"collections.detail.you_are_in_this_collection": "Du är med i denna samling", "collections.detail.you_are_in_this_collection": "Du är med i denna samling",
"collections.edit_details": "Redigera detaljer", "collections.edit_details": "Redigera detaljer",
@ -424,6 +429,7 @@
"collections.share_short": "Dela", "collections.share_short": "Dela",
"collections.sort_alphabetical": "Alfabetiskt", "collections.sort_alphabetical": "Alfabetiskt",
"collections.sort_by": "Sortera efter:", "collections.sort_by": "Sortera efter:",
"collections.sort_date_added": "Datum tillagd",
"collections.sort_last_active": "Senast aktiv", "collections.sort_last_active": "Senast aktiv",
"collections.sort_most_followers": "Flest följare", "collections.sort_most_followers": "Flest följare",
"collections.suggestions.can_not_add": "Kan inte läggas till", "collections.suggestions.can_not_add": "Kan inte läggas till",
@ -637,6 +643,7 @@
"empty_column.blocks": "Du har ännu ej blockerat några användare.", "empty_column.blocks": "Du har ännu ej blockerat några användare.",
"empty_column.bookmarked_statuses": "Du har inte bokmärkt några inlägg än. När du bokmärker ett inlägg kommer det synas här.", "empty_column.bookmarked_statuses": "Du har inte bokmärkt några inlägg än. När du bokmärker ett inlägg kommer det synas här.",
"empty_column.collections.featured_in": "Du har inte lagts till i några samlingar än.", "empty_column.collections.featured_in": "Du har inte lagts till i några samlingar än.",
"empty_column.collections.featured_in_undiscoverable": "För att personer ska kunna lägga till dig i samlingar, måste du tillåta att inkluderas i upptäcktsupplevelser från <link>Inställningar> Sekretess och räckvidd</link>",
"empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!", "empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!",
"empty_column.direct": "Du har inga privata omnämnanden. När du skickar eller tar emot ett direktmeddelande kommer det att visas här.", "empty_column.direct": "Du har inga privata omnämnanden. När du skickar eller tar emot ett direktmeddelande kommer det att visas här.",
"empty_column.disabled_feed": "Detta flöde har inaktiverats av dina serveradministratörer.", "empty_column.disabled_feed": "Detta flöde har inaktiverats av dina serveradministratörer.",
@ -1000,8 +1007,8 @@
"notifications.column_settings.show": "Visa i kolumnen", "notifications.column_settings.show": "Visa i kolumnen",
"notifications.column_settings.sound": "Spela upp ljud", "notifications.column_settings.sound": "Spela upp ljud",
"notifications.column_settings.status": "Nya inlägg:", "notifications.column_settings.status": "Nya inlägg:",
"notifications.column_settings.unread_notifications.category": "O-lästa aviseringar", "notifications.column_settings.unread_notifications.category": "Olästa aviseringar",
"notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", "notifications.column_settings.unread_notifications.highlight": "Markera olästa aviseringar",
"notifications.column_settings.update": "Redigeringar:", "notifications.column_settings.update": "Redigeringar:",
"notifications.filter.all": "Alla", "notifications.filter.all": "Alla",
"notifications.filter.boosts": "Boostar", "notifications.filter.boosts": "Boostar",
@ -1298,6 +1305,7 @@
"tabs_bar.menu": "Meny", "tabs_bar.menu": "Meny",
"tabs_bar.notifications": "Aviseringar", "tabs_bar.notifications": "Aviseringar",
"tabs_bar.publish": "Nytt inlägg", "tabs_bar.publish": "Nytt inlägg",
"tabs_bar.quick_links": "Snabblänkar",
"tabs_bar.search": "Sök", "tabs_bar.search": "Sök",
"tag.remove": "Ta bort", "tag.remove": "Ta bort",
"terms_of_service.effective_as_of": "Gäller från och med {date}", "terms_of_service.effective_as_of": "Gäller från och med {date}",

View File

@ -367,6 +367,8 @@
"collection.share_modal.share_via_system": "Paylaş…", "collection.share_modal.share_via_system": "Paylaş…",
"collection.share_modal.title": "Koleksiyonu paylaş", "collection.share_modal.title": "Koleksiyonu paylaş",
"collection.share_modal.title_new": "Yeni koleksiyonunuzu paylaşın!", "collection.share_modal.title_new": "Yeni koleksiyonunuzu paylaşın!",
"collection.share_template_other": "Bu harika koleksiyona göz atın:",
"collection.share_template_own": "Yeni koleksiyonuma göz atın:",
"collections.account_count": "{count, plural, one {# hesap} other {# hesap}}", "collections.account_count": "{count, plural, one {# hesap} other {# hesap}}",
"collections.accounts.empty_description": "{count} hesap ekleyebilirsiniz", "collections.accounts.empty_description": "{count} hesap ekleyebilirsiniz",
"collections.accounts.empty_editor_title": "Koleksiyonda henüz kimse yok", "collections.accounts.empty_editor_title": "Koleksiyonda henüz kimse yok",
@ -582,6 +584,12 @@
"copy_icon_button.copy_this_text": "Bağlantıyı panoya kopyala", "copy_icon_button.copy_this_text": "Bağlantıyı panoya kopyala",
"copypaste.copied": "Kopyalandı", "copypaste.copied": "Kopyalandı",
"copypaste.copy_to_clipboard": "Panoya kopyala", "copypaste.copy_to_clipboard": "Panoya kopyala",
"custom_homepage.about": "Hakkında",
"custom_homepage.about_this_server": "Bu sunucu hakkında",
"custom_homepage.administered_by": "Yönetici:",
"custom_homepage.contact": "İletişim:",
"custom_homepage.latest_activity": "En son etkinlik",
"custom_homepage.these_are_the_latest_posts": "Bu sunucudaki hesaplardan yapılan son 40 gönderi.",
"directory.federated": "Bilinen fediverse'lerden", "directory.federated": "Bilinen fediverse'lerden",
"directory.local": "Yalnızca {domain} adresinden", "directory.local": "Yalnızca {domain} adresinden",
"directory.new_arrivals": "Yeni gelenler", "directory.new_arrivals": "Yeni gelenler",
@ -906,6 +914,7 @@
"navigation_bar.live_feed_local": "Canlı akış (yerel)", "navigation_bar.live_feed_local": "Canlı akış (yerel)",
"navigation_bar.live_feed_public": "Canlı akış (herkese açık)", "navigation_bar.live_feed_public": "Canlı akış (herkese açık)",
"navigation_bar.logout": "Oturumu kapat", "navigation_bar.logout": "Oturumu kapat",
"navigation_bar.main": "Ana",
"navigation_bar.moderation": "Moderasyon", "navigation_bar.moderation": "Moderasyon",
"navigation_bar.more": "Daha fazla", "navigation_bar.more": "Daha fazla",
"navigation_bar.mutes": "Sessize alınmış kullanıcılar", "navigation_bar.mutes": "Sessize alınmış kullanıcılar",
@ -1303,6 +1312,7 @@
"tabs_bar.menu": "Menü", "tabs_bar.menu": "Menü",
"tabs_bar.notifications": "Bildirimler", "tabs_bar.notifications": "Bildirimler",
"tabs_bar.publish": "Yeni Gönderi", "tabs_bar.publish": "Yeni Gönderi",
"tabs_bar.quick_links": "Hızlı erişim",
"tabs_bar.search": "Arama", "tabs_bar.search": "Arama",
"tag.remove": "Kaldır", "tag.remove": "Kaldır",
"terms_of_service.effective_as_of": "{date} itibariyle yürürlükte", "terms_of_service.effective_as_of": "{date} itibariyle yürürlükte",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "Sao chép liên kết vào clipboard", "copy_icon_button.copy_this_text": "Sao chép liên kết vào clipboard",
"copypaste.copied": "Đã sao chép", "copypaste.copied": "Đã sao chép",
"copypaste.copy_to_clipboard": "Sao chép vào bộ nhớ tạm", "copypaste.copy_to_clipboard": "Sao chép vào bộ nhớ tạm",
"custom_homepage.about": "Giới thiệu",
"custom_homepage.about_this_server": "Về máy chủ này",
"custom_homepage.administered_by": "Quản trị bởi",
"custom_homepage.contact": "Liên hệ:",
"custom_homepage.latest_activity": "Hoạt động gần nhất",
"custom_homepage.these_are_the_latest_posts": "Đây là 40 tút mới nhất từ các tài khoản trên máy chủ này.",
"directory.federated": "Ở mạng liên hợp", "directory.federated": "Ở mạng liên hợp",
"directory.local": "Ở {domain}", "directory.local": "Ở {domain}",
"directory.new_arrivals": "Mới tham gia", "directory.new_arrivals": "Mới tham gia",
@ -907,6 +913,7 @@
"navigation_bar.live_feed_local": "Bảng tin (máy chủ)", "navigation_bar.live_feed_local": "Bảng tin (máy chủ)",
"navigation_bar.live_feed_public": "Bảng tin (công khai)", "navigation_bar.live_feed_public": "Bảng tin (công khai)",
"navigation_bar.logout": "Đăng xuất", "navigation_bar.logout": "Đăng xuất",
"navigation_bar.main": "Chính",
"navigation_bar.moderation": "Kiểm duyệt", "navigation_bar.moderation": "Kiểm duyệt",
"navigation_bar.more": "Khác", "navigation_bar.more": "Khác",
"navigation_bar.mutes": "Tài khoản đã phớt lờ", "navigation_bar.mutes": "Tài khoản đã phớt lờ",
@ -1304,6 +1311,7 @@
"tabs_bar.menu": "Menu", "tabs_bar.menu": "Menu",
"tabs_bar.notifications": "Thông báo", "tabs_bar.notifications": "Thông báo",
"tabs_bar.publish": "Soạn tút", "tabs_bar.publish": "Soạn tút",
"tabs_bar.quick_links": "Lối tắt",
"tabs_bar.search": "Tìm kiếm", "tabs_bar.search": "Tìm kiếm",
"tag.remove": "Gỡ bỏ", "tag.remove": "Gỡ bỏ",
"terms_of_service.effective_as_of": "Có hiệu lực vào {date}", "terms_of_service.effective_as_of": "Có hiệu lực vào {date}",

View File

@ -908,6 +908,7 @@
"navigation_bar.live_feed_local": "实时动态(本站)", "navigation_bar.live_feed_local": "实时动态(本站)",
"navigation_bar.live_feed_public": "实时动态(公开)", "navigation_bar.live_feed_public": "实时动态(公开)",
"navigation_bar.logout": "退出登录", "navigation_bar.logout": "退出登录",
"navigation_bar.main": "首页",
"navigation_bar.moderation": "审核", "navigation_bar.moderation": "审核",
"navigation_bar.more": "更多", "navigation_bar.more": "更多",
"navigation_bar.mutes": "已隐藏的用户", "navigation_bar.mutes": "已隐藏的用户",
@ -1305,6 +1306,7 @@
"tabs_bar.menu": "菜单", "tabs_bar.menu": "菜单",
"tabs_bar.notifications": "通知", "tabs_bar.notifications": "通知",
"tabs_bar.publish": "新嘟文", "tabs_bar.publish": "新嘟文",
"tabs_bar.quick_links": "快捷链接",
"tabs_bar.search": "搜索", "tabs_bar.search": "搜索",
"tag.remove": "移除", "tag.remove": "移除",
"terms_of_service.effective_as_of": "自 {date} 起生效", "terms_of_service.effective_as_of": "自 {date} 起生效",

View File

@ -584,6 +584,12 @@
"copy_icon_button.copy_this_text": "複製連結至剪貼簿", "copy_icon_button.copy_this_text": "複製連結至剪貼簿",
"copypaste.copied": "已複製", "copypaste.copied": "已複製",
"copypaste.copy_to_clipboard": "複製到剪貼簿", "copypaste.copy_to_clipboard": "複製到剪貼簿",
"custom_homepage.about": "關於",
"custom_homepage.about_this_server": "關於此伺服器",
"custom_homepage.administered_by": "管理者為",
"custom_homepage.contact": "聯絡我們:",
"custom_homepage.latest_activity": "最新動態",
"custom_homepage.these_are_the_latest_posts": "這些為此伺服器上帳號的最新 40 篇嘟文。",
"directory.federated": "來自已知聯邦宇宙", "directory.federated": "來自已知聯邦宇宙",
"directory.local": "僅來自 {domain}", "directory.local": "僅來自 {domain}",
"directory.new_arrivals": "新人", "directory.new_arrivals": "新人",
@ -908,6 +914,7 @@
"navigation_bar.live_feed_local": "即時內容(本站)", "navigation_bar.live_feed_local": "即時內容(本站)",
"navigation_bar.live_feed_public": "即時內容(公開)", "navigation_bar.live_feed_public": "即時內容(公開)",
"navigation_bar.logout": "登出", "navigation_bar.logout": "登出",
"navigation_bar.main": "主要",
"navigation_bar.moderation": "站務", "navigation_bar.moderation": "站務",
"navigation_bar.more": "更多", "navigation_bar.more": "更多",
"navigation_bar.mutes": "已靜音的使用者", "navigation_bar.mutes": "已靜音的使用者",
@ -1305,6 +1312,7 @@
"tabs_bar.menu": "選單", "tabs_bar.menu": "選單",
"tabs_bar.notifications": "通知", "tabs_bar.notifications": "通知",
"tabs_bar.publish": "新增嘟文", "tabs_bar.publish": "新增嘟文",
"tabs_bar.quick_links": "快速連結",
"tabs_bar.search": "搜尋", "tabs_bar.search": "搜尋",
"tag.remove": "移除", "tag.remove": "移除",
"terms_of_service.effective_as_of": "{date} 起生效", "terms_of_service.effective_as_of": "{date} 起生效",

View File

@ -1361,6 +1361,7 @@ body > [data-popper-placement] {
// this element inherits a text direction that is opposite to its own, // this element inherits a text direction that is opposite to its own,
// the start of this element's text is cut off. // the start of this element's text is cut off.
// Posts on the timeline
.status:not(.status--is-quote) .status:not(.status--is-quote)
> .status__content > .status__content
> .status__content__text:lang(#{$lang}), > .status__content__text:lang(#{$lang}),
@ -1375,6 +1376,7 @@ body > [data-popper-placement] {
overflow-x: hidden; // read more overflow-x: hidden; // read more
} }
// Post editor
.autosuggest-textarea > .autosuggest-textarea__textarea:lang(#{$lang}) { .autosuggest-textarea > .autosuggest-textarea__textarea:lang(#{$lang}) {
writing-mode: vertical-lr; writing-mode: vertical-lr;
min-height: 209px; // writable min-height: 209px; // writable
@ -1383,6 +1385,18 @@ body > [data-popper-placement] {
scrollbar-color: unset; scrollbar-color: unset;
} }
// Alt text editor
.dialog-modal__content__form
> .input
> .label_input
> textarea#description:lang(#{$lang}) {
writing-mode: vertical-lr;
min-height: 150px; // writable
max-height: 150px; // suppress autosizing by react-textarea-autosize
overflow-x: auto;
}
// Detailed posts
.detailed-status > .status__content > .status__content__text:lang(#{$lang}) { .detailed-status > .status__content > .status__content__text:lang(#{$lang}) {
writing-mode: vertical-lr; writing-mode: vertical-lr;
width: 100%; // detecting overflow width: 100%; // detecting overflow
@ -3374,8 +3388,7 @@ a.account__display-name {
.column-header, .column-header,
.column-back-button, .column-back-button,
.scrollable, .scrollable {
.error-column {
border-radius: 0 !important; border-radius: 0 !important;
} }
@ -5288,51 +5301,6 @@ a.status-card {
margin-bottom: 0; margin-bottom: 0;
} }
.error-column {
padding: 20px;
border: 1px solid var(--color-border-primary);
border-radius: 4px;
display: flex;
flex: 1 1 auto;
align-items: center;
justify-content: center;
flex-direction: column;
cursor: default;
&__image {
width: 70%;
max-width: 350px;
margin-top: -50px;
}
&__message {
text-align: center;
color: var(--color-text-secondary);
font-size: 15px;
line-height: 22px;
h1 {
font-size: 28px;
line-height: 33px;
font-weight: 700;
margin-bottom: 15px;
color: var(--color-text-primary);
}
p {
max-width: 48ch;
}
&__actions {
margin-top: 30px;
display: flex;
gap: 10px;
align-items: center;
justify-content: center;
}
}
}
@keyframes heartbeat { @keyframes heartbeat {
0% { 0% {
transform: scale(1); transform: scale(1);

View File

@ -908,11 +908,6 @@ ar:
feed_access: feed_access:
modes: modes:
public: الجميع public: الجميع
landing_page:
values:
about: عن
local_feed: الخيط المحلي
trends: المتداوَلة
registrations: registrations:
moderation_recommandation: الرجاء التأكد من أن لديك فريق إشراف كافي وفعال قبل فتح التسجيلات للجميع! moderation_recommandation: الرجاء التأكد من أن لديك فريق إشراف كافي وفعال قبل فتح التسجيلات للجميع!
preamble: تحكّم في مَن الذي يمكنه إنشاء حساب على خادمك الخاص. preamble: تحكّم في مَن الذي يمكنه إنشاء حساب على خادمك الخاص.

View File

@ -988,10 +988,16 @@ be:
disabled: Запатрабаваць адмысловую ролю карыстальніка disabled: Запатрабаваць адмысловую ролю карыстальніка
public: Усе public: Усе
landing_page: landing_page:
hints:
about_html: Старонка з апісаннем, правіламі, кантактнай і іншай інфармацыяй адносна сервера.
local_feed_html: Жывая стужка, у якой прадстаўленыя самыя свежыя допісы карыстальнікаў гэтага сервера.
overview_html: Старонка, якая паказвае апісанне Вашага сервера разам з самымі свежымі лакальнымі допісамі карыстальнікаў гэтага сервера.
trends_html: Старонка, якая паказвае, што зараз папулярна на серверы.
values: values:
about: Падрабязна about: Аб старонцы
local_feed: Тутэйшая стужка local_feed: Лакальная жывая стужка
trends: Трэнды overview: Змест
trends: Трэндавае
registrations: registrations:
moderation_recommandation: Пераканайцеся, што ў вас ёсць адэкватная і аператыўная каманда мадэратараў, перш чым адчыняць рэгістрацыю для ўсіх жадаючых! moderation_recommandation: Пераканайцеся, што ў вас ёсць адэкватная і аператыўная каманда мадэратараў, перш чым адчыняць рэгістрацыю для ўсіх жадаючых!
preamble: Кантралюйце, хто можа ствараць уліковы запіс на вашым серверы. preamble: Кантралюйце, хто можа ствараць уліковы запіс на вашым серверы.

View File

@ -838,9 +838,6 @@ bg:
authenticated: Само удостоверени потребители authenticated: Само удостоверени потребители
disabled: Изисква особена потребителска роля disabled: Изисква особена потребителска роля
public: Всеки public: Всеки
landing_page:
values:
trends: Пламенности
registrations: registrations:
moderation_recommandation: Уверете се, че имате адекватен и реактивен модераторски екип преди да отворите регистриранията за всеки! moderation_recommandation: Уверете се, че имате адекватен и реактивен модераторски екип преди да отворите регистриранията за всеки!
preamble: Управлява кой може да създава акаунт на сървъра ви. preamble: Управлява кой може да създава акаунт на сървъра ви.

View File

@ -389,9 +389,6 @@ br:
all: D'an holl dud all: D'an holl dud
disabled: Da zen ebet disabled: Da zen ebet
users: D'an implijerien·ezed lec'hel kevreet users: D'an implijerien·ezed lec'hel kevreet
landing_page:
values:
about: Diwar-benn
title: Arventennoù ar servijer title: Arventennoù ar servijer
site_uploads: site_uploads:
delete: Dilemel ar restr pellgaset delete: Dilemel ar restr pellgaset

View File

@ -921,11 +921,6 @@ cs:
authenticated: Pouze autentifikovaní uživatelé authenticated: Pouze autentifikovaní uživatelé
disabled: Vyžadovat specifickou uživatelskou roli disabled: Vyžadovat specifickou uživatelskou roli
public: Všichni public: Všichni
landing_page:
values:
about: O službě
local_feed: Místní kanál
trends: Trendy
registrations: registrations:
moderation_recommandation: Před otevřením registrací všem se ujistěte, že máte vhodný a reaktivní moderační tým! moderation_recommandation: Před otevřením registrací všem se ujistěte, že máte vhodný a reaktivní moderační tým!
preamble: Mějte pod kontrolou, kdo může vytvořit účet na vašem serveru. preamble: Mějte pod kontrolou, kdo může vytvořit účet na vašem serveru.

View File

@ -1019,11 +1019,6 @@ cy:
authenticated: Defnyddwyr dilys yn unig authenticated: Defnyddwyr dilys yn unig
disabled: Gofyn am rôl defnyddiwr penodol disabled: Gofyn am rôl defnyddiwr penodol
public: Pawb public: Pawb
landing_page:
values:
about: Ynghylch
local_feed: Ffrwd leol
trends: Trendiau
registrations: registrations:
moderation_recommandation: Gwnewch yn siŵr bod gennych chi dîm cymedroli digonol ac adweithiol cyn i chi agor cofrestriadau i bawb! moderation_recommandation: Gwnewch yn siŵr bod gennych chi dîm cymedroli digonol ac adweithiol cyn i chi agor cofrestriadau i bawb!
preamble: Rheoli pwy all greu cyfrif ar eich gweinydd. preamble: Rheoli pwy all greu cyfrif ar eich gweinydd.

View File

@ -956,10 +956,16 @@ da:
disabled: Kræv specifik brugerrolle disabled: Kræv specifik brugerrolle
public: Alle public: Alle
landing_page: landing_page:
hints:
about_html: En side med beskrivelsen, kontaktoplysninger, regler og andre oplysninger vedrørende denne server.
local_feed_html: Et live feed med de seneste indlæg fra brugere på denne server.
overview_html: En side, der viser beskrivelsen af din server sammen med de seneste lokale indlæg af brugere på denne server.
trends_html: En side, der viser, hvad der er populært på denne server lige nu.
values: values:
about: Om about: Om-side
local_feed: Lokalt feed local_feed: Lokalt live-feed
trends: Trends overview: Oversigt
trends: Trender
registrations: registrations:
moderation_recommandation: Sørg for, at der er et tilstrækkeligt og reaktivt moderationsteam, før registrering åbnes for alle! moderation_recommandation: Sørg for, at der er et tilstrækkeligt og reaktivt moderationsteam, før registrering åbnes for alle!
preamble: Styr, hvem der kan oprette en konto på din server. preamble: Styr, hvem der kan oprette en konto på din server.

View File

@ -957,9 +957,8 @@ de:
public: Alle public: Alle
landing_page: landing_page:
values: values:
about: Über overview: Übersicht
local_feed: Lokaler Feed trends: Trendet
trends: Trends
registrations: registrations:
moderation_recommandation: Bitte vergewissere dich, dass du ein geeignetes und reaktionsschnelles Moderationsteam hast, bevor du die Registrierungen uneingeschränkt zulässt! moderation_recommandation: Bitte vergewissere dich, dass du ein geeignetes und reaktionsschnelles Moderationsteam hast, bevor du die Registrierungen uneingeschränkt zulässt!
preamble: Lege fest, wer auf deinem Server ein Konto erstellen darf. preamble: Lege fest, wer auf deinem Server ein Konto erstellen darf.

View File

@ -956,9 +956,15 @@ el:
disabled: Να απαιτείται συγκεκριμένος ρόλος χρήστη disabled: Να απαιτείται συγκεκριμένος ρόλος χρήστη
public: Όλοι public: Όλοι
landing_page: landing_page:
hints:
about_html: Μια σελίδα με την περιγραφή, τις πληροφορίες επικοινωνίας, τους κανόνες και άλλες πληροφορίες σχετικά με αυτόν τον διακομιστή.
local_feed_html: Μια ζωντανή ροή που αναδεικνύει τις πιο πρόσφατες αναρτήσεις από τους χρήστες σε αυτόν τον διακομιστή.
overview_html: Μια σελίδα που παρουσιάζει την περιγραφή του διακομιστή σας μαζί με τις πιο πρόσφατες τοπικές αναρτήσεις από τους χρήστες σε αυτόν τον διακομιστή.
trends_html: Μια σελίδα που αναδεικνύει τι είναι δημοφιλές σε αυτόν τον διακομιστή αυτήν τη στιγμή.
values: values:
about: Σχετικά about: Σελίδα Σχετικά με
local_feed: Τοπική ροή local_feed: Τοπική ζωντανή ροή
overview: Επισκόπηση
trends: Τάσεις trends: Τάσεις
registrations: registrations:
moderation_recommandation: Παρακαλώ βεβαιώσου ότι έχεις μια επαρκής και ενεργή ομάδα συντονισμού πριν ανοίξεις τις εγγραφές για όλους! moderation_recommandation: Παρακαλώ βεβαιώσου ότι έχεις μια επαρκής και ενεργή ομάδα συντονισμού πριν ανοίξεις τις εγγραφές για όλους!

View File

@ -879,11 +879,6 @@ en-GB:
authenticated: Authenticated users only authenticated: Authenticated users only
disabled: Require specific user role disabled: Require specific user role
public: Everyone public: Everyone
landing_page:
values:
about: About
local_feed: Local feed
trends: Trends
registrations: registrations:
moderation_recommandation: Please make sure you have an adequate and reactive moderation team before you open registrations to everyone! moderation_recommandation: Please make sure you have an adequate and reactive moderation team before you open registrations to everyone!
preamble: Control who can create an account on your server. preamble: Control who can create an account on your server.

View File

@ -956,10 +956,16 @@ es-AR:
disabled: Requerir un rol de específico de usuario disabled: Requerir un rol de específico de usuario
public: Todos public: Todos
landing_page: landing_page:
hints:
about_html: Una página con la descripción, información de contacto, reglas y otra información relacionada a este servidor.
local_feed_html: Una línea temporal en vivo con los mensajes más recientes de los usuarios en este servidor.
overview_html: Una página que muestra la descripción de tu servidor junto a los mensajes locales más recientes de tus usuarios.
trends_html: Una página con lo que es popular en este servidor ahora mismo.
values: values:
about: Información about: Acerca de la página
local_feed: Línea temporal local local_feed: Línea temporal local en vivo
trends: Tendencias overview: Visión general
trends: En tendencia
registrations: registrations:
moderation_recommandation: Por favor, ¡asegurate de tener un equipo de moderación adecuado y reactivo antes de abrir los registros a todos! moderation_recommandation: Por favor, ¡asegurate de tener un equipo de moderación adecuado y reactivo antes de abrir los registros a todos!
preamble: Controlá quién puede crear una cuenta en tu servidor. preamble: Controlá quién puede crear una cuenta en tu servidor.

View File

@ -955,11 +955,6 @@ es-MX:
authenticated: Solo usuarios registrados authenticated: Solo usuarios registrados
disabled: Requerir un rol de usuario específico disabled: Requerir un rol de usuario específico
public: Todos public: Todos
landing_page:
values:
about: Acerca de
local_feed: Feed local
trends: Tendencias
registrations: registrations:
moderation_recommandation: "¡Por favor, asegúrate de contar con un equipo de moderación adecuado y activo antes de abrir el registro al público!" moderation_recommandation: "¡Por favor, asegúrate de contar con un equipo de moderación adecuado y activo antes de abrir el registro al público!"
preamble: Controla quién puede crear una cuenta en tu servidor. preamble: Controla quién puede crear una cuenta en tu servidor.

View File

@ -955,11 +955,6 @@ es:
authenticated: Solo usuarios autenticados authenticated: Solo usuarios autenticados
disabled: Requerir un rol de usuario específico disabled: Requerir un rol de usuario específico
public: Todos public: Todos
landing_page:
values:
about: Acerca de
local_feed: Cronología local
trends: Tendencias
registrations: registrations:
moderation_recommandation: Por favor, ¡asegúrate de tener un equipo de moderación adecuado y reactivo antes de abrir los registros a todo el mundo! moderation_recommandation: Por favor, ¡asegúrate de tener un equipo de moderación adecuado y reactivo antes de abrir los registros a todo el mundo!
preamble: Controla quién puede crear una cuenta en tu servidor. preamble: Controla quién puede crear una cuenta en tu servidor.
@ -979,7 +974,7 @@ es:
site_uploads: site_uploads:
delete: Eliminar archivo subido delete: Eliminar archivo subido
destroyed_msg: "¡Carga del sitio eliminada con éxito!" destroyed_msg: "¡Carga del sitio eliminada con éxito!"
skip_to_content: Ir al contenido skip_to_content: Saltar al contenido
software_updates: software_updates:
critical_update: Crítica— por favor actualiza rápidamente critical_update: Crítica— por favor actualiza rápidamente
description: Se recomienda mantener actualizada tu instalación de Mastodon para beneficiarte de las últimas correcciones y características. Además, a veces es crítico actualizar Mastodon de manera oportuna para evitar problemas de seguridad. Por estas razones, Mastodon comprueba si hay actualizaciones cada 30 minutos, y te notificará de acuerdo a tus preferencias de notificación por correo electrónico. description: Se recomienda mantener actualizada tu instalación de Mastodon para beneficiarte de las últimas correcciones y características. Además, a veces es crítico actualizar Mastodon de manera oportuna para evitar problemas de seguridad. Por estas razones, Mastodon comprueba si hay actualizaciones cada 30 minutos, y te notificará de acuerdo a tus preferencias de notificación por correo electrónico.

View File

@ -955,11 +955,6 @@ et:
authenticated: Vaid autenditud kasutajad authenticated: Vaid autenditud kasutajad
disabled: Eelda konkreetse kasutajarolli olemasolu disabled: Eelda konkreetse kasutajarolli olemasolu
public: Kõik public: Kõik
landing_page:
values:
about: Teave
local_feed: Kohalik sisuvoog
trends: Trendid
registrations: registrations:
moderation_recommandation: Enne kõigi jaoks registreerimise avamist veendu, et oleks olemas adekvaatne ja reageerimisvalmis modereerijaskond! moderation_recommandation: Enne kõigi jaoks registreerimise avamist veendu, et oleks olemas adekvaatne ja reageerimisvalmis modereerijaskond!
preamble: Kes saab serveril konto luua. preamble: Kes saab serveril konto luua.

View File

@ -841,11 +841,6 @@ eu:
authenticated: Saioa hasi duten erabiltzaileentzat soilik authenticated: Saioa hasi duten erabiltzaileentzat soilik
disabled: Erabiltzaile-rol jakin bat behar da disabled: Erabiltzaile-rol jakin bat behar da
public: Edonork public: Edonork
landing_page:
values:
about: Honi buruz
local_feed: Jario lokala
trends: Joerak
registrations: registrations:
moderation_recommandation: Mesedez, ziurtatu moderazio-talde egokia eta erreaktiboa duzula erregistroak guztiei ireki aurretik! moderation_recommandation: Mesedez, ziurtatu moderazio-talde egokia eta erreaktiboa duzula erregistroak guztiei ireki aurretik!
preamble: Kontrolatu nork sortu dezakeen kontua zerbitzarian. preamble: Kontrolatu nork sortu dezakeen kontua zerbitzarian.

Some files were not shown because too many files have changed in this diff Show More