diff --git a/.bundler-audit.yml b/.bundler-audit.yml new file mode 100644 index 0000000000..4dae946991 --- /dev/null +++ b/.bundler-audit.yml @@ -0,0 +1,3 @@ +--- +ignore: + - CVE-2026-45363 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 93bc87d760..afb7066956 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -35,7 +35,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4 + uses: github/codeql-action/init@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4 with: languages: ${{ matrix.language }} # 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). # If this step fails, then you should remove it and run the build manually (see below) - 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. # 📚 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 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4 + uses: github/codeql-action/analyze@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml index 90c9dc8937..ac95c708dd 100644 --- a/.github/workflows/test-ruby.yml +++ b/.github/workflows/test-ruby.yml @@ -167,7 +167,7 @@ jobs: - name: Upload coverage reports to Codecov if: matrix.ruby-version == '.ruby-version' - uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6 + uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6 with: files: coverage/lcov/*.lcov env: diff --git a/.rubocop/rails.yml b/.rubocop/rails.yml index bbd172e656..d98c6fc486 100644 --- a/.rubocop/rails.yml +++ b/.rubocop/rails.yml @@ -24,3 +24,6 @@ Rails/RakeEnvironment: Rails/SkipsModelValidations: Enabled: false + +Rails/StrongParametersExpect: + Enabled: false diff --git a/.rubocop/style.yml b/.rubocop/style.yml index f59340d452..1d1c9f9879 100644 --- a/.rubocop/style.yml +++ b/.rubocop/style.yml @@ -33,6 +33,9 @@ Style/NumericLiterals: AllowedPatterns: - \d{4}_\d{2}_\d{2}_\d{6} +Style/OneClassPerFile: + Enabled: false + Style/PercentLiteralDelimiters: PreferredDelimiters: '%i': () diff --git a/Gemfile.lock b/Gemfile.lock index 62d049d033..333294b836 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -99,8 +99,8 @@ GEM ast (2.4.3) attr_required (1.0.2) aws-eventstream (1.4.0) - aws-partitions (1.1249.0) - aws-sdk-core (3.247.0) + aws-partitions (1.1253.0) + aws-sdk-core (3.249.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -235,7 +235,7 @@ GEM fabrication (3.0.0) faker (3.8.0) i18n (>= 1.8.11, < 2) - faraday (2.14.1) + faraday (2.14.2) faraday-net_http (>= 2.0, < 3.5) json logger @@ -243,7 +243,7 @@ GEM faraday (>= 1, < 3) faraday-httpclient (2.0.2) httpclient (>= 2.2) - faraday-net_http (3.4.2) + faraday-net_http (3.4.3) net-http (~> 0.5) fast_blank (1.0.1) fastimage (2.4.1) @@ -588,7 +588,7 @@ GEM ostruct (0.6.3) ox (2.14.26) bigdecimal (>= 3.0) - parallel (1.28.0) + parallel (2.1.0) parser (3.3.11.1) ast (~> 2.4.1) racc @@ -755,11 +755,11 @@ GEM rspec-mocks (~> 3.0) sidekiq (>= 5, < 9) rspec-support (3.13.7) - rubocop (1.84.2) + rubocop (1.86.2) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) - parallel (~> 1.10) + parallel (>= 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) @@ -779,7 +779,7 @@ GEM lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.47.1, < 2.0) - rubocop-rails (2.34.3) + rubocop-rails (2.35.2) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) diff --git a/app/javascript/flavours/glitch/api_types/search.ts b/app/javascript/flavours/glitch/api_types/search.ts index 795cbb2b41..961dd65699 100644 --- a/app/javascript/flavours/glitch/api_types/search.ts +++ b/app/javascript/flavours/glitch/api_types/search.ts @@ -1,4 +1,5 @@ import type { ApiAccountJSON } from './accounts'; +import type { ApiCollectionJSON } from './collections'; import type { ApiStatusJSON } from './statuses'; import type { ApiHashtagJSON } from './tags'; @@ -8,4 +9,5 @@ export interface ApiSearchResultsJSON { accounts: ApiAccountJSON[]; statuses: ApiStatusJSON[]; hashtags: ApiHashtagJSON[]; + collections: ApiCollectionJSON[]; } diff --git a/app/javascript/flavours/glitch/components/account_header/buttons.tsx b/app/javascript/flavours/glitch/components/account_header/buttons.tsx index c90048fa66..77003e71e3 100644 --- a/app/javascript/flavours/glitch/components/account_header/buttons.tsx +++ b/app/javascript/flavours/glitch/components/account_header/buttons.tsx @@ -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 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 { IconButton } from '../icon_button'; diff --git a/app/javascript/flavours/glitch/components/account_header/name.tsx b/app/javascript/flavours/glitch/components/account_header/name.tsx index 53dbc905ec..01453c2b92 100644 --- a/app/javascript/flavours/glitch/components/account_header/name.tsx +++ b/app/javascript/flavours/glitch/components/account_header/name.tsx @@ -7,17 +7,16 @@ import classNames from 'classnames'; import Overlay from 'react-overlays/esm/Overlay'; -import { showAlert } from '@/flavours/glitch/actions/alerts'; import { useAccount } from '@/flavours/glitch/hooks/useAccount'; 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 ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; import HelpIcon from '@/material-icons/400-24px/help.svg?react'; import DomainIcon from '@/material-icons/400-24px/language.svg?react'; import { FollowsYouBadge } from '../badge'; -import { Button } from '../button'; +import { CopyButton } from '../copy_button'; import { DisplayName } from '../display_name'; import { Icon } from '../icon'; @@ -90,17 +89,6 @@ const AccountNameHelp: FC<{ 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 ( <> + )} diff --git a/app/javascript/flavours/glitch/components/copy_button.tsx b/app/javascript/flavours/glitch/components/copy_button.tsx new file mode 100644 index 0000000000..cb1ad29b80 --- /dev/null +++ b/app/javascript/flavours/glitch/components/copy_button.tsx @@ -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, + '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 ( + + ); +}; + +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 ( + + ); +}; diff --git a/app/javascript/flavours/glitch/components/copy_icon_button.tsx b/app/javascript/flavours/glitch/components/copy_icon_button.tsx deleted file mode 100644 index 6f1dffbdf6..0000000000 --- a/app/javascript/flavours/glitch/components/copy_icon_button.tsx +++ /dev/null @@ -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 ( - - ); -}; diff --git a/app/javascript/flavours/glitch/components/empty_state/empty_state.module.scss b/app/javascript/flavours/glitch/components/empty_state/empty_state.module.scss index 64d9a4e584..cb2332aec6 100644 --- a/app/javascript/flavours/glitch/components/empty_state/empty_state.module.scss +++ b/app/javascript/flavours/glitch/components/empty_state/empty_state.module.scss @@ -13,8 +13,7 @@ .content { max-width: 370px; - svg, - img { + :where(svg, img) { width: 200px; aspect-ratio: 1; object-fit: contain; @@ -22,16 +21,10 @@ margin-bottom: 16px; } - h3 { - font-size: 17px; - font-weight: 500; - text-wrap: balance; - line-height: 1.2; - } - p { margin-top: 8px; font-size: 15px; + line-height: 1.4; color: var(--color-text-secondary); 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 { --color-skin-1: #3a3a50; --color-skin-2: #67678e; diff --git a/app/javascript/flavours/glitch/components/empty_state/empty_state.stories.tsx b/app/javascript/flavours/glitch/components/empty_state/empty_state.stories.tsx index 83fce03468..c1faaf6f39 100644 --- a/app/javascript/flavours/glitch/components/empty_state/empty_state.stories.tsx +++ b/app/javascript/flavours/glitch/components/empty_state/empty_state.stories.tsx @@ -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 = { args: { ...Default.args, diff --git a/app/javascript/flavours/glitch/components/empty_state/index.tsx b/app/javascript/flavours/glitch/components/empty_state/index.tsx index e332aaedb5..3f0738ce5a 100644 --- a/app/javascript/flavours/glitch/components/empty_state/index.tsx +++ b/app/javascript/flavours/glitch/components/empty_state/index.tsx @@ -4,10 +4,15 @@ import classNames from 'classnames'; import ElephantImage from '@/images/elephant_ui.svg?react'; +import { GIF } from '../gif'; + import classes from './empty_state.module.scss'; const images = { default: , + error: ( + + ), }; /** @@ -21,6 +26,7 @@ export const EmptyState: React.FC<{ title?: React.ReactNode; message?: React.ReactNode; children?: React.ReactNode; + headingLevel?: 'h2' | 'h3' | 'h4'; className?: string; }> = ({ image = 'default', @@ -29,6 +35,7 @@ export const EmptyState: React.FC<{ ), message, children, + headingLevel: Heading = 'h2', className, }) => { const imageToRender = typeof image === 'string' ? images[image] : image; @@ -38,7 +45,7 @@ export const EmptyState: React.FC<{ {(title || message || imageToRender) && (
{imageToRender} - {!!title &&

{title}

} + {!!title && {title}} {!!message &&

{message}

}
)} diff --git a/app/javascript/flavours/glitch/components/form_fields/copy_link_field.tsx b/app/javascript/flavours/glitch/components/form_fields/copy_link_field.tsx index 6404e5ed56..aa2b63392d 100644 --- a/app/javascript/flavours/glitch/components/form_fields/copy_link_field.tsx +++ b/app/javascript/flavours/glitch/components/form_fields/copy_link_field.tsx @@ -4,7 +4,7 @@ import { useIntl } from 'react-intl'; 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 { FormFieldWrapper } from './form_field_wrapper'; diff --git a/app/javascript/flavours/glitch/components/gif.tsx b/app/javascript/flavours/glitch/components/gif.tsx index 500f64bbe6..0eb117cb24 100644 --- a/app/javascript/flavours/glitch/components/gif.tsx +++ b/app/javascript/flavours/glitch/components/gif.tsx @@ -4,7 +4,7 @@ import { autoPlayGif } from 'flavours/glitch/initial_state'; export const GIF: React.FC<{ src: string; staticSrc: string; - className: string; + className?: string; animate?: boolean; }> = ({ src, staticSrc, className, animate = autoPlayGif }) => { const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate); diff --git a/app/javascript/flavours/glitch/features/account_edit/components/column.tsx b/app/javascript/flavours/glitch/features/account_edit/components/column.tsx index 79e63b8019..0b1d8a8251 100644 --- a/app/javascript/flavours/glitch/features/account_edit/components/column.tsx +++ b/app/javascript/flavours/glitch/features/account_edit/components/column.tsx @@ -9,7 +9,7 @@ import { Helmet } from '@unhead/react/helmet'; import { Column } from '@/flavours/glitch/components/column'; import { ColumnHeader } from '@/flavours/glitch/components/column_header'; 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 classes from '../styles.module.scss'; diff --git a/app/javascript/flavours/glitch/features/account_featured/index.tsx b/app/javascript/flavours/glitch/features/account_featured/index.tsx index b8d18439b8..5baec61f63 100644 --- a/app/javascript/flavours/glitch/features/account_featured/index.tsx +++ b/app/javascript/flavours/glitch/features/account_featured/index.tsx @@ -19,7 +19,7 @@ import { } from '@/flavours/glitch/components/scrollable_list/components'; import type { TruncatedListItemInfo } 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 { useAccount } from '@/flavours/glitch/hooks/useAccount'; import { useAccountId } from '@/flavours/glitch/hooks/useAccountId'; diff --git a/app/javascript/flavours/glitch/features/account_gallery/index.tsx b/app/javascript/flavours/glitch/features/account_gallery/index.tsx index 4e4776f383..326b1b1fc3 100644 --- a/app/javascript/flavours/glitch/features/account_gallery/index.tsx +++ b/app/javascript/flavours/glitch/features/account_gallery/index.tsx @@ -10,7 +10,7 @@ import { AccountHeader } from '@/flavours/glitch/components/account_header'; import { LimitedAccountHint } from '@/flavours/glitch/components/limited_account_hint'; import { RemoteHint } from '@/flavours/glitch/components/remote_hint'; 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 { useAccountId } from '@/flavours/glitch/hooks/useAccountId'; import { useAccountVisibility } from '@/flavours/glitch/hooks/useAccountVisibility'; diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.tsx b/app/javascript/flavours/glitch/features/account_timeline/index.tsx index 1b5dc47ffa..19e43220a5 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.tsx +++ b/app/javascript/flavours/glitch/features/account_timeline/index.tsx @@ -19,7 +19,7 @@ import { LimitedAccountHint } from '@/flavours/glitch/components/limited_account import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator'; import { RemoteHint } from '@/flavours/glitch/components/remote_hint'; 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 { useAccountId, useCurrentAccountId, diff --git a/app/javascript/flavours/glitch/features/compose/components/search.tsx b/app/javascript/flavours/glitch/features/compose/components/search.tsx index f4baf784ff..ace29efab9 100644 --- a/app/javascript/flavours/glitch/features/compose/components/search.tsx +++ b/app/javascript/flavours/glitch/features/compose/components/search.tsx @@ -19,6 +19,7 @@ import { useHistory } from 'react-router-dom'; 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 CloseIcon from '@/material-icons/400-24px/close.svg?react'; import SearchIcon from '@/material-icons/400-24px/search.svg?react'; @@ -337,6 +338,10 @@ export const Search: React.FC<{ history.push( `/@${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), + ); } } diff --git a/app/javascript/flavours/glitch/features/followers/components/list.tsx b/app/javascript/flavours/glitch/features/followers/components/list.tsx index 012c8ed67a..65ef477374 100644 --- a/app/javascript/flavours/glitch/features/followers/components/list.tsx +++ b/app/javascript/flavours/glitch/features/followers/components/list.tsx @@ -6,7 +6,7 @@ import type { ColumnRef } from '@/flavours/glitch/components/column'; import { Column } from '@/flavours/glitch/components/column'; import { LoadingIndicator } from '@/flavours/glitch/components/loading_indicator'; 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 { useAccountVisibility } from '@/flavours/glitch/hooks/useAccountVisibility'; import { useLayout } from '@/flavours/glitch/hooks/useLayout'; diff --git a/app/javascript/flavours/glitch/features/getting_started/index.tsx b/app/javascript/flavours/glitch/features/getting_started/index.tsx index 4858a48d30..73a837969e 100644 --- a/app/javascript/flavours/glitch/features/getting_started/index.tsx +++ b/app/javascript/flavours/glitch/features/getting_started/index.tsx @@ -4,16 +4,14 @@ import { Helmet } from '@unhead/react/helmet'; 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'; const GettingStarted: React.FC = () => { const intl = useIntl(); return ( - + diff --git a/app/javascript/flavours/glitch/features/navigation_panel/index.tsx b/app/javascript/flavours/glitch/features/navigation_panel/index.tsx index 39b9adc6a1..dfd65ffa0c 100644 --- a/app/javascript/flavours/glitch/features/navigation_panel/index.tsx +++ b/app/javascript/flavours/glitch/features/navigation_panel/index.tsx @@ -65,7 +65,7 @@ import { MoreLink } from './components/more_link'; import { SignInBanner } from './components/sign_in_banner'; import { Trends } from './components/trends'; -export const messages = defineMessages({ +const messages = defineMessages({ home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, notifications: { id: 'tabs_bar.notifications', @@ -270,7 +270,10 @@ export const NavigationPanel: React.FC<{ multiColumn?: boolean }> = ({ ); return ( -
+ ); }; export const CollapsibleNavigationPanel: React.FC = () => { - const intl = useIntl(); const open = useAppSelector((state) => state.navigation.open); const dispatch = useAppDispatch(); const openable = useBreakpoint('openable'); @@ -570,8 +572,7 @@ export const CollapsibleNavigationPanel: React.FC = () => { const showOverlay = openable && open; return ( - +
); }; diff --git a/app/javascript/flavours/glitch/features/terms_of_service/index.tsx b/app/javascript/flavours/glitch/features/terms_of_service/index.tsx index bc5a15e0bb..4ba0b78d53 100644 --- a/app/javascript/flavours/glitch/features/terms_of_service/index.tsx +++ b/app/javascript/flavours/glitch/features/terms_of_service/index.tsx @@ -14,7 +14,7 @@ import { Helmet } from '@unhead/react/helmet'; import { apiGetTermsOfService } from 'flavours/glitch/api/instance'; import type { ApiTermsOfServiceJSON } from 'flavours/glitch/api_types/instance'; 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({ title: { id: 'terms_of_service.title', defaultMessage: 'Terms of Service' }, diff --git a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.jsx b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.jsx deleted file mode 100644 index 6fd5d1ebca..0000000000 --- a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.jsx +++ /dev/null @@ -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 ( - - ); - } - -} - -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 = ; - body = ; - break; - case 'network': - title = ; - body = ; - break; - case 'error': - title = ; - body = ; - break; - } - - return ( - -
- - -
-

{title}

-

{body}

- -
- {errorType === 'network' && } - {errorType === 'error' && } - -
-
-
- - - - -
- ); - } - -} - -export default injectIntl(BundleColumnError); diff --git a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error/index.tsx b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error/index.tsx new file mode 100644 index 0000000000..4368362a88 --- /dev/null +++ b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error/index.tsx @@ -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 = ({ + errorType = 'routing', + onRetry, + multiColumn, + stacktrace, +}) => { + let title, body; + + switch (errorType) { + case 'routing': + title = ( + + ); + body = ( + + ); + break; + case 'network': + title = ( + + ); + body = ( + + ); + break; + case 'error': + title = ( + + ); + body = ( + + ); + break; + } + + return ( + + +
+ {errorType === 'network' && onRetry && ( + + )} + {errorType === 'error' && stacktrace && ( + + + + )} + + + +
+
+ + + + +
+ ); +}; + +// eslint-disable-next-line import/no-default-export +export default BundleColumnError; diff --git a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error/styles.module.scss b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error/styles.module.scss new file mode 100644 index 0000000000..62549efffc --- /dev/null +++ b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error/styles.module.scss @@ -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; +} diff --git a/app/javascript/flavours/glitch/features/ui/components/columns_area.tsx b/app/javascript/flavours/glitch/features/ui/components/columns_area.tsx index 7c0c03cf0b..3cccf8f7e0 100644 --- a/app/javascript/flavours/glitch/features/ui/components/columns_area.tsx +++ b/app/javascript/flavours/glitch/features/ui/components/columns_area.tsx @@ -33,7 +33,7 @@ import { import { useColumnsContext } from '../util/columns_context'; import Bundle from './bundle'; -import BundleColumnError from './bundle_column_error'; +import { BundleColumnError } from './bundle_column_error'; import { ColumnLoading } from './column_loading'; import { ComposePanel, RedirectToMobileComposeIfNeeded } from './compose_panel'; import DrawerLoading from './drawer_loading'; diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.tsx b/app/javascript/flavours/glitch/features/ui/components/link_footer.tsx index 14083f90a4..303f7a2b6f 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.tsx +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.tsx @@ -29,6 +29,7 @@ export const LinkFooter: React.FC<{ id='footer.about_this_server' defaultMessage='About' /> + {domain} {statusPageUrl && ( @@ -82,6 +83,7 @@ export const LinkFooter: React.FC<{
  • + Mastodon
  • diff --git a/app/javascript/flavours/glitch/styles/mastodon/components.scss b/app/javascript/flavours/glitch/styles/mastodon/components.scss index b89fc2970d..b1f88ed167 100644 --- a/app/javascript/flavours/glitch/styles/mastodon/components.scss +++ b/app/javascript/flavours/glitch/styles/mastodon/components.scss @@ -1420,6 +1420,7 @@ body > [data-popper-placement] { // this element inherits a text direction that is opposite to its own, // the start of this element's text is cut off. + // Posts on the timeline .status:not(.status--is-quote) > .status__content > .status__content__text:lang(#{$lang}), @@ -1434,6 +1435,7 @@ body > [data-popper-placement] { overflow-x: hidden; // read more } + // Post editor .autosuggest-textarea > .autosuggest-textarea__textarea:lang(#{$lang}) { writing-mode: vertical-lr; min-height: 209px; // writable @@ -1442,6 +1444,18 @@ body > [data-popper-placement] { 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}) { writing-mode: vertical-lr; width: 100%; // detecting overflow @@ -3440,8 +3454,7 @@ a.account__display-name { .column-header, .column-back-button, - .scrollable, - .error-column { + .scrollable { border-radius: 0 !important; } @@ -5428,51 +5441,6 @@ a.status-card { 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 { 0% { transform: scale(1); diff --git a/app/javascript/mastodon/api_types/search.ts b/app/javascript/mastodon/api_types/search.ts index 795cbb2b41..961dd65699 100644 --- a/app/javascript/mastodon/api_types/search.ts +++ b/app/javascript/mastodon/api_types/search.ts @@ -1,4 +1,5 @@ import type { ApiAccountJSON } from './accounts'; +import type { ApiCollectionJSON } from './collections'; import type { ApiStatusJSON } from './statuses'; import type { ApiHashtagJSON } from './tags'; @@ -8,4 +9,5 @@ export interface ApiSearchResultsJSON { accounts: ApiAccountJSON[]; statuses: ApiStatusJSON[]; hashtags: ApiHashtagJSON[]; + collections: ApiCollectionJSON[]; } diff --git a/app/javascript/mastodon/components/account_header/buttons.tsx b/app/javascript/mastodon/components/account_header/buttons.tsx index 7a5ca4332c..7d7f6e7d8b 100644 --- a/app/javascript/mastodon/components/account_header/buttons.tsx +++ b/app/javascript/mastodon/components/account_header/buttons.tsx @@ -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 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 { IconButton } from '../icon_button'; diff --git a/app/javascript/mastodon/components/account_header/name.tsx b/app/javascript/mastodon/components/account_header/name.tsx index 2b3f1907b4..b46e849765 100644 --- a/app/javascript/mastodon/components/account_header/name.tsx +++ b/app/javascript/mastodon/components/account_header/name.tsx @@ -7,17 +7,16 @@ import classNames from 'classnames'; import Overlay from 'react-overlays/esm/Overlay'; -import { showAlert } from '@/mastodon/actions/alerts'; import { useAccount } from '@/mastodon/hooks/useAccount'; 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 ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; import HelpIcon from '@/material-icons/400-24px/help.svg?react'; import DomainIcon from '@/material-icons/400-24px/language.svg?react'; import { FollowsYouBadge } from '../badge'; -import { Button } from '../button'; +import { CopyButton } from '../copy_button'; import { DisplayName } from '../display_name'; import { Icon } from '../icon'; @@ -90,17 +89,6 @@ const AccountNameHelp: FC<{ 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 ( <> + )} diff --git a/app/javascript/mastodon/components/copy_button.tsx b/app/javascript/mastodon/components/copy_button.tsx new file mode 100644 index 0000000000..1812054d42 --- /dev/null +++ b/app/javascript/mastodon/components/copy_button.tsx @@ -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, + '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 ( + + ); +}; + +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 ( + + ); +}; diff --git a/app/javascript/mastodon/components/copy_icon_button.tsx b/app/javascript/mastodon/components/copy_icon_button.tsx deleted file mode 100644 index 51cffe6292..0000000000 --- a/app/javascript/mastodon/components/copy_icon_button.tsx +++ /dev/null @@ -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 ( - - ); -}; diff --git a/app/javascript/mastodon/components/empty_state/empty_state.module.scss b/app/javascript/mastodon/components/empty_state/empty_state.module.scss index 64d9a4e584..cb2332aec6 100644 --- a/app/javascript/mastodon/components/empty_state/empty_state.module.scss +++ b/app/javascript/mastodon/components/empty_state/empty_state.module.scss @@ -13,8 +13,7 @@ .content { max-width: 370px; - svg, - img { + :where(svg, img) { width: 200px; aspect-ratio: 1; object-fit: contain; @@ -22,16 +21,10 @@ margin-bottom: 16px; } - h3 { - font-size: 17px; - font-weight: 500; - text-wrap: balance; - line-height: 1.2; - } - p { margin-top: 8px; font-size: 15px; + line-height: 1.4; color: var(--color-text-secondary); 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 { --color-skin-1: #3a3a50; --color-skin-2: #67678e; diff --git a/app/javascript/mastodon/components/empty_state/empty_state.stories.tsx b/app/javascript/mastodon/components/empty_state/empty_state.stories.tsx index 83fce03468..c1faaf6f39 100644 --- a/app/javascript/mastodon/components/empty_state/empty_state.stories.tsx +++ b/app/javascript/mastodon/components/empty_state/empty_state.stories.tsx @@ -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 = { args: { ...Default.args, diff --git a/app/javascript/mastodon/components/empty_state/index.tsx b/app/javascript/mastodon/components/empty_state/index.tsx index e332aaedb5..3f0738ce5a 100644 --- a/app/javascript/mastodon/components/empty_state/index.tsx +++ b/app/javascript/mastodon/components/empty_state/index.tsx @@ -4,10 +4,15 @@ import classNames from 'classnames'; import ElephantImage from '@/images/elephant_ui.svg?react'; +import { GIF } from '../gif'; + import classes from './empty_state.module.scss'; const images = { default: , + error: ( + + ), }; /** @@ -21,6 +26,7 @@ export const EmptyState: React.FC<{ title?: React.ReactNode; message?: React.ReactNode; children?: React.ReactNode; + headingLevel?: 'h2' | 'h3' | 'h4'; className?: string; }> = ({ image = 'default', @@ -29,6 +35,7 @@ export const EmptyState: React.FC<{ ), message, children, + headingLevel: Heading = 'h2', className, }) => { const imageToRender = typeof image === 'string' ? images[image] : image; @@ -38,7 +45,7 @@ export const EmptyState: React.FC<{ {(title || message || imageToRender) && (
    {imageToRender} - {!!title &&

    {title}

    } + {!!title && {title}} {!!message &&

    {message}

    }
    )} diff --git a/app/javascript/mastodon/components/form_fields/copy_link_field.tsx b/app/javascript/mastodon/components/form_fields/copy_link_field.tsx index d772315ade..ab8849d45a 100644 --- a/app/javascript/mastodon/components/form_fields/copy_link_field.tsx +++ b/app/javascript/mastodon/components/form_fields/copy_link_field.tsx @@ -4,7 +4,7 @@ import { useIntl } from 'react-intl'; 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 { FormFieldWrapper } from './form_field_wrapper'; diff --git a/app/javascript/mastodon/components/gif.tsx b/app/javascript/mastodon/components/gif.tsx index 1cc0881a5a..7bce985784 100644 --- a/app/javascript/mastodon/components/gif.tsx +++ b/app/javascript/mastodon/components/gif.tsx @@ -4,7 +4,7 @@ import { autoPlayGif } from 'mastodon/initial_state'; export const GIF: React.FC<{ src: string; staticSrc: string; - className: string; + className?: string; animate?: boolean; }> = ({ src, staticSrc, className, animate = autoPlayGif }) => { const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate); diff --git a/app/javascript/mastodon/features/account_edit/components/column.tsx b/app/javascript/mastodon/features/account_edit/components/column.tsx index a9b0f8cbd5..2718aab7f2 100644 --- a/app/javascript/mastodon/features/account_edit/components/column.tsx +++ b/app/javascript/mastodon/features/account_edit/components/column.tsx @@ -9,7 +9,7 @@ import { Helmet } from '@unhead/react/helmet'; import { Column } from '@/mastodon/components/column'; import { ColumnHeader } from '@/mastodon/components/column_header'; 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 classes from '../styles.module.scss'; diff --git a/app/javascript/mastodon/features/account_featured/index.tsx b/app/javascript/mastodon/features/account_featured/index.tsx index 3082f19abc..bccdddeda8 100644 --- a/app/javascript/mastodon/features/account_featured/index.tsx +++ b/app/javascript/mastodon/features/account_featured/index.tsx @@ -19,7 +19,7 @@ import { } from '@/mastodon/components/scrollable_list/components'; import type { TruncatedListItemInfo } 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 { useAccount } from '@/mastodon/hooks/useAccount'; import { useAccountId } from '@/mastodon/hooks/useAccountId'; diff --git a/app/javascript/mastodon/features/account_gallery/index.tsx b/app/javascript/mastodon/features/account_gallery/index.tsx index feba6f454d..25ad8c88c1 100644 --- a/app/javascript/mastodon/features/account_gallery/index.tsx +++ b/app/javascript/mastodon/features/account_gallery/index.tsx @@ -11,7 +11,7 @@ import { ColumnBackButton } from '@/mastodon/components/column_back_button'; import { LimitedAccountHint } from '@/mastodon/components/limited_account_hint'; import { RemoteHint } from '@/mastodon/components/remote_hint'; 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 { useAccountId } from '@/mastodon/hooks/useAccountId'; import { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility'; diff --git a/app/javascript/mastodon/features/account_timeline/index.tsx b/app/javascript/mastodon/features/account_timeline/index.tsx index ce1e99a45f..450236386a 100644 --- a/app/javascript/mastodon/features/account_timeline/index.tsx +++ b/app/javascript/mastodon/features/account_timeline/index.tsx @@ -19,7 +19,7 @@ import { LimitedAccountHint } from '@/mastodon/components/limited_account_hint'; import { LoadingIndicator } from '@/mastodon/components/loading_indicator'; import { RemoteHint } from '@/mastodon/components/remote_hint'; 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 { useAccountId, useCurrentAccountId, diff --git a/app/javascript/mastodon/features/compose/components/search.tsx b/app/javascript/mastodon/features/compose/components/search.tsx index 9c7baf5021..8fa2a5db47 100644 --- a/app/javascript/mastodon/features/compose/components/search.tsx +++ b/app/javascript/mastodon/features/compose/components/search.tsx @@ -19,6 +19,7 @@ import { useHistory } from 'react-router-dom'; import { isFulfilled } from '@reduxjs/toolkit'; +import { getCollectionPath } from '@/mastodon/features/collections/utils'; import CancelIcon from '@/material-icons/400-24px/cancel-fill.svg?react'; import CloseIcon from '@/material-icons/400-24px/close.svg?react'; import SearchIcon from '@/material-icons/400-24px/search.svg?react'; @@ -337,6 +338,10 @@ export const Search: React.FC<{ history.push( `/@${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), + ); } } diff --git a/app/javascript/mastodon/features/followers/components/list.tsx b/app/javascript/mastodon/features/followers/components/list.tsx index 6c600d570f..3c593e10b8 100644 --- a/app/javascript/mastodon/features/followers/components/list.tsx +++ b/app/javascript/mastodon/features/followers/components/list.tsx @@ -6,7 +6,7 @@ import { Column } from '@/mastodon/components/column'; import { ColumnBackButton } from '@/mastodon/components/column_back_button'; import { LoadingIndicator } from '@/mastodon/components/loading_indicator'; 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 { useAccountVisibility } from '@/mastodon/hooks/useAccountVisibility'; import { useLayout } from '@/mastodon/hooks/useLayout'; diff --git a/app/javascript/mastodon/features/getting_started/index.tsx b/app/javascript/mastodon/features/getting_started/index.tsx index 5497b2de89..84c786fa06 100644 --- a/app/javascript/mastodon/features/getting_started/index.tsx +++ b/app/javascript/mastodon/features/getting_started/index.tsx @@ -4,16 +4,14 @@ import { Helmet } from '@unhead/react/helmet'; import { Column } from 'mastodon/components/column'; -import { NavigationPanel, messages } from '../navigation_panel'; +import { NavigationPanel } from '../navigation_panel'; import { LinkFooter } from '../ui/components/link_footer'; const GettingStarted: React.FC = () => { const intl = useIntl(); return ( - + diff --git a/app/javascript/mastodon/features/navigation_panel/index.tsx b/app/javascript/mastodon/features/navigation_panel/index.tsx index 9ac2ee461e..a734cb882b 100644 --- a/app/javascript/mastodon/features/navigation_panel/index.tsx +++ b/app/javascript/mastodon/features/navigation_panel/index.tsx @@ -60,7 +60,7 @@ import { MoreLink } from './components/more_link'; import { SignInBanner } from './components/sign_in_banner'; import { Trends } from './components/trends'; -export const messages = defineMessages({ +const messages = defineMessages({ home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, notifications: { id: 'tabs_bar.notifications', @@ -238,7 +238,10 @@ export const NavigationPanel: React.FC<{ multiColumn?: boolean }> = ({ } return ( -
    + ); }; export const CollapsibleNavigationPanel: React.FC = () => { - const intl = useIntl(); const open = useAppSelector((state) => state.navigation.open); const dispatch = useAppDispatch(); const openable = useBreakpoint('openable'); @@ -534,8 +536,7 @@ export const CollapsibleNavigationPanel: React.FC = () => { const showOverlay = openable && open; return ( - +
    ); }; diff --git a/app/javascript/mastodon/features/terms_of_service/index.tsx b/app/javascript/mastodon/features/terms_of_service/index.tsx index 669fb18b92..0a7c2d5669 100644 --- a/app/javascript/mastodon/features/terms_of_service/index.tsx +++ b/app/javascript/mastodon/features/terms_of_service/index.tsx @@ -14,7 +14,7 @@ import { Helmet } from '@unhead/react/helmet'; import { apiGetTermsOfService } from 'mastodon/api/instance'; import type { ApiTermsOfServiceJSON } from 'mastodon/api_types/instance'; 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({ title: { id: 'terms_of_service.title', defaultMessage: 'Terms of Service' }, diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx b/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx deleted file mode 100644 index 81fb8f48c7..0000000000 --- a/app/javascript/mastodon/features/ui/components/bundle_column_error.jsx +++ /dev/null @@ -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 ( - - ); - } - -} - -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 = ; - body = ; - break; - case 'network': - title = ; - body = ; - break; - case 'error': - title = ; - body = ; - break; - } - - return ( - -
    - - -
    -

    {title}

    -

    {body}

    - -
    - {errorType === 'network' && } - {errorType === 'error' && } - -
    -
    -
    - - - - -
    - ); - } - -} - -export default injectIntl(BundleColumnError); diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error/index.tsx b/app/javascript/mastodon/features/ui/components/bundle_column_error/index.tsx new file mode 100644 index 0000000000..f4acb3059f --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error/index.tsx @@ -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 = ({ + errorType = 'routing', + onRetry, + multiColumn, + stacktrace, +}) => { + let title, body; + + switch (errorType) { + case 'routing': + title = ( + + ); + body = ( + + ); + break; + case 'network': + title = ( + + ); + body = ( + + ); + break; + case 'error': + title = ( + + ); + body = ( + + ); + break; + } + + return ( + + +
    + {errorType === 'network' && onRetry && ( + + )} + {errorType === 'error' && stacktrace && ( + + + + )} + + + +
    +
    + + + + +
    + ); +}; + +// eslint-disable-next-line import/no-default-export +export default BundleColumnError; diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error/styles.module.scss b/app/javascript/mastodon/features/ui/components/bundle_column_error/styles.module.scss new file mode 100644 index 0000000000..62549efffc --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error/styles.module.scss @@ -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; +} diff --git a/app/javascript/mastodon/features/ui/components/columns_area.tsx b/app/javascript/mastodon/features/ui/components/columns_area.tsx index f5ab3de849..cd94f34ec0 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.tsx +++ b/app/javascript/mastodon/features/ui/components/columns_area.tsx @@ -33,7 +33,7 @@ import { import { useColumnsContext } from '../util/columns_context'; import Bundle from './bundle'; -import BundleColumnError from './bundle_column_error'; +import { BundleColumnError } from './bundle_column_error'; import { ColumnLoading } from './column_loading'; import { ComposePanel, RedirectToMobileComposeIfNeeded } from './compose_panel'; import DrawerLoading from './drawer_loading'; diff --git a/app/javascript/mastodon/features/ui/components/link_footer.tsx b/app/javascript/mastodon/features/ui/components/link_footer.tsx index 1f4ee7cde9..2b73bad152 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.tsx +++ b/app/javascript/mastodon/features/ui/components/link_footer.tsx @@ -29,6 +29,7 @@ export const LinkFooter: React.FC<{ id='footer.about_this_server' defaultMessage='About' /> + {domain}
  • {statusPageUrl && ( @@ -82,6 +83,7 @@ export const LinkFooter: React.FC<{
  • + Mastodon
  • diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index b35f29e6b0..cfd6160b92 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -86,18 +86,22 @@ "account.locked_info": "تم ضبط حالة خصوصية هذا الحساب على أنه مؤمّن. إذ يراجع صاحبه يدويًا من يُسمح له بالمتابعة.", "account.media": "وسائط", "account.mention": "أذكُر @{name}", + "account.menu.add_to_collection": "إضافة إلى المجموعة…", "account.menu.add_to_list": "إضافة إلى القائمة…", "account.menu.block": "حظر الحساب", "account.menu.block_domain": "حظر {domain}", "account.menu.copied": "تم نسخ رابط الحساب إلى الحافظة", "account.menu.copy": "نسخ الرابط", "account.menu.direct": "إشارة خاصة لـ", + "account.menu.hide_reblogs": "إخفاء التعزيزات في الجدول الزمني", "account.menu.mention": "إشارة", "account.menu.mute": "كتم الحساب", "account.menu.note.description": "مرئي لك فقط", + "account.menu.open_original_page": "عرض على {domain}", "account.menu.remove_follower": "إزالة المتابِع", "account.menu.report": "الإبلاغ عن الحساب", "account.menu.share": "مشاركة…", + "account.menu.show_reblogs": "عرض التعزيزات في الجدول الزمني", "account.menu.unblock": "رفع الحظر عن الحساب", "account.menu.unblock_domain": "رفع الحظر عن {domain}", "account.menu.unmute": "إلغاء كتم الحساب", @@ -108,8 +112,15 @@ "account.muted": "مَكتوم", "account.mutual": "أنتم تتابعون بعضكم البعض", "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.no_bio": "لم يتم تقديم وصف.", + "account.node_modal.callout": "الملاحظات الشخصية لا يراها سواك.", "account.node_modal.edit_title": "تعديل الملاحظة الشخصية", "account.node_modal.error_unknown": "تعذر حفظ الملاحظة", "account.node_modal.field_label": "ملاحظة شخصية", @@ -118,6 +129,7 @@ "account.note.edit_button": "تعديل", "account.note.title": "ملاحظة شخصية (مرئية لك فقط)", "account.open_original_page": "افتح الصفحة الأصلية", + "account.pending": "معلّق", "account.posts": "منشورات", "account.remove_from_followers": "إزالة {name} من المتابعين", "account.report": "الإبلاغ عن @{name}", @@ -136,10 +148,12 @@ "account.unmute": "إلغاء الكَتم عن @{name}", "account.unmute_notifications_short": "إلغاء كَتم الإشعارات", "account.unmute_short": "إلغاء الكتم", + "account_edit.advanced_settings.bot_hint": "أعلِم الآخرين بأن الحساب يجري إجراءات آلية بشكلٍ أساسي وقد لا تتم مراقبته", "account_edit.advanced_settings.bot_label": "حساب آلي", "account_edit.advanced_settings.title": "الإعدادات المتقدمة", "account_edit.bio.add_label": "إضافة سيرة ذاتية", "account_edit.bio.edit_label": "تعديل السيرة الذاتية", + "account_edit.bio.placeholder": "أضف مقدّمة قصيرة لمساعدة الآخرين على التعرف عليك.", "account_edit.bio.title": "نبذة عنك", "account_edit.bio_modal.add_title": "إضافة سيرة ذاتية", "account_edit.bio_modal.edit_title": "تعديل السيرة الذاتية", @@ -149,30 +163,50 @@ "account_edit.custom_fields.edit_label": "تعديل الحقل", "account_edit.custom_fields.placeholder": "أضف ضمائر أو روابط خارجية أو أي شيء آخر ترغب في مشاركته.", "account_edit.custom_fields.reorder_button": "إعادة ترتيب الحقول", + "account_edit.custom_fields.tip_content": "يمكنك بسهولة إضافة مصداقية إلى حسابك على منصة ماستودون عن طريق التحقق من الروابط المؤدّية إلى أي مواقع ويب تملكها.", "account_edit.custom_fields.tip_title": "نصيحة: إضافة روابط متحقق منها", "account_edit.custom_fields.title": "الحقول المخصصة", "account_edit.custom_fields.verified_hint": "كيف يمكنني إضافة رابط متحقق منه؟", "account_edit.display_name.add_label": "إضافة اسم علني", "account_edit.display_name.edit_label": "تعديل الاسم العلني", + "account_edit.display_name.placeholder": "اسم العرض الخاص بك هو كيف يظهر اسمك في ملفك الشخصي وفي الجداول الزمنية.", "account_edit.display_name.title": "الاسم العلني", "account_edit.featured_hashtags.edit_label": "إضافة وسوم", + "account_edit.featured_hashtags.placeholder": "ساعد الآخرين في تحديد مواضيعك المفضلة والوصول إليها بسرعة.", "account_edit.featured_hashtags.title": "الوسوم المروّجة", "account_edit.field_actions.delete": "حذف الحقل", "account_edit.field_actions.edit": "تعديل الحقل", + "account_edit.field_delete_modal.confirm": "هل أنت متأكد من رغبتك في حذف هذا الحقل المخصص؟ لا يمكن التراجع عن هذا الإجراء.", "account_edit.field_delete_modal.delete_button": "حذف", "account_edit.field_delete_modal.title": "أتريد حذف الحقل المخصص؟", "account_edit.field_edit_modal.add_title": "إضافة حقل مخصص", "account_edit.field_edit_modal.discard_confirm": "تجاهل", + "account_edit.field_edit_modal.discard_message": "لديك تغييرات غير محفوظة. هل أنت متأكد من رغبتك في حذفها؟", "account_edit.field_edit_modal.edit_title": "تعديل الحقل المخصص", + "account_edit.field_edit_modal.length_warning": "تم تجاوز الحد الأقصى الموصّى به لعدد الأحرف. قد لا يرى مستخدمو الهواتف الجوّالة حقل النص بالكامل.", + "account_edit.field_edit_modal.link_emoji_warning": "لا ننصح باستخدام الرموز التعبيرية المخصصة مع عناوين المواقع الإلكترونية. ستظهر الحقول المخصصة التي تحتوي على كليهما كنص فقط بدلًا من رابط، وذلك لتجنب إرباك المستخدم.", "account_edit.field_edit_modal.name_hint": "على سبيل المثال \"الموقع الشخصي\"", "account_edit.field_edit_modal.name_label": "التسمية", "account_edit.field_edit_modal.url_warning": "لإضافة رابط ، يرجى تضمين {protocol} في البداية.", "account_edit.field_edit_modal.value_hint": "على سبيل المثال \"https://example.me\"", "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.details_content": "افعل:
    • صِف نفسك كما في الصورة
    • استخدِم ضمير الغائب (مثلًا ”ألِكس“ بدلًا من ”أنا“)
    • كُن موجزًا – بضع كلمات تكفي غالبًا
    لا تفعل:
    • ابدأ بـ”صورة لـ“ – فهذا غير ضروري لقارئات الشاشة
    مثال:
    • ”ألِكس يرتدي قميصًا أخضر ونظّارة“
    ", + "account_edit.image_alt_modal.details_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_delete_modal.confirm": "هل أنت متأكد من رغبتك في حذف هذه الصورة؟ لا يمكن التراجع عن هذا الإجراء.", "account_edit.image_delete_modal.delete_button": "حذف", + "account_edit.image_delete_modal.title": "حذف الصورة؟", "account_edit.image_edit.add_button": "إضافة صورة", "account_edit.image_edit.alt_add_button": "إضافة نص بديل", "account_edit.image_edit.alt_edit_button": "تعديل نص بديل", @@ -180,7 +214,21 @@ "account_edit.image_edit.replace_button": "استبدال الصورة", "account_edit.item_list.delete": "حذف {name}", "account_edit.item_list.edit": "تعديل {name}", + "account_edit.name_modal.add_title": "إضافة اسم عرض", + "account_edit.name_modal.edit_title": "تعديل اسم العرض", "account_edit.profile_tab.button_label": "تخصيص", + "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.upload_modal.back": "العودة", "account_edit.upload_modal.done": "تمّ", @@ -189,12 +237,27 @@ "account_edit.upload_modal.step_upload.button": "تصفح الملفات", "account_edit.upload_modal.step_upload.dragging": "إسقاط للتحميل", "account_edit.upload_modal.step_upload.header": "اختيار صورة", + "account_edit.upload_modal.step_upload.hint": "بصيغة WEBP أو PNG أو GIF أو JPG، حتى {limit} ميجابايت.{br} سيتم تغيير حجم الصورة إلى {width}×{height} بكسل.", "account_edit.upload_modal.title_add.avatar": "إضافة صورة الملف الشخصي", "account_edit.upload_modal.title_add.header": "إضافة صورة الغلاف", "account_edit.upload_modal.title_replace.avatar": "استبدال صورة الملف الشخصي", "account_edit.upload_modal.title_replace.header": "استبدال صورة الغلاف", + "account_edit.verified_modal.details": "أضف مصداقية إلى ملفك الشخصي على ماستودون من خلال التحقق من الروابط المؤدية إلى مواقعك الإلكترونية الشخصية. إليك كيفية عمل ذلك:", + "account_edit.verified_modal.invisible_link.details": "أضف الرابط إلى ترويسة صفحتك. الجزء المهم هو rel=\"me\" الذي يمنع انتحال الهوية على المواقع الإلكترونية التي تحتوي على محتوى من إنشاء المستخدمين. يمكنك حتى استخدام وسم الرابط في ترويسة الصفحة بدلًا من {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.column_title": "تعديل الوسوم", + "account_edit_tags.help_text": "تساعد الهاشتاجات المميّزة المستخدمين على اكتشاف ملفك الشخصي والتفاعل معه. وتظهر هذه الهاشتاجات كمرشّحات في صفحة النشاطات الخاصة بملفك الشخصي.", + "account_edit_tags.max_tags_reached": "لقد وصلت إلى الحد الأقصى لعدد الهاشتاجات المميّزة.", + "account_edit_tags.search_placeholder": "أدخِل هاشتاج…", "account_edit_tags.suggestions": "الاقتراحات:", + "account_edit_tags.tag_status_count": "{count, plural, one {# منشور} two {# منشورَين} few {# منشورات} many {# منشور} other {# منشور}}", + "account_list.hidden_notice": "هذا المحتوى مرئي لك فقط. لعرض هذه القائمة للآخرين، انتقِل إلى {page} > {modal} > {field}.", + "account_list.total": "{total, plural, one {# حساب} two {# حسابَين} few {# حسابات} many {# حساب} other {# حساب}}", "admin.dashboard.daily_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالأيام", "admin.dashboard.monthly_retention": "معدّل بقاء المستخدمين بعد إنشاء الحسابات، بالشهور", "admin.dashboard.retention.average": "المعدل", @@ -217,27 +280,63 @@ "alt_text_modal.describe_for_people_with_visual_impairments": "قم بوصفها للأشخاص ذوي الإعاقة البصرية…", "alt_text_modal.done": "تمّ", "announcement.announcement": "إعلان", + "annual_report.announcement.action_build": "بناء الملخّص الخاص بي", "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.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.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.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.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_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.percentile.text": "هذا يجعلك من بين أكثر مستخدمي {domain} نشاطاً ", "annual_report.summary.percentile.we_wont_tell_bernie": "سيبقى هذا الأمر بيننا.", "annual_report.summary.share_elsewhere": "شاركها في مكان آخر", + "annual_report.summary.share_message": "حصلتُ على نمط {archetype}!", "annual_report.summary.share_on_mastodon": "شاركها على ماستدون", "attachments_list.unprocessed": "(غير معالَج)", "audio.hide": "إخفاء المقطع الصوتي", + "block_modal.no_collections": "لا يمكن لأيٍّ منكما إضافة الآخر إلى المجموعات. سيتمّ حذفكما تلقائيًّا من مجموعات بعضكما البعض الحالية، إن وُجدت.", "block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.", "block_modal.show_less": "تفاصيل أقلّ", "block_modal.show_more": "تفاصيل أكثر", + "block_modal.they_cant_mention": "لا يجوز لكم ذكر بعضكم البعض، أو متابعته، أو الاقتباس منه.", + "block_modal.they_cant_see_posts": "لا يمكنهم رؤية محتواك ولن ترى محتواه.", "block_modal.they_will_know": "سيعلم أنه قد حُظِر.", "block_modal.title": "أتريد حظر هذا المستخدم؟", + "block_modal.you_wont_see_mentions": "لن ترى منشورات من الآخرين تذكرهم.", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "boost_modal.reblog": "أتريد إعادة نشر المنشور؟", "boost_modal.undo_reblog": "أتريد إلغاء إعادة نشر المنشور؟", @@ -254,6 +353,10 @@ "bundle_modal_error.message": "حدث خطأ أثناء تحميل هذه الشاشة.", "bundle_modal_error.retry": "إعادة المُحاولة", "callout.dismiss": "تجاهل", + "carousel.current": "الشريحة {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_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.", "closed_registrations_modal.find_another_server": "ابحث على خادم آخر", @@ -261,6 +364,16 @@ "closed_registrations_modal.title": "إنشاء حساب على ماستدون", "collection.share_modal.share_link_label": "مشاركة الرابط", "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.by_account": "مِن {account_handle}", "collections.collection_description": "الوصف", @@ -268,17 +381,41 @@ "collections.collection_language_none": "لا شيء", "collections.collection_name": "الاسم", "collections.collection_topic": "الموضوع", + "collections.confirm_account_removal": "هل أنت متأكّد من رغبتك في إزالة هذا الحساب من هذه المجموعة؟", "collections.content_warning": "تحذير عن المحتوى", "collections.continue": "مواصلة", "collections.copy_link": "نسخ الرابط", "collections.copy_link_confirmation": "نسخ الرابط إلى الحافظة", + "collections.create.accounts_title": "من ستضمّ في هذه المجموعة؟", "collections.create.basic_details_title": "المعلومات الأساسية", "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.sensitive_content": "محتوى حساس", + "collections.detail.sensitive_note": "قد لا يكون الوصف والحسابات مناسبة لجميع المشاهدين.", + "collections.detail.share": "مشاركة هذه المجموعة", + "collections.detail.you_are_in_this_collection": "أنت مضموم في هذه المجموعة", "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.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.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.sensitive": "حساس", "collections.share_short": "مشاركة", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 71cb3a553f..1fff2a1fc7 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Скапіяваць спасылку ў буфер абмену", "copypaste.copied": "Скапіравана", "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.local": "Толькі з {domain}", "directory.new_arrivals": "Новыя карыстальнікі", @@ -908,6 +914,7 @@ "navigation_bar.live_feed_local": "Жывая стужка (лакальная)", "navigation_bar.live_feed_public": "Жывая стужка (публічная)", "navigation_bar.logout": "Выйсці", + "navigation_bar.main": "Галоўная", "navigation_bar.moderation": "Мадэрацыя", "navigation_bar.more": "Больш", "navigation_bar.mutes": "Ігнараваныя карыстальнікі", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "Меню", "tabs_bar.notifications": "Апавяшчэнні", "tabs_bar.publish": "Новы допіс", + "tabs_bar.quick_links": "Хуткія спасылкі", "tabs_bar.search": "Пошук", "tag.remove": "Выдаліць", "terms_of_service.effective_as_of": "Дзейнічае да {date}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 93b6dddbf9..c9e86a3ae3 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Kopiér link til udklipsholderen", "copypaste.copied": "Kopieret", "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.local": "Kun fra {domain}", "directory.new_arrivals": "Nyankomne", @@ -908,6 +914,7 @@ "navigation_bar.live_feed_local": "Live feed (lokalt)", "navigation_bar.live_feed_public": "Live feed (offentligt)", "navigation_bar.logout": "Log af", + "navigation_bar.main": "Primær", "navigation_bar.moderation": "Moderering", "navigation_bar.more": "Mere", "navigation_bar.mutes": "Skjulte brugere", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Notifikationer", "tabs_bar.publish": "Nyt indlæg", + "tabs_bar.quick_links": "Hurtig-links", "tabs_bar.search": "Søg", "tag.remove": "Fjern", "terms_of_service.effective_as_of": "Gældende pr. {date}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 14c4f48171..76767a271e 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -429,7 +429,7 @@ "collections.share_short": "Teilen", "collections.sort_alphabetical": "Alphabetisch", "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_most_followers": "Followerzahl", "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", "copypaste.copied": "Kopiert", "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.local": "Nur von dieser Domain {domain}", "directory.new_arrivals": "Neue Profile", @@ -908,6 +914,7 @@ "navigation_bar.live_feed_local": "Live-Feed (Dieser Server)", "navigation_bar.live_feed_public": "Live-Feed (Alle Server)", "navigation_bar.logout": "Abmelden", + "navigation_bar.main": "Hauptmenü", "navigation_bar.moderation": "Moderation", "navigation_bar.more": "Mehr", "navigation_bar.mutes": "Stummgeschaltete Profile", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "Menü", "tabs_bar.notifications": "Benachrichtigungen", "tabs_bar.publish": "Neuer Beitrag", + "tabs_bar.quick_links": "Schnellzugriff", "tabs_bar.search": "Suche", "tag.remove": "Entfernen", "terms_of_service.effective_as_of": "Gültig ab {date}", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index c1d0390320..745e23c335 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Αντιγραφή συνδέσμου στο πρόχειρο", "copypaste.copied": "Αντιγράφηκε", "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.local": "Μόνο από {domain}", "directory.new_arrivals": "Νέες αφίξεις", @@ -805,7 +811,7 @@ "keyboard_shortcuts.column": "Εστίαση στη στήλη", "keyboard_shortcuts.compose": "Εστίαση στην περιοχή συγγραφής κειμένου", "keyboard_shortcuts.description": "Περιγραφή", - "keyboard_shortcuts.direct": "Άνοιγμα της στήλης ιδιωτικών επισημάνσεων", + "keyboard_shortcuts.direct": "Άνοιγμα στήλης ιδιωτικών επισημάνσεων", "keyboard_shortcuts.down": "Μετακίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "Άνοιγμα ανάρτησης", "keyboard_shortcuts.explore": "Άνοιγμα χρονολογίου τάσεων", @@ -829,9 +835,9 @@ "keyboard_shortcuts.reply": "Απάντηση στην ανάρτηση", "keyboard_shortcuts.requests": "Άνοιγμα λίστας αιτημάτων ακολούθησης", "keyboard_shortcuts.search": "Εστίαση στη γραμμή αναζήτησης", - "keyboard_shortcuts.spoilers": "Εμφάνιση/απόκρυψη πεδίου CW", + "keyboard_shortcuts.spoilers": "Εμφάνιση/απόκρυψη πεδίου προειδοποίησης περιεχομένου (CW)", "keyboard_shortcuts.start": "Άνοιγμα της στήλης \"Ας ξεκινήσουμε\"", - "keyboard_shortcuts.toggle_hidden": "Εμφάνιση/απόκρυψη κειμένου πίσω από το CW", + "keyboard_shortcuts.toggle_hidden": "Εμφάνιση/απόκρυψη κειμένου πίσω από προειδοποίηση περιεχομένου (CW)", "keyboard_shortcuts.toggle_sensitivity": "Εμφάνιση/απόκρυψη πολυμέσων", "keyboard_shortcuts.toot": "Δημιουργία νέας ανάρτησης", "keyboard_shortcuts.top": "Μετακίνηση στην κορυφή της λίστας", @@ -908,6 +914,7 @@ "navigation_bar.live_feed_local": "Ζωντανή ροή (τοπική)", "navigation_bar.live_feed_public": "Ζωντανή ροή (δημόσια)", "navigation_bar.logout": "Αποσύνδεση", + "navigation_bar.main": "Κύρια", "navigation_bar.moderation": "Συντονισμός", "navigation_bar.more": "Περισσότερα", "navigation_bar.mutes": "Αποσιωπημένοι χρήστες", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "Μενού", "tabs_bar.notifications": "Ειδοποιήσεις", "tabs_bar.publish": "Νέα Ανάρτηση", + "tabs_bar.quick_links": "Γρήγοροι σύνδεσμοι", "tabs_bar.search": "Αναζήτηση", "tag.remove": "Αφαίρεση", "terms_of_service.effective_as_of": "Ενεργό από {date}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index fddee1f6d4..4cf1086871 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Copiar enlace al portapapeles", "copypaste.copied": "Copiado", "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.local": "Solo de {domain}", "directory.new_arrivals": "Recién llegados", @@ -908,6 +914,7 @@ "navigation_bar.live_feed_local": "Línea temporal (local)", "navigation_bar.live_feed_public": "Línea temporal (federada)", "navigation_bar.logout": "Cerrar sesión", + "navigation_bar.main": "Principal", "navigation_bar.moderation": "Moderación", "navigation_bar.more": "Más", "navigation_bar.mutes": "Usuarios silenciados", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "Menú", "tabs_bar.notifications": "Notificaciones", "tabs_bar.publish": "Nuevo mensaje", + "tabs_bar.quick_links": "Enlaces rápidos", "tabs_bar.search": "Buscar", "tag.remove": "Quitar", "terms_of_service.effective_as_of": "Efectivo a partir de {date}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 6714d97b23..2d9d8493d6 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -367,8 +367,8 @@ "collection.share_modal.share_via_system": "Compartir con…", "collection.share_modal.title": "Compartir la 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_own": "Mira mi nueva colección:", + "collection.share_template_other": "Echa un vistazo a esta genial colección:", + "collection.share_template_own": "Echa un vistazo a mi nueva colección:", "collections.account_count": "{count, plural,one {# cuenta} other {# cuentas}}", "collections.accounts.empty_description": "Añade hasta {count} cuentas", "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_public": "Cronología pública", "navigation_bar.logout": "Cerrar sesión", + "navigation_bar.main": "Principal", "navigation_bar.moderation": "Moderación", "navigation_bar.more": "Más", "navigation_bar.mutes": "Usuarios silenciados", @@ -1305,6 +1306,7 @@ "tabs_bar.menu": "Menú", "tabs_bar.notifications": "Notificaciones", "tabs_bar.publish": "Nueva publicación", + "tabs_bar.quick_links": "Enlaces rápidos", "tabs_bar.search": "Buscar", "tag.remove": "Eliminar", "terms_of_service.effective_as_of": "En vigor a partir del {date}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 283da08a4f..e685ccf1c8 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -59,7 +59,7 @@ "account.follow_request_cancel_short": "Cancelar", "account.follow_request_short": "Solicitar", "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_you_know_counter": "{counter} que conoces", "account.following": "Siguiendo", @@ -908,6 +908,7 @@ "navigation_bar.live_feed_local": "Cronología local", "navigation_bar.live_feed_public": "Cronología pública", "navigation_bar.logout": "Cerrar sesión", + "navigation_bar.main": "Principal", "navigation_bar.moderation": "Moderación", "navigation_bar.more": "Más", "navigation_bar.mutes": "Usuarios silenciados", @@ -1305,6 +1306,7 @@ "tabs_bar.menu": "Menú", "tabs_bar.notifications": "Notificaciones", "tabs_bar.publish": "Nueva Publicación", + "tabs_bar.quick_links": "Enlaces rápidos", "tabs_bar.search": "Buscar", "tag.remove": "Eliminar", "terms_of_service.effective_as_of": "En vigor a partir del {date}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index de63948162..cc31f5c45b 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Kopioi linkki leikepöydälle", "copypaste.copied": "Kopioitu", "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.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", @@ -1305,6 +1311,7 @@ "tabs_bar.menu": "Valikko", "tabs_bar.notifications": "Ilmoitukset", "tabs_bar.publish": "Uusi julkaisu", + "tabs_bar.quick_links": "Pikalinkit", "tabs_bar.search": "Haku", "tag.remove": "Poista", "terms_of_service.effective_as_of": "Tulee voimaan {date}", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index a2969fe6f8..906af6352b 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier", "copypaste.copied": "Copié", "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.local": "De {domain} seulement", "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_public": "Flux en direct (public)", "navigation_bar.logout": "Se déconnecter", + "navigation_bar.main": "Accueil", "navigation_bar.moderation": "Modération", "navigation_bar.more": "Plus", "navigation_bar.mutes": "Utilisateurs masqués", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Notifications", "tabs_bar.publish": "Nouveau message", + "tabs_bar.quick_links": "Accès rapides", "tabs_bar.search": "Chercher", "tag.remove": "Supprimer", "terms_of_service.effective_as_of": "En vigueur à compter du {date}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 9fa3189420..90341ac6de 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier", "copypaste.copied": "Copié", "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.local": "De {domain} seulement", "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_public": "Flux en direct (public)", "navigation_bar.logout": "Déconnexion", + "navigation_bar.main": "Accueil", "navigation_bar.moderation": "Modération", "navigation_bar.more": "Plus", "navigation_bar.mutes": "Comptes masqués", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Notifications", "tabs_bar.publish": "Nouveau message", + "tabs_bar.quick_links": "Accès rapides", "tabs_bar.search": "Chercher", "tag.remove": "Supprimer", "terms_of_service.effective_as_of": "En vigueur à compter du {date}", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 81ab906c87..ae4ec98b68 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -367,6 +367,8 @@ "collection.share_modal.share_via_system": "Comhroinn le…", "collection.share_modal.title": "Comhroinn bailiúchán", "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.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", @@ -906,6 +908,7 @@ "navigation_bar.live_feed_local": "Fotha beo (áitiúil)", "navigation_bar.live_feed_public": "Fotha beo (poiblí)", "navigation_bar.logout": "Logáil Amach", + "navigation_bar.main": "Príomh", "navigation_bar.moderation": "Measarthacht", "navigation_bar.more": "Tuilleadh", "navigation_bar.mutes": "Úsáideoirí balbhaithe", @@ -1303,6 +1306,7 @@ "tabs_bar.menu": "Roghchlár", "tabs_bar.notifications": "Fógraí", "tabs_bar.publish": "Post Nua", + "tabs_bar.quick_links": "Naisc thapa", "tabs_bar.search": "Cuardaigh", "tag.remove": "Bain", "terms_of_service.effective_as_of": "I bhfeidhm ó {date}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 216a6d1d1e..9cbf31fe1f 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -367,6 +367,8 @@ "collection.share_modal.share_via_system": "Compartir con…", "collection.share_modal.title": "Compartir 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.accounts.empty_description": "Engade ate {count} contas", "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", "copypaste.copied": "Copiado", "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.local": "Só de {domain}", "directory.new_arrivals": "Recén chegadas", @@ -906,6 +914,7 @@ "navigation_bar.live_feed_local": "En directo (local)", "navigation_bar.live_feed_public": "En directo (federada)", "navigation_bar.logout": "Pechar sesión", + "navigation_bar.main": "Inicio", "navigation_bar.moderation": "Moderación", "navigation_bar.more": "Máis", "navigation_bar.mutes": "Usuarias silenciadas", @@ -1303,6 +1312,7 @@ "tabs_bar.menu": "Menú", "tabs_bar.notifications": "Notificacións", "tabs_bar.publish": "Nova publicación", + "tabs_bar.quick_links": "Acceso rápido", "tabs_bar.search": "Buscar", "tag.remove": "Retirar", "terms_of_service.effective_as_of": "Con efecto desde o {date}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index af6e2cbdbc..79d20d07ce 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -367,6 +367,8 @@ "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, one {חשבון אחד} other {# חשבונות}}", "collections.accounts.empty_description": "להוסיף עד ל־{count} חשבונות", "collections.accounts.empty_editor_title": "אוסף זה ריק כרגע", @@ -582,6 +584,12 @@ "copy_icon_button.copy_this_text": "העתקת הקישור", "copypaste.copied": "הועתק", "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.local": "מ- {domain} בלבד", "directory.new_arrivals": "חדשים כאן", @@ -906,6 +914,7 @@ "navigation_bar.live_feed_local": "פיד ההודעות בזמן אמת (מקומי)", "navigation_bar.live_feed_public": "פיד ההודעות בזמן אמת (פומבי)", "navigation_bar.logout": "התנתקות", + "navigation_bar.main": "ראשי", "navigation_bar.moderation": "הנחיית דיונים", "navigation_bar.more": "עוד", "navigation_bar.mutes": "משתמשים בהשתקה", @@ -1303,6 +1312,7 @@ "tabs_bar.menu": "תפריט", "tabs_bar.notifications": "התראות", "tabs_bar.publish": "הודעה חדשה", + "tabs_bar.quick_links": "קישורים מהירים", "tabs_bar.search": "חיפוש", "tag.remove": "הסרה", "terms_of_service.effective_as_of": "בתוקף החל מתאריך {date}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 5f421e7fde..52a070728e 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -456,7 +456,7 @@ "column.domain_blocks": "Letiltott domainek", "column.edit_list": "Lista módosítása", "column.favourites": "Kedvencek", - "column.firehose": "Hírfolyamok", + "column.firehose": "Élő hírfolyamok", "column.firehose_local": "Élő hírfolyam a kiszolgálóhoz", "column.firehose_singular": "Élő hírfolyam", "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", "copypaste.copied": "Másolva", "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.local": "Csak {domain} tartományból", "directory.new_arrivals": "Új csatlakozók", @@ -1305,6 +1311,7 @@ "tabs_bar.menu": "Menü", "tabs_bar.notifications": "Értesítések", "tabs_bar.publish": "Új bejegyzés", + "tabs_bar.quick_links": "Gyors hivatkozások", "tabs_bar.search": "Keresés", "tag.remove": "Eltávolítás", "terms_of_service.effective_as_of": "Hatálybalépés dátuma: {date}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 2ffafd985b..da940775c5 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -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.media": "Myndefni", "account.mention": "Minnast á @{name}", + "account.menu.add_to_collection": "Bæta við í safn…", "account.menu.add_to_list": "Bæta á lista…", "account.menu.block": "Útiloka notandaaðgang", "account.menu.block_domain": "Útiloka {domain}", @@ -366,10 +367,13 @@ "collection.share_modal.share_via_system": "Deila með…", "collection.share_modal.title": "Deila safni", "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.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_title": "Þetta safn er tómt", + "collections.add_to_collection": "Bæta {name} við söfn", "collections.block_collection_owner": "Útiloka notandaaðgang", "collections.by_account": "frá {account_handle}", "collections.collection_description": "Lýsing", @@ -392,6 +396,7 @@ "collections.detail.loading": "Hleð inn safni…", "collections.detail.revoke_inclusion": "Fjarlægja mig", "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.you_are_in_this_collection": "Þú kemur fyrir í þessu safni", "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.sensitive": "Viðkvæmt", "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_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", @@ -574,6 +584,12 @@ "copy_icon_button.copy_this_text": "Afrita tengil á klippispjald", "copypaste.copied": "Afritað", "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.local": "Einungis frá {domain}", "directory.new_arrivals": "Nýkomnir", @@ -633,6 +649,7 @@ "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.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 í Kjörstillingar > Gagnaleynd og útbreiðsla", "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.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_public": "Bein streymi (opinber)", "navigation_bar.logout": "Útskráning", + "navigation_bar.main": "Aðalstýring", "navigation_bar.moderation": "Umsjón", "navigation_bar.more": "Meira", "navigation_bar.mutes": "Þaggaðir notendur", @@ -1294,6 +1312,7 @@ "tabs_bar.menu": "Valmynd", "tabs_bar.notifications": "Tilkynningar", "tabs_bar.publish": "Ný færsla", + "tabs_bar.quick_links": "Flýtitenglar", "tabs_bar.search": "Leita", "tag.remove": "Fjarlægja", "terms_of_service.effective_as_of": "Gildir frá og með {date}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 9364e9bafb..080e25da4e 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -367,6 +367,8 @@ "collection.share_modal.share_via_system": "Condividi con…", "collection.share_modal.title": "Condividi la 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.accounts.empty_description": "Aggiungi fino a {count} account", "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", "copypaste.copied": "Copiato", "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.local": "Solo da {domain}", "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.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.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.popular_suggestion": "Suggerimento frequente", "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_public": "Feed in diretta (pubblico)", "navigation_bar.logout": "Disconnettiti", + "navigation_bar.main": "Menù principale", "navigation_bar.moderation": "Moderazione", "navigation_bar.more": "Altro", "navigation_bar.mutes": "Utenti silenziati", @@ -1303,6 +1312,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Notifiche", "tabs_bar.publish": "Nuovo post", + "tabs_bar.quick_links": "Collegamenti rapidi", "tabs_bar.search": "Cerca", "tag.remove": "Rimuovi", "terms_of_service.effective_as_of": "In vigore a partire dal giorno {date}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 46a0d6e564..a07c68efcb 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -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.media": "Timidyatin", "account.mention": "Bder-d @{name}", + "account.menu.add_to_collection": "Rnu-t ɣer telkensit…", "account.menu.add_to_list": "Rnu ɣer tebdart…", "account.menu.block": "Sewḥel amiḍan", "account.menu.block_domain": "Sewḥel {domain}", "account.menu.copied": "Aseɣwen n umiḍan yettwanɣel ɣer tecwafit", "account.menu.copy": "Nɣel aseɣwen", + "account.menu.direct": "Abdar uslig", "account.menu.mention": "Bder-d", "account.menu.mute": "Sgugem amiḍan", "account.menu.note.description": "Ad tettbin i kečč·mm kan", @@ -91,6 +93,7 @@ "account.menu.report": "Cetki ɣef umiḍan-a", "account.menu.share": "Zuzer…", "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.moved_to": "{name} yenna-d dakken amiḍan-is amaynut yuɣal :", "account.mute": "Sgugem @{name}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index ee326baf5f..567c586aff 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -1,29 +1,56 @@ { "about.blocks": "Модерирани сервери", "about.contact": "Контакт:", + "about.default_locale": "Стандардно", "about.disclaimer": "Mastodon е бесплатен, open-source софтвер, и заштитен знак на Mastodon gGmbH.", + "about.domain_blocks.no_reason_available": "Причината не е достапна", "about.domain_blocks.preamble": "Mastodon вообичаено ви дозволува да прегледувате содржини и комуницирате со корисниците од било кој сервер во федиверзумот. На овој сервер има исклучоци.", "about.domain_blocks.silenced.explanation": "Вообичаено нема да гледате профили и содржина од овој сервер, освен ако не го пребарате намерно, или го заследите.", "about.domain_blocks.silenced.title": "Ограничено", "about.domain_blocks.suspended.explanation": "Податоците од овој сервер нема да бидат процесирани, зачувани или сменети и било која интеракција или комуникација со корисниците од овој сервер ќе биде невозможна.", "about.domain_blocks.suspended.title": "Суспендиран", + "about.language_label": "Јазик", "about.not_available": "Оваа информација не е достапна на овој сервер.", "about.powered_by": "Децентрализиран друштвен медиум овозможен од {mastodon}", "about.rules": "Правила на серверот", + "account.account_note_header": "Лична забелешка", + "account.activity": "Активност", + "account.add_note": "Додај лична забелешка", "account.add_or_remove_from_list": "Додади или одстрани од листа", + "account.badges.admin": "Админ", + "account.badges.blocked": "Блокиран", "account.badges.bot": "Бот", + "account.badges.domain_blocked": "Блокиран домен", "account.badges.group": "Група", + "account.badges.muted": "Исклучен глас", + "account.badges.muted_until": "Исклучен глас до {until}", "account.block": "Блокирај @{name}", "account.block_domain": "Сокријај се од {domain}", + "account.block_short": "Блокирај", "account.blocked": "Блокиран", "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_short": "Измени", + "account.enable_notifications": "Извести ме кога @{name} постира", "account.endorse": "Карактеристики на профилот", + "account.featured.accounts": "Профили", + "account.featured.collections": "Колекции", + "account.featured.new_collection": "Нова колекција", + "account.field_overflow": "Покажи цела содржина", + "account.filters.all": "Сета активност", "account.follow": "Следи", + "account.follow_back": "Заследи назад", + "account.follow_back_short": "Заследи назад", + "account.follow_request_cancel_short": "Откажи", "account.followers": "Следбеници", "account.followers.empty": "Никој не го следи овој корисник сеуште.", "account.follows.empty": "Корисникот не следи никој сеуште.", "account.hide_reblogs": "Сокриј буст од @{name}", + "account.join_modal.day": "Ден", "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}", "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", "account.media": "Медија", diff --git a/app/javascript/mastodon/locales/nan-TW.json b/app/javascript/mastodon/locales/nan-TW.json index 450e931288..72f28919d9 100644 --- a/app/javascript/mastodon/locales/nan-TW.json +++ b/app/javascript/mastodon/locales/nan-TW.json @@ -86,6 +86,7 @@ "account.locked_info": "Tsit ê口座ê隱私狀態鎖起來ah。所有者ē手動審查thang kā跟tuè ê lâng。", "account.media": "媒體", "account.mention": "提起 @{name}", + "account.menu.add_to_collection": "編輯收藏……", "account.menu.add_to_list": "加入去列單……", "account.menu.block": "封鎖口座", "account.menu.block_domain": "封鎖 {domain}", @@ -366,10 +367,13 @@ "collection.share_modal.share_via_system": "分享kàu……", "collection.share_modal.title": "分享收藏", "collection.share_modal.title_new": "分享lí ê新收藏!", + "collection.share_template_other": "緊看覓chit ê時行ê收藏:", + "collection.share_template_own": "緊看覓我ê收藏:", "collections.account_count": "{count, plural, other {# ê口座}}", "collections.accounts.empty_description": "加上tsē {count} ê口座", "collections.accounts.empty_editor_title": "Tsit ê 收藏內底iáu無半ê lâng", "collections.accounts.empty_title": "收藏內底無半項", + "collections.add_to_collection": "Kā {name} 加入去收藏", "collections.block_collection_owner": "封鎖口座", "collections.by_account": "tuì {account_handle}", "collections.collection_description": "說明", @@ -392,6 +396,7 @@ "collections.detail.loading": "載入收藏……", "collections.detail.revoke_inclusion": "Kā我suá掉", "collections.detail.sensitive_content": "敏感ê內容", + "collections.detail.sensitive_note": "描述kap口座可能無適合逐ê檢視者。", "collections.detail.share": "分享tsit ê收藏", "collections.detail.you_are_in_this_collection": "Lí已經hőng加kàu tsit ê收藏", "collections.edit_details": "編輯詳細", @@ -422,6 +427,11 @@ "collections.search_accounts_max_reached": "Lí已經加kàu口座數ê盡磅ah。", "collections.sensitive": "敏感ê", "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_desc": "Tsiah ê口座可能選擇退出探索,或者是in可能佇無支援收藏ê服侍器頂。", "collections.suggestions.must_follow": "Lí著sing跟tuè", @@ -633,6 +643,7 @@ "empty_column.blocks": "Lí iáu無封鎖任何用者。", "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_undiscoverable": "若beh予lâng kā lí加入去收藏,lí需要kàu偏愛ê設定 > 隱私kap資訊ê及至佇探索經驗允准推薦", "empty_column.community": "本站時間線是空ê。緊來公開PO文oh!", "empty_column.direct": "Lí iáu無任何ê私人訊息。Nā是lí送á是收著私人訊息,ē佇tsia顯示。.", "empty_column.disabled_feed": "Tsit ê feed已經hōo lí ê服侍器ê管理員停用。", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 0c2a59a19c..e298d75842 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -367,6 +367,8 @@ "collection.share_modal.share_via_system": "Delen met…", "collection.share_modal.title": "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.accounts.empty_description": "Tot {count} accounts toevoegen", "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", "copypaste.copied": "Gekopieerd", "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.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", @@ -906,6 +914,7 @@ "navigation_bar.live_feed_local": "Openbare tijdlijn (deze server)", "navigation_bar.live_feed_public": "Openbare tijdlijn (alles)", "navigation_bar.logout": "Uitloggen", + "navigation_bar.main": "Hoofdmenu", "navigation_bar.moderation": "Moderatie", "navigation_bar.more": "Meer", "navigation_bar.mutes": "Genegeerde gebruikers", @@ -1303,6 +1312,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Meldingen", "tabs_bar.publish": "Nieuw bericht", + "tabs_bar.quick_links": "Snelkoppelingen", "tabs_bar.search": "Zoeken", "tag.remove": "Verwijderen", "terms_of_service.effective_as_of": "Van kracht met ingang van {date}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 46cd68748f..5dcbc67c43 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -56,6 +56,7 @@ "account.follows_you": "ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਦੇ ਹਨ", "account.go_to_profile": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਜਾਓ", "account.hide_reblogs": "{name} ਵਲੋਂ ਬੂਸਟ ਨੂੰ ਲੁਕਾਓ", + "account.join_modal.day": "ਦਿਨ", "account.joined_short": "ਜੁਆਇਨ ਕੀਤਾ", "account.media": "ਮੀਡੀਆ", "account.mention": "@{name} ਦਾ ਜ਼ਿਕਰ", @@ -103,6 +104,13 @@ "account.unmute": "@{name} ਲਈ ਮੌਨ ਹਟਾਓ", "account.unmute_notifications_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.cohort_size": "ਨਵੇਂ ਵਰਤੋਂਕਾਰ", "alert.unexpected.title": "ਓਹੋ!", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index e6e97aea18..778740e274 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -178,13 +178,13 @@ "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.delete_button": "Excluir", - "account_edit.field_delete_modal.title": "Remover espaço?", - "account_edit.field_edit_modal.add_title": "Adicionar espaço", + "account_edit.field_delete_modal.title": "Remover campo?", + "account_edit.field_edit_modal.add_title": "Adicionar campo", "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.edit_title": "Editar espaço", - "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.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.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 campos por inteiro.", + "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_label": "Rótulo", "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.percentile.text": "Isso lhe coloca no topode usuários de {domain}.", "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_on_mastodon": "Compartilhar no Mastodon", "attachments_list.unprocessed": "(não processado)", "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.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.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} 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_more": "Mostrar mais", - "block_modal.they_cant_mention": "Vocês não podem mencionar, seguir ou citar um ao outro.", - "block_modal.they_cant_see_posts": "Vocês não podem ver o conteúdo um do 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 poderão ver o conteúdo um do outro.", "block_modal.they_will_know": "Poderá ver que você bloqueou.", "block_modal.title": "Bloquear usuário?", - "block_modal.you_wont_see_mentions": "Você não verá publicações de outros que mencionem essa conta.", - "boost_modal.combo": "Pressione {combo} para pular isto na próxima vez", + "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 da próxima vez", "boost_modal.reblog": "Impulsionar a publicação?", "boost_modal.undo_reblog": "Retirar o impulso da publicação?", "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.title": "Compartilhar 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.accounts.empty_description": "Adicione até {count} contas", "collections.accounts.empty_editor_title": "Ainda não há ninguém nesta coleção", @@ -380,11 +382,11 @@ "collections.collection_name": "Nome", "collections.collection_topic": "Tópico", "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.copy_link": "Copiar link", "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.steps": "Passo {step}/{total}", "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.created_by_author": "Criado por {name}", "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.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.maximum_collection_count_description": "Seu servidor permite a criação de, no máximo, {count} coleções.", + "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 criar até {count} 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.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.remove_account": "Remover", - "collections.report_collection": "Denunciar esta coleção", - "collections.revoke_collection_inclusion": "Remover-me desta coleção", + "collections.report_collection": "Denunciar coleção", + "collections.revoke_collection_inclusion": "Me remover desta coleção", "collections.revoke_inclusion.confirmation": "Você foi removido de \"{collection}\"", - "collections.revoke_inclusion.error": "Houve um erro, por favor tente novamente mais tarde.", - "collections.search_accounts_label": "Pesquisar por uma conta para adicionar", - "collections.search_accounts_max_reached": "Você acrescentou o número máximo de contas", + "collections.revoke_inclusion.error": "Ocorreu um erro, tente novamente mais tarde.", + "collections.search_accounts_label": "Buscar uma conta para adicionar", + "collections.search_accounts_max_reached": "Você adicionou o número máximo de contas", "collections.sensitive": "Sensível", "collections.share_short": "Compartilhar", "collections.sort_alphabetical": "Alfabética", @@ -430,20 +432,20 @@ "collections.sort_date_added": "Data adicionada", "collections.sort_last_active": "Última atividade", "collections.sort_most_followers": "Mais seguidores", - "collections.suggestions.can_not_add": "Não pôde 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": "Não pode ser adicionado", + "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_desc": "Essas contas revisam todas as solicitações de seguir. Seguidores podem os adicionar às coleções.", - "collections.topic_hint": "Adicione uma hashtag que ajude os outros a entender o tópico principal desta coleção.", - "collections.topic_special_chars_hint": "Caracteres especiais serão removidos ao salvar", - "collections.unlisted_collections_description": "Estes não aparecem em seu perfil aos outros. Qualquer um com um link pode os descobrir.", + "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 a todos compreenderem o tópico da coleção.", + "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 para todos. Qualquer um com link pode descobri-los.", "collections.unlisted_collections_with_count": "Coleções não listadas ({count})", "collections.view_collection": "Ver coleção", "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_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.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", @@ -455,7 +457,7 @@ "column.edit_list": "Editar lista", "column.favourites": "Favoritos", "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.follow_requests": "Seguidores pendentes", "column.home": "Página inicial", @@ -550,7 +552,7 @@ "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.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.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.", @@ -582,6 +584,12 @@ "copy_icon_button.copy_this_text": "Copiar link para área de transferência", "copypaste.copied": "Copiado", "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.local": "Somente de {domain}", "directory.new_arrivals": "Acabaram de chegar", @@ -595,7 +603,7 @@ "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_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.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.", @@ -605,9 +613,9 @@ "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 Política de Privacidade.", "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.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", "embed.instructions": "Incorpore esta publicação no seu site ao copiar o código abaixo.", "embed.preview": "Aqui está como vai ficar:", @@ -626,24 +634,24 @@ "emoji_button.search_results": "Resultado da pesquisa", "emoji_button.symbols": "Símbolos", "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_hide_tab": "Ocultar esta aba em vez disso", - "empty_column.account_featured_self.pre_collections": "Acompanhe este espaço para 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.showcase_accounts": "Exibir suas 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_unknown.other": "Esta conta ainda não pôs nada em destaque.", - "empty_column.account_hides_collections": "A pessoa optou por não disponibilizar esta informação", + "empty_column.account_featured_self.no_collections_hide_tab": "Ao invés, ocultar esta aba", + "empty_column.account_featured_self.pre_collections": "Fique ligado às Coleções", + "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 contas favoritas", + "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 não destacou nada ainda.", + "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_timeline": "Nada aqui.", "empty_column.account_unavailable": "Perfil indisponível", "empty_column.blocks": "Nada 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 Preferências > Privacidade e alcance", "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.domain_blocks": "Nada aqui.", "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.followed_tags": "Você ainda não seguiu nenhuma hashtag. Quando seguir, elas serão exibidas 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.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.", @@ -675,16 +683,16 @@ "featured_carousel.header": "{count, plural, one {Publicação fixada} other {Publicações fixadas}}", "featured_carousel.slide": "Publicação {current, number} de {max, number}", "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.added": "Gerencie suas hashtags a qualquer momento sob Editar Perfil > Hashtags em destaque.", + "featured_tags.suggestions.added": "Gerencie as hashtags destacadas em Editar perfil > Hashtags destacadas.", "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_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_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_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.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.", "filter_modal.added.title": "Filtro adicionado!", @@ -692,11 +700,11 @@ "filter_modal.select_filter.expired": "expirado", "filter_modal.select_filter.prompt_new": "Nova categoria: {name}", "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.title.status": "Filtrar uma publicação", - "filter_warning.matches_filter": "Corresponder filtro “{title}”", - "filtered_notifications_banner.pending_requests": "Por {count, plural, =0 {no one} one {one person} other {# people}} que você talvez conheça", + "filter_warning.matches_filter": "Corresponde ao filtro “{title}”", + "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", "firehose.all": "Tudo", "firehose.local": "Este servidor", @@ -906,6 +914,7 @@ "navigation_bar.live_feed_local": "Feed ao vivo (local)", "navigation_bar.live_feed_public": "Feed ao vivo (público)", "navigation_bar.logout": "Sair", + "navigation_bar.main": "Principal", "navigation_bar.moderation": "Moderação", "navigation_bar.more": "Mais", "navigation_bar.mutes": "Usuários silenciados", @@ -1303,6 +1312,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Notificações", "tabs_bar.publish": "Nova publicação", + "tabs_bar.quick_links": "Links rápidos", "tabs_bar.search": "Buscar", "tag.remove": "Remover", "terms_of_service.effective_as_of": "Em vigor a partir de {date}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 6e11e0e94e..4c4427083e 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -579,6 +579,12 @@ "copy_icon_button.copy_this_text": "Kopjoje lidhjen në të papastër", "copypaste.copied": "U kopjua", "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.local": "Vetëm nga {domain}", "directory.new_arrivals": "Të ardhur rishtas", @@ -903,6 +909,7 @@ "navigation_bar.live_feed_local": "Pryrje e atypëratyshme (vendore)", "navigation_bar.live_feed_public": "Prurje e atypëratyshme (publike)", "navigation_bar.logout": "Dalje", + "navigation_bar.main": "Kryesorja", "navigation_bar.moderation": "Moderim", "navigation_bar.more": "Më tepër", "navigation_bar.mutes": "Përdorues të heshtuar", @@ -1299,6 +1306,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Njoftime", "tabs_bar.publish": "Postimi i Ri", + "tabs_bar.quick_links": "Lidhje të shpejta", "tabs_bar.search": "Kërkim", "tag.remove": "Hiqe", "terms_of_service.effective_as_of": "Hyn në fuqi që prej {date}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 10a037a9c6..e310aca816 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -86,6 +86,7 @@ "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.", "account.media": "Media", "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.block": "Blockera konto", "account.menu.block_domain": "Blockera {domain}", @@ -366,10 +367,13 @@ "collection.share_modal.share_via_system": "Dela med…", "collection.share_modal.title": "Dela 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.accounts.empty_description": "Lägg till upp till {count} konton", "collections.accounts.empty_editor_title": "Ingen finns i denna samling ännu", "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.by_account": "av {account_handle}", "collections.collection_description": "Beskrivning", @@ -392,6 +396,7 @@ "collections.detail.loading": "Laddar samling…", "collections.detail.revoke_inclusion": "Ta bort mig", "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.you_are_in_this_collection": "Du är med i denna samling", "collections.edit_details": "Redigera detaljer", @@ -424,6 +429,7 @@ "collections.share_short": "Dela", "collections.sort_alphabetical": "Alfabetiskt", "collections.sort_by": "Sortera efter:", + "collections.sort_date_added": "Datum tillagd", "collections.sort_last_active": "Senast aktiv", "collections.sort_most_followers": "Flest följare", "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.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_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 Inställningar> Sekretess och räckvidd", "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.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.sound": "Spela upp ljud", "notifications.column_settings.status": "Nya inlägg:", - "notifications.column_settings.unread_notifications.category": "O-lästa aviseringar", - "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", + "notifications.column_settings.unread_notifications.category": "Olästa aviseringar", + "notifications.column_settings.unread_notifications.highlight": "Markera olästa aviseringar", "notifications.column_settings.update": "Redigeringar:", "notifications.filter.all": "Alla", "notifications.filter.boosts": "Boostar", @@ -1298,6 +1305,7 @@ "tabs_bar.menu": "Meny", "tabs_bar.notifications": "Aviseringar", "tabs_bar.publish": "Nytt inlägg", + "tabs_bar.quick_links": "Snabblänkar", "tabs_bar.search": "Sök", "tag.remove": "Ta bort", "terms_of_service.effective_as_of": "Gäller från och med {date}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index e7930a84f9..2280b14b71 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -367,6 +367,8 @@ "collection.share_modal.share_via_system": "Paylaş…", "collection.share_modal.title": "Koleksiyonu paylaş", "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.accounts.empty_description": "{count} hesap ekleyebilirsiniz", "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", "copypaste.copied": "Kopyalandı", "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.local": "Yalnızca {domain} adresinden", "directory.new_arrivals": "Yeni gelenler", @@ -906,6 +914,7 @@ "navigation_bar.live_feed_local": "Canlı akış (yerel)", "navigation_bar.live_feed_public": "Canlı akış (herkese açık)", "navigation_bar.logout": "Oturumu kapat", + "navigation_bar.main": "Ana", "navigation_bar.moderation": "Moderasyon", "navigation_bar.more": "Daha fazla", "navigation_bar.mutes": "Sessize alınmış kullanıcılar", @@ -1303,6 +1312,7 @@ "tabs_bar.menu": "Menü", "tabs_bar.notifications": "Bildirimler", "tabs_bar.publish": "Yeni Gönderi", + "tabs_bar.quick_links": "Hızlı erişim", "tabs_bar.search": "Arama", "tag.remove": "Kaldır", "terms_of_service.effective_as_of": "{date} itibariyle yürürlükte", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 5dccafb2af..547ebd7a5f 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "Sao chép liên kết vào clipboard", "copypaste.copied": "Đã sao chép", "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.local": "Ở {domain}", "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_public": "Bảng tin (công khai)", "navigation_bar.logout": "Đăng xuất", + "navigation_bar.main": "Chính", "navigation_bar.moderation": "Kiểm duyệt", "navigation_bar.more": "Khác", "navigation_bar.mutes": "Tài khoản đã phớt lờ", @@ -1304,6 +1311,7 @@ "tabs_bar.menu": "Menu", "tabs_bar.notifications": "Thông báo", "tabs_bar.publish": "Soạn tút", + "tabs_bar.quick_links": "Lối tắt", "tabs_bar.search": "Tìm kiếm", "tag.remove": "Gỡ bỏ", "terms_of_service.effective_as_of": "Có hiệu lực vào {date}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 03237b2cbe..96f8ffbe95 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -908,6 +908,7 @@ "navigation_bar.live_feed_local": "实时动态(本站)", "navigation_bar.live_feed_public": "实时动态(公开)", "navigation_bar.logout": "退出登录", + "navigation_bar.main": "首页", "navigation_bar.moderation": "审核", "navigation_bar.more": "更多", "navigation_bar.mutes": "已隐藏的用户", @@ -1305,6 +1306,7 @@ "tabs_bar.menu": "菜单", "tabs_bar.notifications": "通知", "tabs_bar.publish": "新嘟文", + "tabs_bar.quick_links": "快捷链接", "tabs_bar.search": "搜索", "tag.remove": "移除", "terms_of_service.effective_as_of": "自 {date} 起生效", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8295c69991..0793407f65 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -584,6 +584,12 @@ "copy_icon_button.copy_this_text": "複製連結至剪貼簿", "copypaste.copied": "已複製", "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.local": "僅來自 {domain}", "directory.new_arrivals": "新人", @@ -908,6 +914,7 @@ "navigation_bar.live_feed_local": "即時內容(本站)", "navigation_bar.live_feed_public": "即時內容(公開)", "navigation_bar.logout": "登出", + "navigation_bar.main": "主要", "navigation_bar.moderation": "站務", "navigation_bar.more": "更多", "navigation_bar.mutes": "已靜音的使用者", @@ -1305,6 +1312,7 @@ "tabs_bar.menu": "選單", "tabs_bar.notifications": "通知", "tabs_bar.publish": "新增嘟文", + "tabs_bar.quick_links": "快速連結", "tabs_bar.search": "搜尋", "tag.remove": "移除", "terms_of_service.effective_as_of": "{date} 起生效", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 809634e8f5..b5bc754dc4 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1361,6 +1361,7 @@ body > [data-popper-placement] { // this element inherits a text direction that is opposite to its own, // the start of this element's text is cut off. + // Posts on the timeline .status:not(.status--is-quote) > .status__content > .status__content__text:lang(#{$lang}), @@ -1375,6 +1376,7 @@ body > [data-popper-placement] { overflow-x: hidden; // read more } + // Post editor .autosuggest-textarea > .autosuggest-textarea__textarea:lang(#{$lang}) { writing-mode: vertical-lr; min-height: 209px; // writable @@ -1383,6 +1385,18 @@ body > [data-popper-placement] { 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}) { writing-mode: vertical-lr; width: 100%; // detecting overflow @@ -3374,8 +3388,7 @@ a.account__display-name { .column-header, .column-back-button, - .scrollable, - .error-column { + .scrollable { border-radius: 0 !important; } @@ -5288,51 +5301,6 @@ a.status-card { 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 { 0% { transform: scale(1); diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 70aabf1d5b..3cf3650280 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -908,11 +908,6 @@ ar: feed_access: modes: public: الجميع - landing_page: - values: - about: عن - local_feed: الخيط المحلي - trends: المتداوَلة registrations: moderation_recommandation: الرجاء التأكد من أن لديك فريق إشراف كافي وفعال قبل فتح التسجيلات للجميع! preamble: تحكّم في مَن الذي يمكنه إنشاء حساب على خادمك الخاص. diff --git a/config/locales/be.yml b/config/locales/be.yml index 244857c6dd..c12ac65d74 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -988,10 +988,16 @@ be: disabled: Запатрабаваць адмысловую ролю карыстальніка public: Усе landing_page: + hints: + about_html: Старонка з апісаннем, правіламі, кантактнай і іншай інфармацыяй адносна сервера. + local_feed_html: Жывая стужка, у якой прадстаўленыя самыя свежыя допісы карыстальнікаў гэтага сервера. + overview_html: Старонка, якая паказвае апісанне Вашага сервера разам з самымі свежымі лакальнымі допісамі карыстальнікаў гэтага сервера. + trends_html: Старонка, якая паказвае, што зараз папулярна на серверы. values: - about: Падрабязна - local_feed: Тутэйшая стужка - trends: Трэнды + about: Аб старонцы + local_feed: Лакальная жывая стужка + overview: Змест + trends: Трэндавае registrations: moderation_recommandation: Пераканайцеся, што ў вас ёсць адэкватная і аператыўная каманда мадэратараў, перш чым адчыняць рэгістрацыю для ўсіх жадаючых! preamble: Кантралюйце, хто можа ствараць уліковы запіс на вашым серверы. diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 67c7d6944a..08a744f62b 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -838,9 +838,6 @@ bg: authenticated: Само удостоверени потребители disabled: Изисква особена потребителска роля public: Всеки - landing_page: - values: - trends: Пламенности registrations: moderation_recommandation: Уверете се, че имате адекватен и реактивен модераторски екип преди да отворите регистриранията за всеки! preamble: Управлява кой може да създава акаунт на сървъра ви. diff --git a/config/locales/br.yml b/config/locales/br.yml index 75cdbae8ba..9cc3ee0fb4 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -389,9 +389,6 @@ br: all: D'an holl dud disabled: Da zen ebet users: D'an implijerien·ezed lec'hel kevreet - landing_page: - values: - about: Diwar-benn title: Arventennoù ar servijer site_uploads: delete: Dilemel ar restr pellgaset diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 94f5babb09..4a02903cbe 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -921,11 +921,6 @@ cs: authenticated: Pouze autentifikovaní uživatelé disabled: Vyžadovat specifickou uživatelskou roli public: Všichni - landing_page: - values: - about: O službě - local_feed: Místní kanál - trends: Trendy registrations: 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. diff --git a/config/locales/cy.yml b/config/locales/cy.yml index caf98e6cbd..95c91dda39 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1019,11 +1019,6 @@ cy: authenticated: Defnyddwyr dilys yn unig disabled: Gofyn am rôl defnyddiwr penodol public: Pawb - landing_page: - values: - about: Ynghylch - local_feed: Ffrwd leol - trends: Trendiau registrations: 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. diff --git a/config/locales/da.yml b/config/locales/da.yml index 8bbc546ad6..f1fdb1c1a2 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -956,10 +956,16 @@ da: disabled: Kræv specifik brugerrolle public: Alle 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: - about: Om - local_feed: Lokalt feed - trends: Trends + about: Om-side + local_feed: Lokalt live-feed + overview: Oversigt + trends: Trender registrations: 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. diff --git a/config/locales/de.yml b/config/locales/de.yml index 4d20c15528..129a42708e 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -957,9 +957,8 @@ de: public: Alle landing_page: values: - about: Über - local_feed: Lokaler Feed - trends: Trends + overview: Übersicht + trends: Trendet registrations: 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. diff --git a/config/locales/el.yml b/config/locales/el.yml index ce46ac37a7..a4be9b34c6 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -956,9 +956,15 @@ el: disabled: Να απαιτείται συγκεκριμένος ρόλος χρήστη public: Όλοι landing_page: + hints: + about_html: Μια σελίδα με την περιγραφή, τις πληροφορίες επικοινωνίας, τους κανόνες και άλλες πληροφορίες σχετικά με αυτόν τον διακομιστή. + local_feed_html: Μια ζωντανή ροή που αναδεικνύει τις πιο πρόσφατες αναρτήσεις από τους χρήστες σε αυτόν τον διακομιστή. + overview_html: Μια σελίδα που παρουσιάζει την περιγραφή του διακομιστή σας μαζί με τις πιο πρόσφατες τοπικές αναρτήσεις από τους χρήστες σε αυτόν τον διακομιστή. + trends_html: Μια σελίδα που αναδεικνύει τι είναι δημοφιλές σε αυτόν τον διακομιστή αυτήν τη στιγμή. values: - about: Σχετικά - local_feed: Τοπική ροή + about: Σελίδα Σχετικά με + local_feed: Τοπική ζωντανή ροή + overview: Επισκόπηση trends: Τάσεις registrations: moderation_recommandation: Παρακαλώ βεβαιώσου ότι έχεις μια επαρκής και ενεργή ομάδα συντονισμού πριν ανοίξεις τις εγγραφές για όλους! diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index c1b2407446..5fa15b0187 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -879,11 +879,6 @@ en-GB: authenticated: Authenticated users only disabled: Require specific user role public: Everyone - landing_page: - values: - about: About - local_feed: Local feed - trends: Trends registrations: 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. diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index e8838d5e2c..b41df68af4 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -956,10 +956,16 @@ es-AR: disabled: Requerir un rol de específico de usuario public: Todos 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: - about: Información - local_feed: Línea temporal local - trends: Tendencias + about: Acerca de la página + local_feed: Línea temporal local en vivo + overview: Visión general + trends: En tendencia registrations: 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. diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index e7e3a1d0f7..d5b34b7814 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -955,11 +955,6 @@ es-MX: authenticated: Solo usuarios registrados disabled: Requerir un rol de usuario específico public: Todos - landing_page: - values: - about: Acerca de - local_feed: Feed local - trends: Tendencias 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!" preamble: Controla quién puede crear una cuenta en tu servidor. diff --git a/config/locales/es.yml b/config/locales/es.yml index c234628964..44b7d0517a 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -955,11 +955,6 @@ es: authenticated: Solo usuarios autenticados disabled: Requerir un rol de usuario específico public: Todos - landing_page: - values: - about: Acerca de - local_feed: Cronología local - trends: Tendencias 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! preamble: Controla quién puede crear una cuenta en tu servidor. @@ -979,7 +974,7 @@ es: site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" - skip_to_content: Ir al contenido + skip_to_content: Saltar al contenido software_updates: 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. diff --git a/config/locales/et.yml b/config/locales/et.yml index 5c20dd2f6e..34227ceb48 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -955,11 +955,6 @@ et: authenticated: Vaid autenditud kasutajad disabled: Eelda konkreetse kasutajarolli olemasolu public: Kõik - landing_page: - values: - about: Teave - local_feed: Kohalik sisuvoog - trends: Trendid registrations: moderation_recommandation: Enne kõigi jaoks registreerimise avamist veendu, et oleks olemas adekvaatne ja reageerimisvalmis modereerijaskond! preamble: Kes saab serveril konto luua. diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 4d8398b08a..2a762afde0 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -841,11 +841,6 @@ eu: authenticated: Saioa hasi duten erabiltzaileentzat soilik disabled: Erabiltzaile-rol jakin bat behar da public: Edonork - landing_page: - values: - about: Honi buruz - local_feed: Jario lokala - trends: Joerak registrations: moderation_recommandation: Mesedez, ziurtatu moderazio-talde egokia eta erreaktiboa duzula erregistroak guztiei ireki aurretik! preamble: Kontrolatu nork sortu dezakeen kontua zerbitzarian. diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 8c2f5ebb0b..96c0cb1ba2 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -935,11 +935,6 @@ fa: authenticated: تنها کاربران تأیید شده disabled: نیازمند نقش کاربری خاص public: هرکسی - landing_page: - values: - about: درباره - local_feed: خوراک محلی - trends: داغ‌ها registrations: moderation_recommandation: لطفاً قبل از اینکه ثبت نام را برای همه باز کنید، مطمئن شوید که یک تیم نظارتی مناسب و واکنشی دارید! preamble: کنترل کنید چه کسی می تواند در سرور شما یک حساب ایجاد کند. diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 2f4ecc5bcd..a965d214e3 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -948,10 +948,16 @@ fi: disabled: Vaadi tiettyä käyttäjäroolia public: Kaikki landing_page: + hints: + about_html: Sivu, jolla on kuvaus, yhteystiedot, säännöt ja muita tietoja tästä palvelimesta. + local_feed_html: Livesyöte, joka esittelee tämän palvelimen viimeisimpiä julkaisuja. + overview_html: Sivu, joka esittelee palvelimesi kuvauksen viimeisimpien tämän palvelimen käyttäjien paikallisten julkaisujen ohella. + trends_html: Sivu, joka esittelee, mikä on suosittua palvelimella juuri nyt. values: - about: Tietoja - local_feed: Paikallinen syöte - trends: Trendit + about: Tietoja-sivu + local_feed: Paikallinen livesyöte + overview: Yleiskatsaus + trends: Suosittua registrations: moderation_recommandation: Varmista, että sinulla on riittävä ja toimintavalmis joukko moderaattoreita, ennen kuin avaat rekisteröitymisen kaikille! preamble: Määritä, kuka voi luoda tilin palvelimellesi. diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 9493ffbc07..c061badd2c 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -875,11 +875,6 @@ fo: authenticated: Einans váttaðir brúkarar disabled: Krev serstakan brúkaraleiklut public: Øll - landing_page: - values: - about: Um - local_feed: Lokal rás - trends: Rák registrations: moderation_recommandation: Vinarliga tryggja tær, at tú hevur eitt nøktandi og klárt umsjónartoymi, áðreen tú letur upp fyri skrásetingum frá øllum! preamble: Stýr, hvør kann stovna eina kontu á tínum ambætara. diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 11791c5d9d..3b877f339b 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -956,9 +956,15 @@ fr-CA: disabled: Nécessite un rôle spécifique public: Tout le monde landing_page: + hints: + about_html: Une page avec la description, les informations de contact, les règles et d'autres informations concernant ce serveur. + local_feed_html: Un flux en direct avec les messages les plus récents des utilisateur·rice·s sur ce serveur. + overview_html: Une page montrant la description de votre serveur avec les derniers messages locaux des utilisateur·rice·s sur ce serveur. + trends_html: Une page présentant ce qui est populaire sur ce serveur en ce moment. values: - about: À propos - local_feed: Fil local + about: Page À propos + local_feed: Flux local en direct + overview: Aperçu  trends: Tendances registrations: moderation_recommandation: Veuillez vous assurer d'avoir une équipe de modération adéquate et réactive avant d'ouvrir les inscriptions à tout le monde ! diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 5e88e2d1c1..8b8326e8e0 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -956,9 +956,15 @@ fr: disabled: Nécessite un rôle spécifique public: Tout le monde landing_page: + hints: + about_html: Une page avec la description, les informations de contact, les règles et d'autres informations concernant ce serveur. + local_feed_html: Un flux en direct avec les messages les plus récents des utilisateur·rice·s sur ce serveur. + overview_html: Une page montrant la description de votre serveur avec les derniers messages locaux des utilisateur·rice·s sur ce serveur. + trends_html: Une page présentant ce qui est populaire sur ce serveur en ce moment. values: - about: À propos - local_feed: Fil local + about: Page À propos + local_feed: Flux local en direct + overview: Aperçu  trends: Tendances registrations: moderation_recommandation: Veuillez vous assurer d'avoir une équipe de modération adéquate et réactive avant d'ouvrir les inscriptions à tout le monde ! diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 7b3eb3c13c..e0accf79cf 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1003,11 +1003,6 @@ ga: authenticated: Úsáideoirí fíordheimhnithe amháin disabled: Éiligh ról úsáideora sonrach public: Gach duine - landing_page: - values: - about: Maidir - local_feed: Fotha áitiúil - trends: Treochtaí registrations: moderation_recommandation: Cinntigh le do thoil go bhfuil foireann mhodhnóireachta imoibríoch leordhóthanach agat sula n-osclaíonn tú clárúcháin do gach duine! preamble: Rialú cé atá in ann cuntas a chruthú ar do fhreastalaí. @@ -1027,6 +1022,7 @@ ga: site_uploads: delete: Scrios comhad uaslódáilte destroyed_msg: D'éirigh le huaslódáil an tsuímh a scriosadh! + skip_to_content: Léim go dtí an t-ábhar software_updates: critical_update: Criticiúil - nuashonraigh go tapa le do thoil description: Moltar do shuiteáil Mastodon a choinneáil cothrom le dáta chun leas a bhaint as na socruithe agus na gnéithe is déanaí. Ina theannta sin, tá sé ríthábhachtach uaireanta Mastodon a nuashonrú go tráthúil chun saincheisteanna slándála a sheachaint. Ar na cúiseanna seo, seiceálann Mastodon nuashonruithe gach 30 nóiméad, agus tabharfaidh sé fógra duit de réir do shainroghanna fógra ríomhphoist. diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 8ba20031e8..af419f999f 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -911,11 +911,6 @@ gd: authenticated: Cleachdaichean a chlàraich a-steach a-mhàin disabled: Iarr dreuchd shònraichte a’ chleachdaiche public: A h-uile duine - landing_page: - values: - about: Mu dhèidhinn - local_feed: Loidhne-ama ionadail - trends: Treandaichean registrations: moderation_recommandation: Dèan cinnteach gu bheil sgioba maoir deiseil is deònach agad mus fhosgail thu an clàradh dhan a h-uile duine! preamble: Stiùirich cò dh’fhaodas cunntas a chruthachadh air an fhrithealaiche agad. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 33f1a2ec22..a61826206c 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -956,10 +956,16 @@ gl: disabled: Requerir un rol da usuaria específico public: Para calquera landing_page: + hints: + about_html: Unha páxina coa descrición, información de contacto, regras e outra información relativa a este servidor. + local_feed_html: Unha cronoloxía actual que mostra as publicacións máis recentes das usuarias deste servidor. + overview_html: Unha páxina que mostra a descrición do teu servidor xunto ás publicacións locais máis recentes das usuarias do servidor. + trends_html: Unha páxina que mostra as publicacións populares no servidor neste momento. values: - about: Sobre - local_feed: Cronoloxía Local - trends: Tendencias + about: Páxina sobre + local_feed: Cronoloxía local en directo + overview: Visión xeral + trends: Popular registrations: moderation_recommandation: Por favor, pon interese en crear un equipo de moderación competente e reactivo antes de permitir que calquera poida crear unha conta! preamble: Xestiona quen pode crear unha conta no teu servidor. @@ -979,6 +985,7 @@ gl: site_uploads: delete: Eliminar o ficheiro subido destroyed_msg: Eliminado correctamente o subido! + skip_to_content: Ir ao contido software_updates: critical_update: Crítica - actualiza axiña description: Aconsellamos manter actualizado o teu servidor Mastodon para beneficiarte dos últimos arranxos e características. A maiores, de cando en vez hai actualizacións para evitar problemas importantes de seguridade. Debido a isto, Mastodon comproba cada 30 minutos se hai actualizacións e avisarate seguindo as túas preferencias de notificación por correo electrónico. diff --git a/config/locales/he.yml b/config/locales/he.yml index 724e702e64..f1533e601a 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -988,10 +988,16 @@ he: disabled: נדרש תפקיד משתמש מסוים public: כולם landing_page: + hints: + about_html: עמוד עם תיאור השרת, פרטי התקשרות, חוקים ושאר המידע. + local_feed_html: זרם הודעות חי של הפרסומים האחרונים של משתמשים בשרת זה. + overview_html: עמוד המציג את תיאור השרת לצד ההודעות המקומיות האחרונות של משתמשיו ומשתמשותיו. + trends_html: עמוד המציג את התכנים המושכים כניין כרגע על שרת זה. values: - about: אודות - local_feed: פיד מקומי - trends: נושאים חמים + about: דף אודות השרת + local_feed: זרם הודעות בזמן אמת + overview: סקירה כללית + trends: מגמות registrations: moderation_recommandation: יש לוודא שלאתר יש צוות מנחות ומנחי שיחה מספק ושירותי בטרם תבחרו לפתוח הרשמה לכולם! preamble: שליטה בהרשאות יצירת חשבון בשרת שלך. @@ -1011,6 +1017,7 @@ he: site_uploads: delete: מחיקת קובץ שהועלה destroyed_msg: העלאת אתר נמחקה בהצלחה! + skip_to_content: דילוג לתוכן software_updates: critical_update: חשוב -- יש לעדכן במהירות description: מומלץ לשמור את התקנת המסטודון שלך עדכנית כדי להרוויח מהיכולות והתיקונים האחרונים. למעלה מכך, לעיתים קריטי לעדכן את מסטודון בהקדם כדי להמנע מפרצות אבטחה. מסיבות אלו, השרת יבדוק כל 30 דקות, ויודיע לך לפי העדפות הדואל שלך. diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 6f12ea2f22..568716e259 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -956,10 +956,14 @@ hu: disabled: Konkrét felhasználói szerepkör megkövetelése public: Mindenki landing_page: + hints: + about_html: Egy oldal a leírással, névjegyinformációkkal, szabályokkal és a kiszolgálóval kapcsolatos egyéb információkkal. + local_feed_html: Élő hírfolyam a kiszolgálón lévő felhasználók legfrissebb bejegyzéseivel. values: - about: Névjegy - local_feed: Helyi idővonal - trends: Trendek + about: Névjegy oldal + local_feed: Helyi élő hírfolyam + overview: Áttekintés + trends: Felkapott registrations: moderation_recommandation: Győződj meg arról, hogy megfelelő és gyors reagálású moderátor csapatod van, mielőtt mindenki számára megnyitod a regisztrációt! preamble: Szabályozd, hogy ki hozhat létre fiókot a kiszolgálón. diff --git a/config/locales/ia.yml b/config/locales/ia.yml index c5afddfab0..4b499c0468 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -853,11 +853,6 @@ ia: authenticated: Solmente usatores authenticate disabled: Requirer un rolo de usator specific public: Omnes - landing_page: - values: - about: A proposito - local_feed: Canal local - trends: Tendentias registrations: moderation_recommandation: Per favor assecura te de haber un equipa de moderation adequate e reactive ante de aperir le inscription a omnes! preamble: Controla qui pote crear un conto sur tu servitor. diff --git a/config/locales/is.yml b/config/locales/is.yml index 3ae19b479c..299086d201 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -349,6 +349,7 @@ is: back_to_report: Til baka á kærusíðu batch: add_to_report: 'Bæta við skýrslu #%{id}' + remove_from_report: Fjarlægja úr kæru report: Kæra collection_title: Safn frá %{name} contents: Efni @@ -957,9 +958,15 @@ is: disabled: Krefjast sérstaks hlutverks notanda public: Allir landing_page: + hints: + about_html: Síða með lýsingu, upplýsingum um tengiliði, reglur og annað varðandi þennan netþjón. + local_feed_html: Streymi í beinni með nýjustu færslunum frá notendum á þessum netþjóni. + overview_html: Síða með lýsingu á netþjóninum ásamt nýjustu staðbundnu færslunum frá notendum á þessum netþjóni. + trends_html: Síða með því sem núna er vinsælast á þessum netþjóni. values: - about: Um - local_feed: Staðbundið streymi + about: Upplýsingasíða + local_feed: Staðvært beint streymi + overview: Yfirlit trends: Vinsælt registrations: moderation_recommandation: Tryggðu að þú hafir hæft og aðgengilegt umsjónarteymi til taks áður en þú opnar á skráningar fyrir alla! @@ -980,6 +987,7 @@ is: site_uploads: delete: Eyða innsendri skrá destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! + skip_to_content: Fara beint í efni software_updates: critical_update: Áríðandi - uppfærðu eins fljótt og auðið er description: Mælt er með því að þú haldir Mastodon-uppsetningunni þinni uppfærðri til að vera með nýjustu lagfæringar og eiginleika. Aukinheldur er mikilvægt að halda Mastodon uppfærðu til að komast hjá öryggisveilum. Af þessum ástæðum athugar Mastodon með uppfærslur á 30 mínútna fresti og mun gera þér viðvart í samræmi við stillingar þínar á tilkynningum í tölvupósti. diff --git a/config/locales/it.yml b/config/locales/it.yml index f322309911..bbd2ed304c 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -956,10 +956,16 @@ it: disabled: Richiedi un ruolo utente specifico public: Tutti landing_page: + hints: + about_html: Una pagina con la descrizione, informazioni di contatto, regole e altre informazioni riguardanti questo server. + local_feed_html: Un feed in diretta con i post più recenti da parte degli utenti su questo server. + overview_html: Una pagina che mostra la descrizione del tuo server insieme ai post locali più recenti da parte degli utenti su questo server. + trends_html: Una pagina che mostra i contenuti popolari su questo server in questo momento. values: - about: Info - local_feed: Feed locale - trends: Tendenze + about: Pagina delle Info + local_feed: Feed locale in diretta + overview: Panoramica + trends: Di tendenza registrations: moderation_recommandation: Assicurati di avere un team di moderazione adeguato e reattivo prima di aprire le registrazioni a tutti! preamble: Controlla chi può creare un account sul tuo server. @@ -979,6 +985,7 @@ it: site_uploads: delete: Cancella il file caricato destroyed_msg: Caricamento sito eliminato! + skip_to_content: Vai al contenuto software_updates: critical_update: 'Critico: ti preghiamo di aggiornare rapidamente' description: Si consiglia di mantenere aggiornata l'installazione di Mastodon per beneficiare delle ultime correzioni e funzionalità. Inoltre, a volte è fondamentale aggiornare Mastodon in modo tempestivo per evitare problemi di sicurezza. Per queste ragioni, Mastodon verifica la presenza di aggiornamenti ogni 30 minuti e ti avviserà in base alle tue preferenze di notifica e-mail. diff --git a/config/locales/ja.yml b/config/locales/ja.yml index e3111821d4..677df5da93 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -841,9 +841,6 @@ ja: authenticated: ログイン済みユーザーのみ disabled: 特定ロールのユーザーのみ public: 制限なし - landing_page: - values: - trends: トレンド registrations: moderation_recommandation: 登録受付を開始する前に、迅速かつ適切にモデレーションを行うチームを編成しましょう! preamble: あなたのサーバー上でアカウントを作成できるユーザーを制御します。 diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 5d62dc1570..c2e8a0e468 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -498,10 +498,6 @@ kab: feed_access: modes: public: Yal yiwen - landing_page: - values: - about: Ɣef - trends: Inezzaɣ registrations: title: Ajerred registrations_mode: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 616b6e7a64..f7e44fec7d 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -845,11 +845,6 @@ ko: authenticated: 로그인한 사용자들만 disabled: 특정한 사용자 역할 필요 public: 모두 - landing_page: - values: - about: 정보 - local_feed: 로컬 피드 - trends: 유행 registrations: moderation_recommandation: 모두에게 가입을 열기 전에 적절하고 반응이 빠른 중재 팀을 데리고 있는지 확인해 주세요! preamble: 누가 이 서버에 계정을 만들 수 있는지 제어합니다. diff --git a/config/locales/lad.yml b/config/locales/lad.yml index dedb87bf7a..66f987c575 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -841,10 +841,6 @@ lad: feed_access: modes: public: Todos - landing_page: - values: - about: Sovre esto - trends: Trendes registrations: moderation_recommandation: Por favor, asigurate ke tyenes una taifa de moderasyon adekuada i reaktiva antes de avrir los enrejistramyentos a todos! preamble: Kontrola ken puede kriyar un kuento en tu sirvidor. diff --git a/config/locales/nan-TW.yml b/config/locales/nan-TW.yml index 8936902287..3dd63ba515 100644 --- a/config/locales/nan-TW.yml +++ b/config/locales/nan-TW.yml @@ -345,6 +345,7 @@ nan-TW: back_to_report: Tńg去檢舉ê頁 batch: add_to_report: '加kàu檢舉 #%{id}' + remove_from_report: Tuì檢舉suá掉 report: 檢舉 collection_title: "%{name} ê收藏" contents: 內容 @@ -505,6 +506,28 @@ nan-TW: compliance_settings: additional_footer_text: action: 管理 + hint: Kan-ta佇電子報ê phue ê註kha出現ê通選ê文字 + title: 其他註kha ê文字 + lead: 電子報ê phue可能hőng掠做行銷ê電子批,根據lí pháng ê服侍器ê司法管轄區決定。 + privacy_policy: + action: 管理 + hint: 逐封電子phue ê下kha lóng ē有連kàu tsit ê政策ê連結 + title: 隱私權政策 + title: 守法ê設定 + danger_zone: + disable_feature: + action: 停止使用 + hint: 替逐ê口座關tsit ê功能 + title: Kā功能停止使用 + erase_all_data: + action: 消除資料 + hint: 佇逐ê郵件列單內底ê逐封phue lóng永永thâi掉 + title: 消除所有資料 + title: 危險ê所在 + disabled_msg: 停止使用訂電子批成功ah。 + index: + disabled: + cannot_be_enabled: Lí ê技術提供者iáu buē替lí ê服侍器啟用tsit ê功能。 export_domain_allows: new: title: 輸入允准ê域名 @@ -891,11 +914,6 @@ nan-TW: authenticated: Kan-ta hōo登入ê用者 disabled: 愛特別ê用者角色 public: Ta̍k lâng - landing_page: - values: - about: 關係本站 - local_feed: 本地ê動態 - trends: 趨勢 registrations: moderation_recommandation: 佇開放hōo ta̍k ê lâng註冊進前,請確認lí有夠額koh主動反應ê管理團隊! preamble: 控制ē當佇lí ê服侍器註冊ê人。 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 399db1a9cd..bfe797d0c2 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -800,7 +800,7 @@ nl: reported_with_application: Gerapporteerd met applicatie resolved: Opgelost resolved_msg: Rapportage succesvol opgelost! - skip_to_actions: Ga direct naar de maatregelen + skip_to_actions: Ga naar de acties status: Rapportages statuses: Berichten (%{count}) statuses_description_html: De problematische inhoud wordt aan het gerapporteerde account medegedeeld @@ -956,9 +956,15 @@ nl: disabled: Specifieke gebruikersrol vereisen public: Iedereen landing_page: + hints: + about_html: Een pagina met de beschrijving, contactgegevens, regels en andere informatie over deze server. + local_feed_html: Een openbaar toegankelijke tijdlijn met de meest recente berichten van gebruikers op deze server. + overview_html: Een pagina die de beschrijving van je server laat zien, naast de meest recente lokale berichten van gebruikers op deze server. + trends_html: Een pagina met wat momenteel populair op deze server is. values: - about: Over - local_feed: Lokale tijdlijn + about: Pagina over ons + local_feed: Openbare lokale tijdlijn + overview: Overzicht trends: Trends registrations: moderation_recommandation: Zorg ervoor dat je een adequaat en responsief moderatieteam hebt voordat je registraties voor iedereen openstelt! @@ -979,6 +985,7 @@ nl: site_uploads: delete: Geüpload bestand verwijderen destroyed_msg: Verwijderen website-upload geslaagd! + skip_to_content: Ga naar de inhoud software_updates: critical_update: Kritiek — update snel description: Het wordt aanbevolen om je Mastodon-installatie up-to-date te houden om gebruik te kunnen maken van de nieuwste oplossingen en functies. Bovendien is het soms cruciaal om Mastodon tijdig bij te werken om veiligheidsproblemen te voorkomen. Om deze redenen controleert Mastodon elke 30 minuten updates en brengt je hiervan op de hoogte volgens jouw voorkeuren voor e-mailmeldingen. diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 7e32990452..56d7c4331b 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -879,11 +879,6 @@ nn: authenticated: Berre godkjende brukarar disabled: Krev ei spesifikk brukarrolle public: Alle - landing_page: - values: - about: Om - local_feed: Lokal tidsline - trends: Populært registrations: moderation_recommandation: Pass på at du har mange og kjappe redaktørar og moderatorar på laget ditt før du opnar for allmenn registrering! preamble: Kontroller kven som kan oppretta konto på tenaren din. diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 56045f676d..7518ff3630 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -874,11 +874,6 @@ pl: authenticated: tylko zalogowani użytkownicy disabled: Wymagaj określonej roli użytkownika public: Wszyscy - landing_page: - values: - about: O nas - local_feed: Lokalny kanał - trends: Trendy registrations: moderation_recommandation: Upewnij się, że masz adekwatny i szybko reagujący zespół moderacyjny przed otwarciem rejestracji! preamble: Kontroluj, kto może utworzyć konto na Twoim serwerze. diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index e9cddeac98..7091c370f2 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -956,9 +956,15 @@ pt-BR: disabled: Exige função específica de usuário public: Todos landing_page: + hints: + about_html: Uma página com descrição, informações de contato, regra e qualquer outra informação sobre este servidor. + local_feed_html: Um feed ao vivo exibindo as últimas publicações de usuários neste servidor. + overview_html: Uma página exibindo a descrição do seu servidor junto às últimas publicações locais de usuários neste servidor. + trends_html: Uma página exibindo o que está em alta neste servidor. values: - about: Sobre - local_feed: Feed local + about: Sobre a página + local_feed: Feed local ao vivo + overview: Visão Geral trends: Em alta registrations: moderation_recommandation: Por favor, certifique-se de ter uma equipe de moderação adequada e reativa antes de abrir as inscrições para todos! diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 84cec11eab..b2fb77bbb7 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -879,11 +879,6 @@ pt-PT: authenticated: Apesar utilizadores autenticados disabled: Requerer função de utilizador especifica public: Todos - landing_page: - values: - about: Sobre - local_feed: Cronologia local - trends: Tendências registrations: moderation_recommandation: Certifique-se de que dispõe de uma equipa de moderação adequada e reativa antes de abrir as inscrições a todos! preamble: Controle quem pode criar uma conta no seu servidor. diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 03c8e02581..a8f1d03c19 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -909,11 +909,6 @@ ru: authenticated: Только авторизованные пользователи disabled: Только пользователи с особой ролью public: Кто угодно - landing_page: - values: - about: О сервере - local_feed: Локальная лента - trends: Актуальное registrations: moderation_recommandation: Прежде чем открывать регистрацию для всех желающих, убедитесь, что у вас есть компетентная команда модераторов, способная на быструю реакцию! preamble: Контролируйте, кто может создать учётную запись на вашем сервере. diff --git a/config/locales/sl.yml b/config/locales/sl.yml index ca0fd7fe7d..75b0036b81 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -868,10 +868,6 @@ sl: modes: authenticated: Samo overjeni uporabniki public: Vsi - landing_page: - values: - local_feed: Krajevni vir - trends: Trendi registrations: moderation_recommandation: Preden prijave odprete za vse poskrbite, da imate v ekipi moderatorjev zadosti aktivnih članov. preamble: Nadzirajte, kdo lahko ustvari račun na vašem strežniku. diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 2580b34850..1c2b70242c 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -559,6 +559,9 @@ sq: important_information: Informacion i rëndësishëm list: 1_permission_explanation: Kur aktivizohet kjo veçroi, llogaritë me lejet e caktuara mund të shtojnë te profilet e tyre një formular koleksionesh email. + 2_feature_explanation: Kur vizitorët regjistrohen në faqen e profilit të një llogarie dhe ripohojnë pajtimin e tyre, ata do të fillojnë të marrin përditësime me email, kur llogaria krijon postime të reja publike. + 3_privacy_policy_warning: Përgjegjësit e shërbyesit do të mund të shohin PII (adresat email) të grumbulluara. Prej kësaj, rregullat e privatësisë dhe Kushtet e Shërbimit për shëbyesin duhen përditësuar, para përdorimit të kësaj veçorie. + 4_cost_warning: Email-et mund të sjellin tarifë, varet nga ujdisja e strehimit. Diskutojeni me shërbimin tuaj të strehimit, para se ta aktivizoni, ngaqë kjo veçori mund të rrisë në mënyrë drastike sasinë e email-eve të dërguar nga shërbyesi juaj. export_domain_allows: new: title: Importoni lejime përkatësish @@ -945,9 +948,15 @@ sq: disabled: Lyp doemos rol specifik përdoruesi public: Kushdo landing_page: + hints: + about_html: Një faqe me përshkrimin, hollësi kontakti, rregulla dhe tjetër informacion që lidhet me këtë shërbyes. + local_feed_html: Një prurje e drejtpërdrejtë që përmban postimet më të reja nga përdorues në këtë shërbyes. + overview_html: Një faqe që shpalos përshkrimin e shërbyesit tuaj took me postimet vendore më të freskëta nga përdorues në këtë shërbyes. + trends_html: Një faqe që përmban ç’është popullore në këtë shërbyes mu tani. values: - about: Mbi - local_feed: Prurje vendore + about: Faqe “Mbi” + local_feed: Prurje e drejtpërdrejtë vendore + overview: Përmbledhje trends: Në modë registrations: moderation_recommandation: Ju lutemi, sigurohuni si keni një ekip adekuat dhe reagues moderimi, përpara se të hapni regjistrimet për këdo! diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 762f428e3d..31fc1d7aae 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -349,6 +349,7 @@ sv: back_to_report: Tillbaka till rapportsidan batch: add_to_report: 'Lägg till i rapport #%{id}' + remove_from_report: Ta bort från rapport report: Rapportera collection_title: Samling av %{name} contents: Innehåll @@ -954,11 +955,6 @@ sv: authenticated: Endast autentiserade användare disabled: Kräv specifik användarroll public: Alla - landing_page: - values: - about: Om - local_feed: Lokalt flöde - trends: Trender registrations: moderation_recommandation: Se till att du har ett tillräckligt och reaktivt modereringsteam innan du öppnar registreringar till alla! preamble: Kontrollera vem som kan skapa ett konto på din server. @@ -978,6 +974,7 @@ sv: site_uploads: delete: Radera uppladdad fil destroyed_msg: Webbplatsuppladdningen har raderats! + skip_to_content: Hoppa till innehåll software_updates: critical_update: Kritiskt — vänligen uppdatera omgående description: Det rekommenderas att hålla din Mastodon-installation uppdaterad för att ta nytta av de senaste fixarna och funktionerna. Dessutom är det ibland viktigt att uppdatera Mastodon i tid för att undvika säkerhetsproblem. Av dessa skäl kontrollerar Mastodon efter uppdateringar var 30:e minut och meddelar dig i enlighet med dina e-postaviseringsinställningar. diff --git a/config/locales/th.yml b/config/locales/th.yml index f94f064150..a599276c50 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -801,11 +801,6 @@ th: feed_access: modes: public: ทุกคน - landing_page: - values: - about: เกี่ยวกับ - local_feed: ฟีดในเซิร์ฟเวอร์ - trends: แนวโน้ม registrations: moderation_recommandation: โปรดตรวจสอบให้แน่ใจว่าคุณมีทีมการกลั่นกรองที่เพียงพอและมีปฏิกิริยาตอบสนองก่อนที่คุณจะเปิดการลงทะเบียนให้กับทุกคน! preamble: ควบคุมผู้ที่สามารถสร้างบัญชีในเซิร์ฟเวอร์ของคุณ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 8834eb7ad6..7ec25d873e 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -957,9 +957,8 @@ tr: public: Herkes landing_page: values: - about: Hakkında - local_feed: Yerel akış - trends: Öne çıkanlar + about: Hakkında sayfası + overview: Genel Bakış registrations: moderation_recommandation: Lütfen kayıtları herkese açmadan önce yeterli ve duyarlı bir denetleyici ekibine sahip olduğunuzdan emin olun! preamble: Sunucunuzda kimin hesap oluşturabileceğini denetleyin. @@ -979,6 +978,7 @@ tr: site_uploads: delete: Yüklenen dosyayı sil destroyed_msg: Site yüklemesi başarıyla silindi! + skip_to_content: İçeriğe atla software_updates: critical_update: Kritik — lütfen hemen güncelleyin description: Son düzeltme ve özelliklerden yararlanmak için Mastodon kurulumunu güncel tutmanızı öneriyoruz. Üstelik güvenlik sorunlarından kaçınmak için Mastodon'u zamanında güncellemek kritiktir. Bu nedenlerle Mastodon her 30 dakikada bir güncellemeleri denetler ve e-posta bildirim seçeneğinize göre size haber verir. diff --git a/config/locales/vi.yml b/config/locales/vi.yml index edc0eaed02..ebb147bc7c 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -940,9 +940,15 @@ vi: disabled: Yêu cầu vai trò người dùng cụ thể public: Mọi người landing_page: + hints: + about_html: Trang này chứa mô tả, thông tin liên hệ, nội quy và các thông tin khác liên quan đến máy chủ này. + local_feed_html: Đây là bảng tin hiển thị các tút mới nhất của người dùng trên máy chủ này. + overview_html: Trang này hiển thị mô tả về máy chủ của bạn cùng với các tút gần đây nhất của người dùng trên máy chủ này. + trends_html: Trang này hiển thị những nội dung đang phổ biến trên máy chủ này hiện tại. values: - about: Giới thiệu + about: Trang Giới thiệu local_feed: Bảng tin máy chủ + overview: Tổng quan trends: Xu hướng registrations: moderation_recommandation: Vui lòng đảm bảo rằng bạn có một đội ngũ kiểm duyệt và phản ứng nhanh trước khi mở đăng ký cho mọi người! diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index f1d56319dc..8ecfbdc16f 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -939,11 +939,6 @@ zh-CN: authenticated: 仅已登录用户 disabled: 需要特定的用户角色 public: 每个人 - landing_page: - values: - about: 关于 - local_feed: 本站动态 - trends: 热门 registrations: moderation_recommandation: 在向每个人开放注册之前,请确保你拥有一个人手足够且反应迅速的管理团队! preamble: 控制谁可以在你的服务器上创建账号。 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 0a14e2f487..27142c99c4 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -942,9 +942,15 @@ zh-TW: disabled: 需要特定使用者權限 public: 任何人 landing_page: + hints: + about_html: 此為關於此伺服器之描述、聯絡資訊、規則、及其他資訊之頁面。 + local_feed_html: 此為展示此伺服器使用者最新嘟文之即時內容。 + overview_html: 此為展示您的伺服器描述及本站使用者最新嘟文之頁面。 + trends_html: 此為展示此伺服器現正熱門內容之頁面。 values: - about: 關於 - local_feed: 本站時間軸 + about: 關於本站 + local_feed: 本地即時內容 + overview: 總覽 trends: 熱門趨勢 registrations: moderation_recommandation: 對所有人開放註冊之前,請確保您有人手充足且反應靈敏的管理員團隊! diff --git a/package.json b/package.json index 79d391d790..a2cc9c75c8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/mastodon", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.14.1", + "packageManager": "yarn@4.15.0", "engines": { "node": ">=22" }, diff --git a/streaming/package.json b/streaming/package.json index a8ebc63b78..0581cd75ad 100644 --- a/streaming/package.json +++ b/streaming/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/streaming", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.14.1", + "packageManager": "yarn@4.15.0", "engines": { "node": ">=22" }, diff --git a/yarn.lock b/yarn.lock index ccbf78c034..7a246685c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # Manual changes might be lost - proceed with caution! __metadata: - version: 9 + version: 10 cacheKey: 10c0 "@aashutoshrathi/word-wrap@npm:^1.2.3": @@ -4079,12 +4079,12 @@ __metadata: linkType: hard "@reduxjs/toolkit@npm:^2.0.1": - version: 2.9.2 - resolution: "@reduxjs/toolkit@npm:2.9.2" + version: 2.12.0 + resolution: "@reduxjs/toolkit@npm:2.12.0" dependencies: "@standard-schema/spec": "npm:^1.0.0" "@standard-schema/utils": "npm:^0.3.0" - immer: "npm:^10.0.3" + immer: "npm:^11.0.0" redux: "npm:^5.0.1" redux-thunk: "npm:^3.1.0" reselect: "npm:^5.1.0" @@ -4096,7 +4096,7 @@ __metadata: optional: true react-redux: optional: true - checksum: 10c0/577416200c76ffd82bce6158aaeb63e836ed2c2a14e670253056dcaec505da77643e79b47208b4e493a0c120a4a2bc049efe60cd555a2699053af5b03f2f2953 + checksum: 10c0/2b85e31294a7139994fd78b08eb3ce706ce3b03b5081c13403b93ba4883a152d637171e4d9d969766238851f8915b1daa9f36b5a0a458aff0ff7600ee38795c9 languageName: node linkType: hard @@ -9441,10 +9441,10 @@ __metadata: languageName: node linkType: hard -"immer@npm:^10.0.3": - version: 10.0.3 - resolution: "immer@npm:10.0.3" - checksum: 10c0/282a4f8479a40f7d12b2b3243c095e3e892bf99058e2ffcdd6b8e9fd143e6a90f2717ab9b6c8b97c927ffb8054465c8f647056f41660dbfd672e240cf1063503 +"immer@npm:^11.0.0": + version: 11.1.8 + resolution: "immer@npm:11.1.8" + checksum: 10c0/df971d8a8f6a5312c6dca4a8437e20b3185d6c9cd6830ad526c18ffd50f4037ef8db4f332b0adbcb9f8c5ee2fbe117cf0623e8554e24777105b3cc9faf866d34 languageName: node linkType: hard